@unbrained/pm-cli 2026.9.5 → 2026.9.6

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 (185) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/CHANGELOG.md +32 -2
  3. package/dist/cli/main.js +10 -8
  4. package/dist/cli/register-operations.js +13 -8
  5. package/dist/cli-bundle/bundle-manifest.json +150 -158
  6. package/dist/cli-bundle/chunks/chunk-AZDFJGH6.js +9 -0
  7. package/dist/cli-bundle/chunks/{chunk-WWAEGW4V.js → chunk-BAX2BYUW.js} +66 -66
  8. package/dist/cli-bundle/chunks/{chunk-IBYREGSP.js → chunk-CKOL5U7J.js} +51 -51
  9. package/dist/cli-bundle/chunks/{chunk-ZRAQS3UA.js → chunk-JT6XF6GE.js} +2 -2
  10. package/dist/cli-bundle/chunks/{chunk-HUAQITVW.js → chunk-JX4DH4WC.js} +2 -2
  11. package/dist/cli-bundle/chunks/{chunk-QPZHQY2O.js → chunk-NPN5I67J.js} +2 -2
  12. package/dist/cli-bundle/chunks/{chunk-66VPKFP2.js → chunk-OF76PSDQ.js} +2 -2
  13. package/dist/cli-bundle/chunks/chunk-QUWFABDM.js +232 -0
  14. package/dist/cli-bundle/chunks/{chunk-3HBDTJRK.js → chunk-RWWBOWJ5.js} +2 -2
  15. package/dist/cli-bundle/chunks/chunk-WGAOYSYH.js +40 -0
  16. package/dist/cli-bundle/chunks/{chunk-SF6SM6U5.js → chunk-WI2AYPA7.js} +2 -2
  17. package/dist/cli-bundle/chunks/{register-list-query-AYKGODWT.js → register-list-query-5JL52D33.js} +2 -2
  18. package/dist/cli-bundle/chunks/{register-mutation-YZYG53SQ.js → register-mutation-ZPG7KMVP.js} +2 -2
  19. package/dist/cli-bundle/chunks/register-operations-I5W3KMGB.js +2 -0
  20. package/dist/cli-bundle/chunks/{register-setup-UJCRVGBG.js → register-setup-H4SVAVX7.js} +2 -2
  21. package/dist/cli-bundle/focused-chunks/{chunk-QL66QNWG.js → chunk-3BZEOXLT.js} +2 -2
  22. package/dist/cli-bundle/focused-chunks/chunk-AL5ON6K6.js +2 -0
  23. package/dist/cli-bundle/focused-chunks/chunk-CHC2IDXA.js +6 -0
  24. package/dist/cli-bundle/focused-chunks/chunk-CK6QFAPZ.js +20 -0
  25. package/dist/cli-bundle/focused-chunks/{chunk-WOCIPMW7.js → chunk-EZR3GHFE.js} +2 -2
  26. package/dist/cli-bundle/focused-chunks/chunk-H2WJWK7L.js +56 -0
  27. package/dist/cli-bundle/focused-chunks/{chunk-3ASU6WGI.js → chunk-LIJIA4TY.js} +2 -2
  28. package/dist/cli-bundle/focused-chunks/{chunk-H5FOGAVD.js → chunk-M6PBRFSH.js} +2 -2
  29. package/dist/cli-bundle/focused-chunks/{chunk-B2TTQGFG.js → chunk-NTPY5GSO.js} +2 -2
  30. package/dist/cli-bundle/focused-chunks/chunk-P5O7MP5Y.js +2 -0
  31. package/dist/cli-bundle/focused-chunks/chunk-PDMW2E36.js +177 -0
  32. package/dist/cli-bundle/focused-chunks/{chunk-YEF5PQQ2.js → chunk-PEFABF7E.js} +2 -2
  33. package/dist/cli-bundle/focused-chunks/{chunk-KWWCBWFO.js → chunk-QTVCLMSZ.js} +2 -2
  34. package/dist/cli-bundle/focused-chunks/{chunk-4OSHLNUE.js → chunk-QTZRBUYA.js} +2 -2
  35. package/dist/cli-bundle/focused-chunks/chunk-SGQST3PQ.js +12 -0
  36. package/dist/cli-bundle/focused-chunks/chunk-UKHASMMP.js +10 -0
  37. package/dist/cli-bundle/focused-chunks/chunk-ZPEKQHOC.js +2 -0
  38. package/dist/cli-bundle/main.js +20 -20
  39. package/dist/cli-bundle/sdk-authoring.js +1 -1
  40. package/dist/cli-bundle/sdk-contracts.js +2 -2
  41. package/dist/cli-bundle/sdk-core.js +37 -37
  42. package/dist/cli-bundle/sdk-governance.js +1 -1
  43. package/dist/cli-bundle/sdk-graph.js +1 -1
  44. package/dist/cli-bundle/sdk-merge.js +42 -42
  45. package/dist/cli-bundle/sdk-query.js +1 -1
  46. package/dist/cli-bundle/sdk-runtime.js +1 -1
  47. package/dist/cli-bundle/sdk-testing.js +1 -1
  48. package/dist/cli-bundle/sdk.js +9 -9
  49. package/dist/core/extensions/module-graph-snapshot.js +5 -4
  50. package/dist/core/fs/host-environment-errors.d.ts +27 -0
  51. package/dist/core/fs/host-environment-errors.js +142 -0
  52. package/dist/core/output/mutation-projection.js +12 -5
  53. package/dist/core/store/item-metadata-query-index.js +13 -10
  54. package/dist/core/store/item-metadata-read-work.d.ts +19 -0
  55. package/dist/core/store/item-metadata-read-work.js +44 -0
  56. package/dist/core/store/item-store.js +6 -2
  57. package/dist/core/validate/fix-planning.d.ts +1 -1
  58. package/dist/core/validate/fix-planning.js +2 -2
  59. package/dist/core/validate/missing-link-owners.d.ts +1 -1
  60. package/dist/core/validate/missing-link-owners.js +5 -3
  61. package/dist/core/validate/stale-file-classification.d.ts +6 -4
  62. package/dist/core/validate/stale-file-classification.js +20 -5
  63. package/dist/mcp/server.js +12 -5
  64. package/dist/sdk/cli-contracts/flag-contracts.d.ts +2 -0
  65. package/dist/sdk/cli-contracts/flag-contracts.js +7 -5
  66. package/dist/sdk/cli-contracts/flag-lexicon-contracts.js +4 -3
  67. package/dist/sdk/cli-contracts/grammar-contracts.js +11 -2
  68. package/dist/sdk/cli-contracts/runtime-contracts.js +5 -2
  69. package/dist/sdk/cli-contracts/schemas/assurance-definition.d.ts +254 -5
  70. package/dist/sdk/cli-contracts/schemas/assurance-definition.js +52 -2
  71. package/dist/sdk/cli-contracts/tool-parameter-tables.js +18 -6
  72. package/dist/sdk/cli-contracts/tool-schema.d.ts +2 -2
  73. package/dist/sdk/cli-contracts/tool-schema.js +17 -5
  74. package/dist/sdk/context/usage-ledger.d.ts +41 -0
  75. package/dist/sdk/context/usage-ledger.js +186 -0
  76. package/dist/sdk/context-usage.d.ts +18 -9
  77. package/dist/sdk/context-usage.js +37 -112
  78. package/dist/sdk/dependency-provenance.d.ts +7 -0
  79. package/dist/sdk/dependency-provenance.js +14 -4
  80. package/dist/sdk/duplicates.d.ts +2 -0
  81. package/dist/sdk/duplicates.js +3 -2
  82. package/dist/sdk/environment/host-environment-errors.d.ts +5 -27
  83. package/dist/sdk/environment/host-environment-errors.js +4 -137
  84. package/dist/sdk/extension/install-runtime.js +9 -6
  85. package/dist/sdk/extension/install-snapshot.js +7 -6
  86. package/dist/sdk/generated/generated-error-code-catalog-part-1.js +8 -8
  87. package/dist/sdk/governance/assurance-action.d.ts +3 -2
  88. package/dist/sdk/governance/assurance-action.js +23 -11
  89. package/dist/sdk/governance/assurance-runtime.d.ts +2 -0
  90. package/dist/sdk/governance/assurance-runtime.js +6 -3
  91. package/dist/sdk/governance/defect-recurrence-coverage.d.ts +93 -0
  92. package/dist/sdk/governance/defect-recurrence-coverage.js +189 -0
  93. package/dist/sdk/governance/defect-recurrence-graph.d.ts +33 -0
  94. package/dist/sdk/governance/defect-recurrence-graph.js +121 -0
  95. package/dist/sdk/governance/defect-recurrence.d.ts +8 -0
  96. package/dist/sdk/governance/defect-recurrence.js +118 -17
  97. package/dist/sdk/governance/health.d.ts +17 -2
  98. package/dist/sdk/governance/health.js +31 -10
  99. package/dist/sdk/governance/linked-file-report.d.ts +41 -0
  100. package/dist/sdk/governance/linked-file-report.js +72 -0
  101. package/dist/sdk/governance/validate.d.ts +5 -2
  102. package/dist/sdk/governance/validate.js +21 -37
  103. package/dist/sdk/governance.d.ts +2 -0
  104. package/dist/sdk/governance.js +4 -2
  105. package/dist/sdk/history-repair.d.ts +7 -0
  106. package/dist/sdk/history-repair.js +48 -13
  107. package/dist/sdk/lifecycle/close.d.ts +8 -0
  108. package/dist/sdk/lifecycle/close.js +16 -8
  109. package/dist/sdk/lifecycle/create.js +9 -12
  110. package/dist/sdk/lifecycle/update.js +12 -12
  111. package/dist/sdk/lifecycle-policy.d.ts +3 -0
  112. package/dist/sdk/lifecycle-policy.js +2 -2
  113. package/dist/sdk/merge/abandoned-receipts.d.ts +15 -0
  114. package/dist/sdk/merge/abandoned-receipts.js +47 -0
  115. package/dist/sdk/merge/driver.js +4 -2
  116. package/dist/sdk/merge/index.d.ts +1 -0
  117. package/dist/sdk/merge/index.js +2 -2
  118. package/dist/sdk/merge/receipt-operation.d.ts +15 -0
  119. package/dist/sdk/merge/receipt-operation.js +97 -0
  120. package/dist/sdk/merge/receipt-schema.d.ts +20 -0
  121. package/dist/sdk/merge/receipt-schema.js +398 -0
  122. package/dist/sdk/merge/receipts.d.ts +16 -7
  123. package/dist/sdk/merge/receipts.js +54 -340
  124. package/dist/sdk/merge/reconcile.d.ts +2 -0
  125. package/dist/sdk/merge/reconcile.js +11 -4
  126. package/dist/sdk/public-surface.json +1 -1
  127. package/dist/sdk/query/duplicate-candidates.d.ts +7 -0
  128. package/dist/sdk/query/duplicate-candidates.js +71 -0
  129. package/dist/sdk/query/get.js +7 -7
  130. package/dist/sdk/query.d.ts +2 -0
  131. package/dist/sdk/query.js +4 -2
  132. package/dist/sdk/read-output-session.js +5 -3
  133. package/dist/sdk/runtime.js +4 -2
  134. package/dist/sdk/similarity.d.ts +24 -3
  135. package/dist/sdk/similarity.js +50 -55
  136. package/docs/AGENT_GUIDE.md +23 -2
  137. package/docs/BOUNDED_CONTEXT_READS.md +185 -0
  138. package/docs/CLOSE_EVIDENCE_RECOVERY.md +35 -0
  139. package/docs/COMMANDS.md +30 -8
  140. package/docs/CONTEXT_RELEVANCE.md +16 -4
  141. package/docs/DEFECT_RECURRENCE.md +80 -6
  142. package/docs/EXTENSIONS.md +18 -19
  143. package/docs/MERGE_SAFETY.md +50 -0
  144. package/docs/OUTPUT_PROJECTION_CONTRACTS.md +66 -0
  145. package/docs/PR_REVIEW_LOOP.md +18 -3
  146. package/docs/README.md +18 -1
  147. package/docs/RELEASING.md +6 -2
  148. package/docs/SDK_LIFECYCLE.md +27 -0
  149. package/docs/SDK_RUNTIME_BOUNDARIES.md +11 -0
  150. package/docs/generated/FLAG_LEXICON_BUDGETS.md +1 -1
  151. package/marketplace.json +2 -2
  152. package/package.json +6 -3
  153. package/packages/pm-beads/package.json +1 -1
  154. package/packages/pm-calendar/package.json +1 -1
  155. package/packages/pm-command-kit/package.json +1 -1
  156. package/packages/pm-digital-twin/package.json +1 -1
  157. package/packages/pm-governance-audit/README.md +10 -1
  158. package/packages/pm-governance-audit/extensions/governance-audit/dedupe-audit.ts +50 -65
  159. package/packages/pm-governance-audit/extensions/governance-audit/index.ts +2 -2
  160. package/packages/pm-governance-audit/extensions/governance-audit/sdk.ts +1 -0
  161. package/packages/pm-governance-audit/package.json +1 -1
  162. package/packages/pm-guide-shell/package.json +1 -1
  163. package/packages/pm-kanban/package.json +1 -1
  164. package/packages/pm-lifecycle-hooks/package.json +1 -1
  165. package/packages/pm-linked-test-adapters/package.json +1 -1
  166. package/packages/pm-search-advanced/package.json +1 -1
  167. package/packages/pm-templates/package.json +1 -1
  168. package/packages/pm-todos/package.json +1 -1
  169. package/packages/pm-vcs/package.json +1 -1
  170. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  171. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  172. package/dist/cli-bundle/chunks/chunk-LUI4E32I.js +0 -231
  173. package/dist/cli-bundle/chunks/chunk-SVK5Y64D.js +0 -40
  174. package/dist/cli-bundle/chunks/chunk-V5GBD5KV.js +0 -9
  175. package/dist/cli-bundle/chunks/register-operations-KFSCC7QV.js +0 -2
  176. package/dist/cli-bundle/focused-chunks/chunk-24IG6ONG.js +0 -2
  177. package/dist/cli-bundle/focused-chunks/chunk-3ITLIBKS.js +0 -56
  178. package/dist/cli-bundle/focused-chunks/chunk-3NQD5YDG.js +0 -2
  179. package/dist/cli-bundle/focused-chunks/chunk-65N6JHAN.js +0 -2
  180. package/dist/cli-bundle/focused-chunks/chunk-GUBM3RGY.js +0 -20
  181. package/dist/cli-bundle/focused-chunks/chunk-JX3RCVCX.js +0 -2
  182. package/dist/cli-bundle/focused-chunks/chunk-MV752SUC.js +0 -12
  183. package/dist/cli-bundle/focused-chunks/chunk-PKIPMCFS.js +0 -6
  184. package/dist/cli-bundle/focused-chunks/chunk-RJMR2JIF.js +0 -9
  185. package/dist/cli-bundle/focused-chunks/chunk-WIUPWIZR.js +0 -177
