@unbrained/pm-cli 2026.8.7 → 2026.8.8

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 (226) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/CHANGELOG.md +35 -0
  3. package/dist/cli/main.js +4 -3
  4. package/dist/cli/register-annotations.d.ts +11 -0
  5. package/dist/cli/register-annotations.js +195 -0
  6. package/dist/cli/register-history-author.js +7 -30
  7. package/dist/cli/register-mutation.js +25 -206
  8. package/dist/cli/runtime-compatibility-boundary.d.ts +17 -0
  9. package/dist/cli/runtime-compatibility-boundary.js +43 -0
  10. package/dist/cli-bundle/bundle-manifest.json +155 -691
  11. package/dist/cli-bundle/chunks/chunk-2ZMXX3Q6.js +2068 -0
  12. package/dist/cli-bundle/chunks/chunk-ALDHXLPS.js +3 -0
  13. package/dist/cli-bundle/chunks/chunk-CBLA33YK.js +8 -0
  14. package/dist/cli-bundle/chunks/chunk-GKA54IJM.js +5 -0
  15. package/dist/cli-bundle/chunks/chunk-KRY7SRUO.js +2 -0
  16. package/dist/cli-bundle/chunks/chunk-MNJ4NNSY.js +26 -0
  17. package/dist/cli-bundle/chunks/chunk-NUXRRNAB.js +77 -0
  18. package/dist/cli-bundle/chunks/chunk-OJPCFDDY.js +13 -0
  19. package/dist/cli-bundle/chunks/chunk-PFSD3DAN.js +194 -0
  20. package/dist/cli-bundle/chunks/chunk-QWRRFYK3.js +2 -0
  21. package/dist/cli-bundle/chunks/chunk-SQ7QZFQ6.js +2 -0
  22. package/dist/cli-bundle/chunks/{register-list-query-FJZCJ67O.js → register-list-query-WFZAMJHZ.js} +8 -8
  23. package/dist/cli-bundle/chunks/register-mutation-SOKKOTHQ.js +20 -0
  24. package/dist/cli-bundle/chunks/register-operations-5XQETS6E.js +2 -0
  25. package/dist/cli-bundle/chunks/register-setup-2HL5ZHMK.js +2 -0
  26. package/dist/cli-bundle/focused-chunks/chunk-54EU2UVO.js +2 -0
  27. package/dist/cli-bundle/focused-chunks/{chunk-VZFU2R4M.js → chunk-5FLBTZJQ.js} +2 -2
  28. package/dist/cli-bundle/focused-chunks/chunk-5GJ57YKN.js +2 -0
  29. package/dist/cli-bundle/focused-chunks/{chunk-HNL6IFGS.js → chunk-ANTMGYLI.js} +2 -2
  30. package/dist/cli-bundle/focused-chunks/chunk-CMDS3KYT.js +14 -0
  31. package/dist/cli-bundle/focused-chunks/{chunk-NBJKQP4S.js → chunk-DMKOMTTY.js} +2 -2
  32. package/dist/cli-bundle/focused-chunks/{chunk-CIXVQPB7.js → chunk-F5B3HBEZ.js} +2 -2
  33. package/dist/cli-bundle/focused-chunks/{chunk-R2LEMEV5.js → chunk-FI6DWU2M.js} +2 -2
  34. package/dist/cli-bundle/focused-chunks/{chunk-3K4XV2BF.js → chunk-FNOKJG6N.js} +2 -2
  35. package/dist/cli-bundle/focused-chunks/{chunk-RW5IYD4J.js → chunk-FPDYXZBK.js} +2 -2
  36. package/dist/cli-bundle/focused-chunks/{chunk-QHRTT7WT.js → chunk-GWI6YIKJ.js} +2 -2
  37. package/dist/cli-bundle/focused-chunks/{chunk-MHMTKV5V.js → chunk-HCUC62AB.js} +2 -2
  38. package/dist/cli-bundle/focused-chunks/{chunk-MOTJFQ3F.js → chunk-HGNKPSCB.js} +12 -12
  39. package/dist/cli-bundle/focused-chunks/{chunk-4VJQTS3P.js → chunk-IAS7PMLG.js} +2 -2
  40. package/dist/cli-bundle/focused-chunks/{chunk-TIKDBG4D.js → chunk-PL2EYDJK.js} +27 -27
  41. package/dist/cli-bundle/focused-chunks/chunk-SM2PJGP3.js +2 -0
  42. package/dist/cli-bundle/focused-chunks/{chunk-RPNYG5MO.js → chunk-TCSAPH33.js} +2 -2
  43. package/dist/cli-bundle/focused-chunks/chunk-U646T7Z6.js +18 -0
  44. package/dist/cli-bundle/focused-chunks/chunk-YKPE4PPY.js +2 -0
  45. package/dist/cli-bundle/focused-chunks/{chunk-YZEZAPJK.js → chunk-YSAHYUXX.js} +2 -2
  46. package/dist/cli-bundle/focused-chunks/{chunk-73JUDYXT.js → chunk-ZOLDTUU7.js} +2 -2
  47. package/dist/cli-bundle/main.js +13 -13
  48. package/dist/cli-bundle/sdk-authoring.js +1 -1
  49. package/dist/cli-bundle/sdk-contracts.js +1 -1
  50. package/dist/cli-bundle/sdk-core.js +38 -38
  51. package/dist/cli-bundle/sdk-governance.js +1 -1
  52. package/dist/cli-bundle/sdk-graph.js +1 -1
  53. package/dist/cli-bundle/sdk-merge.js +1 -1
  54. package/dist/cli-bundle/sdk-query.js +1 -1
  55. package/dist/cli-bundle/sdk-runtime.js +1 -1
  56. package/dist/cli-bundle/sdk-testing.js +1 -1
  57. package/dist/cli-bundle/sdk.js +2 -1
  58. package/dist/cli.js +14 -4
  59. package/dist/core/output/output.js +9 -2
  60. package/dist/core/sentry/helpers.d.ts +10 -0
  61. package/dist/core/sentry/helpers.js +59 -4
  62. package/dist/core/shared/constants.d.ts +2 -0
  63. package/dist/core/shared/constants.js +4 -2
  64. package/dist/sdk/annotations.d.ts +40 -0
  65. package/dist/sdk/annotations.js +61 -9
  66. package/dist/sdk/author-attribution.d.ts +12 -0
  67. package/dist/sdk/author-attribution.js +73 -11
  68. package/dist/sdk/cli-contracts/command-exit-contracts.d.ts +118 -0
  69. package/dist/sdk/cli-contracts/command-exit-contracts.js +152 -0
  70. package/dist/sdk/cli-contracts/completeness.js +5 -3
  71. package/dist/sdk/cli-contracts/flag-contracts.js +5 -2
  72. package/dist/sdk/cli-contracts/runtime-contracts.d.ts +11 -0
  73. package/dist/sdk/cli-contracts/runtime-contracts.js +29 -2
  74. package/dist/sdk/cli-contracts/tool-parameter-tables.js +15 -2
  75. package/dist/sdk/cli-contracts/tool-schema.d.ts +1 -1
  76. package/dist/sdk/cli-contracts/tool-schema.js +6 -3
  77. package/dist/sdk/comments.d.ts +7 -0
  78. package/dist/sdk/comments.js +2 -2
  79. package/dist/sdk/completion.js +9 -5
  80. package/dist/sdk/contracts.d.ts +1 -0
  81. package/dist/sdk/contracts.js +3 -2
  82. package/dist/sdk/environment/host-environment-errors.d.ts +27 -0
  83. package/dist/sdk/environment/host-environment-errors.js +124 -0
  84. package/dist/sdk/environment/project-runtime-compatibility.d.ts +65 -0
  85. package/dist/sdk/environment/project-runtime-compatibility.js +385 -0
  86. package/dist/sdk/environment/source-context.d.ts +23 -0
  87. package/dist/sdk/environment/source-context.js +29 -0
  88. package/dist/sdk/error-code-catalog.d.ts +6 -0
  89. package/dist/sdk/error-code-catalog.js +62 -8
  90. package/dist/sdk/generated-error-code-catalog.js +629 -3
  91. package/dist/sdk/governance/health.d.ts +11 -3
  92. package/dist/sdk/governance/health.js +5 -5
  93. package/dist/sdk/index.d.ts +7 -3
  94. package/dist/sdk/index.js +9 -5
  95. package/dist/sdk/learnings.d.ts +15 -0
  96. package/dist/sdk/learnings.js +2 -2
  97. package/dist/sdk/lifecycle/close-many.d.ts +6 -1
  98. package/dist/sdk/lifecycle/close-many.js +43 -5
  99. package/dist/sdk/lifecycle/update-many.d.ts +2 -1
  100. package/dist/sdk/lifecycle/update-many.js +29 -5
  101. package/dist/sdk/merge/index.d.ts +1 -1
  102. package/dist/sdk/merge/index.js +3 -3
  103. package/dist/sdk/merge/install.d.ts +21 -0
  104. package/dist/sdk/merge/install.js +50 -20
  105. package/dist/sdk/notes.d.ts +7 -0
  106. package/dist/sdk/notes.js +2 -2
  107. package/dist/sdk/read-output-contracts.js +83 -4
  108. package/dist/sdk/runtime.d.ts +1 -1
  109. package/dist/sdk/runtime.js +9 -25
  110. package/dist/sdk/test/execution.js +4 -2
  111. package/dist/sdk/test/parsers.js +5 -2
  112. package/dist/sdk/workspace-snapshot.d.ts +9 -0
  113. package/dist/sdk/workspace-snapshot.js +48 -16
  114. package/docs/AGENT_RUNTIME_PRIMITIVES.md +11 -4
  115. package/docs/README.md +1 -0
  116. package/docs/RELEASING.md +27 -2
  117. package/docs/SCRIPTING.md +27 -1
  118. package/docs/SDK_CONTEXT_INTEGRITY.md +66 -0
  119. package/docs/SDK_RUNTIME_BOUNDARIES.md +58 -0
  120. package/docs/SELF_DESCRIBING_CONTEXT_CONTRACTS.md +13 -0
  121. package/docs/TESTING.md +17 -0
  122. package/marketplace.json +2 -2
  123. package/package.json +5 -3
  124. package/packages/pm-beads/package.json +1 -1
  125. package/packages/pm-calendar/package.json +1 -1
  126. package/packages/pm-command-kit/package.json +1 -1
  127. package/packages/pm-digital-twin/package.json +1 -1
  128. package/packages/pm-governance-audit/package.json +1 -1
  129. package/packages/pm-guide-shell/package.json +1 -1
  130. package/packages/pm-kanban/package.json +1 -1
  131. package/packages/pm-lifecycle-hooks/package.json +1 -1
  132. package/packages/pm-linked-test-adapters/package.json +1 -1
  133. package/packages/pm-search-advanced/package.json +1 -1
  134. package/packages/pm-templates/package.json +1 -1
  135. package/packages/pm-todos/package.json +1 -1
  136. package/packages/pm-vcs/package.json +1 -1
  137. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  138. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  139. package/sdk/public-surface.json +529 -34
  140. package/dist/cli-bundle/chunks/append-7BXBFDGD.js +0 -2
  141. package/dist/cli-bundle/chunks/chunk-2AXF3VSK.js +0 -2
  142. package/dist/cli-bundle/chunks/chunk-2XS43CCV.js +0 -2
  143. package/dist/cli-bundle/chunks/chunk-3A6KWB72.js +0 -8
  144. package/dist/cli-bundle/chunks/chunk-3ISTDB42.js +0 -8
  145. package/dist/cli-bundle/chunks/chunk-4MTI7XOV.js +0 -5
  146. package/dist/cli-bundle/chunks/chunk-6BX5UDCN.js +0 -3
  147. package/dist/cli-bundle/chunks/chunk-6QPO7KLR.js +0 -2
  148. package/dist/cli-bundle/chunks/chunk-7MXHZHSQ.js +0 -5
  149. package/dist/cli-bundle/chunks/chunk-7ZPMJW4U.js +0 -2
  150. package/dist/cli-bundle/chunks/chunk-A6KGKEWT.js +0 -2
  151. package/dist/cli-bundle/chunks/chunk-AGYNSNCI.js +0 -2
  152. package/dist/cli-bundle/chunks/chunk-B4H7FEFH.js +0 -5
  153. package/dist/cli-bundle/chunks/chunk-B4KLBBMN.js +0 -2
  154. package/dist/cli-bundle/chunks/chunk-BXCSXK4J.js +0 -2
  155. package/dist/cli-bundle/chunks/chunk-CALJHNBL.js +0 -23
  156. package/dist/cli-bundle/chunks/chunk-CFIGP5LY.js +0 -2
  157. package/dist/cli-bundle/chunks/chunk-CHOQ2VAW.js +0 -2
  158. package/dist/cli-bundle/chunks/chunk-CS6MRHG7.js +0 -2
  159. package/dist/cli-bundle/chunks/chunk-CUGNQQKH.js +0 -2
  160. package/dist/cli-bundle/chunks/chunk-D4FPS43D.js +0 -164
  161. package/dist/cli-bundle/chunks/chunk-E2ZSLTOP.js +0 -2
  162. package/dist/cli-bundle/chunks/chunk-FB7G2HY2.js +0 -2
  163. package/dist/cli-bundle/chunks/chunk-H5Y5YE6A.js +0 -2
  164. package/dist/cli-bundle/chunks/chunk-H5Y6UV6E.js +0 -2
  165. package/dist/cli-bundle/chunks/chunk-H7KGWPDF.js +0 -2
  166. package/dist/cli-bundle/chunks/chunk-HFSD77TQ.js +0 -2
  167. package/dist/cli-bundle/chunks/chunk-HX2GTA6L.js +0 -2
  168. package/dist/cli-bundle/chunks/chunk-J2IEKAVR.js +0 -2
  169. package/dist/cli-bundle/chunks/chunk-JC6FKIFM.js +0 -2
  170. package/dist/cli-bundle/chunks/chunk-K44PYFXH.js +0 -2
  171. package/dist/cli-bundle/chunks/chunk-K4KGEEBT.js +0 -2
  172. package/dist/cli-bundle/chunks/chunk-KFLK5TRH.js +0 -21
  173. package/dist/cli-bundle/chunks/chunk-KL6IEBV2.js +0 -2
  174. package/dist/cli-bundle/chunks/chunk-KWQZDZSS.js +0 -2
  175. package/dist/cli-bundle/chunks/chunk-KZ4X3DGU.js +0 -3
  176. package/dist/cli-bundle/chunks/chunk-LD77HJMQ.js +0 -13
  177. package/dist/cli-bundle/chunks/chunk-LEPJJ6QC.js +0 -2
  178. package/dist/cli-bundle/chunks/chunk-ME2JJ4LA.js +0 -3
  179. package/dist/cli-bundle/chunks/chunk-NE5VRDAI.js +0 -2
  180. package/dist/cli-bundle/chunks/chunk-NFLJ3FHD.js +0 -2
  181. package/dist/cli-bundle/chunks/chunk-NG6OXIBR.js +0 -19
  182. package/dist/cli-bundle/chunks/chunk-NYIGHWQY.js +0 -8
  183. package/dist/cli-bundle/chunks/chunk-NZ75GNSA.js +0 -2
  184. package/dist/cli-bundle/chunks/chunk-PCJWJNC2.js +0 -2
  185. package/dist/cli-bundle/chunks/chunk-PD3225AM.js +0 -2
  186. package/dist/cli-bundle/chunks/chunk-PDEGKG7P.js +0 -2
  187. package/dist/cli-bundle/chunks/chunk-PIE5HBNA.js +0 -2
  188. package/dist/cli-bundle/chunks/chunk-PW2H7YJR.js +0 -56
  189. package/dist/cli-bundle/chunks/chunk-RSIC5OPE.js +0 -2
  190. package/dist/cli-bundle/chunks/chunk-TPKN3S7S.js +0 -2
  191. package/dist/cli-bundle/chunks/chunk-TPXAXTCO.js +0 -2
  192. package/dist/cli-bundle/chunks/chunk-UFWUJO4V.js +0 -2
  193. package/dist/cli-bundle/chunks/chunk-UQLZQVFW.js +0 -55
  194. package/dist/cli-bundle/chunks/chunk-VT3Z5G7D.js +0 -2
  195. package/dist/cli-bundle/chunks/chunk-WOD3WWUN.js +0 -2
  196. package/dist/cli-bundle/chunks/chunk-WSJEIGJF.js +0 -3
  197. package/dist/cli-bundle/chunks/chunk-WYNUU7ZW.js +0 -2008
  198. package/dist/cli-bundle/chunks/chunk-YGPNCCXZ.js +0 -2
  199. package/dist/cli-bundle/chunks/close-CMY3BAUG.js +0 -2
  200. package/dist/cli-bundle/chunks/close-many-SA4XZCTK.js +0 -2
  201. package/dist/cli-bundle/chunks/comments-EZ556ZD3.js +0 -2
  202. package/dist/cli-bundle/chunks/copy-ZSGPA52X.js +0 -2
  203. package/dist/cli-bundle/chunks/create-I5DVV4YG.js +0 -2
  204. package/dist/cli-bundle/chunks/delete-RL3JACSW.js +0 -2
  205. package/dist/cli-bundle/chunks/deps-S7UBCECS.js +0 -2
  206. package/dist/cli-bundle/chunks/docs-ZZNVBBYO.js +0 -2
  207. package/dist/cli-bundle/chunks/files-27C337VT.js +0 -2
  208. package/dist/cli-bundle/chunks/focus-5Z2SG7LU.js +0 -2
  209. package/dist/cli-bundle/chunks/history-compact-HJQK67CZ.js +0 -2
  210. package/dist/cli-bundle/chunks/history-redact-PWC6PDWA.js +0 -2
  211. package/dist/cli-bundle/chunks/history-repair-N3CY4WBF.js +0 -2
  212. package/dist/cli-bundle/chunks/learnings-4FH23XDT.js +0 -2
  213. package/dist/cli-bundle/chunks/profile-5Y5XXH5N.js +0 -2
  214. package/dist/cli-bundle/chunks/register-mutation-YGYPW3BL.js +0 -20
  215. package/dist/cli-bundle/chunks/register-operations-WMDSUMQF.js +0 -2
  216. package/dist/cli-bundle/chunks/register-setup-DL7FFABC.js +0 -2
  217. package/dist/cli-bundle/chunks/restore-6KYBV5BY.js +0 -2
  218. package/dist/cli-bundle/chunks/schema-EQGKBYXJ.js +0 -2
  219. package/dist/cli-bundle/chunks/update-QVTYOD6I.js +0 -2
  220. package/dist/cli-bundle/chunks/update-many-DJSBU525.js +0 -2
  221. package/dist/cli-bundle/focused-chunks/chunk-2ECLECMK.js +0 -12
  222. package/dist/cli-bundle/focused-chunks/chunk-4EX25PXM.js +0 -8
  223. package/dist/cli-bundle/focused-chunks/chunk-DLTS3IHM.js +0 -2
  224. package/dist/cli-bundle/focused-chunks/chunk-DQ6FKGL3.js +0 -14
  225. package/dist/cli-bundle/focused-chunks/chunk-JLG2C4EQ.js +0 -2
  226. package/dist/cli-bundle/focused-chunks/chunk-ZJIMJHDB.js +0 -2