@@ -1,177 +0,0 @@
1
- import{b as Ht,f as ut,h as ft,i as _t,k as Vo,l as Wo,m as Bo,n as qo,o as Xo,p as Ko}from"./chunk-B2TTQGFG.js";import{A as mt,B as Go,C as Yo,D as le,E as re,F as Jo,G as ze,H as oe,K as Qo,L as Zo,M as K,r as Se,s as er,t as Vt,u as ne,v as tr,w as de,x as nr}from"./chunk-RJMR2JIF.js";import{$ as v,A as Ro,Aa as Mo,F as $t,Fa as Ut,G as zt,H as Yn,J as No,Ja as dt,Ka as Qn,La as Zn,Lb as Uo,Ma as lt,Oa as Fo,P as se,Ua as $o,V as ve,W as Do,Z as b,_ as Fe,_a as zo,aa as k,db as Ho,i as Pt,ia as jo,ja as ke,ka as Jn,la as ae,ma as ce,na as B,oa as Po,ob as j,pb as $e,q as Lt,qb as J,r as To,rb as I,s as Oo,t as Co,ta as Lo,u as Ao,y as Mt,z as Ft}from"./chunk-PKIPMCFS.js";import{AsyncLocalStorage as Pa}from"node:async_hooks";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="16109ee9-e684-5d25-a5f4-30a6c4f62bd5")}catch{}})();var rr=new Pa,ei=/^[A-Za-z0-9](?:[A-Za-z0-9._:-]{0,127})$/u;function Wt(e,t){let n=typeof e=="string"?e.trim():"";return n.length>0?n.slice(0,t):void 0}function Ie(e,t){if(e===void 0)return;let n=typeof e=="object"&&e!==null?e:{},r=Wt(n.id,128),o=Wt(n.parent_id,128);if(r===void 0||!ei.test(r)||o!==void 0&&!ei.test(o)){if(t)throw new Error("Agent episode ids must be 1-128 letters, digits, dots, underscores, colons, or hyphens.");return}let i=Wt(n.label,256);return{id:r,...i===void 0?{}:{label:i},...o===void 0?{}:{parent_id:o}}}function He(e){let t={};for(let[n,r]of Object.entries(e??{}).slice(0,32)){let o=n.trim().toLowerCase().slice(0,64),i=Wt(r,256);/^[a-z][a-z0-9_-]{0,63}$/u.test(o)&&i!==void 0&&(t[o]=i)}return t}function La(e,t,n){let r=rr.getStore(),o=He({role:t.PM_AGENT_SESSION_ROLE,topic:t.PM_AGENT_SESSION_TOPIC}),i=Ie(t.PM_AGENT_EPISODE_ID===void 0?void 0:{id:t.PM_AGENT_EPISODE_ID,label:t.PM_AGENT_EPISODE_LABEL,parent_id:t.PM_AGENT_EPISODE_PARENT_ID},!1),s={...He(r?.provenance),...o,...He(e?.provenance)},a=Ie(e?.episode,!1)??Ie(n,!1)??i??Ie(r?.episode,!1);return Object.keys(s).length===0&&a===void 0?void 0:{...Object.keys(s).length===0?{}:{provenance:s},...a===void 0?{}:{episode:a}}}function or(e,t){return La(e.session_context,t,e.client_info?.episode)??{}}function V_(e,t){let n=rr.getStore(),r=Ie(e.episode,!0),o=Ie(n?.episode,!1),i=r!==void 0&&r.parent_id===void 0&&o!==void 0?{...r,parent_id:o.id}:r,s={...He(n?.provenance),...He(e.provenance)};return rr.run({...Object.keys(s).length===0?{}:{provenance:s},...i===void 0?o===void 0?{}:{episode:o}:{episode:i}},t)}function W_(e){let t=He(e.provenance),n=Ie(e.episode,!0);return{...n===void 0?{}:{PM_AGENT_EPISODE_ID:n.id,...n.label===void 0?{}:{PM_AGENT_EPISODE_LABEL:n.label},...n.parent_id===void 0?{}:{PM_AGENT_EPISODE_PARENT_ID:n.parent_id}},...t.role===void 0?{}:{PM_AGENT_SESSION_ROLE:t.role},...t.topic===void 0?{}:{PM_AGENT_SESSION_TOPIC:t.topic}}}import{AsyncLocalStorage as yr}from"node:async_hooks";import{createHash as Ha}from"node:crypto";import V from"node:fs";import ci from"node:os";import Oe from"node:path";import{createHash as ti}from"node:crypto";import{existsSync as ir,promises as ni,readFileSync as Ma}from"node:fs";import ee from"node:path";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="424b9eb3-6b34-5ab0-a3f5-db61fbca12cf")}catch{}})();var Fa="session.json";function sr(e,t){return typeof e=="string"&&e.length>0&&e.length<=t}function ri(e){if(e===null||typeof e!="object"||Array.isArray(e))return;let t=e,n=["implementer","planner","release-operator"].includes(String(t.role)),r=["high","medium"].includes(String(t.confidence)),o=sr(t.topic,256),i=Array.isArray(t.evidence)&&t.evidence.length<=32&&t.evidence.every(c=>typeof c=="string"&&c.length<=128),s=Array.isArray(t.active_item_ids)&&t.active_item_ids.length<=64&&t.active_item_ids.every(c=>sr(c,128)),a=t.focused_item_id===void 0||sr(t.focused_item_id,128);if([n,r,o,i,s,a,t.rule_version==="v2"].every(Boolean))return t}function $a(e){if(e===null||typeof e!="object"||Array.isArray(e))return;let t=Object.entries(e).slice(0,128).flatMap(([n,r])=>{let o=ri(r);return o&&n.length<=128?[[n,o]]:[]});return t.length>0?Object.fromEntries(t):void 0}function ar(e){return ee.join(Fo(e),Fa)}async function Bt(e){try{let t=await ni.readFile(ar(e),"utf8"),n=JSON.parse(t);if(n===null||typeof n!="object"||Array.isArray(n))return{};let r=n,o=r.focused_item,i=$a(r.semantic_attribution);return typeof o=="string"&&o.trim().length>0?{focused_item:o,...i?{semantic_attribution:i}:{}}:i?{semantic_attribution:i}:{}}catch{return{}}}async function cr(e,t){let n=ar(e);await ni.mkdir(ee.dirname(n),{recursive:!0}),await B(n,JSON.stringify(t))}function dr(e){return/#([a-f0-9]{24})$/u.exec(e.trim())?.[1]??`author-${ti("sha256").update(e).digest("hex").slice(0,24)}`}function lr(e){return[...new Set(e.map(t=>t.trim()).filter(Boolean))].slice(0,32).map(t=>t.slice(0,128))}function ur(e){let t=[...new Set(e)].sort((o,i)=>o.localeCompare(i));if(t.length===1)return t[0];let n=`workset:${t.join("+")}`;return n.length<=256?n:`workset:${t.join("+").slice(0,230)}+${ti("sha256").update(t.join("\0")).digest("hex").slice(0,12)}`}async function fr(e,t,n){let r=await Bt(e),o={...r.semantic_attribution},i=n(o[t]);i===void 0?delete o[t]:o[t]=i;let s={...r};Object.keys(o).length===0?delete s.semantic_attribution:s.semantic_attribution=o,await cr(e,s)}async function J_(e){let t=dr(e.principal);await fr(e.pmRoot,t,n=>{let r=[...new Set([...n?.active_item_ids??[],e.itemId])].slice(-64).sort((i,s)=>i.localeCompare(s)),o=n?.focused_item_id;return{role:"implementer",topic:o??ur(r),confidence:o?"high":"medium",rule_version:"v2",evidence:lr([...r.map(i=>`claim:${i}`),...o?[`focus:${o}`]:[],...(e.lineageIds??[]).map(i=>`lineage:${i}`)]),active_item_ids:r,...o?{focused_item_id:o}:{}}})}async function Q_(e){let t=dr(e.principal);await fr(e.pmRoot,t,n=>{if(!n)return;let r=n.active_item_ids.filter(i=>i!==e.itemId);if(r.length===0&&!n.focused_item_id)return;let o=n.focused_item_id;return{...n,role:"release-operator",topic:o??ur(r),confidence:o?"high":"medium",evidence:lr([...r.map(i=>`claim:${i}`),...o?[`focus:${o}`]:[],`release:${e.itemId}`]),active_item_ids:r}})}async function Z_(e){let t=dr(e.principal);await fr(e.pmRoot,t,n=>{let r=n?.active_item_ids??[];if(!e.itemId&&r.length===0)return;let o=e.itemId;return{role:o?"planner":n.role,topic:o??ur(r),confidence:o?"high":"medium",rule_version:"v2",evidence:lr([...r.map(i=>`claim:${i}`),...o?[`focus:${o}`]:[],...(e.lineageIds??[]).map(i=>`lineage:${i}`)]),active_item_ids:r,...o?{focused_item_id:o}:{}}})}function za(e,t){let n=t.PM_PATH?.trim();if(n){let o=ee.resolve(e,n);if(ir(ee.join(o,"settings.json")))return o;let i=ee.join(o,".agents","pm");if(ir(ee.join(i,"settings.json")))return i}let r=ee.resolve(e);for(let o=0;o<32;o+=1){let i=ee.join(r,".agents","pm");if(ir(ee.join(i,"settings.json")))return i;let s=ee.dirname(r);if(s===r)break;r=s}}function oi(e){if(!e.key)return;let t=za(e.cwd,e.env);if(t)try{let n=JSON.parse(Ma(ar(t),"utf8"));return ri(n.semantic_attribution?.[e.key])}catch{return}}async function em(e){return(await Bt(e)).focused_item}async function tm(e,t){let n=await Bt(e);await cr(e,{...n,focused_item:t})}async function nm(e){let n={...await Bt(e)};delete n.focused_item,await cr(e,n)}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="dfbf4eb8-1f02-5880-a70a-0e7ed9b9784a")}catch{}})();var gr=["model","effort","role","topic","version"],Kt=new yr,di=new yr,Gt=new yr,br=[{harness:"claude-code",environment_keys:["CLAUDE_CODE","CLAUDECODE"],model_environment_keys:["ANTHROPIC_MODEL","CLAUDE_MODEL"],session_environment_keys:["CLAUDE_CODE_SESSION_ID"],provenance_environment_keys:{effort:["CLAUDE_EFFORT"]},provenance_resolvers:{model:"claude_session_file",version:"claude_session_file"},provenance_unavailable_dimensions:["role","topic"],argv_markers:["claude","claude-code"],client_names:["claude","claude-code","claude code"]},{harness:"codex",environment_keys:["CODEX_HOME","CODEX_CI","CODEX_THREAD_ID"],model_environment_keys:["CODEX_MODEL"],session_environment_keys:["CODEX_THREAD_ID"],provenance_environment_keys:{effort:["CODEX_REASONING_EFFORT","CODEX_EFFORT"],role:["CODEX_SESSION_ROLE"]},provenance_resolvers:{model:"codex_session_file",effort:"codex_session_file",version:"ai_agent_version"},provenance_unavailable_dimensions:["topic"],argv_markers:["codex"],client_names:["codex"]},{harness:"pi",environment_keys:["PI_AGENT","PI_CODING_AGENT"],model_environment_keys:["PI_MODEL"],session_environment_keys:["PI_SESSION_ID"],provenance_unavailable_dimensions:["effort","role","topic"],argv_markers:["pi"],client_names:["pi"]},{harness:"opencode",environment_keys:["OPENCODE","OPENCODE_SESSION_ID"],model_environment_keys:["OPENCODE_MODEL"],session_environment_keys:["OPENCODE_SESSION_ID"],provenance_unavailable_dimensions:["effort","role","topic"],argv_markers:["opencode"],client_names:["opencode"]},{harness:"cursor",environment_keys:["CURSOR_AGENT","CURSOR_TRACE_ID"],model_environment_keys:["CURSOR_MODEL"],session_environment_keys:["CURSOR_TRACE_ID"],provenance_unavailable_dimensions:["effort","role","topic"],argv_markers:["cursor"],client_names:["cursor"]},{harness:"aider",environment_keys:["AIDER","AIDER_MODEL"],model_environment_keys:["AIDER_MODEL"],session_environment_keys:["AIDER_SESSION_ID"],provenance_unavailable_dimensions:["effort","role","topic"],argv_markers:["aider"],client_names:["aider"]},{harness:"gemini-cli",environment_keys:["GEMINI_CLI","GEMINI_CLI_HOME"],model_environment_keys:["GEMINI_MODEL"],session_environment_keys:["GEMINI_CLI_SESSION_ID"],provenance_unavailable_dimensions:["effort","role","topic"],argv_markers:["gemini","gemini-cli"],client_names:["gemini","gemini-cli","gemini cli"]},{harness:"ci",environment_keys:["CI","GITHUB_ACTIONS","BUILDKITE","GITLAB_CI"],provenance_unavailable_dimensions:["model","effort","role","topic"],argv_markers:[],client_names:[]}],li=Object.freeze({max_bytes:1048576,max_lines:4096,network_access:!1,subprocess_access:!1}),Ua=Object.freeze({...li,max_bytes:4194304}),_r=/^[a-z0-9]+(?:-[a-z0-9]+)*$/u;function Va(e){let t=fe(e).provenance_unavailable_dimensions,n=new Set(["model","version",...Object.keys(e.provenance_environment_keys??{}),...Object.keys(e.provenance_resolvers??{})]);return Object.freeze({contract_version:1,adapter_version:"v1",priority:0,harness:e.harness,descriptor:e,supported_dimensions:Object.freeze([...n].sort()),native_sources:Object.freeze(["environment","argv","mcp_client",...Object.values(e.provenance_resolvers??{}).some(r=>r?.endsWith("session_file"))?["session_file"]:[]]),probe_policy:e.harness==="codex"?Ua:li,normalization:Object.freeze({model_family:"v1",effort:"v1",preserve_raw:!0}),confidence:"high",waivers:Object.freeze(Object.fromEntries(t.map(r=>[r,"Harness does not expose this dimension."])))})}var ui=Object.freeze(br.filter(e=>e.harness!=="ci").map(Va).sort((e,t)=>e.harness.localeCompare(t.harness))),Te=new Map,Ue=new Map;function R(e){let t=typeof e=="string"?e.trim():void 0;return t&&t.length>0?t:void 0}function ue(e){return[...new Set((e??[]).slice(0,64).map(t=>t.trim()).filter(t=>t.length>0).map(t=>t.slice(0,128)))]}function fe(e){let t=e.harness.trim().toLowerCase();if(!_r.test(t))throw new Error(`Invalid harness signal descriptor namespace: ${e.harness}`);return{harness:t,environment_keys:ue(e.environment_keys),model_environment_keys:ue(e.model_environment_keys),session_environment_keys:ue(e.session_environment_keys),provenance_environment_keys:Object.fromEntries(Object.entries(e.provenance_environment_keys??{}).slice(0,32).map(([n,r])=>[n.trim().toLowerCase().slice(0,64),ue(r)]).filter(([n])=>_r.test(n))),provenance_resolvers:Object.fromEntries(Object.entries(e.provenance_resolvers??{}).slice(0,32).map(([n,r])=>[n.trim().toLowerCase().slice(0,64),r]).filter(n=>typeof n[0]=="string"&&_r.test(n[0])&&(n[1]==="ai_agent_version"||n[1]==="claude_session_file"||n[1]==="codex_session_file"))),provenance_unavailable_dimensions:ue(e.provenance_unavailable_dimensions).map(n=>n.toLowerCase()),argv_markers:ue(e.argv_markers).map(n=>n.toLowerCase()),client_names:ue(e.client_names).map(n=>n.toLowerCase())}}var fi=br.map(fe);function Wa(e,t){return JSON.stringify(e)===JSON.stringify(t)}function Xt(e,t){return e.toLowerCase().slice(0,512).split(/[/\\\s:=]+/u).filter(r=>r.length>0).includes(t)||e.trim().toLowerCase()===t}function wr(e=[]){let t=new Map(br.filter(o=>o.harness!=="ci").map(o=>[o.harness,fe(o)]));for(let{adapter:o}of Te.values())t.set(o.harness,fe(o.descriptor));let n=[...t.values(),...fi.filter(o=>o.harness==="ci"),...[...Ue.values()].map(o=>o.descriptor),...Gt.getStore()?.descriptors??[],...e.map(fe)],r=new Set;for(let o of n){if(r.has(o.harness))throw new Error(`Harness signal descriptor collision for "${o.harness}"`);r.add(o.harness)}return n}function Er(e,t){for(let n of t??[]){let r=R(e[n]);if(r)return r.slice(0,256)}}function Ba(e,t){if(t==="role"){let n=e.slice(0,8).map(r=>r.trim().toLowerCase()).find(r=>["claim","create","update","close","release","review"].includes(r));if(n==="review")return"reviewer";if(n)return"implementer"}}function _i(e,t){let n=t==="model"?["--model","--agent-model"]:[`--agent-${t}`],r=e.slice(0,8);for(let o=0;o<r.length;o+=1){let i=r[o].slice(0,512);if(n.includes(i))return R(r[o+1])?.slice(0,256);let s=n.find(a=>i.startsWith(`${a}=`));if(s)return R(i.slice(s.length+1))?.slice(0,256)}}var qa=new Set(["implementation","implementer","investigator","orchestrator","planner","release-operator","reviewer"]);function xe(e,t){if(e!=="role"||t===void 0)return t;let n=t.trim().toLowerCase().replaceAll(/[_\s]+/gu,"-");return qa.has(n)?n:void 0}function mr(e,t){return R(e?.[t])?.slice(0,256)}var Xa=1048576,hr=4194304,qt=new Map,ii=Object.freeze({}),pr=new Map,si=Object.freeze({});function ai(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:void 0}function Ka(e){let t;try{t=JSON.parse(e)}catch{return si}let n=ai(t);if(!n)return si;let r=[{value:n,depth:0}],o=0,i,s;for(;r.length>0&&o<64;){let a=r.shift();if(o+=1,i??=R(a.value.model)?.slice(0,256),s??=R(a.value.version)?.slice(0,256),i&&s)break;if(!(a.depth>=4))for(let c of Object.values(a.value)){let d=ai(c);d&&r.push({value:d,depth:a.depth+1})}}return Object.freeze({model:i,version:s})}function mi(e){try{return V.lstatSync(e).isFile()?"available":"missing"}catch(t){return Jn(t)?"missing":"failed"}}function Ga(e,t){let n;try{n=V.readdirSync(e,{withFileTypes:!0}).filter(o=>o.isDirectory()).sort((o,i)=>o.name.localeCompare(i.name)).slice(0,512).map(o=>{let i=Oe.join(e,o.name,`${t}.jsonl`);return{candidate:i,status:mi(i)}})}catch(o){return{status:Jn(o)?"missing":"failed"}}let r=n.filter(({status:o})=>o==="available").map(({candidate:o})=>o);return r.length===0?{status:n.some(({status:o})=>o==="failed")?"failed":"missing"}:r.length>1?{status:"ambiguous"}:{status:"available",path:r[0]}}function pi(e,t){let n=R(t.CLAUDE_CODE_SESSION_ID);if(!n||!/^[A-Za-z0-9_-]{1,128}$/u.test(n))return{status:"unavailable"};let o=Oe.resolve(e.cwd??process.cwd()).replaceAll(/[^A-Za-z0-9-]/gu,"-"),i=Oe.join(e.home_dir??ci.homedir(),".claude","projects"),s=Oe.join(i,o,`${n}.jsonl`),a=R(e.session_file),c=a&&Oe.basename(a)===`${n}.jsonl`?a:void 0;for(let d of[c,s]){if(!d)continue;let u=mi(d);if(u==="available")return{status:u,path:d};if(u==="failed")return{status:u}}return Ga(i,n)}function Ya(e,t,n){let r=pi(t,n);if(r.status==="available")try{let o=V.openSync(r.path,V.constants.O_RDONLY|V.constants.O_NOFOLLOW);try{let i=V.fstatSync(o),s=`${r.path}\0${i.size}\0${i.mtimeMs}`,a=pr.get(s);if(a)return a[e];let c=Math.min(i.size,Xa),d=Math.min(c,Math.ceil(c/2)),u=Math.min(c-d,i.size-d),f=Buffer.alloc(d);V.readSync(o,f,0,d,0);let p=Buffer.alloc(u);u>0&&V.readSync(o,p,0,u,i.size-u);let h={},_=i.size<=c?Buffer.concat([f,p]).toString("utf8").split(`
2
- `):[...f.toString("utf8").split(`
3
- `).slice(0,4096),...p.toString("utf8").split(`
4
- `).slice(-4096)];for(let S of _){if(S.length===0||S.length>262144)continue;let C=Ka(S);if(h.model??=C.model,h.version??=C.version,h.model&&h.version)break}let E=Object.freeze(h);return pr.clear(),pr.set(s,E),E[e]}finally{V.closeSync(o)}}catch{return}}function Ja(e,t){let n=0,r=(o,i)=>{if(i>4||n>=512)return;let s;try{s=V.readdirSync(o,{withFileTypes:!0}).sort((a,c)=>c.name.localeCompare(a.name))}catch{return}for(let a of s){if(n+=1,n>512)return;let c=Oe.join(o,a.name);if(a.isFile()&&a.name.endsWith(`-${t}.jsonl`))return c;if(a.isDirectory()){let d=r(c,i+1);if(d)return d}}};return r(e,0)}function Qa(e){if(e<=hr)return[{offset:0,length:e}];let t=Math.floor(hr/2);return[{offset:e-t,length:t},{offset:0,length:t}]}function Za(e,t){if(t.length===0||t.length>262144)return;let n;try{n=JSON.parse(t)}catch{return}if(typeof n!="object"||n===null||Array.isArray(n))return;let r=n;if(r.type!=="turn_context")return;let o=typeof r.payload=="object"&&r.payload!==null?r.payload:void 0;e.model??=R(o?.model)?.slice(0,256),e.effort??=R(o?.effort)?.slice(0,256)}function ec(e,t){let n={},r=4096;for(let o of Qa(t)){let i=Buffer.alloc(o.length);V.readSync(e,i,0,o.length,o.offset);let s=i.toString("utf8").split(`
5
- `).reverse().slice(0,r);r-=s.length;for(let a of s)if(Za(n,a),n.model&&n.effort)break;if(n.model&&n.effort||r<=0)break}return n}function tc(e,t,n){let r=R(n.CODEX_THREAD_ID);if(!r||!/^[A-Za-z0-9_-]{1,128}$/u.test(r))return;let o=Oe.join(t.home_dir??ci.homedir(),".codex","sessions"),i=`${o}\0${r}`,s=qt.get(i);if(s)return s[e];let a=Ja(o,r);if(!a){qt.set(i,ii);return}try{let c=V.openSync(a,"r");try{let d=V.fstatSync(c).size,u=ec(c,d);return qt.set(i,u),u[e]}finally{V.closeSync(c)}}catch{qt.set(i,ii);return}}function nc(e,t,n,r){let o=Gt.getStore();if(!(t.probes_enabled!==!1&&o?.probesEnabled!==!1&&!["0","false","off"].includes(R(n.PM_AGENT_PROBES)?.toLowerCase()??"")))return;let s=r?.provenance_resolvers[e];if(s==="claude_session_file")return Ya(e,t,n);if(s==="codex_session_file")return tc(e,t,n);if(s==="ai_agent_version"){let a=R(n.AI_AGENT);return!a||!r||!Xt(a,r.harness)?void 0:/(?:^|[@/\s])v?(\d+\.\d+(?:\.\d+)?(?:[-+][A-Za-z0-9.-]+)?)$/u.exec(a)?.[1]?.slice(0,256)}}function rc(e,t,n,r){if(e==="ai_agent_version"){let o=R(r.AI_AGENT);return o!==void 0&&Xt(o,t.harness)?"available":"unavailable"}return e==="codex_session_file"?R(r.CODEX_THREAD_ID)!==void 0?"available":"unavailable":pi(n,r).status}function vr(e){return e||(di.getStore()??{env:process.env,argv:process.argv})}function oc(e,t,n,r){let o=e.environment_keys.some(a=>R(t[a])!==void 0),i=e.argv_markers.some(a=>n.some(c=>{let d=c.replaceAll("\\","/");return Xt(d.slice(d.lastIndexOf("/")+1),a)})),s=e.client_names.some(a=>r===a||Xt(r,a));return o||i||s}function ic(e,t){if(!t)return;let n;if(e==="topic"&&(n=t.topic),e==="role"&&(n=t.role),!!n)return{value:n,source:"inferred",confidence:t.confidence,rule_version:t.rule_version,evidence:t.evidence}}function sc(e){let t=e.find(([n])=>n!==void 0);return t?.[0]?{value:t[0],source:t[1]}:void 0}function ac(e,t,n,r,o,i){let s=`PM_AGENT_${e.toUpperCase().replaceAll("-","_")}`,a=new Set([...gr,...Object.keys(r?.provenance_environment_keys??{})]),c,d,u;a.has(e)&&(c=xe(e,R(n[s])?.slice(0,256)),u=xe(e,_i(t.argv??[],e)),d=xe(e,Ba(t.argv??[],e)));let f={...r?.provenance_environment_keys,model:r?.model_environment_keys},p={...t.client_info?.provenance,model:t.client_info?.model},h=mr(o?.provenance,e),_=xe(e,Er(n,f[e])),E=xe(e,mr(p,e)),S=xe(e,mr(t.provenance,e)),C=nc(e,t,n,r);return sc([[c,"override"],[h,"session"],[u,"argv"],[_,"environment"],[E,"mcp_client"],[S,"host"],[C,"probe"]])??ic(e,i)??(d?{value:d,source:"argv"}:void 0)}function cc(e,t){if(!(!e||!t))return Ha("sha256").update(`pm-agent-instance:v1\0${e}\0${t}`).digest("hex").slice(0,24)}function dc(e,t,n,r,o){let i=Object.keys(n?.provenance_environment_keys??{}),s=new Set([...gr,...i,...Object.keys(n?.provenance_resolvers??{}),...Object.keys(e.provenance??{}),...Object.keys(e.client_info?.provenance??{}),...Object.keys(r?.provenance??{})]),a={};for(let c of s){let d=ac(c,e,t,n,r,o);d?a[c]=d:n&&(c!=="version"||n.provenance_unavailable_dimensions.includes(c))&&(a[c]=null)}return a}function fm(e){let t=e.map(fe),n=new Map(fi.map(i=>[i.harness,i])),r=new Set;for(let i of t){if(r.has(i.harness)||n.has(i.harness))throw new Error(`Harness signal descriptor collision for "${i.harness}"`);let s=Ue.get(i.harness);if(s&&!Wa(s.descriptor,i))throw new Error(`Harness signal descriptor collision for "${i.harness}"`);r.add(i.harness)}for(let i of t){let s=Ue.get(i.harness);Ue.set(i.harness,{descriptor:i,registrations:(s?.registrations??0)+1})}let o=!0;return()=>{if(o){o=!1;for(let i of t){let s=Ue.get(i.harness);!s||s.registrations<=1?Ue.delete(i.harness):s.registrations-=1}}}}function lc(e){let t=fe(e.descriptor),n=e.harness.trim().toLowerCase();if(e.contract_version!==1)throw new Error(`Unsupported provenance adapter contract for "${n}": ${e.contract_version}`);if(t.harness!==n)throw new Error(`Provenance adapter harness "${n}" does not match descriptor "${t.harness}".`);let r=R(e.adapter_version)?.slice(0,64);if(!r)throw new Error(`Provenance adapter "${n}" requires a version.`);if(!Number.isSafeInteger(e.priority))throw new Error(`Provenance adapter "${n}" requires an integer priority.`);if(e.probe_policy.network_access!==!1||e.probe_policy.subprocess_access!==!1||e.probe_policy.max_bytes>hr||e.probe_policy.max_lines>4096)throw new Error(`Provenance adapter "${n}" exceeds the bounded local probe policy.`);return Object.freeze({...e,adapter_version:r,harness:n,descriptor:t,supported_dimensions:Object.freeze(ue(e.supported_dimensions).map(o=>o.toLowerCase()).sort()),native_sources:Object.freeze([...new Set(e.native_sources)]),probe_policy:Object.freeze({...e.probe_policy}),normalization:Object.freeze({...e.normalization}),...e.waivers?{waivers:Object.freeze(Object.fromEntries(Object.entries(e.waivers).slice(0,32).map(([o,i])=>[o.slice(0,64),i.slice(0,256)])))}:{}})}function _m(){let e=new Map(ui.map(t=>[t.harness,t]));for(let{adapter:t}of Te.values())e.set(t.harness,t);return Object.freeze([...e.values()].sort((t,n)=>t.harness.localeCompare(n.harness)))}function mm(e){let t=e.map(lc),n=new Map(ui.map(i=>[i.harness,i])),r=new Set;for(let i of t){if(r.has(i.harness))throw new Error(`Provenance adapter collision for "${i.harness}".`);let s=n.get(i.harness);if(s&&i.priority<=s.priority)throw new Error(`Provenance adapter override for "${i.harness}" requires priority greater than ${s.priority}.`);let a=Te.get(i.harness);if(a&&JSON.stringify(a.adapter)!==JSON.stringify(i))throw new Error(`Provenance adapter collision for "${i.harness}".`);r.add(i.harness)}for(let i of t){let s=Te.get(i.harness);Te.set(i.harness,{adapter:i,registrations:(s?.registrations??0)+1})}let o=!0;return()=>{if(o){o=!1;for(let i of t){let s=Te.get(i.harness);!s||s.registrations<=1?Te.delete(i.harness):s.registrations-=1}}}}function pm(e,t){let n=t.trim().slice(0,256),r=n.toLowerCase();if(e==="model"){let o=/^(gpt-\d+(?:\.\d+)?)/u.exec(r)?.[1];o&&(r=o)}else r=r.replaceAll(/[_\s-]+/gu,""),r={minimal:"low",low:"low",medium:"medium",high:"high",xhigh:"xhigh",max:"max",ultra:"ultra"}[r]??r;return{raw:n,normalized:r,vocabulary:"v1"}}function hm(e,t){return di.run(e,t)}function ym(e,t,n={}){let r=e.map(fe);return wr(r),Gt.run({descriptors:r,probesEnabled:n.probesEnabled!==!1},t)}function kr(e){let t=vr(e),n=t.env??{},r=wr(t.descriptors),o=[...(t.argv??[]).slice(0,3),...t.process_labels??[]].slice(0,64).map(_=>_.slice(0,512)),i=t.client_info?.name.trim().toLowerCase()??"",s=r.find(_=>oc(_,n,o,i)),a=or(t,n),c=[Er(n,s?.session_environment_keys),R(t.client_info?.session)?.slice(0,256)].find(_=>_!==void 0),d=cc(s?.harness,c),u=oi({cwd:t.cwd??process.cwd(),env:n,key:d}),f=dc(t,n,s,a,u),p=f.model,h=[["harness",s?.harness],["model",p?.value],["model_source",p?.source],["session",c],["instance",d],["provenance",Object.keys(f).length>0?f:void 0],["episode",a.episode]];return Object.fromEntries(h.filter(_=>_[1]!==void 0))}function uc(e){return e==="unavailable"?{status:"unavailable",reason:"harness_unavailable"}:e==="missing"?{status:"unavailable",reason:"resolver_input_missing"}:{status:"failed",reason:"resolver_failed"}}function fc(e,t,n,r,o,i,s){let a=n?.provenance_resolvers[e];if(t.provenance?.[e])return{status:"resolved",...a?{resolver:a}:{},rule_version:"v1"};if(s)return{status:"unavailable",reason:"invalid_value",rule_version:"v1"};if(a){if(!i)return{status:"unavailable",reason:"probes_disabled",resolver:a,rule_version:"v1"};let c=rc(a,n,r,o);return{...uc(c),resolver:a,rule_version:"v1"}}return{status:n?.provenance_unavailable_dimensions.includes(e)?"unavailable":"not_configured",reason:n?.provenance_unavailable_dimensions.includes(e)?"harness_unavailable":"resolver_not_configured",rule_version:"v1"}}function hi(e){let t=vr(e),n=kr(t),r=wr(t.descriptors).find(d=>d.harness===n.harness),o=t.env??{},i=t.probes_enabled!==!1&&Gt.getStore()?.probesEnabled!==!1&&!["0","false","off"].includes(R(o.PM_AGENT_PROBES)?.toLowerCase()??""),s=or(t,o),a=[o.PM_AGENT_ROLE,s.provenance?.role,Er(o,r?.provenance_environment_keys.role),t.client_info?.provenance?.role,t.provenance?.role,_i(t.argv??[],"role")].some(d=>{let u=R(d)?.slice(0,256);return u!==void 0&&xe("role",u)===void 0}),c=Object.fromEntries(gr.map(d=>[d,fc(d,n,r,t,o,i,d==="role"&&a)]));return{...n,provenance_outcomes:c}}function gm(){return process.env.PM_AUTHOR}function bm(e){e===void 0?delete process.env.PM_AUTHOR:process.env.PM_AUTHOR=e}function wm(e){return kr(e).harness}function _c(e,t,n){let r=vr(n),o=kr(r);if(e!==void 0){let s=R(e);return s?{author:s,source:"asserted",...o}:{author:"unknown",source:"unknown",...o}}if(r.env?.PM_AUTHOR!==void 0){let s=R(r.env.PM_AUTHOR);return s?{author:s,source:"asserted",...o}:{author:"unknown",source:"unknown",...o}}let i=R(t);return i?{author:i,source:"configured",...o}:o.harness?{author:`harness:${o.harness}`,source:"detected",...o}:{author:"unknown",source:"unknown",...o}}function yi(e){let t=Kt.getStore();return t?.author===e?t.source:e.startsWith("harness:")?"detected":e==="unknown"?"unknown":"asserted"}function gi(e){let t=Kt.getStore();return t?.author!==e?e.startsWith("harness:")?{harness:e.slice(8)}:{}:{...t.harness?{harness:t.harness}:{},...t.model?{model:t.model}:{},...t.model_source?{model_source:t.model_source}:{},...t.session?{session:t.session}:{},...t.instance?{instance:t.instance}:{},...t.provenance?{provenance:t.provenance}:{},...t.episode?{episode:t.episode}:{}}}function bi(e){let t=Kt.getStore();return t?.author===e&&t.source==="detected"&&t.instance?`${e}#${t.instance}`:e}function wi(e,t){let n=_c(e,t);return Kt.enterWith(n),n.author}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="77d3ebfa-789a-54cf-9d49-dbebab8d32ea")}catch{}})();var Ve=1,Ei=1;function vm(e){let t=e.pm_format_version;return typeof t=="number"&&Number.isInteger(t)&&t>=Ve?t:Ve}function vi(e){if(!(typeof e!="number"||!Number.isInteger(e)||e<=Ve))return e}function mc(e,t=Ei){return e<t?"outdated":e>t?"ahead":"current"}function km(e,t=Ei){let n=[],r=[];for(let o of e){let i=mc(o.version,t);i==="outdated"?n.push(o.ref):i==="ahead"&&r.push(o.ref)}return{outdated:n.sort((o,i)=>o.localeCompare(i)),ahead:r.sort((o,i)=>o.localeCompare(i))}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="d7501aa2-d3d9-5fbe-a1c0-d4bc145f5563")}catch{}})();var pc={"in-progress":"in_progress",cancelled:"canceled"};function Yt(e,t){if(t){let o=qo(e,t);if(o)return o}if(typeof e!="string")return;let n=e.trim().toLowerCase();if(!n)return;let r=pc[n]??n;if(Lt.includes(r))return r}function hc(e,t){return Yt(e,t)??e}function Tm(e,t){return t.terminal_statuses.has(hc(e,t))}import{encode as Oc}from"@toon-format/toon";import{isDeepStrictEqual as Ti}from"node:util";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="91a3969e-59b3-506e-9349-ca08e73a1228")}catch{}})();var yc=16;function Sr(e){let t=e.trim().replaceAll(/[^A-Za-z0-9]+/g," ").split(/\s+/).filter(o=>o.length>0).map(o=>o.toLowerCase());if(t.length===0)return e;let[n,...r]=t;return`${n}${r.map(o=>`${o.slice(0,1).toUpperCase()}${o.slice(1)}`).join("")}`}function gc(e){return[...new Set([Ko(e),Sr(e.key),Sr(e.cli_flag),...e.cli_aliases.map(t=>Sr(t))])]}function Ii(e,t){for(let n of gc(t)){if(!Object.hasOwn(e,n))continue;let r=e[n];if(r!==void 0)return r}}function xi(e){return Array.isArray(e)?e.flatMap(t=>xi(t)).map(t=>t.trim()).filter(t=>t.length>0):typeof e=="string"?e.split(/[,\n|]/).map(t=>t.trim()).filter(t=>t.length>0):e==null?[]:[String(e).trim()].filter(t=>t.length>0)}function ki(e,t){if(typeof e=="boolean")return e;if(typeof e=="number"){if(e===1)return!0;if(e===0)return!1}if(typeof e=="string"){let n=e.trim().toLowerCase();if(n==="true"||n==="1"||n==="yes")return!0;if(n==="false"||n==="0"||n==="no")return!1}throw new k(`${t} must be one of true|false|1|0|yes|no`,v.USAGE)}function Si(e,t){if(typeof e=="number"&&Number.isFinite(e))return e;let n=typeof e=="string"?e.trim():String(e),r=Number(n);if(!Number.isFinite(r))throw new k(`${t} must be a number`,v.USAGE);return r}function bc(e,t,n){let r=typeof e=="string"?(()=>{try{return JSON.parse(e)}catch{return}})():e;if(n==="array"&&Array.isArray(r)||n==="object"&&typeof r=="object"&&r!==null&&!Array.isArray(r))return r;throw new k(`${t} must be valid JSON ${n}`,v.USAGE)}function wc(e,t){return t===void 0?!0:t==="array"?Array.isArray(e):t==="object"?typeof e=="object"&&e!==null&&!Array.isArray(e):typeof e===t}function Ec(e,t,n){if(t.const!==void 0&&j(e)!==j(t.const))return`${n} must equal ${j(t.const)}`;if(t.enum!==void 0&&!t.enum.some(r=>j(r)===j(e)))return`${n} must be one of ${t.enum.map(r=>j(r)).join("|")}`;if(!wc(e,t.type))return`${n} must match configured type ${String(t.type)}`;if(typeof e=="string"){if(t.min_length!==void 0&&e.length<t.min_length)return`${n} must contain at least ${t.min_length} characters`;if(t.format==="date-time"&&!Jo(e))return`${n} must be an RFC 3339 date-time`}}function vc(e,t,n,r){if(Array.isArray(e)){if(t.min_items!==void 0&&e.length<t.min_items)return`${n} must contain at least ${t.min_items} items`;if(t.items)for(let[o,i]of e.entries()){let s=Jt(i,t.items,`${n}[${o}]`,r+1);if(s)return s}}}function kc(e,t,n,r){if(typeof e!="object"||e===null||Array.isArray(e))return;let o=e;for(let i of t.required??[])if(!Object.hasOwn(o,i))return`${n}.${i} is required`;for(let[i,s]of Object.entries(o)){let a=t.properties?.[i];if(!a){if(t.additional_properties===!1)return`${n}.${i} is not allowed`;continue}let c=Jt(s,a,`${n}.${i}`,r+1);if(c)return c}}function Jt(e,t,n,r=0){if(r>yc)return`${n} value schema exceeds maximum depth`;let o=Ec(e,t,n);if(o)return o;let i=vc(e,t,n,r);if(i)return i;let s=kc(e,t,n,r);if(s)return s;if(!t.one_of)return;let a=0;for(let c of t.one_of)if(Jt(e,c,n,r+1)===void 0&&(a+=1,a>1))break;return a===1?void 0:`${n} must match exactly one configured schema variant`}function Ce(e,t,n){if(!e.value_schema||t===void 0)return t;let r=Jt(t,e.value_schema,n);if(r)throw new k(r,v.USAGE);return t}function pt(e,t,n){let r=n??`--${e.cli_flag}`;if(e.type==="array"||e.type==="object"){let i=Array.isArray(t)?t[t.length-1]:t;return i===void 0?void 0:Ce(e,bc(i,r,e.type),r)}if(e.repeatable||e.type==="string_array"){let i=xi(t);return e.type==="number"?Ce(e,i.map(s=>Si(s,r)),r):e.type==="boolean"?Ce(e,i.map(s=>ki(s,r)),r):Ce(e,i,r)}let o=Array.isArray(t)?t[t.length-1]:t;if(o!==void 0)return e.type==="number"?Ce(e,Si(o,r),r):e.type==="boolean"?Ce(e,ki(o,r),r):Ce(e,typeof o=="string"?o:String(o),r)}function Sc(e,t){return!e.required&&!e.required_on_create?!1:e.required_types.length===0?!0:t?e.required_types.map(n=>n.toLowerCase()).includes(t.trim().toLowerCase()):!1}function jm(e,t,n){let r={},o=[];for(let i of t.command_to_fields.get("create")??[]){let s=Ii(e,i);if(s===void 0){Sc(i,n)&&o.push(`--${i.cli_flag}`);continue}r[i.metadata_key]=pt(i,s)}return{values:r,missing_required_flags:[...new Set(o)].sort((i,s)=>i.localeCompare(s))}}function Pm(e,t,n=["update"]){let r={},o=(n??["update"]).flatMap(s=>t.command_to_fields.get(s)??[]),i=new Set;for(let s of o){let a=Ii(e,s);a!==void 0&&(i.has(s.metadata_key)||(i.add(s.metadata_key),r[s.metadata_key]=pt(s,a)))}return r}import{decode as Ic}from"@toon-format/toon";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="2840e12e-7444-5d36-9f54-5a56267bbb75")}catch{}})();function Ir(e){return{value:Ic(e),usedScalarBracketEscape:!1}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="fedb7b50-6946-589d-b240-9f074e09e467")}catch{}})();var xc=/^\s*(<<<<<<<|=======|>>>>>>>)(?:\s.*)?$/;function Tc(e){if(e.length===0)return[];let t=e.split(/\r?\n/),n=[];for(let r=0;r<t.length;r+=1){let o=t[r]??"",i=o.match(xc);if(!i)continue;let s=i[1];n.push({line:r+1,marker:s,text:o})}return n}function Qt(e){return Tc(e)[0]}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="051655a4-8ba7-5118-9758-d9ca377fa7e4")}catch{}})();var Cr=new Set(["schema","tracker","auto"]),Ai=new Set(["source","isolated","snapshot"]),Cc=new Set(["legacy","local_mutation","local_source_ref","acknowledged","invalid_provenance","foreign_source_ref"]),Ac=new Set(["passed","failed","stopped","canceled"]),Rc=new Set(No);function qe(e){return e.replaceAll("\\","/")}function Ri(e){for(let t of e)if(t!==0)return t;return 0}function en(e){for(let[t,n]of Object.entries(e))n===void 0&&delete e[t]}var Ni=["id","title","description","created_at","updated_at"],Nc=new Set(se);function Di(e){if(e?.schema)return{statusRegistry:Bo(e.schema),fieldRegistry:Xo(e.schema),unknownFieldPolicy:e.schema.unknown_field_policy??"allow",extensionFieldNames:new Set(e.extensionFieldNames??[]),onWarning:e.onWarning}}function Dc(e,t){return e.required?e.required_types.length===0?!0:e.required_types.map(n=>n.toLowerCase()).includes(t.trim().toLowerCase()):!1}function _e(e){let t=e.match(/^([a-z_][\w.]*)\s/u)?.[1];throw new k(`Invalid item metadata: ${e}`,v.GENERIC_FAILURE,{code:"item_document_invalid",reason:e.includes("required")?"missing_required_field":"schema_validation_error",...t?{field:t}:{},required:"Provide an item document whose metadata satisfies the active runtime schema.",why:e})}function gt(e,t){throw new k(t,v.GENERIC_FAILURE,{code:"item_document_invalid",reason:"syntax_error",format:e,required:`Provide a syntactically valid ${e==="toon"?"TOON":"JSON Markdown"} item document.`,why:"The document could not be decoded far enough to validate item metadata."})}function ji(e){let t=new Set(Nc);for(let n of e.fieldRegistry?.definitions??[])t.add(n.metadata_key);for(let n of e.extensionFieldNames)t.add(n);return t}function w(e,t){e||_e(t)}function bt(e,t){return(typeof e!="object"||e===null||Array.isArray(e))&&_e(t),e}function xr(e,t){let n=e[t];w(typeof n=="string",`${t} must be a string`),w(re(n),`${t} must be a valid ISO timestamp`)}function Oi(e,t,n){let r=e[t];r!==void 0&&w(typeof r=="number"&&Number.isInteger(r)&&r>=1,`${n} must be an integer >= 1`)}function Ar(e,t,n){let r=e[t];r!==void 0&&(w(typeof r=="string",`${n} must be a string`),w(re(r),`${n} must be a valid ISO timestamp`))}function jc(e){if(e!==void 0){w(Array.isArray(e),"event.recurrence.by_weekday must be an array");for(let t of e){w(typeof t=="string","event.recurrence.by_weekday entries must be strings");let n=t.trim().toLowerCase();w(zt.includes(n),`event.recurrence.by_weekday entries must be one of: ${zt.join(", ")}`)}}}function Pc(e){if(e!==void 0){w(Array.isArray(e),"event.recurrence.by_month_day must be an array");for(let t of e)w(typeof t=="number"&&Number.isInteger(t)&&t>=1&&t<=31,"event.recurrence.by_month_day entries must be integers 1..31")}}function Lc(e){if(e!==void 0){w(Array.isArray(e),"event.recurrence.exdates must be an array");for(let t of e)w(typeof t=="string","event.recurrence.exdates entries must be strings"),w(re(t),"event.recurrence.exdates entries must be valid ISO timestamps")}}function Mc(e){let t=bt(e,"event.recurrence must be an object");w(typeof t.freq=="string","event.recurrence.freq must be a string");let n=t.freq.trim().toLowerCase();w($t.includes(n),`event.recurrence.freq must be one of: ${$t.join(", ")}`),Oi(t,"interval","event.recurrence.interval"),Oi(t,"count","event.recurrence.count"),Ar(t,"until","event.recurrence.until"),jc(t.by_weekday),Pc(t.by_month_day),Lc(t.exdates)}function Fc(e){for(let r of Ni)w(typeof e[r]=="string",`${r} is required and must be a string`);let t=e.type;w(typeof t=="string"&&t.trim().length>0,"type must be a non-empty string");let n=e.pm_format_version;return n!==void 0&&w(typeof n=="number"&&Number.isInteger(n)&&n>=Ve,`pm_format_version must be an integer >= ${Ve}`),t}function $c(e,t){let n=e.status;w(typeof n=="string"&&n.trim().length>0,"status must be a non-empty string");let r=t?.statusRegistry,o=Yt(n,r),i=r?r.definitions.map(s=>s.id):[...Lt];w(o!==void 0,`status must be one of: ${i.join(", ")}`)}function zc(e){let t=e.priority;w(typeof t=="number"&&Number.isInteger(t)&&[0,1,2,3,4].includes(t),"priority must be an integer 0..4");let n=e.tags;w(Array.isArray(n),"tags must be an array");for(let r of n)w(typeof r=="string","tags entries must be strings")}function Hc(e){let t=e.confidence;if(t!==void 0){if(typeof t=="number"){w(Number.isInteger(t)&&t>=0&&t<=100,"confidence number value must be an integer 0..100");return}if(typeof t=="string"){let n=t.trim().toLowerCase(),r=n==="med"||Ft.includes(n);w(r,`confidence string value must be one of: ${[...Ft,"med"].join(", ")}`);return}w(!1,"confidence must be a number or string")}}function Uc(e){let t=e.severity;if(t===void 0)return;typeof t!="string"&&_e("severity must be a string");let n=t.trim().toLowerCase(),r=n==="med"||Mt.includes(n);w(r,`severity value must be one of: ${[...Mt,"med"].join(", ")}`)}function Vc(e){e.regression!==void 0&&typeof e.regression!="boolean"&&_e("regression must be a boolean")}function Wc(e){let t=e.reminders;if(t!==void 0){w(Array.isArray(t),"reminders must be an array");for(let n of t){let r=bt(n,"reminders entries must be objects");w(typeof r.at=="string","reminder.at must be a string"),w(re(r.at),"reminder.at must be a valid ISO timestamp"),w(typeof r.text=="string","reminder.text must be a string"),w(r.text.trim().length>0,"reminder.text must not be empty")}}}function Bc(e){for(let t of["title","description","location","timezone"])e[t]!==void 0&&(w(typeof e[t]=="string",`event.${t} must be a string`),w(e[t].trim().length>0,`event.${t} must not be empty`))}function qc(e){e.recurrence!==void 0&&(Mc(e.recurrence),e.recurrence.until!==void 0&&w(oe(e.recurrence.until,e.start_at)>=0,"event.recurrence.until must be at or after event.start_at"))}function Xc(e){let t=bt(e,"events entries must be objects");w(typeof t.start_at=="string","event.start_at must be a string"),w(re(t.start_at),"event.start_at must be a valid ISO timestamp"),t.end_at!==void 0&&(w(typeof t.end_at=="string","event.end_at must be a string"),w(re(t.end_at),"event.end_at must be a valid ISO timestamp"),w(oe(t.end_at,t.start_at)>0,"event.end_at must be after event.start_at")),Bc(t),t.all_day!==void 0&&w(typeof t.all_day=="boolean","event.all_day must be a boolean"),qc(t)}function Kc(e){let t=e.events;if(t!==void 0){w(Array.isArray(t),"events must be an array");for(let n of t)Xc(n)}}function Gc(e){for(let t of["source_type","source_owner","design","external_ref"]){let n=e[t];n!==void 0&&w(typeof n=="string",`${t} must be a string`)}}function Yc(e){let t=e.type_options;if(t===void 0)return;let n=bt(t,"type_options must be an object");for(let[r,o]of Object.entries(n))w(r.trim().length>0,"type_options keys must be non-empty"),w(typeof o=="string","type_options values must be strings"),w(o.trim().length>0,"type_options values must be non-empty strings")}function Jc(e,t,n){if(n?.fieldRegistry)for(let r of n.fieldRegistry.definitions){let o=e[r.metadata_key];if(o===void 0){Dc(r,t)&&_e(`missing required schema field: ${r.metadata_key}`);continue}try{e[r.metadata_key]=pt(r,o,`metadata field "${r.metadata_key}"`)}catch(i){_e(String(i?.message).replace(/^Invalid\s+/u,""))}}}function Qc(e,t){if(!t||t.unknownFieldPolicy==="allow")return;let n=ji(t),r=Object.keys(e).filter(o=>!n.has(o)).sort((o,i)=>o.localeCompare(i));r.length!==0&&(t.unknownFieldPolicy==="reject"?_e(`unknown schema fields are not allowed: ${r.join(", ")}`):t.onWarning?.(`item_unknown_schema_fields:${r.join(",")}`))}function Rr(e,t){let n=bt(e,"item metadata must be an object"),r=Fc(n);$c(n,t),zc(n),Hc(n),Uc(n),Vc(n),xr(n,"created_at"),xr(n,"updated_at"),n.deadline!==void 0&&xr(n,"deadline"),Wc(n),Kc(n),Ar(n,"closed_at","closed_at"),Ar(n,"completed_at","completed_at"),Gc(n),Yc(n),Jc(n,r,t),Qc(n,t)}function Zc(e){if(!(!e||e.length===0))return[...e].map(t=>({id:t.id.trim(),kind:t.kind,created_at:t.created_at,author:t.author?.trim()||void 0,source_kind:t.source_kind?.trim()||void 0,author_source:t.author_source})).sort((t,n)=>{let r=oe(t.created_at,n.created_at);if(r!==0)return r;let o=t.id.localeCompare(n.id);if(o!==0)return o;let i=t.kind.localeCompare(n.kind);return i!==0?i:(t.source_kind??"").localeCompare(n.source_kind??"")})}function Tr(e){if(!(!e||e.length===0))return[...e].sort((t,n)=>{let r=oe(t.created_at,n.created_at);if(r!==0)return r;let o=t.text.localeCompare(n.text);return o!==0?o:t.author.localeCompare(n.author)})}function ed(e){if(!e||e.length===0)return;let t=[...e].map(n=>({at:n.at,text:n.text.trim()})).filter(n=>n.text.length>0).sort((n,r)=>{let o=oe(n.at,r.at);return o!==0?o:n.text.localeCompare(r.text)});return t.length===0?void 0:t}function td(e){if(!e)return;let t=e.freq.trim().toLowerCase();if(!$t.includes(t))return;let n=Array.from(new Set((e.by_weekday??[]).map(s=>s.trim().toLowerCase()).filter(s=>zt.includes(s)))).sort((s,a)=>Yn(s)-Yn(a)),r=Array.from(new Set((e.by_month_day??[]).filter(s=>Number.isInteger(s)&&s>=1&&s<=31).map(s=>s))).sort((s,a)=>s-a),o=Array.from(new Set((e.exdates??[]).map(s=>s.trim()).filter(s=>re(s)))).sort((s,a)=>oe(s,a)),i={freq:t,interval:e.interval!==void 0&&e.interval>1?e.interval:void 0,count:e.count,until:e.until?.trim()||void 0,by_weekday:n.length>0?n:void 0,by_month_day:r.length>0?r:void 0,exdates:o.length>0?o:void 0};for(let[s,a]of Object.entries(i))a===void 0&&delete i[s];return i}function nd(e){return!Array.isArray(e)||e.length===0?void 0:[...e].map(rd).sort(od)}function rd(e){let t={start_at:e.start_at,end_at:e.end_at||void 0,title:e.title?.trim()||void 0,description:e.description?.trim()||void 0,location:e.location?.trim()||void 0,all_day:e.all_day,timezone:e.timezone?.trim()||void 0,recurrence:td(e.recurrence)};return en(t),t}function od(e,t){return Ri([oe(e.start_at,t.start_at),(e.end_at??"").localeCompare(t.end_at??""),(e.title??"").localeCompare(t.title??""),+!!e.all_day-+!!t.all_day,(e.timezone??"").localeCompare(t.timezone??""),(e.location??"").localeCompare(t.location??""),(e.description??"").localeCompare(t.description??""),JSON.stringify(e.recurrence??{}).localeCompare(JSON.stringify(t.recurrence??{}))])}function id(e){if(!(!e||e.length===0))return e.map(t=>({path:qe(t.path),scope:t.scope,note:t.note?.trim()||void 0}))}function sd(e){if(!e||e.length===0)return;let t=e.map(ld).filter(n=>n.run_id.length>0&&n.started_at.length>0&&n.finished_at.length>0&&n.recorded_at.length>0).sort((n,r)=>Ri([oe(n.recorded_at,r.recorded_at),n.run_id.localeCompare(r.run_id),n.kind.localeCompare(r.kind)]));return t.length>0?t:void 0}function We(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?Math.floor(e):void 0}function ad(e){return typeof e=="number"&&Number.isFinite(e)&&e>=1?Math.floor(e):void 0}function Or(e){return typeof e=="string"?e:""}function cd(e){if(!Array.isArray(e))return;let t=e.filter(r=>r!==null&&typeof r=="object"&&typeof r.name=="string"&&r.name.trim().length>0&&typeof r.value=="number"&&Number.isFinite(r.value)&&typeof r.recorded_at=="string"&&r.recorded_at.trim().length>0).map(r=>({name:r.name.trim(),value:r.value,unit:typeof r.unit=="string"&&r.unit.trim()||void 0,threshold:typeof r.threshold=="number"&&Number.isFinite(r.threshold)?r.threshold:void 0,recorded_at:r.recorded_at.trim()})),n=[...new Map(t.map(r=>[r.name,r])).values()].sort((r,o)=>r.name.localeCompare(o.name)).slice(0,32);return n.length>0?n:void 0}function Zt(e,t){return typeof e=="string"&&t.has(e)?e:void 0}function dd(e){if(!Array.isArray(e))return;let t=e.filter(n=>n&&typeof n.command=="string"&&n.command.trim().length>0).slice(0,32).map(n=>({command:n.command.trim(),requested_pm_context_mode:Zt(n.requested_pm_context_mode,Cr),pm_context_mode:Zt(n.pm_context_mode,Cr),workspace_context_mode:Zt(n.workspace_context_mode,Ai),trust_reason:Zt(n.trust_reason,Cc)}));return t.length>0?t:void 0}function ld(e){let t=typeof e.run_id=="string"?e.run_id.trim():"",n=e.kind==="test"||e.kind==="test-all"?e.kind:"test",r=Ac.has(e.status)?e.status:"failed",o={run_id:t,kind:n,status:r,started_at:Or(e.started_at),finished_at:Or(e.finished_at),recorded_at:Or(e.recorded_at),attempt:ad(e.attempt),resumed_from:e.resumed_from?.trim()||void 0,passed:We(e.passed)??0,failed:We(e.failed)??0,skipped:We(e.skipped)??0,items:We(e.items),linked_tests:We(e.linked_tests),fail_on_skipped_triggered:e.fail_on_skipped_triggered===!0?!0:void 0,measurements:cd(e.measurements),executions:dd(e.executions)};return en(o),o}function ud(e){if(!(!Array.isArray(e)||e.length===0))return e.map(hd)}function ht(e){if(!Array.isArray(e))return;let t=[...new Set(e.filter(n=>typeof n=="string").map(n=>n.trim()).filter(n=>n.length>0))].sort((n,r)=>n.localeCompare(r));return t.length>0?t:void 0}function Dr(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function jr(e){return e==="__proto__"||e==="constructor"||e==="prototype"}function Ci(e){if(!Dr(e))return;let t=Object.entries(e).map(([n,r])=>[n.trim(),String(r).trim()]).filter(([n,r])=>n.length>0&&!jr(n)&&r.length>0).sort(([n],[r])=>n.localeCompare(r));return t.length>0?Object.fromEntries(t):void 0}function fd(e){if(!Dr(e))return;let t=Object.entries(e).map(([n,r])=>[n.trim(),Number(r)]).filter(([n,r])=>n.length>0&&!jr(n)&&Number.isFinite(r)).sort(([n],[r])=>n.localeCompare(r));return t.length>0?Object.fromEntries(t):void 0}function _d(e){let t=e?.trim().toLowerCase();if(!(!t||!Cr.has(t)))return t}function md(e){let t=e?.trim().toLowerCase();if(!(!t||!Ai.has(t)))return t}function pd(e,t){if(t===!0)return{provenance_invalid:!0};if(e===void 0)return{};if(!Dr(e))return{provenance_invalid:!0};let n=g(e.author),r=g(e.created_at),o=e.source_kind;return!n||!r||!re(r)||o!=="local_mutation"&&o!=="merge_union"?{provenance_invalid:!0}:{provenance:{author:n,created_at:r,source_kind:o,source_ref:g(e.source_ref)}}}function hd(e){let t={command:e.command?.trim()||void 0,path:e.path?qe(e.path):void 0,scope:e.scope,timeout_seconds:typeof e.timeout_seconds=="number"&&Number.isFinite(e.timeout_seconds)&&e.timeout_seconds>0?e.timeout_seconds:void 0,pm_context_mode:_d(e.pm_context_mode),workspace_context_mode:md(e.workspace_context_mode),...pd(e.provenance,e.provenance_invalid),env_set:Ci(e.env_set),env_clear:ht(e.env_clear),shared_host_safe:e.shared_host_safe===!0?!0:void 0,assert_stdout_contains:ht(e.assert_stdout_contains),assert_stdout_regex:ht(e.assert_stdout_regex),assert_stderr_contains:ht(e.assert_stderr_contains),assert_stderr_regex:ht(e.assert_stderr_regex),assert_stdout_min_lines:We(e.assert_stdout_min_lines),assert_json_field_equals:Ci(e.assert_json_field_equals),assert_json_field_gte:fd(e.assert_json_field_gte),note:e.note?.trim()||void 0};return en(t),t}function yd(e){if(!(!e||e.length===0))return[...e].map(t=>({path:qe(t.path),scope:t.scope,note:t.note?.trim()||void 0})).sort((t,n)=>{let r=t.scope.localeCompare(n.scope);if(r!==0)return r;let o=t.path.localeCompare(n.path);return o!==0?o:(t.note??"").localeCompare(n.note??"")})}function g(e){if(typeof e!="string")return;let t=e.trim();return t.length>0?t:void 0}function gd(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(n===null||typeof n!="object")continue;let r=n,o=g(r.id),i=g(r.kind);if(!o||!i)continue;let s={id:o,kind:i},a=g(r.note);a&&(s.note=a),r.required_before_step===!0&&(s.required_before_step=!0),t.push(s)}return t.length>0?t:void 0}function bd(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(n===null||typeof n!="object")continue;let r=n,o=g(r.path);if(!o)continue;let i={path:qe(o)};(r.scope==="project"||r.scope==="global")&&(i.scope=r.scope);let s=g(r.note);s&&(i.note=s),t.push(i)}return t.length>0?t:void 0}function wd(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(n===null||typeof n!="object")continue;let r=n,o=g(r.command),i=g(r.path);if(!o&&!i)continue;let s={};o&&(s.command=o),i&&(s.path=qe(i));let a=g(r.note);a&&(s.note=a),t.push(s)}return t.length>0?t:void 0}function Ed(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(n===null||typeof n!="object")continue;let r=n,o=g(r.path);if(!o)continue;let i={path:qe(o)};(r.scope==="project"||r.scope==="global")&&(i.scope=r.scope);let s=g(r.note);s&&(i.note=s),t.push(i)}return t.length>0?t:void 0}function vd(e){if(e===null||typeof e!="object")return;let t=e,n=g(t.id),r=g(t.title),o=g(t.status),i=o&&Rc.has(o)?o:void 0,s=$o(t.order)??Number.NaN,a=typeof t.created_at=="string"?t.created_at:"",c=typeof t.updated_at=="string"?t.updated_at:"";if(!n||!r||!i||!Number.isFinite(s)||!a||!c)return;let d={id:n,order:s,title:r,status:i,created_at:a,updated_at:c};return kd(d,t),d}function kd(e,t){let n=[["body","body"],["owner","owner"],["evidence","evidence"],["blocked_reason","blocked_reason"],["superseded_by","superseded_by"]];for(let[i,s]of n){let a=g(t[s]);a&&(e[i]=a)}let r=typeof t.completed_at=="string"?t.completed_at:void 0;r&&r.length>0&&(e.completed_at=r);let o=[["linked_items","linked_items",gd],["files","files",bd],["tests","tests",wd],["docs","docs",Ed]];for(let[i,s,a]of o){let c=a(t[s]);c&&(e[i]=c)}}function Sd(e){if(!Array.isArray(e))return;let t=e.flatMap(n=>{let r=vd(n);return r?[r]:[]});return t.sort((n,r)=>n.order-r.order),t.length>0?t:void 0}function Id(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(n===null||typeof n!="object")continue;let r=n,o=typeof r.ts=="string"?r.ts:"",i=typeof r.author=="string"?r.author:"",s=g(r.decision);if(!o||!i||!s)continue;let a={ts:o,author:i,decision:s},c=g(r.rationale);c&&(a.rationale=c);let d=g(r.evidence);d&&(a.evidence=d);let u=g(r.step_id);u&&(a.step_id=u),t.push(a)}return t.length>0?t:void 0}function xd(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(n===null||typeof n!="object")continue;let r=n,o=typeof r.ts=="string"?r.ts:"",i=typeof r.author=="string"?r.author:"",s=g(r.text);if(!o||!i||!s)continue;let a={ts:o,author:i,text:s},c=g(r.step_id);c&&(a.step_id=c),t.push(a)}return t.length>0?t:void 0}function Td(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(n===null||typeof n!="object")continue;let r=n,o=g(r.text);if(!o)continue;let i={text:o},s=g(r.command);s&&(i.command=s);let a=g(r.expected);a&&(i.expected=a),t.push(i)}return t.length>0?t:void 0}function Od(e){if(!e)return;let t=Object.entries(e).map(([n,r])=>[n.trim(),r.trim()]).filter(([n,r])=>n.length>0&&r.length>0).sort((n,r)=>n[0].localeCompare(r[0]));if(t.length!==0)return Object.fromEntries(t)}function Be(e){let t=0;for(;t<e.length&&e[t]===`
6
- `;)t+=1;return e.slice(t).trimEnd()}function Cd(e){if(e===void 0)return;if(typeof e=="number")return e;let t=e.trim().toLowerCase();if(t==="med")return"medium";if(Ft.includes(t))return t}function Ad(e){if(e===void 0)return;let t=e.trim().toLowerCase();if(t==="med")return"medium";if(Mt.includes(t))return t}function yt(e){return e||void 0}function Rd(e,t){let n=e,r=t;for(let[o,i]of Object.entries(r))jr(o)||Object.prototype.hasOwnProperty.call(n,o)||i===void 0||(n[o]=i)}function Nd(e,t){if(!t?.fieldRegistry)return;let n=e;for(let r of t.fieldRegistry.definitions){let o=n[r.metadata_key];o!==void 0&&(n[r.metadata_key]=pt(r,o,`metadata field "${r.metadata_key}"`))}}function Dd(e,t){if(!t||t.unknownFieldPolicy==="allow")return;let n=ji(t),o=Object.keys(e).filter(i=>!n.has(i)).sort((i,s)=>i.localeCompare(s));o.length>0&&t.unknownFieldPolicy==="reject"&&_e(`unknown schema fields are not allowed: ${o.join(", ")}`),o.length>0&&t.onWarning?.(`item_unknown_schema_fields:${o.join(",")}`)}function tn(e,t={}){let n=Di(t),r=Yt(e.status,n?.statusRegistry)??e.status,o=Array.from(new Set((Array.isArray(e.tags)?e.tags:[]).filter(s=>typeof s=="string").map(s=>s.trim().toLowerCase()).filter(Boolean))).sort((s,a)=>s.localeCompare(a)),i={id:e.id,title:e.title,description:e.description,type:e.type,pm_format_version:vi(e.pm_format_version),source_type:g(e.source_type),type_options:Od(e.type_options),status:r,priority:e.priority,tags:o,created_at:e.created_at,updated_at:e.updated_at,dependencies:Zc(e.dependencies),comments:Tr(e.comments),notes:Tr(e.notes),learnings:Tr(e.learnings),files:id(e.files),tests:ud(e.tests),test_runs:sd(e.test_runs),docs:yd(e.docs),deadline:yt(e.deadline),reminders:ed(e.reminders),events:nd(e.events),closed_at:yt(e.closed_at),completed_at:yt(e.completed_at),assignee:g(e.assignee),claim_principal:g(e.claim_principal),source_owner:g(e.source_owner),author:yt(e.author),estimated_minutes:e.estimated_minutes,acceptance_criteria:e.acceptance_criteria??void 0,design:e.design??void 0,external_ref:e.external_ref??void 0,definition_of_ready:g(e.definition_of_ready),order:e.order,goal:g(e.goal),objective:g(e.objective),value:g(e.value),impact:g(e.impact),outcome:g(e.outcome),why_now:g(e.why_now),parent:g(e.parent),reviewer:g(e.reviewer),risk:e.risk??void 0,confidence:Cd(e.confidence),sprint:g(e.sprint),release:g(e.release),blocked_by:g(e.blocked_by),blocked_reason:g(e.blocked_reason),unblock_note:g(e.unblock_note),reporter:g(e.reporter),severity:Ad(e.severity),environment:g(e.environment),repro_steps:g(e.repro_steps),resolution:g(e.resolution),expected_result:g(e.expected_result),actual_result:g(e.actual_result),affected_version:g(e.affected_version),fixed_version:g(e.fixed_version),component:g(e.component),regression:e.regression,customer_impact:g(e.customer_impact),close_reason:yt(e.close_reason),plan_mode:g(e.plan_mode),plan_scope:g(e.plan_scope),plan_harness:g(e.plan_harness),plan_resume_context:g(e.plan_resume_context),plan_steps:Sd(e.plan_steps),plan_decisions:Id(e.plan_decisions),plan_discoveries:xd(e.plan_discoveries),plan_validation:Td(e.plan_validation)};return Rd(i,e),Nd(i,n),Dd(i,n),en(i),i}function Pi(e){return I(e,se)}function jd(e){let t=0,n=!1,r=!1;for(let o=0;o<e.length;o+=1){let i=e[o];if(n){if(r){r=!1;continue}if(i==="\\"){r=!0;continue}i==='"'&&(n=!1);continue}if(i==='"'){n=!0;continue}if(i==="{"){t+=1;continue}if(i==="}"&&(t-=1,t===0))return o}return-1}function Pd(e){if(!e.startsWith("{"))return{frontMatter:"",body:e};let t=jd(e);if(t<0)return{frontMatter:"",body:e};let n=e.slice(0,t+1),r=e.slice(t+1).replace(/^\r?\n+/,"");return{frontMatter:n,body:r}}function Ld(e){let t=e.charCodeAt(0)===65279?e.slice(1):e,n=t.match(/^[ \t]*---[ \t]*(?:\r?\n|$)/);if(!n)return{content:t,stripped:!1};let r=n[0].length;for(;r<t.length;){let o=t.indexOf(`
7
- `,r),i=o===-1?t.length:o,s=t.slice(r,i).replace(/\r$/,""),a=o===-1?i:i+1;if(s.trim()==="---")return{content:t.slice(a).replace(/^\s+/,""),stripped:!0};r=a}return{content:t,stripped:!1}}function Nr(e,t){return tn(e,{...t,onWarning:void 0})}function Md(e,t,n={}){let r=Ld(e);r.stripped&&n.onWarning?.("json_markdown_leading_yaml_frontmatter_ignored");let{frontMatter:o,body:i}=Pd(r.content);o||(e.trimStart().startsWith("{")&&gt("json_markdown","JSON front matter is not valid JSON"),gt("json_markdown","JSON Markdown item document is missing JSON front matter"));let s;try{s=JSON.parse(o)}catch{gt("json_markdown","JSON front matter is not valid JSON")}return Rr(s,t),{metadata:Nr(s,n),body:Be(i)}}function Fd(e,t,n={}){let r;try{r=Ir(e).value}catch{gt("toon","TOON item document is not valid TOON")}w(typeof r=="object"&&r!==null&&!Array.isArray(r),"TOON item document must be an object");let o=r;if(!Ni.some(a=>Object.prototype.hasOwnProperty.call(o,a))&&!Object.prototype.hasOwnProperty.call(o,"front_matter")&&gt("toon","TOON input does not have the shape of an item document"),Object.prototype.hasOwnProperty.call(o,"front_matter"))return Rr(o.front_matter,t),w(o.body===void 0||typeof o.body=="string","TOON item document body must be a string"),{metadata:Nr(o.front_matter,n),body:Be(typeof o.body=="string"?o.body:"")};let{body:i,...s}=o;return w(i===void 0||typeof i=="string","TOON item document body must be a string"),Rr(s,t),{metadata:Nr(s,n),body:Be(typeof i=="string"?i:"")}}function $d(e,t={}){let n=tn(e.metadata,t),r=Pi(n),o=JSON.stringify(r,null,2),i=Be(e.body??"");return i?`${o}
8
-
9
- ${i}
10
- `:`${o}
11
- `}function zd(e,t={}){let n=tn(e.metadata,t),r=Pi(n),o=Be(e.body??""),i={...r,body:o},s=JSON.parse(JSON.stringify(i)),a=Oc(s),c;try{c=Ir(a).value}catch(d){throw new k("Refusing to persist a TOON item document that the configured decoder cannot read back.",v.GENERIC_FAILURE,{code:"item_document_roundtrip_failed",reason:"encode_decode_error",format:"toon",required:"Upgrade or repair the TOON codec before retrying the mutation; no item bytes were written.",why:d instanceof Error?d.message:String(d)})}if(!Ti(c,s)){let d=typeof c=="object"&&c!==null&&!Array.isArray(c)?c:{},u=Object.keys(s).find(f=>!Ti(s[f],d[f]))??"document";throw new k(`Refusing to persist a lossy TOON item document; round-trip mismatch at field "${u}".`,v.GENERIC_FAILURE,{code:"item_document_roundtrip_failed",reason:"encode_decode_mismatch",format:"toon",field:u,required:"Upgrade or repair the TOON codec before retrying the mutation; no item bytes were written.",why:"The encoded document decoded to a value different from the canonical item payload."})}return`${a}
12
- `}function nn(e,t={}){let n=Qt(e);if(n)throw new k(`Merge conflict markers detected in item document at line ${n.line} (${n.marker}). Resolve <<<<<<< ======= >>>>>>> markers and retry.`,v.GENERIC_FAILURE,{code:"merge_conflict_markers_detected",reason:"merge_conflict",required:"Resolve merge-conflict markers in the item file before parsing or mutation commands.",why:"Partially merged documents can corrupt item metadata and history integrity.",examples:["git status","git add <resolved-file> && git commit"],nextSteps:["Resolve conflicts, save the file, then rerun the pm command."]});let r=t.format??"toon",o=Di(t);return r==="toon"?Fd(e,o,t):Md(e,o,t)}function Li(e,t={}){return(t.format??"toon")==="toon"?zd(e,t):$d(e,t)}function Q(e,t={}){return{metadata:tn(e.metadata,t),body:Be(e.body??"")}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="999c126a-112a-50f6-b53e-bd36dbc5b885")}catch{}})();async function Xe(e,t){let n=await ce(e);if(n===null)return[];if(await de({path:e,scope:"project"}),n.trim()==="")return[];let r=Qt(n);if(r)throw new k(`History for ${t} contains merge conflict markers at line ${r.line} (${r.marker}). Resolve <<<<<<< ======= >>>>>>> markers and retry.`,v.GENERIC_FAILURE,{code:"history_merge_conflict_markers_detected",required:"Repair the history stream by resolving merge-conflict markers.",why:"Conflict markers break JSONL parsing and invalidate deterministic audit history.",examples:[`pm history ${t}`,`pm restore ${t} <timestamp-or-version>`],nextSteps:["Resolve or restore the history file, then rerun the command."]});let o=[];for(let[i,s]of n.split(/\r?\n/).entries()){let a=s.trim();if(a)try{o.push(JSON.parse(a))}catch{throw new k(`History for ${t} contains invalid JSON at line ${i+1}. Repair or restore the history stream and retry.`,v.GENERIC_FAILURE,{code:"history_json_invalid",nextSteps:[`Run pm history-repair ${t} --salvage-tail --dry-run to check whether only an invalid suffix is damaged.`]})}}return o}import Jr from"fast-json-patch";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="ffaea7bd-daa4-5ff5-8cd5-82ad04e2256e")}catch{}})();function Mi(e){let t=[],n=e[0]?.op==="history_compact_baseline",r=n?1:void 0,o=!1;for(let[i,s]of e.entries())s.op==="delete"&&(o=!0),s.op==="create"&&(r!==void 0&&t.push({prior_genesis_index:r,repeated_create_index:i+1,sequence:o?"delete_then_create":n?"checkpoint_then_create":"multiple_creates"}),r??=i+1,o=!1);return t}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="4d71277c-e16c-56f4-a834-5200acfa6d7a")}catch{}})();import ls from"fast-json-patch";import ss from"node:fs/promises";import Dl from"node:path";import P from"node:fs/promises";import M from"node:path";import{randomUUID as $i}from"node:crypto";import{createRequire as Xd}from"node:module";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="9ad6614e-44bc-549c-915c-6177c3a43c1f")}catch{}})();var Hd=["docs_add","files_add","history:author-acknowledge","history_author_acknowledge","history_compact","history_compact_baseline","history_redact","history_repair","history_salvage","normalize","release","test_run_track","tests_add","tests_remove","update_audit","update_ownership_bypass"],Ud=["append","cancel","claim","close","comment_add","create","learning_add","note_add","reopen"],Vd=new Set(Hd),Wd=new Set(Ud),Bd=new Set(["actual_result","affected_version","assignee","blocked_by","blocked_reason","close_reason","confidence","customer_impact","definition_of_ready","dependencies","docs","environment","expected_result","files","fixed_version","goal","impact","learnings","notes","objective","order","outcome","parent","release","reminders","reporter","repro_steps","resolution","reviewer","severity","sprint","tests","test_runs","unblock_note","updated_at","value","why_now"]);function qd(e){let t=e.path.split("/").filter(Boolean);return t[0]==="metadata"||t[0]==="front_matter"?t[1]:t[0]==="body"?"body":void 0}function Ke(e){return e.event_class==="substantive"||e.event_class==="maintenance"?e.event_class:Vd.has(e.op)?"maintenance":Wd.has(e.op)||e.op!=="update"?"substantive":Array.isArray(e.patch)&&e.patch.length>0&&e.patch.every(t=>{let n=qd(t);return n!==void 0&&Bd.has(n)})?"maintenance":"substantive"}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="72b285a7-970e-5965-bacf-a4e0cfc5f060")}catch{}})();var Kd="history-event-index.sqlite",un="5",Gd=8,Yd="history-event-index",Pr=300,zi=3e4,Jd="history-event-index-invalidation",Qd="history-event-index-invalidations",Zd=Pr*2*1e3,cn=Symbol("history-index-lock-contended"),Ae=new Map;function Ge(e){return M.join(e,"runtime",Kd)}function fn(e){return M.join(e,"runtime",Qd)}async function el(e){let t=await P.readdir(fn(e)).catch(n=>{if(ae(n))return[];throw n});return{pending:t.filter(n=>n.endsWith(".pending")).sort(),committed:t.filter(n=>n.endsWith(".committed")).sort()}}async function dn(e){let t=await el(e);return{pending:(await Promise.all(t.pending.map(async r=>{let o=/^(\d+)-(unknown|\d+)-(\d+)-.+\.pending$/u.exec(r);if(o!==null){let i=o[2];if(await Zo({pid:Number(o[1]),...i==="unknown"?{}:{process_start_identity:i}},Math.max(0,Date.now()-Number(o[3])),Zd))return r}return await P.rm(M.join(fn(e),r),{force:!0}),null}))).filter(r=>r!==null),committed:t.committed}}async function wt(e,t){let n=await K(e,Jd,Pr,`history-event-index-invalidation:${process.pid}`,!1,!1,zi);try{return await t()}finally{await n()}}async function tl(e){let t=fn(e);await P.mkdir(t,{recursive:!0});let n=$i(),r=await Qo(),o=M.join(t,`${r.pid}-${r.process_start_identity??"unknown"}-${Date.now()}-${n}.pending`);return await P.writeFile(o,`pending
13
- `,{flag:"wx"}),{pendingPath:o,committedPath:M.join(t,`${n}.committed`)}}function nl(e,t){return e.length===t.length&&e.every((n,r)=>n===t[r])}async function rn(e){try{await P.rm(Ge(e),{force:!0})}catch{}}async function _n(e,t){let n=await K(e,Yd,Pr,`history-event-index:${process.pid}`,!1,!1,zi);try{return await t()}finally{await n()}}async function Hi(e){let t=M.join(e,"history"),n=await P.readdir(t,{withFileTypes:!0}).catch(s=>{if(typeof s=="object"&&s!==null&&"code"in s&&s.code==="ENOENT")return[];throw s}),r=Ae.get(e)??{streams:new Map,ordered_events:[]},o=new Set,i=!Ae.has(e);for(let s of n.filter(a=>a.isFile()&&a.name.endsWith(".jsonl")).sort((a,c)=>a.name.localeCompare(c.name))){let a=s.name.slice(0,-6);o.add(a);let c=M.join(t,s.name),d=await P.stat(c,{bigint:!0}),u=[d.dev,d.ino,d.size,d.mtimeNs,d.ctimeNs].join(":");if(r.streams.get(a)?.signature===u)continue;let f=await Ui(c,a);r.streams.set(a,{signature:u,byte_size:Number(d.size),events:f.map((p,h)=>({stream_id:a,stream_offset:h,entry:p}))}),i=!0}for(let s of r.streams.keys())o.has(s)||(r.streams.delete(s),i=!0);if(i&&(r.ordered_events=[...r.streams.values()].flatMap(s=>s.events).sort(Lr)),Ae.delete(e),Ae.set(e,r),Ae.size>Gd){let s=Ae.keys().next().value;Ae.delete(s)}return{events:r.ordered_events,stream_byte_sizes:new Map([...r.streams].map(([s,a])=>[s,a.byte_size]))}}async function Ui(e,t){let n=await Xe(e,t);for(let[r,o]of n.entries())if(typeof o.ts!="string"||!ze(o.ts.trim()))throw new k(`History for ${t} contains an invalid or sub-millisecond timestamp at line ${r+1}. Repair or restore the history stream and retry.`,v.GENERIC_FAILURE,{code:"history_timestamp_invalid"});return n.map(r=>({...r,ts:new Date(r.ts.trim()).toISOString()}))}async function rl(e){return(await Hi(e)).events}function ol(e){try{return e(["node","sqlite"].join(":")).DatabaseSync??null}catch{return null}}function il(e,t){let n=Number.parseInt(e,10);return Number.isFinite(n)&&n>=22?ol(t):null}var on;function mn(){return on!==void 0||(on=il(process.versions.node,Xd(import.meta.url))),on}function sl(e){e.exec(`
14
- PRAGMA journal_mode = OFF;
15
- PRAGMA synchronous = OFF;
16
- CREATE TABLE metadata (
17
- key TEXT PRIMARY KEY,
18
- value TEXT NOT NULL
19
- ) STRICT;
20
- CREATE TABLE events (
21
- stream_id TEXT NOT NULL,
22
- stream_offset INTEGER NOT NULL,
23
- ts TEXT NOT NULL,
24
- author TEXT NOT NULL,
25
- agent_harness TEXT,
26
- agent_instance TEXT,
27
- op TEXT NOT NULL,
28
- event_class TEXT NOT NULL CHECK(event_class IN ('substantive', 'maintenance')),
29
- entry_json TEXT NOT NULL,
30
- PRIMARY KEY(stream_id, stream_offset)
31
- ) STRICT;
32
- CREATE TABLE streams (
33
- stream_id TEXT PRIMARY KEY,
34
- byte_size INTEGER NOT NULL CHECK(byte_size >= 0)
35
- ) STRICT;
36
- CREATE INDEX events_order
37
- ON events(ts, stream_id, stream_offset);
38
- CREATE INDEX events_op_order
39
- ON events(op, ts, stream_id, stream_offset);
40
- CREATE INDEX events_class_stream_order
41
- ON events(event_class, stream_id, ts, stream_offset);
42
- CREATE INDEX events_author_order
43
- ON events(author, ts, stream_id, stream_offset);
44
- CREATE INDEX events_harness_order
45
- ON events(agent_harness, ts, stream_id, stream_offset);
46
- CREATE INDEX events_instance_order
47
- ON events(agent_instance, ts, stream_id, stream_offset);
48
- `),e.prepare("INSERT INTO metadata(key, value) VALUES ('version', ?)").run(un)}function Vi(e,t){let n={...t.entry,ts:new Date(t.entry.ts.trim()).toISOString()};e.prepare(`INSERT INTO events(
49
- stream_id, stream_offset, ts, author, agent_harness,
50
- agent_instance, op, event_class, entry_json
51
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(t.stream_id,t.stream_offset,n.ts,n.author,n.agent_harness??null,n.agent_instance??null,n.op,Ke(n),JSON.stringify(n))}function Wi(e){let t=JSON.parse(String(e.entry_json));return typeof t.ts!="string"||!ze(t.ts.trim())?null:{stream_id:String(e.stream_id),stream_offset:Number(e.stream_offset),entry:{...t,ts:new Date(t.ts.trim()).toISOString()}}}function Bi(e,t,n){e.prepare(`INSERT INTO streams(stream_id, byte_size) VALUES (?, ?)
52
- ON CONFLICT(stream_id) DO UPDATE SET byte_size = excluded.byte_size`).run(t,n)}async function al(e){let t=mn();return t?_n(e,async()=>{let n;try{n=await wt(e,()=>dn(e))}catch(s){if(s instanceof k&&s.code==="lock_conflict")return!1;throw s}if(n.pending.length>0)return!1;let r=Ge(e);await P.mkdir(M.dirname(r),{recursive:!0});let o=`${r}.${$i()}.tmp`,i;try{i=new t(o),sl(i),i.exec("BEGIN IMMEDIATE");let s=await Hi(e);for(let c of s.events)Vi(i,c);for(let[c,d]of s.stream_byte_sizes)Bi(i,c,d);i.exec("COMMIT"),i.close(),i=void 0;let a=await wt(e,async()=>{let c=await dn(e);return c.pending.length>0||!nl(n.committed,c.committed)?!1:(await P.rm(r,{force:!0}),await P.rename(o,r),await Promise.all(n.committed.map(d=>P.rm(M.join(fn(e),d),{force:!0}))),!0)});return a||await P.rm(o,{force:!0}),a}catch(s){throw i?.close(),await P.rm(o,{force:!0}),s}}):!1}function sn(e,t){return!t||t.length===0||t.includes(e)}function Lr(e,t){return e.entry.ts.localeCompare(t.entry.ts)||e.stream_id.localeCompare(t.stream_id)||e.stream_offset-t.stream_offset}function ln(e){let t=Date.parse(e);return Number.isFinite(t)?new Date(t).toISOString():e}function cl(e,t){if(t.after_ts!==void 0&&t.after_stream_id!==void 0&&t.after_stream_offset!==void 0){if(Lr(e,{stream_id:t.after_stream_id,stream_offset:t.after_stream_offset,entry:{...e.entry,ts:ln(t.after_ts)}})<=0)return!1}else if(t.since_ts!==void 0&&e.entry.ts<ln(t.since_ts))return!1;return!0}function dl(e,t){return!t.harnesses||t.harnesses.length===0||t.harnesses.includes(e.entry.agent_harness??"")?!0:e.entry.agent_harness===void 0&&(t.harness_alias_authors??[]).includes(e.entry.author)}function ll(e,t){return!cl(e,t)||!sn(e.entry.op,t.ops)||!sn(e.entry.author,t.authors)||!sn(e.entry.agent_instance??"",t.agent_instances)||!sn(e.stream_id,t.stream_ids)||!dl(e,t)?!1:(t.provenance??[]).every(n=>{let r=e.entry.agent_provenance?.[n.dimension]?.value;return r!==void 0&&n.values.includes(r)})}async function Ep(e,t){let n=Math.max(0,Math.floor(t.limit)),r=(await rl(e)).filter(o=>ll(o,t)).slice(0,n+1);return{events:r.slice(0,t.limit),has_more:r.length>t.limit}}async function qi(e,t,n){let r=M.dirname(M.dirname(e)),o=mn();if(!o){await n();return}let i=!1;try{await _n(r,async()=>{let s=Ge(r);try{await P.access(s)}catch{await n();return}let a;try{if(a=new o(s),a.prepare("SELECT value FROM metadata WHERE key = 'version'").get()?.value!==un)throw new TypeError("Unsupported history event index version")}catch{a?.close(),await P.rm(s,{force:!0}),await n();return}try{a.exec("PRAGMA busy_timeout = 5000"),a.exec("BEGIN IMMEDIATE")}catch(d){throw a.close(),d}let c=!1;try{await n(),c=!0,i=!0;let d=M.basename(e,".jsonl"),u=a.prepare("SELECT COALESCE(MAX(stream_offset), -1) + 1 AS value FROM events WHERE stream_id = ?").get(d);Vi(a,{stream_id:d,stream_offset:Number(u.value),entry:t}),Bi(a,d,(await P.stat(e)).size),a.exec("COMMIT"),a.close()}catch(d){if(a?.close(),!c)throw d;await rn(r)}})}catch(s){if(i){await rn(r);return}if(!(s instanceof k)||s.code!=="lock_conflict")throw s;let a;try{await wt(r,async()=>{let c=await tl(r);a=c.pendingPath;try{await n(),i=!0}catch(d){throw await P.rm(c.pendingPath,{force:!0}),d}await P.rename(c.pendingPath,c.committedPath),await rn(r)})}catch(c){if(i){await rn(r);try{await P.rm(a,{force:!0})}catch{}return}throw c}}}async function Mr(e){await P.rm(Ge(M.dirname(M.dirname(e))),{force:!0})}function an(e,t,n,r){!r||r.length===0||(e.push(`${n} IN (${r.map(()=>"?").join(", ")})`),t.push(...r))}function ul(e,t,n,r){if(!n||n.length===0)return;let o=n.map(()=>"?").join(", "),i=r??[];if(i.length>0){e.push(`(agent_harness IN (${o}) OR (agent_harness IS NULL AND author IN (${i.map(()=>"?").join(", ")})))`),t.push(...n,...i);return}e.push(`agent_harness IN (${o})`),t.push(...n)}async function vp(e,t){let n=mn();if(!n)return null;let r=[],o=[];if(t.after_ts!==void 0&&t.after_stream_id!==void 0&&t.after_stream_offset!==void 0){r.push("(ts > ? OR (ts = ? AND stream_id > ?) OR (ts = ? AND stream_id = ? AND stream_offset > ?))");let a=ln(t.after_ts);o.push(a,a,t.after_stream_id,a,t.after_stream_id,t.after_stream_offset)}else t.since_ts!==void 0&&(r.push("ts >= ?"),o.push(ln(t.since_ts)));an(r,o,"op",t.ops),an(r,o,"author",t.authors),ul(r,o,t.harnesses,t.harness_alias_authors),an(r,o,"agent_instance",t.agent_instances);for(let a of t.provenance??[])r.push(`json_extract(entry_json, '$.agent_provenance.${a.dimension}.value') IN (${a.values.map(()=>"?").join(", ")})`),o.push(...a.values);an(r,o,"stream_id",t.stream_ids);let i=r.length===0?"":` WHERE ${r.join(" AND ")}`,s;try{return await _n(e,async()=>wt(e,async()=>{let a=await dn(e);if(a.pending.length>0||a.committed.length>0)return null;s=new n(Ge(e),{readOnly:!0});let c=s.prepare("SELECT value FROM metadata WHERE key = 'version'").get(),d=await _l(s,e,t.stream_ids);if(c?.value!==un||!await Ki(s,e,d))return s.close(),s=void 0,null;let u=s.prepare(`SELECT stream_id, stream_offset, entry_json
53
- FROM events${i}
54
- ORDER BY ts, stream_id, stream_offset
55
- LIMIT ?`).all(...o,Math.max(0,Math.floor(t.limit))+1),f=u.slice(0,t.limit).map(Wi);return s.close(),s=void 0,f.includes(null)?null:{events:f,has_more:u.length>t.limit}}))}catch{return s?.close(),null}}function Xi(e,t){let n=Object.create(null);for(let r of e){if(!t.has(r.stream_id)||Ke(r.entry)!=="substantive")continue;let o=n[r.stream_id];(o===void 0||Lr(o,r)<0)&&(n[r.stream_id]=r)}return n}async function fl(e,t){if(M.basename(t)!==t)return null;try{return(await P.stat(M.join(e,"history",`${t}.jsonl`))).size}catch(n){if(ae(n))return 0;throw n}}async function Ki(e,t,n){for(let r=0;r<n.length;r+=500){let o=n.slice(r,r+500),i=new Map(e.prepare(`SELECT stream_id, byte_size FROM streams
56
- WHERE stream_id IN (${o.map(()=>"?").join(", ")})`).all(...o).map(a=>[String(a.stream_id),Number(a.byte_size)])),s=await Promise.all(o.map(a=>fl(t,a)));for(let[a,c]of s.entries()){if(c===null)return!1;let d=o[a],u=i.get(d);if(!(c===0&&u===void 0)&&c!==u)return!1}}return!0}async function _l(e,t,n){if(n&&n.length>0)return[...new Set(n.filter(i=>i.trim().length>0))];let r=e.prepare("SELECT stream_id FROM streams").all().map(i=>String(i.stream_id)),o=await P.readdir(M.join(t,"history"),{withFileTypes:!0}).then(i=>i.filter(s=>s.isFile()&&s.name.endsWith(".jsonl")).map(s=>s.name.slice(0,-6))).catch(i=>{if(ae(i))return[];throw i});return[...new Set([...r,...o])]}async function Fi(e,t,n,r){if(!e)return null;let o;try{return await _n(t,async()=>wt(t,async()=>{let i=await dn(t);if(i.pending.length>0||i.committed.length>0)return null;if(o=new e(Ge(t),{readOnly:!0}),o.prepare("SELECT value FROM metadata WHERE key = 'version'").get()?.value!==un||!await Ki(o,t,n))return o.close(),o=void 0,null;let a=[];for(let c=0;c<n.length;c+=500){let d=n.slice(c,c+500),f=o.prepare(`SELECT stream_id, stream_offset, entry_json
57
- FROM (
58
- SELECT stream_id, stream_offset, entry_json,
59
- ROW_NUMBER() OVER (
60
- PARTITION BY stream_id
61
- ORDER BY ts DESC, stream_offset DESC
62
- ) AS recency_rank
63
- FROM events
64
- WHERE event_class = 'substantive'
65
- AND stream_id IN (${d.map(()=>"?").join(", ")})
66
- )
67
- WHERE recency_rank = 1`).all(...d).map(Wi);if(f.includes(null))return o.close(),o=void 0,null;a.push(...f)}return o.close(),o=void 0,Xi(a,r)}))}catch(i){return o?.close(),i instanceof k&&i.code==="lock_conflict"?cn:null}}async function kp(e,t){let n=[...new Set(t.filter(a=>a.trim().length>0&&M.basename(a)===a))];if(n.length===0)return{};let r=new Set(n),o=mn(),i=await Fi(o,e,n,r);if(i!==null&&i!==cn)return i;if(o&&i!==cn)try{if(await al(e)){let a=await Fi(o,e,n,r);if(a!==null&&a!==cn)return a}}catch{}let s=[];return await Promise.all(n.map(async a=>{let c=M.join(e,"history",`${a}.jsonl`);(await Ui(c,a).catch(u=>{if(u instanceof k&&u.code==="history_timestamp_invalid")return[];throw u})).forEach((u,f)=>{s.push({stream_id:a,stream_offset:f,entry:u})})})),Xi(s,r)}import Wr from"node:fs/promises";import Je from"node:path";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="a3e0573a-01fd-54fb-a568-51c5287b696c")}catch{}})();var pn="changed_fields",ml="changed_field_count",Fr="rows",pl=new Set(["apply","rollback"]),Ji=new Set(["deleted","would_delete"]),Gi=256;function Yi(e){return typeof e!="string"||e.length<=Gi?e:`${e.slice(0,Gi-1)}\u2026`}function hl(e){if(!ie(e))return null;let t={...e};return t.reason=Yi(t.reason),ie(t.previous_terminal)&&(t.previous_terminal=Object.fromEntries(Object.entries(t.previous_terminal).map(([n,r])=>[n,Yi(r)]))),t}function ie(e){if(typeof e!="object"||e===null||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function Qi(e){let t=e[pn];if(!Array.isArray(t))return null;let n=Object.getPrototypeOf(e)===null?Object.create(null):{};for(let[r,o]of Object.entries(e))r!==pn&&(n[r]=o);return n[ml]=t.length,n}function yl(e){return"item"in e&&Array.isArray(e[pn])}function gl(e){return typeof e.mode=="string"&&pl.has(e.mode)&&Array.isArray(e[Fr])}function bl(e,t){let n=Object.getPrototypeOf(e)===null?Object.create(null):{};return Object.assign(n,e),n[Fr]=t,n}function wl(e){if(!ie(e))return null;let t=ie(e.item)?e.item:ie(e.plan)?e.plan:null;if(t===null)return null;let n=typeof t.id=="string"?t.id:void 0,r=typeof e.outcome=="string"&&Ji.has(e.outcome)?e.outcome:typeof t.status=="string"?t.status:void 0;return n?r?{id:n,status:r,...typeof e.deleted=="boolean"?{deleted:e.deleted}:{}}:{id:n}:null}function El(e){if(!ie(e)||!ie(e.item)||typeof e.item.id!="string")return null;let t=e[pn];if(!Array.isArray(t))return null;let n={id:e.item.id,...typeof e.outcome=="string"&&Ji.has(e.outcome)?{status:e.outcome}:typeof e.item.status=="string"?{status:e.item.status}:{},...typeof e.deleted=="boolean"?{deleted:e.deleted}:{},...typeof e.previous_status=="string"?{previous_status:e.previous_status}:{},changed_field_count:t.length},r=typeof e.close_reason=="string"?e.close_reason:typeof e.item.close_reason=="string"?e.item.close_reason:void 0;r!==void 0&&(n.close_reason=r);let o=hl(e.recurrence);return o!==null&&(n.recurrence=o),Array.isArray(e.warnings)&&e.warnings.length>0&&(n.warnings=e.warnings),n}function vl(e){let t=gl(e)?e[Fr]:void 0;if(!Array.isArray(t))return{projected:e,changed:!1};let n=!1,r=t.map(o=>{if(!ie(o))return o;let i=Qi(o);return i?(n=!0,i):o});return n?{projected:bl(e,r),changed:!0}:{projected:e,changed:!1}}function kl(e,t={}){if(t.idOnly===!0){let a=wl(e);if(a!==null)return a}if(t.compactEnvelope===!0){let a=El(e);if(a!==null)return a}if((t.changedFields??"full")==="full"||!ie(e))return e;let r=!1,o=e,i=yl(e)?Qi(e):null;i!==null&&(o=i,r=!0);let s=vl(o);return s.changed&&(o=s.projected,r=!0),r?o:e}import{encode as ts}from"@toon-format/toon";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="fa89762b-915f-5ef0-a091-f05338c11683")}catch{}})();var Bp=new Set(Object.values(v));var Zi=!1;function Ye(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function $r(e){return typeof e=="object"&&e!==null&&e.code==="EPIPE"}function Sl(){(process.exitCode===void 0||process.exitCode===v.SUCCESS)&&(process.exitCode=v.SUCCESS)}function Il(){(process.exitCode===void 0||process.exitCode===v.SUCCESS)&&(process.exitCode=v.GENERIC_FAILURE)}function zr(e){if(e==="stdout"){Sl();return}Il()}function es(e){let t=e instanceof Error?e:new Error(String(e));setImmediate(()=>{throw t})}function xl(){Zi||(Zi=!0,process.stdout.on("error",e=>{if($r(e)){zr("stdout");return}es(e)}),process.stderr.on("error",e=>{if($r(e)){zr("stderr");return}es(e)}))}function Tl(e,t){xl();try{return e==="stdout"?process.stdout.write(t):process.stderr.write(t),!0}catch(n){if($r(n))return zr(e),!1;throw n}}function hn(e){return Tl("stderr",e)}function Hr(e){return typeof e=="string"?JSON.stringify(e):typeof e=="number"||typeof e=="boolean"?String(e):e===null?"null":JSON.stringify(e)}function Ol(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function ns(e){if(e.length===0||!e.every(Ye))return!1;let t=Object.keys(e[0]);return t.length>0&&e.every(n=>Object.keys(n).length===t.length&&t.every(r=>Object.hasOwn(n,r)&&Ol(n[r])))}function rs(e,t){let n=" ".repeat(t);return e.split(`
68
- `).map(r=>`${n}${r}`).join(`
69
- `)}function Cl(e,t,n){let r=" ".repeat(n);return!Ye(t)&&!Array.isArray(t)?`${r}${e}: ${Hr(t)}`:Array.isArray(t)&&t.length===0?`${r}${e}: []`:Array.isArray(t)&&ns(t)?rs(ts({[e]:t}),n):Ye(t)&&Object.keys(t).length===0?`${r}${e}: {}`:`${r}${e}:
70
- ${Vr(t,n+1)}`}function Ur(e){if(e!=null){if(Array.isArray(e)){let t=e.map(n=>Ur(n)).filter(n=>n!==void 0);return t.length>0?t:void 0}if(Ye(e)){let t={};for(let[n,r]of Object.entries(e)){if(n==="omitted_field_groups"&&Array.isArray(r)&&r.length===0){t[n]=[];continue}let o=Ur(r);o!==void 0&&(t[n]=o)}return Object.keys(t).length>0?t:void 0}return e}}function Vr(e,t){let n=" ".repeat(t);if(Array.isArray(e))return e.length===0?"[]":ns(e)?rs(ts(e),t):e.map(r=>{if(!Ye(r)&&!Array.isArray(r))return`${n}- ${Hr(r)}`;let i=Vr(r,t+1).split(`
71
- `),[s,...a]=i;return a.length===0?`${n}- ${s.trimStart()}`:`${n}- ${s.trimStart()}
72
- ${a.join(`
73
- `)}`}).join(`
74
- `);if(Ye(e)){let r=Object.entries(e);return r.length===0?"{}":r.map(([o,i])=>Cl(o,i,t)).join(`
75
- `)}return`${n}${Hr(e)}`}function qp(e,t){if(t==="json")return`${JSON.stringify(e,null,2)}
76
- `;let n=Ur(e);return n===void 0?`{}
77
- `:`${Vr(n,0)}
78
- `}function Xp(e){let t=Go("error_format",{message:e}),n=t.handled&&typeof t.result=="string"?t.result:e;hn(n.endsWith(`
79
- `)?n:`${n}
80
- `)}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="5121b339-6594-58ec-b479-11cbf7dafd27")}catch{}})();var Al=Je.join("runtime","history-drift-cache.json"),os={EINVAL:"invalid_cache_path",EISDIR:"cache_path_is_directory",ENOENT:"invalid_cache_path",ENOTDIR:"invalid_cache_path",ERR_FS_EISDIR:"cache_path_is_directory"};function is(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"?e.code:void 0}async function Rl(e){let t=Je.join(e,Al),n=!1,r="invalid_cache_path";try{n=(await Wr.stat(await Wr.realpath(e))).isDirectory()}catch(o){let i=is(o);r=i===void 0?"unknown":os[i]??"filesystem_error"}if(!n){hn(`[pm] warning: history_drift_cache_invalidation_failed:${r}
81
- `);return}try{await Wr.rm(t,{force:!0})}catch(o){let i=is(o);if(ae(o))return;let s=i===void 0?"unknown":os[i]??"filesystem_error";hn(`[pm] warning: history_drift_cache_invalidation_failed:${s}
82
- `)}}async function yn(e){let t=Je.dirname(Je.resolve(e));Je.basename(t)==="history"&&await Rl(Je.dirname(t))}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="a5449fec-c5b4-5cf4-9a7f-b7c5dc7161c2")}catch{}})();var jl={front_matter:{},body:""},Re=3,Et=[1,2,3],Pl=1,Ll=[1];function us(e){return J(j(e))}function Qe(e){return J(j(e))}function ph(e){return J(j(e))}function Kr(e){let t={...e,record_hash_version:Pl},{record_hash:n,...r}=t;return{...t,record_hash:us(r)}}function wn(e){if(e.record_hash_version===void 0&&e.record_hash===void 0)return{ok:!0,coverage:"item_state_only"};if(e.record_hash_version===void 0||e.record_hash===void 0)return{ok:!1,error:"incomplete_record_hash_envelope"};if(!Ll.includes(e.record_hash_version))return{ok:!1,error:"unsupported_record_hash_version"};let{record_hash:t,...n}=e;return us(n)===e.record_hash?{ok:!0,coverage:"record_and_item_state"}:{ok:!1,error:"record_hash_mismatch"}}function Ml(e,t){let n={before_hash:e.before_hash,after_hash:e.after_hash,patch_hash:Qe(e.patch)};return e.item_hash_version!==void 0&&(n.item_hash_version=e.item_hash_version),t.retainOriginalPatch&&(n.patch=structuredClone(e.patch)),t.retainPriorRecordHash!==!1&&e.record_hash_version!==void 0&&e.record_hash!==void 0&&(n.record_hash_version=e.record_hash_version,n.record_hash=e.record_hash,n.record=structuredClone(e)),n}function fs(e,t,n={}){let r=wn(e);if(!r.ok)throw new TypeError(r.error);let o=Qe(e.patch),i=n.retainPriorRecord===!0||e.before_hash!==t.before_hash||e.after_hash!==t.after_hash||e.item_hash_version!==t.item_hash_version||o!==Qe(t.patch),s=Kr({...t,...i?{reanchor_evidence:[...t.reanchor_evidence??[],Ml(e,n)]}:{}}),a=Gr(s);if(!a.ok)throw new TypeError(a.error);return s}function _s(e){return!Array.isArray(e)||Object.keys(e).length!==e.length?!1:e.every(t=>!Ne(t)||typeof t.path!="string"?!1:t.op==="move"||t.op==="copy"?typeof t.from=="string":["add","replace","test"].includes(t.op)?Object.hasOwn(t,"value"):t.op==="remove")}function Fl(e){return Ne(e)&&typeof e.ts=="string"&&typeof e.author=="string"&&typeof e.op=="string"&&typeof e.before_hash=="string"&&typeof e.after_hash=="string"&&_s(e.patch)}function $l(e){let t=e.record_hash_version!==void 0,n=e.record_hash!==void 0;return t===n}function zl(e){return!Ne(e)||!$l(e)||typeof e.before_hash!="string"||typeof e.after_hash!="string"||typeof e.patch_hash!="string"||!/^[a-f0-9]{64}$/u.test(e.patch_hash)||e.patch!==void 0&&!_s(e.patch)||e.record_hash_version!==void 0&&typeof e.record_hash_version!="number"||e.record_hash!==void 0&&(typeof e.record_hash!="string"||!/^[a-f0-9]{64}$/u.test(e.record_hash))?!1:e.record===void 0||Fl(e.record)}function Hl(e){let t=e.record;return t!==void 0&&t.before_hash===e.before_hash&&t.after_hash===e.after_hash&&t.item_hash_version===e.item_hash_version&&t.record_hash_version===e.record_hash_version&&t.record_hash===e.record_hash&&Qe(t.patch)===e.patch_hash}function Ul(e,t,n){if(t.patch&&Qe(t.patch)!==t.patch_hash)return{kind:"patch_hash_mismatch"};if(t.record)return Hl(t)?{kind:"record",entry:t.record}:{kind:"record_hash_mismatch"};let r=t.patch??e.patch;if(Qe(r)!==t.patch_hash)return{kind:"digest_only"};let o={...e,before_hash:t.before_hash,after_hash:t.after_hash,patch:r,...t.item_hash_version===void 0?{}:{item_hash_version:t.item_hash_version},...t.record_hash_version===void 0?{}:{record_hash_version:t.record_hash_version},...t.record_hash===void 0?{}:{record_hash:t.record_hash},...n.length===0?{}:{reanchor_evidence:n}};return n.length===0&&delete o.reanchor_evidence,t.item_hash_version===void 0&&delete o.item_hash_version,t.record_hash_version===void 0||t.record_hash===void 0?{kind:"legacy",entry:o}:{kind:"record",entry:o}}function Gr(e){let t=e.reanchor_evidence;if(t===void 0)return{ok:!0,coverage:"none"};if(!Array.isArray(t))return{ok:!1,error:"rewrite_evidence_invalid"};if(t.length===0)return{ok:!0,coverage:"none"};let n=e;for(let r=t.length-1;r>=0;r-=1){let o=t[r];if(!(r in t)||!zl(o))return{ok:!1,error:"rewrite_evidence_invalid"};let i=Ul(n,o,t.slice(0,r));if(i.kind==="patch_hash_mismatch")return{ok:!1,error:"rewrite_evidence_patch_hash_mismatch"};if(i.kind==="record_hash_mismatch")return{ok:!1,error:"rewrite_evidence_record_hash_mismatch"};if(i.kind==="digest_only")return{ok:!0,coverage:"digest_only"};if(i.kind==="legacy")return{ok:!0,coverage:"legacy_anchor_only"};if(!wn(i.entry).ok)return{ok:!1,error:"rewrite_evidence_record_hash_mismatch"};n=i.entry}return{ok:!0,coverage:"complete"}}function gn(e,t){return(e??"").localeCompare(t??"")}function as(e,t){return(e??0)-(t??0)}function me(e,t,n){return JSON.stringify(e??n).localeCompare(JSON.stringify(t??n))}function Vl(e,t){return[e.scope.localeCompare(t.scope),gn(e.path,t.path),gn(e.command,t.command),as(e.timeout_seconds,t.timeout_seconds),gn(e.pm_context_mode,t.pm_context_mode),+!!e.shared_host_safe-+!!t.shared_host_safe,me(e.env_clear,t.env_clear,[]),me(e.env_set,t.env_set,{}),me(e.assert_stdout_contains,t.assert_stdout_contains,[]),me(e.assert_stdout_regex,t.assert_stdout_regex,[]),me(e.assert_stderr_contains,t.assert_stderr_contains,[]),me(e.assert_stderr_regex,t.assert_stderr_regex,[]),as(e.assert_stdout_min_lines,t.assert_stdout_min_lines),me(e.assert_json_field_equals,t.assert_json_field_equals,{}),me(e.assert_json_field_gte,t.assert_json_field_gte,{}),gn(e.note,t.note)].find(r=>r!==0)??0}function Wl(e){return!e||e==="/"?[]:e.startsWith("/")?e.slice(1).split("/").map(t=>t.replaceAll("~1","/").replaceAll("~0","~")):[]}function Bl(e,t){let n=Wl(t);if(n.length===0)return!0;let r=e;for(let o of n){let i=/^(0|[1-9]\d*)$/.test(o)?Number(o):-1,s=Array.isArray(r)?i>=0&&i<r.length?r[i]:void 0:Ne(r)&&Object.prototype.hasOwnProperty.call(r,o)?r[o]:void 0;if(s===void 0)return!1;r=s}return!0}function ql(e,t){let n=[],r=structuredClone(e);for(let o of t){let i=o.op==="replace"&&!Bl(r,o.path)?{...o,op:"add"}:o;n.push(i),r=ls.applyPatch(r,[i],!0,!0).newDocument}return n}function bn(e,t,n=!1){if(!(e.metadata&&Object.keys(e.metadata).length>0))return{front_matter:{},body:e.body??""};let o=Q(e),s=t===1||t===2&&n?{...o.metadata,...o.metadata.dependencies===void 0?{}:{dependencies:o.metadata.dependencies.map(d=>({...d,id:d.id.toLowerCase()}))},...o.metadata.tests===void 0?{}:{tests:o.metadata.tests.map(({workspace_context_mode:d,provenance:u,provenance_invalid:f,...p})=>p)},...o.metadata.test_runs===void 0?{}:{test_runs:o.metadata.test_runs.map(({executions:d,...u})=>u)}}:o.metadata,a=t===1&&s.tests?{...s,tests:[...s.tests].sort(Vl)}:s;return{front_matter:I(a,se),body:o.body}}function cs(e){if(!(e.metadata&&Object.keys(e.metadata).length>0))return{metadata:{},body:e.body??""};let n=Q(e);return{metadata:I(n.metadata,se),body:n.body}}function hh(e){return ms(e,Re)}function ms(e,t){if(!Et.some(n=>n===t))throw new TypeError(`unsupported_item_hash_version:${String(t)}`);return J(j(bn(e,t)))}function ps(e,t){let n=ms(e,t);return t===2?[n,J(j(bn(e,t,!0)))]:[n]}function yh(){return J(j(jl))}function Ze(e){let t=bn(e.before,Re),n=bn(e.after,Re),r=cs(e.before),o=cs(e.after),i=ls.compare(r,o),s=ql(r,i),a=gi(e.author),c=a.harness?Object.fromEntries(Object.entries(hi().provenance_outcomes).filter(([,f])=>f.resolver!==void 0&&f.status!=="resolved")):void 0,d=c===void 0||Object.keys(c).length===0?e.context:{...e.context,agent_provenance_outcomes:c},u={ts:e.nowIso,author:e.author,author_source:e.authorSource??yi(e.author),...a.harness?{agent_harness:a.harness}:{},...a.model?{agent_model:a.model}:{},...a.model_source?{agent_model_source:a.model_source}:{},...a.instance?{agent_instance:a.instance}:{},...a.provenance?{agent_provenance:a.provenance}:{},...a.episode?{agent_episode:a.episode}:{},op:e.op,patch:s,before_hash:J(j(t)),after_hash:J(j(n)),item_hash_version:Re,message:e.message===void 0?void 0:e.message,...d===void 0?{}:{context:d}};return Kr({...u,event_class:Ke(u)})}function Ne(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Br(e){return new k(e,v.GENERIC_FAILURE,{code:"history_timestamp_invalid"})}function hs(e){let t=e.ts.trim();if(t.length===0)return le();if(!ze(t))throw Br("History timestamp must be a valid RFC 3339 date-time with millisecond precision");if(t!==e.ts)throw Br("History timestamp must not contain surrounding whitespace");return e.ts}function ds(e,t){let n=e.ts;if(typeof n=="string"&&n.trim().length>0){if(!ze(n))throw Br("History timestamp must be a valid RFC 3339 date-time with millisecond precision");return e}return{...e,ts:t}}function qr(e,t){let n=hs(t);if(typeof e=="string"){let r;try{r=JSON.parse(e)}catch{return e}return Ne(r)?JSON.stringify(ds(r,n)):e}return Ne(e)?JSON.stringify(ds(e,n)):JSON.stringify(e)}async function Xl(e,t,n){if(n===!1)return!0;if(typeof n=="string"){let s=qr(n,t);return await Xr(e,s),await yn(e),await Mr(e),!0}if(typeof n!="object"||n===null)return!1;let r=n;if(r.skip===!0)return!0;let o=typeof r.history_path=="string"?r.history_path:e,i=qr(typeof r.line=="string"?r.line:r.entry??t,t);return await Xr(o,i),await yn(o),await Mr(o),!0}async function Xr(e,t){let n;try{n=JSON.parse(t)}catch{n=null}if(!Ne(n)||n.op!=="create"){await Po(e,t);return}await ss.mkdir(Dl.dirname(e),{recursive:!0});try{await ss.writeFile(e,`${t}
83
- `,{encoding:"utf8",flag:"wx"})}catch(r){throw r.code!=="EEXIST"?r:new k("This item identity is reserved by an existing history stream.",v.CONFLICT,{code:"item_identity_reserved",required:"Choose a new item ID or restore the original item from its history.",nextSteps:["Run pm history <id> --full, then pm restore <id> <version> to recover the original item."]})}}async function et(e,t){let n=await mt("history_append",{history_path:e,entry:t});if(n.handled&&await Xl(e,t,n.result))return;let r=t.ts.trim().length>0?t:{...t,ts:hs(t)},o=Kr({...r,event_class:Ke(r)});await qi(e,o,async()=>{await Xr(e,qr(o,o))}),await yn(e)}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="b0230e20-93c4-531c-9cc1-85f85c1def7a")}catch{}})();var Kl={metadata:{},body:""};function En(){return structuredClone(Kl)}function xh(e,t=Re){return Yr(e,t)[0]}function Yr(e,t){if(Object.keys(e.metadata).length===0||Array.isArray(e.metadata.tags))try{return ps(vn(e),t)}catch{}let n=J(j({replay_fallback:!0,metadata:e.metadata,body:e.body}));return t===2?[n,n]:[n]}function bs(e,t,n,r){let o=Yr(e,n),i=Yr(t,n);return{beforeHashes:o,afterHashes:i,pairIndex:o.findIndex((s,a)=>s===r.before_hash&&i[a]===r.after_hash),beforeIndex:o.indexOf(r.before_hash),afterIndex:i.indexOf(r.after_hash)}}function vn(e){return{metadata:e.metadata,body:e.body}}function Th(e,t={}){return Q(vn(e),t)}function Oh(e){if(!e.metadata||Object.keys(e.metadata).length===0)return{metadata:{},body:e.body??""};let t=Q(e);return{metadata:I(t.metadata,se),body:t.body}}function ys(e){return e==="/front_matter"?"/metadata":e.startsWith("/front_matter/")?`/metadata/${e.slice(14)}`:e}function Gl(e){return typeof e=="object"&&e!==null&&typeof e.op=="string"&&typeof e.path=="string"}function ws(e){return Array.isArray(e)?e.filter(Gl).map(t=>({...t,path:ys(t.path),from:typeof t.from=="string"?ys(t.from):void 0})):[]}function Yl(e){return typeof e=="object"&&e!==null&&"metadata"in e&&"body"in e&&typeof e.body=="string"&&typeof e.metadata=="object"&&e.metadata!==null}function kn(e,t){try{let n=ws(t),r=Jr.applyPatch(structuredClone(e),n,!0,!1).newDocument;return Yl(r)?{ok:!0,document:{metadata:r.metadata,body:r.body}}:{ok:!1,error:new Error("history_replay_invalid_document_shape")}}catch(n){return{ok:!1,error:n}}}function Jl(e){return[...new Set(e.map(t=>t.item_hash_version).filter(t=>t!==void 0&&Et.includes(t)))]}function Es(e){return e!==void 0&&!Et.includes(e)}function Ql(e,t){return e!==void 0?[e]:t===void 0?[...Et]:[t]}function vs(e){let t=wn(e);if(!t.ok)return t.error;let n=Gr(e);return n.ok?void 0:n.error}function Zl(e,t){let n=vs(e);if(n)return{ok:!1,error:n};let r=kn(t,e.patch);return r.ok?{ok:!0,document:r.document}:{ok:!1,error:"patch_apply_failed"}}function eu(e,t){let n=vs(e);if(n)throw new TypeError(`${n}:entry_${t+1}`)}function ks(e){let t=En(),n,r,o=Mi(e).map(i=>`verify_failed:duplicate_create:entry_${i.repeated_create_index}:prior_${i.prior_genesis_index}`);for(let i=0;i<e.length;i+=1){let s=e[i],a=s.item_hash_version,c=Es(a);c&&o.push(`verify_failed:unsupported_item_hash_version:${String(a)}:entry_${i+1}`);let d=Zl(s,t);if(!d.ok)return{ok:!1,errors:[...o,`verify_failed:${d.error}:entry_${i+1}`]};if(c){t=d.document,n=void 0,r=void 0;continue}let f=Ql(a,r).map(_=>({version:_,match:bs(t,d.document,_,s)})),p=f.find(({match:_})=>_.pairIndex>=0);if(p===void 0){let _=f.some(({match:E})=>E.beforeIndex>=0);return{ok:!1,errors:[...o,`verify_failed:${_?"after":"before"}_hash_mismatch:entry_${i+1}`]}}let h=p.version;t=d.document,n=h,r=a??r}return o.length>0?{ok:!1,errors:o,...n===void 0?{}:{item_hash_version:n}}:{ok:!0,errors:[],...n===void 0?{}:{item_hash_version:n}}}function Sn(e){let t=ks(e);return{ok:t.ok,errors:t.errors}}function gs(e,t){try{return{ok:!0,document:Jr.applyPatch(structuredClone(e),[t],!0,!1).newDocument}}catch{return{ok:!1}}}function tu(e,t){let n=structuredClone(e),r=0,o=0;for(let a of ws(t)){let c=gs(n,a);if(c.ok){n=c.document;continue}if(a.op==="replace"){let d=gs(n,{...a,op:"add"});if(d.ok){n=d.document,r+=1;continue}}o+=1}let i=n;return{document:{metadata:typeof i.metadata=="object"&&i.metadata!==null?i.metadata:{},body:typeof i.body=="string"?i.body:e.body},convertedReplaceToAdd:r,skippedOps:o}}function nu(e){let t=Jl(e);if(t.length===1)return t[0];let n=ks(e);return n.ok&&n.item_hash_version!==void 0?n.item_hash_version:t.length===0?1:Re}function ru(e,t){let n=kn(e,t.patch);if(n.ok)return{next:n.document,patch:t.patch,repaired:!1,converted:0,skipped:0};let r=tu(e,t.patch);return{next:r.document,patch:Jr.compare(e,r.document),repaired:!0,converted:r.convertedReplaceToAdd,skipped:r.skippedOps}}function Ch(e,t=nu(e),n={}){let r=e.findIndex(h=>Es(h.item_hash_version));if(r>=0)throw new TypeError(`unsupported_item_hash_version:${String(e[r]?.item_hash_version)}:entry_${r+1}`);let o=En(),i=[],s=[],a=0,c=0,d=0,u=0,f,p=t!==1||e.some(h=>h.item_hash_version!==void 0);for(let h=0;h<e.length;h+=1){let _=e[h];eu(_,h);let E=ru(o,_),{next:S,patch:C,repaired:D,converted:F,skipped:$}=E;d+=F,u+=$,c+=Number(D);let U=bs(o,S,t,_);f===void 0||n.continuousHashSurface!==!0?f=[U.pairIndex,U.beforeIndex,U.afterIndex,Math.min(f??0,U.beforeHashes.length-1)].find(xo=>xo>=0):f=Math.min(f,U.beforeHashes.length-1);let Le=U.beforeHashes[f],W=U.afterHashes[f],Ee=Le!==_.before_hash||W!==_.after_hash;Ee&&(a+=1);let Y={..._,patch:C,before_hash:Le,after_hash:W};p?Y.item_hash_version=t:delete Y.item_hash_version;let Me=Y.item_hash_version!==_.item_hash_version;(Ee||D||Me)&&(Y=fs(_,Y,{retainOriginalPatch:D})),i.push(Y),s.push({index:h+1,rehashed:Ee,patch_repaired:D,converted_replace_to_add:F,skipped_ops:$}),o=S}return{entries:i,finalDocument:o,entriesRehashed:a,entriesPatchRepaired:c,convertedReplaceToAdd:d,skippedOps:u,details:s,itemHashVersion:t,explicitItemHashVersion:p}}function Ah(e){return e.length===0?"":`${e.map(t=>JSON.stringify(t)).join(`
84
- `)}
85
- `}import ou from"node:crypto";import In from"node:path";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="04f02467-a4ee-5616-9fbf-3df1141efccf")}catch{}})();function Is(e){let t=[],n=!1;for(let r of(e??"").toLowerCase()){let o=r.charCodeAt(0),i=o>=48&&o<=57,s=o>=97&&o<=122;if(!i&&!s){n=t.length>0;continue}n&&(t.push("-"),n=!1),t.push(r)}return t.length===0?"pm-":`${t.join("")}-`}function Qr(e){let t=e.trim().toLowerCase();return t.startsWith("#")&&(t=t.slice(1)),t}function vt(e,t){let n=Is(t),r=Qr(e);return r.startsWith(n)?r:`${n}${r}`}function iu(e){let t=Yo(e);if(t!==void 0)return t;let n="";for(let r=0;r<e;r+=1)n+=ou.randomInt(0,36).toString(36);return n}async function su(e,t,n){let r=[...new Set(Object.values(n))].flatMap(o=>[In.join(e,o,`${t}.md`),In.join(e,o,`${t}.toon`)]);return r.push(In.join(e,"history",`${t}.jsonl`)),(await Promise.all(r.map(o=>ke(o)))).some(Boolean)}var Ss=4,xs=12;function au(e){return typeof e!="number"||!Number.isFinite(e)?Ss:Math.min(xs,Math.max(Ss,Math.trunc(e)))}async function Mh(e,t,n={}){let r=au(n.tokenLength),o=Math.min(r+6,xs),i=0;for(;r<=o;){for(let s=0;s<32;s+=1){let a=`${Is(t)}${iu(r)}`;if(!await(n.probeExisting===!1?ke(In.join(e,"history",`${a}.jsonl`)):su(e,a,n.typeToFolder??ve)))return a;i+=1}r+=1}throw new Error(`Unable to generate unique id after ${i} attempts`)}import De from"node:fs/promises";import Os from"node:path";import{randomUUID as cu}from"node:crypto";import{createRequire as du}from"node:module";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="97cfeab2-8e3f-5b70-9f64-10494158d141")}catch{}})();var lu="metadata-query-index.sqlite",kt="4";function uu(e){try{return e(["node","sqlite"].join(":")).DatabaseSync??null}catch{return null}}var xn;function fu(e,t){let n=Number.parseInt(e,10);return Number.isFinite(n)&&n>=22?uu(t):null}function St(){return xn!==void 0||(xn=fu(process.versions.node,du(import.meta.url))),xn}function Ts(e,t){return Math.max(0,Math.floor(e===void 0?t:e))}function tt(e){return Os.join(e,"runtime",lu)}function _u(e){e.exec(`
86
- PRAGMA foreign_keys = ON;
87
- PRAGMA journal_mode = OFF;
88
- PRAGMA synchronous = OFF;
89
- CREATE TABLE metadata (
90
- key TEXT PRIMARY KEY,
91
- value TEXT NOT NULL
92
- ) STRICT;
93
- CREATE TABLE items (
94
- id TEXT PRIMARY KEY,
95
- relative_path TEXT NOT NULL UNIQUE,
96
- metadata_json TEXT NOT NULL,
97
- status TEXT NOT NULL,
98
- type TEXT NOT NULL,
99
- priority INTEGER NOT NULL,
100
- updated_at TEXT NOT NULL,
101
- created_at TEXT NOT NULL,
102
- parent TEXT,
103
- assignee TEXT,
104
- sprint TEXT,
105
- release TEXT
106
- ) STRICT;
107
- CREATE INDEX items_default_order
108
- ON items(priority, updated_at DESC, id);
109
- CREATE INDEX items_status_default_order
110
- ON items(status, priority, updated_at DESC, id);
111
- CREATE INDEX items_type_default_order
112
- ON items(type, priority, updated_at DESC, id);
113
- CREATE INDEX items_parent_default_order
114
- ON items(parent, priority, updated_at DESC, id);
115
- CREATE TABLE item_metadata_keys (
116
- item_id TEXT NOT NULL,
117
- key TEXT NOT NULL,
118
- PRIMARY KEY(item_id, key),
119
- FOREIGN KEY(item_id) REFERENCES items(id) ON DELETE CASCADE
120
- ) STRICT;
121
- CREATE INDEX item_metadata_keys_key_item
122
- ON item_metadata_keys(key, item_id);
123
- CREATE TABLE item_linked_files (
124
- item_id TEXT NOT NULL,
125
- path TEXT NOT NULL,
126
- scope TEXT NOT NULL,
127
- note TEXT,
128
- PRIMARY KEY(item_id, path, scope),
129
- FOREIGN KEY(item_id) REFERENCES items(id) ON DELETE CASCADE
130
- ) STRICT;
131
- CREATE INDEX item_linked_files_path_scope_item
132
- ON item_linked_files(path, scope, item_id);
133
- CREATE VIRTUAL TABLE item_search USING fts5(
134
- id UNINDEXED,
135
- title,
136
- description,
137
- tags,
138
- tokenize = 'unicode61'
139
- );
140
- `)}function On(e,t,n){e.prepare("INSERT INTO metadata(key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value").run(t,n)}function Cs(e,t){let n=t.metadata;e.prepare(`INSERT INTO items(
141
- id, relative_path, metadata_json, status, type, priority,
142
- updated_at, created_at, parent, assignee, sprint, release
143
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
144
- ON CONFLICT(id) DO UPDATE SET
145
- relative_path = excluded.relative_path,
146
- metadata_json = excluded.metadata_json,
147
- status = excluded.status,
148
- type = excluded.type,
149
- priority = excluded.priority,
150
- updated_at = excluded.updated_at,
151
- created_at = excluded.created_at,
152
- parent = excluded.parent,
153
- assignee = excluded.assignee,
154
- sprint = excluded.sprint,
155
- release = excluded.release`).run(n.id,t.relativePath,JSON.stringify(n),n.status,n.type,n.priority,n.updated_at,n.created_at,n.parent??null,n.assignee??null,n.sprint??null,n.release??null),e.prepare("DELETE FROM item_metadata_keys WHERE item_id = ?").run(n.id),e.prepare("DELETE FROM item_linked_files WHERE item_id = ?").run(n.id),e.prepare("DELETE FROM item_search WHERE id = ?").run(n.id),e.prepare("INSERT INTO item_search(id, title, description, tags) VALUES (?, ?, ?, ?)").run(n.id,n.title,n.description,n.tags.join(" "));let r=e.prepare("INSERT INTO item_metadata_keys(item_id, key) VALUES (?, ?)");for(let i of Object.keys(n))r.run(n.id,i);let o=e.prepare("INSERT INTO item_linked_files(item_id, path, scope, note) VALUES (?, ?, ?, ?)");for(let i of t.linkedFiles??[])o.run(n.id,i.path,i.scope,i.note??null)}async function As(e){let t=tt(e.pmRoot),n=St();if(!n){await De.rm(t,{force:!0});return}await De.mkdir(Os.dirname(t),{recursive:!0});let r=`${t}.${cu()}.tmp`,o;try{o=new n(r),_u(o),o.exec("BEGIN IMMEDIATE"),On(o,"version",kt),On(o,"context_fingerprint",e.contextFingerprint),On(o,"source_cursor",e.sourceCursor);for(let i of e.rows)Cs(o,i);o.exec("COMMIT"),o.close(),o=void 0,await De.rm(t,{force:!0}),await De.rename(r,t)}catch(i){throw o?.close(),await Promise.allSettled([De.rm(r,{force:!0})]),i}}function Cn(e){return Object.fromEntries(e.prepare("SELECT key, value FROM metadata").all().map(t=>[String(t.key),String(t.value)]))}async function Rs(e){let t=St();if(!t)return!1;let n=tt(e.pmRoot),r;try{await De.access(n),r=new t(n),r.exec("PRAGMA foreign_keys = ON");let o=Cn(r);if(o.version!==kt||o.context_fingerprint!==e.contextFingerprint||o.source_cursor!==e.expectedSourceCursor)return r.close(),!1;r.exec("BEGIN IMMEDIATE");let i=r.prepare("DELETE FROM items WHERE relative_path = ?"),s=r.prepare("SELECT id FROM items WHERE relative_path = ?"),a=r.prepare("DELETE FROM item_search WHERE id = ?");for(let c of e.deletedRelativePaths??[]){let d=s.get(c);i.run(c),d&&a.run(d.id)}return e.row&&Cs(r,e.row),On(r,"source_cursor",e.sourceCursor),r.exec("COMMIT"),r.close(),!0}catch{try{r?.exec("ROLLBACK")}catch{}return r?.close(),!1}}function Tn(e,t,n,r,o){!r||r.length===0||(e.push(`${n} ${o} (${r.map(()=>"?").join(", ")})`),t.push(...r))}function mu(e){let t=[],n=[];Tn(t,n,"status",e.statuses,"IN"),Tn(t,n,"status",e.excludeStatuses,"NOT IN"),Tn(t,n,"type",e.types,"IN"),Tn(t,n,"id",e.ids,"IN");for(let r of e.metadataKeys??[])t.push("EXISTS (SELECT 1 FROM item_metadata_keys AS indexed_key WHERE indexed_key.item_id = items.id AND indexed_key.key = ?)"),n.push(r);for(let[r,o]of[["parent",e.parent],["assignee",e.assignee],["sprint",e.sprint],["release",e.release]])o!==void 0&&(t.push(`${r} = ?`),n.push(o));return e.priority!==void 0&&(t.push("priority = ?"),n.push(e.priority)),{where:t.length===0?"":` WHERE ${t.join(" AND ")}`,parameters:n}}async function Vh(e){let t=St();if(!t)return null;let n=e.query??{},{where:r,parameters:o}=mu(n),i;try{i=new t(tt(e.pmRoot),{readOnly:!0});let s=Cn(i);if(s.version!==kt||s.source_cursor!==e.expectedSourceCursor)return i.close(),null;let a=i.prepare(`SELECT COUNT(*) AS count FROM items${r}`).get(...o),c=[],d="";n.limit!==void 0?(d+=" LIMIT ?",c.push(Math.max(0,Math.floor(n.limit))),n.offset!==void 0&&(d+=" OFFSET ?",c.push(Math.max(0,Math.floor(n.offset))))):n.offset!==void 0&&(d+=" LIMIT -1 OFFSET ?",c.push(Math.max(0,Math.floor(n.offset))));let f=i.prepare(`SELECT metadata_json FROM items${r}
156
- ORDER BY ${n.terminalStatuses&&n.terminalStatuses.length>0?`CASE WHEN status IN (${n.terminalStatuses.map(()=>"?").join(", ")}) THEN 1 ELSE 0 END ASC, `:""}priority ASC, updated_at DESC, id ASC${d}`).all(...o,...n.terminalStatuses??[],...c).map(p=>{let h=JSON.parse(String(p.metadata_json));if(!h.id)throw new TypeError("Indexed metadata row has no id");return h});return i.close(),{source_cursor:s.source_cursor,total:Number(a.count),items:f}}catch{return i?.close(),null}}async function Wh(e){let t=St();if(!t||e.paths.length===0)return null;let n;try{n=new t(tt(e.pmRoot),{readOnly:!0});let r=Cn(n);if(r.version!==kt||r.source_cursor!==e.expectedSourceCursor)return n.close(),null;let o=e.paths.map(()=>"?").join(", "),i=e.scope===void 0?"":" AND scope = ?",s=[...e.paths,...e.scope===void 0?[]:[e.scope]],a=`path IN (${o})${i}`,c=n.prepare(`SELECT COUNT(DISTINCT item_id) AS count
157
- FROM item_linked_files
158
- WHERE ${a}`).get(...s),d=Ts(e.limit,50),u=Ts(e.offset,0),f=n.prepare(`SELECT items.id, items.metadata_json
159
- FROM items
160
- WHERE EXISTS (
161
- SELECT 1 FROM item_linked_files
162
- WHERE item_linked_files.item_id = items.id AND ${a}
163
- )
164
- ORDER BY items.priority ASC, items.updated_at DESC, items.id ASC
165
- LIMIT ? OFFSET ?`).all(...s,d,u),p=[];if(f.length>0){let h=f.map(S=>String(S.id)),_=n.prepare(`SELECT item_id, path, scope, note
166
- FROM item_linked_files
167
- WHERE item_id IN (${h.map(()=>"?").join(", ")})
168
- AND ${a}
169
- ORDER BY path ASC, scope ASC`).all(...h,...s),E=new Map(h.map(S=>[S,[]]));for(let S of _){let C=String(S.item_id),D=E.get(C);D.push({path:String(S.path),scope:String(S.scope),...S.note===null?{}:{note:String(S.note)}}),E.set(C,D)}for(let S of f){let C=JSON.parse(String(S.metadata_json));p.push({item:C,files:E.get(String(S.id))})}}return n.close(),{source_cursor:r.source_cursor,total:Number(c.count),matches:p}}catch{return n?.close(),null}}async function Bh(e){let t=St();if(!t)return null;let n;try{n=new t(tt(e.pmRoot),{readOnly:!0});let r=Cn(n);if(r.version!==kt||r.source_cursor!==e.expectedSourceCursor)return n.close(),null;let i=n.prepare(`SELECT items.metadata_json
170
- FROM item_search
171
- JOIN items ON items.id = item_search.id
172
- WHERE item_search MATCH ?
173
- ORDER BY bm25(item_search), items.priority, items.updated_at DESC, items.id
174
- LIMIT ?`).all(e.query,Math.max(0,Math.floor(e.limit))).map(s=>JSON.parse(String(s.metadata_json)));return n.close(),{source_cursor:r.source_cursor,items:i}}catch{return n?.close(),null}}async function An(e){await De.rm(tt(e),{force:!0})}import H from"node:fs/promises";import N from"node:path";import{createHash as pu,randomUUID as Ls}from"node:crypto";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="8b8c705a-8d80-576f-8642-f6f686cdbed9")}catch{}})();var te=8,Ms=500,hu="metadata-derived-index",yu="metadata-cache.json",gu="metadata-cache-bodies.json",bu="metadata-cache-collections.json",wu="metadata-cache-delta.json",Eu="metadata-cache-manifest.json",Ns=4,vu=["comments","notes","learnings","files","tests","test_runs","docs"];function Fs(){return Ht(Se())}function Nn(e){let t={...e},n={};for(let r of vu)r in t&&(n[r]=t[r],delete t[r]);return{light:t,heavy:n}}function $s(e,t){return!t||Object.keys(t).length===0?e:{...e,...t}}function zs(e,t,n,r){let o=pu("sha256");o.update(`format:${e??"default"}`);let i=Object.entries(t).sort(([s],[a])=>s.localeCompare(a)).map(([s,a])=>`${s}=${a}`).join(",");return o.update(`|types:${i}`),n&&o.update(`|schema:${JSON.stringify(n)}`),r.length>0&&o.update(`|extension_fields:${r.join(",")}`),o.digest("hex").slice(0,16)}function Dn(e){return N.join(e,"runtime",yu)}function jn(e){return N.join(e,"runtime",gu)}function Pn(e){return N.join(e,"runtime",bu)}function eo(e){return N.join(e,"runtime",wu)}function to(e){return N.join(e,"runtime",Eu)}function Ln(e,t){let n=N.extname(e);return`${e.slice(0,-n.length)}.${t}${n}`}var ku=24,G=new Map,Mn=new WeakMap;function no(e){return Mn.get(e)??e.source_cursor}function Su(e,t){let n=no(e);if(!(t.base_source_cursor!==n||e.source_cursor===t.source_cursor)){Mn.set(e,n);for(let[r,o]of Object.entries(t.changes))o.entry?e.entries[r]=o.entry:delete e.entries[r];e.directory_signatures=t.directory_signatures,e.source_cursor=t.source_cursor}}function Iu(e,t){if(!e)return;let n=no(e);if(!(t.base_source_cursor!==n||e.source_cursor===t.source_cursor)){Mn.set(e,n);for(let[r,o]of Object.entries(t.changes))o.body?e.bodies[r]=o.body:delete e.bodies[r];e.source_cursor=t.source_cursor}}function xu(e,t){if(!e)return;let n=no(e);if(!(t.base_source_cursor!==n||e.source_cursor===t.source_cursor)){Mn.set(e,n);for(let[r,o]of Object.entries(t.changes))o.collections?e.collections[r]=o.collections:delete e.collections[r];e.source_cursor=t.source_cursor}}function Tu(e,t,n,r){!e||!r||e.context_fingerprint!==r.context_fingerprint||(Su(e,r),Iu(t,r),xu(n,r))}function Zr(e,t){G.size>=ku&&!G.has(e)&&Uo(G),G.set(e,t)}async function pe(e,t){let n;try{n=await H.stat(e)}catch{return G.delete(e),null}let r=G.get(e);if(r&&It(r.signature,n.mtimeMs,n.ctimeMs,n.size))return G.delete(e),G.set(e,r),r.envelope;let o;try{o=t(await H.readFile(e,"utf8"))}catch{o=null}return Zr(e,{signature:{mtime_ms:n.mtimeMs,ctime_ms:n.ctimeMs,size:n.size},envelope:o}),o}async function Ou(e,t,n){let r=a=>{let c=JSON.parse(a);return c.version!==te||typeof c.source_cursor!="string"||typeof c.entries!="object"||c.entries===null?null:c},o=Dn(e),i=await pe(o,r);if(!t||i===null||i.context_fingerprint===t)return i;let s=await pe(Ln(o,t),r);return s===null&&Ot(n,`metadata_cache_context_changed:${i.context_fingerprint}->${t}`),s}async function Cu(e,t){let n=i=>{let s=JSON.parse(i);return s.version!==te||typeof s.source_cursor!="string"||typeof s.bodies!="object"||s.bodies===null?null:s},r=jn(e),o=await pe(r,n);return t&&o?.context_fingerprint!==t?await pe(Ln(r,t),n):o}async function Au(e,t){let n=i=>{let s=JSON.parse(i);return s.version!==te||typeof s.source_cursor!="string"||typeof s.collections!="object"||s.collections===null?null:s},r=Pn(e),o=await pe(r,n);return t&&o?.context_fingerprint!==t?await pe(Ln(r,t),n):o}async function ro(e){let t=eo(e),n=await pe(t,r=>{let o=JSON.parse(r);return o.version!==te||typeof o.base_source_cursor!="string"||typeof o.source_cursor!="string"||typeof o.changes!="object"||o.changes===null?null:o});if(n)return{envelope:n,invalid:!1};try{return await H.stat(t),{envelope:null,invalid:!0}}catch{return{envelope:null,invalid:!1}}}async function oo(e){let t=to(e),n=await pe(t,r=>{let o=JSON.parse(r);return o.version!==te||typeof o.context_fingerprint!="string"||typeof o.source_cursor!="string"||!Number.isInteger(o.entry_count)||o.entry_count<0||typeof o.directory_signatures!="object"||o.directory_signatures===null?null:o});if(n)return n;try{await H.stat(t),await nt(e)}catch{}return null}async function xt(e,t){await H.mkdir(N.dirname(e),{recursive:!0}),await B(e,JSON.stringify(t));try{let r=await H.stat(e);Zr(e,{signature:{mtime_ms:r.mtimeMs,ctime_ms:r.ctimeMs,size:r.size},envelope:t})}catch{G.delete(e)}let n=N.dirname(N.dirname(e));if(e===Dn(n)||e===jn(n)||e===Pn(n)){let r=Ln(e,t.context_fingerprint);await B(r,JSON.stringify(t));try{let c=await H.stat(r);Zr(r,{signature:{mtime_ms:c.mtimeMs,ctime_ms:c.ctimeMs,size:c.size},envelope:t})}catch{G.delete(r)}let o=N.dirname(e),i=N.extname(e),s=N.basename(e,i),a=(await H.readdir(o,{withFileTypes:!0}).catch(()=>[])).filter(c=>c.isFile()&&c.name!==N.basename(e)&&c.name.startsWith(`${s}.`)&&c.name.endsWith(i)).map(c=>N.join(o,c.name));if(a.length>Ns){let c=(await Promise.all(a.map(async d=>{try{return{path:d,mtime:(await H.stat(d)).mtimeMs}}catch{return null}}))).filter(d=>d!==null);for(let d of c.sort((u,f)=>u.mtime-f.mtime).slice(0,Math.max(0,c.length-Ns)))await H.rm(d.path,{force:!0}),G.delete(d.path)}}}function Ru(e,t,n){return n?t===n&&e!==n:t==="toon"&&e!=="toon"}function Hs(e,t,n){return e===void 0||Ru(e,t,n)}function Ot(e,t){e&&!e.includes(t)&&e.push(t)}function It(e,t,n,r){return e.mtime_ms===t&&e.ctime_ms===n&&e.size===r}async function Nu(e,t,n){let r=N.join(e,t);try{let o=await H.readdir(r);return{folder:t,dirPath:r,files:o}}catch(o){return typeof o=="object"&&o!==null&&"code"in o&&!ae(o)&&Ot(n,`item_list_directory_read_failed:${t}`),{folder:t,dirPath:r,files:[]}}}async function Du(e,t){try{let n=await H.stat(N.join(e,t));return[t,{exists:!0,mtime_ms:n.mtimeMs,ctime_ms:n.ctimeMs,size:n.size}]}catch{return[t,{exists:!1,mtime_ms:0,ctime_ms:0,size:0}]}}async function Rn(e,t){return Object.fromEntries(await Promise.all(t.map(async n=>await Du(e,n))))}function Tt(e,t){return!e||Object.keys(e).length!==Object.keys(t).length?!1:Object.entries(t).every(([n,r])=>{let o=e[n];return o!==void 0&&o.exists===r.exists&&It(o,r.mtime_ms,r.ctime_ms,r.size)})}function ju(e){return Ut.some(t=>e.toLowerCase().endsWith(t))}function Pu(e,t,n,r,o,i){r||(e.metadata=!0),t&&!o&&(e.body=!0),n&&!i&&(e.collections=!0)}async function Lu(e,t,n){if(n)for(let r of await de({path:e,scope:"project"}))Ot(t,r)}function Ds(e,t,n,r){if(e)return t&&n?n.collections:r}async function Mu(e,t,n){let r=await H.stat(e),o=r.mtimeMs,i=r.ctimeMs,{size:s}=r,a=Zn(e);await Lu(e,n.warnings,n.dispatchReadHooks);let c=n.previousEntries[t],d=!n.forceSourceRead&&c!==void 0&&It(c,o,i,s),u=n.previousBodies[t],f=!n.forceSourceRead&&u!==void 0&&It(u,o,i,s),p=n.previousCollections[t],h=!n.forceSourceRead&&p!==void 0&&It(p,o,i,s);if(!(!d||n.includeBody&&!f||n.includeCollections&&!h))return{mtimeMs:o,ctimeMs:i,size:s,itemFormat:a,lightMetadata:c.metadata,heavyMetadata:Ds(n.includeCollections,h,p,void 0),bodyLength:c.body_length,body:n.includeBody?u.body:void 0};let E=await H.readFile(e,"utf8"),S=nn(E,{format:a,schema:n.schema,extensionFieldNames:n.extensionFieldNames,onWarning:D=>Ot(n.warnings,D)}),C=Nn(S.metadata);return Pu(n.state.misses,n.includeBody,n.includeCollections,d,f,h),{mtimeMs:o,ctimeMs:i,size:s,itemFormat:a,lightMetadata:d?c.metadata:C.light,heavyMetadata:Ds(n.includeCollections,h,p,C.heavy),bodyLength:d?c.body_length:S.body.length,body:n.includeBody?S.body:void 0}}function Fu(e,t,n,r){n.state.newEntries[t]={mtime_ms:r.mtimeMs,ctime_ms:r.ctimeMs,size:r.size,metadata:r.lightMetadata,body_length:r.bodyLength},n.includeBody&&r.body!==void 0&&(n.state.newBodies[t]={mtime_ms:r.mtimeMs,ctime_ms:r.ctimeMs,size:r.size,body:r.body}),n.includeCollections&&r.heavyMetadata!==void 0&&(n.state.newCollections[t]={mtime_ms:r.mtimeMs,ctime_ms:r.ctimeMs,size:r.size,collections:r.heavyMetadata});let o=n.includeCollections?$s(r.lightMetadata,r.heavyMetadata):r.lightMetadata,i=n.state.documentsById.get(o.id),s={metadata:o,body:r.body,item_format:r.itemFormat,item_path:e};Hs(i?.itemFormat,r.itemFormat,n.preferredFormat)&&n.state.documentsById.set(o.id,{candidate:s,itemFormat:r.itemFormat})}async function $u(e,t,n,r){try{let o=await Mu(t,n,r);Fu(t,n,r,o)}catch{Ot(r.warnings,`item_list_item_read_failed:${e}/${N.basename(t)}`)}}function zu(e,t){return e&&e.context_fingerprint===t?e.entries:{}}function Hu(e,t){return e&&e.context_fingerprint===t?e.bodies:{}}function Uu(e,t){return e&&e.context_fingerprint===t?e.collections:{}}function Vu(){return{newEntries:{},newBodies:{},newCollections:{},documentsById:new Map,misses:{metadata:!1,body:!1,collections:!1}}}function Wu(e,t){let n=[];for(let{folder:r,dirPath:o,files:i}of e)for(let s of i){if(!ju(s))continue;let a=N.join(o,s),c=N.relative(t.pmRoot,a);n.push($u(r,a,c,t))}return n}async function Bu(e){if(!(!(e.state.misses.metadata||Object.keys(e.previousEntries).length!==Object.keys(e.state.newEntries).length||!Tt(e.existingCache?.directory_signatures,e.directorySignatures))&&e.existingCache!==null&&e.existingCache.context_fingerprint===e.contextFingerprint))try{await xt(Dn(e.pmRoot),{version:te,context_fingerprint:e.contextFingerprint,source_cursor:e.sourceCursor,directory_signatures:e.directorySignatures,entries:e.state.newEntries}),await xt(to(e.pmRoot),{version:te,context_fingerprint:e.contextFingerprint,source_cursor:e.sourceCursor,entry_count:Object.keys(e.state.newEntries).length,directory_signatures:e.directorySignatures});let n=[...e.state.documentsById.values()].map(({candidate:r})=>({relativePath:N.relative(e.pmRoot,r.item_path),metadata:Nn(r.metadata).light,linkedFiles:r.metadata.files??[]}));n.length>=e.minimumIndexedItems?await As({pmRoot:e.pmRoot,contextFingerprint:e.contextFingerprint,sourceCursor:e.sourceCursor,rows:n}):await An(e.pmRoot)}catch{}}async function qu(e){!(e.state.misses.body||Object.keys(e.previousBodies).length!==Object.keys(e.state.newBodies).length)&&e.existingBodyCache!==null&&e.existingBodyCache.context_fingerprint===e.contextFingerprint||await xt(jn(e.pmRoot),{version:te,context_fingerprint:e.contextFingerprint,source_cursor:e.sourceCursor,bodies:e.state.newBodies}).catch(()=>{})}async function Xu(e){!(e.state.misses.collections||Object.keys(e.previousCollections).length!==Object.keys(e.state.newCollections).length)&&e.existingCollectionsCache!==null&&e.existingCollectionsCache.context_fingerprint===e.contextFingerprint||await xt(Pn(e.pmRoot),{version:te,context_fingerprint:e.contextFingerprint,source_cursor:e.sourceCursor,collections:e.state.newCollections}).catch(()=>{})}async function io(e,t,n={}){let r=await oo(e);return n.required!==!0&&(r===null||r.entry_count<Ms)?async()=>{}:K(e,hu,30,t,!1,!1,3e3)}async function oy(e,t){let n=await oo(e);if(n===null)return null;let r=await ro(e);if(r.invalid)return await nt(e),null;let o=r.envelope?.context_fingerprint===n.context_fingerprint&&r.envelope.base_source_cursor===n.source_cursor?r.envelope.source_cursor:n.source_cursor,i=r.envelope?.context_fingerprint===n.context_fingerprint&&r.envelope.base_source_cursor===n.source_cursor?r.envelope.directory_signatures:n.directory_signatures;return t&&!Tt(i,await Rn(e,t))?null:{source_cursor:o,entry_count:n.entry_count}}function js(e,t){let n=N.relative(e,t);return n===""||n===".."||n.startsWith(`..${N.sep}`)||N.isAbsolute(n)?null:n}async function nt(e){await Promise.all([Dn(e),jn(e),Pn(e),eo(e),to(e)].map(async t=>{await H.rm(t,{force:!0}),G.delete(t)})),await An(e)}async function Ku(e){if(e.mutation.document===null)return{entry:null,body:null,collections:null};let t=await H.stat(e.mutation.itemPath),n=Nn(e.mutation.document.metadata),r={mtime_ms:t.mtimeMs,ctime_ms:t.ctimeMs,size:t.size};return{entry:{...r,metadata:n.light,body_length:e.mutation.document.body.length},body:{...r,body:e.mutation.document.body},collections:{...r,collections:n.heavy}}}function Gu(e,t,n){return e?.context_fingerprint===t&&e.base_source_cursor===n?structuredClone(e.changes):{}}async function so(e){let t=js(e.pmRoot,e.itemPath),n=e.previousItemPath?js(e.pmRoot,e.previousItemPath):void 0;if(t===null||n===null)return await nt(e.pmRoot),["metadata_derived_index_path_invalidated"];try{let r=zs(e.preferredFormat,e.typeToFolder,e.schema,Fs()),o=await oo(e.pmRoot);if(o===null||o.context_fingerprint!==r)return[];let i=o.source_cursor,s=await ro(e.pmRoot);if(s.invalid)return await nt(e.pmRoot),["metadata_derived_index_refresh_failed"];let a=Gu(s.envelope,r,i),c=s.envelope?.context_fingerprint===r&&s.envelope.base_source_cursor===i?s.envelope.source_cursor:i;n!==void 0&&(a[n]={entry:null,body:null,collections:null}),a[t]=await Ku({mutation:e});let d=Ls();return await xt(eo(e.pmRoot),{version:te,context_fingerprint:r,base_source_cursor:i,source_cursor:d,directory_signatures:await Rn(e.pmRoot,[...new Set(Object.values(e.typeToFolder))]),changes:a}),await Rs({pmRoot:e.pmRoot,contextFingerprint:r,expectedSourceCursor:c,sourceCursor:d,row:e.document===null?null:{relativePath:t,metadata:Nn(e.document.metadata).light,linkedFiles:e.document.metadata.files},deletedRelativePaths:[...n===void 0?[]:[n],...e.document===null?[t]:[]]})||await An(e.pmRoot),[]}catch{return await nt(e.pmRoot).catch(()=>{}),["metadata_derived_index_refresh_failed"]}}function Yu(e){return[...e.documentsById.values()].sort((t,n)=>t.candidate.metadata.id.localeCompare(n.candidate.metadata.id)).map(t=>t.candidate)}function Ps(e,t,n){return e?.context_fingerprint===t&&e.source_cursor===n}function Ju(e,t,n,r,o){return e.every(i=>(!t||r[i]!==void 0)&&(!n||o[i]!==void 0))}function Qu(e){let t=new Map;for(let[n,r]of Object.entries(e.previousEntries)){let o=Zn(n);if(!o)continue;let i=e.includeCollections?$s(r.metadata,e.previousCollections[n]?.collections):r.metadata,s=t.get(i.id);Hs(s?.itemFormat,o,e.preferredFormat)&&t.set(i.id,{itemFormat:o,candidate:{metadata:i,body:e.includeBody?e.previousBodies[n]?.body:void 0,item_format:o,item_path:N.join(e.pmRoot,n)}})}return[...t.values()].sort((n,r)=>n.candidate.metadata.id.localeCompare(r.candidate.metadata.id)).map(n=>n.candidate)}function Zu(e){return e.forceSourceScan||nr()||e.existingCache?.context_fingerprint!==e.contextFingerprint||e.entryKeys.length<e.minimumIndexedItems||!Tt(e.existingCache?.directory_signatures,e.directorySignatures)?!1:[!e.includeBody||Ps(e.existingBodyCache,e.contextFingerprint,e.existingCache.source_cursor),!e.includeCollections||Ps(e.existingCollectionsCache,e.contextFingerprint,e.existingCache.source_cursor)].every(Boolean)&&Ju(e.entryKeys,e.includeBody,e.includeCollections,e.previousBodies,e.previousCollections)}async function Fn(e,t,n,r,o,i={}){let s=i.includeBody!==!1,a=i.includeCollections!==!1,c=Fs(),d=zs(t,n,o,c),u=await ro(e);u.invalid&&await nt(e);let f=await Ou(e,d,i.cacheDiagnostics),p=s?await Cu(e,d):null,h=a?await Au(e,d):null;Tu(f,p,h,u.envelope);let _=zu(f,d),E=Hu(p,d),S=Uu(h,d),C=[...new Set(Object.values(n))],D=await Rn(e,C),F=Object.keys(_),$=Math.max(1,Math.floor(i.derivedIndexMinimumItems??Ms));if(Zu({forceSourceScan:i.forceSourceScan===!0,contextFingerprint:d,existingCache:f,existingBodyCache:p,existingCollectionsCache:h,directorySignatures:D,entryKeys:F,minimumIndexedItems:$,includeBody:s,includeCollections:a,previousBodies:E,previousCollections:S}))return Qu({pmRoot:e,preferredFormat:t,includeBody:s,includeCollections:a,previousEntries:_,previousBodies:E,previousCollections:S});let U=await Promise.all(C.map(ja=>Nu(e,ja,r))),Le=nr(),W=Vu(),Ee={pmRoot:e,preferredFormat:t,warnings:r,schema:o,extensionFieldNames:c,includeBody:s,includeCollections:a,forceSourceRead:i.forceSourceScan===!0,dispatchReadHooks:Le,previousEntries:_,previousBodies:E,previousCollections:S,state:W};await Promise.all(Wu(U,Ee));let Y=await Rn(e,C),Me=Tt(D,Y)?Y:{},Gn=W.misses.metadata||Object.keys(_).length!==Object.keys(W.newEntries).length||!Tt(f?.directory_signatures,Me)||f===null?Ls():f.source_cursor;return await Bu({pmRoot:e,contextFingerprint:d,sourceCursor:Gn,existingCache:f,previousEntries:_,directorySignatures:Me,state:W,minimumIndexedItems:$}),s&&await qu({pmRoot:e,contextFingerprint:d,sourceCursor:Gn,existingBodyCache:p,previousBodies:E,state:W}),a&&await Xu({pmRoot:e,contextFingerprint:d,sourceCursor:Gn,existingCollectionsCache:h,previousCollections:S,state:W}),Yu(W)}async function Us(e,t,n,r,o){return(await Fn(e,t,n,r,o,{includeBody:!1})).map(s=>({metadata:s.metadata,body:s.body??""}))}async function Vs(e,t,n,r,o){return(await Fn(e,t,n,r,o,{includeBody:!1,includeCollections:!1})).map(s=>({metadata:s.metadata,body:s.body??""}))}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="d49d73c9-f988-5c3c-a22d-0580ee5526f6")}catch{}})();function he(){let e=zo();for(let t of Se()?.relationship_kinds??[])for(let n of t.definitions)e.register(n);return e}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="924f7718-0527-5967-8ab0-53e8228bd665")}catch{}})();function Ct(e){if(typeof e!="string")return;let t=e.trim().toLowerCase();return t.length>0?t:void 0}function $n(e){return[e.parent_id,e.child_id,e.source,e.kind,e.holder_id,e.target_id??""].join("\0")}function ef(e,t){let n=new Set,r=[];for(let o of[...e].sort()){if(n.has(o))continue;n.add(o);let i=[{nodeId:o,children:[...t.get(o)??[]].sort(),nextChild:0}];for(;i.length>0;){let s=i.at(-1),a=s.children[s.nextChild];a===void 0?(r.push(s.nodeId),i.pop()):(s.nextChild+=1,n.has(a)||(n.add(a),i.push({nodeId:a,children:[...t.get(a)??[]].sort(),nextChild:0})))}}return r}function tf(e,t){let n=[...e].sort(),r=ef(n,t),o=new Set,i=nf(n,t),s=[];for(let a of r.reverse()){if(o.has(a))continue;let c=rf(a,i,o);(c.length>1||t.get(c[0])?.has(c[0]))&&s.push(c)}return s.sort((a,c)=>a.join("\0").localeCompare(c.join("\0")))}function nf(e,t){let n=new Map(e.map(r=>[r,new Set]));for(let[r,o]of t)for(let i of o)n.get(i)?.add(r);return n}function rf(e,t,n){let r=[],o=[e];for(n.add(e);o.length>0;){let i=o.pop();r.push(i);for(let s of[...t.get(i)].sort())n.has(s)||(n.add(s),o.push(s))}return r.sort()}function Ws(e){let t=new Map;for(let n of e){let r=Ct(n?.id);r&&!t.has(r)&&t.set(r,n)}return t}function of(e,t,n){let r=Ct(t.parent);if(!(!r||!n.has(r)))return{parent_id:r,child_id:e,source:"scalar_parent",kind:"parent",holder_id:e,child_cardinality:"one"}}function sf(e,t,n,r){let o=Ct(t?.id),i=r.resolve(t?.kind);if(!o||!n.has(o)||!i?.hierarchy)return;let s=i.hierarchyDirection==="source_parent";return{parent_id:s?e:o,child_id:s?o:e,source:"dependency",kind:i.kind,holder_id:e,target_id:o,child_cardinality:s?i.incoming:i.outgoing}}function Bs(e,t){let n=new Map;for(let[r,o]of e){let i=of(r,o,e);i&&n.set($n(i),i);for(let s of o.dependencies??[]){let a=sf(r,s,e,t);a&&n.set($n(a),a)}}return[...n.values()].sort((r,o)=>$n(r).localeCompare($n(o)))}function fy(e,t=he()){return Bs(Ws(e),t)}function af(e,t,n){let r=new Set(e.filter(o=>o.child_cardinality==="one").map(o=>o.child_id));return[...t].filter(([o,i])=>i.length>1&&r.has(o)).map(([o,i])=>({child_id:o,parent_ids:[...i],legacy_terminal:n.has(o)&&i.every(s=>n.has(s))})).sort((o,i)=>o.child_id.localeCompare(i.child_id))}function cf(e,t,n){let r=new Map;for(let i of t){if(i.source!=="dependency")continue;let s=r.get(i.child_id)??new Set;s.add(i.parent_id),r.set(i.child_id,s)}let o=[];for(let[i,s]of e){let a=Ct(s.parent);if(!a||!e.has(a))continue;let c=[...r.get(i)??[]].filter(d=>d!==a).sort();c.length!==0&&o.push({child_id:i,scalar_parent_id:a,dependency_parent_ids:c,legacy_terminal:n.has(i)&&n.has(a)&&c.every(d=>n.has(d))})}return o.sort((i,s)=>i.child_id.localeCompare(s.child_id))}function zn(e,t=r=>r==="closed"||r==="canceled",n=he()){let r=Ws(e),o=Bs(r,n),i=df(o),s=new Set([...r].filter(([,c])=>t(c.status)).map(([c])=>c)),a=tf([...r.keys()],new Map([...i.children_by_parent].map(([c,d])=>[c,new Set(d)]))).map(c=>({item_ids:c,legacy_terminal:c.every(d=>s.has(d))}));return{relations:o,cycles:a,cardinality_violations:af(o,i.parents_by_child,s),divergences:cf(r,o,s)}}function _y(e){return e.source==="scalar_parent"?`${e.parent_id} -> ${e.child_id} (scalar parent on ${e.holder_id})`:`${e.parent_id} -> ${e.child_id} (${e.kind} dependency on ${e.holder_id})`}function df(e){let t=new Map,n=new Map;for(let r of e){let o=t.get(r.child_id)??new Set;o.add(r.parent_id),t.set(r.child_id,o);let i=n.get(r.parent_id)??new Set;i.add(r.child_id),n.set(r.parent_id,i)}return{parents_by_child:new Map([...t].map(([r,o])=>[r,[...o].sort()])),children_by_parent:new Map([...n].map(([r,o])=>[r,[...o].sort()]))}}function ao(e,t){let n=new Set(t);return e.every(r=>n.has(r))}function my(e,t,n,r,o){let i=Ct(n);if(!i)return;let s=zn(e,r,o),a=zn(t,r,o),c=a.divergences.find(f=>!s.divergences.some(p=>p.child_id===f.child_id&&p.scalar_parent_id===f.scalar_parent_id&&ao(f.dependency_parent_ids,p.dependency_parent_ids)));if(c){let f=[c.scalar_parent_id,...c.dependency_parent_ids].sort();throw new k(`Hierarchy mutation would assign ${c.child_id} to multiple parents: ${f.join(", ")}.`,v.CONFLICT,{code:"hierarchy_parent_divergence_created",source_id:i,target_id:c.child_id,verification_errors:f})}let d=a.cardinality_violations.find(f=>(f.child_id===i||f.parent_ids.includes(i))&&!s.cardinality_violations.some(p=>p.child_id===f.child_id&&ao(f.parent_ids,p.parent_ids)));if(d)throw new k(`Hierarchy mutation would assign ${d.child_id} to multiple parents: ${d.parent_ids.join(", ")}.`,v.CONFLICT,{code:"hierarchy_cardinality_created",source_id:i,target_id:d.child_id,verification_errors:d.parent_ids});let u=a.cycles.find(f=>f.item_ids.includes(i)&&!s.cycles.some(p=>ao(f.item_ids,p.item_ids)));if(u)throw new k(`Hierarchy mutation would create a cycle: ${u.item_ids.join(" -> ")}.`,v.CONFLICT,{code:"hierarchy_cycle_created",source_id:i,verification_errors:u.item_ids})}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="971d929f-12be-5648-93c9-8a9878b40dde")}catch{}})();function Hn(e){let t=e?.trim()??"";return/^[A-Za-z][A-Za-z0-9+.-]*:\/\//u.test(t)||/^(?:github|gitlab|jira|linear):/iu.test(t)}function je(e){let t=e?.trim().toLowerCase();return t==="global"||t==="external"}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="f3f3beb2-1d60-52fe-88ce-1ab3cb9dba0d")}catch{}})();var lf="global";function by(e){let t=e?.trim();if(t)return je(t)?lf:t}function wy(e,t,n){let r=e.trim();return je(n)?r:vt(r,t)}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="e04a91fa-4625-50fd-9bfd-c712126baf0d")}catch{}})();function ot(e){if(typeof e!="string")return;let t=e.trim();if(!(!t||["none","null","n/a","na"].includes(t.toLowerCase())))return t}function At(e){let t=ot(e);return t?.toLowerCase()==="no-active-blocker"?void 0:t}function Rt(e,t,n=!0){let r=ot(e);return n&&(je(t)||r!==void 0&&Hn(r))}function co(e,t){return Rt(e,t)?`external\0${e}`:`local\0${e.toLowerCase()}`}function qs(e,t,n,r){return Rt(e,t)?r.get(e):n.get(e.toLowerCase())}function rt(e,t){let n=e.toLowerCase(),r=t.toLowerCase();return n!==r?n<r?-1:1:e!==t?e<t?-1:1:0}function uf(e){let t=new Map;for(let n of e.dependencies??[]){if(typeof n!="object"||n===null)continue;let r=n,o=ot(r.id);if(!o)continue;let i=typeof r.kind=="string"?r.kind:"related",s=`${i}\0${co(o,r.source_kind)}`,a=t.get(s);a?a.count+=1:t.set(s,{target_id:o,kind:i,count:1})}return t}function ff(e,t=n=>n==="closed"||n==="canceled"){let n=[];for(let r of e)if(!(typeof r?.id!="string"||r.id.trim().length===0))for(let o of uf(r).values())o.count<2||n.push({holder_id:r.id.trim(),target_id:o.target_id,kind:o.kind,occurrences:o.count,holder_status:r.status,legacy_terminal:t(r.status)});return n.sort((r,o)=>{let i=rt(r.holder_id,o.holder_id);if(i!==0)return i;let s=rt(r.target_id,o.target_id);return s!==0?s:rt(r.kind,o.kind)})}function _f(e,t,n,r,o){if(typeof n!="object"||n===null)return;let i=ot(n.id);if(!i||co(i,n.source_kind)!==co(t))return;let s=o.resolve(typeof n.kind=="string"?n.kind:"related");if(!(s?.ordering!==!0||(s.precedence??"source_before_target")!=="source_before_target"))return{holder_id:e.id.trim(),target_id:i,dependency_kind:s.kind,holder_status:e.status,legacy_terminal:r(e.status)}}function mf(e,t=r=>r==="closed"||r==="canceled",n=he()){let r=new Map;for(let o of e){if(typeof o?.id!="string"||o.id.trim().length===0)continue;let i=ot(o.blocked_by);if(i)for(let s of o.dependencies??[]){let a=_f(o,i,s,t,n);a&&r.set(`${a.holder_id.toLowerCase()}\0${a.target_id.toLowerCase()}\0${a.dependency_kind}`,a)}}return[...r.values()].sort((o,i)=>{let s=rt(o.holder_id,i.holder_id);if(s!==0)return s;let a=rt(o.target_id,i.target_id);return a!==0?a:rt(o.dependency_kind,i.dependency_kind)})}function pf(e,t=n=>n==="closed"||n==="canceled"){let n=e.filter(c=>typeof c?.id=="string"&&c.id.trim().length>0),r=new Set(n.map(c=>c.id.trim().toLowerCase())),o=new Map,i=(c,d,u,f,p)=>{let h=ot(d);if(!h||r.has(h.toLowerCase())||Rt(h,void 0,p))return;let _={holder_id:c.id.trim(),target_id:h,kind:u,source:f,holder_status:c.status,legacy_terminal:t(c.status),no_active_blocker_sentinel:h.toLowerCase()==="no-active-blocker"};o.set(`${_.holder_id}::${_.target_id}::${_.kind}::${_.source}`,_)};for(let c of n){i(c,c.parent,"parent","parent",!1),i(c,c.blocked_by,"blocked_by","blocked_by",!0);for(let d of c.dependencies??[]){if(typeof d!="object"||d===null)continue;let u=d;je(u.source_kind)||i(c,u.id,typeof u.kind=="string"?u.kind:"related","dependency",!0)}}let s=[...o.values()].sort((c,d)=>c.holder_id.localeCompare(d.holder_id)||c.target_id.localeCompare(d.target_id)||c.kind.localeCompare(d.kind)||c.source.localeCompare(d.source)),a=s.filter(c=>c.legacy_terminal);return{active:s.filter(c=>!c.legacy_terminal),legacy_terminal:a,no_active_blocker_sentinels:s.filter(c=>c.no_active_blocker_sentinel)}}function hf(e){let t=new Map;for(let n of[...e.active,...e.legacy_terminal]){if(n.no_active_blocker_sentinel)continue;let r=n.target_id.trim(),o=r.toLowerCase();t.has(o)||t.set(o,r)}return[...t.values()].sort((n,r)=>n.localeCompare(r))}function yf(e){let t=new Map;for(let n of e){let r=At(n.blocked_by);r&&Rt(r)&&!t.has(r)&&t.set(r,r);for(let o of n.dependencies??[]){if(typeof o!="object"||o===null||!Rt(o.id,o.source_kind))continue;let i=At(o.id);i&&!t.has(i)&&t.set(i,i)}}return[...t.values()].sort((n,r)=>n.localeCompare(r))}var Xs=new WeakMap;function Ty(e){return e.hierarchyIntegrity??Xs.get(e)}function gf(e,t=he()){let n={};for(let r of e)for(let o of r.dependencies??[]){if(typeof o!="object"||o===null)continue;let i=o.kind;if(typeof i!="string")continue;let s=i.trim().toLowerCase().replaceAll("-","_"),a=t.resolve(i);a&&s!==a.kind&&(n[s]=(n[s]??0)+1)}return Object.fromEntries(Object.entries(n).sort(([r],[o])=>r.localeCompare(o)))}function Oy(e,t,n){let r=n??he(),o=e.filter(_=>typeof _?.id=="string"&&_.id.trim().length>0),i=new Map(o.map(_=>[_.id.trim().toLowerCase(),_.id.trim()])),s=pf(o,t),a=hf(s);for(let _ of a)i.set(_.toLowerCase(),_);let c=yf(o),d=new Set(i.keys()),u=new Map;for(let _ of c){let E=_;for(;d.has(E.toLowerCase());)E=`external:${E}`;u.set(_,E),d.add(E.toLowerCase())}let f=o.map(_=>{let E=At(_.parent),S=At(_.blocked_by),C=(_.dependencies??[]).flatMap(D=>{if(typeof D!="object"||D===null)return[];let F=D,$=At(F.id);return $?[{id:qs($,F.source_kind,i,u),kind:typeof F.kind=="string"?F.kind:"related"}]:[]});return{id:_.id.trim(),...E?{parent:i.get(E.toLowerCase())}:{},...S?{blocked_by:qs(S,void 0,i,u)}:{},dependencies:C}}),p=zn(o,t,r),h={graph:Ho.fromItems([...f,...a.map(_=>({id:_})),...c.map(_=>({id:u.get(_)}))],r),details:[...o.map(_=>({id:_.id.trim(),title:_.title,status:_.status,...typeof _.type=="string"&&_.type.trim().length>0?{type:_.type.trim()}:{}})),...a.map(_=>({id:_,title:`[missing] ${_}`,status:"missing"})),...c.map(_=>({id:u.get(_),title:`[external] ${_}`,status:"external"}))],missingIdSet:new Set(a.map(_=>_.toLowerCase())),dangling:s,duplicateRows:ff(o,t),orderingContradictions:mf(o,t,r),legacyAliasCounts:gf(o,r),hierarchyIntegrity:p};return Xs.set(h,p),h}import bf from"node:fs/promises";import it from"node:path";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="4df21a17-43c0-5b63-adf3-657699e6a058")}catch{}})();var Nt="_workspace";function lo(e){return it.join(e,"history",`${Nt}.jsonl`)}function wf(e,t){return{metadata:{id:Nt,title:"Workspace state",description:"Audited singleton workspace document state.",type:"Chore",status:"open",priority:2,tags:["workspace-history"],created_at:t,updated_at:t,documents:e},body:""}}function uo(e,t=e.length){let n=En();for(let r of e.slice(0,t))n=kn(n,r.patch).document;return vn(n)}function Ks(e){return"documents"in e.metadata&&typeof e.metadata.documents=="object"&&e.metadata.documents!==null&&!Array.isArray(e.metadata.documents)?e.metadata.documents:{}}function fo(e){throw new k(`Workspace history verification failed: ${e.join(", ")}`,v.CONFLICT,{code:"workspace_history_chain_invalid",reason:"workspace_history_chain_verification_failed",verification_errors:[...e],required:"Repair the _workspace history chain before reading, reconciling, restoring, or appending audited singleton state.",why:"Continuing against an unverifiable append-only stream could hide or compound workspace state corruption.",examples:["pm history _workspace --verify --json","pm validate --check-history-drift --fix-hints --json"],nextSteps:["Inspect the exact verification_errors and preserve the corrupt stream as evidence.","Use the history-drift remediation returned by validate before retrying the refused operation."],recovery:{recovery_mode:"compact",next_best_command:"pm history _workspace --verify --json"}})}function Ef(e,t){let n=it.resolve(t),r=it.relative(e,n).replaceAll("\\","/");if(r.length===0||r===".."||r.startsWith("../")||it.isAbsolute(r))throw new TypeError("Workspace history document path must stay inside the tracker root");return{documentPath:r,absolutePath:n}}async function Uy(e){let t=await Xe(lo(e),Nt),n=Sn(t);n.ok||fo(n.errors);let r=Ks(t.length===0?Fe:uo(t)),o=[],i=[],s=[],a=[];for(let c of Object.keys(r).sort()){let d;try{let u=Ef(e,it.resolve(e,c));if(d=await ce(u.absolutePath),d===null){s.push(c);continue}let f=JSON.parse(d);(j(f)===j(r[c])?o:i).push(c)}catch{a.push(c)}}return{ok:i.length===0&&s.length===0&&a.length===0,document_count:Object.keys(r).length,matching_documents:o,mismatched_documents:i,missing_documents:s,unreadable_documents:a}}async function Gs(e){let t=lo(e.pmRoot),n=await Xe(t,Nt),r=Sn(n);r.ok||fo(r.errors);let o=e.idempotencyKey===void 0?void 0:n.find(f=>f.op===`${e.op}:${e.idempotencyKey}`);if(o)return{entry:o,historyPath:t};let i=le(),s=n.length===0?Fe:uo(n),a=Ks(s),c=a[e.documentPath];if(c!==void 0&&j(c)!==j(e.before))throw new k(`Workspace history state for "${e.documentPath}" changed outside the audited mutation path.`,v.CONFLICT,{code:"workspace_history_state_conflict",reason:"out_of_band_workspace_state",required:"Reconcile the singleton document with its matching _workspace history state before retrying the mutation.",why:"Accepting the write would make the append-only audit stream describe a state that was not actually observed.",examples:["pm history _workspace --verify","pm validate --check-history-drift --fix-hints"],nextSteps:["Review the version-control change that altered the singleton and preserve the intended document plus its matching workspace history.","Rerun the original mutation only after the on-disk singleton agrees with the latest audited workspace state."],recovery:{recovery_mode:"compact",next_best_command:"pm history _workspace --verify"}});let d=wf({...a,[e.documentPath]:e.after},n.length===0?i:s.metadata.created_at),u=Ze({nowIso:i,author:e.author,op:e.idempotencyKey===void 0?e.op:`${e.op}:${e.idempotencyKey}`,before:s,after:d,message:e.message});return await et(t,u),{entry:u,historyPath:t}}async function Vy(e){let t=await K(e.pmRoot,"workspace-history",e.lockTtlSeconds,e.author,!1,!1,e.lockWaitMs);try{return await Gs(e)}finally{await t()}}async function Wy(e){let t=await K(e.pmRoot,"workspace-history",e.lockTtlSeconds,e.author,!1,!1,e.lockWaitMs);try{let n=lo(e.pmRoot),r=await Xe(n,Nt),o=Sn(r);o.ok||fo(o.errors);let i=r.length===0?Fe:uo(r),s=Ze({nowIso:le(),author:e.author,op:e.op,before:i,after:i,message:e.message,context:e.context});return await et(n,s),{entry:s,historyPath:n}}finally{await t()}}async function Ys(e,t){if(t===e.raw)return!1;let n=t===null?null:JSON.parse(t),r=JSON.parse(e.raw);await B(e.filePath,e.raw);try{(t!==null||e.recordCreation!==!1)&&await Gs({pmRoot:e.pmRoot,documentPath:it.relative(e.pmRoot,e.filePath).replaceAll("\\","/"),before:n,after:r,op:e.op,author:e.author,lockTtlSeconds:e.lockTtlSeconds,lockWaitMs:e.lockWaitMs,message:e.message})}catch(o){throw t===null?await bf.rm(e.filePath,{force:!0}):await B(e.filePath,t),o}return!0}async function By(e){let t=await K(e.pmRoot,"workspace-history",e.lockTtlSeconds,e.author,!1,!1,e.lockWaitMs);try{let n=await ce(e.filePath),r=await e.mutate(n);return{changed:await Ys({...e,raw:r.raw},n),result:r.result}}finally{await t()}}async function Js(e){let t=await K(e.pmRoot,"workspace-history",e.lockTtlSeconds,e.author,!1,!1,e.lockWaitMs);try{return await Ys(e,await ce(e.filePath))}finally{await t()}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="c9cac741-16ba-5466-806f-bf8881a2ffa2")}catch{}})();var z={ok:!1},m=e=>typeof e=="string"?{ok:!0,value:e}:z,T=e=>typeof e=="boolean"?{ok:!0,value:e}:z;function A(e={}){return t=>typeof t!="number"||!Number.isFinite(t)||e.int&&(!Number.isInteger(t)||!Number.isSafeInteger(t))||e.positive&&t<=0||typeof e.min=="number"&&t<e.min||typeof e.max=="number"&&t>e.max?z:{ok:!0,value:t}}function O(...e){return t=>typeof t=="string"&&e.includes(t)?{ok:!0,value:t}:z}function y(e,t){return n=>{if(!Array.isArray(n)||t!==void 0&&n.length>t)return z;let r=[];for(let o of n){let i=e(o);if(!i.ok)return z;r.push(i.value)}return{ok:!0,value:r}}}function mo(e,t){return n=>typeof n=="string"&&n.length>0&&n.length<=e&&n===n.trim()&&(t===void 0||t.test(n))?{ok:!0,value:n}:z}function l(e){return t=>t===void 0?{ok:!0,value:void 0}:e(t)}function Un(e){return t=>{if(typeof t!="object"||t===null||Array.isArray(t))return z;let n={};for(let[r,o]of Object.entries(t)){let i=e(o);if(!i.ok)return z;n[r]=i.value}return{ok:!0,value:n}}}function x(e){return t=>{if(typeof t!="object"||t===null||Array.isArray(t))return z;let n=t,r={};for(let[o,i]of Object.entries(e)){let s=i(n[o]);if(!s.ok)return z;s.value!==void 0&&(r[o]=s.value)}return{ok:!0,value:r}}}var vf=x({key:m,values:y(m),required:l(T),aliases:l(y(m)),description:l(m)}),kf=x({command:O("create","update"),option:m,required:l(T),visible:l(T),enabled:l(T)}),Sf=x({name:m,description:l(m),default_status:l(m),execution_role:l(O("agent","human","gate")),folder:l(m),aliases:l(y(m)),required_create_fields:l(y(m)),required_create_repeatables:l(y(m)),options:l(y(vf)),command_option_policies:l(y(kf))}),If=x({id:m,aliases:l(y(m)),roles:l(y(O(...To))),description:l(m),order:l(A())}),xf=x({key:m,metadata_key:l(m),front_matter_key:l(m),cli_flag:l(m),cli_aliases:l(y(m)),description:l(m),type:l(O(...Oo)),commands:l(y(O(...Co))),repeatable:l(T),required:l(T),required_on_create:l(T),required_types:l(y(m)),allow_unset:l(T)}),Tf=e=>{if(!Array.isArray(e)||e.length!==2)return z;let[t,n]=e;return typeof t!="string"||typeof n!="string"?z:{ok:!0,value:[t,n]}},Of=x({type:m,allowed_transitions:y(Tf)}),Cf=l(x({version:l(A({int:!0})),files:l(x({types:l(m),statuses:l(m),fields:l(m),workflows:l(m)})),statuses:l(y(If)),fields:l(y(xf)),workflow:l(x({draft_status:l(m),open_status:l(m),in_progress_status:l(m),blocked_status:l(m),close_status:l(m),canceled_status:l(m)})),type_workflows:l(y(Of)),unknown_field_policy:l(O(...Ao))})),Af=l(x({preset:l(O(...Ro)),ownership_enforcement:l(O("none","warn","strict")),create_mode_default:l(O("progressive","strict")),close_validation_default:l(O("off","warn","strict")),require_close_reason:l(T),parent_reference:l(O("warn","strict_error")),metadata_profile:l(O("core","strict","custom")),force_required_for_stale_lock:l(T),create_default_type:l(m),workflow_enforcement:l(O("off","warn","strict")),duplicate_detection_mode:l(O("off","advisory","strict")),duplicate_detection_threshold:l(A({min:0,max:1})),duplicate_detection_limit:l(A({int:!0,min:0,max:20}))})),Rf=x({name:m,disabled:l(T),require_trusted:l(T),require_provenance:l(T),sandbox_profile:l(O("none","restricted","strict")),allowed_capabilities:l(y(m)),blocked_capabilities:l(y(m)),allowed_surfaces:l(y(m)),blocked_surfaces:l(y(m)),allowed_commands:l(y(m)),blocked_commands:l(y(m)),allowed_actions:l(y(m)),blocked_actions:l(y(m)),allowed_services:l(y(m)),blocked_services:l(y(m))}),_o=O("block","warn"),Nf=e=>typeof e=="string"?_o(e):x({global:l(_o),project:l(_o)})(e),Df=l(x({mode:l(O("off","warn","enforce")),trust_mode:l(O("off","warn","enforce")),pm_max_version_exceeded_mode:l(Nf),require_provenance:l(T),trusted_extensions:l(y(m)),default_sandbox_profile:l(O("none","restricted","strict")),allowed_extensions:l(y(m)),blocked_extensions:l(y(m)),allowed_capabilities:l(y(m)),blocked_capabilities:l(y(m)),allowed_surfaces:l(y(m)),blocked_surfaces:l(y(m)),allowed_commands:l(y(m)),blocked_commands:l(y(m)),allowed_actions:l(y(m)),blocked_actions:l(y(m)),allowed_services:l(y(m)),blocked_services:l(y(m)),extension_overrides:l(y(Rf))})),Pe=mo(128),jf=x({harness:mo(128,/^[a-z0-9]+(?:-[a-z0-9]+)*$/u),environment_keys:l(y(Pe,64)),model_environment_keys:l(y(Pe,64)),session_environment_keys:l(y(Pe,64)),provenance_environment_keys:l(Un(y(Pe,64))),provenance_resolvers:l(Un(O("ai_agent_version","claude_session_file"))),provenance_unavailable_dimensions:l(y(Pe,64)),argv_markers:l(y(Pe,64)),client_names:l(y(Pe,64))}),Pf=x({version:A({int:!0}),id_prefix:m,ids:l(x({token_length:l(A({int:!0,min:4,max:12}))})),author_default:m,agent_identity:l(x({probes_enabled:l(T),identity_vocabulary:l(x({version:A({int:!0,positive:!0}),aliases:Un(mo(128,/^[a-z0-9]+(?:-[a-z0-9]+)*$/u))})),harness_signals:y(jf)})),mutation_guard:l(x({require_attributed_author:l(T),secret_guard:l(O("off","advise","block")),stale_in_progress_hours:l(A({int:!0,positive:!0}))})),item_format:l(O("toon","json_markdown")),locks:x({ttl_seconds:A({int:!0}),wait_ms:l(A({int:!0,min:0}))}),checkpoints:l(x({retention_days:l(A({int:!0,positive:!0}))})),output:x({default_format:O("toon","json")}),ux:l(x({deprecation_hints:l(T)})),history:l(x({missing_stream:O("auto_create","strict_error"),compact_policy:l(x({enabled:l(T),max_entries:l(A({int:!0,positive:!0})),trigger:l(O("health_warn","auto"))}))})),validation:l(x({sprint_release_format:O("warn","strict_error"),parent_reference:l(O("warn","strict_error")),metadata_profile:l(O("core","strict","custom")),metadata_required_fields:l(y(m)),lifecycle_stale_blocker_reason_patterns:l(y(m)),lifecycle_closure_like_blocked_reason_patterns:l(y(m)),lifecycle_closure_like_resolution_patterns:l(y(m)),lifecycle_closure_like_actual_result_patterns:l(y(m)),estimate_defaults_by_type:l(Un(A({int:!0,positive:!0})))})),governance:Af,workflow:l(x({definition_of_done:y(m)})),testing:l(x({record_results_to_items:T,allow_untrusted_linked_tests:l(T)})),telemetry:l(x({enabled:T,first_run_prompt_completed:l(T),capture_level:l(O("minimal","redacted","max")),endpoint:l(m),installation_id:l(m),retention_days:l(A({int:!0,positive:!0}))})),agent_guidance:l(x({prompt_completed:l(T),declined:l(T),declined_at:l(m),template_version:l(A({int:!0,positive:!0})),last_checked_files:l(y(m))})),item_types:l(x({definitions:y(Sf)})),schema:Cf,context:l(x({default_depth:l(O("brief","standard","deep")),activity_limit:l(A({int:!0,positive:!0})),stale_threshold_days:l(A({int:!0,positive:!0})),sections:l(x({hierarchy:l(T),activity:l(T),progress:l(T),recently_created:l(T),unparented:l(T),blockers:l(T),files:l(T),workload:l(T),staleness:l(T),tests:l(T)}))})),extensions:x({enabled:y(m),disabled:y(m),policy:Df}),search:x({score_threshold:A(),hybrid_semantic_weight:l(A()),max_results:A({int:!0}),embedding_model:m,embedding_corpus_max_characters:l(A()),embedding_batch_size:A({int:!0}),embedding_timeout_ms:l(A({int:!0})),scanner_max_batch_retries:A({int:!0}),provider:l(m),corpus_fields:l(y(m)),mutation_refresh_policy:l(O("cache_only","semantic_configured","semantic_auto")),query_expansion:l(x({enabled:l(T),provider:l(m)})),rerank:l(x({enabled:l(T),model:l(m),top_k:l(A({int:!0,positive:!0}))})),bm25:l(x({k1:l(A()),b:l(A())}))}),providers:x({openai:x({base_url:m,api_key:m,model:m}),ollama:x({base_url:m,model:m})}),vector_store:x({adapter:l(m),collection_name:l(m),qdrant:x({url:m,api_key:m}),lancedb:x({path:m})})});function Qs(e){let t=Pf(e);return t.ok?{success:!0,data:t.value}:{success:!1}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="2d377bc4-c624-561c-9856-405c82099070")}catch{}})();var Lf={Epic:2880,Feature:480,Story:480,Milestone:2880,Task:120,Issue:60,Bug:60,Chore:30,Decision:15,Plan:120},Zs=120;function po(e){return typeof e=="number"&&Number.isFinite(e)&&e>0}function ta(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n.toLowerCase(),r);return t}var Mf=ta(Lf),ea=new WeakMap;function Ff(e){let t=ea.get(e);if(t)return t;let n=ta(e);return ea.set(e,n),n}function Gy(e,t){let n=(e??"").trim().toLowerCase();if(n.length===0)return Zs;if(t){let o=Ff(t).get(n);if(po(o))return Math.floor(o)}let r=Mf.get(n);return po(r)?Math.floor(r):Zs}function ho(e){let t={};if(e===null||typeof e!="object"||Array.isArray(e))return t;for(let[n,r]of Object.entries(e)){let o=n.trim();o.length===0||!po(r)||(t[o]=Math.floor(r))}return t}import{stat as $f}from"node:fs/promises";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="60da76ea-0bd3-56a9-a2bc-d88ba76e1013")}catch{}})();var Vn=new Map;function na(e){return[...new Set(e.map(t=>t.trim()).filter(t=>t.length>0))].sort((t,n)=>t.localeCompare(n))}async function zf(e){try{let t=await $f(e);return{path:e,mtime_ms:t.mtimeMs,size:t.size}}catch{return{path:e,mtime_ms:null,size:null}}}async function ye(e){let t=na(e),n=await Promise.all(t.map(r=>zf(r)));return n.sort((r,o)=>r.path.localeCompare(o.path)),n}function Dt(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],o=t[n];if(r.path!==o.path||r.mtime_ms!==o.mtime_ms||r.size!==o.size)return!1}return!0}function ra(e){return Vn.get(e)}function Wn(e,t){let n=na(t.tracked_paths),r=[...t.signatures].map(o=>({path:o.path,mtime_ms:o.mtime_ms,size:o.size})).sort((o,i)=>o.path.localeCompare(i.path));Vn.set(e,{tracked_paths:n,signatures:r,value:t.value})}function ge(e){if(e){Vn.delete(e);return}Vn.clear()}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="5b95183e-9fd3-55cf-9059-8736f692e96e")}catch{}})();var Hf="settings:write",ca=Symbol("pm.settings.persist_source"),Uf=128,Vf=new Set(["off","advisory","strict"]);function oa(e){return structuredClone(Do[e])}function Wf(e){return e==="minimal"||e==="default"||e==="strict"||e==="custom"?e:b.governance.preset}function ia(e,t){let n=typeof t.create_default_type=="string"?t.create_default_type.trim():void 0;return n&&n.length>0&&(e.create_default_type=n),(t.workflow_enforcement==="off"||t.workflow_enforcement==="warn"||t.workflow_enforcement==="strict")&&(e.workflow_enforcement=t.workflow_enforcement),t.require_close_reason===!1&&(e.require_close_reason=!1),e.duplicate_detection_mode=t.duplicate_detection_mode,e.duplicate_detection_threshold=t.duplicate_detection_threshold,e.duplicate_detection_limit=t.duplicate_detection_limit,e}function Bf(e){return e.preset==="custom"?ia({preset:"custom",ownership_enforcement:e.ownership_enforcement,create_mode_default:e.create_mode_default,close_validation_default:e.close_validation_default,parent_reference:e.parent_reference,metadata_profile:e.metadata_profile,force_required_for_stale_lock:e.force_required_for_stale_lock},e):ia({preset:e.preset},e)}function qf(e){let t=typeof e.create_default_type=="string"?e.create_default_type.trim():void 0,n={};t&&t.length>0&&(n.create_default_type=t),(e.workflow_enforcement==="off"||e.workflow_enforcement==="warn"||e.workflow_enforcement==="strict")&&(n.workflow_enforcement=e.workflow_enforcement),typeof e.require_close_reason=="boolean"&&(n.require_close_reason=e.require_close_reason),Vf.has(String(e.duplicate_detection_mode))&&(n.duplicate_detection_mode=e.duplicate_detection_mode);let r=e.duplicate_detection_threshold;[typeof r=="number",Number.isFinite(r),Number(r)>=0,Number(r)<=1].every(Boolean)&&(n.duplicate_detection_threshold=r);let o=e.duplicate_detection_limit;return[typeof o=="number",Number.isSafeInteger(o),Number(o)>=0,Number(o)<=20].every(Boolean)&&(n.duplicate_detection_limit=o),n}function qn(e){let t=e.governance??{},n=Wf(t.preset),r=qf(t);if(n==="custom"){let s=oa("default"),a=r.require_close_reason??s.require_close_reason;return{preset:n,ownership_enforcement:t.ownership_enforcement??s.ownership_enforcement,create_mode_default:t.create_mode_default??s.create_mode_default,close_validation_default:t.close_validation_default??s.close_validation_default,parent_reference:t.parent_reference??s.parent_reference,metadata_profile:t.metadata_profile??s.metadata_profile,force_required_for_stale_lock:t.force_required_for_stale_lock??s.force_required_for_stale_lock,...r,require_close_reason:a,duplicate_detection_mode:r.duplicate_detection_mode??s.duplicate_detection_mode,duplicate_detection_threshold:r.duplicate_detection_threshold??s.duplicate_detection_threshold,duplicate_detection_limit:r.duplicate_detection_limit??s.duplicate_detection_limit}}let o=oa(n),i=r.require_close_reason??o.require_close_reason;return{preset:n,...o,...r,require_close_reason:i}}function da(){return structuredClone(b)}function la(e){return e==="cache_only"||e==="semantic_configured"||e==="semantic_auto"?e:b.search.mutation_refresh_policy}function ua(e){return typeof e=="boolean"?e:b.search.query_expansion.enabled}function fa(e){return typeof e!="string"?b.search.query_expansion.provider:e.trim()}function _a(e){return typeof e=="boolean"?e:b.search.rerank.enabled}function ma(e){return typeof e!="string"?b.search.rerank.model:e.trim()}function pa(e){return typeof e=="number"&&Number.isFinite(e)&&Number.isInteger(e)&&e>0?e:b.search.rerank.top_k}function ha(e){if(typeof e!="string")return b.vector_store.collection_name;let n=e.trim().replaceAll(/[^a-zA-Z0-9_-]/g,"_").slice(0,Uf);return n.length>0?n:b.vector_store.collection_name}function yo(e){return{present:Array.isArray(e),values:Array.isArray(e)?structuredClone(e):[]}}function Xf(e,t){let n=e.schema,r=yo(n?.statuses),o=yo(n?.fields),i=yo(n?.type_workflows);return{source_settings:structuredClone(e),has_source_item_type_definitions:Array.isArray(e.item_types?.definitions),source_item_type_definitions:st(e.item_types?.definitions),has_source_schema_statuses:r.present,source_schema_statuses:r.values,has_source_schema_fields:o.present,source_schema_fields:o.values,has_source_schema_type_workflows:i.present,source_schema_type_workflows:i.values,runtime_item_type_definitions:st(t.item_types?.definitions),runtime_schema_statuses:structuredClone(t.schema.statuses),runtime_schema_fields:structuredClone(t.schema.fields),runtime_schema_type_workflows:structuredClone(t.schema.type_workflows??[])}}function ya(e,t){Object.defineProperty(e,ca,{value:t,writable:!0,configurable:!0,enumerable:!1})}function ga(e){let t=e[ca];if(!(!t||typeof t!="object"))return t}function Bn(e){let t=structuredClone(e.settings),n=ga(e.settings);return n&&ya(t,n),{settings:t,metadata:{has_explicit_item_format:e.metadata.has_explicit_item_format},warnings:[...e.warnings]}}function Kf(e,t,n){let r=ft(t);return[n,_t(e,r.files.types,ut.types),_t(e,r.files.statuses,ut.statuses),_t(e,r.files.fields,ut.fields),_t(e,r.files.workflows,ut.workflows)]}async function Gf(e,t,n){let r=await ye(t);Wn(e,{tracked_paths:t,signatures:r,value:Bn(n)})}async function Yf(e,t,n){try{await Gf(e,t,n)}catch{ge(e)}}function sa(e,t){return e.find(n=>n.path===t)}function Jf(e,t,n){for(let r of n){let o=sa(e,r),i=sa(t,r);if(!o||!i||!Dt([o],[i]))return!1}return!0}async function go(e,t,n,r,o){try{let i=await ye(t);if(!Jf(r,i,o)){ge(e);return}Wn(e,{tracked_paths:t,signatures:i,value:Bn(n)})}catch{ge(e)}}function Qf(e,t){let n=ft(e.schema),r=st(e.item_types?.definitions);if(!t)return{item_type_definitions:r,schema_statuses:n.statuses,schema_fields:n.fields,schema_type_workflows:n.type_workflows};let o=n.type_workflows??[],i=$e(r,t.runtime_item_type_definitions),s=$e(n.statuses,t.runtime_schema_statuses),a=$e(n.fields,t.runtime_schema_fields),c=$e(o,t.runtime_schema_type_workflows);return{item_type_definitions:i?t.has_source_item_type_definitions?st(t.source_item_type_definitions):[]:r,schema_statuses:s?t.has_source_schema_statuses?structuredClone(t.source_schema_statuses):[]:n.statuses,schema_fields:a?t.has_source_schema_fields?structuredClone(t.source_schema_fields):[]:n.fields,schema_type_workflows:c?t.has_source_schema_type_workflows?structuredClone(t.source_schema_type_workflows):void 0:n.type_workflows}}function jt(e){return{settings:da(),metadata:{has_explicit_item_format:!1},warnings:e?[e]:[]}}function Zf(e){if(typeof e!="object"||e===null||Array.isArray(e))return!1;let t=e.item_format;return t==="toon"||t==="json_markdown"}function wo(e){return[...new Set((e??[]).map(t=>t.trim()).filter(t=>t.length>0))].sort((t,n)=>t.localeCompare(n))}function ba(e){let t=b.agent_guidance,n=e?.template_version;return{prompt_completed:e?.prompt_completed===!0,declined:e?.declined===!0,declined_at:typeof e?.declined_at=="string"?e.declined_at:t.declined_at,template_version:typeof n=="number"&&Number.isInteger(n)&&n>0?n:t.template_version,last_checked_files:wo(e?.last_checked_files??t.last_checked_files)}}function Z(e){return[...new Set((e??[]).map(t=>t.trim().toLowerCase()).filter(t=>t.length>0))].sort((t,n)=>t.localeCompare(n))}function e_(e){return e==="off"||e==="warn"||e==="enforce"?e:b.extensions.policy.mode}function t_(e){return e==="off"||e==="warn"||e==="enforce"?e:b.extensions.policy.trust_mode}function wa(e){return e==="none"||e==="restricted"||e==="strict"?e:b.extensions.policy.default_sandbox_profile}function n_(e){let t=e.name.trim().toLowerCase();if(t.length===0)return null;let n={name:t};e.disabled===!0&&(n.disabled=!0),e.require_trusted===!0&&(n.require_trusted=!0),e.require_provenance===!0&&(n.require_provenance=!0),e.sandbox_profile!==void 0&&(n.sandbox_profile=wa(e.sandbox_profile));let r=Z(e.allowed_capabilities),o=Z(e.blocked_capabilities),i=Z(e.allowed_surfaces),s=Z(e.blocked_surfaces),a=Z(e.allowed_commands),c=Z(e.blocked_commands),d=Z(e.allowed_actions),u=Z(e.blocked_actions),f=Z(e.allowed_services),p=Z(e.blocked_services);return r.length>0&&(n.allowed_capabilities=r),o.length>0&&(n.blocked_capabilities=o),i.length>0&&(n.allowed_surfaces=i),s.length>0&&(n.blocked_surfaces=s),a.length>0&&(n.allowed_commands=a),c.length>0&&(n.blocked_commands=c),d.length>0&&(n.allowed_actions=d),u.length>0&&(n.blocked_actions=u),f.length>0&&(n.allowed_services=f),p.length>0&&(n.blocked_services=p),n}function r_(e){let t=new Map;for(let n of e??[]){let r=n_(n);r&&t.set(r.name,r)}return[...t.values()].sort((n,r)=>n.name.localeCompare(r.name))}function bo(e){return e==="block"||e==="warn"?e:void 0}function o_(e){if(typeof e=="string")return bo(e);if(typeof e=="object"&&e!==null&&!Array.isArray(e)){let t=bo(e.global),n=bo(e.project);return t===void 0&&n===void 0?void 0:{...t!==void 0?{global:t}:{},...n!==void 0?{project:n}:{}}}}function q(e,t){return Z(e?.[t]??b.extensions.policy[t])}function Ea(e){let t=o_(e?.pm_max_version_exceeded_mode);return{mode:e_(e?.mode),trust_mode:t_(e?.trust_mode),...t!==void 0?{pm_max_version_exceeded_mode:t}:{},require_provenance:e?.require_provenance===!0,trusted_extensions:q(e,"trusted_extensions"),default_sandbox_profile:wa(e?.default_sandbox_profile),allowed_extensions:q(e,"allowed_extensions"),blocked_extensions:q(e,"blocked_extensions"),allowed_capabilities:q(e,"allowed_capabilities"),blocked_capabilities:q(e,"blocked_capabilities"),allowed_surfaces:q(e,"allowed_surfaces"),blocked_surfaces:q(e,"blocked_surfaces"),allowed_commands:q(e,"allowed_commands"),blocked_commands:q(e,"blocked_commands"),allowed_actions:q(e,"allowed_actions"),blocked_actions:q(e,"blocked_actions"),allowed_services:q(e,"allowed_services"),blocked_services:q(e,"blocked_services"),extension_overrides:r_(e?.extension_overrides??b.extensions.policy.extension_overrides)}}function va(e){return[...new Set((e??[]).map(n=>n.trim().toLowerCase().replaceAll("-","_")))].filter(n=>n.length>0).sort((n,r)=>n.localeCompare(r)).filter(n=>["author","acceptance_criteria","estimated_minutes","close_reason","reviewer","risk","confidence","sprint","release"].includes(n))}function be(e){return[...new Set((e??[]).map(t=>t.trim().toLowerCase()).filter(t=>t.length>0))].sort((t,n)=>t.localeCompare(n))}function L(e,t){return e===void 0?t:e}function X(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:{}}function Eo(e){return Array.isArray(e)?e:[]}function i_(e,t,n){return{...t.validation,...e.validation,parent_reference:n.parent_reference,metadata_profile:n.metadata_profile,metadata_required_fields:va(e.validation?.metadata_required_fields),lifecycle_stale_blocker_reason_patterns:be(e.validation?.lifecycle_stale_blocker_reason_patterns??t.validation.lifecycle_stale_blocker_reason_patterns),lifecycle_closure_like_blocked_reason_patterns:be(e.validation?.lifecycle_closure_like_blocked_reason_patterns??t.validation.lifecycle_closure_like_blocked_reason_patterns),lifecycle_closure_like_resolution_patterns:be(e.validation?.lifecycle_closure_like_resolution_patterns??t.validation.lifecycle_closure_like_resolution_patterns),lifecycle_closure_like_actual_result_patterns:be(e.validation?.lifecycle_closure_like_actual_result_patterns??t.validation.lifecycle_closure_like_actual_result_patterns),estimate_defaults_by_type:ho(e.validation?.estimate_defaults_by_type)}}function s_(e,t){return{enabled:e.telemetry?.enabled??t.telemetry.enabled,first_run_prompt_completed:e.telemetry?.first_run_prompt_completed??t.telemetry.first_run_prompt_completed,capture_level:e.telemetry?.capture_level??t.telemetry.capture_level,endpoint:e.telemetry?.endpoint??t.telemetry.endpoint,installation_id:e.telemetry?.installation_id??t.telemetry.installation_id,retention_days:e.telemetry?.retention_days??t.telemetry.retention_days}}function a_(e,t){return{...t.search,...e.search,mutation_refresh_policy:la(e.search?.mutation_refresh_policy),query_expansion:{...t.search.query_expansion,...e.search?.query_expansion,enabled:ua(e.search?.query_expansion?.enabled),provider:fa(e.search?.query_expansion?.provider)},rerank:{...t.search.rerank,...e.search?.rerank,enabled:_a(e.search?.rerank?.enabled),model:ma(e.search?.rerank?.model),top_k:pa(e.search?.rerank?.top_k)}}}function c_(e,t){return{adapter:e.vector_store.adapter??t.vector_store.adapter,collection_name:ha(e.vector_store.collection_name),qdrant:{...t.vector_store.qdrant,...e.vector_store.qdrant},lancedb:{...t.vector_store.lancedb,...e.vector_store.lancedb}}}function d_(e,t){return e.item_format==="json_markdown"?"toon":e.item_format??t.item_format}function l_(e,t){return{default_depth:e.context?.default_depth??t.context.default_depth,activity_limit:e.context?.activity_limit??t.context.activity_limit,stale_threshold_days:e.context?.stale_threshold_days??t.context.stale_threshold_days,sections:{...t.context.sections,...e.context?.sections}}}function u_(e,t){return{openai:{...t.providers.openai,...e.providers.openai},ollama:{...t.providers.ollama,...e.providers.ollama}}}function st(e){let t=(e??[]).map(r=>Lo(r)).filter(r=>r!==null),n=new Map;for(let r of t)n.set(r.name.toLowerCase(),r);return[...n.values()].sort((r,o)=>r.name.localeCompare(o.name))}function ka(e){let t=da(),n=qn({governance:e.governance??{preset:"default"}});return{...t,...e,item_format:d_(e,t),locks:{...t.locks,...e.locks},ids:{...t.ids,...e.ids},agent_identity:structuredClone(e.agent_identity??t.agent_identity),mutation_guard:{...t.mutation_guard,...e.mutation_guard},checkpoints:{...t.checkpoints,...e.checkpoints},output:{...t.output,...e.output},ux:{...t.ux,...e.ux},history:{...t.history,...e.history,compact_policy:{...t.history.compact_policy,...e.history?.compact_policy}},validation:i_(e,t,n),governance:n,workflow:{definition_of_done:[...e.workflow?.definition_of_done??t.workflow.definition_of_done]},testing:{record_results_to_items:e.testing?.record_results_to_items??t.testing.record_results_to_items,allow_untrusted_linked_tests:e.testing?.allow_untrusted_linked_tests??t.testing.allow_untrusted_linked_tests},telemetry:s_(e,t),agent_guidance:ba(e.agent_guidance??t.agent_guidance),item_types:{definitions:st(e.item_types?.definitions)},schema:ft(e.schema??t.schema),context:l_(e,t),extensions:{enabled:[...e.extensions.enabled],disabled:[...e.extensions.disabled],policy:Ea(e.extensions.policy??t.extensions.policy)},search:a_(e,t),providers:u_(e,t),vector_store:c_(e,t)}}function f_(e){e.agent_identity=I(e.agent_identity,["probes_enabled","identity_vocabulary","harness_signals"]);let t=e.agent_identity;Object.hasOwn(t,"identity_vocabulary")&&(t.identity_vocabulary=I(X(t.identity_vocabulary),["version","aliases"])),e.agent_identity.harness_signals=Eo(e.agent_identity.harness_signals).map(n=>I(X(n),["harness","environment_keys","model_environment_keys","session_environment_keys","provenance_environment_keys","provenance_resolvers","provenance_unavailable_dimensions","argv_markers","client_names"])),e.locks=I(e.locks,["ttl_seconds","wait_ms"]),e.ids=I(e.ids,["token_length"]),e.mutation_guard=I(e.mutation_guard,["require_attributed_author","secret_guard","stale_in_progress_hours"]),e.checkpoints=I(e.checkpoints,["retention_days"]),e.output=I(e.output,["default_format"]),e.ux=I(e.ux,["deprecation_hints"]),e.history=I(e.history,["missing_stream","compact_policy"]),e.validation=I(e.validation,["sprint_release_format","parent_reference","metadata_profile","metadata_required_fields","lifecycle_stale_blocker_reason_patterns","lifecycle_closure_like_blocked_reason_patterns","lifecycle_closure_like_resolution_patterns","lifecycle_closure_like_actual_result_patterns","estimate_defaults_by_type"]),e.governance=I(e.governance,["preset","ownership_enforcement","create_mode_default","close_validation_default","require_close_reason","parent_reference","metadata_profile","force_required_for_stale_lock","create_default_type","workflow_enforcement","duplicate_detection_mode","duplicate_detection_threshold","duplicate_detection_limit"]),e.workflow=I(e.workflow,["definition_of_done"]),e.testing=I(e.testing,["record_results_to_items","allow_untrusted_linked_tests"]),e.telemetry=I(e.telemetry,["enabled","first_run_prompt_completed","capture_level","endpoint","installation_id","retention_days"]),e.agent_guidance=I(e.agent_guidance,["prompt_completed","declined","declined_at","template_version","last_checked_files"]),e.item_types=I(e.item_types,["definitions"]),e.schema=I(e.schema,["version","files","statuses","fields","workflow","type_workflows","unknown_field_policy"]),e.schema.files=I(X(e.schema.files),["types","statuses","fields","workflows"]),e.schema.workflow=I(X(e.schema.workflow),["draft_status","open_status","in_progress_status","blocked_status","close_status","canceled_status"]),e.context=I(e.context,["default_depth","activity_limit","stale_threshold_days","sections"]),e.context.sections=I(X(e.context.sections),["hierarchy","activity","progress","blockers","files","workload","staleness","tests"]),e.extensions=I(e.extensions,["enabled","disabled","policy"]),e.extensions.policy=I(X(e.extensions.policy),["mode","trust_mode","pm_max_version_exceeded_mode","require_provenance","trusted_extensions","default_sandbox_profile","allowed_extensions","blocked_extensions","allowed_capabilities","blocked_capabilities","allowed_surfaces","blocked_surfaces","allowed_commands","blocked_commands","allowed_actions","blocked_actions","allowed_services","blocked_services","extension_overrides"]),e.extensions.policy.extension_overrides=Eo(e.extensions.policy.extension_overrides).map(n=>I(X(n),["name","disabled","require_trusted","require_provenance","sandbox_profile","allowed_capabilities","blocked_capabilities","allowed_surfaces","blocked_surfaces","allowed_commands","blocked_commands","allowed_actions","blocked_actions","allowed_services","blocked_services"])),e.search=I(e.search,["score_threshold","hybrid_semantic_weight","max_results","embedding_model","embedding_corpus_max_characters","embedding_batch_size","embedding_timeout_ms","scanner_max_batch_retries","provider","mutation_refresh_policy","query_expansion","rerank"]),e.search.query_expansion=I(X(e.search.query_expansion),["enabled","provider"]),e.search.rerank=I(X(e.search.rerank),["enabled","model","top_k"]),e.providers=I(e.providers,["openai","ollama"]),e.providers.openai=I(X(e.providers.openai),["base_url","api_key","model"]),e.providers.ollama=I(X(e.providers.ollama),["base_url","model"]),e.vector_store=I(e.vector_store,["adapter","collection_name","qdrant","lancedb"]),e.vector_store.qdrant=I(X(e.vector_store.qdrant),["url","api_key"]),e.vector_store.lancedb=I(X(e.vector_store.lancedb),["path"])}function __(e){return{...e,locks:L(e.locks,b.locks),ids:L(e.ids,b.ids),agent_identity:L(e.agent_identity,b.agent_identity),mutation_guard:L(e.mutation_guard,b.mutation_guard),checkpoints:L(e.checkpoints,b.checkpoints),output:L(e.output,b.output),ux:L(e.ux,b.ux),history:L(e.history,b.history),validation:L(e.validation,b.validation),workflow:L(e.workflow,b.workflow),testing:L(e.testing,b.testing),telemetry:L(e.telemetry,b.telemetry),agent_guidance:L(e.agent_guidance,b.agent_guidance),item_types:L(e.item_types,b.item_types),schema:L(e.schema,b.schema),context:L(e.context,b.context),extensions:L(e.extensions,b.extensions),search:L(e.search,b.search),providers:L(e.providers,b.providers),vector_store:L(e.vector_store,b.vector_store)}}function m_(e,t){return{...e.validation,parent_reference:t.parent_reference,metadata_profile:t.metadata_profile,metadata_required_fields:va(e.validation?.metadata_required_fields),lifecycle_stale_blocker_reason_patterns:be(e.validation?.lifecycle_stale_blocker_reason_patterns??b.validation.lifecycle_stale_blocker_reason_patterns),lifecycle_closure_like_blocked_reason_patterns:be(e.validation?.lifecycle_closure_like_blocked_reason_patterns??b.validation.lifecycle_closure_like_blocked_reason_patterns),lifecycle_closure_like_resolution_patterns:be(e.validation?.lifecycle_closure_like_resolution_patterns??b.validation.lifecycle_closure_like_resolution_patterns),lifecycle_closure_like_actual_result_patterns:be(e.validation?.lifecycle_closure_like_actual_result_patterns??b.validation.lifecycle_closure_like_actual_result_patterns),estimate_defaults_by_type:ho(e.validation?.estimate_defaults_by_type)}}function p_(e){return{...b.search,...e.search,mutation_refresh_policy:la(e.search?.mutation_refresh_policy),query_expansion:{...b.search.query_expansion,...e.search?.query_expansion,enabled:ua(e.search?.query_expansion?.enabled),provider:fa(e.search?.query_expansion?.provider)},rerank:{...b.search.rerank,...e.search?.rerank,enabled:_a(e.search?.rerank?.enabled),model:ma(e.search?.rerank?.model),top_k:pa(e.search?.rerank?.top_k)}}}function h_(e){return{default_depth:e.context?.default_depth??b.context.default_depth,activity_limit:e.context?.activity_limit??b.context.activity_limit,stale_threshold_days:e.context?.stale_threshold_days??b.context.stale_threshold_days,sections:{...b.context.sections,...e.context?.sections}}}function y_(e){return{...e.vector_store,adapter:e.vector_store?.adapter??b.vector_store.adapter,collection_name:ha(e.vector_store?.collection_name),qdrant:{...e.vector_store?.qdrant},lancedb:{...e.vector_store?.lancedb}}}function g_(e,t,n,r){return{...e,item_format:"toon",validation:m_(e,t),governance:t,agent_guidance:ba(e.agent_guidance),item_types:{definitions:r.item_type_definitions},schema:{...n,statuses:r.schema_statuses,fields:r.schema_fields,type_workflows:r.schema_type_workflows},search:p_(e),context:h_(e),extensions:{enabled:wo(e.extensions?.enabled),disabled:wo(e.extensions?.disabled),policy:Ea(e.extensions?.policy)},vector_store:y_(e)}}function Sa(e,t,n){let r=new Set([...Object.keys(t),...Object.keys(n)]);for(let o of r){let i=t[o],s=n[o];if(!$e(i,s)){if(s===void 0){delete e[o];continue}if(typeof i=="object"&&i!==null&&!Array.isArray(i)&&typeof s=="object"&&s!==null&&!Array.isArray(s)){let a=e[o],c=typeof a=="object"&&a!==null&&!Array.isArray(a)?a:{};Sa(c,i,s),Object.keys(c).length>0?e[o]=c:delete e[o];continue}e[o]=structuredClone(s)}}}var Ia=["version","id_prefix","ids","author_default","agent_identity","mutation_guard","item_format","locks","checkpoints","output","ux","history","validation","governance","workflow","testing","telemetry","agent_guidance","item_types","schema","context","extensions","search","providers","vector_store"];function aa(e,t){let n=__(e),r=qn(n),o=ft(n.schema),i=Qf(n,t),s=g_(n,r,o,i),a=I({...s,governance:Bf(r)},Ia);return f_(a),a}function b_(e,t={}){let n=aa(e,t.persist_source);if(t.persist_source){let r=ka(t.persist_source.source_settings);r.item_types={definitions:structuredClone(t.persist_source.runtime_item_type_definitions)},r.schema={...r.schema,statuses:structuredClone(t.persist_source.runtime_schema_statuses),fields:structuredClone(t.persist_source.runtime_schema_fields),type_workflows:structuredClone(t.persist_source.runtime_schema_type_workflows)};let o=aa(r,t.persist_source),i=structuredClone(t.persist_source.source_settings);return Sa(i,o,n),`${JSON.stringify(I(i,Ia),null,2)}
175
- `}return`${JSON.stringify(n,null,2)}
176
- `}async function xa(e){let t=dt(e),n=[t];await de({path:t,scope:"project"});let r=ra(e);if(r){let d=await ye(r.tracked_paths);if(Dt(d,r.signatures))return Bn(r.value)}let o=await ye([t]),i;try{i=await ce(t)}catch{return jt("settings_read_fs_error")}if(i===null){let d=jt();return await go(e,[t],d,o,[t]),d}let s=await ye([t]);if(!Dt(o,s))return ge(e),xa(e);let a;try{a=JSON.parse(i)}catch{let d=jt("settings_read_invalid_json");return await go(e,[t],d,s,[t]),d}let c=Qs(a);if(!c.success){let d=jt("settings_read_invalid_schema");return await go(e,[t],d,s,[t]),d}try{let d=ka(c.data),u=Kf(e,d.schema,t);n=u;let f=await ye(u),p=await Vo(e,d.schema),h=await Wo(e,d.schema),_=await ye(u),E={...d,item_types:{definitions:st([...d.item_types.definitions,...Eo(h.type_definitions_from_file)])},schema:h.schema};ya(E,Xf(c.data,E));let S={settings:E,metadata:{has_explicit_item_format:Zf(a)},warnings:[...c.data.item_format==="json_markdown"?["settings_item_format_legacy_json_markdown_coerced_to_toon"]:[],...p.created_paths.map(C=>`runtime_schema_bootstrap_created:${C}`),...h.warnings]};return p.created_paths.length===0?Dt(f,_)?Wn(e,{tracked_paths:u,signatures:_,value:Bn(S)}):ge(e):ge(e),S}catch{let d=jt("settings_read_merge_failed");return await Yf(e,n,d),d}}async function ug(e){return(await xa(e)).settings}async function fg(e,t,n=Hf){let r=dt(e),o=b_(t,{persist_source:ga(t)});try{await Js({pmRoot:e,filePath:r,raw:o,op:n,author:wi(void 0,t.author_default),lockTtlSeconds:t.locks.ttl_seconds,lockWaitMs:t.locks.wait_ms,recordCreation:!1}),await ne({path:r,scope:"project",op:n})}finally{ge(e)}}import w_ from"node:fs/promises";import E_ from"node:path";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="58fd6fef-9c13-5c6a-9110-b760461896aa")}catch{}})();function v_(e){return[...new Set(e.filter(t=>t.trim().length>0))].sort((t,n)=>t.localeCompare(n))}function k_(e,t){return new k(`Missing history stream for ${e}. ${t} requires history streams when settings.history.missing_stream is strict_error.`,v.NOT_FOUND)}async function S_(e,t){return await jo(E_.dirname(e)),await(await w_.open(e,"a")).close(),ne({path:e,scope:"project",op:`${t}:history:auto_create`})}async function vo(e){return I_({pmRoot:e.pmRoot,settings:e.settings,itemIds:[e.itemId],commandLabel:e.commandLabel})}async function I_(e){let t=v_(e.itemIds),n=[],r=[];for(let o of t){let i=lt(e.pmRoot,o);if(!await ke(i)){if(e.settings.history.missing_stream==="strict_error")throw k_(o,e.commandLabel);r.push(...await S_(i,e.commandLabel)),r.push(`history_stream_auto_created:${o}`),n.push(o)}}return{auto_created_ids:n,warnings:r}}import So from"node:fs/promises";import Xn from"node:path";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="8b0efe32-43f5-51ed-b1d5-5c26a3ae5bf0")}catch{}})();function we(e,t){return typeof e=="object"&&e!==null&&"code"in e&&e.code===t}function Io(e){let t=["--pm-path",e,"init","--defaults","--agent-guidance","skip"];return{suggested_retry:`pm ${t.map(n=>`'${n.replaceAll("'",`'"'"'`)}'`).join(" ")}`,suggested_retry_args:t}}function Kn(e){return new k(`Tracker root is not a directory at ${e}.`,v.USAGE,{code:"tracker_root_not_directory",reason:"not_a_directory",resolved_path:e,nextSteps:["Pass a tracker directory, usually <workspace>/.agents/pm, rather than a file path."]})}function ko(e){return new k(`Tracker root is not readable at ${e}.`,v.GENERIC_FAILURE,{code:"tracker_root_unreadable",reason:"unreadable",resolved_path:e,nextSteps:["Grant read and directory-search permission to the tracker root, then retry."]})}async function x_(e){let t=Xn.resolve(e),n=Xn.parse(t).root,r=Xn.dirname(t);for(;r!==n;){let o;try{o=await So.stat(r)}catch(i){if(we(i,"ENOTDIR"))throw Kn(e);if(!we(i,"ENOENT"))throw i;r=Xn.dirname(r);continue}if(!o.isDirectory())throw Kn(e);return}}async function at(e){let t;try{t=await So.stat(e)}catch(n){throw we(n,"ENOENT")?(await x_(e),new k(`Tracker is not initialized at ${e}. Tracker root does not exist. Run pm init first.`,v.NOT_FOUND,{code:"tracker_root_missing",reason:"missing",resolved_path:e,nextSteps:["Confirm the tracker root path or initialize it with the emitted retry."],recovery:Io(e)})):we(n,"ENOTDIR")?Kn(e):we(n,"EACCES")||we(n,"EPERM")?ko(e):n}if(!t.isDirectory())throw Kn(e);if(process.platform!=="win32"&&((t.mode&292)===0||(t.mode&73)===0))throw ko(e);try{await(await So.opendir(e)).close()}catch(n){throw we(n,"EACCES")||we(n,"EPERM")?ko(e):n}}async function T_(e){if(await at(e),!await ke(dt(e)))throw new k(`Tracker is not initialized at ${e}. Run pm init first.`,v.NOT_FOUND,{code:"tracker_not_initialized",reason:"settings_missing",resolved_path:e,nextSteps:["Initialize the selected tracker root with the emitted retry."],recovery:Io(e)})}import ct from"node:fs/promises";import O_ from"node:path";import{isUtf8 as C_}from"node:buffer";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="c3390c01-c153-5baa-b9bd-07ea8d34828f")}catch{}})();async function A_(e){try{return await ct.access(e),!0}catch{return!1}}function R_(e,t){e&&(e.includes(t)||e.push(t))}function Ta(e){return e??Ht(Se())}function N_(e){return e==="toon"?["toon","json_markdown"]:e==="json_markdown"?["json_markdown","toon"]:["toon","json_markdown"]}async function Oa(e,t,n="pm-",r,o=ve){let i=t.trim(),s=i.startsWith("#")?i.slice(1):i;if(s.length===0)return null;let a=vt(t,n),c=Qr(t),d=[...new Set([s,a,c])].filter(p=>p.length>0),u=Object.entries(o),f=N_(r);for(let p of d)for(let[h]of u)for(let _ of f){let E=Qn(e,h,p,_,o);if(await A_(E))return{id:p,type:h,itemPath:E,item_format:_}}return null}async function Ca(e,t={}){let n=await D_(e,t);if(n.error!==null)throw n.error;return{raw:n.raw,document:n.document}}async function D_(e,t={}){let n=await ct.readFile(e.itemPath);if(!C_(n))throw new k("Item contains invalid UTF-8; preserve a binary backup before recovering it.",v.CONFLICT,{code:"item_document_encoding_invalid",item_id:e.id,item_path:e.itemPath,byte_length:n.length,empty:!1});let r=n.toString("utf8");await de({path:e.itemPath,scope:"project"});let o;try{o=nn(r,{format:e.item_format,schema:t.schema,extensionFieldNames:Ta(t.extensionFieldNames),onWarning:i=>R_(t.warnings,i)})}catch(i){if(i instanceof k&&i.code==="item_document_invalid")return{raw:r,document:null,error:new k(`Cannot read ${e.id} at ${e.itemPath}${n.length===0?" (zero-length file)":""}: ${i.message}`,i.exitCode,{...i.context,item_id:e.id,item_path:e.itemPath,byte_length:n.length,empty:n.length===0,nextSteps:[`Run pm history ${e.id} --full, then pm restore ${e.id} <version> to recover a recorded state.`]})};throw i}return{raw:r,document:o,error:null}}async function j_(e,t,n=ve,r,o){return await at(e),(await Us(e,t,n,r,o)).map(s=>s.metadata)}async function Yg(e,t,n=ve,r,o){return await at(e),(await Vs(e,t,n,r,o)).map(s=>s.metadata)}async function Jg(e,t,n=ve,r,o,i={}){return await at(e),(await Fn(e,t,n,r,o,{includeBody:!0,forceSourceScan:i.forceSourceScan})).map(a=>({...a.metadata,body:a.body}))}function Aa(e){return{async get(t){let n=await Oa(e.pmRoot,t,e.settings.id_prefix,e.settings.item_format,e.typeToFolder);if(!n)return null;let{document:r}=await Ca(n,{schema:e.settings.schema});return{item:r.metadata,body:r.body}},list:()=>j_(e.pmRoot,e.settings.item_format,e.typeToFolder,void 0,e.settings.schema)}}async function P_(e,t){let n=new Set(Object.values(t)),r=[];return await Promise.all([...n].map(async o=>{try{let i=await ct.readdir(O_.join(e,o));for(let s of i)for(let a of Ut)if(s.toLowerCase().endsWith(a)){r.push(s.slice(0,-a.length));break}}catch{}})),r}async function L_(e,t,n,r){let o=vt(t,n),i=await P_(e,r);if(i.length===0)return[];let s=Math.max(3,Math.floor(o.length/2));return i.map(c=>({id:c,distance:Pt(c,o,s)})).filter(c=>c.distance!==null).sort((c,d)=>c.distance-d.distance).slice(0,3).map(c=>c.id)}async function M_(e,t,n,r){let o=await L_(e,t,n,r),i=["Confirm the active --path/PM_PATH scope, then retry with a valid id."];return o.length>0&&i.unshift(`Did you mean one of: ${o.join(", ")}?`),new k(`Item ${t} not found`,v.NOT_FOUND,{nextSteps:i})}function F_(e,t){return e==="claim"||t===!0&&(e==="comment_add"||e==="comment_edit"||e==="comment_delete"||e==="note_add"||e==="learning_add"||e==="release"||e==="update"||e==="update_ownership_bypass"||e==="update_audit")}async function Ra(e){let t=e.typeToFolder??Mo(e.settings,Se()).type_to_folder,n=await Oa(e.pmRoot,e.id,e.settings.id_prefix,e.settings.item_format,t);if(!n)throw await M_(e.pmRoot,e.id,e.settings.id_prefix,t);let r=await K(e.pmRoot,n.id,e.settings.locks.ttl_seconds,e.author,!!e.force,e.settings.governance.force_required_for_stale_lock,e.settings.locks.wait_ms);try{let o=[],{raw:i,document:s}=await Ca(n,{schema:e.settings.schema,extensionFieldNames:e.extensionFieldNames,warnings:o}),a=s.metadata.assignee?.trim(),c=s.metadata.claim_principal?.trim()||a,d=bi(e.author),u=qn(e.settings);if(a&&c!==d&&!e.force&&!F_(e.op,e.bypassAssigneeConflict)){if(u.ownership_enforcement==="strict")throw new k(`Item ${n.id} is assigned to ${a}. Use --force to override.`,v.CONFLICT);u.ownership_enforcement==="warn"&&o.push(`ownership_warning:assignee_conflict:${n.id}:${a}`)}return{typeToFolder:t,located:n,originalRaw:i,document:s,warnings:o,releaseLock:r}}catch(o){throw await r(),o}}function $_(e,t,n){if(!e.handled||typeof e.result!="object"||e.result===null)return{effectiveTargetItemPath:t,effectiveSerializedAfter:n,skipItemWrite:!1};let r=e.result;return{effectiveTargetItemPath:typeof r.target_item_path=="string"&&r.target_item_path.trim().length>0?r.target_item_path:t,effectiveSerializedAfter:typeof r.contents=="string"?r.contents:n,skipItemWrite:r.skip_write===!0}}async function z_(e){if(!e.skipItemWrite){if(e.effectiveTargetItemPath!==e.originalItemPath){await B(e.originalItemPath,e.originalRaw),await ct.rm(e.effectiveTargetItemPath,{force:!0});return}await B(e.originalItemPath,e.originalRaw)}}async function Na(e){let t=await Ra({pmRoot:e.pmRoot,settings:e.settings,id:e.id,op:e.op,author:e.author,force:e.force,bypassAssigneeConflict:e.bypassAssigneeConflict,extensionFieldNames:e.extensionFieldNames,typeToFolder:e.typeToFolder}),{typeToFolder:n,located:r,originalRaw:o,document:i,warnings:s,releaseLock:a}=t;try{let c=Q(i,{schema:e.settings.schema,extensionFieldNames:e.extensionFieldNames}),d=Q(structuredClone(i),{schema:e.settings.schema,extensionFieldNames:e.extensionFieldNames}),u=await e.mutate(d);if(e.skipNoop===!0&&u.changedFields.length===0)return{item:c.metadata,body:c.body,changedFields:[],warnings:[...s,...u.warnings??[]]};let f=e.resolveHistoryContext?.();d.metadata.updated_at=le();let p=Q(d,{schema:e.settings.schema,extensionFieldNames:e.extensionFieldNames});await tr({pm_root:e.pmRoot,operation:e.op,before:c,after:p,changed_fields:u.changedFields,sdk:Aa({pmRoot:e.pmRoot,settings:e.settings,typeToFolder:n})});let h=await vo({pmRoot:e.pmRoot,settings:e.settings,itemId:r.id,commandLabel:e.op}),_="toon",E=Li(p,{format:_,schema:e.settings.schema,extensionFieldNames:e.extensionFieldNames}),S=Qn(e.pmRoot,p.metadata.type,r.id,_,n),C=lt(e.pmRoot,r.id),D=await mt("item_store_write",{op:e.op,pm_root:e.pmRoot,item_id:r.id,source_item_path:r.itemPath,target_item_path:S,history_path:C,item_format:_,before:c,after:p,contents:E}),{effectiveTargetItemPath:F,effectiveSerializedAfter:$,skipItemWrite:U}=$_(D,S,E),Le=await io(e.pmRoot,e.author),W=[];try{U||await B(F,$),!U&&F!==r.itemPath&&await ct.rm(r.itemPath);let Y=Ze({nowIso:p.metadata.updated_at,author:e.author,op:e.op,before:c,after:p,message:e.message,context:f});try{await et(C,Y)}catch(Me){throw await z_({skipItemWrite:U,effectiveTargetItemPath:F,originalItemPath:r.itemPath,originalRaw:o}),Me}U||(W=await so({pmRoot:e.pmRoot,preferredFormat:e.settings.item_format,typeToFolder:n,schema:e.settings.schema,itemPath:F,previousItemPath:r.itemPath,document:p}))}finally{await Le()}let Ee=[...await ne({path:F,scope:"project",op:e.op,item_id:p.metadata.id,item_type:p.metadata.type,before:c,after:p,changed_fields:u.changedFields}),...await ne({path:C,scope:"project",op:`${e.op}:history`,item_id:p.metadata.id,item_type:p.metadata.type,before:c,after:p,changed_fields:u.changedFields})];return er({id:p.metadata.id,op:e.op,item_type:p.metadata.type,previous_status:c.metadata.status,status:p.metadata.status,previous:Vt(c.metadata,u.changedFields),current:Vt(p.metadata,u.changedFields),changed_fields:u.changedFields}),{item:p.metadata,body:p.body,changedFields:u.changedFields,warnings:[...s,...u.warnings??[],...h.warnings,...D.warnings,...W,...Ee]}}finally{await a()}}async function Qg(e){return Na(e)}async function Zg(e){return Na(e)}async function eb(e){let t=await Ra({pmRoot:e.pmRoot,settings:e.settings,id:e.id,op:"delete",author:e.author,force:e.force}),{located:n,originalRaw:r,document:o,warnings:i,releaseLock:s}=t;try{let a=Ta(void 0),c=Q(o,{schema:e.settings.schema,extensionFieldNames:a});await tr({pm_root:e.pmRoot,operation:"delete",before:c,after:null,changed_fields:["deleted"],sdk:Aa({pmRoot:e.pmRoot,settings:e.settings,typeToFolder:t.typeToFolder})});let d=await vo({pmRoot:e.pmRoot,settings:e.settings,itemId:n.id,commandLabel:"delete"}),u=le(),f=Fe,p=Ze({nowIso:u,author:e.author,op:"delete",before:c,after:f,message:e.message}),h=lt(e.pmRoot,n.id),_=await mt("item_store_delete",{op:"delete",pm_root:e.pmRoot,item_id:n.id,item_path:n.itemPath,history_path:h,before:c}),E=n.itemPath,S=!1;if(_.handled&&typeof _.result=="object"&&_.result!==null){let $=_.result;typeof $.item_path=="string"&&$.item_path.trim().length>0&&(E=$.item_path),$.skip_delete===!0&&(S=!0)}if(e.dryRun===!0)return{item:c.metadata,changedFields:["deleted"],targetPath:E,warnings:[...i,...d.warnings,..._.warnings]};let C=await io(e.pmRoot,e.author),D=[];try{S||await ct.rm(E);try{await et(h,p)}catch($){throw S||await B(E,r),$}S||(D=await so({pmRoot:e.pmRoot,preferredFormat:e.settings.item_format,typeToFolder:t.typeToFolder,schema:e.settings.schema,itemPath:E,document:null}))}finally{await C()}let F=[...await ne({path:E,scope:"project",op:"delete",item_id:c.metadata.id,item_type:c.metadata.type,before:c,after:f,changed_fields:["deleted"]}),...await ne({path:h,scope:"project",op:"delete:history",item_id:c.metadata.id,item_type:c.metadata.type,before:c,after:f,changed_fields:["deleted"]})];return er({id:c.metadata.id,op:"delete",item_type:c.metadata.type,previous_status:c.metadata.status,previous:Vt(c.metadata,Object.keys(c.metadata)),changed_fields:["deleted"]}),{item:c.metadata,changedFields:["deleted"],warnings:[...i,...d.warnings,..._.warnings,...D,...F]}}finally{await s()}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="745b9c3b-538c-558f-b018-b406ca4318f0")}catch{}})();(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="a9b23a46-0bba-5174-8793-dfc37016d1fb")}catch{}})();function H_(e,t){let n=e.trim().toLowerCase();if(n.length===0)return;let r=Math.floor(n.length/3);return t.map(o=>({candidate:o,distance:Pt(n,o.toLowerCase(),r)??Number.POSITIVE_INFINITY})).filter(({distance:o})=>Number.isFinite(o)).sort((o,i)=>o.distance!==i.distance?o.distance-i.distance:o.candidate.localeCompare(i.candidate))[0]?.candidate}function Da(e){return["pm",...e].map(t=>/^[A-Za-z0-9_./:@=-]+$/u.test(t)?t:JSON.stringify(t)).join(" ")}function ab(e){let t=e.command_path.trim().replaceAll(/\s+/gu," "),n=e.token.trim(),r=n.length===0?"<empty>":n,o=[...new Set(e.allowed.map(p=>p.trim()))].filter(Boolean).sort((p,h)=>p.localeCompare(h));if(t.length===0||r.length===0||o.length===0)throw new TypeError("Unknown-subcommand contracts require a path, token, and allowed set");let i=t.split(" "),s=e.trailing_args??[],a=e.display_name??`pm ${t}`,c=e.token_kind??"subcommand",d=e.retry_command?void 0:H_(r,o),u=Da([...i,r,...s]),f=e.retry_command??(d?Da([...i,d,...s]):void 0);return new k(`Unknown ${a} ${c} "${r}". Allowed: ${o.join(", ")}${e.message_suffix??""}`,e.exit_code??v.USAGE,{code:"unknown_subcommand",reason:"unknown_positional_token",examples:[...f?[f]:[],...e.examples??[],`pm ${t} --help`],nextSteps:f?[`Retry with the suggested command: ${f}`]:["Choose one value from recovery.allowed_values."],recovery:{attempted_command:u,allowed_values:o,suggested_retry:f,fallback_candidates:e.fallback_candidates}})}export{kl as a,Ie as b,or as c,V_ as d,W_ as e,Bt as f,dr as g,J_ as h,Q_ as i,Z_ as j,em as k,tm as l,nm as m,gr as n,br as o,ui as p,fm as q,_m as r,mm as s,pm as t,hm as u,ym as v,kr as w,hi as x,gm as y,bm as z,wm as A,_c as B,bi as C,wi as D,Ii as E,pt as F,jm as G,Pm as H,Ve as I,Ei as J,vm as K,vi as L,mc as M,km as N,Yt as O,hc as P,Tm as Q,Qt as R,tn as S,nn as T,Li as U,Q as V,Xe as W,Ke as X,al as Y,Ep as Z,vp as _,kp as $,qp as aa,Xp as ba,Rl as ca,yn as da,Re as ea,Et as fa,ph as ga,Kr as ha,wn as ia,fs as ja,hh as ka,ps as la,yh as ma,Ze as na,et as oa,Mi as pa,Kl as qa,En as ra,xh as sa,Yr as ta,vn as ua,Th as va,Oh as wa,ws as xa,kn as ya,ks as za,Sn as Aa,nu as Ba,Ch as Ca,Ah as Da,Nt as Ea,lo as Fa,Uy as Ga,Vy as Ha,Wy as Ia,By as Ja,Js as Ka,Gy as La,qn as Ma,xa as Na,ug as Oa,fg as Pa,vo as Qa,I_ as Ra,Is as Sa,Qr as Ta,vt as Ua,Mh as Va,Vh as Wa,Wh as Xa,Bh as Ya,Ms as Za,vu as _a,io as $a,oy as ab,so as bb,Fn as cb,at as db,T_ as eb,Oa as fb,Ca as gb,D_ as hb,j_ as ib,Yg as jb,Jg as kb,Aa as lb,M_ as mb,Qg as nb,Zg as ob,eb as pb,ab as qb,Hn as rb,je as sb,by as tb,wy as ub,he as vb,fy as wb,zn as xb,_y as yb,df as zb,my as Ab,At as Bb,ff as Cb,mf as Db,pf as Eb,hf as Fb,Ty as Gb,Oy as Hb};
177
- //# sourceMappingURL=chunk-WIUPWIZR.js.map