@@ -1,2 +0,0 @@
1
- import{a as V}from"./chunk-H7KGWPDF.js";import{c as N,f as W,g as q,h as z}from"./chunk-PD3225AM.js";import{$f as G,A as l,Ad as U,C as d,Da as v,La as H,Nc as L,Nf as x,Oa as T,R,Zf as M,b as k,c as O,jf as A,lc as B,mf as I,nf as g,of as C,qf as P,tf as S,uc as $,vf as j,wc as D,zd as F}from"./chunk-D4FPS43D.js";import X from"node:fs/promises";import Y 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]="7e0f84f6-9528-55c5-8976-6f85cd920486")}catch{}})();function oe(e,t,n){let r=new Set,o=[];for(let s of e){let i=s.trim();if(i.length===0||r.has(i))continue;r.add(i);let c=t.get(i);if(c===void 0){o.push({id:i,entries:0,selected:!1,skip_reason:"no_stream"});continue}if(c.entries<=n){o.push({id:i,entries:c.entries,selected:!1,skip_reason:"already_compact"});continue}o.push({id:i,entries:c.entries,selected:!0,skip_reason:null})}return o}function re(e,t){let n=[...e].sort((o,s)=>s.entries-o.entries||o.id.localeCompare(s.id)),r=[];for(let o of n){if(t.scope==="closed"&&o.bucket!=="closed"){r.push({id:o.id,entries:o.entries,selected:!1,skip_reason:"scope_mismatch"});continue}if(o.entries<=t.minEntries){r.push({id:o.id,entries:o.entries,selected:!1,skip_reason:"already_compact"});continue}if(t.allOver!==void 0&&o.entries<=t.allOver){r.push({id:o.id,entries:o.entries,selected:!1,skip_reason:"below_threshold"});continue}r.push({id:o.id,entries:o.entries,selected:!0,skip_reason:null})}return r}function K(e,t){if(t.ids!==void 0&&t.ids.length>0){let n=new Map(e.map(r=>[r.id,r]));return oe(t.ids,n,t.minEntries)}return re(e,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]="c6609492-75a9-5111-b9b3-1b81908f3084")}catch{}})();function ne(e,t){if(e===void 0)return{kind:"default",raw:null,compactCount:t.length,retainedCount:0};let n=e.trim();if(n.length===0)throw new d("history-compact --before requires a non-empty value.",l.USAGE);if(/^\d+$/.test(n)){let s=Number.parseInt(n,10);if(!Number.isSafeInteger(s)||s<1||s>t.length+1)throw new d(`history-compact --before version must be between 1 and ${t.length+1}.`,l.USAGE);let i=Math.max(0,Math.min(t.length,s-1));return{kind:"version",raw:n,compactCount:i,retainedCount:t.length-i}}let r=Date.parse(n);if(!Number.isFinite(r))throw new d(`Invalid history-compact --before value "${e}". Use a version number or ISO timestamp.`,l.USAGE);let o=0;for(let[s,i]of t.entries()){let c=Date.parse(i.ts);if(!Number.isFinite(c))throw new d(`History for this item contains invalid timestamp at entry ${s+1}.`,l.GENERIC_FAILURE);if(c>=r)break;o+=1}return{kind:"timestamp",raw:n,compactCount:o,retainedCount:t.length-o}}function ie(e,t){let n=I(),r=I();for(let o=0;o<e.length;o+=1){let s=e[o];if(g(n)!==s.before_hash)throw new d(`history-compact detected before-hash drift at entry ${o+1}; run pm history-repair first.`,l.CONFLICT);if(n=N(n,s.patch,o+1,s.op),g(n)!==s.after_hash)throw new d(`history-compact detected after-hash drift at entry ${o+1}; run pm history-repair first.`,l.CONFLICT);o+1===t&&(r=structuredClone(n))}return{checkpoint:r,finalReplay:n}}function se(e,t,n){let r=structuredClone(t),o=[];for(let[s,i]of e.entries()){let c=g(r);r=N(r,i.patch,n+s+1,i.op),o.push({...i,before_hash:c,after_hash:g(r)})}return{entries:o,finalReplay:r}}async function ce(e,t,n){let r=e.located?await M(e.located,{schema:t.schema}):null;return r?{loadedItem:r,currentItemRawBeforeLock:r.raw,matchedChainBefore:g(P(r.document))===n[n.length-1]?.after_hash}:{loadedItem:null,currentItemRawBeforeLock:null,matchedChainBefore:null}}function ae(e,t){return typeof e.message=="string"&&e.message.trim().length>0?e.message:t.raw===null?`history-compact compacted full stream (${t.compactCount} entr${t.compactCount===1?"y":"ies"}).`:`history-compact compacted ${t.compactCount} entr${t.compactCount===1?"y":"ies"} before ${t.raw}.`}function le(e){return e.raw===null?`history-compact baseline snapshot after compacting ${e.compactCount} entr${e.compactCount===1?"y":"ies"}.`:`history-compact baseline snapshot before ${e.raw}.`}function de(e){if(!e.changed)return{rewrittenEntries:e.historyEntries,baselineEntryAdded:!1,auditEntryAdded:!1};let{checkpoint:t,finalReplay:n}=ie(e.historyEntries,e.boundary.compactCount),r=e.historyEntries.slice(e.boundary.compactCount),o=se(r,t,e.boundary.compactCount),i=[A({nowIso:R(),author:e.author,op:"history_compact_baseline",before:C(I()),after:C(t),message:le(e.boundary)}),...o.entries];return e.dryRun||i.push(A({nowIso:R(),author:e.author,op:"history_compact",before:C(n),after:C(n),message:ae(e.options,e.boundary)})),{rewrittenEntries:i,baselineEntryAdded:!0,auditEntryAdded:!e.dryRun}}async function ue(e){return q({pmRoot:e.pmRoot,subject:e.subject,settings:e.settings,typeRegistry:e.typeRegistry,historyRawBeforeLock:e.historyRawBeforeLock,currentItemRawBeforeLock:e.currentItemRawBeforeLock,operation:"history-compact",author:e.author,force:e.force,itemDocument:e.loadedItem?.document??null,applyRewrite:async({historyRawUnderLock:t})=>W({historyPath:e.historyPath,nextHistoryRaw:j(e.rewrittenEntries),historyRawUnderLock:t}),applyPostRewrite:async()=>$({path:e.historyPath,scope:"project",op:"history_compact:history"})})}async function fe(e,t,n){let r=H(process.cwd(),n.path);if(!await k(T(r)))throw new d(`Tracker is not initialized at ${r}. Run pm init first.`,l.NOT_FOUND);let o=await x(r),s=v(o,B()),i=await z(r,e,o,s.type_to_folder),c=i.historyPath,y=await O(c);if(y===null)throw new d(`No history stream exists for ${i.id}.`,l.NOT_FOUND);let a=await U(c,i.id);if(a.length===0)throw new d(`No history entries exist for ${i.id}; nothing to compact.`,l.USAGE);let h=S(a);if(!h.ok)throw new d(`history-compact requires a valid history chain (${h.errors.join(", ")}). Run pm history-repair ${i.id} first.`,l.CONFLICT);let u=ne(t.before,a),f=u.compactCount>0,w=!!t.dryRun,b=F(t.author,o.author_default),m=[];f||m.push("history_compact_noop_before_boundary");let _=await ce(i,o,a);_.matchedChainBefore===!1&&m.push("history_compact_item_chain_mismatch");let{rewrittenEntries:p,baselineEntryAdded:J,auditEntryAdded:Q}=de({historyEntries:a,boundary:u,changed:f,dryRun:w,author:b,options:t}),E=S(p);if(!E.ok)throw new d(`history-compact produced an invalid rewritten chain (${E.errors.join(", ")}).`,l.GENERIC_FAILURE);f&&!w&&m.push(...await ue({pmRoot:r,subject:i,settings:o,typeRegistry:s,historyRawBeforeLock:y,currentItemRawBeforeLock:_.currentItemRawBeforeLock,author:b,force:t.force,loadedItem:_.loadedItem,historyPath:c,rewrittenEntries:p}));let Z=u.retainedCount>0?u.compactCount+1:null;return{id:i.id,dry_run:w,changed:f,compact_boundary:{kind:u.kind,before:u.raw,entries_compacted:u.compactCount,entries_retained:u.retainedCount,first_retained_entry:Z},history:{path:c,entries_scanned:a.length,entries_after:p.length,baseline_entry_added:J,audit_entry_added:Q,verify_ok:E.ok,verify_errors:E.errors},item:{exists:i.located!==null,path:i.located?.itemPath??null,matched_chain_before:_.matchedChainBefore},warnings:[...new Set(m)].sort((ee,te)=>ee.localeCompare(te)),generated_at:R()}}var he=3;function Pe(e,t){let n=t.ids!==void 0&&t.ids.length>0,r=t.allOver!==void 0||t.scope!==void 0;if((e!==void 0?1:0)+(n?1:0)+(r?1:0)===0)throw new d("history-compact: provide an item <id>, or a bulk selector (--ids, --all-over <N>, --closed, or --all-streams).",l.USAGE);if(e!==void 0&&(n||r))throw new d("history-compact: <id> and bulk selectors (--ids/--all-over/--closed/--all-streams) are mutually exclusive; pass one item id, or use bulk mode without a positional id.",l.USAGE);if(n&&r)throw new d("history-compact: --ids is mutually exclusive with --all-over/--closed/--all-streams; pass an explicit id list or a scan selector, not both.",l.USAGE)}function me(e){let t=0;for(let n of e.split(/\r?\n/))n.trim().length>0&&(t+=1);return t}async function pe(e){let t=L(e.settings.schema),n=V(t),r=await G(e.pmRoot,e.settings.item_format,e.typeToFolder,void 0,e.settings.schema),o=new Map(r.map(a=>[a.id,n.classify(a.status)])),s=Y.join(e.pmRoot,"history"),i=[],c=[];if(!await k(s))return{candidates:i,preselectionErrors:c};let y=(await X.readdir(s)).filter(a=>a.endsWith(".jsonl")).sort((a,h)=>a.localeCompare(h));for(let a of y){let h=Y.join(s,a),u=a.slice(0,-6);try{let f=await X.readFile(h,"utf8");await D({path:h,scope:"project"}),i.push({id:u,entries:me(f),bucket:o.get(u)??null})}catch(f){c.push({id:u,outcome:"errored",entries_before:0,entries_after:null,skip_reason:null,changed:!1,error:f instanceof Error?f.message:String(f)})}}return{candidates:i,preselectionErrors:c}}async function ye(e){if(!e.row.selected)return{selected:!1,compacted:!1,errored:!1,result:{id:e.row.id,outcome:"skipped",entries_before:e.row.entries,entries_after:null,skip_reason:e.row.skip_reason,changed:!1,error:null}};try{let t=await fe(e.row.id,{dryRun:e.dryRun,author:e.options.author,message:e.options.message,force:e.options.force},e.global);return{selected:!0,compacted:!0,errored:!1,result:{id:e.row.id,outcome:"compacted",entries_before:e.row.entries,entries_after:t.history.entries_after,skip_reason:null,changed:t.changed,error:null}}}catch(t){return{selected:!0,compacted:!1,errored:!0,result:{id:e.row.id,outcome:"errored",entries_before:e.row.entries,entries_after:null,skip_reason:null,changed:!1,error:t instanceof Error?t.message:String(t)}}}}async function je(e,t){let n=H(process.cwd(),t.path);if(!await k(T(n)))throw new d(`Tracker is not initialized at ${n}. Run pm init first.`,l.NOT_FOUND);let r=await x(n),o=v(r,B()),{candidates:s,preselectionErrors:i}=await pe({pmRoot:n,settings:r,typeToFolder:o.type_to_folder}),c=e.ids!==void 0&&e.ids.length>0?"ids":"scan",y=e.minEntries??he,a=r.history.compact_policy,h=c==="scan"&&e.allOver===void 0&&a.enabled,u=e.allOver??(h?a.max_entries:void 0),f=K(s,{ids:e.ids,scope:e.scope,minEntries:y,allOver:u}),w=!!e.dryRun,b=[...i],m={streams_considered:s.length+i.length,selected:0,items_compacted:0,items_skipped:0,items_errored:i.length};for(let _ of f){let p=await ye({row:_,options:e,dryRun:w,global:t});if(b.push(p.result),!p.selected){m.items_skipped+=1;continue}m.selected+=1,p.compacted&&(m.items_compacted+=1),p.errored&&(m.items_errored+=1)}return{bulk:!0,dry_run:w,mode:c,scope:e.scope??null,criteria:{min_entries:y,all_over:u??null,policy_threshold_applied:h},totals:m,results:b,generated_at:R()}}export{fe as a,he as b,Pe as c,je as d};
2
- //# sourceMappingURL=chunk-AGYNSNCI.js.map
@@ -1,5 +0,0 @@
1
- import{C as kn,P as An,T as In,b as ln,d as un,f as fn,g as mn,qa as Nn}from"./chunk-LD77HJMQ.js";import{a as Gn,c as Un,i as me,j as zn,k as Hn,l as Wn}from"./chunk-TPXAXTCO.js";import{a as le,b as Mn,c as Fn,d as Tn,e as Dn,f as Pn,g as Ue,h as Ln,i as ue,j as qn,l as ze,m as jn,n as fe,o as On}from"./chunk-NE5VRDAI.js";import{g as Cn,k as Rn}from"./chunk-TPKN3S7S.js";import{b as pn}from"./chunk-FB7G2HY2.js";import{a as dn,e as V,f as hn,g as gn,h as bn,i as En,k as vn,l as Sn,r as xn,s as Ne,t as Ge,u as de}from"./chunk-NZ75GNSA.js";import{a as an,b as cn}from"./chunk-B4KLBBMN.js";import{a as yn,b as _n,c as wn}from"./chunk-H7KGWPDF.js";import{Ea as sn}from"./chunk-WOD3WWUN.js";import{C as Zt,D as ce,E as en,F as Le,G as qe,H as je,I as tn,M as nn,N as Oe,W as rn,e as Mt,f as Ft,r as re,v as Kt,w as Vt,x as Qt}from"./chunk-NG6OXIBR.js";import{a as De,b as zt}from"./chunk-VT3Z5G7D.js";import{a as ie}from"./chunk-K4KGEEBT.js";import{a as on}from"./chunk-A6KGKEWT.js";import{$f as ae,A as p,Ad as K,Af as $t,C as h,D as B,Da as P,E as Ie,Ec as Rt,Hf as Bt,I as ee,J as xt,Kd as Lt,Ke as Te,La as x,Md as qt,Na as It,Nc as L,Nf as M,Oa as R,Pa as Me,Pc as z,R as N,Ra as te,Rd as jt,Sd as ne,T as kt,Td as Ot,U as At,V as Ce,Vd as Nt,Xd as Gt,Xf as Yt,Y as Re,Yf as oe,Zf as se,_f as Xt,ad as Tt,b as A,c as $,cd as G,cg as Jt,d as Ae,f as Et,gd as Dt,jb as Ct,lc as I,rf as Ut,t as vt,v as St,wc as Fe,wf as Ht,yf as Wt,zd as Pt,zf as Pe}from"./chunk-D4FPS43D.js";(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]="3a33af50-3d2c-57bb-884a-4d5394599ba2")}catch{}})();function Wi(e,t,n,r,i,o){if(e.seen.has(t))return"skip";if(e.cursorFound&&e.affected.length>=o)return"truncate";e.seen.add(t),e.parents.set(t,n.id);let s=n.depth+1;return e.queue.push({id:t,depth:s}),e.cursorFound?(e.affected.push({id:t,distance:s,path:Ji(r,t,e.parents)}),"continue"):(e.cursorFound=t===i,"skip")}function $i(e,t,n,r){let i=ne("graph impact",{root:e,direction:n,kinds:[...t.kinds??[]].sort(),max_depth:Number.isFinite(r)?r:"unbounded"});return{fingerprint:i,after:t.after===void 0?void 0:Nt(t.after,i)}}function Q(e,t,n){e.get(t).add(n)}function he(e){return new Map(e.map(t=>[t,new Set]))}function Bn(e){for(let t of e)t.sort();return e.sort((t,n)=>n.length-t.length||t[0].localeCompare(n[0]))}function pe(e){if(Array.isArray(e))return e.map(n=>pe(n));if(e===null||typeof e!="object")return e;let t=e.toJSON;return typeof t=="function"?pe(t.call(e)):Object.fromEntries(Object.entries(e).sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>[n,pe(r)]))}function $n(e){return JSON.stringify(pe(e))}function Bi(e,t,n,r){let i=[{id:e,expanded:!1}];for(;i.length>0;){let o=i.pop();if(o.expanded){r.push(o.id);continue}if(n.has(o.id))continue;n.add(o.id),i.push({id:o.id,expanded:!0});let s=[...t.get(o.id)].sort().reverse();for(let a of s)n.has(a)||i.push({id:a,expanded:!1})}}function Ki(e,t){let n=new Set,r=[];for(let i of e)n.has(i)||Bi(i,t,n,r);return r}function Vi(e,t){let n=new Set,r=[];for(let i of[...e].reverse()){if(n.has(i))continue;let o=[],s=[i];for(n.add(i);s.length>0;){let a=s.pop();o.push(a);for(let c of t.get(a))n.has(c)||(n.add(c),s.push(c))}r.push(o)}return Bn(r)}function Kn(e,t){let n=he(e);for(let[r,i]of t)for(let o of i)Q(n,o,r);return Vi(Ki(e,t),n)}function Qi(e,t){let n=he(e.nodes());for(let r of e.edges()){let i=t.require(r.kind);if(!i.ordering)continue;let o=(i.precedence??"source_before_target")==="source_before_target";Q(n,o?r.source:r.target,o?r.target:r.source)}return n}function Yi(e,t){let n=new Map(e.map(o=>[o,0]));for(let o of t.values())for(let s of o)n.set(s,n.get(s)+1);let r=e.filter(o=>n.get(o)===0).sort(),i=[];for(;r.length>0;){i.push(r);let o=[];for(let s of r)for(let a of t.get(s)){let c=n.get(a)-1;n.set(a,c),c===0&&o.push(a)}r=o.sort()}return i}function Xi(e,t){let n=new Map(e.map(s=>[s,0])),r=new Map;for(let s of e)for(let a of t.get(s)){if(!n.has(a))continue;let c=n.get(s)+1,d=r.get(a);(c>n.get(a)||c===n.get(a)&&(d===void 0||s.localeCompare(d)<0))&&(n.set(a,c),r.set(a,s))}let i=[...e].sort((s,a)=>n.get(a)-n.get(s)||s.localeCompare(a))[0],o=i===void 0?[]:[i];for(;o[0]!==void 0&&r.has(o[0]);)o.unshift(r.get(o[0]));return{depth:Object.fromEntries(n),path:o}}function Ji(e,t,n){let r=[t],i=t;for(;i!==e;)i=n.get(i),r.push(i);return r.reverse()}function ge(e,t={}){let n=t.registry??Ct(),r=[...e.nodes()],i=Qi(e,n),o=Yi(r,i),s=o.flat(),a=s.length===r.length,c=a?[]:Kn(r,i).filter(l=>l.length>1||i.get(l[0]).has(l[0])),d=Xi(s,i);return{exact:!0,acyclic:a,order:s,layers:o,frontier:o[0]??[],depth:d.depth,criticalPath:d.path,criticalPathLength:Math.max(0,d.path.length-1),cycles:c,provenance:{algorithm:"kahn-longest-path",edgeFamily:"ordering"}}}function Vn(e,t,n={}){let r=n.direction??"outgoing",i=n.maxDepth??Number.POSITIVE_INFINITY,o=n.limit??Number.POSITIVE_INFINITY,{fingerprint:s,after:a}=$i(t,n,r,i),c={queue:[{id:t,depth:0}],seen:new Set([t]),parents:new Map,affected:[],cursorFound:a===void 0||a===t},d=0,l=0,u=!1,f=!1;e:for(let m=0;m<c.queue.length;m+=1){n.signal?.throwIfAborted();let g=c.queue[m];d+=1;let y=e.adjacency(g.id,{direction:r,kinds:n.kinds,signal:n.signal});if(l+=y.meta.inspectedEdges,g.depth>=i){y.value.some(w=>!c.seen.has(w))&&(u=!0);continue}for(let w of y.value)if(Wi(c,w,g,t,a,o)==="truncate"){u=!0,f=!0;break e}}if(!c.cursorFound)throw new TypeError(`Unknown impact cursor item: ${a}`);return{root:t,affected:c.affected,exact:!0,truncated:u,...f?{nextCursor:Ot(s,c.affected.at(-1)?.id??t)}:{},cost:{visitedNodes:d,inspectedEdges:l}}}function Qn(e){let t=[...e.nodes()],n=he(t),r=he(t);for(let c of e.edges())Q(n,c.source,c.target),Q(n,c.target,c.source),Q(r,c.source,c.target);let i=[],o=new Set;for(let c of t){if(o.has(c))continue;let d=[],l=[c];for(o.add(c);l.length>0;){let u=l.pop();d.push(u);for(let f of n.get(u))o.has(f)||(o.add(f),l.push(f))}i.push(d)}let s=t.map(c=>({id:c,degree:n.get(c).size})),a=Math.max(0,...s.map(({degree:c})=>c));return{components:Bn(i),stronglyConnected:Kn(t,r),orphans:s.filter(({degree:c})=>c===0).map(({id:c})=>c),hubs:s.filter(({degree:c})=>c>0&&c===a),exact:!0,provenance:{algorithm:"component-degree",edgeFamily:"all"}}}function $a(e,t){let n=new Map(e.edges.map(i=>[$n(i),i])),r=new Map(t.edges.map(i=>[$n(i),i]));return{fromVersion:e.version,toVersion:t.version,added:[...r].filter(([i])=>!n.has(i)).map(([,i])=>i),removed:[...n].filter(([i])=>!r.has(i)).map(([,i])=>i),unchangedCount:[...n.keys()].filter(i=>r.has(i)).length,exact:!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]="56486369-9164-58d3-ac34-46d57859f96d")}catch{}})();var Yn=["parent","type","priority","status","assignee","tags","sprint","release"];function Jn(e,t){let n=re(e,t,{strict:!0,flagLabel:"--status"});if(!(!n||n.length===0))return n}function Zn(e,t=["estimate","estimated_minutes","priority"]){let n=e.sum?.trim(),r=e.avg?.trim(),i=n&&n.length>0?n:void 0,o=r&&r.length>0?r:void 0;if(!i&&!o)return null;if(i&&o&&i!==o)throw new h("Aggregate --sum and --avg must target the same numeric field",p.USAGE);let s=i??o;if(!t.includes(s))throw new h(`Aggregate numeric field "${s}" is not registered. Allowed: ${t.join(", ")}`,p.USAGE);return{field:s,sum:i!==void 0,avg:o!==void 0}}function er(e){let t=e?.trim()??"status";if(t.length===0)throw new h("--group-by requires at least one field name",p.USAGE);let n=on(t);if(n.length===0)throw new h("--group-by requires a comma-separated list of fields",p.USAGE);for(let r of n)if(!Yn.includes(r))throw new h(`Aggregate group fields must be one of ${Yn.join("|")}; received "${r}"`,p.USAGE);return n}function tr(e){let t=[...new Set(e.map(n=>n.trim().toLowerCase()).filter(n=>n.length>0))].sort((n,r)=>n.localeCompare(r));return t.length===0?null:t.join(",")}function nr(e,t){switch(e){case"parent":return t.parent??null;case"type":return t.type;case"priority":return t.priority;case"status":return t.status;case"assignee":return t.assignee??null;case"tags":return tr(t.tags);case"sprint":return t.sprint??null;case"release":return t.release??null;default:return null}}function rr(e,t){let n=e??null,r=t??null;return n===r?0:n===null?1:r===null?-1:typeof n=="number"&&typeof r=="number"?n-r:String(n).localeCompare(String(r))}function ir(e,t){return e.map(n=>`${n}:${JSON.stringify(t[n]??null)}`).join("|")}var Zi={parent:"(unparented)",type:"(untyped)",priority:"(no priority)",status:"(no status)",assignee:"(unassigned)",tags:"(untagged)",sprint:"(no sprint)",release:"(no release)"};function Xn(e,t){return t==null||t===""?Zi[e]:String(t)}function eo(e,t){return e.length===1?Xn(e[0],t[e[0]]):e.map(n=>`${n}=${Xn(n,t[n])}`).join(" | ")}function or(e,t,n){for(let r of n){let i=rr(e.group[r],t.group[r]);if(i!==0)return i}return 0}function sr(e,t){let r=e[t];if(typeof r=="number"&&Number.isFinite(r))return r;if(typeof r=="string"){let i=r.trim();if(i.length===0)return null;let o=Number(i);if(Number.isFinite(o))return o}return null}function ar(e,t){return t<=0?0:Math.round(e/t*1e4)/100}function He(e,t,n){let r=Tt(String(t),n)??t;if(r===n.open_status){e.open_count+=1;return}if(r==="in_progress"||n.active_statuses.has(r)&&r!==n.open_status){e.in_progress_count+=1;return}if(n.terminal_done_statuses.has(r)||r===n.close_status){e.closed_count+=1;return}e.other_count+=1}function to(e,t){return{row:{group:e,count:1},numeric_count:t===null?0:1,numeric_sum:t??0,null_count:t===null?1:0,open_count:0,in_progress_count:0,closed_count:0,other_count:0}}function no(e,t){if(t===null){e.null_count+=1;return}e.numeric_count+=1,e.numeric_sum+=t}function ro(e){e.accumulator.row.count+=1,e.includeCompletion&&He(e.accumulator,e.item.status,e.statusRegistry),e.numericAggregation!==null&&no(e.accumulator,e.numericValue)}function io(e,t){let n={};for(let r of e)n[r]=nr(r,t);return n}function oo(e,t,n,r){let i={...e.row,group_label:eo(t,e.row.group)};return n&&(i.open=e.open_count,i.in_progress=e.in_progress_count,i.closed=e.closed_count,i.other=e.other_count,i.completion_pct=ar(e.closed_count,e.row.count)),r!==null&&(i.null_count=e.null_count,r.sum&&(i.sum=e.numeric_sum),r.avg&&(i.avg=e.numeric_count===0?null:e.numeric_sum/e.numeric_count)),i}function so(e){return{group_by:e.groupBy,count:!0,completion:e.includeCompletion,include_unparented:e.includeUnparented,status:e.status?.[0]??null,status_values:e.status,type:e.options.type??null,tag:e.options.tag??null,priority:e.options.priority??null,deadline_before:e.options.deadlineBefore??null,deadline_after:e.options.deadlineAfter??null,assignee:e.options.assignee??null,assignee_filter:e.options.assigneeFilter??null,parent:e.options.parent??null,sprint:e.options.sprint??null,release:e.options.release??null,...e.numericAggregation!==null?{sum:e.options.sum??null,avg:e.options.avg??null,numeric_field:e.numericAggregation.field}:{}}}async function Ya(e,t){if(e.count===!1)throw new h("Aggregate grouped counts are always enabled; omit count=false.",p.USAGE);let n=x(process.cwd(),t.path),r=await M(n),i=L(r.schema),o=["estimate","estimated_minutes","priority",...z(r.schema).definitions.filter(_=>_.type==="number").map(_=>_.metadata_key)],s=er(e.groupBy),a=Jn(e.status,i),c=Zn(e,[...new Set(o)].sort((_,b)=>_.localeCompare(b))),d=e.completion===!0,l=e.includeUnparented===!0,u=await de(void 0,{...pn(e),status:e.status},t),f=new Map,m=0,g=0;for(let _ of u.items){let b=_,k=io(s,b);if(s.includes("parent")&&k.parent===null&&!l){m+=1;continue}let v=ir(s,k),S=f.get(v),E=c===null?null:sr(b,c.field);if(S)ro({accumulator:S,item:b,statusRegistry:i,includeCompletion:d,numericAggregation:c,numericValue:E});else{let T=to(k,E);d&&He(T,b.status,i),f.set(v,T)}g+=1}let y=[...f.values()].map(_=>oo(_,s,d,c)).sort((_,b)=>or(_,b,s)),w=u.warnings&&u.warnings.length>0?u.warnings:void 0;return{groups:y,count:y.length,totals:{items_considered:u.items.length,items_grouped:g,items_skipped_unparented:m},filters:so({groupBy:s,includeCompletion:d,includeUnparented:l,status:a,options:e,numericAggregation:c}),now:N(),...w?{warnings:w}:{}}}var Xa={buildGroupKey:ir,compareAggregateRows:or,compareNullableGroupValue:rr,completionPct:ar,normalizeTagGroupValue:tr,parseGroupBy:er,parseNumericAggregation:Zn,parseStatus:Jn,readNumericAggregateValue:sr,resolveGroupValue:nr,updateCompletionCounts:He};(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]="1638ef81-7558-5d51-8561-99c958de2d03")}catch{}})();function ao(e,t){return t===void 0?e:e.slice(Math.max(0,e.length-t))}function co(e,t){return e.map((n,r)=>{let i=new Set,o=Ut(n.patch);for(let s of o)i.add(De(s.path)),s.from&&i.add(De(s.from));return{index:t+r+1,ts:n.ts,op:n.op,author:n.author,patch_ops:o.length,changed_fields:[...i].sort((s,a)=>s.localeCompare(a))}})}async function lo(e,t){let n=x(process.cwd(),t.path);if(!await A(R(n)))throw new h(`Tracker is not initialized at ${n}. Run pm init first.`,p.NOT_FOUND);let r=await M(n),i=P(r,I()),o=e.trim()===Pe,s=o?Pe:Bt(e,r.id_prefix),a=await oe(n,s,r.id_prefix,r.item_format,i.type_to_folder),c=a?.id??s,d=o?$t(n):te(n,c);if(!a&&!await A(d))throw new h(`Item ${e} not found`,p.NOT_FOUND);return a&&await Ht({pmRoot:n,settings:r,itemId:a.id,commandLabel:"history"}),{historyPath:d,located:a,resolvedId:c,settings:r}}async function oc(e,t,n){let r=ie(t.limit),{historyPath:i,located:o,resolvedId:s,settings:a}=await lo(e,n),c=await K(i,s),d=a.agent_identity.identity_vocabulary,l=ln(a.agent_identity.harness_signals),u=fn({harness:t.harness,agentInstance:t.agentInstance,provenance:t.provenanceFilter},d,l),f=c.map((E,T)=>({entry:E,version:T+1})).filter(({entry:E})=>u(E)),m=ao(f,r),g=m.map(({entry:E})=>E),y=t.compact===!0,w=y?co(g,Math.max(0,c.length-g.length)):void 0,_=t.provenance===!0?m.map(({entry:E,version:T})=>un(E,d,{itemId:s,version:T})):void 0,b=t.provenance===!0?"provenance":y?"compact":"full",k={compact:{compact_history:w},provenance:{provenance_history:_},full:{history:g}}[b],S={id:s,...k,compact:y,projection:{mode:b,row_key:{compact:"compact_history",provenance:"provenance_history",full:"history"}[b]},omission_receipt:qt("history",b),count:g.length,limit:r??null,...t.provenanceSummary===!0?{provenance_summary:mn(f.map(({entry:E})=>E),d,l)}:{}};if((t.diff||t.field!==void 0)&&(S.diff=zt(c,{windowStartIndex:Math.max(0,c.length-g.length),field:t.field})),t.verify){let E=o?(await se(o,{schema:a.schema})).document:void 0;S.verification=an(c,E)}return 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]="2e14b978-95c9-5922-b8cb-c49d24e6f8c4")}catch{}})();var cr=1e6,dr=20;function lr(e,t,n,r=dr){if(!Number.isSafeInteger(r)||r<0)throw new h("Child projection sample limit must be a non-negative integer.",p.USAGE);let i=e.trim().toLowerCase(),o={},s=[],a=0,c=0;for(let f of t){if(c+=1,c>cr)throw new h(`Child projection exceeded the ${cr.toLocaleString("en-US")} item safety bound.`,p.GENERIC_FAILURE,{code:"child_projection_item_bound_exceeded",required:"Use an indexed or parent-filtered metadata source.",why:"Unbounded graph scans can exhaust memory in universal project stores.",nextSteps:["Build the derived item index, then retry the parent read."]});if(f.parent?.trim().toLowerCase()!==i)continue;s.push(f);let m=f.status.trim().toLowerCase();o[m]=(o[m]??0)+1,G(m,n)||(a+=1)}s.sort((f,m)=>f.id.localeCompare(m.id));let d=s.slice(0,r).map(f=>({id:f.id,title:f.title,type:f.type,status:f.status,priority:f.priority})),l=s.length>d.length,u=r===0?dr:r;return{count:s.length,active:a,by_status:Object.fromEntries(Object.entries(o).sort(([f],[m])=>f.localeCompare(m))),sample:d,sample_limit:r,truncated:l,next_offset:l?d.length:null,continuation:l?`pm list --status all --parent ${e} --offset ${d.length} --limit ${u}`:null,scanned:c}}(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]="80981c24-3442-57a2-8c35-e0e00d5425d6")}catch{}})();var uo=new Set(["event","meeting","reminder"]);function fo(e){return uo.has(e.type.trim().toLowerCase())||e.deadline!==void 0||(e.reminders?.length??0)>0||(e.events?.length??0)>0}function ur(e){if(!fo(e))return;let t=[...e.events??[]].sort((r,i)=>r.start_at.localeCompare(i.start_at)),n=t[0];return{deadline:e.deadline??null,start_at:n?.start_at??null,end_at:n?.end_at??null,location:n?.location??null,reminders:[...e.reminders??[]],events: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]="5536c6eb-5d51-5b67-879d-c1d0bfa5b692")}catch{}})();var po=["brief","standard","deep"],ho=new Set(["epic","feature","milestone","plan"]),go=new Set(Object.keys(vt).map(e=>e.toLowerCase()));function mr(e){let t=e.trim().toLowerCase();return t.length>0&&(ho.has(t)||!go.has(t))}function fr(e){return{ts:e.ts,author:e.author,message:e.message??null}}function yo(e,t){let n=e?.trim(),r=n&&n.length>0?n:null,i=[...t].reverse().find(s=>s.op==="claim"),o=[...t].reverse().find(s=>s.op==="release");return{claimed:r!==null,assignee:r,last_claim:i?fr(i):null,last_release:o?fr(o):null}}function _o(e){if(e===void 0||e.trim().length===0)return"standard";let t=e.trim().toLowerCase();if(t==="full")return"deep";if(po.includes(t))return t;throw new h("Get --depth must be one of brief|standard|deep|full",p.USAGE)}function wo(e,t){if(t==="deep")return e;let{comments:n,notes:r,learnings:i,files:o,tests:s,docs:a,reminders:c,events:d,...l}=e;return{...l,notes_count:e.notes?.length??0,tests_count:e.tests?.length??0}}function bo(e){if(e===void 0)return null;let t=e.split(",").map(n=>n.trim()).filter(n=>n.length>0);if(t.length===0)throw new h("Get --fields requires a comma-separated list of field names",p.USAGE);return t}function _e(e){return e.startsWith("item.")?e.slice(5):e}function Eo(e,t){if(e===null)return;let n=new Set([...St,...t,"notes_count","tests_count"]),r=new Set(["body","linked","claim_state","children","schedule"]),i=new Set(["linked.files","linked.tests","linked.docs"]),o=new Set(["claim_state.claimed","claim_state.assignee","claim_state.last_claim","claim_state.last_release"]),s=new Set(["schedule.deadline","schedule.start_at","schedule.end_at","schedule.location","schedule.reminders","schedule.events"]),a=e.filter(c=>{let d=_e(c);return!n.has(d)&&!r.has(d)&&!i.has(d)&&!o.has(d)&&!s.has(d)});if(a.length>0)throw new h(`Unknown get --fields value(s): ${a.join(", ")}`,p.USAGE,{code:"unknown_field_projection",examples:["pm get <id> --fields id,title,status,type,updated_at","pm get <id> --fields id,title,claim_state","pm get <id> --fields id,title,body,linked.files"]})}function vo(e,t){let n=e,r={notes_count:e.notes?.length??0,tests_count:e.tests?.length??0},i={};for(let o of t){let s=_e(o);s==="body"||s==="linked"||s.startsWith("linked.")||s==="claim_state"||s.startsWith("claim_state.")||s==="children"||s.startsWith("children.")||s==="schedule"||s.startsWith("schedule.")||(i[s]=Object.hasOwn(r,s)?r[s]:n[s])}return i}function Y(e,t){return e?.some(n=>n===t||n===`item.${t}`)??!1}function ye(e,t){return e.some(n=>{let r=_e(n);return r===t||r.startsWith(`${t}.`)})}function So(e){if(e.full&&(e.fields!==void 0||e.depth!==void 0))throw new h("Get projection options are mutually exclusive; remove the extra projection flag and retry.",p.USAGE);if(e.tree!==!0&&e.treeDepth!==void 0)throw new h("Get --tree-depth requires --tree",p.USAGE);if(e.at!==void 0&&e.tree===!0)throw new h("Get --at cannot be combined with --tree because workspace-level historical projections are not yet indexed.",p.USAGE);return{depth:e.full?"deep":_o(e.depth),treeDepth:e.tree===!0?dn(e.treeDepth,"--tree-depth"):void 0,fields:bo(e.fields),fieldProjection:e.fields!==void 0}}async function xo(e,t,n){let r=x(process.cwd(),t.path);if(!await A(R(r)))throw new h(`Tracker is not initialized at ${r}. Run pm init first.`,p.NOT_FOUND);let i=await M(r),o=P(i,I());if(n!==void 0){let c=await cn(e,n,{pmRoot:t.path});return{pmRoot:r,settings:i,typeToFolder:o.type_to_folder,locatedId:c.document.metadata.id,metadata:c.document.metadata,body:c.document.body,historical:c}}let s=await oe(r,e,i.id_prefix,i.item_format,o.type_to_folder);if(!s)throw await Jt(r,e,i.id_prefix,o.type_to_folder);let a=await se(s,{schema:i.schema});return{pmRoot:r,settings:i,typeToFolder:o.type_to_folder,locatedId:s.id,metadata:a.document.metadata,body:a.document.body}}function ko(e,t,n){let r=z(t.schema).definitions.map(i=>i.metadata_key);if(Eo(e,r),n&&ye(e??[],"children"))throw new h("Get --at cannot project children because workspace-level historical relationships are not yet indexed.",p.USAGE)}function We(e){let{fieldProjection:t,depth:n,fields:r,field:i}=e;return t?i==="body"||i==="linked"?Y(r,i):ye(r,i):n!=="brief"}async function Ao(e,t){if(!t)return;let n=te(e.pmRoot,e.locatedId),r=await K(n,e.locatedId);return yo(e.metadata.assignee,e.historical?r.slice(0,e.historical.as_of_version):r)}function Io(e,t,n,r){let i=r||Y(n,"linked.files"),o=r||Y(n,"linked.tests"),s=r||Y(n,"linked.docs");!r&&!i&&!o&&!s||(e.linked={files:i?t.metadata.files??[]:[],tests:o?t.metadata.tests??[]:[],docs:s?t.metadata.docs??[]:[]})}async function Co(e,t,n,r){if(!t)return;let i=L(e.settings.schema),o=await ae(e.pmRoot,e.settings.item_format,e.typeToFolder,void 0,e.settings.schema),s=lr(e.locatedId,o,i,r?void 0:0);return s.count>0||n?s:void 0}function Ro(e,t,n,r){if(!r)return;let i=ur(t.metadata);if(i){if(n===null||Y(n,"schedule")){e.schedule=i;return}e.schedule=Object.fromEntries(Object.entries(i).filter(([o])=>n.some(s=>_e(s)===`schedule.${o}`)))}}async function Mo(e,t,n,r){if(t.tree!==!0)return;let i=await de(void 0,{parent:e.locatedId,tree:!0,treeDepth:n===void 0?void 0:String(n),full:!0},r);return{root_id:e.locatedId,root_title:e.metadata.title,depth_limit:n??null,count:i.count,items:i.items.map(o=>o)}}async function Ec(e,t,n={}){let r=So(n),i=await xo(e,t,n.at);ko(r.fields,i.settings,i.historical!==void 0);let o=We({...r,field:"body"}),s=We({...r,field:"linked"}),a=We({...r,field:"claim_state"}),c=i.historical===void 0&&(r.fieldProjection?ye(r.fields,"children"):r.depth!=="brief"&&mr(i.metadata.type)),d=r.fieldProjection?ye(r.fields,"schedule"):r.depth!=="brief",l=await Ao(i,a),u={item:r.fieldProjection?vo(i.metadata,r.fields):wo(i.metadata,r.depth)};o&&(u.item.body=i.body),Io(u,i,r.fields,s),l&&(u.claim_state=l),Ro(u,i,r.fields,d);let f=await Co(i,c,r.fieldProjection,r.fieldProjection||r.depth==="deep");f!==void 0&&(u.children=f);let m=await Mo(i,n,r.treeDepth,t);if(m!==void 0&&(u.tree=m),i.historical&&(u.reconstructed=!0,u.as_of_version=i.historical.as_of_version,u.as_of_timestamp=i.historical.as_of_timestamp),i.historical===void 0)try{await kn({pmRoot:i.pmRoot,author:Pt(void 0,i.settings.author_default),itemIds:[i.locatedId],intent:"get"})}catch{}return u}var vc={shouldAutoIncludeGetChildren:mr};(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]="70e06a73-6602-5384-a25b-fd3df5f6438e")}catch{}})();var hr=10,q="https://schema.unbrained.dev/pm/eval-query-set/v1",Fo={schema:q,accepted_top_level:["array","object"],required_query_fields:["query","relevant_ids"],optional_fields:["mode","description"],modes:["keyword","semantic","hybrid"]},we={schema:q,queries:[{query:"offline search",relevant_ids:["pm-75k9"],mode:"keyword"}]},C=class extends Error{constructor(t){super(t),this.name="EvalQuerySetError"}},To=new Set(["keyword","semantic","hybrid"]);function pr(e,t){let n=0,r=Math.min(t,e.length);for(let i=0;i<r;i+=1)n+=e[i]/Math.log2(i+2);return n}function Do(e,t,n){if(t.size===0)return 0;let r=e.map(a=>t.has(a)?1:0),i=pr(r,n),o=Array.from({length:t.size},()=>1),s=pr(o,n);return s===0?0:i/s}function Po(e,t,n){let r=Math.min(n,e.length);for(let i=0;i<r;i+=1)if(t.has(e[i]))return 1/(i+1);return 0}function $e(e,t,n){let r=Math.min(n,e.length),i=0;for(let o=0;o<r;o+=1)t.has(e[o])&&(i+=1);return i}function Lo(e,t,n){return n<=0?0:$e(e,t,n)/n}function qo(e,t,n){return t.size===0?0:$e(e,t,n)/t.size}function gr(e,t,n){return{ndcg:Do(e,t,n),mrr:Po(e,t,n),precision:Lo(e,t,n),recall:qo(e,t,n),relevant_total:t.size,retrieved_relevant:$e(e,t,n)}}function yr(e){let t=e.length;if(t===0)return{ndcg:0,mrr:0,precision:0,recall:0,query_count:0};let n=e.reduce((r,i)=>({ndcg:r.ndcg+i.ndcg,mrr:r.mrr+i.mrr,precision:r.precision+i.precision,recall:r.recall+i.recall}),{ndcg:0,mrr:0,precision:0,recall:0});return{ndcg:n.ndcg/t,mrr:n.mrr/t,precision:n.precision/t,recall:n.recall/t,query_count:t}}function jo(e,t){if(typeof e!="object"||e===null)throw new C(`Eval query at index ${t} must be an object`);let n=e,r=typeof n.query=="string"?n.query.trim():"";if(r.length===0)throw new C(`Eval query at index ${t} must have a non-empty "query" string`);if(!Array.isArray(n.relevant_ids))throw new C(`Eval query at index ${t} must have a "relevant_ids" array`);if(n.relevant_ids.some(o=>typeof o!="string"))throw new C(`Eval query at index ${t} must have a "relevant_ids" array of strings`);let i=[...new Set(n.relevant_ids.map(o=>o.trim()).filter(o=>o.length>0))];if(i.length===0)throw new C(`Eval query at index ${t} must list at least one relevant id`);if(n.mode!==void 0&&(typeof n.mode!="string"||!To.has(n.mode)))throw new C(`Eval query at index ${t} has an invalid mode (expected keyword|semantic|hybrid)`);return{query:r,relevant_ids:i,...n.mode!==void 0?{mode:n.mode}:{},...typeof n.description=="string"&&n.description.trim().length>0?{description:n.description.trim()}:{}}}function Be(e){let t=typeof e=="object"&&e!==null&&!Array.isArray(e)?e.schema:void 0;if(t!==void 0&&t!==q)throw new C(`Unsupported eval query set schema; expected "${q}"`);let n=Array.isArray(e)?e:typeof e=="object"&&e!==null?e.queries:void 0;if(!Array.isArray(n))throw new C('Eval query set must be an array of queries or an object with a "queries" array');if(n.length===0)throw new C("Eval query set must contain at least one query");return{schema:q,queries:n.map((r,i)=>jo(r,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]="b0abcc02-bd6e-536a-b876-e13cfc8ea741")}catch{}})();function _r(e){if(typeof e!="string")return!1;let t=e.split(",").map(n=>n.trim().toLowerCase()).filter(Boolean);return t.length===1&&t[0]==="all"}var Oo=[{optionKey:"status",summaryKey:"status",normalize:e=>_r(e)?"all":e},{optionKey:"type",summaryKey:"type"},{optionKey:"tag",summaryKey:"tag"},{optionKey:"priority",summaryKey:"priority"},{optionKey:"deadlineBefore",summaryKey:"deadline_before"},{optionKey:"deadlineAfter",summaryKey:"deadline_after"},{optionKey:"updatedAfter",summaryKey:"updated_after"},{optionKey:"updatedBefore",summaryKey:"updated_before"},{optionKey:"createdAfter",summaryKey:"created_after"},{optionKey:"createdBefore",summaryKey:"created_before"},{optionKey:"assignee",summaryKey:"assignee"},{optionKey:"sprint",summaryKey:"sprint"},{optionKey:"release",summaryKey:"release"},{optionKey:"parent",summaryKey:"parent"}];function X(e){let{mode:t,matchMode:n,options:r,includeLinked:i,titleExact:o,phraseExact:s,scoreThreshold:a,hybridSemanticWeight:c,runtimeFieldFilters:d}=e,l={};return xn(l,r,Oo),Object.assign(l,Ge(r)),Object.assign(l,Ne(r)),n!==void 0&&n!=="or"&&(l.match_mode=n),i&&(l.include_linked=!0),o&&(l.title_exact=!0),s&&(l.phrase_exact=!0),a>0&&(l.score_threshold=a),t==="hybrid"&&r.semanticWeight!==void 0&&(l.hybrid_semantic_weight=c),r.limit!==void 0&&(l.limit=r.limit),d&&Object.keys(d).length>0&&(l.runtime_filters=d),l}function J(e){let{effectiveMode:t,matchMode:n,options:r,includeLinked:i,titleExact:o,phraseExact:s,scoreThreshold:a,hybridSemanticWeight:c,queryExpansion:d,rerank:l,runtimeFieldFilters:u}=e,f=m=>m??null;return{mode:t,match_mode:n,status:r.status===void 0||_r(r.status)?"all":r.status,type:f(r.type),tag:f(r.tag),priority:f(r.priority),deadline_before:f(r.deadlineBefore),deadline_after:f(r.deadlineAfter),updated_after:f(r.updatedAfter),updated_before:f(r.updatedBefore),created_after:f(r.createdAfter),created_before:f(r.createdBefore),assignee:f(r.assignee),sprint:f(r.sprint),release:f(r.release),parent:f(r.parent),...Ge(r),...Ne(r),include_linked:i,title_exact:o,phrase_exact:s,score_threshold:a,hybrid_semantic_weight:t==="hybrid"?c:null,query_expansion_enabled:d.enabled,query_expansion_provider:d.provider,rerank_enabled:l.enabled,rerank_model:l.model,rerank_top_k:l.top_k,limit:f(r.limit),runtime_filters:u}}(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]="0fc9ed92-daf5-5fa2-b9a4-ee6c36256ed1")}catch{}})();function No(e){return ne("search",{query:e.query.trim(),mode:e.mode,options:jt(e.searchOptions,sn)})}function wr(e){let t=Gt(e.sorted,{cursor:e.searchOptions.after,fingerprint:No(e),limit:e.limit,readId:n=>n.item.id});return{limited:t.rows,pageExtras:{applied_limit:e.limit,...t.has_more?{has_more:!0,truncated:!0}:{},...t.next_cursor?{next_cursor:t.next_cursor}:{}}}}(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]="47576eb5-4ddf-5e04-9e1d-c961da39b754")}catch{}})();var Go=["id","title","status","type","priority","updated_at","score","matched_fields"],Uo=new Set(["score","matched_fields","highlights"]),zo=new Set(["id","title","description","type","status","priority","tags","created_at","updated_at","deadline","assignee","author","estimated_minutes","acceptance_criteria","dependencies","comments","notes","learnings","reminders","events","files","tests","docs","close_reason","parent","reviewer","risk","confidence","sprint","release","blocked_by","blocked_reason","reporter","severity","environment","repro_steps","resolution","expected_result","actual_result","affected_version","fixed_version","component","regression","customer_impact","definition_of_ready","order","rank","goal","objective","value","impact","outcome","why_now","plan"]);function br(e){if(e===void 0)return"keyword";let t=e.trim().toLowerCase();if(t!=="keyword"&&t!=="semantic"&&t!=="hybrid")throw new h("Search mode must be one of keyword|semantic|hybrid",p.USAGE);return t}function be(e){return e===!0}function Er(e){return xt(e,0,1)??void 0}function vr(e){if(e===void 0)return"or";let t=e.trim().toLowerCase();if(t!=="and"&&t!=="or"&&t!=="exact")throw new h("Search --match-mode must be one of and|or|exact",p.USAGE);return t}function Sr(e){if(e==null||e==="")return;let t=typeof e=="number"?e:Number(String(e).trim());if(!Number.isFinite(t)||t<0)throw new h("Search --min-score must be a finite number >= 0",p.USAGE);return t}function H(e,t){if(e==null)return;let n=String(e).trim();if(n.length!==0)return Ce(n,new Date,t)}function D(e){return e.toLowerCase().replace(/\s+/g," ").trim()}function Ke(e,t){if(e!==void 0)return Ce(e,new Date,t)}function Ho(e){if(e===void 0)return;let t=e.split(",").map(n=>n.trim()).filter(n=>n.length>0);if(t.length===0)throw new h("Search --fields requires a comma-separated list of field names",p.USAGE);return[...new Set(t)]}function Ve(e){let t=e.compact===!0,n=e.full===!0,r=Ho(e.fields);if(Number(t)+Number(n)+ +(r!==void 0)>1)throw new h("Search projection options are mutually exclusive. Use one of --compact, --full, or --fields.",p.USAGE);return t?{mode:"compact",fields:[...Go]}:n?{mode:"full",fields:[]}:r?{mode:"fields",fields:r}:{mode:"full",fields:[]}}function Qe(e,t){if(e.mode!=="fields")return;let n=new Set(t.definitions.flatMap(i=>[i.key,i.metadata_key])),r=e.fields.filter(i=>{let o=i.trim(),s=o.startsWith("item.")?o.slice(5):o;return!Uo.has(o)&&!zo.has(s)&&!n.has(s)});if(r.length>0)throw new h(`Unknown search --fields value(s): ${r.join(", ")}`,p.USAGE,{examples:["pm search <query> --fields id,title,status,score","pm search <query> --fields id,title,item.description,matched_fields"],nextSteps:["Use item.<field> for explicit item metadata fields, or run pm search --help for projection examples."]})}function Ye(e){let t=D(e);if(!t)throw new h("Search query must not be empty",p.USAGE);return t.split(/\s+/u).filter(Boolean)}function Xe(e){let t=e.search?.max_results;return typeof t=="number"&&Number.isFinite(t)&&t>0?Math.floor(t):50}function Je(e){let t=e.search?.score_threshold;return typeof t=="number"&&Number.isFinite(t)?t:0}function Ze(e){let t=e.search?.hybrid_semantic_weight;return typeof t=="number"&&Number.isFinite(t)&&t>=0&&t<=1?t:.7}function et(e){let t={title_exact_bonus:10,title_weight:48,description_weight:5,tags_weight:6,status_weight:2,body_weight:1,comments_weight:1,notes_weight:1,learnings_weight:1,reminders_weight:2,events_weight:2,dependencies_weight:3,linked_content_weight:1},n=e.search?.tuning;if(!n)return t;let r=(i,o)=>typeof i=="number"&&Number.isFinite(i)&&i>=0?i:o;return{title_exact_bonus:r(n.title_exact_bonus,t.title_exact_bonus),title_weight:r(n.title_weight,t.title_weight),description_weight:r(n.description_weight,t.description_weight),tags_weight:r(n.tags_weight,t.tags_weight),status_weight:r(n.status_weight,t.status_weight),body_weight:r(n.body_weight,t.body_weight),comments_weight:r(n.comments_weight,t.comments_weight),notes_weight:r(n.notes_weight,t.notes_weight),learnings_weight:r(n.learnings_weight,t.learnings_weight),reminders_weight:r(n.reminders_weight,t.reminders_weight),events_weight:r(n.events_weight,t.events_weight),dependencies_weight:r(n.dependencies_weight,t.dependencies_weight),linked_content_weight:r(n.linked_content_weight,t.linked_content_weight)}}import ve from"node:fs/promises";import st 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]="7288620a-5aa7-50f9-a271-45b2722a4887")}catch{}})();function Wo(e){return e.trim().toLowerCase().replace(/\s+/g," ")}function W(e){return Wo(e).split(/[^a-z0-9]+/).filter(t=>t.length>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]="42fde1a1-ee4b-5564-93b2-78d5a0fc7555")}catch{}})();var tt=4,$o=20,Bo=200,Ko=new Set(["a","an","and","for","from","in","into","of","on","or","the","to","with"]);function nt(e,t){let n=[],r=new Set;for(let i of e){let o=i.trim().replaceAll(/\s+/g," ");if(o.length===0)continue;let s=o.toLowerCase();if(!r.has(s)&&(r.add(s),n.push(o),n.length>=t))break}return n}function Vo(e){let t=e.toLowerCase();return t.length>4&&t.endsWith("ies")?`${t.slice(0,-3)}y`:t.length>4&&(t.endsWith("ches")||t.endsWith("shes")||t.endsWith("xes")||t.endsWith("zes")||t.endsWith("sses"))?t.slice(0,-2):t.length>3&&t.endsWith("s")&&!t.endsWith("ss")&&!t.endsWith("us")&&!t.endsWith("is")&&!t.endsWith("as")?t.slice(0,-1):t}function Qo(e){let t=e.toLowerCase();return t.length>2&&(!t.endsWith("s")||t.endsWith("ss"))?t.endsWith("y")&&!/[aeiou]y$/u.test(t)?`${t.slice(0,-1)}ies`:t.endsWith("ch")||t.endsWith("sh")||t.endsWith("x")||t.endsWith("z")||t.endsWith("ss")?`${t}es`:`${t}s`:t}function xr(e,t=tt){let n=e.trim().replaceAll(/\s+/g," ");if(n.length===0)return[];let r=W(n);if(r.length===0)return[n];let i=r.filter(a=>!Ko.has(a.toLowerCase())),o=r.map(a=>Vo(a)),s=i.map(a=>Qo(a));return nt([n,r.join(" "),i.join(" "),o.join(" "),s.join(" ")],Math.max(1,t))}function kr(e){let t=Array.isArray(e)?e:e?.queries;return Array.isArray(t)?nt(t.filter(n=>typeof n=="string"),tt):[]}function Ar(e,t,n){return nt([...e,...t],Math.max(1,n))}function Ir(e,t){let r=e.search?.query_expansion,i=B(r?.provider);return{enabled:r?.enabled===!0,provider:i??t,max_queries:tt}}function Cr(e,t){let r=e.search?.rerank,i=B(r?.model),s=ee(r?.top_k)??$o;return{enabled:r?.enabled===!0,model:i??t,top_k:Math.min(Bo,s)}}function Rr(e){let t=Array.isArray(e)?e:e?.hits;if(!Array.isArray(t))return[];let n=new Map;for(let i of t){if(typeof i!="object"||i===null)continue;let o=B(i.id),s=i.score;if(!o||typeof s!="number"||!Number.isFinite(s))continue;let a=n.get(o);(a===void 0||s>a)&&n.set(o,s)}let r=[...n.entries()].map(([i,o])=>({id:i,score:o}));return r.sort((i,o)=>i.score!==o.score?o.score-i.score:i.id.localeCompare(o.id)),r}function Yo(e,t){let n=e.length,r=0;for(let i=0;i<n;i+=1)r+=e[i]*t[i];return r}function Mr(e){let t=0;for(let n=0;n<e.length;n+=1)t+=e[n]*e[n];return Math.sqrt(t)}function Xo(e,t,n){if(!e||!t||e.length===0||t.length===0||e.length!==t.length)return 0;let r=Yo(e,t),i=Mr(t),o=n*i;return!Number.isFinite(r)||!Number.isFinite(n)||!Number.isFinite(i)||!Number.isFinite(o)||o===0?0:Math.max(-1,Math.min(1,r/o))}async function Fr(e,t,n,r,i){if(r.length===0)return new Map;let o=B(t)??e.model,s=o===e.model?e:{...e,model:o},a=[n.trim(),...r.map(f=>f.text)],c=await ce(s,a,i?{timeout_ms:i}:{}),d=c[0];if(!d)return new Map;let l=Mr(d),u=new Map;for(let f=0;f<r.length;f+=1){let m=r[f],g=c[f+1];if(!g)continue;let y=Xo(d,g,l);u.set(m.id,Math.max(0,Math.min(1,(y+1)/2)))}return u}(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]="3fd6ed70-6633-5886-90a6-3d4cc16b3ef0")}catch{}})();var Jo=1.2,Zo=.75;function rt(e){return W(e)}function es(e){let t=new Map;for(let n of e)t.set(n,(t.get(n)??0)+1);return t}function Dr(e){let t=[],n=new Map,r=0;for(let o of e){let s=rt(o.text),a=es(s);r+=s.length;for(let c of a.keys())n.set(c,(n.get(c)??0)+1);t.push({id:o.id,termFrequencies:a,length:s.length})}let i=t.length;return{documents:t,documentFrequency:n,documentCount:i,averageDocumentLength:i>0?r/i:0}}function ts(e,t){return Math.log(1+(e-t+.5)/(t+.5))}function Pr(e,t,n){let r=new Map;if(e.documentCount===0||e.averageDocumentLength===0)return r;let i=[...new Set(t.filter(s=>s.length>0))];if(i.length===0)return r;let o=new Map;for(let s of i){let a=e.documentFrequency.get(s);a!==void 0&&o.set(s,ts(e.documentCount,a))}if(o.size===0)return r;for(let s of e.documents){let a=0;for(let[c,d]of o){let l=s.termFrequencies.get(c);if(l===void 0)continue;let u=1-n.b+n.b*s.length/e.averageDocumentLength,f=l+n.k1*u;a+=d*(l*(n.k1+1)/f)}a>0&&r.set(s.id,a)}return r}function Tr(e,t,n,r){return typeof e!="number"||!Number.isFinite(e)?t:Math.min(r,Math.max(n,e))}function Lr(e){let t=n=>typeof n=="string"?[n]:typeof n=="number"?[String(n)]:Array.isArray(n)?n.flatMap(t):typeof n=="object"&&n!==null?Object.values(n).flatMap(t):[];return t(Object.values(e)).join(" ")}function qr(e){let t=e?.search?.bm25;return{k1:Tr(t?.k1,Jo,0,1e3),b:Tr(t?.b,Zo,0,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]="1750b332-dd40-5497-b410-26c8c7436329")}catch{}})();var ns=2,rs=120,is=6,os=40,ss=1e3,as=900,cs="\xAB",ds="\xBB",jr=60,Gr=["tag","status","type","priority"];function Ur(e){let t=[],n=e;for(let r=0;r<5&&n&&typeof n=="object";r+=1){let i=n.code;typeof i=="string"&&t.push(i.toLowerCase()),n=n.cause}return t.join(" ")}function zr(e){let t=(e instanceof Error?e.message:String(e)).toLowerCase(),n=Ur(e),r=`${t} ${n}`;return r.includes("timed out")||r.includes("timeout")||r.includes("etimedout")?"timeout":r.includes("econnrefused")||r.includes("connection refused")||r.includes("connect ")||r.includes("enotfound")||r.includes("eai_again")||r.includes("econnreset")||r.includes("fetch failed")?"connection":"error"}function Hr(e,t){let n=zr(t);return`search_${e}_fallback:${n}:using_keyword_mode`}async function Wr(e,t,n){try{let r=await rn(e);r.warnings.length>0&&n.push(...r.warnings);let i=Nn(t.map(o=>({id:o.metadata.id,updated_at:o.metadata.updated_at})),r.entries);if(i.length===0)return;n.push(`vector_index_stale:${i.length}`),process.stderr.write(`[pm] warning: ${i.length} item${i.length===1?" is":"s are"} new or modified since the last reindex and ${i.length===1?"is":"are"} NOT in the semantic index yet \u2014 they will be missing from semantic/hybrid results until you run 'pm reindex --mode hybrid'. (Write-time embedding is governed by search.mutation_refresh_policy; staleness means the embed was skipped, failed, or the backend was unreachable.)
2
- `)}catch{}}var Cd={applyFilters:Yr,applyExactQueryFilters:Qr,applyInlineQueryFilters:Br,buildHitHighlights:ri,buildVerboseSearchFilters:J,buildExplicitSemanticFallbackWarning:Hr,buildCompactSearchFilterSummary:X,buildHybridLexicalScore:si,buildRerankCorpus:hi,buildSemanticHits:ui,classifyImplicitSemanticFallbackReason:zr,collectErrorCauseCodes:Ur,collectExactPhraseFields:Kr,collectLinkedPaths:Xr,combineHybridHits:lt,computeBuiltInBm25Hits:mi,computeSemanticOrHybridHits:gi,resolveBuiltInBm25Mode:fi,countOccurrences:ct,dependencyEntries:at,documentContainsExactPhrase:Vr,emptySearchResult:ai,highlightFieldSnippet:ni,loadDocuments:yi,markTokenRuns:ti,parseInlineQueryFilters:$r,maybeEmitVectorIndexStaleWarning:Wr,loadLinkedCorpus:Zr,mergeVectorHitsById:pi,normalizeExtensionProviderHits:li,normalizeScoreMap:it,parseProjectionConfig:Ve,parseTimestampWindow:H,parseTokens:Ye,projectSearchHits:wi,readSearchFieldValue:_i,requireSemanticDependencies:dt,resolveExtensionSearchProvider:ci,resolveExtensionSearchProviderByName:ke,resolveExtensionVectorAdapter:di,resolveLinkedCorpusRoots:Jr,scoreDocument:ii,sortHits:oi,stringArray:xe,textEntries:U,validateSearchProjectionFields:Qe};function $r(e){let t={},n=[];for(let r of e.split(/\s+/).filter(i=>i.length>0)){let i=r.indexOf(":"),o=i>0?r.slice(0,i).toLowerCase():"",s=i>0?r.slice(i+1):"",a=Gr.includes(o)?o:void 0;if(a&&s.length>0&&t[a]===void 0){t[a]=s;continue}n.push(r)}return{residualQuery:n.join(" "),inlineFilters:t}}function Br(e,t,n){let r={...e};for(let i of Gr){let o=t[i];if(o!==void 0){if(Ie(r[i])!==void 0){n.push(`search_inline_filter_ignored:${i}:flag_takes_precedence`);continue}r[i]=o}}return r}function xe(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function U(e){return Array.isArray(e)?e.filter(t=>typeof t=="object"&&t!==null&&typeof t.text=="string"):[]}function at(e){return Array.isArray(e)?e.filter(t=>typeof t=="object"&&t!==null&&typeof t.id=="string"&&typeof t.kind=="string"):[]}function Kr(e){let t=e.metadata;return[t.title,t.description,t.status,xe(t.tags).join(" "),e.body,U(t.comments).map(n=>n.text).join(" "),U(t.notes).map(n=>n.text).join(" "),U(t.learnings).map(n=>n.text).join(" "),Le(t).join(" "),qe(t).join(" "),at(t.dependencies).map(n=>`${n.id} ${n.kind}`).join(" "),je(t)]}function Vr(e,t){return Kr(e).some(n=>D(n).includes(t))}function Qr(e,t,n){return!n.titleExact&&!n.phraseExact?e:e.filter(r=>!(n.titleExact&&D(r.metadata.title)!==t||n.phraseExact&&!Vr(r,t)))}function ls(e){if(e&&[...e].some(t=>t.toLowerCase()==="none"||t.toLowerCase()==="null"))throw new h('--assignee no longer accepts "none" or "null".',p.USAGE)}function us(e,t,n){let r=V(e.assignee,{label:"--assignee"});ls(r);let i=vn(e),o=Sn(e);return{typeFilter:hn(e.type,t),tagFilter:V(e.tag,{label:"--tag",normalize:s=>s.toLowerCase()}),priorityFilter:gn(e.priority),deadlineBefore:Ke(e.deadlineBefore,"deadline-before"),deadlineAfter:Ke(e.deadlineAfter,"deadline-after"),updatedAfter:H(e.updatedAfter,"updated-after"),updatedBefore:H(e.updatedBefore,"updated-before"),createdAfter:H(e.createdAfter,"created-after"),createdBefore:H(e.createdBefore,"created-before"),assigneeFilter:r,sprintFilter:V(e.sprint,{label:"--sprint"}),releaseFilter:V(e.release,{label:"--release"}),parentFilter:e.parent?.trim(),statusSet:n&&n.length>0?new Set(n):void 0,missingMetadataFilters:i,missingMetadataActive:_n(i),contentFieldFilters:o,contentFiltersActive:bn(o)}}function fs(e,t){return ms(e,t)&&ps(e,t)&&hs(e,t)}function ms(e,t){if(t.statusSet&&!t.statusSet.has(e.status)||t.typeFilter&&!t.typeFilter.has(e.type))return!1;let n=t.tagFilter;return!(n&&!xe(e.tags).some(r=>n.has(r))||t.priorityFilter!==void 0&&!t.priorityFilter.has(e.priority))}function ps(e,t){return At(e,t)}function hs(e,t){return!(t.assigneeFilter!==void 0&&(e.assignee===void 0||!t.assigneeFilter.has(e.assignee))||t.sprintFilter!==void 0&&(e.sprint===void 0||!t.sprintFilter.has(e.sprint))||t.releaseFilter!==void 0&&(e.release===void 0||!t.releaseFilter.has(e.release))||t.parentFilter!==void 0&&e.parent!==t.parentFilter)}function gs(e,t,n,r){let i=e.metadata;return!(!fs(i,t)||!Vt(i,n)||t.missingMetadataActive&&!wn(i,t.missingMetadataFilters,r)||t.contentFiltersActive&&!En(i,t.contentFieldFilters))}function Yr(e,t,n,r,i,o){let s=us(t,n,i);return e.filter(a=>gs(a,s,r,o))}function ct(e,t){let n=0,r=0;for(;;){let i=e.indexOf(t,r);if(i<0)return n;n+=1,r=i+t.length}}function ys(e){return W(e)}function Xr(e){let t=(e.files??[]).map(s=>({scope:s.scope,path:s.path.trim()})),n=(e.docs??[]).map(s=>({scope:s.scope,path:s.path.trim()})),r=(e.tests??[]).filter(s=>typeof s.path=="string"&&s.path.trim().length>0).map(s=>({scope:s.scope,path:s.path.trim()})),i=[...t,...n,...r].filter(s=>s.path.length>0).sort((s,a)=>s.scope.localeCompare(a.scope)||s.path.localeCompare(a.path)),o=new Map;for(let s of i)o.set(`${s.scope}:${s.path}`,s);return[...o.values()]}async function Or(e){let t=st.resolve(e);try{let n=await ve.realpath(t);return{resolved:t,realpath:n}}catch{return null}}async function Jr(e,t){let[n,r]=await Promise.all([Or(e),Or(t)]);return{projectContainmentRoot:n,globalContainmentRoot:r}}async function Zr(e,t){let n=Xr(e.metadata),r=[];for(let i of n){let o=i.scope==="global"?t.globalContainmentRoot:t.projectContainmentRoot;if(!o)continue;let s=st.resolve(o.resolved,i.path);if(!Re(o.resolved,s))continue;let a;try{a=await ve.realpath(s)}catch{continue}if(Re(o.realpath,a))try{await Fe({path:s,scope:i.scope}),r.push(await ve.readFile(s,"utf8"))}catch{}}return r.join(`
3
- `)}var ei=[{name:"title",weightKey:"title_weight",value:e=>e.metadata.title},{name:"description",weightKey:"description_weight",value:e=>e.metadata.description},{name:"tags",weightKey:"tags_weight",value:e=>xe(e.metadata.tags).join(" ")},{name:"status",weightKey:"status_weight",value:e=>typeof e.metadata.status=="string"?e.metadata.status:""},{name:"body",weightKey:"body_weight",value:e=>e.body},{name:"comments",weightKey:"comments_weight",value:e=>U(e.metadata.comments).map(t=>t.text).join(" ")},{name:"notes",weightKey:"notes_weight",value:e=>U(e.metadata.notes).map(t=>t.text).join(" ")},{name:"learnings",weightKey:"learnings_weight",value:e=>U(e.metadata.learnings).map(t=>t.text).join(" ")},{name:"reminders",weightKey:"reminders_weight",value:e=>Le(e.metadata).join(" ")},{name:"events",weightKey:"events_weight",value:e=>qe(e.metadata).join(" ")},{name:"dependencies",weightKey:"dependencies_weight",value:e=>at(e.metadata.dependencies).map(t=>`${t.id} ${t.kind}`).join(" ")},{name:"plan",weightKey:"body_weight",value:e=>je(e.metadata)}],_s=new Map(ei.map(e=>[e.name,e]));function ws(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ti(e,t){let n=t.filter(i=>i.length>0).sort((i,o)=>o.length-i.length).map(ws);if(n.length===0)return e;let r=new RegExp(n.join("|"),"gi");return e.replace(r,i=>`${cs}${i}${ds}`)}function ni(e,t){if(e.length===0)return null;let n=e.toLowerCase(),r=-1,i=0;for(let l of t){if(l.length===0)continue;let u=n.indexOf(l);u>=0&&(r<0||u<r)&&(r=u,i=l.length)}if(r<0)return null;let o=Math.max(0,r-jr),s=Math.min(e.length,r+i+jr),a=ti(e.slice(o,s),t),c=o>0?"\u2026":"",d=s<e.length?"\u2026":"";return`${c}${a}${d}`}function ri(e,t,n){let r=[];for(let i of t){let o=_s.get(i);if(o===void 0)continue;let s=ni(o.value(e),n);s!==null&&r.push({field:i,snippet:s})}return r}function bs(e,t,n){return[...ei.map(r=>({name:r.name,value:r.value(e),weight:n[r.weightKey]})),{name:"linked_content",value:t,weight:n.linked_content_weight}]}function Es(e,t,n){let r=D(e.id),i=typeof n=="string"?n.trim().toLowerCase():"",o=D(i),s=o.length>0&&r.startsWith(o)?r.slice(o.length).trim():r;return t!==r&&t!==s?null:{item:e,score:t===r?ss:as,matched_fields:["id"],matched_all_terms:!0,exact_id_match:!0}}function vs(e,t,n,r,i){for(let o of e){let s=t.get(o)??0;s>0&&(i.score+=s*r.title_exact_bonus,i.matched.add("title"),i.matchedTokens.add(o));for(let a of n){let c=ct(a.value.toLowerCase(),o);c>0&&(i.score+=c*a.weight,i.matched.add(a.name),i.matchedTokens.add(o))}}}function Ss(e,t,n,r){D(e.title)===t&&(r.score+=rs,r.matched.add("title"));for(let o of n){let s=ct(D(o.value),t);s>0&&(r.score+=s*o.weight*is,r.matched.add(o.name))}}function ii(e,t,n,r,i,o,s=!1){let a=e.metadata,c=Es(a,n,o);if(c)return c;let d=new Map;for(let y of ys(a.title))d.set(y,(d.get(y)??0)+1);let l=bs(e,r,i),u={score:0,matched:new Set,matchedTokens:new Set};vs(t,d,l,i,u);let f=new Set(t),m=f.size>0&&u.matchedTokens.size===f.size;return s&&f.size>1&&m&&(u.score+=os),t.length>=ns&&n.includes(" ")&&Ss(a,n,l,u),u.score<=0?null:{item:a,score:u.score,matched_fields:[...u.matched].sort((y,w)=>y.localeCompare(w)),matched_all_terms:m}}function oi(e,t){return[...e].sort((n,r)=>{let i=r.score-n.score;if(i!==0)return i;let o=G(n.item.status,t),s=G(r.item.status,t);if(o!==s)return o?1:-1;let a=n.item.priority-r.item.priority;if(a!==0)return a;let c=kt(r.item.updated_at,n.item.updated_at);return c!==0?c:n.item.id.localeCompare(r.item.id)})}function si(e,t,n,r,i,o,s,a=!1){return ii(e,t,n,r?i.get(e.metadata.id)??"":"",o,s,a)}function it(e){if(e.size===0)return new Map;let t=[...e.values()],n=Math.min(...t),r=Math.max(...t);if(r===n)return new Map([...e.keys()].map(o=>[o,1]));let i=new Map;for(let[o,s]of e)i.set(o,(s-n)/(r-n));return i}function ai(e,t,n,r,i,o,s,a,c,d,l,u,f=!1){let m=f?{total:0,count_only:!0}:{};if(d.mode==="compact"&&r.compact===!0){let w=X({mode:t,matchMode:n,options:r,includeLinked:i,titleExact:r.titleExact===!0,phraseExact:r.phraseExact===!0,scoreThreshold:o,hybridSemanticWeight:s,runtimeFieldFilters:u});return{query:e.trim(),mode:t,items:[],count:0,...m,filters:w,...l.length>0?{warnings:l}:{}}}let y=d.mode==="full"?null:[...d.fields];return{query:e.trim(),mode:t,items:[],count:0,...m,filters:J({effectiveMode:t,matchMode:n,options:r,includeLinked:i,titleExact:r.titleExact===!0,phraseExact:r.phraseExact===!0,scoreThreshold:o,hybridSemanticWeight:s,queryExpansion:a,rerank:c,runtimeFieldFilters:u??{}}),projection:{mode:d.mode,fields:y},now:N(),...l.length>0?{warnings:l}:{}}}function dt(e,t,n,r){if(!t.active)throw new h(`Search mode '${e}' requires a configured embedding provider in settings.providers.openai or settings.providers.ollama`,p.USAGE);if(!n.active&&!r)throw new h(`Search mode '${e}' requires a configured vector store in settings.vector_store.qdrant/settings.vector_store.lancedb or an extension adapter selected by settings.vector_store.adapter`,p.USAGE);return{provider:t.active,vectorStore:n.active??null}}var F=Ie;function ke(e){let t=I(),n=Mt(t,e);if(!n)return null;let r=n.runtime_definition??n.definition,i=r.query,o=r.queryExpansion??r.query_expansion,s=r.rerank,a=F(r.name)??F(n.definition.name)??e;if(!a)return null;let c={providerName:a,...typeof i=="function"?{query:i}:{},...typeof o=="function"?{queryExpansion:o}:{},...typeof s=="function"?{rerank:s}:{}};return!c.query&&!c.queryExpansion&&!c.rerank?null:c}function ci(e){let t=F(e.search?.provider),n=ke(t);return n?.query?{providerName:n.providerName,query:n.query}:null}function di(e){let t=I(),n=F(e.vector_store?.adapter),r=Ft(t,n);if(!r)return null;let i=r.runtime_definition??r.definition,o=i.query;if(typeof o!="function")return null;let s=i.upsert;return{adapterName:F(i.name)??F(r.definition.name)??n??"extension",query:o,...typeof s=="function"?{upsert:s}:{}}}function li(e,t,n){let r=Array.isArray(t)?t:t?.hits;if(!Array.isArray(r))throw new h(`Extension search provider "${e}" must return an array of hits or { hits: [...] }`,p.GENERIC_FAILURE);let i=new Set,o=[];for(let s of r){if(typeof s!="object"||s===null)continue;let a=F(s.id),c=s.score;if(!a||typeof c!="number"||!Number.isFinite(c)||i.has(a))continue;let d=n.get(a);if(!d)continue;let l=s.matched_fields,u=Array.isArray(l)&&l.every(f=>typeof f=="string")?[...new Set(l.map(f=>f.trim()).filter(f=>f.length>0))].sort((f,m)=>f.localeCompare(m)):[`provider:${e}`];i.add(a),o.push({item:d.metadata,score:c,matched_fields:u})}return o}function ui(e,t){let n=[],r=new Map;for(let i of e){if(r.has(i.id))continue;let o=t.get(i.id);o&&(r.set(i.id,i.score),n.push({item:o.metadata,score:i.score,matched_fields:["semantic"]}))}return{semanticHits:n,semanticScores:r}}function Se(e,t){let n=t.filter(d=>d.exact_id_match===!0);if(n.length===0)return e;let r=new Set(n.map(d=>d.item.id)),i=e.filter(d=>!r.has(d.item.id)),o=i.reduce((d,l)=>Math.max(d,l.score),0),s=n.sort((d,l)=>l.score-d.score),a=o+s.length+1;return[...s.map((d,l)=>({...d,score:a-l,matched_fields:["id"]})),...i]}function lt(e,t,n,r,i="semantic"){let o=new Map(n.map(u=>[u.item.id,u.score])),s=new Map(n.map(u=>[u.item.id,u.matched_fields])),a=it(t),c=it(o),d=new Set([...t.keys(),...o.keys()]),l=1-r;return[...d].map(u=>{let f=e.get(u),m=a.get(u)??0,g=c.get(u)??0,y=m*r+g*l;if(y<=0)return null;let w=new Set;t.has(u)&&w.add(i);for(let _ of s.get(u)??[])w.add(_);return{item:f.metadata,score:y,matched_fields:[...w].sort((_,b)=>_.localeCompare(b))}}).filter(u=>u!==null)}function fi(e){let t=e.configuredProvider?.trim().toLowerCase();return t==="bm25"?"explicit":t==="auto"&&!e.hasEmbeddingProvider&&!e.hasExtensionSearchProvider?"auto-fallback":null}function mi(e){let t=e.filteredDocuments.map(s=>({id:s.metadata.id,text:Lr(tn(s,{fields:e.corpusFields}))})),n=Dr(t),r=Pr(n,rt(e.query),e.bm25Params),i=new Map(e.filteredDocuments.map(s=>[s.metadata.id,s]));if(e.requestedMode==="semantic"){let s=[...r].map(([a,c])=>({item:i.get(a).metadata,score:c,matched_fields:["bm25"]}));return Se(s,e.keywordHits)}let o=lt(i,r,e.keywordHits,e.hybridSemanticWeight,"bm25");return Se(o,e.keywordHits)}function pi(e){let t=new Map;for(let r of e)for(let i of r){let o=t.get(i.id);(!o||i.score>o.score)&&t.set(i.id,i)}let n=[...t.values()];return n.sort((r,i)=>r.score!==i.score?i.score-r.score:r.id.localeCompare(i.id)),n}function hi(e){let t=e.metadata,n=Array.isArray(t?.tags)?t.tags.join(" "):"";return[t?.title,t?.description,t?.type,t?.status,n,e.body].map(r=>typeof r=="string"?r.trim():"").filter(r=>r.length>0).join(`
4
- `)}async function xs(e,t){let n=e.queryExpansion.enabled?xr(t,e.queryExpansion.max_queries):[t],r=n.length>0?n:[t];if(!e.queryExpansion.enabled)return r;if(e.queryExpansionExtension?.expand)try{let i=await Promise.resolve(e.queryExpansionExtension.expand({query:t,mode:e.requestedMode,settings:e.settings}));return Ar(r,kr(i),e.queryExpansion.max_queries)}catch{return e.warnings.push(`search_query_expansion_provider_failed:${e.queryExpansionExtension.providerName}:using_builtin`),r}return e.queryExpansion.provider&&e.queryExpansion.provider!=="openai"&&e.queryExpansion.provider!=="ollama"&&e.warnings.push(`search_query_expansion_provider_unavailable:${e.queryExpansion.provider}:using_builtin`),r}async function ks(e,t,n,r){if(e.extensionVectorAdapter?.query)try{return await Promise.resolve(e.extensionVectorAdapter.query({vector:t,limit:n,settings:e.settings}))}catch(i){if(!e.vectorStore)throw new h(`Extension vector adapter query failed and no built-in fallback store is configured (${i instanceof Error?i.message:String(i)})`,p.GENERIC_FAILURE);return e.warnings.push(`search_vector_adapter_failed:${e.extensionVectorAdapter.adapterName}:using_builtin`),await Oe(e.vectorStore,t,n,r)}if(e.vectorStore)return await Oe(e.vectorStore,t,n,r);throw new h("Semantic search requires either a configured vector store or an extension vector adapter query handler",p.USAGE)}function As(e,t,n){return[...e].sort((i,o)=>i.score!==o.score?o.score-i.score:i.item.id.localeCompare(o.item.id)).slice(0,n).map(i=>{let o=t.get(i.item.id);return o?{hit:i,text:hi(o)}:null}).filter(i=>i!==null)}async function Is(e,t,n){if(!e.rerankExtension?.rerank)return null;try{let r=await Promise.resolve(e.rerankExtension.rerank({query:t,mode:"hybrid",model:e.rerank.model,top_k:e.rerank.top_k,settings:e.settings,candidates:n.map(o=>({id:o.hit.item.id,text:o.text,score:o.hit.score}))})),i=Rr(r);return i.length>0?new Map(i.map(o=>[o.id,o.score])):(e.warnings.push(`search_rerank_provider_invalid_response:${e.rerankExtension.providerName}:using_builtin`),null)}catch{return e.warnings.push(`search_rerank_provider_failed:${e.rerankExtension.providerName}:using_builtin`),null}}async function Cs(e,t,n){let r=await Is(e,t,n);if(r)return r;let i=n.map(o=>({id:o.hit.item.id,text:o.text}));try{return await Fr(e.provider,e.rerank.model,t,i,e.embeddingTimeoutMs)}catch{return e.warnings.push("search_rerank_failed:using_hybrid_scores"),null}}function Rs(e,t){let n=new Set(t.keys()),r=e.map(i=>{let o=t.get(i.item.id);if(o===void 0)return i;let s=new Set(i.matched_fields);return s.add("rerank"),{...i,score:o,matched_fields:[...s].sort((a,c)=>a.localeCompare(c))}});return r.sort((i,o)=>{let s=n.has(i.item.id),a=n.has(o.item.id);return s!==a?s?-1:1:i.score!==o.score?o.score-i.score:i.item.id.localeCompare(o.item.id)}),r}async function Ms(e,t,n,r){if(!e.rerank.enabled||n.length<=1)return n;let i=As(n,r,e.rerank.top_k),o=await Cs(e,t,i);return o&&o.size>0?Rs(n,o):n}async function gi(e){let t=Math.max(e.limit??e.maxResults,e.maxResults),n=e.embeddingTimeoutMs!==void 0?{timeout_ms:e.embeddingTimeoutMs}:{},r=e.vectorQueryTimeoutMs!==void 0?{timeout_ms:e.vectorQueryTimeoutMs}:{},i=e.query.trim(),o=await xs(e,i),s=await ce(e.provider,o,n),a=await Promise.all(s.map(async g=>await ks(e,g,t,r))),c=pi(a),d=new Map(e.filteredDocuments.map(g=>[g.metadata.id,g])),{semanticHits:l,semanticScores:u}=ui(c,d),f=u.size;if(e.requestedMode==="semantic")return{hits:Se(l,e.keywordHits),vectorMatchCount:f};let m=await Ms(e,i,lt(d,u,e.keywordHits,e.hybridSemanticWeight),d);return{hits:Se(m,e.keywordHits),vectorMatchCount:f}}async function yi(e,t,n,r){let i=Rt(I()),o=async(d,l,u)=>{let f=async(m,g)=>{await Fe({path:m,scope:"project"});let y=await ve.readFile(m,"utf8");return Dt(y,{format:g,schema:r,extensionFieldNames:i,onWarning:_=>s.push(_)}).body};try{return await f(l,u)}catch{let m=u==="toon"?"json_markdown":"toon",g=Me(e,d.type,d.id,m,n);try{return await f(g,m)}catch{return s.push(`item_list_item_read_failed:${st.relative(e,g)}`),""}}},s=[],a=await Yt(e,t,n,s,r),c=[];if(a.length===0){let d=await Xt(e,t,n,s,r);for(let l of d){let u=Me(e,l.type,l.id,t,n),f=await o(l,u,t);c.push({metadata:l,body:f})}return{documents:c,warnings:[...new Set(s)].sort((l,u)=>l.localeCompare(u))}}for(let d of a){if(typeof d.body=="string"){c.push({metadata:d.metadata,body:d.body});continue}let l=await o(d.metadata,d.item_path,d.item_format);c.push({metadata:d.metadata,body:l})}return{documents:c,warnings:[...new Set(s)].sort((d,l)=>d.localeCompare(l))}}function _i(e,t){let n=t.trim();if(n.length===0)return null;if(n==="score")return e.score;if(n==="matched_fields")return e.matched_fields;if(n.startsWith("item.")){let o=n.slice(5);return o.length===0?null:e.item[o]??null}let r=e,i=e.item;return Object.prototype.hasOwnProperty.call(i,n)?i[n]??null:Object.prototype.hasOwnProperty.call(r,n)?r[n]??null:null}function wi(e,t){return t.mode==="full"?e.map(({matched_all_terms:n,exact_id_match:r,...i})=>i):e.map(n=>{let r={};for(let i of t.fields)r[i]=_i(n,i);return r})}function Fs(e){let t=ke(e.provider??void 0);return t?.queryExpansion?{providerName:t.providerName,expand:t.queryExpansion}:null}function Ts(e){let t=ke(F(e.search?.provider));return t?.rerank?{providerName:t.providerName,rerank:t.rerank}:null}function Ds(e,t){let n=[],r=$r(e),i=Object.keys(r.inlineFilters).length>0;if(i&&r.residualQuery.trim().length===0)throw new h("Inline field:value tokens consumed the entire query, leaving no search terms.",p.USAGE,{examples:["pm search auth tag:area:search","pm list --tag area:search --status open"],nextSteps:["Add keyword terms alongside the inline filters, or use pm list for pure tag/status/type/priority filtering."]});let o=i?r.residualQuery:e,s=Br(t,r.inlineFilters,n);return{query:o,options:s,inlineWarnings:n,highlight:s.highlight===!0,includeLinked:be(s.includeLinked),titleExact:be(s.titleExact),phraseExact:be(s.phraseExact),matchMode:vr(typeof s.matchMode=="string"?s.matchMode:void 0),minScoreOverride:Sr(s.minScore),countOnly:s.count===!0,tokens:Ye(o),normalizedQuery:D(o),limit:ie(s.limit),projection:Ve(s),modeWasExplicit:typeof s.mode=="string"&&s.mode.trim().length>0}}async function Ps(e,t){let n=x(process.cwd(),t.path);if(!await A(R(n)))throw new h(`Tracker is not initialized at ${n}. Run pm init first.`,p.NOT_FOUND);let r=await M(n),i=Qt(r).settings,o=L(i.schema),s=z(i.schema);Qe(e.projection,s);let a=Kt(e.options,s,"search"),c=P(i,I()),d=Zt(i),l=nn(i,n),u=ci(i),f=di(i),m=Er(e.options.semanticWeight),g=Ir(i,d.active?.name??null),y=Cr(i,d.active?.model??F(i.search?.embedding_model)??"text-embedding-3-small");return{pmRoot:n,settings:i,statusRegistry:o,runtimeFieldRegistry:s,runtimeFieldFilters:a,typeRegistry:c,maxResults:Xe(i),scoreThreshold:e.minScoreOverride??Je(i),semanticWeightProvided:e.options.semanticWeight!==void 0,semanticWeightOverride:m,hybridSemanticWeight:m??Ze(i),tuning:et(i),providerResolution:d,vectorResolution:l,extensionSearchProvider:u,extensionVectorAdapter:f,bm25Mode:fi({configuredProvider:F(i.search?.provider),hasEmbeddingProvider:d.active!==null,hasExtensionSearchProvider:u!==null}),queryExpansion:g,queryExpansionExtension:Fs(g),rerank:y,rerankExtension:Ts(i),effectiveMode:br(e.options.mode)}}async function Ls(e,t){let n=await yi(t.pmRoot,t.settings.item_format??"toon",t.typeRegistry.type_to_folder,t.settings.schema),r=re(typeof e.options.status=="string"?e.options.status:void 0,t.statusRegistry,{strict:!0}),i=yn(t.statusRegistry),o=Yr(n.documents,e.options,t.typeRegistry,t.runtimeFieldFilters,r,i);return{warnings:n.warnings,allDocuments:n.documents,filteredDocuments:Qr(o,e.normalizedQuery,{titleExact:e.titleExact,phraseExact:e.phraseExact||e.matchMode==="exact"})}}async function qs(e,t,n){let r=new Map;if(!e||t!=="keyword"&&t!=="hybrid")return r;let i=process.cwd(),o=await Jr(i,It(i)),s=await Promise.all(n.map(async a=>[a.metadata.id,await Zr(a,o)]));for(let[a,c]of s)r.set(a,c);return r}async function js(e,t,n){let r=await qs(e.includeLinked,t.effectiveMode,n),i=e.matchMode==="or";return n.map(o=>si(o,e.tokens,e.normalizedQuery,e.includeLinked,r,t.tuning,t.settings.id_prefix,i)).filter(o=>o!==null).filter(o=>e.matchMode!=="and"||o.matched_all_terms===!0)}function Nr(e,t){return ai(e.query,e.effectiveMode,e.matchMode,e.options,e.includeLinked,e.scoreThreshold,e.hybridSemanticWeight,e.queryExpansion,e.rerank,e.projection,e.warnings,e.runtimeFieldFilters,t)}async function Os(e,t,n,r,i){if(t.bm25Mode===null||t.effectiveMode==="keyword")return null;let o=mi({requestedMode:t.effectiveMode,query:e.query,filteredDocuments:n,keywordHits:r,corpusFields:en(t.settings),bm25Params:qr(t.settings),hybridSemanticWeight:t.hybridSemanticWeight});return t.bm25Mode==="auto-fallback"&&i.push(`search_${t.effectiveMode}_offline_bm25:no_embedding_provider:using_lexical_bm25`),o}async function Ns(e,t,n,r){if(!t.extensionSearchProvider)return null;let i=t.providerResolution.active!==null&&(t.vectorResolution.active!==null||t.extensionVectorAdapter!==null);try{let o=await Promise.resolve(t.extensionSearchProvider.query({query:e.query,mode:t.effectiveMode,tokens:e.tokens,options:e.options,settings:t.settings,documents:n}));return li(t.extensionSearchProvider.providerName,o,r)}catch(o){if(!i)throw new h(`Extension search provider "${t.extensionSearchProvider.providerName}" failed: ${o instanceof Error?o.message:String(o)}`,p.GENERIC_FAILURE);return null}}function Gs(e,t,n,r){return t.vectorMatchCount>0?t.hits:(r.push(`search_${e}_degraded:no_vector_matches:results_are_lexical`),e==="semantic"?n:t.hits)}async function Us(e,t,n,r,i){let o=!e.extensionSearchProvider&&e.providerResolution.active!==null&&(e.vectorResolution.active!==null||e.extensionVectorAdapter!==null);i&&o&&await Wr(e.pmRoot,n,r),e.extensionSearchProvider||dt(t,e.providerResolution,e.vectorResolution,e.extensionVectorAdapter!==null)}async function zs(e){let{prepared:t,runtime:n,filteredDocuments:r,keywordHits:i,warnings:o,modeWasExplicit:s}=e,a=i,c=await Os(t,n,r,i,o),d=n.effectiveMode;if(c!==null||d==="keyword")return{effectiveMode:n.effectiveMode,hits:c??a};try{if(await Us(n,d,r,o,s),r.length===0||t.limit===0)return{effectiveMode:n.effectiveMode,hits:[]};let l=new Map(r.map(u=>[u.metadata.id,u]));if(a=await Ns(t,n,r,l)??a,a===i){let{provider:u,vectorStore:f}=dt(d,n.providerResolution,n.vectorResolution,n.extensionVectorAdapter!==null),m=await gi({requestedMode:d,query:t.query,filteredDocuments:r,keywordHits:i,hybridSemanticWeight:n.hybridSemanticWeight,limit:t.limit,maxResults:n.maxResults,provider:u,vectorStore:f,extensionVectorAdapter:n.extensionVectorAdapter,queryExpansion:n.queryExpansion,queryExpansionExtension:n.queryExpansionExtension,rerank:n.rerank,rerankExtension:n.rerankExtension,warnings:o,settings:n.settings});a=Gs(d,m,i,o)}return{effectiveMode:n.effectiveMode,hits:a}}catch(l){return o.push(Hr(n.effectiveMode,l)),{effectiveMode:"keyword",hits:i}}}function Hs(e,t){if(e.projection.mode==="compact"&&e.options.compact===!0)return ot({query:e.query.trim(),mode:e.effectiveMode,items:[],count:t,total:t,count_only:!0,filters:X({mode:e.effectiveMode,matchMode:e.matchMode,options:e.options,includeLinked:e.includeLinked,titleExact:e.titleExact,phraseExact:e.phraseExact,scoreThreshold:e.scoreThreshold,hybridSemanticWeight:e.hybridSemanticWeight,runtimeFieldFilters:e.runtimeFieldFilters})},e.warnings);let n=e.projection.mode==="full"?null:[...e.projection.fields];return ot({query:e.query.trim(),mode:e.effectiveMode,items:[],count:t,total:t,count_only:!0,filters:J({effectiveMode:e.effectiveMode,matchMode:e.matchMode,options:e.options,includeLinked:e.includeLinked,titleExact:e.titleExact,phraseExact:e.phraseExact,scoreThreshold:e.scoreThreshold,hybridSemanticWeight:e.hybridSemanticWeight,queryExpansion:e.queryExpansion,rerank:e.rerank,runtimeFieldFilters:e.runtimeFieldFilters}),projection:{mode:e.projection.mode,fields:n},now:N()},e.warnings)}function ot(e,t){return t.length===0?e:{...e,warnings:t}}function Ee(e,t){return t?{...e,workspace_memory:t}:e}function Ws(e,t,n){if(!e.highlight)return{hits:n,projection:e.projection};let r=new Map(t.map(o=>[o.metadata.id,o])),i=n.map(o=>({...o,highlights:ri(r.get(o.item.id),o.matched_fields,e.tokens)}));return e.projection.mode==="full"||e.projection.fields.includes("highlights")?{hits:i,projection:e.projection}:{hits:i,projection:{mode:e.projection.mode,fields:[...e.projection.fields,"highlights"]}}}function $s(e,t,n,r,i,o){let s=r<n?{total:n}:{};if(e.projection.mode==="compact"&&e.options.compact===!0)return ot({query:e.query.trim(),mode:e.effectiveMode,items:t,count:t.length,...s,...o,filters:X({mode:e.effectiveMode,matchMode:e.matchMode,options:e.options,includeLinked:e.includeLinked,titleExact:e.titleExact,phraseExact:e.phraseExact,scoreThreshold:e.scoreThreshold,hybridSemanticWeight:e.hybridSemanticWeight,runtimeFieldFilters:e.runtimeFieldFilters})},e.warnings);let a=i.mode==="full"?null:[...i.fields];return{query:e.query.trim(),mode:e.effectiveMode,items:t,count:t.length,...s,...o,filters:J({effectiveMode:e.effectiveMode,matchMode:e.matchMode,options:e.options,includeLinked:e.includeLinked,titleExact:e.titleExact,phraseExact:e.phraseExact,scoreThreshold:e.scoreThreshold,hybridSemanticWeight:e.hybridSemanticWeight,queryExpansion:e.queryExpansion,rerank:e.rerank,runtimeFieldFilters:e.runtimeFieldFilters}),projection:{mode:i.mode,fields:a},now:N(),...e.warnings.length>0?{warnings:e.warnings}:{}}}function Bs(e){if(e.after!==void 0&&e.count===!0)throw new h("Search --after cannot be combined with --count.",p.USAGE)}async function bi(e,t,n){Bs(t);let r=Ds(e,t),i=await Ps(r,n),o=await Ls(r,i),s=o.warnings;s.push(...r.inlineWarnings);let a=await An(o.allDocuments.map(v=>v.metadata),{pmRoot:i.pmRoot,statusRegistry:i.statusRegistry,now:N()});s.push(...a.warnings);let c=In(a,r.query);i.effectiveMode==="hybrid"&&i.semanticWeightProvided&&i.semanticWeightOverride===void 0&&s.push("search_hybrid_semantic_weight_override_invalid:using_settings_default");let d={query:r.query,matchMode:r.matchMode,options:r.options,includeLinked:r.includeLinked,titleExact:r.titleExact,phraseExact:r.phraseExact,scoreThreshold:i.scoreThreshold,hybridSemanticWeight:i.hybridSemanticWeight,queryExpansion:i.queryExpansion,rerank:i.rerank,projection:r.projection,warnings:s,runtimeFieldFilters:i.runtimeFieldFilters};if(i.effectiveMode==="keyword"&&(o.filteredDocuments.length===0||r.limit===0&&!r.countOnly))return Ee(Nr({...d,effectiveMode:i.effectiveMode},r.countOnly),c);let l=await js(r,i,o.filteredDocuments),u=await zs({prepared:r,runtime:i,filteredDocuments:o.filteredDocuments,keywordHits:l,warnings:s,modeWasExplicit:r.modeWasExplicit});if(u.effectiveMode!=="keyword"&&u.hits.length===0&&(o.filteredDocuments.length===0||r.limit===0&&!r.countOnly))return Ee(Nr({...d,effectiveMode:u.effectiveMode},r.countOnly),c);let f=u.hits.filter(v=>v.exact_id_match===!0||v.score>=i.scoreThreshold),m=oi(f,i.statusRegistry),g=m.length,y=wr({sorted:m,query:r.query,mode:u.effectiveMode,searchOptions:r.options,limit:r.limit??i.maxResults}),w={...d,effectiveMode:u.effectiveMode};if(r.countOnly)return Ee(Hs(w,g),c);let{hits:_,projection:b}=Ws(r,o.filteredDocuments,y.limited),k=wi(_,b);return Ee($s(w,k,g,y.limited.length,b,y.pageExtras),c)}import Ks from"node:fs/promises";import ut 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]="b90a064c-f423-5bf7-9fbf-1fb273c7b5af")}catch{}})();var Vs=ut.join("search","eval-queries.json"),ft={schema:q,examples:[JSON.stringify(we)],nextSteps:["Create a git-tracked golden-query JSON file that follows the schema, then re-run pm eval."]},Qs=new Set(["keyword","semantic","hybrid"]),Ys=e=>{if(e===void 0)return"keyword";let t=e.trim().toLowerCase();if(!Qs.has(t))throw new h("Eval --mode must be one of keyword|semantic|hybrid",p.USAGE);return t},Xs=e=>{if(e===void 0||e==="")return hr;let t=ee(e);if(t===null)throw new h("Eval --k must be a positive integer",p.USAGE);return t},Js=e=>{if(e===void 0||e==="")return;let t=String(e).trim(),n=Number(t);if([t.length===0,!Number.isFinite(n),n<0,n>1].includes(!0))throw new h("Eval --fail-under must be a number in the range [0, 1]",p.USAGE);return n},j=e=>Math.round(e*1e4)/1e4,Zs=async e=>{try{return await Ks.readFile(e,"utf8")}catch{throw new h(`Eval query set not found at ${e}`,p.NOT_FOUND,{...ft,examples:[`echo '${JSON.stringify(we)}' > ${e}`,"pm eval --queries ./my-eval.json"]})}},ea=(e,t)=>{try{return JSON.parse(e)}catch(n){throw new h(`Eval query set at ${t} is not valid JSON: ${n instanceof Error?n.message:String(n)}`,p.USAGE,ft)}},ta=e=>{try{return Be(e)}catch(t){throw new h(t instanceof Error?t.message:String(t),p.USAGE,ft)}},na=async e=>ta(ea(await Zs(e),e)),ra=(e,t)=>t?ut.resolve(process.cwd(),t):ut.join(e,Vs),ia=async(e,t,n,r)=>{let i=e.mode??t,s=(await bi(e.query,{mode:i,limit:String(n),fields:"id"},r)).items.map(c=>c.id).filter(c=>typeof c=="string"),a=gr(s,new Set(e.relevant_ids),n);return{metrics:a,report:{query:e.query,mode:i,relevant_total:a.relevant_total,retrieved_relevant:a.retrieved_relevant,ndcg:j(a.ndcg),mrr:j(a.mrr),precision:j(a.precision),recall:j(a.recall)}}},oa=(e,t,n,r)=>{let i=yr(n);return{k:e,query_count:t.length,aggregate:{ndcg:j(i.ndcg),mrr:j(i.mrr),precision:j(i.precision),recall:j(i.recall)},queries:t,...r!==void 0?{fail_under:r}:{},passed:r===void 0||i.ndcg>=r}},Gd=async(e,t)=>{let n=x(process.cwd(),t.path);if(!await A(R(n)))throw new h(`Tracker is not initialized at ${n}. Run pm init first.`,p.NOT_FOUND);let r=Xs(e.k),i=Ys(e.mode),o=Js(e.failUnder),s=ra(n,e.queries),a=await na(s),c=[],d=[];for(let l of a.queries){let{report:u,metrics:f}=await ia(l,i,r,t);d.push(f),c.push(u)}return oa(r,c,d,o)};(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]="348c9246-2fb9-529e-b627-f60c901a6cf2")}catch{}})();function Ei(e){return Math.round(e*1e6)/1e6}function vi(e,t,n){let r=e.get(t);r===void 0?e.set(t,new Set([n])):r.add(n)}function Si(e,t){let n=new Map(e.nodes().map(i=>[i,new Set]));Ue(e,t,i=>{n.get(i.source).add(i.target),n.get(i.target).add(i.source)});let r=new Map;for(let[i,o]of n)r.set(i,[...o].sort());return r}function sa(e,t){let n=new Map,r=new Map;return Ue(e,t,(i,o)=>{if(!o.ordering)return;let{predecessor:s,successor:a}=le(i,o);vi(r,s,a),vi(n,a,s)}),{incoming:n,outgoing:r}}function aa(e,t,n){let r=new Map([[e,0]]),i=new Map([[e,1]]),o=new Map,s=[],a=[e],c=0,d=0;for(let l=0;l<a.length;l+=1){let u=a[l];n.visitedNodes+=1,s.push(u);let f=r.get(u);u!==e&&(c+=1,d+=f);for(let m of t.get(u))if(n.inspectedEdges+=1,r.has(m)||(r.set(m,f+1),a.push(m)),r.get(m)===f+1){i.set(m,(i.get(m)??0)+i.get(u));let g=o.get(m);g===void 0?o.set(m,[u]):g.push(u)}}return{stack:s,sigma:i,predecessors:o,reachableCount:c,distanceSum:d}}function ca(e,t,n){let r=new Map;for(let i=e.stack.length-1;i>=0;i-=1){let o=e.stack[i],s=(1+(r.get(o)??0))/e.sigma.get(o);for(let a of e.predecessors.get(o)??[])r.set(a,(r.get(a)??0)+e.sigma.get(a)*s);o!==t&&n.set(o,(n.get(o)??0)+(r.get(o)??0))}}function da(e,t){return t<=1||e.reachableCount===0?0:e.reachableCount/(t-1)*(e.reachableCount/e.distanceSum)}function la(e,t,n,r,i){return{id:e,degree:t.get(e).length,inDegree:n.incoming.get(e)?.size??0,outDegree:n.outgoing.get(e)?.size??0,betweenness:Ei((r.get(e)??0)/2),closeness:Ei(i.get(e))}}function xi(e,t={}){let n=Si(e,t.kinds),r=sa(e,t.kinds),i=e.nodes(),o=new Map,s=new Map,a={visitedNodes:0,inspectedEdges:0};for(let l of i){t.signal?.throwIfAborted();let u=aa(l,n,a);s.set(l,da(u,i.length)),ca(u,l,o)}let c=0;for(let l of n.values())c+=l.length;let d=i.map(l=>la(l,n,r,o,s)).sort((l,u)=>u.betweenness-l.betweenness||u.degree-l.degree||l.id.localeCompare(u.id));return{value:{nodeCount:i.length,edgeCount:c/2,rows:d},meta:{visitedNodes:a.visitedNodes,inspectedEdges:a.inspectedEdges,truncated:!1}}}function ua(e,t){return e<=t?{source:e,target:t}:{source:t,target:e}}function fa(e,t,n){let i=t.get(e.node)[e.neighborIndex];if(e.neighborIndex+=1,n.inspectedEdges+=1,i!==e.parent){if(n.discovery.has(i)){n.low.set(e.node,Math.min(n.low.get(e.node),n.discovery.get(i)));return}return e.children+=1,n.discovery.set(i,n.timer),n.low.set(i,n.timer),n.timer+=1,{node:i,parent:e.node,neighborIndex:0,children:0}}}function ma(e,t,n){if(e.parent===null){e.children>1&&n.articulation.add(e.node);return}let r=e.parent,i=n.low.get(e.node);n.low.set(r,Math.min(n.low.get(r),i)),r!==t&&i>=n.discovery.get(r)&&n.articulation.add(r),i>n.discovery.get(r)&&n.bridges.push(ua(r,e.node))}function pa(e,t,n,r){n.discovery.set(e,n.timer),n.low.set(e,n.timer),n.timer+=1;let i=[{node:e,parent:null,neighborIndex:0,children:0}];for(;i.length>0;){r?.throwIfAborted();let o=i.at(-1);if(o.neighborIndex<t.get(o.node).length){let s=fa(o,t,n);s!==void 0&&i.push(s)}else ma(o,e,n),i.pop()}}function ki(e,t={}){let n=Si(e,t.kinds),r={discovery:new Map,low:new Map,timer:0,articulation:new Set,bridges:[],inspectedEdges:0};for(let i of e.nodes())r.discovery.has(i)||pa(i,n,r,t.signal);return{value:{articulationPoints:[...r.articulation].sort(),bridges:r.bridges.sort((i,o)=>i.source.localeCompare(o.source)||i.target.localeCompare(o.target))},meta:{visitedNodes:r.discovery.size,inspectedEdges:r.inspectedEdges,truncated:!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]="f155ac72-64eb-5316-b016-954abd48c0e7")}catch{}})();function ha(e){let t=e.registry(),n=new Map,r=new Set;for(let i of e.edges()){let o=t.require(i.kind);if(!o.ordering)continue;let{predecessor:s,successor:a}=le(i,o);if(r.add(s),r.add(a),s===a)continue;let c=n.get(s);c===void 0?n.set(s,new Set([a])):c.add(a)}return{forward:n,participants:r}}function ga(e,t,n,r){if(e===void 0)return r;let i=r;for(let o of e)t.has(o)&&(i=Math.min(i,n.get(o)));return i}function ya(e,t,n){let r=n-t;return{id:e,earliestStart:t,earliestFinish:t+1,latestStart:n,latestFinish:n+1,slack:r,critical:r===0}}function _a(e,t,n,r,i){let o=new Map;for(let s=e.length-1;s>=0;s-=1){let a=e[s],c=ga(t.forward.get(a),r,o,i);o.set(a,c-1)}return e.map(s=>ya(s,n[s],o.get(s))).sort((s,a)=>s.slack-a.slack||s.earliestStart-a.earliestStart||s.id.localeCompare(a.id))}function Ai(e,t={}){t.signal?.throwIfAborted();let n=ge(e,{registry:e.registry()}),r=ha(e),i=new Set(n.order),o=n.order.filter(d=>r.participants.has(d)),s=o.reduce((d,l)=>Math.max(d,n.depth[l]+1),0),a=_a(o,r,n.depth,i,s),c=a.length>0;return{exact:!0,acyclic:n.acyclic,makespan:s,scheduledCount:a.length,criticalPath:c?n.criticalPath:[],criticalPathLength:c?n.criticalPathLength:0,cycles:n.cycles,rows:a,provenance:{algorithm:"critical-path-method",edgeFamily:"ordering",weighting:"unit"}}}import Ci 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]="ee260dcf-f4df-5997-a8d7-691c19c66a41")}catch{}})();var Ri=1,mt=500,wa=64,ba="graph-durable-cache";function Mi(e){return Wt(e,ba,30,`graph-cache:${process.pid}`,!1,!1,3e3)}function Z(e){return Ci.join(e,"runtime","graph-cache.json")}function Fi(e){return Ci.join(e,"runtime","graph-audit-baseline.json")}function pt(e){if(e!==null)try{let t=JSON.parse(e);return typeof t!="object"||t===null||t.version!==Ri||typeof t.fingerprint!="string"||typeof t.saved_at!="string"||typeof t.results!="object"||t.results===null||Array.isArray(t.results)?void 0:t}catch{return}}async function ht(e,t){let n=await $(Z(e)),r=pt(n),i=r?.fingerprint===t;return{exists:n!==null,fresh:i,results:i?r.results:{}}}async function gt(e,t,n,r,i){let o=await Mi(e);try{let s=pt(await $(Z(e))),a=s?.fingerprint===t?s.results:{};delete a[r],a[r]=i;let c=Object.keys(a);for(let d of c.slice(0,Math.max(0,c.length-wa)))delete a[d];await Ae(Z(e),JSON.stringify({version:Ri,fingerprint:t,saved_at:new Date().toISOString(),results:a})),n.results=a}finally{await o()}}async function yt(e){let t=await Mi(e);try{await Et(Z(e))}finally{await t()}}async function Ti(e,t){let n=Z(e),r=await $(n),i=pt(r);return i===void 0?{exists:r!==null,fresh:!1,entry_count:0}:{exists:!0,fresh:i.fingerprint===t,entry_count:Object.keys(i.results).length,fingerprint:i.fingerprint.slice(0,12),saved_at:i.saved_at,bytes:Buffer.byteLength(r,"utf8")}}function _t(e,t){return t||e>=mt}function Ii(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.values(e).every(t=>Number.isInteger(t)&&t>=0)}function Ea(e){return typeof e!="object"||e===null||Array.isArray(e)?!1:Object.values(e).every(t=>typeof t=="object"&&t!==null&&!Array.isArray(t)&&[t.active,t.isolated,t.degree_leq_one].every(n=>Number.isInteger(n)&&n>=0))}function va(e){if(e!==null)try{let t=JSON.parse(e);if(typeof t!="object"||t===null)return;let n=t,r=n.profile;return typeof n.saved_at!="string"||typeof n.fingerprint!="string"||!Ii(n.affected_subjects_by_code)||typeof r!="object"||r===null||![r.nodes,r.edges,r.active_nodes,r.missing_nodes,r.isolated_active_nodes,r.degree_leq_one_active_nodes].every(i=>Number.isInteger(i)&&i>=0)||!Ii(r.edges_by_kind)||r.coverage_by_type!==void 0&&!Ea(r.coverage_by_type)?void 0:{...n,profile:{...r,coverage_by_type:r.coverage_by_type??{}}}}catch{return}}async function Di(e){return va(await $(Fi(e)))}async function Pi(e,t){await Ae(Fi(e),JSON.stringify(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]="9b8e22ad-6268-515d-994e-6b98a062ba93")}catch{}})();var Sa={missing_reference_active:{op:"investigate",confidence:"medium",rationale:"Restore or re-create the referenced item, or remove/retype the reference on the active holder; the correct fix depends on why the target is absent."},missing_reference_terminal:{op:"waive",confidence:"high",rationale:"Terminal-holder reference to an absent item is historical debt; waive it or clean it up only in a dedicated changelog-safe closed-item batch."},legacy_no_blocker_sentinel:{op:"remove",confidence:"high",rationale:"The pre-structured-dependency no-active-blocker sentinel is retired and carries no information; blocker state derives from blocked_by edges."},ordering_cycle:{op:"investigate",confidence:"low",rationale:"Every cycle member is unschedulable until one ordering edge is removed or retyped; the planner never chooses which edge to cut."},legacy_ordering_cycle:{op:"waive",confidence:"high",rationale:"Terminal-only ordering cycles have no scheduling effect; repairing them would mutate closed history (changelog drag)."},duplicate_edge:{op:"remove",confidence:"high",rationale:"Parallel same-family spellings state one relationship twice; remove all but one stored spelling, keeping the holder's canonical direction."},legacy_duplicate_edge:{op:"waive",confidence:"high",rationale:"Duplicated spellings between terminal items are historical noise; waive or batch changelog-safe cleanup."},duplicate_dependency_row:{op:"remove",confidence:"high",rationale:"The identical dependency row is stored more than once on the holder; drop the repeats so the row exists exactly once \u2014 graph semantics are unchanged."},legacy_duplicate_dependency_row:{op:"waive",confidence:"high",rationale:"Repeated identical rows on terminal holders are storage noise; waive or clean up only in a changelog-safe closed-item batch."},stale_lifecycle_block:{op:"investigate",confidence:"medium",rationale:`Add a local ordering edge, declare an external blocker with --dep "id=<external-ref>,kind=blocked_by,source_kind=external", or move the item back to an active status; only the holder's owner knows which is true.`},isolated_active_node:{op:"investigate",confidence:"medium",rationale:"Link the item to its parent, prerequisite, or origin \u2014 or register it as an explicitly exempt isolate; the audit never fabricates an edge."},sparse_active_node:{op:"investigate",confidence:"low",rationale:"Investigate for an honest second edge (story-to-task, defect family, cross-epic complement); sparse is not automatically defective."}};function Li(e){return`${e.source} -${e.kind}-> ${e.target}`}function xa(e){let[t,...n]=e.edges;return n.map(r=>({op:"remove",code:"duplicate_edge",subject:Li(r),rationale:"This stored spelling restates the kept canonical edge of the same semantic family; removing it leaves the relationship stated exactly once.",evidence:[`keep: ${Li(t)}`,`group: ${ze(e)}`],confidence:"high"}))}function ka(e,t){if(e.code==="duplicate_edge")return e.sample.flatMap(r=>xa(t.get(r)));let n=Sa[e.code];return e.sample.map(r=>({op:n.op,code:e.code,subject:r,rationale:n.rationale,evidence:[e.policy],confidence:n.confidence}))}function qi(e,t={}){let{redundancyLimit:n,...r}=t,i=fe(e,r),o=new Map(jn(e).map(d=>[ze(d),d])),s=i.findings.flatMap(d=>ka(d,o)),a=i.findings.some(d=>d.sample_truncated);t.signal?.throwIfAborted();let c=ue(e.graph,{limit:n??t.maxSampleSize??25,...t.signal===void 0?{}:{signal:t.signal}});for(let d of c.value)s.push({op:"remove",code:"redundant_edge",subject:`${d.edge.source} -> ${d.edge.target} (${d.edge.kind})`,rationale:"The stored edge is implied by a longer same-family witness path; shortcut edges are sometimes deliberate emphasis, so confirm intent before removing.",evidence:[`witness: ${d.witness.join(" -> ")}`],confidence:"medium"});return a=a||c.meta.truncated,{steps:s,report:i,truncated:a,cost:{visitedNodes:c.meta.visitedNodes,inspectedEdges:c.meta.inspectedEdges}}}(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]="0fbc54bf-3321-5c73-a351-5db01aab5544")}catch{}})();var Gi=new Set(["ancestors","descendants","predecessors","successors","paths","impact","dominators"]),O=10;function ji(e,t,n){return{...e,projection:{mode:t?"summary":"full",declared_field_groups:n===void 0?[]:[{name:n,restore_with:"--full"}],included_field_groups:n===void 0||t?[]:[n]}}}function Oi(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).flatMap(t=>t.split(",")).map(t=>t.trim()).filter(t=>t.length>0)}function Aa(e,t,n){let r=e.trim().toLowerCase();if(!Te.includes(r))throw new h(`Invalid graph subcommand "${e}". Use one of: ${Te.join(", ")}.`,p.USAGE);let i=r;if(Gi.has(i)&&!t?.trim())throw new h(`graph ${i} requires an item id.`,p.USAGE);if(i==="paths"&&!n?.trim())throw new h("graph paths requires a source and a target item id.",p.USAGE);return i}function wt(e){throw e instanceof TypeError?new h(e.message,p.USAGE):e}function bt(e){return{truncated:e.truncated,cost:{visited_nodes:e.visitedNodes,inspected_edges:e.inspectedEdges}}}function Ni(e,t){let n=t.trim().toLowerCase();for(let r of e.details)if(r.id.trim().toLowerCase()===n&&!e.missingIdSet.has(r.id.toLowerCase()))return r.id;throw new h(`Item ${t} not found`,p.NOT_FOUND)}function Ia(e,t,n){let r={ancestors:Mn,descendants:Fn,predecessors:Tn,successors:Dn}[e],i;try{i=r(n.assembly.graph,t,{...n.kinds===void 0?{}:{kinds:n.kinds},...n.maxDepth===void 0?{}:{maxDepth:n.maxDepth},...n.limit===void 0?{}:{limit:n.limit},...n.after===void 0?{}:{after:n.after}})}catch(s){wt(s)}let o=bt(i.meta);return{subcommand:e,root:t,count:i.value.length,...o,...i.meta.nextCursor===void 0?{}:{next_cursor:i.meta.nextCursor},...n.summary?{}:{ids:i.value}}}function Ca(e,t,n){let r=Pn(n.assembly.graph,e,t,{direction:n.direction,...n.kinds===void 0?{}:{kinds:n.kinds},...n.maxDepth===void 0?{}:{maxDepth:n.maxDepth},...n.maxPaths===void 0?{}:{maxPaths:n.maxPaths}});return{subcommand:"paths",root:e,target:t,direction:n.direction,count:r.value.length,...bt(r.meta),...n.summary?{}:{paths:r.value.map(i=>({nodes:i.nodes,kinds:i.edges.map(o=>o.kind),length:i.length}))}}}function Ra(e,t){let n;try{n=Vn(t.assembly.graph,e,{direction:t.direction,...t.kinds===void 0?{}:{kinds:t.kinds},...t.maxDepth===void 0?{}:{maxDepth:t.maxDepth},...t.unbounded?{}:{limit:t.limit??O},...t.after===void 0?{}:{after:t.after}})}catch(r){wt(r)}return{subcommand:"impact",root:e,direction:t.direction,count:n.affected.length,truncated:n.truncated,...n.nextCursor===void 0?{}:{next_cursor:n.nextCursor},cost:{visited_nodes:n.cost.visitedNodes,inspected_edges:n.cost.inspectedEdges},...t.summary?{}:{affected:n.affected}}}function Ma(e){let t=e.assembly.graph,n=e.limit??O,r=ge(t,{registry:t.registry()}),i=Qn(t);return{subcommand:"analyze",node_count:t.nodes().length,edge_count:t.edges().length,edge_basis:"deduplicated_directed",sample_limit:n,execution:{acyclic:r.acyclic,ordered_node_count:r.order.length,layer_count:r.layers.length,frontier_count:r.frontier.length,critical_path_length:r.criticalPathLength,cycle_count:r.cycles.length,...e.summary?{}:{frontier:r.frontier.slice(0,n),critical_path:r.criticalPath.slice(0,n),cycles:r.cycles.slice(0,n)}},knowledge:{component_count:i.components.length,largest_component_size:i.components[0]?.length??0,orphan_count:i.orphans.length,...e.summary?{}:{orphans:i.orphans.slice(0,n),hubs:i.hubs.slice(0,n)}}}}function Fa(e,t){let n=fe(e.assembly,{isTerminal:t,...e.sample===void 0?{}:{maxSampleSize:e.sample},...e.exemptIsolates.length===0?{}:{exemptIsolates:e.exemptIsolates},...e.exemptIsolateTypes.length===0?{}:{isolateExemptTypes:e.exemptIsolateTypes}}),r={},i={},o={},s={};for(let a of n.findings)r[a.severity]=(r[a.severity]??0)+1,i[a.code]=(i[a.code]??0)+1,o[a.severity]=(o[a.severity]??0)+a.count,s[a.code]=(s[a.code]??0)+a.count;return{subcommand:"audit",finding_count:n.findings.length,findings_by_severity:r,findings_by_code:i,affected_subjects_by_severity:o,affected_subjects_by_code:s,profile:n.profile,...e.summary?{}:{findings:n.findings}}}function Ta(e){let t=e.limit??O,n={};e.kinds!==void 0&&(n.kinds=e.kinds);let r=Ln(e.assembly.graph,n),i=r.value;return{subcommand:"communities",community_count:i.communities.length,largest_community_size:i.communities[0]?.size??0,iterations:i.iterations,converged:i.converged,truncated:!i.converged||i.communities.length>t,cost:{visited_nodes:r.meta.visitedNodes,inspected_edges:r.meta.inspectedEdges},...e.summary?{}:{communities:i.communities.slice(0,t).map(o=>({representative:o.representative,size:o.size,members:o.members.slice(0,t)}))}}}function Da(e){let t;try{t=ue(e.assembly.graph,{...e.kinds===void 0?{}:{kinds:e.kinds},...e.maxDepth===void 0?{}:{maxDepth:e.maxDepth},...e.limit===void 0?{}:{limit:e.limit}})}catch(n){wt(n)}return{subcommand:"redundancy",redundant_count:t.value.length,...bt(t.meta),...e.summary?{}:{redundant:t.value.map(n=>({source:n.edge.source,target:n.edge.target,kind:n.edge.kind,witness:n.witness}))}}}function Pa(e,t){let n=t.limit??O,r=qn(t.assembly.graph,e,{direction:t.direction,...t.kinds===void 0?{}:{kinds:t.kinds},...t.maxDepth===void 0?{}:{maxDepth:t.maxDepth}}),i=r.value.rows.filter(o=>o.dominatedCount>0);return{subcommand:"dominators",root:e,direction:t.direction,reachable_count:r.value.reachableCount,bottleneck_count:i.length,truncated:r.meta.truncated||i.length>n,cost:{visited_nodes:r.meta.visitedNodes,inspected_edges:r.meta.inspectedEdges},...t.summary?{}:{bottlenecks:i.slice(0,n).map(o=>({id:o.id,idom:o.idom,dominated_count:o.dominatedCount}))}}}function La(e){let t=e.limit??O,n=Ai(e.assembly.graph),r=n.rows.filter(i=>i.critical).length;return{subcommand:"slack",acyclic:n.acyclic,makespan:n.makespan,scheduled_count:n.scheduledCount,critical_count:r,critical_path_length:n.criticalPathLength,cycle_count:n.cycles.length,truncated:n.rows.length>t,...e.summary?{}:{critical_path:n.criticalPath,rows:n.rows.slice(0,t).map(i=>({id:i.id,earliest_start:i.earliestStart,latest_start:i.latestStart,slack:i.slack,critical:i.critical}))}}}function qa(e){let t=e.limit??O,n=xi(e.assembly.graph,e.kinds===void 0?{}:{kinds:e.kinds}),r=n.value;return{subcommand:"centrality",node_count:r.nodeCount,edge_count:r.edgeCount,edge_basis:"simple_undirected",truncated:r.rows.length>t,cost:{visited_nodes:n.meta.visitedNodes,inspected_edges:n.meta.inspectedEdges},...e.summary?{}:{rows:r.rows.slice(0,t).map(i=>({id:i.id,degree:i.degree,in_degree:i.inDegree,out_degree:i.outDegree,betweenness:i.betweenness,closeness:i.closeness}))}}}function ja(e){let t=e.limit??O,n=ki(e.assembly.graph,e.kinds===void 0?{}:{kinds:e.kinds}),{articulationPoints:r,bridges:i}=n.value;return{subcommand:"articulation",articulation_count:r.length,bridge_count:i.length,truncated:r.length>t||i.length>t,cost:{visited_nodes:n.meta.visitedNodes,inspected_edges:n.meta.inspectedEdges},...e.summary?{}:{articulation_points:r.slice(0,t),bridges:i.slice(0,t)}}}function Oa(e,t){let n=e.limit??O,r=qi(e.assembly,{isTerminal:t,redundancyLimit:n,...e.sample===void 0?{}:{maxSampleSize:e.sample},...e.exemptIsolates.length===0?{}:{exemptIsolates:e.exemptIsolates},...e.exemptIsolateTypes.length===0?{}:{isolateExemptTypes:e.exemptIsolateTypes}}),i={},o={};for(let s of r.steps)i[s.op]=(i[s.op]??0)+1,o[s.code]=(o[s.code]??0)+1;return{subcommand:"plan",step_count:r.steps.length,steps_by_op:i,steps_by_code:o,finding_count:r.report.findings.length,truncated:r.truncated||r.steps.length>n,cost:{visited_nodes:r.cost.visitedNodes,inspected_edges:r.cost.inspectedEdges},...e.summary?{}:{steps:r.steps.slice(0,n)}}}function Ui(e,t,n,r){return JSON.stringify({subcommand:e,root:t??null,target:n??null,kinds:r.kinds??null,maxDepth:r.maxDepth??null,limit:r.limit??null,after:r.after??null,direction:r.direction,maxPaths:r.maxPaths??null,sample:r.sample??null,exemptIsolates:[...new Set(r.exemptIsolates.map(i=>i.toLowerCase()))].sort(),exemptIsolateTypes:[...new Set(r.exemptIsolateTypes.map(i=>i.toLowerCase()))].sort(),summary:r.summary,unbounded:r.unbounded})}function zi(e,t,n,r,i){return e==="analyze"?Ma(r):e==="audit"?Fa(r,i):e==="plan"?Oa(r,i):e==="communities"?Ta(r):e==="redundancy"?Da(r):e==="dominators"?Pa(t,r):e==="slack"?La(r):e==="centrality"?qa(r):e==="articulation"?ja(r):e==="paths"?Ca(t,n,r):e==="impact"?Ra(t,r):Ia(e,t,r)}function Na(e,t){if(e!=="index"&&(t.rebuild===!0||t.clear===!0))throw new h("--rebuild and --clear apply only to graph index.",p.USAGE);if(e!=="audit"&&t.saveBaseline===!0)throw new h("--save-baseline applies only to graph audit.",p.USAGE);if(e==="slack"&&t.kind!==void 0)throw new h("graph slack analyzes every ordering kind; --kind is not supported.",p.USAGE);if(t.rebuild===!0&&t.clear===!0)throw new h("graph index accepts either --rebuild or --clear, not both.",p.USAGE);if(e==="impact"&&t.full===!0&&t.limit!==void 0)throw new h("graph impact accepts either --full or --limit, not both.",p.USAGE)}async function Ga(e,t,n,r,i,o){let s="status";if(o.clear===!0&&(await yt(e),s="cleared"),o.rebuild===!0){await yt(e);let c=await ht(e,t),d={assembly:n.assembly,direction:"both",exemptIsolates:[],exemptIsolateTypes:[],saveBaseline:!1,summary:!0,unbounded:!1};for(let l of["analyze","audit"])await gt(e,t,c,Ui(l,void 0,void 0,d),zi(l,void 0,void 0,d,i));s="rebuilt"}let a=await Ti(e,t);return{subcommand:"index",action:s,state:a.exists?a.fresh?"fresh":"stale":"absent",entry_count:a.entry_count,item_count:r,min_items_threshold:mt,persist_enabled:_t(r,a.exists),current_fingerprint:t.slice(0,12),...a.saved_at===void 0?{}:{saved_at:a.saved_at},...a.bytes===void 0?{}:{bytes:a.bytes}}}async function Ua(e,t,n,r){let i={saved_at:new Date().toISOString(),fingerprint:t,affected_subjects_by_code:n.affected_subjects_by_code,profile:n.profile},o=await Di(e);return r&&await Pi(e,i),o===void 0?n:{...n,baseline:On(o,i)}}async function za(e,t,n,r,i){try{await gt(e,t,n,r,i)}catch{}}async function kl(e,t,n,r,i){let o=Aa(e,t,n);Lt(r.summary===!0,r.full===!0,"--summary");let s=x(process.cwd(),i.path);if(!await A(R(s)))throw new h(`Tracker is not initialized at ${s}. Run pm init first.`,p.NOT_FOUND);let a=await M(s),c=P(a,I()),d=await ae(s,a.item_format,c.type_to_folder,void 0,a.schema),l=L(a.schema),u=Hi=>G(Hi,l);Na(o,r);let f=Cn(),m=Wn(r.kind,f),g=Un().lookup(s,Gn(d,u,f),()=>Rn(d,u,f)),y={assembly:g.assembly,...m===void 0?{}:{kinds:m},maxDepth:zn(r.maxDepth),limit:me(r.limit,"limit"),after:r.after?.trim()||void 0,direction:Hn(r.direction),maxPaths:me(r.maxPaths,"max-paths"),sample:me(r.sample,"sample"),exemptIsolates:Oi(r.exemptIsolate),exemptIsolateTypes:Oi(r.exemptIsolateType),saveBaseline:r.saveBaseline===!0,summary:r.summary===!0,unbounded:r.full===!0};if(o==="index")return ji(await Ga(s,g.fingerprint,y,d.length,u,r),!1);let w=Gi.has(o)?Ni(y.assembly,t):void 0,_=o==="paths"?Ni(y.assembly,n):void 0,b=Ui(o,w,_,y),k=await ht(s,g.fingerprint),v=k.results[b],S=g.memoize(b,()=>v!==void 0?structuredClone(v):zi(o,w,_,y,u)),E=_t(d.length,k.exists);!S.reused&&v===void 0&&E&&await za(s,g.fingerprint,k,b,S.value);let T=S.value.subcommand==="audit"?await Ua(s,g.fingerprint,S.value,y.saveBaseline):S.value;return T.cache={fingerprint:g.fingerprint.slice(0,12),assembly:g.assemblyReused?"hit":"miss",result:S.reused?"hit":"miss",durable:v!==void 0?"hit":E?"miss":"off"},ji(T,y.summary,"result_rows")}export{ge as a,Vn as b,Qn as c,$a as d,Ya as e,Xa as f,oc as g,cr as h,dr as i,lr as j,fo as k,ur as l,Ec as m,vc as n,q as o,Fo as p,we as q,Be as r,X as s,J as t,No as u,wr as v,Xe as w,Je as x,Ze as y,et as z,Ur as A,zr as B,Cd as C,bi as D,Vs as E,Gd as F,xi as G,ki as H,Ai as I,Ri as J,mt as K,Z as L,Fi as M,ht as N,gt as O,yt as P,Ti as Q,_t as R,Di as S,Pi as T,qi as U,Aa as V,kl as W};
5
- //# sourceMappingURL=chunk-B4H7FEFH.js.map
@@ -1,2 +0,0 @@
1
- import{b as I,d as T,e as x,h as H}from"./chunk-PD3225AM.js";import{A as c,Ad as y,C as f,Da as l,La as p,Nf as E,Oa as u,b as h,hf as _,if as w,lc as g,pf as b,tf as v}from"./chunk-D4FPS43D.js";(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},r=new t.Error().stack;r&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[r]="bccbd81b-988f-569d-8dbf-c0998d813953")}catch{}})();function G(t,r){let n=v(t),i=t.length>0?t[t.length-1].after_hash:w(),o=r===void 0?void 0:_(r),d=o===void 0?void 0:o===i,e=[...n.errors];return d===!1&&e.push("verify_failed:current_item_hash_mismatch"),{ok:e.length===0,entries:t.length,errors:e,latest_after_hash:t.length>0?t[t.length-1].after_hash:void 0,current_item_hash:o,current_matches_latest:d}}async function X(t,r,n={}){let i=p(n.cwd??process.cwd(),n.pmRoot);if(!await h(u(i)))throw new f(`Tracker is not initialized at ${i}. Run pm init first.`,c.NOT_FOUND);let o=await E(i),d=l(o,g()),e=await H(i,t,o,d.type_to_folder),s=await y(e.historyPath,e.id);if(s.length===0)throw new f(`No history exists for ${e.id}; point-in-time reads are unavailable.`,c.NOT_FOUND);let a=I(r,s),R=x(T(s,a.historyIndex),a),m=b(R,{schema:o.schema});if(m.metadata.id!==e.id)throw new f(`History target resolved to item ${m.metadata.id}, expected ${e.id}.`,c.GENERIC_FAILURE);let D=s[a.historyIndex];return{document:m,reconstructed:!0,as_of_version:a.historyIndex+1,as_of_timestamp:D.ts,target:a,history_length:s.length}}export{G as a,X as b};
2
- //# sourceMappingURL=chunk-B4KLBBMN.js.map
@@ -1,2 +0,0 @@
1
- (function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},d=new e.Error().stack;d&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[d]="379fdd4c-fbb7-5d62-91d2-1fe86bdf596e")}catch{}})();
2
- //# sourceMappingURL=chunk-BXCSXK4J.js.map
@@ -1,23 +0,0 @@
1
- import{s as ut}from"./chunk-NFLJ3FHD.js";import{a as rt,b as pe,c as me,d as it,e as st,f as z,g as _e,h as at,i as J}from"./chunk-KZ4X3DGU.js";import{$f as Z,A as h,Ba as et,Bf as Re,C as y,Ca as tt,Da as x,Ef as ot,H as Xe,Hc as P,Ic as nt,Jc as v,Kc as M,Kf as N,La as A,Nc as ue,Nf as b,O as Ve,Oa as ne,Pc as we,Pf as ct,R as k,Vf as lt,Yf as dt,Z as Qe,Zf as ft,b as j,c as I,d as Y,da as Ie,dg as ve,ea as Ae,fa as xe,lc as R,uc as D,v as Ze,yf as F,zd as C}from"./chunk-D4FPS43D.js";import{mkdir as fn,readFile as un}from"node:fs/promises";import wt 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]="d49ec604-c10c-5706-9d87-510845e55e1a")}catch{}})();var Ce=class extends Error{constructor(t="Workspace transaction interrupted"){super(t),this.name="WorkspaceTransactionInterruptedError"}},pn="sdk-workspace-transaction",mn=/^[a-zA-Z0-9._-]+$/,hn=30,yn=3e3;function pt(e,t){if(typeof e!="string")throw new TypeError(`${t} must be a string`);let o=e.trim();if(!o||!mn.test(o))throw new TypeError(`${t} must match [a-zA-Z0-9._-]+`);return o}function mt(e,t){if(typeof e!="string")throw new TypeError(`${t} must be a string`);let o=e.trim();if(!o)throw new TypeError(`${t} must be non-empty`);return o}function ht(e,t,o){let n=e??t;if(!Number.isInteger(n)||n<=0)throw new TypeError(`${o} must be a positive integer`);return n}function _t(e,t){return wt.join(e,"transactions","sdk",`${t}.json`)}async function H(e,t){t.updatedAt=k();let o=_t(e,t.transactionId);await fn(wt.dirname(o),{recursive:!0}),await Y(o,`${JSON.stringify(t,null,2)}
2
- `)}function gn(e){return Number.isInteger(e.attempt)&&typeof e.author=="string"&&typeof e.createdAt=="string"&&typeof e.updatedAt=="string"}function X(e){return Object.assign(Object.create(null),e)}function wn(e,t){try{let o=JSON.stringify(e,(n,r)=>{if(typeof r=="number"&&!Number.isFinite(r))throw new TypeError(`${t} contains a non-finite number`);if(r===void 0||typeof r=="function"||typeof r=="symbol")throw new TypeError(`${t} contains a non-JSON value`);return r});return JSON.parse(o)}catch(o){throw new TypeError(`${t} must be JSON serializable`,{cause:o})}}function Fe(e,t){return e===void 0?void 0:wn(e,t)}function Pe(e,t,o,n){let r=Fe(o,n);r===void 0?delete e[t]:e[t]=r}function yt(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function gt(e,t){return Array.isArray(e)&&new Set(e).size===e.length&&e.every(o=>typeof o=="string"&&t.includes(o))}function _n(e,t){if(!gt(e.startedStepIds,t)||!gt(e.completedStepIds,t)||!yt(e.results)||!yt(e.compensationData))return!1;let o=e.startedStepIds,n=new Set(o),r=e.completedStepIds,i=new Set(r);return Object.keys(e.compensationData).some(s=>!n.has(s))||Object.keys(e.results).some(s=>!i.has(s))?!1:e.status==="committed"?t.every(s=>i.has(s)):e.status!=="compensated"||i.size===0&&n.size===0}function Sn(e,t,o){let n;try{n=JSON.parse(e)}catch{throw new TypeError(`Workspace transaction ${t} journal is invalid JSON`)}if(!n||typeof n!="object"||Array.isArray(n))throw new TypeError(`Workspace transaction ${t} journal is invalid`);let r=n,i=r.schemaVersion===1&&r.transactionId===t,s=Array.isArray(r.stepIds)&&r.stepIds.length===o.length&&r.stepIds.every((f,d)=>f===o[d]),a=_n(r,o),c=gn(r),l=["applying","compensating","compensated","committed"].includes(String(r.status));if(!i||!s||!a||!c||!l)throw new TypeError(`Workspace transaction ${t} journal does not match the supplied plan`);return{...r,results:X(r.results),compensationData:X(r.compensationData)}}async function kn(e,t,o,n,r){let i=r,s=i!==void 0;if(i?.status==="compensating"&&await St(e,i),i===void 0||i.status==="compensated"){let a=k();i={schemaVersion:1,transactionId:t,author:o,status:"applying",attempt:(i?.attempt??0)+1,createdAt:i?.createdAt??a,updatedAt:a,stepIds:n,startedStepIds:[],completedStepIds:[],results:X(),compensationData:X()},await H(e.pmRoot,i),await G(e,i,"prepared")}return{journal:i,recovered:s}}async function bn(e,t,o){try{await Tn(t,e.steps),await H(e.pmRoot,t);let n=new Set(t.completedStepIds),r=new Set(t.startedStepIds);for(let i of e.steps){if(n.has(i.id))continue;let s=await i.inspect(),a=Fe(s.result,`Step ${i.id} result`);if(s.state!=="applied"){let c=await i.prepareCompensation?.();Pe(t.compensationData,i.id,c,`Step ${i.id} compensation data`),r.add(i.id),t.startedStepIds=e.steps.map(f=>f.id).filter(f=>r.has(f)),await H(e.pmRoot,t);let l=await i.apply();a=Fe(l,`Step ${i.id} result`)}await G(e,t,"step_applied",i.id),n.add(i.id),t.completedStepIds=e.steps.map(c=>c.id).filter(c=>n.has(c)),Pe(t.results,i.id,a,`Step ${i.id} result`),await H(e.pmRoot,t),await G(e,t,"step_recorded",i.id)}return await G(e,t,"committing"),t.status="committed",await H(e.pmRoot,t),await G(e,t,"committed"),{transactionId:t.transactionId,status:"committed",recovered:o,results:X(t.results)}}catch(n){if(n instanceof Ce||t.status==="committed")throw n;try{await St(e,t)}catch(r){throw new AggregateError([n,r],`Workspace transaction failed and compensation failed: ${String(r)}`,{cause:r})}throw n}}async function En(e,t,o){try{return Sn(await un(_t(e,t),"utf8"),t,o)}catch(n){if(n!==null&&typeof n=="object"&&"code"in n&&n.code==="ENOENT")return;throw n}}async function G(e,t,o,n){await e.onTransition?.({transactionId:t.transactionId,attempt:t.attempt,transition:o,...n===void 0?{}:{stepId:n}})}async function Tn(e,t){let o=new Set,n=X();for(let r of t){let i=await r.inspect();i.state==="applied"&&(o.add(r.id),Pe(n,r.id,i.result,`Step ${r.id} result`))}e.results=n,e.completedStepIds=t.map(r=>r.id).filter(r=>o.has(r))}async function St(e,t){t.status="compensating",await H(e.pmRoot,t),await G(e,t,"compensating");let o=new Set(t.completedStepIds),n=new Set(t.startedStepIds);for(let r of[...e.steps].reverse()){if(!n.has(r.id)&&!o.has(r.id))continue;let i;try{i=n.has(r.id)&&(await r.inspect()).state==="applied"}catch{i=n.has(r.id)}i&&(await G(e,t,"step_compensating",r.id),await r.compensate(t.compensationData[r.id])),o.delete(r.id),n.delete(r.id),t.completedStepIds=e.steps.map(s=>s.id).filter(s=>o.has(s)),t.startedStepIds=e.steps.map(s=>s.id).filter(s=>n.has(s)),delete t.results[r.id],delete t.compensationData[r.id],await H(e.pmRoot,t),await G(e,t,"step_compensated",r.id)}t.status="compensated",await H(e.pmRoot,t),await G(e,t,"compensated")}async function kt(e){let t=mt(e.pmRoot,"Transaction pmRoot"),o=pt(e.transactionId,"Transaction id"),n=mt(e.author,"Transaction author"),r=ht(e.lockTtlSeconds,hn,"Transaction lock TTL"),i=ht(e.lockWaitMs,yn,"Transaction lock wait"),s=[...e.steps];if(s.length===0)throw new TypeError("Workspace transaction requires at least one step");let a=s.map(f=>{let d=pt(f.id,"Transaction step id");if(d!==f.id)throw new TypeError("Transaction step id must not contain surrounding whitespace");return d});if(new Set(a).size!==a.length)throw new TypeError("Workspace transaction step ids must be unique");let c={...e,pmRoot:t,transactionId:o,author:n,steps:s,lockTtlSeconds:r,lockWaitMs:i},l=await F(t,pn,r,n,!1,!1,i);try{let f=await En(t,o,a),d=f!==void 0;if(f?.status==="committed")return{transactionId:o,status:"committed",recovered:!0,results:X(f.results)};let g=await kn(c,o,n,a,f);return await bn(c,g.journal,d||g.recovered)}finally{await l()}}import{readFile as $n,writeFile as In}from"node:fs/promises";import he 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]="bbfa5b19-d801-582a-98e8-0c4925dd57c0")}catch{}})();var Et="# pm-cli:runtime-cache:start",Oe="# pm-cli:runtime-cache:end",Tt=".agents/pm",An=["runtime/","search/","locks/","transactions/","checkpoints/"],xn=["search/eval-queries.json"];async function bt(e){try{return await e()}catch(t){throw t instanceof Error&&"code"in t&&typeof t.code=="string"&&["EACCES","EPERM","EROFS"].includes(t.code)?new y("The workspace .gitignore is not writable.",h.GENERIC_FAILURE,{code:"init_gitignore_unwritable",reason:t.code.toLowerCase(),required:"Grant the current user read and write access to the workspace .gitignore before initialization.",why:"pm init must publish its managed runtime-cache ignore fence without replacing unrelated entries.",nextSteps:["Grant read and write access to the workspace .gitignore and rerun pm init.","If the workspace is intentionally read-only, initialize pm in a writable workspace or clone."]}):t}}function $t(e){return e.replaceAll("\\","/").replace(/^\.\/+/,"").replace(/\/+$/,"")}function Ne(e){let t=e.replaceAll("\\","/");return he.isAbsolute(e)||t===".."||t.startsWith("../")}function Rn(e=Tt){let t=$t(e);return[Et,...An.map(o=>o==="search/"?`${t}/${o}*`:`${t}/${o}`),...xn.map(o=>`!${t}/${o}`),Oe].join(`
3
- `)}async function Yo(e,t={}){let o=he.join(e,".gitignore"),n=Tt;if(t.pmRoot!==void 0){let f=$t(he.relative(he.resolve(e),he.resolve(t.pmRoot)));if(Ne(f))return{path:o,changed:!1};f.length>0&&(n=f)}let r="";try{r=await bt(()=>$n(o,"utf8"))}catch(f){if(!(f instanceof Error&&"code"in f&&f.code==="ENOENT"))throw f}let i=r.indexOf(Et),s=r.indexOf(Oe),c=(i>=0&&s>=i?`${r.slice(0,i)}${r.slice(s+Oe.length)}`:r).trimEnd(),l=`${c.length>0?`${c}
4
-
5
- `:""}${Rn(n)}
6
- `;return l===r?{path:o,changed:!1}:(await bt(()=>In(o,l,"utf8")),{path:o,changed:!0})}import{readFile as Se,realpath as Le,writeFile as vn}from"node:fs/promises";import{execFile as Cn}from"node:child_process";import S from"node:path";import{promisify as Fn}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]="a250384a-0279-5d01-ade4-f64be3119ed9")}catch{}})();var De=Fn(Cn),V="# pm-cli:merge-drivers:start",ye="# pm-cli:merge-drivers:end",Pn="merge-fence";function It(e){return`'${e.replaceAll("'",`'"'"'`)}'`}function xt(){let e=Qe(import.meta.url,["../../.."]);return`${It(process.execPath)} ${It(S.join(e,"dist","cli.js"))}`}var Rt=[{key:"pm-item-toon",name:"pm field-aware TOON item document merge",artifact:"item",itemPath:"%P"},{key:"pm-item-markdown",name:"pm field-aware JSON-markdown item document merge",artifact:"item",itemPath:"%P"},{key:"pm-history",name:"pm append-only history stream merge",artifact:"history",itemPath:void 0},{key:"pm-relationship",name:"pm append-only relationship event store merge",artifact:"relationship",itemPath:void 0},{key:"pm-json",name:"pm key-level JSON config merge",artifact:"json",itemPath:void 0}];async function On(e){try{let{stdout:t}=await De("git",["rev-parse","--show-toplevel"],{cwd:e,encoding:"utf8",windowsHide:!0,timeout:1e4});return await Le(t.trim())}catch{return null}}async function vt(e){let t=await On(e);if(t===null)throw new y("pm merge install requires a git repository (merge drivers are git configuration).",h.USAGE);return t}function Me(e,t){return S.relative(e,t).replaceAll("\\","/")}function U(e){return`"${e.replaceAll("\\","\\\\").replaceAll('"','\\"')}"`}function At(e,t){if(e[t]!=="'")return null;let o="";for(let n=t+1;n<e.length;n+=1){if(e.startsWith(`'"'"'`,n)){o+="'",n+=4;continue}if(e[n]==="'")return{value:o,nextOffset:n+1};o+=e[n]}return null}async function Nn(e,t){let o=At(e,0);if(o===null||e[o.nextOffset]!==" ")return!1;let n=At(e,o.nextOffset+1);if(n===null||e.slice(n.nextOffset)!==t||!/^node(?:\.exe)?$/iu.test(S.basename(o.value))||S.basename(n.value)!=="cli.js"||S.basename(S.dirname(n.value))!=="dist"||!await j(o.value)||!await j(n.value))return!1;try{let r=S.dirname(S.dirname(n.value)),i=JSON.parse(await Se(S.join(r,"package.json"),"utf8")),s=typeof i.bin=="object"&&i.bin!==null&&"pm"in i.bin?i.bin.pm:void 0;return i.name==="@unbrained/pm-cli"&&(i.bin==="dist/cli.js"||s==="dist/cli.js")}catch{return!1}}function Ue(e,t){let o=e.length>0?`${e}/`:"",n=[`${U(`${o}**/*.toon`)} merge=pm-item-toon`,`${U(`${o}**/*.md`)} merge=pm-item-markdown`];for(let r of t)n.push(`${U(`${o}${r}/*.toon`)} merge=pm-item-toon`),n.push(`${U(`${o}${r}/*.md`)} merge=pm-item-markdown`);return n.push(`${U(`${o}**/*.jsonl`)} merge=pm-relationship`),n.push(`${U(`${o}history/*.jsonl`)} merge=pm-history`),n.push(`${U(`${o}settings.json`)} merge=pm-json`),n.push(`${U(`${o}**/*.json`)} merge=pm-json`),n.push(`${U(`${o}extensions/**`)} -merge`),n.push(`${U(`${o}extensions/.managed-extensions.json`)} merge=pm-json`),n}async function Ct(e,t,o){let n=S.join(e,".gitattributes"),r="";try{r=await Se(n,"utf8")}catch(d){if(!(d instanceof Error&&"code"in d&&d.code==="ENOENT"))throw d}let i=[V,...t,ye].join(`
7
- `),s=r.indexOf(V),a=r.indexOf(ye),l=(s>=0&&a>s?`${r.slice(0,s)}${r.slice(a+ye.length)}`:r.replace(V,"").replace(ye,"")).trimEnd(),f=`${l.length>0?`${l}
8
-
9
- `:""}${i}
10
- `;return f===r?{path:n,changed:!1}:(o||await vn(n,f,"utf8"),{path:n,changed:!0})}function Ft(e){let t=x(e,null);return[...new Set(Object.values(t.type_to_folder))].sort((o,n)=>o.localeCompare(n))}async function ur(e,t){let o=S.resolve(e),n=null,r="",i=o;for(let p=0;p<8;p+=1){let w=S.join(i,".gitattributes");try{let _=await Se(w,"utf8");if(_.includes(V)){n=i,r=_;break}}catch{}let E=S.dirname(i);if(E===i)break;i=E}if(n===null)return{status:"not_installed",missing_patterns:[],stale_patterns:[],schema_scope:"project"};let s=S.join(n,".gitattributes"),a=r.indexOf(V),c=r.indexOf(ye),l=c>a?r.slice(a+V.length,c).split(`
11
- `).map(p=>p.trim()).filter(p=>p.length>0):[],f=Ue(Me(n,o),t),d=new Set(l),g=new Set(f),m=f.filter(p=>!d.has(p)),u=l.filter(p=>!g.has(p));return{status:m.length>0||u.length>0?"drift":"ok",path:s,missing_patterns:m,stale_patterns:u,schema_scope:"project"}}async function pr(e){let t=xt(),o=[],n=[];for(let r of Rt){let i=`merge.${r.key}.driver`,s=` merge driver ${r.artifact} "%O" "%A" "%B"${r.itemPath===void 0?"":` --item-path ${r.itemPath}`}`,a=`${t}${s}`;try{let{stdout:c}=await De("git",["config","--local","--get",i],{cwd:e,encoding:"utf8",windowsHide:!0,timeout:1e4}),l=c.trim();l!==a&&!await Nn(l,s)&&n.push(i)}catch{o.push(i)}}return{status:o.length>0?"missing":n.length>0?"drift":"ok",missing_keys:o,drifted_keys:n}}async function Pt(e){let t;try{t=await vt(S.resolve(e))}catch{return{status:"no_git"}}let o=Me(t,S.resolve(e)),n=await b(e),r=C(void 0,n.author_default),i=await F(e,Pn,n.locks.ttl_seconds,r,!1,N(n).force_required_for_stale_lock,n.locks.wait_ms);try{let s=S.join(t,".gitattributes"),a;try{a=await Se(s,"utf8")}catch(d){if(d instanceof Error&&"code"in d&&d.code==="ENOENT")return{status:"not_installed",path:s};throw d}if(!a.includes(V))return{status:"not_installed",path:s};let c=await b(e),l=Ft(c),f=await Ct(t,Ue(o,l),!1);return{status:f.changed?"refreshed":"unchanged",path:f.path}}finally{await i()}}async function mr(e,t){let o=t.path?.trim(),n=process.env.PM_SOURCE_WORKSPACE_ROOT?.trim(),r=process.env.PM_SOURCE_PM_PATH?.trim(),i=o===void 0&&n!==void 0&&n.length>0&&r!==void 0&&r.length>0,s=o!==void 0?A(process.cwd(),o):i?S.resolve(r):A(process.cwd());if(!await j(ne(s)))throw new y(`Tracker is not initialized at ${s}. Run pm init first.`,h.NOT_FOUND);let a=await vt(o!==void 0?s:i?S.resolve(n):process.cwd());return Ln({pmRoot:s,workspaceRoot:a,dryRun:e.dryRun===!0})}async function Ln(e){let t=S.resolve(e.pmRoot),o=S.resolve(e.workspaceRoot),n=e.dryRun===!0,r,i;try{[r,i]=await Promise.all([Le(t),Le(o)])}catch(m){throw new y(`Cannot resolve tracker root ${t} or workspace root ${o}: ${String(m)}`,h.NOT_FOUND,{code:"merge_root_not_found",nextSteps:["Initialize the tracker and ensure both paths are accessible.",'Retry "pm merge install" from the repository workspace.']})}let s=Me(i,r);if(Ne(s))throw new y(`Tracker root ${t} is outside the git repository ${o}; there is nothing to configure for this repository.`,h.USAGE);let a=await b(r),c=Ft(a),l=Ue(s,c),f=[],d=xt();for(let m of Rt)f.push({key:`merge.${m.key}.name`,value:m.name}),f.push({key:`merge.${m.key}.driver`,value:`${d} merge driver ${m.artifact} "%O" "%A" "%B"${m.itemPath===void 0?"":` --item-path ${m.itemPath}`}`});if(!n)try{for(let m of f)await De("git",["config","--local",m.key,m.value],{cwd:i,encoding:"utf8",windowsHide:!0,timeout:1e4})}catch{throw new y(`Cannot install repository-local merge drivers in ${i}. Ensure the repository Git config is writable and no other Git process holds its lock, then retry.`,h.DEPENDENCY_FAILED,{code:"merge_git_config_unwritable",why:"pm merge install must persist clone-local driver commands before publishing their shared .gitattributes mappings.",nextSteps:["Make the repository Git config writable or wait for the process holding its lock to finish.",'Retry "pm merge install"; the operation is idempotent.','Use "pm merge install --dry-run --json" when the workspace is intentionally read-only.']})}let g=await Ct(i,l,n);return{ok:!0,dry_run:n,workspace_root:i,pm_root:r,gitattributes:{path:g.path,changed:g.changed,patterns:l,schema_scope:"project"},git_config:f,guidance:["Commit .gitattributes so every branch and collaborator shares the merge mapping.",'git config is per-clone: each collaborator (and each fresh worktree/clone) runs "pm merge install" once.','After merging branches, run "pm validate" and, if history drift is reported, "pm history-repair --all" to reconcile item state with merged history.',"Custom item types registered later refresh this fence automatically (pm schema add-type/remove-type); rerun pm merge install only after out-of-band type-folder edits."],generated_at:k()}}import{createHash as Kt}from"node:crypto";import ee from"node:fs/promises";import le 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]="79b35844-ab8e-5b6f-9975-4dd85b210bcb")}catch{}})();var Dn=new Set(Ae),Mn=new Set(xe),Ot=new Set([...Ze.filter(e=>e!=="severity"),"id","title","type","status","priority","tags","assignee","parent","description","body","created_at","updated_at","closed_at","completed_at","author","deadline","estimate","sprint","release","risk","confidence","reviewer","resolution","expected","actual"]),Un=["create","update"];function L(e){return typeof e=="string"?e.trim().toLowerCase().replaceAll(/[\s-]+/g,"_"):""}function Mt(e){if(typeof e!="string")return"";let t=e.trim().toLowerCase().replaceAll(/[\s_]+/g,"-");return t.startsWith("--")?t.slice(2):t}function Nt(e){return e.replaceAll("_","-")}function jn(e,t){let o=new Set;for(let n of e){let r=Mt(n);r.length>0&&r!==t&&o.add(r)}return[...o].sort((n,r)=>n.localeCompare(r))}function zn(e){let t=new Set;for(let o of e??[]){let n=o.trim();n.length>0&&t.add(n)}return[...t].sort((o,n)=>o.localeCompare(n))}function Gn(e){let t=new Set,o=[];for(let n of e??[]){let r=n.trim().toLowerCase();if(r.length!==0){if(!Mn.has(r))throw new Error(`Invalid field command "${n}". Allowed: ${xe.join(", ")}.`);t.has(r)||(t.add(r),o.push(r))}}return e===void 0||o.length===0?[...Un]:o}function Ut(e){let t=L(e.key);if(t.length===0)throw new Error("Field key must not be empty.");if(Ot.has(t))throw new Error(`Cannot define custom field "${t}": custom schema field "${t}" collides with built-in item metadata "${t}". Rename the custom field with a project-specific prefix. Reserved fields: ${[...Ot].sort((f,d)=>f.localeCompare(d)).join(", ")}.`);let o=typeof e.type=="string"&&e.type.trim().length>0?e.type.trim().toLowerCase():"string";if(!Dn.has(o))throw new Error(`Invalid field type "${e.type}". Allowed: ${Ae.join(", ")}.`);let n=o,r=Gn(e.commands),i=Mt(e.cliFlag),s=i.length>0&&i!==Nt(t)?i:void 0,a=s??Nt(t),c=jn(e.aliases??[],a),l=e.description?.trim();return{key:t,type:n,commands:r,description:l&&l.length>0?l:void 0,cliFlag:s,cliAliases:c,required:e.required===!0,requiredOnCreate:e.requiredOnCreate===!0,allowUnset:e.allowUnset!==!1,requiredTypes:zn(e.requiredTypes)}}function qn(e){if(Array.isArray(e))return e;if(typeof e!="object"||e===null)return;let t=e;if(Array.isArray(t.fields))return t.fields;if(Array.isArray(t.definitions))return t.definitions}function Jn(e){let t=qn(e);if(!t)return[];let o=[];for(let n of t){if(typeof n!="object"||n===null||Array.isArray(n))continue;let r=n;typeof r.key!="string"||r.key.trim().length===0||o.push(r)}return o}function oe(e){if(e==null||e.trim().length===0)return{fields:[]};let t;try{t=JSON.parse(e)}catch{throw new Error("schema/fields.json contains invalid JSON.")}return{fields:Jn(t)}}function re(e){return`${JSON.stringify({fields:e.fields},null,2)}
12
- `}function jt(e,t){let o=e.fields.find(s=>L(s.key)===t.key),n=o!==void 0,r=e.fields.filter(s=>L(s.key)!==t.key),i={...o,key:t.key,type:t.type,commands:[...t.commands]};return Lt(i,"description",t.description),Lt(i,"cli_flag",t.cliFlag),t.cliAliases.length>0?i.cli_aliases=[...t.cliAliases]:delete i.cli_aliases,Dt(i,"required",t.required),Dt(i,"required_on_create",t.requiredOnCreate),t.allowUnset===!1?i.allow_unset=!1:delete i.allow_unset,t.requiredTypes.length>0?i.required_types=[...t.requiredTypes]:delete i.required_types,r.push(i),r.sort((s,a)=>L(s.key).localeCompare(L(a.key))),{file:{fields:r},definition:i,replaced:n}}function zt(e,t){let o=L(t);if(o.length===0)throw new Error("Field key must not be empty.");let n=[],r=e.fields.filter(i=>L(i.key)===o?(n.push(i),!1):!0);return n.length===0?{file:{fields:r},removed:!1}:{file:{fields:r},removed:!0,definition:n[0]}}function Lt(e,t,o){let n=e;o!==void 0&&o.length>0?n[t]=o:delete n[t]}function Dt(e,t,o){let n=e;o?n[t]=!0:delete n[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]="f81297bd-06ac-5aa4-9e1b-802fb50c9cd0")}catch{}})();var Hn=new Set(Ie),Wn=2e3,ke=new Map,Q=new Set(nt.map(e=>T(e.id)).filter(e=>e.length>0));function T(e){if(typeof e!="string")return"";let t=ke.get(e);if(t!==void 0)return t;let o=e.trim().toLowerCase().replaceAll(/[\s-]+/g,"_");return ke.size>=Wn&&Ve(ke),ke.set(e,o),o}function Kn(e){let t=new Set;for(let o of e){let n=T(o);n.length>0&&t.add(n)}return[...t].sort((o,n)=>o.localeCompare(n))}function Gt(e){let t=T(e.id);if(t.length===0)throw new Error("Status id must not be empty.");if(Q.has(t))throw new Error(`Cannot add-status the built-in status "${t}". Built-in statuses are reserved: ${[...Q].join(", ")}.`);let o;if(e.roles!==void 0){o=[];let s=new Set;for(let a of e.roles){let c=typeof a=="string"?a.trim().toLowerCase():"";if(c.length!==0){if(!Hn.has(c))throw new Error(`Invalid status role "${a}". Allowed roles: ${Ie.join(", ")}.`);s.has(c)||(s.add(c),o.push(c))}}}let n=e.aliases===void 0?void 0:Kn(e.aliases).filter(s=>s!==t),r=e.description?.trim(),i=typeof e.order=="number"&&Number.isFinite(e.order)?Math.trunc(e.order):void 0;return{id:t,roles:o,aliases:n,description:r&&r.length>0?r:void 0,order:i}}function Bn(e){if(Array.isArray(e))return e;if(typeof e!="object"||e===null)return;let t=e;if(Array.isArray(t.statuses))return t.statuses;if(Array.isArray(t.definitions))return t.definitions}function Yn(e){let t=Bn(e);if(!t)return[];let o=[];for(let n of t){if(typeof n!="object"||n===null||Array.isArray(n))continue;let r=n;typeof r.id!="string"||r.id.trim().length===0||o.push(r)}return o}function ie(e){if(e==null||e.trim().length===0)return{statuses:[]};let t;try{t=JSON.parse(e)}catch{throw new Error("schema/statuses.json contains invalid JSON.")}return{statuses:Yn(t)}}function se(e){return`${JSON.stringify({statuses:e.statuses},null,2)}
13
- `}function qt(e,t,o){let n=e.statuses.slice(),r=n.findIndex(a=>T(a.id)===t.id),i=r>=0?n[r]:o,s={...i,id:t.id};return t.roles!==void 0&&(t.roles.length>0?s.roles=[...t.roles]:s.roles!==void 0&&delete s.roles),t.aliases!==void 0&&(t.aliases.length>0?s.aliases=[...t.aliases]:s.aliases!==void 0&&delete s.aliases),t.description!==void 0&&(s.description=t.description),t.order!==void 0&&(s.order=t.order),r>=0?n[r]=s:n.push(s),{file:{statuses:n},definition:s,replaced:i!==void 0}}function Jt(e,t){let o=T(t);if(o.length===0)throw new Error("Status id must not be empty.");if(Q.has(o))throw new Error(`Cannot remove built-in status "${o}". Built-in statuses are reserved: ${[...Q].join(", ")}.`);let n=e.statuses.slice(),r=n.findIndex(s=>T(s.id)===o);if(r<0)return{file:{statuses:n},removed:!1};let[i]=n.splice(r,1);return{file:{statuses:n},removed:!0,definition:i}}function je(e,t){let o=[e.id,...e.aliases??[]];for(let n of o){let r=T(n);if(r.length===0)continue;let i=t.get(r);if(i!==void 0&&i!==e.id)throw new Error(`Status token "${r}" already belongs to status "${i}". Choose a different id/alias to avoid shadowing it.`)}}(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]="c4b4af3b-6ce6-56f7-9665-9e6b2f3d9630")}catch{}})();function ae(e,t){if(typeof e!="string"||e.trim().length===0)throw new TypeError(`Schema migration ${t} must be non-empty`);return e.trim()}function Bt(e){let t=ae(e,"migrationId");if(!/^[a-zA-Z0-9._-]+$/.test(t))throw new TypeError("Schema migration migrationId must match [a-zA-Z0-9._-]+");return t}function Yt(e,t){let o=Ge(e),n=ae(t,"migrationScope");return`auto-${Kt("sha256").update(JSON.stringify({scope:n,request:o})).digest("hex").slice(0,20)}`}function Ge(e){let t=n=>ae(n,"source or target").toLowerCase().replaceAll(/[\s-]+/g,"_"),o=e.kind==="rename-type"?{kind:e.kind,from:ae(e.from,"source"),to:ae(e.to,"target")}:e.kind==="rename-field"?{kind:e.kind,from:t(e.from),to:t(e.to),...e.type===void 0?{}:{type:ae(e.type,"type")}}:{kind:e.kind,from:t(e.from),to:t(e.to)};if(o.from.toLowerCase()===o.to.toLowerCase())throw new TypeError("Schema migration source and target must differ");return o}function Zn(e){return e.kind==="rename-type"?"types":e.kind==="rename-field"?"fields":"statuses"}function Xn(e,t,o){let n=v(t.schema),r=Zn(o);return M(e,n.files[r],P[r])}function Zt(e,t){return le.join(e,"transactions","schema",`${t}-plan.json`)}function be(e){return e.length===0?null:JSON.parse(e)}async function ce(e){let t=await I(e);return{exists:t!==null,raw:t??""}}async function Xt(e,t){t.exists?await Y(e,t.raw):await ee.rm(e,{force:!0})}function Vn(e,t,o){let n=z(e),r=n.definitions.findIndex(s=>s.name.trim().toLowerCase()===t.from.toLowerCase()),i=n.definitions.findIndex(s=>s.name.trim().toLowerCase()===t.to.toLowerCase());if(o==="stage"){if(i>=0)return J(n);if(r<0)throw new TypeError(`Unknown custom type "${t.from}".`);n.definitions.push({...n.definitions[r],name:t.to})}else r>=0&&n.definitions.splice(r,1);return J(n)}function Qn(e,t,o){let n=oe(e),r=n.fields.findIndex(s=>s.key===t.from),i=n.fields.findIndex(s=>s.key===t.to);if(o==="stage"){if(i>=0)return re(n);if(r<0)throw new TypeError(`Unknown custom field "${t.from}".`);let s=n.fields[r];n.fields.push({...s,key:t.to,metadata_key:t.to,front_matter_key:t.to,cli_flag:t.to.replaceAll("_","-")})}else r>=0&&n.fields.splice(r,1);return re(n)}function eo(e,t,o){let n=ie(e),r=n.statuses.findIndex(s=>s.id===t.from),i=n.statuses.findIndex(s=>s.id===t.to);if(o==="stage"){if(i>=0)return se(n);if(r<0)throw new TypeError(`Unknown custom status "${t.from}".`);n.statuses.push({...n.statuses[r],id:t.to})}else r>=0&&n.statuses.splice(r,1);return se(n)}function to(e,t,o){return t.kind==="rename-type"?Vn(e,t,o):t.kind==="rename-field"?Qn(e,t,o):eo(e,t,o)}function W(e,t){return typeof e=="string"&&e.trim().toLowerCase()===t.from.toLowerCase()?t.to:e}function qe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:void 0}function de(e){return Array.isArray(e)?e.map(t=>qe(t)).filter(t=>t!==void 0):[]}function no(e,t){for(let o of de(e.fields))Array.isArray(o.required_types)&&(o.required_types=o.required_types.map(n=>W(n,t)));for(let o of de(e.type_workflows))o.type=W(o.type,t)}function oo(e,t){for(let n of de(e.definitions))n.default_status=W(n.default_status,t);let o=qe(e.workflow);if(o)for(let[n,r]of Object.entries(o))o[n]=W(r,t);for(let n of de(e.type_workflows))Array.isArray(n.allowed_transitions)&&(n.allowed_transitions=n.allowed_transitions.map(r=>Array.isArray(r)?r.map(i=>W(i,t)):r))}function ro(e,t){for(let o of de(e.definitions)){for(let n of["required_create_fields","required_create_repeatables"])Array.isArray(o[n])&&(o[n]=o[n].map(r=>W(r,t)));for(let n of["options","command_option_policies"])for(let r of de(o[n])){let i=n==="options"?"key":"option";r[i]=W(r[i],t)}}}function io(e,t){let o=qe(e.options);if(!o)return;if(t.kind==="rename-field"){if(!Object.prototype.hasOwnProperty.call(o,t.from))return;if(Object.prototype.hasOwnProperty.call(o,t.to))throw new TypeError(`Schema migration collision in saved template "${String(e.name??"unknown")}": target field "${t.to}" already exists.`);o[t.to]=o[t.from],delete o[t.from];return}let n=t.kind==="rename-type"?"type":"status";o[n]=W(o[n],t)}function ze(e,t){let o=JSON.parse(e);if(typeof o!="object"||o===null||Array.isArray(o))return e;let n=o;return t.kind==="rename-type"?no(n,t):t.kind==="rename-field"?ro(n,t):oo(n,t),io(n,t),`${JSON.stringify(n,null,2)}
14
- `}function Vt(e,t){if(t.kind==="rename-type"){let n=z(e).definitions;return{source:n.some(r=>r.name.trim().toLowerCase()===t.from.toLowerCase()),target:n.some(r=>r.name.trim().toLowerCase()===t.to.toLowerCase())}}if(t.kind==="rename-field"){let n=oe(e).fields;return{source:n.some(r=>r.key===t.from),target:n.some(r=>r.key===t.to)}}let o=ie(e).statuses;return{source:o.some(n=>n.id===t.from),target:o.some(n=>n.id===t.to)}}function so(e,t){let o=e;return t.kind==="rename-type"?e.type.toLowerCase()===t.to.toLowerCase()?[]:["type"]:t.kind==="remap-status"?e.status.toLowerCase()===t.to.toLowerCase()?[]:["status"]:Object.prototype.hasOwnProperty.call(o,t.to)&&!Object.prototype.hasOwnProperty.call(o,t.from)?[]:[t.from,t.to]}function ao(e,t){if(t.kind==="rename-type")return e.type.toLowerCase()===t.from.toLowerCase()?{id:e.id,changes:[{field:"type",before:e.type,after:t.to}]}:null;if(t.kind==="remap-status")return e.status.toLowerCase()===t.from.toLowerCase()?{id:e.id,changes:[{field:"status",before:e.status,after:t.to}]}:null;if(t.type!==void 0&&e.type.toLowerCase()!==t.type.toLowerCase())return null;let o=e;if(!Object.prototype.hasOwnProperty.call(o,t.from))return null;if(Object.prototype.hasOwnProperty.call(o,t.to))throw new TypeError(`Schema migration collision on item "${e.id}": target field "${t.to}" already exists.`);return{id:e.id,changes:[{field:t.from,before:o[t.from],after:void 0},{field:t.to,before:void 0,after:o[t.from]}]}}function Qt(e,t){let o=Ge(t.request),n=t.migrationId===void 0?Yt(o,t.migrationScope??"plan"):Bt(t.migrationId),r=e.map(c=>ao(c,o)).filter(c=>c!==null).sort((c,l)=>c.id.localeCompare(l.id)),i=Kt("sha256").update(JSON.stringify({migrationId:n,request:o,items:r})).digest("hex"),s=new Set([...t.completedItemIds??[]].map(c=>c.trim()).filter(c=>c.length>0)),a=r.filter(c=>!s.has(c.id));return Object.freeze({migration_id:n,request:o,fingerprint:i,affected_item_count:r.length,pending_item_count:a.length,skipped_completed_count:r.length-a.length,items:Object.freeze(a)})}async function co(e){let t=x(e.settings,R()),o=[...new Set(Object.values(t.type_to_folder))],n=await lt(e.pmRoot,o),r=e.request.kind==="rename-type"?{types:[e.request.from]}:e.request.kind==="remap-status"?{statuses:[e.request.from]}:{metadataKeys:[e.request.from],...e.request.type===void 0?{}:{types:[e.request.type]}},i=n?await ct({pmRoot:e.pmRoot,expectedSourceCursor:n.source_cursor,query:r}):null;return i?{items:i.items,selectionSource:"derived_index",typeToFolder:t.type_to_folder}:{items:await Z(e.pmRoot,e.settings.item_format,t.type_to_folder,[],e.settings.schema),selectionSource:"scan",typeToFolder:t.type_to_folder}}async function lo(e,t){let o=await I(Zt(e,t));if(o===null)return null;try{let n=JSON.parse(o);if(n.schema_version!==1||n.plan.migration_id!==t||!Array.isArray(n.plan.items))throw new TypeError("invalid plan envelope");return n.plan}catch(n){throw new y(`Stored schema migration plan "${t}" is invalid: ${Xe(n)}`,h.GENERIC_FAILURE)}}async function fo(e,t){let o=Zt(e,t.migration_id);await ee.mkdir(le.dirname(o),{recursive:!0});let n={schema_version:1,plan:t,created_at:new Date().toISOString()};await Y(o,`${JSON.stringify(n,null,2)}
15
- `)}function uo(e,t){return JSON.stringify(e)===JSON.stringify(t)}async function po(e){let t=await dt(e.pmRoot,e.id,e.settings.id_prefix,e.settings.item_format,e.typeToFolder);if(!t)throw new y(`Schema migration item "${e.id}" no longer exists.`,h.NOT_FOUND);return(await ft(t,{schema:e.settings.schema})).document.metadata}function Ht(e,t,o){let n=o==="forward"?t.from:t.to,r=o==="forward"?t.to:t.from;if(t.kind==="rename-type"){if(e.metadata.type.toLowerCase()===r.toLowerCase())return[];if(e.metadata.type.toLowerCase()!==n.toLowerCase())throw new TypeError(`Schema migration expected type "${n}" on item "${e.metadata.id}".`);return e.metadata.type=r,["type"]}if(t.kind==="remap-status"){if(e.metadata.status.toLowerCase()===r.toLowerCase())return[];if(e.metadata.status.toLowerCase()!==n.toLowerCase())throw new TypeError(`Schema migration expected status "${n}" on item "${e.metadata.id}".`);return e.metadata.status=r,["status"]}let i=e.metadata;if(Object.prototype.hasOwnProperty.call(i,r)&&!Object.prototype.hasOwnProperty.call(i,n))return[];if(!Object.prototype.hasOwnProperty.call(i,n)||Object.prototype.hasOwnProperty.call(i,r))throw new TypeError(`Schema migration field state changed concurrently on item "${e.metadata.id}".`);return i[r]=i[n],delete i[n],[n,r]}function Wt(e){return{id:e.id,inspect:async()=>{let t=await ce(e.filePath),o=Vt(t.raw,e.request),n=e.phase==="stage"?o.source&&o.target:!o.source&&o.target;return{state:n?"applied":"pending",...n?{result:{phase:e.phase}}:{}}},prepareCompensation:async()=>{let t=await ce(e.filePath);return{exists:t.exists,raw:t.raw}},apply:async()=>{let t=await ce(e.filePath);return await Y(e.filePath,to(t.raw,e.request,e.phase)),{phase:e.phase}},compensate:async t=>{if(typeof t!="object"||t===null||Array.isArray(t)||typeof t.exists!="boolean"||typeof t.raw!="string")throw new TypeError(`Missing schema snapshot for ${e.id} compensation.`);await Xt(e.filePath,{exists:t.exists,raw:t.raw})}}}function mo(e){return{id:e.stepId,inspect:async()=>{let t=await ce(e.filePath);return{state:ze(t.raw,e.request)===t.raw?"applied":"pending"}},prepareCompensation:async()=>{let t=await ce(e.filePath);return{exists:t.exists,raw:t.raw}},apply:async()=>{let t=await ce(e.filePath);return await Y(e.filePath,ze(t.raw,e.request)),{file:e.filePath}},compensate:async t=>{if(typeof t!="object"||t===null||Array.isArray(t)||typeof t.exists!="boolean"||typeof t.raw!="string")throw new TypeError(`Missing schema reference snapshot for ${e.stepId} compensation.`);await Xt(e.filePath,{exists:t.exists,raw:t.raw})}}}function ho(e){return{id:`item-${e.id}`,inspect:async()=>{let t=await b(e.pmRoot),o=x(t,R()).type_to_folder,n=await po({pmRoot:e.pmRoot,settings:t,typeToFolder:o,id:e.id}),r=so(n,e.request).length===0;return{state:r?"applied":"pending",...r?{result:{item_id:e.id}}:{}}},apply:async()=>{let t=await b(e.pmRoot),o=x(t,R()).type_to_folder,n=await ve({pmRoot:e.pmRoot,settings:t,typeToFolder:o,id:e.id,op:`schema_${e.request.kind.replaceAll("-","_")}`,author:e.author,message:`Schema migration ${e.request.kind}: ${e.request.from} -> ${e.request.to}`,force:e.force,skipNoop:!0,mutate(r){return{changedFields:Ht(r,e.request,"forward")}}});return{item_id:e.id,changed_fields:n.changedFields}},compensate:async()=>{let t=await b(e.pmRoot),o=x(t,R()).type_to_folder;await ve({pmRoot:e.pmRoot,settings:t,typeToFolder:o,id:e.id,op:`schema_${e.request.kind.replaceAll("-","_")}_compensate`,author:e.author,message:`Compensate schema migration ${e.request.kind}: ${e.request.to} -> ${e.request.from}`,force:!0,skipNoop:!0,mutate(n){return{changedFields:Ht(n,e.request,"reverse")}}})}}}async function yo(e){let t=await lo(e.pmRoot,e.migrationId);if(t){if(!uo(t.request,e.request))throw new y(`Schema migration id "${e.migrationId}" already belongs to a different request.`,h.CONFLICT);return{plan:t,stored:!0}}let o=await co({pmRoot:e.pmRoot,settings:e.settings,request:e.request});return{plan:{...Qt(o.items,{migrationId:e.migrationId,request:e.request}),selection_source:o.selectionSource},stored:!1}}async function go(e){let t=Vt(await I(e.schemaPath)??"",e.request);if(!t.source)throw new y(`Schema migration source "${e.request.from}" is not a custom definition.`,h.NOT_FOUND);if(t.target)throw new y(`Schema migration target "${e.request.to}" already exists.`,h.CONFLICT);await fo(e.pmRoot,e.plan)}async function wo(e){let t=v(e.settings.schema),o=[...new Set([["types",P.types],["fields",P.fields],["workflows",P.workflows]].map(([r,i])=>M(e.pmRoot,t.files[r],i)).filter(r=>r!==e.schemaPath))];try{let r=le.join(e.pmRoot,"templates"),i=await ee.readdir(r,{withFileTypes:!0});o.push(...i.filter(s=>s.isFile()&&s.name.toLowerCase().endsWith(".json")).map(s=>le.join(r,s.name)))}catch(r){if(typeof r!="object"||r===null||!("code"in r)||r.code!=="ENOENT")throw r}o.sort((r,i)=>r.localeCompare(i));let n=[];for(let r of o){let i=await I(r);i!==null&&ze(i,e.request)!==i&&n.push({filePath:r,beforeRaw:i})}return{paths:o,snapshots:n}}async function _o(e){for(let t of e.snapshots){let o=await ee.readFile(t.filePath,"utf8"),n=le.relative(e.pmRoot,t.filePath).replaceAll("\\","/");await Re({pmRoot:e.pmRoot,author:e.author,documentPath:n,before:be(t.beforeRaw),after:be(o),op:"schema_migration_reference",idempotencyKey:`${e.plan.migration_id}:${e.plan.fingerprint}:${n}`,message:`${e.request.kind}: ${e.request.from} -> ${e.request.to}`,lockTtlSeconds:e.settings.locks.ttl_seconds,lockWaitMs:e.settings.locks.wait_ms})}}async function So(e,t,o){let n=Ge(e),r=A(process.cwd(),o.path);if(!await j(ne(r)))throw new y(`Tracker is not initialized at ${r}. Run pm init first.`,h.NOT_FOUND);let i=t.migrationId===void 0?Yt(n,await ee.realpath(r)):Bt(t.migrationId),s=await b(r),a=C(t.author,s.author_default),c=await yo({pmRoot:r,settings:s,migrationId:i,request:n}),l=c.plan;if(t.dryRun===!0)return{...l,action:n.kind,applied:!1,recovered:!1,migrated_item_count:0};let f=Xn(r,s,n),d=await ee.readFile(f,"utf8");c.stored||await go({pmRoot:r,schemaPath:f,request:n,plan:l});let g=await wo({pmRoot:r,schemaPath:f,settings:s,request:n}),m=[Wt({id:"stage-schema",filePath:f,request:n,phase:"stage"}),...g.paths.map((E,_)=>mo({filePath:E,request:n,stepId:`reference-${String(_+1).padStart(4,"0")}`})),...l.items.map(E=>ho({pmRoot:r,id:E.id,request:n,author:a,force:t.force===!0})),Wt({id:"retire-source",filePath:f,request:n,phase:"retire"})],u=await kt({pmRoot:r,transactionId:`schema-${i}`,author:a,steps:m,lockTtlSeconds:Math.max(s.locks.ttl_seconds,300),lockWaitMs:s.locks.wait_ms}),p=await ee.readFile(f,"utf8"),{historyPath:w}=await Re({pmRoot:r,author:a,documentPath:le.relative(r,f).replaceAll("\\","/"),before:be(d),after:be(p),op:"schema_migration",idempotencyKey:`${l.migration_id}:${l.fingerprint}`,message:`${n.kind}: ${n.from} -> ${n.to}; affected=${l.affected_item_count}`,lockTtlSeconds:s.locks.ttl_seconds,lockWaitMs:s.locks.wait_ms});return await _o({pmRoot:r,author:a,settings:s,request:n,plan:l,snapshots:g.snapshots}),{...l,action:n.kind,applied:!0,recovered:u.recovered,migrated_item_count:l.affected_item_count,workspace_history_path:w}}function ko(e){let t=e.applied?"applied":"dry-run",o=e.recovered?" (recovered)":"";return[`${e.action}: ${e.request.from} -> ${e.request.to} [${t}${o}]`,`migration_id: ${e.migration_id}`,`affected: ${e.affected_item_count}`,`pending: ${e.pending_item_count}`,`fingerprint: ${e.fingerprint}`].join(`
16
- `)}import Io from"node:path";import{mkdir as Ao}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]="e3f016bb-8add-5765-bb1a-a7b22423f8d1")}catch{}})();var Je=["agile","ops","research"],bo={agile:[{name:"Story",description:"User-facing outcome or capability slice expressed from a stakeholder perspective.",defaultStatus:"open",folder:"stories",aliases:["user-story"]},{name:"Spike",description:"Time-boxed investigation used to reduce uncertainty before implementation.",defaultStatus:"open",folder:"spikes",aliases:["research-spike"]}],ops:[{name:"Incident",description:"Operational disruption, degradation, or support escalation with recovery tracking.",defaultStatus:"open",folder:"incidents",aliases:["outage"]},{name:"Runbook",description:"Repeatable operational procedure, diagnostic path, or response playbook.",defaultStatus:"open",folder:"runbooks",aliases:["playbook"]}],research:[{name:"Experiment",description:"Validated-learning activity with hypothesis, method, and outcome tracking.",defaultStatus:"open",folder:"experiments",aliases:["study"]},{name:"Hypothesis",description:"Testable claim or assumption that should be supported, rejected, or refined.",defaultStatus:"open",folder:"hypotheses",aliases:["assumption"]}]};function en(e){if(e===void 0)return;let t=e.trim().toLowerCase().replaceAll("-","_");if(t.length===0)throw new Error("Type preset name must not be empty.");if(t==="agile"||t==="ops"||t==="research")return t;throw new Error(`Invalid type preset "${e}". Allowed: ${Je.join(", ")}.`)}function He(e){return bo[e].map(t=>me(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]="3d53ef97-6dd5-5dea-a5c2-9bc9e62d881c")}catch{}})();var Eo=/^([A-Za-z][A-Za-z0-9_-]*?)\s*[-:]\s+\S/;function To(e){let t=Eo.exec(e.trim());if(!t)return;let o=t[1];if(!(o.length<2)&&!/^[A-Za-z]\d+$/.test(o))return o.toLowerCase()}function $o(e){return e.split(/[-_]+/).filter(t=>t.length>0).map(t=>`${t.slice(0,1).toUpperCase()}${t.slice(1).toLowerCase()}`).join("")}function tn(e,t={}){let o=typeof t.minCount=="number"&&t.minCount>0?Math.trunc(t.minCount):10,n=typeof t.maxExamples=="number"&&t.maxExamples>0?Math.trunc(t.maxExamples):3,r=new Map;for(let s of e){let a=typeof s=="string"?s.trim():"";if(a.length===0)continue;let c=To(a);if(c===void 0)continue;let l=r.get(c)??{count:0,examples:[]};l.count+=1,l.examples.length<n&&l.examples.push(a),r.set(c,l)}let i=[];for(let[s,a]of r.entries()){if(a.count<o)continue;let c=$o(s);i.push({name:c,prefix:s,count:a.count,examples:a.examples,shadows_builtin:rt(c)!==void 0})}return i.sort((s,a)=>a.count-s.count||s.name.localeCompare(a.name)),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]="1a035e10-b8fe-52cd-a9c7-0762dd0ab160")}catch{}})();var gi=["add-type","remove-type","add-status","remove-status","add-field","remove-field","list-fields","show-field","apply-preset","list","show","show-status","rename-type","rename-field","remap-status"],Ee="schema-types",nn="schema-statuses",on="schema-fields";function K(e){return ot({pmRoot:e.pmRoot,filePath:e.filePath,raw:e.raw,op:e.op,author:e.author,lockTtlSeconds:e.settings.locks.ttl_seconds,lockWaitMs:e.settings.locks.wait_ms})}async function wi(e,t,o){let n=A(process.cwd(),o.path);await q(n);let r;try{r=me({name:e,description:t.description,defaultStatus:t.defaultStatus,folder:t.folder,aliases:t.alias})}catch(m){throw new y(m instanceof Error?m.message:String(m),h.USAGE)}let i=await b(n),s=v(i.schema),a=M(n,s.files.types,P.types),c=[],l=C(t.author,i.author_default),f=N(i),d=await F(n,Ee,i.locks.ttl_seconds,l,!!t.force,f.force_required_for_stale_lock,i.locks.wait_ms),g;try{let m=await I(a),u;try{u=z(m)}catch(p){throw new y(p instanceof Error?p.message:String(p),h.GENERIC_FAILURE)}try{it(r,u);let p=new Map,w=x(i,R());for(let[E,_]of Object.entries(w.type_to_folder)){let $=_.trim().toLowerCase();$.length>0&&!p.has($)&&p.set($,E)}st(r,u,p)}catch(p){throw new y(p instanceof Error?p.message:String(p),h.USAGE)}g=_e(u,r),g.replaced&&g.previousName!==void 0&&g.previousName!==g.definition.name&&c.push(`type_recased:${g.previousName}->${g.definition.name}`),await K({pmRoot:n,filePath:a,raw:J(g.file),op:"schema:add-type",author:l,settings:i}),await Ke(n,[g.definition],c,"schema:add-type-folder"),c.push(...await D({path:a,scope:"project",op:"schema:add-type"}))}finally{await d()}return await rn(n,c),{action:"add-type",registered:!0,replaced:g.replaced,type:g.definition,file:{path:a,definitions:g.file.definitions.length},warnings:B(c),generated_at:k()}}async function q(e){if(!await j(ne(e)))throw new y(`Tracker is not initialized at ${e}. Run pm init first.`,h.NOT_FOUND)}async function rn(e,t){try{let o=await Pt(e);o.status==="refreshed"?t.push("merge_fence_refreshed"):o.status==="not_installed"&&t.push('merge_fence_not_installed:type folders lack git merge drivers; run "pm merge install"')}catch{t.push('merge_fence_refresh_failed:run "pm merge install" to reconcile')}}function B(e){return[...new Set(e)].sort((t,o)=>t.localeCompare(o))}async function xo(e,t,o,n){let r=x(t,R()),i=n.trim().toLowerCase();return(await Z(e,t.item_format,r.type_to_folder,[],o)).filter(a=>typeof a.type=="string"&&a.type.toLowerCase()===i).length}async function Ro(e,t,o,n){let r=x(t,R()),i=ue(o),s=T(n);return(await Z(e,t.item_format,r.type_to_folder,[],o)).filter(c=>{let l=typeof c.status=="string"?c.status:"";return(i.alias_to_id.get(T(l))??T(l))===s}).length}async function vo(e,t,o,n,r){if(r.length===0||Q.has(r))return;let i=await Ro(t,o,n,r);i>0&&e.push(`items_using_status:${i}`);let s=sn(n.workflow,r);s.length>0&&e.push(`status_referenced_by_workflow:${s.join(",")}`)}function sn(e,t){return[["draft_status",e.draft_status],["open_status",e.open_status],["in_progress_status",e.in_progress_status],["blocked_status",e.blocked_status],["close_status",e.close_status],["canceled_status",e.canceled_status]].filter(([,n])=>n!==void 0&&T(n)===t).map(([n])=>n)}async function _i(e,t,o){let n=A(process.cwd(),o.path);await q(n);let r=await b(n),i=v(r.schema),s=M(n,i.files.types,P.types),a=[],c=C(t.author,r.author_default),l=N(r),f=await F(n,Ee,r.locks.ttl_seconds,c,!!t.force,l.force_required_for_stale_lock,r.locks.wait_ms),d;try{let g=await I(s),m;try{m=z(g)}catch(u){throw new y(u instanceof Error?u.message:String(u),h.GENERIC_FAILURE)}try{d=at(m,e)}catch(u){throw new y(u instanceof Error?u.message:String(u),h.USAGE)}if(d.removed){let u=(d.definition?.name??e??"").trim();if(u.length>0){let p=await xo(n,r,i,u);p>0&&a.push(`items_using_type:${p}`)}await K({pmRoot:n,filePath:s,raw:J(d.file),op:"schema:remove-type",author:c,settings:r}),a.push(...await D({path:s,scope:"project",op:"schema:remove-type"}))}}finally{await f()}return d.removed&&await rn(n,a),{action:"remove-type",removed:d.removed,...d.definition?{type:d.definition}:{},file:{path:s,definitions:d.file.definitions.length},warnings:B(a),generated_at:k()}}function We(e,t){return M(e,t.files.statuses,P.statuses)}function Te(e,t){return M(e,t.files.fields,P.fields)}function an(e,t){return M(e,t.files.types,P.types)}async function Ke(e,t,o,n){for(let r of t){let i=tt(r.folder??et(r.name)),s=Io.join(e,i);await j(s)||(await Ao(s,{recursive:!0}),o.push(...await D({path:s,scope:"project",op:n})))}}function Be(e){return{key:e.key,type:e.type,commands:[...e.commands],cli_flag:`--${e.cli_flag}`,cli_aliases:e.cli_aliases.map(t=>`--${t}`),...e.description?{description:e.description}:{},required:e.required,required_on_create:e.required_on_create,allow_unset:e.allow_unset,required_types:[...e.required_types]}}function Co(e){if(e)return{id:e.id,...e.roles.length>0?{roles:[...e.roles]}:{},...e.aliases.length>0?{aliases:[...e.aliases]}:{},...e.description?{description:e.description}:{},...typeof e.order=="number"?{order:e.order}:{}}}function Fo(e){let t=new Map;for(let o of e){let n=T(o.id);if(n.length!==0){t.set(n,n);for(let r of Array.isArray(o.aliases)?o.aliases:[]){let i=T(r);i.length>0&&!t.has(i)&&t.set(i,n)}}}return t}async function Si(e,t,o){let n=A(process.cwd(),o.path);await q(n);let r;try{r=Gt({id:e,roles:t.role,aliases:t.alias,description:t.description,order:t.order})}catch(p){throw new y(p instanceof Error?p.message:String(p),h.USAGE)}let i=await b(n),s=v(i.schema),a=We(n,s),c=ue(s);try{je(r,c.alias_to_id)}catch(p){throw new y(p instanceof Error?p.message:String(p),h.USAGE)}let l=Co(c.by_id.get(r.id)),f=[],d=C(t.author,i.author_default),g=N(i),m=await F(n,nn,i.locks.ttl_seconds,d,!!t.force,g.force_required_for_stale_lock,i.locks.wait_ms),u;try{let p=await I(a),w;try{w=ie(p)}catch(_){throw new y(_ instanceof Error?_.message:String(_),h.GENERIC_FAILURE)}let E=Fo(w.statuses);try{je(r,E)}catch(_){throw new y(_ instanceof Error?_.message:String(_),h.USAGE)}u=qt(w,r,l),await K({pmRoot:n,filePath:a,raw:se(u.file),op:"schema:add-status",author:d,settings:i}),f.push(...await D({path:a,scope:"project",op:"schema:add-status"}))}finally{await m()}return{action:"add-status",registered:!0,replaced:u.replaced,status:u.definition,file:{path:a,statuses:u.file.statuses.length},warnings:B(f),generated_at:k()}}async function ki(e,t,o){let n=A(process.cwd(),o.path);await q(n);let r=await b(n),i=v(r.schema),s=We(n,i),a=[],c=C(t.author,r.author_default),l=N(r),f=await F(n,nn,r.locks.ttl_seconds,c,!!t.force,l.force_required_for_stale_lock,r.locks.wait_ms),d;try{let g=await I(s),m;try{m=ie(g)}catch(u){throw new y(u instanceof Error?u.message:String(u),h.GENERIC_FAILURE)}try{d=Jt(m,e)}catch(u){throw new y(u instanceof Error?u.message:String(u),h.USAGE)}if(d.removed){let u=T(d.definition?.id??e);await vo(a,n,r,i,u),await K({pmRoot:n,filePath:s,raw:se(d.file),op:"schema:remove-status",author:c,settings:r}),a.push(...await D({path:s,scope:"project",op:"schema:remove-status"}))}}finally{await f()}return{action:"remove-status",removed:d.removed,...d.definition?{status:d.definition}:{},file:{path:s,statuses:d.file.statuses.length},warnings:B(a),generated_at:k()}}function cn(e){return{name:e.name,folder:e.folder,aliases:Array.isArray(e.aliases)?[...e.aliases]:[],...e.default_status?{default_status:e.default_status}:{},...e.description?{description:e.description}:{}}}function Po(e,t,o){return{...cn(e),source:t,...o?{extension:o}:{},required_create_fields:[...e.required_create_fields],required_create_repeatables:[...e.required_create_repeatables],options:structuredClone(e.options),command_option_policies:structuredClone(e.command_option_policies)}}function ln(e){return{id:e.id,source:Q.has(e.id)?"builtin":"custom",roles:Array.isArray(e.roles)?[...e.roles]:[],aliases:Array.isArray(e.aliases)?[...e.aliases]:[],...e.description?{description:e.description}:{},...typeof e.order=="number"?{order:e.order}:{}}}function dn(e,t,o){let n=e.toLowerCase();return o.has(n)?"extension":t.has(n)?"custom":"builtin"}function Oo(){let e=new Map,t=R();for(let o of t?.item_types??[]){let n=o.types;if(Array.isArray(n))for(let r of n){if(typeof r!="object"||r===null||Array.isArray(r))continue;let i=r.name;typeof i=="string"&&i.trim().length>0&&e.set(i.trim().toLowerCase(),{layer:o.layer,name:o.name})}}return e}function No(e){let t=ue(e),o=[],n=[];for(let r of t.definitions){let i=ln(r);i.source==="builtin"?o.push(i):n.push(i)}return{builtin:o,custom:n}}async function ge(e){let t=A(process.cwd(),e.path);await q(t);let o=await b(t),n=v(o.schema),r=M(t,n.files.types,P.types),i=We(t,n),s=x(o,R()),a=Oo(),c=new Set((o.item_types?.definitions??[]).map(l=>l.name.trim().toLowerCase()).filter(l=>l.length>0&&!a.has(l)));return{pmRoot:t,typesPath:r,statusesPath:i,byType:s.by_type,customNames:c,extensionProvenance:a,schema:n}}async function bi(e){let t=await ge(e),o=[],n=[],r=[];for(let a of Object.values(t.byType).sort((c,l)=>c.name.localeCompare(l.name))){let c=dn(a.name,t.customNames,new Set(t.extensionProvenance.keys())),l=cn(a);c==="extension"?r.push(l):c==="custom"?n.push(l):o.push(l)}let i=No(t.schema),s=we(t.schema).definitions.map(Be);return{action:"list",builtin:o,custom:n,extension:r,counts:{builtin:o.length,custom:n.length,extension:r.length,total:o.length+n.length+r.length},statuses:{builtin:i.builtin,custom:i.custom,counts:{builtin:i.builtin.length,custom:i.custom.length,total:i.builtin.length+i.custom.length}},fields:{custom:s,counts:{total:s.length}},file:{path:t.typesPath},generated_at:k()}}async function Ei(e,t){let o=(e??"").trim();if(o.length===0)throw new y("Type name must not be empty.",h.USAGE);let n=await ge(t),r=Object.values(n.byType).find(i=>i.name.toLowerCase()===o.toLowerCase()||i.aliases.some(s=>s.toLowerCase()===o.toLowerCase()));if(!r)throw new y(`Unknown item type "${o}". Run pm schema list to inspect registered types, or pm schema add-type "${pe(o)}" to register it.`,h.NOT_FOUND,{code:"unknown_item_type"});return{action:"show",type:Po(r,dn(r.name,n.customNames,new Set(n.extensionProvenance.keys())),n.extensionProvenance.get(r.name.toLowerCase())),file:{path:n.typesPath},generated_at:k()}}async function Ti(e,t){let o=T(e);if(o.length===0)throw new y("Status id must not be empty.",h.USAGE);let n=await ge(t),r=ue(n.schema),i=r.alias_to_id.get(o)??o,s=r.by_id.get(i);if(!s)throw new y(`Unknown status "${e}". Run pm schema list to inspect registered statuses, or pm schema add-status "${pe(e??"")}" to register it.`,h.NOT_FOUND,{code:"unknown_status"});return{action:"show-status",status:ln(s),file:{path:n.statusesPath},generated_at:k()}}async function $i(e,t,o){let n=A(process.cwd(),o.path);await q(n);let r;try{r=Ut({key:e,type:t.type,commands:t.commands,description:t.description,cliFlag:t.cliFlag,aliases:t.alias,required:t.required,requiredOnCreate:t.requiredOnCreate,allowUnset:t.allowUnset,requiredTypes:t.requiredTypes})}catch(u){throw new y(u instanceof Error?u.message:String(u),h.USAGE)}let i=await b(n),s=v(i.schema),a=Te(n,s),c=[],l=ut(r.key);l&&c.push(`custom_field_mcp_input_collision:${l.field}:${l.property}:${l.owner}:use=${l.nested_path}`);let f=C(t.author,i.author_default),d=N(i),g=await F(n,on,i.locks.ttl_seconds,f,!!t.force,d.force_required_for_stale_lock,i.locks.wait_ms),m;try{let u=await I(a),p;try{p=oe(u)}catch(w){throw new y(w instanceof Error?w.message:String(w),h.GENERIC_FAILURE)}m=jt(p,r),await K({pmRoot:n,filePath:a,raw:re(m.file),op:"schema:add-field",author:f,settings:i}),c.push(...await D({path:a,scope:"project",op:"schema:add-field"}))}finally{await g()}return{action:"add-field",registered:!0,replaced:m.replaced,field:m.definition,file:{path:a,fields:m.file.fields.length},warnings:B(c),generated_at:k()}}async function Lo(e,t,o,n){let r=x(t,R());return(await Z(e,t.item_format,r.type_to_folder,[],o)).filter(s=>{let a=s[n];return a==null?!1:Array.isArray(a)?a.length>0:typeof a=="string"?a.trim().length>0:!0}).length}async function Ii(e,t,o){let n=A(process.cwd(),o.path);await q(n);let r=await b(n),i=v(r.schema),s=Te(n,i),a=[],c=C(t.author,r.author_default),l=N(r),f=await F(n,on,r.locks.ttl_seconds,c,!!t.force,l.force_required_for_stale_lock,r.locks.wait_ms),d;try{let g=await I(s),m;try{m=oe(g)}catch(u){throw new y(u instanceof Error?u.message:String(u),h.GENERIC_FAILURE)}try{d=zt(m,e)}catch(u){throw new y(u instanceof Error?u.message:String(u),h.USAGE)}if(d.removed){let u=L(d.definition?.key??e),p=L(d.definition?.metadata_key??d.definition?.front_matter_key??u);if(p.length>0){let w=await Lo(n,r,i,p);w>0&&a.push(`items_using_field:${w}`)}await K({pmRoot:n,filePath:s,raw:re(d.file),op:"schema:remove-field",author:c,settings:r}),a.push(...await D({path:s,scope:"project",op:"schema:remove-field"}))}}finally{await f()}return{action:"remove-field",removed:d.removed,...d.definition?{field:d.definition}:{},file:{path:s,fields:d.file.fields.length},warnings:B(a),generated_at:k()}}async function Ai(e){let t=await ge(e),o=we(t.schema).definitions.map(Be);return{action:"list-fields",fields:o,counts:{total:o.length},file:{path:Te(t.pmRoot,t.schema)},generated_at:k()}}async function xi(e,t){let o=L(e);if(o.length===0)throw new y("Field key must not be empty.",h.USAGE);let n=await ge(t),r=we(n.schema).by_key.get(o);if(!r)throw new y(`Unknown custom field "${e}". Run pm schema list-fields to inspect registered fields, or pm schema add-field "${pe(e??"")}" to register it.`,h.NOT_FOUND,{code:"unknown_field"});return{action:"show-field",field:Be(r),file:{path:Te(n.pmRoot,n.schema)},generated_at:k()}}async function Ri(e,t,o){let n=A(process.cwd(),o.path);await q(n);let r;try{let p=en(e);if(p===void 0)throw new Error(`Type preset name is required. Allowed: ${Je.join(", ")}.`);r=p}catch(p){throw new y(p instanceof Error?p.message:String(p),h.USAGE)}let i=await b(n),s=v(i.schema),a=an(n,s),c=[],l=C(t.author,i.author_default),f=N(i),d=[],g=[],m,u=await F(n,Ee,i.locks.ttl_seconds,l,!!t.force,f.force_required_for_stale_lock,i.locks.wait_ms);try{let p=await I(a),w;try{w=z(p)}catch(_){throw new y(_ instanceof Error?_.message:String(_),h.GENERIC_FAILURE)}let E=w;for(let _ of He(r)){let $=_e(E,_);E=$.file,($.replaced?g:d).push($.definition.name)}m=E.definitions.length,await K({pmRoot:n,filePath:a,raw:J(E),op:"schema:apply-preset",author:l,settings:i}),await Ke(n,He(r),c,"schema:apply-preset-folder"),c.push(...await D({path:a,scope:"project",op:"schema:apply-preset"}))}finally{await u()}return{action:"apply-preset",preset:r,registered:d,replaced:g,file:{path:a,definitions:m},warnings:B(c),generated_at:k()}}function Do(e){if(e===void 0)return 10;if(!Number.isInteger(e)||e<1)throw new y("--min-count must be a positive integer (>= 1).",h.USAGE);return e}async function vi(e,t){let o=A(process.cwd(),t.path);await q(o);let n=await b(o),r=v(n.schema),i=an(o,r),s=Do(e.minCount),a=x(n,R()),l=(await Z(o,n.item_format,a.type_to_folder,[],r)).map($=>typeof $.title=="string"?$.title:""),f=tn(l,{minCount:s}),d=[],g=[],m=[],u=[],p;if(!e.apply){let $;try{$=z(await I(i))}catch(te){throw new y(te instanceof Error?te.message:String(te),h.GENERIC_FAILURE)}return p=$.definitions.length,{action:"infer-types",applied:!1,min_count:s,candidates:f,registered:g,replaced:m,skipped:u,file:{path:i,definitions:p},warnings:d,generated_at:k()}}let w=C(e.author,n.author_default),E=N(n),_=await F(o,Ee,n.locks.ttl_seconds,w,!!e.force,E.force_required_for_stale_lock,n.locks.wait_ms);try{let $=await I(i),te;try{te=z($)}catch(O){throw new y(O instanceof Error?O.message:String(O),h.GENERIC_FAILURE)}let fe=te;for(let O of f){if(O.shadows_builtin){u.push({name:O.name,reason:"shadows_builtin"});continue}let Ye;try{Ye=me({name:O.name})}catch{u.push({name:O.name,reason:"invalid_type_token"});continue}let $e=_e(fe,Ye);fe=$e.file,($e.replaced?m:g).push($e.definition.name)}p=fe.definitions.length,await K({pmRoot:o,filePath:i,raw:J(fe),op:"schema:infer-types",author:w,settings:n}),await Ke(o,fe.definitions.filter(O=>g.includes(O.name)||m.includes(O.name)),d,"schema:infer-types-folder"),d.push(...await D({path:i,scope:"project",op:"schema:infer-types"}))}finally{await _()}return{action:"infer-types",applied:!0,min_count:s,candidates:f,registered:g,replaced:m,skipped:u,file:{path:i,definitions:p},warnings:B(d),generated_at:k()}}function Ci(e){let t=e.replaced?"Updated":"Registered",o=e.type.aliases&&e.type.aliases.length>0?` (aliases: ${e.type.aliases.join(", ")})`:"";return`${t} custom item type "${e.type.name}"${o} in ${e.file.path}. Run: pm create "${pe(e.type.name)}" "<title>"`}function Fi(e){return e.removed?`Removed custom item type "${e.type?.name??"(unknown)"}" from ${e.file.path}.`:`No custom item type matched; nothing removed from ${e.file.path}.`}function Pi(e){let t=e.replaced?"Updated":"Registered",o=e.status.roles&&e.status.roles.length>0?` (roles: ${e.status.roles.join(", ")})`:"",n=e.status.aliases&&e.status.aliases.length>0?` (aliases: ${e.status.aliases.join(", ")})`:"";return`${t} status "${e.status.id}"${o}${n} in ${e.file.path}.`}function Oi(e){return e.removed?`Removed custom status "${e.status?.id??"(unknown)"}" from ${e.file.path}.`:`No custom status matched; nothing removed from ${e.file.path}.`}function Ni(e){let t=[`Schema types: ${e.counts.total} total (${e.counts.builtin} builtin, ${e.counts.custom} custom, ${e.counts.extension} extension)`];for(let[o,n]of[["builtin",e.builtin],["custom",e.custom],["extension",e.extension]])n.length!==0&&t.push(`${o}: ${n.map(r=>r.name).join(", ")}`);t.push(`statuses: ${e.statuses.counts.total} total (${e.statuses.counts.builtin} builtin, ${e.statuses.counts.custom} custom)`);for(let[o,n]of[["builtin statuses",e.statuses.builtin],["custom statuses",e.statuses.custom]])n.length!==0&&t.push(`${o}: ${n.map(r=>r.id).join(", ")}`);return t.push(`custom fields: ${e.fields.counts.total} total`),e.fields.custom.length>0&&t.push(`fields: ${e.fields.custom.map(o=>`${o.key} (${o.type}, ${o.cli_flag})`).join(", ")}`),t.push("Inspect one: pm schema show <Type>"),t.push("Inspect one status: pm schema show-status <status>"),t.push("Inspect one field: pm schema show-field <key>"),t.join(`
17
- `)}function Li(e){let t=[`type: ${e.type.name}`,`source: ${e.type.source}`,`folder: ${e.type.folder}`];return e.type.default_status&&t.push(`default_status: ${e.type.default_status}`),e.type.aliases.length>0&&t.push(`aliases: ${e.type.aliases.join(", ")}`),e.type.description&&t.push(`description: ${e.type.description}`),e.type.options.length>0&&t.push(`options: ${e.type.options.map(o=>o.key).join(", ")}`),t.join(`
18
- `)}function Di(e){let t=[`status: ${e.status.id}`,`source: ${e.status.source}`];return e.status.roles.length>0&&t.push(`roles: ${e.status.roles.join(", ")}`),e.status.aliases.length>0&&t.push(`aliases: ${e.status.aliases.join(", ")}`),e.status.description&&t.push(`description: ${e.status.description}`),typeof e.status.order=="number"&&t.push(`order: ${e.status.order}`),t.join(`
19
- `)}function Mo(e){let t=[];e.required&&t.push("required"),e.required_on_create&&t.push("required_on_create"),e.allow_unset||t.push("no_unset");let o=t.length>0?` [${t.join(", ")}]`:"";return`${e.key} (${e.type}) ${e.cli_flag} commands=${e.commands.join("/")}${o}`}function Mi(e){return`${e.replaced?"Updated":"Registered"} custom field "${e.field.key}" in ${e.file.path}. Use it: pm create "<title>" --${(e.field.cli_flag??e.field.key).replaceAll("_","-")} <value>`}function Ui(e){return e.removed?`Removed custom field "${e.field?.key??"(unknown)"}" from ${e.file.path}.`:`No custom field matched; nothing removed from ${e.file.path}.`}function ji(e){let t=[`Custom fields: ${e.counts.total} total`];for(let o of e.fields)t.push(` ${Mo(o)}`);return t.push("Inspect one: pm schema show-field <key>"),t.join(`
20
- `)}function zi(e){let t=e.field,o=[`field: ${t.key}`,`type: ${t.type}`,`cli_flag: ${t.cli_flag}`,`commands: ${t.commands.join(", ")}`];return t.cli_aliases.length>0&&o.push(`cli_aliases: ${t.cli_aliases.join(", ")}`),t.description&&o.push(`description: ${t.description}`),t.required&&o.push("required: true"),t.required_on_create&&o.push("required_on_create: true"),t.allow_unset||o.push("allow_unset: false"),t.required_types.length>0&&o.push(`required_types: ${t.required_types.join(", ")}`),o.join(`
21
- `)}function Gi(e){let t=e.registered.length>0?`registered: ${e.registered.join(", ")}`:"",o=e.replaced.length>0?`updated: ${e.replaced.join(", ")}`:"",n=[t,o].filter(r=>r.length>0).join("; ");return`Applied "${e.preset}" type preset to ${e.file.path}${n.length>0?` (${n})`:""}.`}function qi(e){if(e.candidates.length===0)return`No title-prefix conventions found with at least ${e.min_count} items. Lower the threshold with --min-count <n>.`;let t=e.applied?[`Inferred and registered custom types from title prefixes (min-count ${e.min_count}):`]:[`Inferred custom type candidates from title prefixes (min-count ${e.min_count}, dry-run):`];for(let o of e.candidates){let n=o.shadows_builtin?" [shadows built-in, skipped]":"";t.push(` ${o.name} <- "${o.prefix}" (${o.count} items)${n}`)}return e.applied?(e.registered.length>0&&t.push(`registered: ${e.registered.join(", ")}`),e.replaced.length>0&&t.push(`updated: ${e.replaced.join(", ")}`)):t.push("Re-run with --apply to register the non-shadowing candidates."),t.join(`
22
- `)}var Ji={workflowSlotsReferencing:sn};export{Ce as a,kt as b,Et as c,Oe as d,An as e,Rn as f,Yo as g,V as h,ye as i,On as j,Ue as k,Ft as l,ur as m,pr as n,Pt as o,mr as p,Ln as q,Gt as r,ie as s,se as t,qt as u,Ut as v,oe as w,re as x,jt as y,Je as z,bo as A,en as B,He as C,Yt as D,Qt as E,So as F,ko as G,gi as H,wi as I,_i as J,Ke as K,Si as L,ki as M,bi as N,Ei as O,Ti as P,$i as Q,Ii as R,Ai as S,xi as T,Ri as U,vi as V,Ci as W,Fi as X,Pi as Y,Oi as Z,Ni as _,Li as $,Di as aa,Mi as ba,Ui as ca,ji as da,zi as ea,Gi as fa,qi as ga,Ji as ha};
23
- //# sourceMappingURL=chunk-CALJHNBL.js.map
@@ -1,2 +0,0 @@
1
- import{a as N}from"./chunk-K44PYFXH.js";import{c as T}from"./chunk-2AXF3VSK.js";import{a as m}from"./chunk-FB7G2HY2.js";import{u as D}from"./chunk-NZ75GNSA.js";import{a as R,b as I,c as v,d as M}from"./chunk-NG6OXIBR.js";import{$f as x,A as u,C as f,Da as S,H as C,La as E,Nc as y,Nf as q,Oa as A,R as b,b as k,cd as g,lc as O,zd as P}from"./chunk-D4FPS43D.js";(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]="1be4d7c4-3ede-59cc-8d70-df966a66e67e")}catch{}})();var U=1,_="close-many",z=["--filter-status","--filter-type","--filter-tag","--filter-priority","--filter-sprint","--filter-release","--filter-parent","--filter-assignee","--filter-updated-before","--ids"].join(", ");function L(e,t){return m(e,t,{includePagination:!1})}function G(e,t){return m(e,t)}function F(e){if(e?.ids!=null&&String(e.ids).trim().length===0)throw new f("--ids requires at least one non-empty item ID",u.USAGE)}function V(e){let t={};if(!e)return t;for(let[n,o]of Object.entries(e))o==null||typeof o=="string"&&!o.split(",").some(i=>i.trim().length>0)||(t[n]=o);return t}function $(e,t){let n=String(e??"").trim();if(n.length>0)return n;if(t)throw new f("pm close-many requires a shared close reason via --reason because governance.require_close_reason is enabled.",u.USAGE,{code:"close_reason_required",required:"Provide a shared closing summary via --reason for the whole batch.",why:"governance.require_close_reason is enabled, so every close must record why the items are done.",examples:['pm close-many --filter-sprint S-12 --reason "Sprint S-12 acceptance criteria met"','pm close-many --ids pm-a,pm-b --reason "Superseded by redesign"'],nextSteps:["Re-run with --reason describing the shared outcome.","To stop requiring reasons, run: pm config set governance-require-close-reason --policy disabled"]})}async function B(e,t){let n=y(t.schema),o=S(t,O()),i=await x(e,t.item_format,o.type_to_folder,void 0,t.schema),s=new Map,l=new Map;for(let r of i){if(typeof r.parent!="string"||r.parent.length===0||(l.set(r.id,r.parent),g(r.status,n)))continue;let c=s.get(r.parent);c?c.push(r.id):s.set(r.parent,[r.id])}for(let r of s.values())r.sort((c,a)=>c.localeCompare(a));return{childrenByParent:s,parentByChild:l}}function w(e,t,n){let o=n?.get(e);if(o!==void 0)return o;let i=0,s=t.get(e),l=[],r=new Set,c=!1;for(;s!==void 0&&!r.has(s);){let a=n?.get(s);if(a!==void 0){i+=a+1;break}r.add(s),l.push(s),i+=1,s=t.get(s)}if(s!==void 0&&r.has(s)&&(c=!0),!c){n?.set(e,i);for(let[a,h]of l.entries())n?.set(h,i-a-1)}return i}async function K(e){let t=await v(e.pmRoot,_,e.rollbackId,U),n=e.options.message??`Rollback close-many checkpoint ${t.id}`,o=await M(t.items,(i,s)=>N(i,s,{author:e.options.author,message:n,force:!0},e.global));return{mode:"rollback",matched_count:t.items.length,dry_run:!1,rollback_checkpoint_id:t.id,checkpoint:{id:t.id,created_at:t.created_at,path:t.path,rollback_command:`pm close-many --rollback ${t.id}`},restored_count:o.restored_ids.length,failed_count:o.failed_count,rows:o.rows,ids:o.restored_ids}}function X(e,t,n,o,i){return e.map(s=>{let l=(t.get(s.id)??[]).filter(c=>!n.has(c)),r=!H(s,o,i);return{id:s.id,title:typeof s.title=="string"?s.title:"",status:s.status,action:r?"skip":"close",...r?{skip_reason:"already_terminal"}:{},...l.length>0?{active_child_ids:l}:{}}})}async function J(e){let t=await I(e.pmRoot,_,e.checkpointId,{schema_version:U,id:e.checkpointId,created_at:e.nowValue,author:P(e.options.author,"unknown"),...e.reason!==void 0?{reason:e.reason}:{},filters:e.filters,items:e.checkpointItems});return{id:e.checkpointId,created_at:e.nowValue,path:t,rollback_command:`pm close-many --rollback ${e.checkpointId}`}}async function Q(e){let t=[],n=[];for(let o of e.matched){if(!e.closableIds.has(o.id)){t.push({id:o.id,status:"skipped",skip_reason:"already_terminal"});continue}try{let i=await T(o.id,e.reason,e.closeOptions,e.global);t.push({id:o.id,status:"closed",changed_fields:i.changed_fields,...i.warnings&&i.warnings.length>0?{warnings:i.warnings}:{}}),n.push(o.id)}catch(i){t.push({id:o.id,status:"failed",error:C(i)})}}return{rows:t,closedIds:n}}function W(e){return typeof e.rollback=="string"?e.rollback:void 0}function Z(e,t){if(t.trim().length===0)throw new f("--rollback requires a checkpoint id",u.USAGE);if(e.dryRun===!0)throw new f("--dry-run cannot be combined with --rollback",u.USAGE);if(G(e.list,e.status))throw new f("Rollback mode does not accept filter options",u.USAGE)}function ee(e){if(!L(e.list,e.status))throw new f(`close-many requires at least one filter to scope the close (for example: ${z}). Refusing to match every item.`,u.USAGE)}function te(e,t){let n=new Map;return[...e].sort((o,i)=>{let s=w(i.id,t,n)-w(o.id,t,n);return s!==0?s:o.id.localeCompare(i.id)})}function H(e,t,n){return n||!g(e.status,t)}function ne(e,t,n){return new Set(e.filter(o=>H(o,t,n)).map(o=>o.id))}async function oe(e){ee(e.options);let t=y(e.settings.schema),n=$(e.options.reason,e.settings.governance.require_close_reason),o=e.options.force===!0,i=await D(e.options.status,V(e.options.list),e.global),{childrenByParent:s,parentByChild:l}=await B(e.pmRoot,e.settings),r=te(i.items,l),c=ne(r,t,o);return{pmRoot:e.pmRoot,settings:e.settings,statusRegistry:t,reason:n,validateCloseMode:e.options.validateClose,force:o,listed:i,matched:r,planRows:X(r,s,c,t,o)}}function se(e){return{mode:"dry_run",matched_count:e.matched.length,dry_run:!0,...e.reason!==void 0?{reason:e.reason}:{},filters:e.listed.filters,...e.validateCloseMode?{validate_close:e.validateCloseMode}:{},item_plans:e.planRows,ids:[]}}async function ie(e){if(e.options.checkpoint===!1||e.closableIds.size===0)return;let t=e.context.matched.filter(n=>e.closableIds.has(n.id)).map(n=>({id:n.id,target_updated_at:n.updated_at}));return J({pmRoot:e.context.pmRoot,checkpointId:e.checkpointId,nowValue:e.nowValue,options:e.options,reason:e.context.reason,filters:e.context.listed.filters,checkpointItems:t})}async function ue(e,t){let n=E(process.cwd(),t.path);if(!await k(A(n)))throw new f(`Tracker is not initialized at ${n}. Run pm init first.`,u.NOT_FOUND);let o=await q(n),i=e.dryRun===!0,s=W(e);if(F(e.list),s!==void 0)return Z(e,s),K({pmRoot:n,rollbackId:s,options:e,global:t});let l=await oe({pmRoot:n,settings:o,options:e,global:t});if(i)return se(l);let r=new Set(l.planRows.filter(d=>d.action==="close").map(d=>d.id)),c=b(),a=R(_,c),h=await ie({context:l,options:e,closableIds:r,checkpointId:a,nowValue:c}),j={author:e.author,message:e.message??`close-many apply ${a}`,completedAt:e.completedAt,validateClose:l.validateCloseMode,force:l.force,resolution:e.resolution,expectedResult:e.expectedResult,actualResult:e.actualResult},{rows:p,closedIds:Y}=await Q({matched:l.matched,closableIds:r,reason:l.reason,closeOptions:j,global:t});return{mode:"apply",matched_count:l.matched.length,dry_run:!1,...l.reason!==void 0?{reason:l.reason}:{},filters:l.listed.filters,...l.validateCloseMode?{validate_close:l.validateCloseMode}:{},...h?{checkpoint:h}:{},closed_count:p.filter(d=>d.status==="closed").length,skipped_count:p.filter(d=>d.status==="skipped").length,failed_count:p.filter(d=>d.status==="failed").length,rows:p,ids:Y}}var fe={activeListOptions:V,buildActiveChildrenByParent:B,hasCloseManyFilters:L,hasCloseManyRollbackConflicts:G,hierarchyDepth:w,rejectBlankIdsFilter:F,resolveReason:$};export{ue as a,fe as b};
2
- //# sourceMappingURL=chunk-CFIGP5LY.js.map
@@ -1,2 +0,0 @@
1
- (function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},r=new e.Error().stack;r&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[r]="b4af534e-32f9-5271-b6f1-7d901c282de0")}catch{}})();var d=[{key:"search_provider",path:"search.provider",kind:"string",summary:"Search embedding provider name (e.g. openai, ollama, or an extension provider)."},{key:"search_mutation_refresh_policy",path:"search.mutation_refresh_policy",kind:"string",choices:["cache_only","semantic_configured","semantic_auto"],summary:"Mutation-time search refresh policy: cache_only, semantic_configured, or semantic_auto."},{key:"search_query_expansion_enabled",path:"search.query_expansion.enabled",kind:"boolean",summary:"Enable or disable query expansion for semantic/hybrid search."},{key:"search_query_expansion_provider",path:"search.query_expansion.provider",kind:"string",summary:"Query expansion provider name (built-in openai/ollama or extension provider)."},{key:"search_rerank_enabled",path:"search.rerank.enabled",kind:"boolean",summary:"Enable or disable post-retrieval reranking for hybrid search."},{key:"search_rerank_model",path:"search.rerank.model",kind:"string",summary:"Rerank model name override used by built-in providers."},{key:"search_rerank_top_k",path:"search.rerank.top_k",kind:"integer",min:1,summary:"Number of top hybrid candidates to rerank when rerank is enabled."},{key:"search_embedding_model",path:"search.embedding_model",kind:"string",summary:"Default embedding model name (overrides provider-specific model when set)."},{key:"search_embedding_corpus_max_characters",path:"search.embedding_corpus_max_characters",kind:"integer",min:1,summary:"Maximum semantic corpus characters per item before truncation."},{key:"search_embedding_batch_size",path:"search.embedding_batch_size",kind:"integer",min:1,summary:"Number of items embedded per request batch."},{key:"search_embedding_timeout_ms",path:"search.embedding_timeout_ms",kind:"integer",min:1,summary:"Per-request embedding timeout in milliseconds."},{key:"search_score_threshold",path:"search.score_threshold",kind:"number",summary:"Minimum score for a hit to be returned (0 keeps all matches)."},{key:"search_hybrid_semantic_weight",path:"search.hybrid_semantic_weight",kind:"ratio",summary:"Hybrid mode semantic weight in [0, 1] (1-weight goes to keyword)."},{key:"search_max_results",path:"search.max_results",kind:"integer",min:1,summary:"Default upper bound on search hits when --limit is not supplied."},{key:"search_bm25_k1",path:"search.bm25.k1",kind:"number",min:0,summary:"Offline BM25 term-frequency saturation (k1); higher saturates repeated terms slower (default 1.2)."},{key:"search_bm25_b",path:"search.bm25.b",kind:"ratio",summary:"Offline BM25 document-length normalization (b) in [0, 1]; 0 disables, 1 fully normalizes (default 0.75)."},{key:"openai_base_url",path:"providers.openai.base_url",kind:"string",summary:"OpenAI-compatible API base URL (LM Studio/vLLM also use this)."},{key:"openai_api_key",path:"providers.openai.api_key",kind:"string",summary:"OpenAI-compatible API key."},{key:"openai_model",path:"providers.openai.model",kind:"string",summary:"OpenAI-compatible embedding model name."},{key:"ollama_base_url",path:"providers.ollama.base_url",kind:"string",summary:"Ollama API base URL (typically http://localhost:11434)."},{key:"ollama_model",path:"providers.ollama.model",kind:"string",summary:"Ollama embedding model name (e.g. nomic-embed-text)."},{key:"vector_store_adapter",path:"vector_store.adapter",kind:"string",summary:"Vector store adapter name (lancedb, qdrant, or an extension adapter)."},{key:"vector_store_collection_name",path:"vector_store.collection_name",kind:"string",non_empty:!0,summary:"Vector collection/table name shared by Qdrant and LanceDB adapters."},{key:"qdrant_url",path:"vector_store.qdrant.url",kind:"string",summary:"Qdrant HTTP API URL."},{key:"qdrant_api_key",path:"vector_store.qdrant.api_key",kind:"string",summary:"Qdrant API key (empty if running unauthenticated)."},{key:"lancedb_path",path:"vector_store.lancedb.path",kind:"string",summary:"LanceDB storage path (relative to pm root or absolute)."},{key:"id_prefix",path:"id_prefix",kind:"string",non_empty:!0,summary:'Prefix for generated item IDs (e.g. "pm" produces pm-xxxx).'},{key:"author_default",path:"author_default",kind:"string",non_empty:!0,summary:"Default author recorded on mutations when --author is not supplied."},{key:"mutation_guard_require_attributed_author",path:"mutation_guard.require_attributed_author",kind:"boolean",summary:"Reject mutations whose effective author resolves to unknown."},{key:"mutation_guard_secret_guard",path:"mutation_guard.secret_guard",kind:"string",choices:["off","advise","block"],summary:"Detect credential-shaped mutation content: off, advise, or block."},{key:"mutation_guard_stale_in_progress_hours",path:"mutation_guard.stale_in_progress_hours",kind:"integer",min:1,summary:"Age threshold for unclaimed in-progress work surfaced by health."},{key:"governance_duplicate_detection_mode",path:"governance.duplicate_detection_mode",kind:"string",choices:["off","advisory","strict"],summary:"Create/copy duplicate governance: off, advisory, or strict explicit-bypass enforcement."},{key:"governance_duplicate_detection_threshold",path:"governance.duplicate_detection_threshold",kind:"ratio",summary:"Minimum shared similarity score in [0, 1] for create/copy duplicate governance."},{key:"governance_duplicate_detection_limit",path:"governance.duplicate_detection_limit",kind:"integer",min:0,max:20,summary:"Maximum likely duplicates returned by create/copy governance (0-20)."},{key:"output_default_format",path:"output.default_format",kind:"string",choices:["toon","json"],summary:"Default output format for commands that support it: toon or json."},{key:"locks_ttl_seconds",path:"locks.ttl_seconds",kind:"integer",min:1,summary:"Claim/lock time-to-live in seconds before a stale lock can be reclaimed."},{key:"locks_wait_ms",path:"locks.wait_ms",kind:"integer",min:0,summary:"Bounded jittered wait in milliseconds before a contended item mutation fails with lock_conflict; 0 fails fast. PM_LOCK_WAIT_MS overrides per invocation."},{key:"ids_token_length",path:"ids.token_length",kind:"integer",min:4,max:12,summary:"Random base36 token length for newly minted item ids (4-12, default 4). Raise it to shrink cross-branch id collision odds in concurrent multi-agent workflows (pm-pibw)."},{key:"checkpoints_retention_days",path:"checkpoints.retention_days",kind:"integer",min:1,summary:"Age in days above which pm gc --scope checkpoints prunes bulk-mutation rollback checkpoints."},{key:"schema_unknown_field_policy",path:"schema.unknown_field_policy",kind:"string",choices:["allow","warn","reject"],summary:"How item I/O handles metadata keys not in the field registry: allow, warn, or reject."},{key:"history_compact_policy_enabled",path:"history.compact_policy.enabled",kind:"boolean",summary:"Enable the history-compaction advisory: pm health warns on over-threshold streams."},{key:"history_compact_policy_max_entries",path:"history.compact_policy.max_entries",kind:"integer",min:1,summary:"Entry count above which a history stream is flagged (and the default pm history-compact --all-over threshold)."},{key:"history_compact_policy_trigger",path:"history.compact_policy.trigger",kind:"string",choices:["health_warn","auto"],summary:"History-compaction policy intent: health_warn (advisory only) or auto (scheduled sweeps expected)."}],l=new Map(d.flatMap(e=>[[e.key,e],[e.path.toLowerCase().replaceAll("-","_"),e]]));function f(e){if(typeof e!="string")return;let r=e.trim().toLowerCase().replaceAll("-","_");if(r.length!==0)return l.get(r)}function c(e,r){let t=r.trim().toLowerCase();return t==="true"||t==="1"||t==="yes"||t==="on"?{ok:!0,parsed:{descriptor:e,value:!0}}:t==="false"||t==="0"||t==="no"||t==="off"?{ok:!0,parsed:{descriptor:e,value:!1}}:{ok:!1,error:{message:`Config set ${e.key} requires a boolean value (true|false), got "${r}"`}}}function h(e,r,t){return e.non_empty===!0&&t.length===0?{ok:!1,error:{message:`Config set ${e.key} requires a non-empty value`}}:e.choices&&!e.choices.includes(t)?{ok:!1,error:{message:`Config set ${e.key} must be one of ${e.choices.join("|")}, got "${r}"`}}:{ok:!0,parsed:{descriptor:e,value:t}}}function y(e,r,t){if(t.length===0)return{ok:!1,error:{message:`Config set ${e.key} requires a non-empty value`}};let n=Number(t);return Number.isFinite(n)?{ok:!0,value:n}:{ok:!1,error:{message:`Config set ${e.key} requires a finite number, got "${r}"`}}}function p(e,r,t){return!Number.isInteger(t)||t<0?{ok:!1,error:{message:`Config set ${e.key} requires a non-negative integer, got "${r}"`}}:e.min!==void 0&&t<e.min?{ok:!1,error:{message:`Config set ${e.key} requires an integer >= ${e.min}, got "${r}" (the runtime silently ignores 0 here and falls back to the default)`}}:e.max!==void 0&&t>e.max?{ok:!1,error:{message:`Config set ${e.key} requires an integer <= ${e.max}, got "${r}"`}}:{ok:!0,parsed:{descriptor:e,value:t}}}function _(e,r,t){return t<0||t>1?{ok:!1,error:{message:`Config set ${e.key} requires a number in [0, 1], got "${r}"`}}:{ok:!0,parsed:{descriptor:e,value:t}}}function k(e,r,t){return e.min!==void 0&&t<e.min?{ok:!1,error:{message:`Config set ${e.key} requires a number >= ${e.min}, got "${r}"`}}:{ok:!0,parsed:{descriptor:e,value:t}}}function b(e,r){if(typeof r!="string")return{ok:!1,error:{message:`Config set ${e.key} requires a string value`}};let t=r.trim();if(e.kind==="boolean")return c(e,r);if(e.kind==="string")return h(e,r,t);let n=y(e,r,t);return n.ok?e.kind==="integer"?p(e,r,n.value):e.kind==="ratio"?_(e,r,n.value):k(e,r,n.value):{ok:!1,error:n.error}}function v(e,r){let t=r.path.split("."),n=e;for(let a of t){if(typeof n!="object"||n===null)return null;n=n[a]}return typeof n=="string"||typeof n=="number"||typeof n=="boolean"?n:null}function x(e,r,t){let n=r.path.split("."),a=e;for(let o=0;o<n.length-1;o+=1){let m=n[o],i=a[m];if(typeof i!="object"||i===null||Array.isArray(i)){let u={};a[m]=u,a=u}else a=i}let s=n[n.length-1];return a[s]===t?!1:(a[s]=t,!0)}export{d as a,f as b,b as c,v as d,x as e};
2
- //# sourceMappingURL=chunk-CHOQ2VAW.js.map
@@ -1,2 +0,0 @@
1
- import{a as q}from"./chunk-HFSD77TQ.js";import{f as M,g as V,h as X}from"./chunk-PD3225AM.js";import{a as E}from"./chunk-VT3Z5G7D.js";import{A as m,Ad as D,C as _,Da as P,La as b,Nf as A,Oa as x,R as I,Zf as W,ag as G,b as v,c as $,ff as N,lc as k,nf as w,qf as j,rf as L,tf as C,uc as F,uf as z,vf as U,zd as T}from"./chunk-D4FPS43D.js";import Q 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]="dd5ab9c3-bc6f-59f1-be89-ad0ab2abe7b5")}catch{}})();function J(e,t){return t==="body"?e.body:e.metadata[t]}function H(e,t){if(e===void 0||Object.is(e,t))return!0;if(Array.isArray(e)){if(!Array.isArray(t))return!1;let s=new Set;return e.every(o=>{let c=t.findIndex((n,u)=>!s.has(u)&&H(o,n));return c<0?!1:(s.add(c),!0)})}if(e===null||t===null||typeof e!="object"||typeof t!="object"||Array.isArray(t))return!1;let i=t;return Object.entries(e).every(([s,o])=>Object.hasOwn(i,s)&&H(o,i[s]))}function K(e,t){let i=new Set(t),s=[];for(let o=e.length-1;o>=0&&i.size>0;o-=1){let c=e[o],n=new Set;for(let a of L(c.patch))n.add(E(a.path)),a.from&&n.add(E(a.from));let u=[...i].filter(a=>n.has(a));if(u.length!==0){for(let a of u)i.delete(a);s.push({index:o+1,ts:c.ts,author:c.author,op:c.op,fields:u.sort((a,y)=>a.localeCompare(y))})}}return s.reverse()}function re(e,t,i){let s=Q.compare(t,i);if(s.length===0)return;let o=new Set;for(let r of s)o.add(E(r.path));let c=new Set([...o].filter(r=>H(J(t,r),J(i,r)))),n=new Set([...o].filter(r=>!c.has(r))),u=K(e,n),a=K(e,c),y=[...o].sort((r,f)=>r.localeCompare(f)),l=[...n].sort((r,f)=>r.localeCompare(f)),d=[...c].sort((r,f)=>r.localeCompare(f)),h=[...new Set(u.map(r=>r.author))].sort((r,f)=>r.localeCompare(f)),p=[...new Set(a.map(r=>r.author))].sort((r,f)=>r.localeCompare(f));return{reconciled_field_count:o.size,reconciled_fields:y,reverted_field_count:n.size,reverted_fields:l,discarded_events:u,discarded_authors:h,preserved_field_count:c.size,preserved_fields:d,preserved_events:a,preserved_authors:p,recovery_hint:u.length>0?"Reconciliation keeps the on-disk item and overwrites these replayed mutations. To recover one, inspect it with pm history <id> --diff --field <field>, then re-apply the lost value with pm update.":null}}async function ie(e,t,i){let s=e.located?.itemPath??null,o=e.located?await W(e.located,{schema:t.schema}):null;if(!o)return{currentItemReplay:null,currentItemPath:s,matchedChainBefore:null,currentItemRawBeforeLock:null,loadedItem:null};let c=j(o.document),n=i[i.length-1]?.after_hash;return{currentItemReplay:c,currentItemPath:s,matchedChainBefore:w(c)===n,currentItemRawBeforeLock:o.raw,loadedItem:o}}function oe(e){return typeof e.message=="string"&&e.message.trim().length>0?e.message:`history-repair re-anchored ${e.entriesRehashed} entr${e.entriesRehashed===1?"y":"ies"}${e.entriesPatchRepaired>0?`, repaired ${e.entriesPatchRepaired} patch(es)`:""}${e.reconcileNeeded?", reconciled chain with on-disk item":""}.`}function ne(e){let t=[...e.reanchorEntries];if(!e.changed)return{rewrittenEntries:t,auditEntryAdded:!1};let i=e.reconcileNeeded&&e.currentItemReplay?e.currentItemReplay:e.finalReplay;return t.push({ts:I(),author:e.author,op:e.auditOperation,patch:e.reconcileNeeded&&e.currentItemReplay?Q.compare(e.finalReplay,e.currentItemReplay):[],before_hash:w(e.finalReplay),after_hash:w(i),message:e.message,...e.auditContext===void 0?{}:{context:e.auditContext}}),{rewrittenEntries:t,auditEntryAdded:!0}}function se(e,t){let i=[];return e||i.push("history_repair_no_changes"),t>0&&i.push(`history_repair_skipped_unresolvable_ops:${t}`),i}async function ae(e){return V({pmRoot:e.pmRoot,subject:e.subject,settings:e.settings,typeRegistry:e.typeRegistry,historyRawBeforeLock:e.historyRawBeforeLock,currentItemRawBeforeLock:e.currentItemRawBeforeLock,operation:"history-repair",author:e.author,force:e.force,itemDocument:e.loadedItem?.document??null,applyRewrite:async({historyRawUnderLock:t})=>M({historyPath:e.historyPath,nextHistoryRaw:U(e.rewrittenEntries),historyRawUnderLock:t}),applyPostRewrite:async()=>F({path:e.historyPath,scope:"project",op:"history_repair:history"})})}async function ce(e,t,i){let s=b(process.cwd(),i.path);if(!await v(x(s)))throw new _(`Tracker is not initialized at ${s}. Run pm init first.`,m.NOT_FOUND);let o=await A(s),c=P(o,k()),n=await X(s,e,o,c.type_to_folder);if(!await v(n.historyPath))throw new _(`No history stream exists for ${n.id}.`,m.NOT_FOUND);let u=await $(n.historyPath),a=await D(n.historyPath,n.id);if(a.length===0)throw new _(`No history entries exist for ${n.id}; nothing to repair.`,m.USAGE);let y=C(a),l=z(a),d=await ie(n,o,a),h=l.finalDocument,p=d.currentItemReplay!==null&&w(h)!==w(d.currentItemReplay),r=p&&d.currentItemReplay?re(l.entries,h,d.currentItemReplay):void 0,f=[l.entriesRehashed>0,l.entriesPatchRepaired>0,p,t.forceAuditEntry===!0].some(Boolean),B=T(t.author,o.author_default),S=!!t.dryRun,Y=oe({message:t.message,entriesRehashed:l.entriesRehashed,entriesPatchRepaired:l.entriesPatchRepaired,reconcileNeeded:p}),{rewrittenEntries:O,auditEntryAdded:Z}=ne({reanchorEntries:l.entries,changed:f,reconcileNeeded:p,currentItemReplay:d.currentItemReplay,finalReplay:h,author:B,message:Y,auditOperation:t.auditOperation??"history_repair",auditContext:t.auditContext}),R=C(O);if(!R.ok)throw new _(`history-repair produced an invalid rewritten chain (${R.errors.join(", ")}).`,m.GENERIC_FAILURE);let g=se(f,l.skippedOps);return r&&r.discarded_events.length>0&&(g.push(`history_repair_reconcile_discards_events:${r.discarded_events.length}`),g.push(`history_repair_discarded_authors:${r.discarded_authors.join(",")}`)),f&&!S&&g.push(...await ae({pmRoot:s,subject:n,settings:o,typeRegistry:c,historyRawBeforeLock:u,currentItemRawBeforeLock:d.currentItemRawBeforeLock,author:B,force:t.force,loadedItem:d.loadedItem,historyPath:n.historyPath,rewrittenEntries:O})),{id:n.id,dry_run:S,changed:f,history:{path:n.historyPath,entries_scanned:a.length,chain_drift_before:!y.ok,entries_rehashed:l.entriesRehashed,entries_patch_repaired:l.entriesPatchRepaired,converted_replace_to_add:l.convertedReplaceToAdd,skipped_ops:l.skippedOps,reconciled_with_item:p,audit_entry_added:Z,verify_ok:R.ok,verify_errors:R.errors},item:{exists:d.currentItemPath!==null,path:d.currentItemPath,matched_chain_before:d.matchedChainBefore},...r?{reconciliation:r}:{},warnings:[...new Set(g)].sort((ee,te)=>ee.localeCompare(te)),generated_at:I()}}function ke(e,t){if(t&&e!==void 0)throw new _("history-repair: <id> and --all are mutually exclusive; pass an item id to repair one stream or --all to repair every drifted stream.",m.USAGE);if(!t&&e===void 0)throw new _("history-repair: provide an item <id> or pass --all to repair every drifted stream.",m.USAGE)}async function Ce(e,t){let i=b(process.cwd(),t.path);if(!await v(x(i)))throw new _(`Tracker is not initialized at ${i}. Run pm init first.`,m.NOT_FOUND);let s=await A(i),o=P(s,k()),c=[],n=await G(i,s.item_format,o.type_to_folder,c,s.schema,{forceSourceScan:!0}),u=await q(i,n),a=[],y=[],l={repaired:0,skipped_clean:0,failed:0};for(let d of u.driftedItems)try{let h=await ce(d,{...e,auditContext:e.auditContextById?.[d],auditContextById:void 0},t),p=h.changed?"repaired":"skipped_clean";l[p]+=1,y.push(...h.warnings.map(r=>`${d}:${r}`)),a.push({id:d,outcome:p,entries_rehashed:h.history.entries_rehashed,entries_patch_repaired:h.history.entries_patch_repaired,reconciled_with_item:h.history.reconciled_with_item,...h.reconciliation?{reconciliation:h.reconciliation}:{},warnings:h.warnings})}catch(h){l.failed+=1,a.push({id:d,outcome:"failed",error:h instanceof Error?h.message:String(h)})}return e.dryRun||await N(i),{all:!0,dry_run:!!e.dryRun,scanned_streams:n.length,drifted_streams:u.driftedItems.length,streams:a,totals:l,warnings:[...new Set([...c,...y])].sort((d,h)=>d.localeCompare(h)),generated_at:I()}}export{re as a,ce as b,ke as c,Ce as d};
2
- //# sourceMappingURL=chunk-CS6MRHG7.js.map
@@ -1,2 +0,0 @@
1
- import{qa as w,ra as I,ta as S,ua as g}from"./chunk-NG6OXIBR.js";import{$f as h,A as u,C as m,Da as f,La as y,Nf as _,Rf as x,Vf as b}from"./chunk-D4FPS43D.js";(function(){try{var i=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new i.Error().stack;t&&(i._sentryDebugIds=i._sentryDebugIds||{},i._sentryDebugIds[t]="078456b8-ed61-5c47-afc7-7553833934e1")}catch{}})();var U=3,R=20,k=.8,N=100,A=1e3,D=1e6;function Q(i){return i===void 0?[]:[`likely_duplicates:${i.result.items.map(t=>t.id).join(",")}`]}function C(i){let t=i.limit??U,s=i.threshold??k;if(!Number.isSafeInteger(t)||t<0||t>R)throw new m(`Similarity limit must be an integer from 0 to ${R}.`,u.USAGE);if(!Number.isFinite(s)||s<0||s>1)throw new m("Similarity threshold must be a number from 0 to 1.",u.USAGE);return{limit:t,threshold:s}}function O(i){let t=i.limit??N;if(!Number.isSafeInteger(t)||t<0||t>A)throw new m(`Duplicate cluster limit must be an integer from 0 to ${A}.`,u.USAGE);let s=i.since===void 0?void 0:new Date(i.since);if(s&&Number.isNaN(s.getTime()))throw new m("Duplicate cluster --since must be a valid ISO timestamp.",u.USAGE);return{limit:t,since:s}}async function $(i,t){let s=y(i.cwd??process.cwd(),i.pmRoot),o=await _(s),n=f(o),e=i.statuses?new Set(i.statuses.map(r=>r.trim()).filter(Boolean)):void 0;return(await h(s,o.item_format,n.type_to_folder,void 0,o.schema)).filter(r=>(!e||e.has(r.status))&&(!t||new Date(r.created_at).getTime()>=t.getTime())).sort((r,c)=>r.id.localeCompare(c.id)).map(r=>({item:r,prepared:I(r.title)}))}function L(i,t=D){let s=new Set,o=[new Map,new Map,new Map];for(let[n,e]of i.entries()){let r=[[e.prepared.normalized],e.prepared.issueCodes,e.prepared.tokens];for(let[c,a]of r.entries())for(let l of a){let d=o[c].get(l)??[];for(let p of d)s.add(`${p}:${n}`);if(s.size>t)throw new m(`Duplicate sweep exceeded ${D} candidate pairs; narrow it with statuses or since.`,u.CONFLICT,{code:"duplicate_sweep_cost_limit",required:"Narrow the batch duplicate query until its deterministic candidate set fits the disclosed safety bound."});d.push(n),o[c].set(l,d)}}return s}var Z={buildDuplicateClusters:E,collectDuplicateCandidatePairs:L,createDuplicateUnionFind:M};function M(i){let t=Array.from({length:i},(o,n)=>n);return{parent:t,findRoot:o=>{let n=o;for(;t[n]!==n;)n=t[n];for(;t[o]!==o;){let e=t[o];t[o]=n,o=e}return n}}}function P(i,t,s,o){let n=[];for(let e of t){let[r,c]=e.split(":").map(p=>Number.parseInt(p,10)),a=g(i[r].prepared,i[c].prepared);if(a.score<s)continue;let l=o.findRoot(r),d=o.findRoot(c);l!==d&&(o.parent[d]=l),n.push({left_id:i[r].item.id,right_id:i[c].item.id,...a})}return n}function E(i,t,s,o){let n=new Map;for(let e of i.keys()){let r=s.findRoot(e),c=n.get(r)??[];c.push(e),n.set(r,c)}return[...n.values()].filter(e=>e.length>1).map(e=>{let r=new Set(e.map(a=>i[a].item.id)),c=t.filter(a=>r.has(a.left_id)&&r.has(a.right_id)).sort((a,l)=>l.score-a.score||a.left_id.localeCompare(l.left_id)||a.right_id.localeCompare(l.right_id));return{id:i[e[0]].item.id,items:e.map(a=>{let l=i[a].item;return{id:l.id,title:l.title,status:l.status,type:l.type}}),matches:c,max_score:c[0]?.score??0}}).sort((e,r)=>r.max_score-e.max_score||e.id.localeCompare(r.id)).slice(0,o)}function z(i,t,s,o,n){return t.filter(e=>!s.has(e.id)).map(e=>({id:e.id,title:e.title,status:e.status,type:e.type,...S(i,e.title)})).filter(e=>e.score>=o).sort((e,r)=>r.score-e.score||e.id.localeCompare(r.id)).slice(0,n)}async function F(i,t={}){let s=i.title.trim();if(s.length===0)throw new m("Similarity candidate title must not be empty.",u.USAGE);let{limit:o,threshold:n}=C(t),e=y(t.cwd??process.cwd(),t.pmRoot),r=await _(e),c=f(r),a=await b(e,Object.values(c.type_to_folder)),l=w(s),d=a&&l.length>0?await x({pmRoot:e,expectedSourceCursor:a.source_cursor,query:l.map(v=>`"${v.replaceAll('"','""')}"`).join(" OR "),limit:Math.max(o*10,50)}):null,p=d===null?await h(e,r.item_format,c.type_to_folder,void 0,r.schema):d.items,T=z(s,p,new Set(i.excludeIds??[]),n,o);return{items:T,count:T.length,threshold:n,source:d?"persistent_index":"metadata_fallback"}}async function ee(i={}){let{threshold:t}=C({...i,limit:void 0}),{limit:s,since:o}=O(i),n=await $(i,o),e=L(n),r=M(n.length),c=P(n,e,t,r),a=E(n,c,r,s);return{clusters:a,count:a.length,threshold:t,source:"metadata_scan",cost:{item_count:n.length,candidate_pairs:e.size,scored_pairs:e.size}}}async function te(i,t){if(t.mode==="off")return;let s=await F(i,t);if(s.count===0)return;let o=t.mode==="strict"&&t.allowDuplicate===!0;if(t.mode==="strict"&&!o){let n=s.items.map(e=>`${e.id} (${e.status}): ${e.title}`).join("; ");throw new m(`Likely duplicate item(s) found: ${n}. Reuse the canonical item or pass --allow-duplicate with explicit intent.`,u.CONFLICT,{code:"likely_duplicate",required:"Reuse an existing item, or explicitly acknowledge the duplicate with --allow-duplicate.",recovery:{suggested_flags:["--allow-duplicate"]}})}return{mode:t.mode,bypassed:o,result:s}}export{Q as a,Z as b,F as c,ee as d,te as e};
2
- //# sourceMappingURL=chunk-CUGNQQKH.js.map