@unbrained/pm-cli 2026.8.5 → 2026.8.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/CHANGELOG.md +14 -0
  3. package/dist/cli/main.js +12 -37
  4. package/dist/cli/register-setup.d.ts +1 -1
  5. package/dist/cli/register-setup.js +46 -20
  6. package/dist/cli-bundle/bundle-manifest.json +391 -391
  7. package/dist/cli-bundle/chunks/append-XAJ5Z4XS.js +2 -0
  8. package/dist/cli-bundle/chunks/{chunk-2WFXWAYX.js → chunk-343QETLI.js} +2 -2
  9. package/dist/cli-bundle/chunks/{chunk-RKAVWO3O.js → chunk-3KFVGGRE.js} +2 -2
  10. package/dist/cli-bundle/chunks/{chunk-VCKLFEUN.js → chunk-3ZJRFYY2.js} +2 -2
  11. package/dist/cli-bundle/chunks/{chunk-UZBWIUYD.js → chunk-4AVFKHHC.js} +2 -2
  12. package/dist/cli-bundle/chunks/{chunk-BPELKUQD.js → chunk-4OVGQW22.js} +2 -2
  13. package/dist/cli-bundle/chunks/{chunk-54FNT7U2.js → chunk-5PBP2ZP3.js} +2 -2
  14. package/dist/cli-bundle/chunks/{chunk-NY4T3JWN.js → chunk-5ZKQPA44.js} +2 -2
  15. package/dist/cli-bundle/chunks/{chunk-4YUBDMQM.js → chunk-A3XQ7VPU.js} +2 -2
  16. package/dist/cli-bundle/chunks/{chunk-OPVH7SKD.js → chunk-AJE3AHPD.js} +2 -2
  17. package/dist/cli-bundle/chunks/{chunk-V3774P7D.js → chunk-AOBDLU4T.js} +2 -2
  18. package/dist/cli-bundle/chunks/{chunk-VN5VITU3.js → chunk-AYRUGRNS.js} +2 -2
  19. package/dist/cli-bundle/chunks/{chunk-HWRRMBJO.js → chunk-BP6EMEDP.js} +2 -2
  20. package/dist/cli-bundle/chunks/{chunk-ZYHOB3SN.js → chunk-C3YABSJK.js} +2 -2
  21. package/dist/cli-bundle/chunks/{chunk-43HQQI6S.js → chunk-CA3BURYF.js} +2 -2
  22. package/dist/cli-bundle/chunks/{chunk-E2RKBKWB.js → chunk-D7I3TUGV.js} +2 -2
  23. package/dist/cli-bundle/chunks/{chunk-4VN6GS4U.js → chunk-DQGJ2RWT.js} +2 -2
  24. package/dist/cli-bundle/chunks/{chunk-YSO3YFZ4.js → chunk-DWOAOZHZ.js} +2 -2
  25. package/dist/cli-bundle/chunks/{chunk-Q35VBGOQ.js → chunk-E7BFPLUZ.js} +2 -2
  26. package/dist/cli-bundle/chunks/{chunk-LKDGK44W.js → chunk-F4NREH3G.js} +2 -2
  27. package/dist/cli-bundle/chunks/{chunk-OMXVBQ2N.js → chunk-FDBRXV25.js} +2 -2
  28. package/dist/cli-bundle/chunks/{chunk-3FTILRJ2.js → chunk-GU3TSEHD.js} +2 -2
  29. package/dist/cli-bundle/chunks/chunk-HS7OVAUN.js +164 -0
  30. package/dist/cli-bundle/chunks/{chunk-OTHLDSFP.js → chunk-JFZIS6JF.js} +2 -2
  31. package/dist/cli-bundle/chunks/{chunk-7A5OT5J2.js → chunk-JQ4NZ5EB.js} +2 -2
  32. package/dist/cli-bundle/chunks/{chunk-BXQLRKWF.js → chunk-L6LGKJX3.js} +2 -2
  33. package/dist/cli-bundle/chunks/{chunk-CSI3WS5I.js → chunk-M357ZCOR.js} +2 -2
  34. package/dist/cli-bundle/chunks/{chunk-5ZBOIPGP.js → chunk-M4VEE3FK.js} +2 -2
  35. package/dist/cli-bundle/chunks/{chunk-7C4PTJG6.js → chunk-MCS73BKB.js} +2 -2
  36. package/dist/cli-bundle/chunks/{chunk-A62CYISG.js → chunk-MDTH7SAE.js} +2 -2
  37. package/dist/cli-bundle/chunks/{chunk-HNFD72UK.js → chunk-OXY3SJ3N.js} +2 -2
  38. package/dist/cli-bundle/chunks/{chunk-L3AZOELJ.js → chunk-PECV7L5T.js} +2 -2
  39. package/dist/cli-bundle/chunks/{chunk-DXDREUXT.js → chunk-Q3VOP62W.js} +2 -2
  40. package/dist/cli-bundle/chunks/{chunk-UP7DTVMD.js → chunk-QJ7C3JIW.js} +2 -2
  41. package/dist/cli-bundle/chunks/{chunk-42E7YPLG.js → chunk-R6LSRGPS.js} +2 -2
  42. package/dist/cli-bundle/chunks/{chunk-MHK6LIWE.js → chunk-R6RKEYYW.js} +2 -2
  43. package/dist/cli-bundle/chunks/{chunk-UN66FZRO.js → chunk-RAFUN7IX.js} +3 -3
  44. package/dist/cli-bundle/chunks/chunk-RUAU5OSH.js +2 -0
  45. package/dist/cli-bundle/chunks/chunk-SD3YXU2U.js +56 -0
  46. package/dist/cli-bundle/chunks/{chunk-SSF4PIUR.js → chunk-SV3YQ4RY.js} +2 -2
  47. package/dist/cli-bundle/chunks/{chunk-V3EUXXOF.js → chunk-SVV3DQES.js} +2 -2
  48. package/dist/cli-bundle/chunks/{chunk-45G53IU4.js → chunk-SXECIECW.js} +2 -2
  49. package/dist/cli-bundle/chunks/chunk-T45OHXDW.js +8 -0
  50. package/dist/cli-bundle/chunks/{chunk-PMXJEU3F.js → chunk-TPKDJ5WL.js} +2 -2
  51. package/dist/cli-bundle/chunks/{chunk-M72BKL5Q.js → chunk-UVVXHGYS.js} +2 -2
  52. package/dist/cli-bundle/chunks/{chunk-WRL4KNDL.js → chunk-V663653R.js} +19 -19
  53. package/dist/cli-bundle/chunks/{chunk-R546TPDE.js → chunk-WSI5KZQJ.js} +2 -2
  54. package/dist/cli-bundle/chunks/{chunk-6MSQJOTG.js → chunk-XPOQQJTX.js} +2 -2
  55. package/dist/cli-bundle/chunks/{chunk-XCEZYMNI.js → chunk-YCCDXBNU.js} +2 -2
  56. package/dist/cli-bundle/chunks/{chunk-LN2WFEU4.js → chunk-ZFBWCKYF.js} +2 -2
  57. package/dist/cli-bundle/chunks/close-DI66JMSB.js +2 -0
  58. package/dist/cli-bundle/chunks/close-many-VFKT6U3O.js +2 -0
  59. package/dist/cli-bundle/chunks/comments-E73HIEZJ.js +2 -0
  60. package/dist/cli-bundle/chunks/copy-WBYVLCPC.js +2 -0
  61. package/dist/cli-bundle/chunks/{create-XLKTXTUF.js → create-TG67IVFI.js} +2 -2
  62. package/dist/cli-bundle/chunks/delete-6XKUVVQN.js +2 -0
  63. package/dist/cli-bundle/chunks/{deps-ITTY3GIC.js → deps-AJUGP2OH.js} +2 -2
  64. package/dist/cli-bundle/chunks/{docs-W4OSRTYR.js → docs-QOCLDRKJ.js} +2 -2
  65. package/dist/cli-bundle/chunks/{files-EOK4AZI4.js → files-3ST5TY64.js} +2 -2
  66. package/dist/cli-bundle/chunks/focus-R2AWS63Y.js +2 -0
  67. package/dist/cli-bundle/chunks/{history-compact-7UGTMLL3.js → history-compact-7BJFML4S.js} +2 -2
  68. package/dist/cli-bundle/chunks/{history-redact-4DZRMD6Z.js → history-redact-WJN3HYXR.js} +2 -2
  69. package/dist/cli-bundle/chunks/{history-repair-UPOSZW5R.js → history-repair-XDNZUB7F.js} +2 -2
  70. package/dist/cli-bundle/chunks/{learnings-GMRNCBS3.js → learnings-SZMUPVNA.js} +2 -2
  71. package/dist/cli-bundle/chunks/{profile-2MUUMHRE.js → profile-KL53JIAC.js} +2 -2
  72. package/dist/cli-bundle/chunks/{register-list-query-LR3SQ5ZF.js → register-list-query-QH7ONPKU.js} +2 -2
  73. package/dist/cli-bundle/chunks/{register-mutation-SUOHFVWM.js → register-mutation-OCRQNZK4.js} +3 -3
  74. package/dist/cli-bundle/chunks/{register-operations-ARRRKOVN.js → register-operations-HIBJXRGB.js} +2 -2
  75. package/dist/cli-bundle/chunks/register-setup-QWBQ6HBS.js +2 -0
  76. package/dist/cli-bundle/chunks/restore-FXA5QPM7.js +2 -0
  77. package/dist/cli-bundle/chunks/{schema-FJ4EA3XF.js → schema-QJ27OTRV.js} +2 -2
  78. package/dist/cli-bundle/chunks/update-7GBO4SXG.js +2 -0
  79. package/dist/cli-bundle/chunks/update-many-VF6ZKQUO.js +2 -0
  80. package/dist/cli-bundle/focused-chunks/{chunk-B7LJWAZE.js → chunk-27DK4A5O.js} +2 -2
  81. package/dist/cli-bundle/focused-chunks/{chunk-SV3O7TSH.js → chunk-4JC3AOGS.js} +2 -2
  82. package/dist/cli-bundle/focused-chunks/{chunk-G6ETT4QK.js → chunk-6KDHXURF.js} +2 -2
  83. package/dist/cli-bundle/focused-chunks/{chunk-PG2RIZBX.js → chunk-74CWP3A4.js} +2 -2
  84. package/dist/cli-bundle/focused-chunks/{chunk-Y4LDYLLT.js → chunk-7AZDTGPA.js} +2 -2
  85. package/dist/cli-bundle/focused-chunks/chunk-7YTZ7A4E.js +2 -0
  86. package/dist/cli-bundle/focused-chunks/{chunk-A7BJ5SS6.js → chunk-CL3NB7VW.js} +2 -2
  87. package/dist/cli-bundle/focused-chunks/chunk-EAXXF2HW.js +4 -0
  88. package/dist/cli-bundle/focused-chunks/{chunk-UIL2M2NA.js → chunk-EYO4F74Z.js} +2 -2
  89. package/dist/cli-bundle/focused-chunks/{chunk-7J5TUBUJ.js → chunk-GEYU23YS.js} +2 -2
  90. package/dist/cli-bundle/focused-chunks/{chunk-WEM2E2PE.js → chunk-GIERI4YU.js} +2 -2
  91. package/dist/cli-bundle/focused-chunks/{chunk-WVIVUWVL.js → chunk-GSW2Y7VZ.js} +2 -2
  92. package/dist/cli-bundle/focused-chunks/{chunk-VLYOEYML.js → chunk-LKQXXO62.js} +2 -2
  93. package/dist/cli-bundle/focused-chunks/{chunk-MJ7HWSFK.js → chunk-MBBMTDD3.js} +2 -2
  94. package/dist/cli-bundle/focused-chunks/{chunk-PIMMYG7Q.js → chunk-ME4XVOBJ.js} +2 -2
  95. package/dist/cli-bundle/focused-chunks/{chunk-IPWSFADF.js → chunk-N7QN3NE6.js} +2 -2
  96. package/dist/cli-bundle/focused-chunks/{chunk-W7BJEWHX.js → chunk-QL5H3AQH.js} +2 -2
  97. package/dist/cli-bundle/focused-chunks/chunk-TQMFQYXR.js +29 -0
  98. package/dist/cli-bundle/focused-chunks/{chunk-RUR5I3TK.js → chunk-XNVXIQ4B.js} +2 -2
  99. package/dist/cli-bundle/focused-chunks/{chunk-FGKY4MBE.js → chunk-YHDCGUIW.js} +2 -2
  100. package/dist/cli-bundle/focused-chunks/{chunk-QVHKCI4T.js → chunk-YLPZHWX7.js} +2 -2
  101. package/dist/cli-bundle/main.js +13 -13
  102. package/dist/cli-bundle/sdk-authoring.js +1 -1
  103. package/dist/cli-bundle/sdk-contracts.js +1 -1
  104. package/dist/cli-bundle/sdk-core.js +25 -25
  105. package/dist/cli-bundle/sdk-governance.js +1 -1
  106. package/dist/cli-bundle/sdk-graph.js +1 -1
  107. package/dist/cli-bundle/sdk-merge.js +1 -1
  108. package/dist/cli-bundle/sdk-query.js +1 -1
  109. package/dist/cli-bundle/sdk-runtime.js +1 -1
  110. package/dist/cli-bundle/sdk-testing.js +1 -1
  111. package/dist/cli-bundle/sdk.js +1 -1
  112. package/dist/core/extensions/activation-summary.d.ts +4 -0
  113. package/dist/core/extensions/activation-summary.js +5 -2
  114. package/dist/core/extensions/contribution-inventory.d.ts +1 -0
  115. package/dist/core/extensions/contribution-inventory.js +35 -2
  116. package/dist/core/extensions/extension-hook-runtime.js +5 -3
  117. package/dist/core/extensions/extension-types.d.ts +18 -1
  118. package/dist/core/extensions/extension-types.js +2 -2
  119. package/dist/core/extensions/loader.js +5 -13
  120. package/dist/core/extensions/preflight-ownership.d.ts +5 -0
  121. package/dist/core/extensions/preflight-ownership.js +42 -0
  122. package/dist/sdk/cli-contracts/flag-contracts.d.ts +2 -0
  123. package/dist/sdk/cli-contracts/flag-contracts.js +8 -2
  124. package/dist/sdk/cli-contracts/runtime-contracts.js +4 -3
  125. package/dist/sdk/cli-contracts.d.ts +1 -1
  126. package/dist/sdk/cli-contracts.js +3 -3
  127. package/dist/sdk/compose.d.ts +2 -2
  128. package/dist/sdk/compose.js +7 -2
  129. package/dist/sdk/define.d.ts +3 -1
  130. package/dist/sdk/define.js +3 -8
  131. package/dist/sdk/extension/install-sources.d.ts +43 -5
  132. package/dist/sdk/extension/install-sources.js +36 -2
  133. package/dist/sdk/extension/migrations.d.ts +114 -0
  134. package/dist/sdk/extension/migrations.js +175 -0
  135. package/dist/sdk/extension/scaffold.js +14 -9
  136. package/dist/sdk/extension/source-resolution.d.ts +50 -0
  137. package/dist/sdk/extension/source-resolution.js +66 -0
  138. package/dist/sdk/extension.d.ts +5 -1
  139. package/dist/sdk/extension.js +24 -26
  140. package/dist/sdk/governance/health.js +11 -2
  141. package/dist/sdk/index.d.ts +6 -2
  142. package/dist/sdk/index.js +8 -4
  143. package/dist/sdk/package-migrations.d.ts +10 -0
  144. package/dist/sdk/package-migrations.js +21 -0
  145. package/dist/sdk/runtime.d.ts +2 -0
  146. package/dist/sdk/runtime.js +6 -2
  147. package/docs/COMMANDS.md +9 -0
  148. package/docs/EXTENSIONS.md +2 -2
  149. package/docs/EXTENSION_LIFECYCLE.md +46 -0
  150. package/docs/README.md +1 -0
  151. package/docs/RELEASING.md +33 -20
  152. package/docs/SDK.md +31 -3
  153. package/marketplace.json +2 -2
  154. package/package.json +3 -3
  155. package/packages/pm-beads/package.json +1 -1
  156. package/packages/pm-calendar/package.json +1 -1
  157. package/packages/pm-command-kit/package.json +1 -1
  158. package/packages/pm-digital-twin/package.json +1 -1
  159. package/packages/pm-governance-audit/package.json +1 -1
  160. package/packages/pm-guide-shell/package.json +1 -1
  161. package/packages/pm-kanban/package.json +1 -1
  162. package/packages/pm-lifecycle-hooks/package.json +1 -1
  163. package/packages/pm-linked-test-adapters/package.json +1 -1
  164. package/packages/pm-search-advanced/package.json +1 -1
  165. package/packages/pm-templates/package.json +1 -1
  166. package/packages/pm-todos/package.json +1 -1
  167. package/packages/pm-vcs/package.json +1 -1
  168. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  169. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  170. package/sdk/public-surface.json +218 -20
  171. package/dist/cli-bundle/chunks/append-VXXGOXSG.js +0 -2
  172. package/dist/cli-bundle/chunks/chunk-EGJ4JTUG.js +0 -55
  173. package/dist/cli-bundle/chunks/chunk-FPBQHMFT.js +0 -8
  174. package/dist/cli-bundle/chunks/chunk-GE4KCSZP.js +0 -164
  175. package/dist/cli-bundle/chunks/chunk-YEWNL576.js +0 -2
  176. package/dist/cli-bundle/chunks/close-VZ3OQPN5.js +0 -2
  177. package/dist/cli-bundle/chunks/close-many-SB4TI27P.js +0 -2
  178. package/dist/cli-bundle/chunks/comments-BIF3Q4KY.js +0 -2
  179. package/dist/cli-bundle/chunks/copy-6AI5Z57X.js +0 -2
  180. package/dist/cli-bundle/chunks/delete-ZY2VHQTP.js +0 -2
  181. package/dist/cli-bundle/chunks/focus-DLBNWL7L.js +0 -2
  182. package/dist/cli-bundle/chunks/register-setup-O6AYP6NP.js +0 -2
  183. package/dist/cli-bundle/chunks/restore-ZVCVHTB5.js +0 -2
  184. package/dist/cli-bundle/chunks/update-YHV52CSS.js +0 -2
  185. package/dist/cli-bundle/chunks/update-many-M6YHVNXM.js +0 -2
  186. package/dist/cli-bundle/focused-chunks/chunk-BIMTMOS7.js +0 -4
  187. package/dist/cli-bundle/focused-chunks/chunk-GJ2TG2CW.js +0 -28
  188. package/dist/cli-bundle/focused-chunks/chunk-N5XU5UVK.js +0 -2
@@ -1,4 +1,4 @@
1
- import{D as Cr,Da as ze,Fa as Ue,Ga as He,I as yt,Ia as zr,Ja as Ur,Ka as Hr,La as Wr,M as mn,Ma as qr,N as _n,Na as Br,O as pn,P as $e,Pa as ht,Q as Ar,W as Rr,X as Nr,a as br,h as _t,o as Tr,oa as Dr,p as pt,pa as Mr,q as Ee,qa as Lr,r as W,ra as Pr,s as Fe,sa as jr,ta as Fr,ua as $r,x as Or}from"./chunk-BIMTMOS7.js";import{C as ft,D as mt,E as fn,G as Ir,R as me,S as ne,T as xr,W as b,X as je,Y as I,Z as T,aa as G,ba as ke,ca as _e,da as E,n as dt,o as wr,p as Er,q as kr,r as Sr,v as lt,w as ut,x as vr}from"./chunk-Y4LDYLLT.js";import{AsyncLocalStorage as ps}from"node:async_hooks";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="16109ee9-e684-5d25-a5f4-30a6c4f62bd5")}catch{}})();var yn=new ps,Vr=/^[A-Za-z0-9](?:[A-Za-z0-9._:-]{0,127})$/u;function gt(e,t){let n=typeof e=="string"?e.trim():"";return n.length>0?n.slice(0,t):void 0}function pe(e,t){if(e===void 0)return;let n=typeof e=="object"&&e!==null?e:{},r=gt(n.id,128),o=gt(n.parent_id,128);if(r===void 0||!Vr.test(r)||o!==void 0&&!Vr.test(o)){if(t)throw new Error("Agent episode ids must be 1-128 letters, digits, dots, underscores, colons, or hyphens.");return}let i=gt(n.label,256);return{id:r,...i===void 0?{}:{label:i},...o===void 0?{}:{parent_id:o}}}function Se(e){let t={};for(let[n,r]of Object.entries(e??{}).slice(0,32)){let o=n.trim().toLowerCase().slice(0,64),i=gt(r,256);/^[a-z][a-z0-9_-]{0,63}$/u.test(o)&&i!==void 0&&(t[o]=i)}return t}function ys(e,t,n){let r=yn.getStore(),o=Se({role:t.PM_AGENT_SESSION_ROLE,topic:t.PM_AGENT_SESSION_TOPIC}),i=pe(t.PM_AGENT_EPISODE_ID===void 0?void 0:{id:t.PM_AGENT_EPISODE_ID,label:t.PM_AGENT_EPISODE_LABEL,parent_id:t.PM_AGENT_EPISODE_PARENT_ID},!1),s={...Se(r?.provenance),...o,...Se(e?.provenance)},a=pe(e?.episode,!1)??pe(n,!1)??i??pe(r?.episode,!1);return Object.keys(s).length===0&&a===void 0?void 0:{...Object.keys(s).length===0?{}:{provenance:s},...a===void 0?{}:{episode:a}}}function Gr(e,t){return ys(e.session_context,t,e.client_info?.episode)??{}}function $u(e,t){let n=yn.getStore(),r=pe(e.episode,!0),o=pe(n?.episode,!1),i=r!==void 0&&r.parent_id===void 0&&o!==void 0?{...r,parent_id:o.id}:r,s={...Se(n?.provenance),...Se(e.provenance)};return yn.run({...Object.keys(s).length===0?{}:{provenance:s},...i===void 0?o===void 0?{}:{episode:o}:{episode:i}},t)}function zu(e){let t=Se(e.provenance),n=pe(e.episode,!0);return{...n===void 0?{}:{PM_AGENT_EPISODE_ID:n.id,...n.label===void 0?{}:{PM_AGENT_EPISODE_LABEL:n.label},...n.parent_id===void 0?{}:{PM_AGENT_EPISODE_PARENT_ID:n.parent_id}},...t.role===void 0?{}:{PM_AGENT_SESSION_ROLE:t.role},...t.topic===void 0?{}:{PM_AGENT_SESSION_TOPIC:t.topic}}}import{AsyncLocalStorage as bn}from"node:async_hooks";import{createHash as hs}from"node:crypto";import bt from"node:fs";import gs from"node:os";import Xr 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]="0139d8ef-d286-571f-89f8-7de2f8422f22")}catch{}})();var Jr=["model","effort","role","topic","version"],wt=new bn,Yr=new bn,wn=new bn,bs=[{harness:"claude-code",environment_keys:["CLAUDE_CODE","CLAUDECODE"],model_environment_keys:["ANTHROPIC_MODEL","CLAUDE_MODEL"],session_environment_keys:["CLAUDE_CODE_SESSION_ID"],provenance_environment_keys:{effort:["CLAUDE_EFFORT"],role:["CLAUDE_CODE_CHILD_SESSION"]},provenance_resolvers:{model:"claude_session_file",version:"claude_session_file"},provenance_unavailable_dimensions:["topic"],argv_markers:["claude","claude-code"],client_names:["claude","claude-code","claude code"]},{harness:"codex",environment_keys:["CODEX_HOME","CODEX_CI","CODEX_THREAD_ID"],model_environment_keys:["CODEX_MODEL"],session_environment_keys:["CODEX_THREAD_ID"],provenance_environment_keys:{effort:["CODEX_REASONING_EFFORT","CODEX_EFFORT"],role:["CODEX_SESSION_ROLE"]},provenance_resolvers:{version:"ai_agent_version"},provenance_unavailable_dimensions:["topic"],argv_markers:["codex"],client_names:["codex"]},{harness:"pi",environment_keys:["PI_AGENT","PI_CODING_AGENT"],model_environment_keys:["PI_MODEL"],session_environment_keys:["PI_SESSION_ID"],provenance_unavailable_dimensions:["effort","role","topic"],argv_markers:["pi"],client_names:["pi"]},{harness:"opencode",environment_keys:["OPENCODE","OPENCODE_SESSION_ID"],model_environment_keys:["OPENCODE_MODEL"],session_environment_keys:["OPENCODE_SESSION_ID"],provenance_unavailable_dimensions:["effort","role","topic"],argv_markers:["opencode"],client_names:["opencode"]},{harness:"cursor",environment_keys:["CURSOR_AGENT","CURSOR_TRACE_ID"],model_environment_keys:["CURSOR_MODEL"],session_environment_keys:["CURSOR_TRACE_ID"],provenance_unavailable_dimensions:["effort","role","topic"],argv_markers:["cursor"],client_names:["cursor"]},{harness:"aider",environment_keys:["AIDER","AIDER_MODEL"],model_environment_keys:["AIDER_MODEL"],session_environment_keys:["AIDER_SESSION_ID"],provenance_unavailable_dimensions:["effort","role","topic"],argv_markers:["aider"],client_names:["aider"]},{harness:"gemini-cli",environment_keys:["GEMINI_CLI","GEMINI_CLI_HOME"],model_environment_keys:["GEMINI_MODEL"],session_environment_keys:["GEMINI_CLI_SESSION_ID"],provenance_unavailable_dimensions:["effort","role","topic"],argv_markers:["gemini","gemini-cli"],client_names:["gemini","gemini-cli","gemini cli"]},{harness:"ci",environment_keys:["CI","GITHUB_ACTIONS","BUILDKITE","GITLAB_CI"],provenance_unavailable_dimensions:["model","effort","role","topic"],argv_markers:[],client_names:[]}],ve=new Map,hn=/^[a-z0-9]+(?:-[a-z0-9]+)*$/u;function $(e){let t=typeof e=="string"?e.trim():void 0;return t&&t.length>0?t:void 0}function ye(e){return[...new Set((e??[]).slice(0,64).map(t=>t.trim()).filter(t=>t.length>0).map(t=>t.slice(0,128)))]}function Et(e){let t=e.harness.trim().toLowerCase();if(!hn.test(t))throw new Error(`Invalid harness signal descriptor namespace: ${e.harness}`);return{harness:t,environment_keys:ye(e.environment_keys),model_environment_keys:ye(e.model_environment_keys),session_environment_keys:ye(e.session_environment_keys),provenance_environment_keys:Object.fromEntries(Object.entries(e.provenance_environment_keys??{}).slice(0,32).map(([n,r])=>[n.trim().toLowerCase().slice(0,64),ye(r)]).filter(([n])=>hn.test(n))),provenance_resolvers:Object.fromEntries(Object.entries(e.provenance_resolvers??{}).slice(0,32).map(([n,r])=>[n.trim().toLowerCase().slice(0,64),r]).filter(n=>typeof n[0]=="string"&&hn.test(n[0])&&(n[1]==="ai_agent_version"||n[1]==="claude_session_file"))),provenance_unavailable_dimensions:ye(e.provenance_unavailable_dimensions).map(n=>n.toLowerCase()),argv_markers:ye(e.argv_markers).map(n=>n.toLowerCase()),client_names:ye(e.client_names).map(n=>n.toLowerCase())}}var Qr=bs.map(Et);function ws(e,t){return JSON.stringify(e)===JSON.stringify(t)}function Kr(e,t){return e.toLowerCase().slice(0,512).split(/[/\\\s:=]+/u).filter(r=>r.length>0).includes(t)||e.trim().toLowerCase()===t}function Zr(e=[]){let t=[...Qr,...[...ve.values()].map(r=>r.descriptor),...wn.getStore()?.descriptors??[],...e.map(Et)],n=new Set;for(let r of t){if(n.has(r.harness))throw new Error(`Harness signal descriptor collision for "${r.harness}"`);n.add(r.harness)}return t}function eo(e,t){for(let n of t??[]){let r=$(e[n]);if(r)return r.slice(0,256)}}function Es(e,t){let n=t==="model"?["--model","--agent-model"]:[`--agent-${t}`],r=e.slice(0,8);for(let o=0;o<r.length;o+=1){let i=r[o].slice(0,512);if(n.includes(i))return $(r[o+1])?.slice(0,256);let s=n.find(a=>i.startsWith(`${a}=`));if(s)return $(i.slice(s.length+1))?.slice(0,256)}}function gn(e,t){return $(e?.[t])?.slice(0,256)}var ks=1048576;function Ss(e,t){if(e.length===0||e.length>262144)return;let n;try{n=JSON.parse(e)}catch{return}if(typeof n!="object"||n===null)return;let r=n,o=typeof r.message=="object"&&r.message!==null?r.message:void 0,i=t==="model"?o?.model:r.version;return $(i)?.slice(0,256)}function vs(e,t,n){let r=$(n.CLAUDE_CODE_SESSION_ID);if(!r||!/^[A-Za-z0-9_-]{1,128}$/u.test(r))return;let i=Xr.resolve(t.cwd??process.cwd()).replaceAll(/[^A-Za-z0-9-]/gu,"-"),s=Xr.join(t.home_dir??gs.homedir(),".claude","projects",i,`${r}.jsonl`);try{let a=bt.openSync(s,"r");try{let d=bt.fstatSync(a).size,l=Math.min(d,ks),m=Buffer.alloc(l);bt.readSync(a,m,0,l,Math.max(0,d-l));let f=m.toString("utf8").split(`
1
+ import{D as Cr,Da as ze,Fa as Ue,Ga as He,I as yt,Ia as zr,Ja as Ur,Ka as Hr,La as Wr,M as mn,Ma as qr,N as _n,Na as Br,O as pn,P as $e,Pa as ht,Q as Ar,W as Rr,X as Nr,a as br,h as _t,o as Tr,oa as Dr,p as pt,pa as Mr,q as Ee,qa as Lr,r as W,ra as Pr,s as Fe,sa as jr,ta as Fr,ua as $r,x as Or}from"./chunk-EAXXF2HW.js";import{C as ft,D as mt,E as fn,G as Ir,R as me,S as ne,T as xr,W as b,X as je,Y as I,Z as T,aa as G,ba as ke,ca as _e,da as E,n as dt,o as wr,p as Er,q as kr,r as Sr,v as lt,w as ut,x as vr}from"./chunk-7AZDTGPA.js";import{AsyncLocalStorage as ps}from"node:async_hooks";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="16109ee9-e684-5d25-a5f4-30a6c4f62bd5")}catch{}})();var yn=new ps,Vr=/^[A-Za-z0-9](?:[A-Za-z0-9._:-]{0,127})$/u;function gt(e,t){let n=typeof e=="string"?e.trim():"";return n.length>0?n.slice(0,t):void 0}function pe(e,t){if(e===void 0)return;let n=typeof e=="object"&&e!==null?e:{},r=gt(n.id,128),o=gt(n.parent_id,128);if(r===void 0||!Vr.test(r)||o!==void 0&&!Vr.test(o)){if(t)throw new Error("Agent episode ids must be 1-128 letters, digits, dots, underscores, colons, or hyphens.");return}let i=gt(n.label,256);return{id:r,...i===void 0?{}:{label:i},...o===void 0?{}:{parent_id:o}}}function Se(e){let t={};for(let[n,r]of Object.entries(e??{}).slice(0,32)){let o=n.trim().toLowerCase().slice(0,64),i=gt(r,256);/^[a-z][a-z0-9_-]{0,63}$/u.test(o)&&i!==void 0&&(t[o]=i)}return t}function ys(e,t,n){let r=yn.getStore(),o=Se({role:t.PM_AGENT_SESSION_ROLE,topic:t.PM_AGENT_SESSION_TOPIC}),i=pe(t.PM_AGENT_EPISODE_ID===void 0?void 0:{id:t.PM_AGENT_EPISODE_ID,label:t.PM_AGENT_EPISODE_LABEL,parent_id:t.PM_AGENT_EPISODE_PARENT_ID},!1),s={...Se(r?.provenance),...o,...Se(e?.provenance)},a=pe(e?.episode,!1)??pe(n,!1)??i??pe(r?.episode,!1);return Object.keys(s).length===0&&a===void 0?void 0:{...Object.keys(s).length===0?{}:{provenance:s},...a===void 0?{}:{episode:a}}}function Gr(e,t){return ys(e.session_context,t,e.client_info?.episode)??{}}function $u(e,t){let n=yn.getStore(),r=pe(e.episode,!0),o=pe(n?.episode,!1),i=r!==void 0&&r.parent_id===void 0&&o!==void 0?{...r,parent_id:o.id}:r,s={...Se(n?.provenance),...Se(e.provenance)};return yn.run({...Object.keys(s).length===0?{}:{provenance:s},...i===void 0?o===void 0?{}:{episode:o}:{episode:i}},t)}function zu(e){let t=Se(e.provenance),n=pe(e.episode,!0);return{...n===void 0?{}:{PM_AGENT_EPISODE_ID:n.id,...n.label===void 0?{}:{PM_AGENT_EPISODE_LABEL:n.label},...n.parent_id===void 0?{}:{PM_AGENT_EPISODE_PARENT_ID:n.parent_id}},...t.role===void 0?{}:{PM_AGENT_SESSION_ROLE:t.role},...t.topic===void 0?{}:{PM_AGENT_SESSION_TOPIC:t.topic}}}import{AsyncLocalStorage as bn}from"node:async_hooks";import{createHash as hs}from"node:crypto";import bt from"node:fs";import gs from"node:os";import Xr 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]="0139d8ef-d286-571f-89f8-7de2f8422f22")}catch{}})();var Jr=["model","effort","role","topic","version"],wt=new bn,Yr=new bn,wn=new bn,bs=[{harness:"claude-code",environment_keys:["CLAUDE_CODE","CLAUDECODE"],model_environment_keys:["ANTHROPIC_MODEL","CLAUDE_MODEL"],session_environment_keys:["CLAUDE_CODE_SESSION_ID"],provenance_environment_keys:{effort:["CLAUDE_EFFORT"],role:["CLAUDE_CODE_CHILD_SESSION"]},provenance_resolvers:{model:"claude_session_file",version:"claude_session_file"},provenance_unavailable_dimensions:["topic"],argv_markers:["claude","claude-code"],client_names:["claude","claude-code","claude code"]},{harness:"codex",environment_keys:["CODEX_HOME","CODEX_CI","CODEX_THREAD_ID"],model_environment_keys:["CODEX_MODEL"],session_environment_keys:["CODEX_THREAD_ID"],provenance_environment_keys:{effort:["CODEX_REASONING_EFFORT","CODEX_EFFORT"],role:["CODEX_SESSION_ROLE"]},provenance_resolvers:{version:"ai_agent_version"},provenance_unavailable_dimensions:["topic"],argv_markers:["codex"],client_names:["codex"]},{harness:"pi",environment_keys:["PI_AGENT","PI_CODING_AGENT"],model_environment_keys:["PI_MODEL"],session_environment_keys:["PI_SESSION_ID"],provenance_unavailable_dimensions:["effort","role","topic"],argv_markers:["pi"],client_names:["pi"]},{harness:"opencode",environment_keys:["OPENCODE","OPENCODE_SESSION_ID"],model_environment_keys:["OPENCODE_MODEL"],session_environment_keys:["OPENCODE_SESSION_ID"],provenance_unavailable_dimensions:["effort","role","topic"],argv_markers:["opencode"],client_names:["opencode"]},{harness:"cursor",environment_keys:["CURSOR_AGENT","CURSOR_TRACE_ID"],model_environment_keys:["CURSOR_MODEL"],session_environment_keys:["CURSOR_TRACE_ID"],provenance_unavailable_dimensions:["effort","role","topic"],argv_markers:["cursor"],client_names:["cursor"]},{harness:"aider",environment_keys:["AIDER","AIDER_MODEL"],model_environment_keys:["AIDER_MODEL"],session_environment_keys:["AIDER_SESSION_ID"],provenance_unavailable_dimensions:["effort","role","topic"],argv_markers:["aider"],client_names:["aider"]},{harness:"gemini-cli",environment_keys:["GEMINI_CLI","GEMINI_CLI_HOME"],model_environment_keys:["GEMINI_MODEL"],session_environment_keys:["GEMINI_CLI_SESSION_ID"],provenance_unavailable_dimensions:["effort","role","topic"],argv_markers:["gemini","gemini-cli"],client_names:["gemini","gemini-cli","gemini cli"]},{harness:"ci",environment_keys:["CI","GITHUB_ACTIONS","BUILDKITE","GITLAB_CI"],provenance_unavailable_dimensions:["model","effort","role","topic"],argv_markers:[],client_names:[]}],ve=new Map,hn=/^[a-z0-9]+(?:-[a-z0-9]+)*$/u;function $(e){let t=typeof e=="string"?e.trim():void 0;return t&&t.length>0?t:void 0}function ye(e){return[...new Set((e??[]).slice(0,64).map(t=>t.trim()).filter(t=>t.length>0).map(t=>t.slice(0,128)))]}function Et(e){let t=e.harness.trim().toLowerCase();if(!hn.test(t))throw new Error(`Invalid harness signal descriptor namespace: ${e.harness}`);return{harness:t,environment_keys:ye(e.environment_keys),model_environment_keys:ye(e.model_environment_keys),session_environment_keys:ye(e.session_environment_keys),provenance_environment_keys:Object.fromEntries(Object.entries(e.provenance_environment_keys??{}).slice(0,32).map(([n,r])=>[n.trim().toLowerCase().slice(0,64),ye(r)]).filter(([n])=>hn.test(n))),provenance_resolvers:Object.fromEntries(Object.entries(e.provenance_resolvers??{}).slice(0,32).map(([n,r])=>[n.trim().toLowerCase().slice(0,64),r]).filter(n=>typeof n[0]=="string"&&hn.test(n[0])&&(n[1]==="ai_agent_version"||n[1]==="claude_session_file"))),provenance_unavailable_dimensions:ye(e.provenance_unavailable_dimensions).map(n=>n.toLowerCase()),argv_markers:ye(e.argv_markers).map(n=>n.toLowerCase()),client_names:ye(e.client_names).map(n=>n.toLowerCase())}}var Qr=bs.map(Et);function ws(e,t){return JSON.stringify(e)===JSON.stringify(t)}function Kr(e,t){return e.toLowerCase().slice(0,512).split(/[/\\\s:=]+/u).filter(r=>r.length>0).includes(t)||e.trim().toLowerCase()===t}function Zr(e=[]){let t=[...Qr,...[...ve.values()].map(r=>r.descriptor),...wn.getStore()?.descriptors??[],...e.map(Et)],n=new Set;for(let r of t){if(n.has(r.harness))throw new Error(`Harness signal descriptor collision for "${r.harness}"`);n.add(r.harness)}return t}function eo(e,t){for(let n of t??[]){let r=$(e[n]);if(r)return r.slice(0,256)}}function Es(e,t){let n=t==="model"?["--model","--agent-model"]:[`--agent-${t}`],r=e.slice(0,8);for(let o=0;o<r.length;o+=1){let i=r[o].slice(0,512);if(n.includes(i))return $(r[o+1])?.slice(0,256);let s=n.find(a=>i.startsWith(`${a}=`));if(s)return $(i.slice(s.length+1))?.slice(0,256)}}function gn(e,t){return $(e?.[t])?.slice(0,256)}var ks=1048576;function Ss(e,t){if(e.length===0||e.length>262144)return;let n;try{n=JSON.parse(e)}catch{return}if(typeof n!="object"||n===null)return;let r=n,o=typeof r.message=="object"&&r.message!==null?r.message:void 0,i=t==="model"?o?.model:r.version;return $(i)?.slice(0,256)}function vs(e,t,n){let r=$(n.CLAUDE_CODE_SESSION_ID);if(!r||!/^[A-Za-z0-9_-]{1,128}$/u.test(r))return;let i=Xr.resolve(t.cwd??process.cwd()).replaceAll(/[^A-Za-z0-9-]/gu,"-"),s=Xr.join(t.home_dir??gs.homedir(),".claude","projects",i,`${r}.jsonl`);try{let a=bt.openSync(s,"r");try{let d=bt.fstatSync(a).size,l=Math.min(d,ks),m=Buffer.alloc(l);bt.readSync(a,m,0,l,Math.max(0,d-l));let f=m.toString("utf8").split(`
2
2
  `).reverse();for(let h of f.slice(0,4096)){let _=Ss(h,e);if(_)return _}return}finally{bt.closeSync(a)}}catch{return}}function Is(e,t,n,r){let o=wn.getStore();if(!(t.probes_enabled!==!1&&o?.probesEnabled!==!1&&!["0","false","off"].includes($(n.PM_AGENT_PROBES)?.toLowerCase()??"")))return;let s=r?.provenance_resolvers[e];if(s==="claude_session_file")return vs(e,t,n);if(s==="ai_agent_version"){let a=$(n.AI_AGENT);return a?/(?:^|[@/\s])v?(\d+\.\d+(?:\.\d+)?(?:[-+][A-Za-z0-9.-]+)?)$/u.exec(a)?.[1]?.slice(0,256):void 0}}function to(e){return e||(Yr.getStore()??{env:process.env,argv:process.argv})}function xs(e,t,n,r){let o=e.environment_keys.some(a=>$(t[a])!==void 0),i=e.argv_markers.some(a=>n.some(d=>{let l=d.replaceAll("\\","/");return Kr(l.slice(l.lastIndexOf("/")+1),a)})),s=e.client_names.some(a=>r===a||Kr(r,a));return o||i||s}function Ts(e,t,n,r,o){let i=`PM_AGENT_${e.toUpperCase().replaceAll("-","_")}`,s=new Set([...Jr,...Object.keys(r?.provenance_environment_keys??{})]),a,d;s.has(e)&&(a=$(n[i])?.slice(0,256),d=Es(t.argv??[],e));let l={...r?.provenance_environment_keys,model:r?.model_environment_keys},m={...t.client_info?.provenance,model:t.client_info?.model},f=[a,gn(o?.provenance,e),eo(n,l[e]),gn(m,e),gn(t.provenance,e),d,Is(e,t,n,r)];return["override","session","environment","mcp_client","host","argv","probe"].map((S,v)=>({value:f[v],source:S})).find(S=>S.value!==void 0)}function Os(e,t,n,r){let o=Object.keys(n?.provenance_environment_keys??{}),i=new Set([...Jr,...o,...Object.keys(n?.provenance_resolvers??{}),...Object.keys(e.provenance??{}),...Object.keys(e.client_info?.provenance??{}),...Object.keys(r?.provenance??{})]),s={};for(let a of i){let d=Ts(a,e,t,n,r);d?s[a]=d:n&&(a!=="version"||n.provenance_unavailable_dimensions.includes(a))&&(s[a]=null)}return s}function Xu(e){let t=e.map(Et),n=new Map(Qr.map(i=>[i.harness,i])),r=new Set;for(let i of t){if(r.has(i.harness)||n.has(i.harness))throw new Error(`Harness signal descriptor collision for "${i.harness}"`);let s=ve.get(i.harness);if(s&&!ws(s.descriptor,i))throw new Error(`Harness signal descriptor collision for "${i.harness}"`);r.add(i.harness)}for(let i of t){let s=ve.get(i.harness);ve.set(i.harness,{descriptor:i,registrations:(s?.registrations??0)+1})}let o=!0;return()=>{if(o){o=!1;for(let i of t){let s=ve.get(i.harness);!s||s.registrations<=1?ve.delete(i.harness):s.registrations-=1}}}}function Ku(e,t){return Yr.run(e,t)}function Ju(e,t,n={}){let r=e.map(Et);return Zr(r),wn.run({descriptors:r,probesEnabled:n.probesEnabled!==!1},t)}function no(e){let t=to(e),n=t.env??{},r=Zr(t.descriptors),o=[...(t.argv??[]).slice(0,3),...t.process_labels??[]].slice(0,64).map(_=>_.slice(0,512)),i=t.client_info?.name.trim().toLowerCase()??"",s=r.find(_=>xs(_,n,o,i)),a=Gr(t,n),d=Os(t,n,s,a),l=d.model,m=[eo(n,s?.session_environment_keys),$(t.client_info?.session)?.slice(0,256)].find(_=>_!==void 0),f=s?.harness&&m?hs("sha256").update(`pm-agent-instance:v1\0${s.harness}\0${m}`).digest("hex").slice(0,24):void 0,h=[["harness",s?.harness],["model",l?.value],["model_source",l?.source],["session",m],["instance",f],["provenance",Object.keys(d).length>0?d:void 0],["episode",a.episode]];return Object.fromEntries(h.filter(_=>_[1]!==void 0))}function Yu(){return process.env.PM_AUTHOR}function Qu(e){e===void 0?delete process.env.PM_AUTHOR:process.env.PM_AUTHOR=e}function Zu(e){return no(e).harness}function Cs(e,t,n){let r=to(n),o=no(r);if(e!==void 0){let s=$(e);return s?{author:s,source:"asserted",...o}:{author:"unknown",source:"unknown",...o}}if(r.env?.PM_AUTHOR!==void 0){let s=$(r.env.PM_AUTHOR);return s?{author:s,source:"asserted",...o}:{author:"unknown",source:"unknown",...o}}let i=$(t);return i?{author:i,source:"configured",...o}:o.harness?{author:`harness:${o.harness}`,source:"detected",...o}:{author:"unknown",source:"unknown",...o}}function ro(e){let t=wt.getStore();return t?.author===e?t.source:e.startsWith("harness:")?"detected":e==="unknown"?"unknown":"asserted"}function oo(e){let t=wt.getStore();return t?.author!==e?e.startsWith("harness:")?{harness:e.slice(8)}:{}:{...t.harness?{harness:t.harness}:{},...t.model?{model:t.model}:{},...t.model_source?{model_source:t.model_source}:{},...t.session?{session:t.session}:{},...t.instance?{instance:t.instance}:{},...t.provenance?{provenance:t.provenance}:{},...t.episode?{episode:t.episode}:{}}}function io(e){let t=wt.getStore();return t?.author===e&&t.source==="detected"&&t.instance?`${e}#${t.instance}`:e}function so(e,t){let n=Cs(e,t);return wt.enterWith(n),n.author}import As from"node:crypto";import{AsyncLocalStorage as Rs}from"node:async_hooks";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="cc84ae55-6dc4-57d4-b7de-c43ae1fb4603")}catch{}})();var co=new Rs,ao=1024;function lo(){let e=co.getStore();if(e===void 0)return;let t=new Date(Date.parse(e.clock)+e.clockReads*e.tickMs).toISOString();return e.clockReads+=1,t}function uo(e){let t=co.getStore();if(t===void 0)return;if(!Number.isSafeInteger(e)||e<0||e>ao)throw new Error(`Reproducible token length must be an integer between 0 and ${ao}`);let n="";for(;n.length<e;){let r=As.createHash("sha256").update(`${t.seed}\0${t.tokenReads}`).digest();t.tokenReads+=1;for(let o of r)if(n+=(o%36).toString(36),n.length===e)break}return n}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="6be1497f-a0d5-518b-bf6a-e549b18fad8a")}catch{}})();var Ns=/^([+-]?)(\d+)([hdwm])$/i,Ds=/^[+-]?\d+[hdwm](?:[+-]\d+[hdwm])+$/i,Ms=/^(\d{4})(\d{2})(\d{2})$/,Ls=/^(\d{4})(\d{2})(\d{2})(?:[T\s]?)(\d{2})(\d{2})(\d{2})?([.,]\d{1,3})?(Z|[+-]\d{2}:?\d{2})?$/i,Ps=/^(\d{4}-\d{2}-\d{2})[T\s](\d{2})-(\d{2})(?:-(\d{2}))?([.,]\d{1,3})?(Z|[+-]\d{2}:?\d{2})?$/i,js=/^(\d{4}-\d{2}-\d{2})[T\s](\d{2})(\d{2})(\d{2})?([.,]\d{1,3})?(Z|[+-]\d{2}:?\d{2})?$/i;function he(){return lo()??new Date().toISOString()}function re(e){return Number.isFinite(Date.parse(e))}var Fs=1e4,kt=new Map;function fo(e){let t=kt.get(e);if(t!==void 0)return t;let n=Date.parse(e);return kt.size>=Fs&&ht(kt),kt.set(e,n),n}function j(e,t){let n=fo(e),r=fo(t);return Number.isFinite(n)&&Number.isFinite(r)&&n!==r?n-r:e.localeCompare(t)}function df(e,t){return!(t.deadlineBefore&&(!e.deadline||j(e.deadline,t.deadlineBefore)>0)||t.deadlineAfter&&(!e.deadline||j(e.deadline,t.deadlineAfter)<0)||t.updatedAfter&&j(e.updated_at,t.updatedAfter)<0||t.updatedBefore&&j(e.updated_at,t.updatedBefore)>0||t.createdAfter&&j(e.created_at,t.createdAfter)<0||t.createdBefore&&j(e.created_at,t.createdBefore)>0)}function En(e){return e?`.${e.slice(1).padEnd(3,"0").slice(0,3)}`:""}function kn(e){if(!e)return"";if(e.toUpperCase()==="Z")return"Z";let t=/^([+-]\d{2})(\d{2})$/.exec(e);return t?`${t[1]}:${t[2]}`:e}function $s(e,t,n){n&&n!==t&&(e.includes(n)||e.push(n))}function zs(e){let t=[],n=l=>$s(t,e,l),r=Ms.exec(e);if(r){let[,l,m,f]=r;n(`${l}-${m}-${f}`)}let o=Ls.exec(e);if(o){let[,l,m,f,h,_,S,v,w]=o,R=S?`:${S}`:"";n(`${l}-${m}-${f}T${h}:${_}${R}${En(v)}${kn(w)}`)}let i=Ps.exec(e);if(i){let[,l,m,f,h,_,S]=i,v=h?`:${h}`:"";n(`${l}T${m}:${f}${v}${En(_)}${kn(S)}`)}let s=js.exec(e);if(s){let[,l,m,f,h,_,S]=s,v=h?`:${h}`:"";n(`${l}T${m}:${f}${v}${En(_)}${kn(S)}`)}let a=10,d=e.slice(0,a);if(Hs(d)){let l=a;for(;l<e.length&&Ws(e[l]);)l+=1;l<e.length&&n(`${d}T${e.slice(l)}`)}return t}function Us(e){let t=Date.parse(e);if(Number.isFinite(t))return t;for(let n of zs(e)){let r=Date.parse(n);if(Number.isFinite(r))return r}return Number.NaN}function Hs(e){if(e.length!==10)return!1;for(let t=0;t<e.length;t+=1){let n=e[t];if(t===4||t===7){if(n!=="-")return!1;continue}let r=n.charCodeAt(0);if(r<48||r>57)return!1}return!0}function Ws(e){return e?e===" "||e===" "||e===`
3
3
  `||e==="\r"||e==="\f"||e==="\v":!1}function mo(e,t){return new Date(Date.UTC(e,t+1,0)).getUTCDate()}var qs=["January","February","March","April","May","June","July","August","September","October","November","December"],Bs=/^(\d{4})-(\d{2})-(\d{2})/,Vs=/^(\d{4})(\d{2})(\d{2})(?:[T ]?\d{2}|$)/;function Gs(e,t,n){let r=Bs.exec(t)??Vs.exec(t);if(!r)return;let o=Number.parseInt(r[1],10),i=Number.parseInt(r[2],10),s=Number.parseInt(r[3],10),a=n?.trim()||"deadline";if(i<1||i>12)throw new T(`Invalid ${a} value "${e}". Month "${r[2]}" is out of range \u2014 use a month between 01 and 12.`,I.USAGE);let d=mo(o,i-1);if(s<1||s>d)throw new T(`Invalid ${a} value "${e}". ${qs[i-1]} ${o} has ${d} days, so day "${r[3]}" does not exist. Use a real YYYY-MM-DD calendar date.`,I.USAGE)}function Xs(e,t){let n=new Date(e.getTime()),r=n.getUTCDate(),o=n.getUTCMonth()+t,i=n.getUTCFullYear()+Math.floor(o/12),s=(o%12+12)%12,a=Math.min(r,mo(i,s));return n.setUTCFullYear(i,s,a),n}function lf(e,t=new Date,n="deadline"){let r=e.trim();if(r.toLowerCase()==="now")return t.toISOString();let o=Ns.exec(r);if(o){let s=o[1]==="-"?-1:1,a=Number.parseInt(o[2],10)*s,d=o[3].toLowerCase();if(d==="m")return Xs(t,a).toISOString();let l=d==="h"?3600*1e3:d==="d"?1440*60*1e3:10080*60*1e3;return new Date(t.getTime()+a*l).toISOString()}Gs(e,r,n);let i=Us(r);if(!Number.isFinite(i)){let s=n.trim().length>0?n.trim():"deadline",a=Ds.test(r)?"Compound relative expressions like +3d+1h are not supported; use a single relative token (for example +3d) or an ISO/date string.":'Use ISO/date string input, "now", or relative +6h/-6h/+1d/-1d/+2w/-2w/+6m/-6m.';throw new T(`Invalid ${s} value "${e}". ${a}`,I.USAGE)}return new Date(i).toISOString()}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="77d3ebfa-789a-54cf-9d49-dbebab8d32ea")}catch{}})();var Ie=1,_o=1;function ff(e){let t=e.pm_format_version;return typeof t=="number"&&Number.isInteger(t)&&t>=Ie?t:Ie}function po(e){if(!(typeof e!="number"||!Number.isInteger(e)||e<=Ie))return e}function Ks(e,t=_o){return e<t?"outdated":e>t?"ahead":"current"}function mf(e,t=_o){let n=[],r=[];for(let o of e){let i=Ks(o.version,t);i==="outdated"?n.push(o.ref):i==="ahead"&&r.push(o.ref)}return{outdated:n.sort((o,i)=>o.localeCompare(i)),ahead:r.sort((o,i)=>o.localeCompare(i))}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="d7501aa2-d3d9-5fbe-a1c0-d4bc145f5563")}catch{}})();var Js={"in-progress":"in_progress",cancelled:"canceled"};function St(e,t){if(t){let o=Wr(e,t);if(o)return o}if(typeof e!="string")return;let n=e.trim().toLowerCase();if(!n)return;let r=Js[n]??n;if(dt.includes(r))return r}function Ys(e,t){return St(e,t)??e}function hf(e,t){return t.terminal_statuses.has(Ys(e,t))}import{encode as oa}from"@toon-format/toon";import{isDeepStrictEqual as wo}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]="9bef4fe4-11a8-51ae-a42a-a93cc9c57384")}catch{}})();function Sn(e){let t=e.trim().replaceAll(/[^A-Za-z0-9]+/g," ").split(/\s+/).filter(o=>o.length>0).map(o=>o.toLowerCase());if(t.length===0)return e;let[n,...r]=t;return`${n}${r.map(o=>`${o.slice(0,1).toUpperCase()}${o.slice(1)}`).join("")}`}function Qs(e){return[...new Set([Br(e),Sn(e.key),Sn(e.cli_flag),...e.cli_aliases.map(t=>Sn(t))])]}function go(e,t){for(let n of Qs(t)){if(!Object.hasOwn(e,n))continue;let r=e[n];if(r!==void 0)return r}}function bo(e){return Array.isArray(e)?e.flatMap(t=>bo(t)).map(t=>t.trim()).filter(t=>t.length>0):typeof e=="string"?e.split(/[,\n|]/).map(t=>t.trim()).filter(t=>t.length>0):e==null?[]:[String(e).trim()].filter(t=>t.length>0)}function yo(e,t){if(typeof e=="boolean")return e;if(typeof e=="number"){if(e===1)return!0;if(e===0)return!1}if(typeof e=="string"){let n=e.trim().toLowerCase();if(n==="true"||n==="1"||n==="yes")return!0;if(n==="false"||n==="0"||n==="no")return!1}throw new T(`${t} must be one of true|false|1|0|yes|no`,I.USAGE)}function ho(e,t){if(typeof e=="number"&&Number.isFinite(e))return e;let n=typeof e=="string"?e.trim():String(e),r=Number(n);if(!Number.isFinite(r))throw new T(`${t} must be a number`,I.USAGE);return r}function Zs(e,t,n){let r=typeof e=="string"?(()=>{try{return JSON.parse(e)}catch{return}})():e;if(n==="array"&&Array.isArray(r)||n==="object"&&typeof r=="object"&&r!==null&&!Array.isArray(r))return r;throw new T(`${t} must be valid JSON ${n}`,I.USAGE)}function We(e,t,n){let r=n??`--${e.cli_flag}`;if(e.type==="array"||e.type==="object"){let i=Array.isArray(t)?t[t.length-1]:t;return i===void 0?void 0:Zs(i,r,e.type)}if(e.repeatable||e.type==="string_array"){let i=bo(t);return e.type==="number"?i.map(s=>ho(s,r)):e.type==="boolean"?i.map(s=>yo(s,r)):i}let o=Array.isArray(t)?t[t.length-1]:t;if(o!==void 0)return e.type==="number"?ho(o,r):e.type==="boolean"?yo(o,r):typeof o=="string"?o:String(o)}function ea(e,t){return!e.required&&!e.required_on_create?!1:e.required_types.length===0?!0:t?e.required_types.map(n=>n.toLowerCase()).includes(t.trim().toLowerCase()):!1}function kf(e,t,n){let r={},o=[];for(let i of t.command_to_fields.get("create")??[]){let s=go(e,i);if(s===void 0){ea(i,n)&&o.push(`--${i.cli_flag}`);continue}r[i.metadata_key]=We(i,s)}return{values:r,missing_required_flags:[...new Set(o)].sort((i,s)=>i.localeCompare(s))}}function Sf(e,t,n=["update"]){let r={},o=(n??["update"]).flatMap(s=>t.command_to_fields.get(s)??[]),i=new Set;for(let s of o){let a=go(e,s);a!==void 0&&(i.has(s.metadata_key)||(i.add(s.metadata_key),r[s.metadata_key]=We(s,a)))}return r}import{decode as ta}from"@toon-format/toon";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="2840e12e-7444-5d36-9f54-5a56267bbb75")}catch{}})();function vn(e){return{value:ta(e),usedScalarBracketEscape:!1}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="fedb7b50-6946-589d-b240-9f074e09e467")}catch{}})();var na=/^\s*(<<<<<<<|=======|>>>>>>>)(?:\s.*)?$/;function ra(e){if(e.length===0)return[];let t=e.split(/\r?\n/),n=[];for(let r=0;r<t.length;r+=1){let o=t[r]??"",i=o.match(na);if(!i)continue;let s=i[1];n.push({line:r+1,marker:s,text:o})}return n}function vt(e){return ra(e)[0]}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="a4c22692-fe27-5178-bba2-190ac3f80628")}catch{}})();var ia=new Set(["schema","tracker","auto"]),sa=new Set(["passed","failed","stopped","canceled"]),aa=new Set(Ir);function Oe(e){return e.replaceAll("\\","/")}function Rn(e){for(let t of e)if(t!==0)return t;return 0}function xt(e){for(let[t,n]of Object.entries(e))n===void 0&&delete e[t]}var vo=["id","title","description","created_at","updated_at"],ca=new Set(ne);function Io(e){if(e?.schema)return{statusRegistry:Hr(e.schema),fieldRegistry:qr(e.schema),unknownFieldPolicy:e.schema.unknown_field_policy??"allow",extensionFieldNames:new Set(e.extensionFieldNames??[]),onWarning:e.onWarning}}function da(e,t){return e.required?e.required_types.length===0?!0:e.required_types.map(n=>n.toLowerCase()).includes(t.trim().toLowerCase()):!1}function ie(e){let t=e.match(/^([a-z_][\w.]*)\s/u)?.[1];throw new T(`Invalid item metadata: ${e}`,I.GENERIC_FAILURE,{code:"item_document_invalid",reason:e.includes("required")?"missing_required_field":"schema_validation_error",...t?{field:t}:{},required:"Provide an item document whose metadata satisfies the active runtime schema.",why:e})}function Ve(e,t){throw new T(t,I.GENERIC_FAILURE,{code:"item_document_invalid",reason:"syntax_error",format:e,required:`Provide a syntactically valid ${e==="toon"?"TOON":"JSON Markdown"} item document.`,why:"The document could not be decoded far enough to validate item metadata."})}function xo(e){let t=new Set(ca);for(let n of e.fieldRegistry?.definitions??[])t.add(n.metadata_key);for(let n of e.extensionFieldNames)t.add(n);return t}function g(e,t){e||ie(t)}function Ge(e,t){return(typeof e!="object"||e===null||Array.isArray(e))&&ie(t),e}function In(e,t){let n=e[t];g(typeof n=="string",`${t} must be a string`),g(re(n),`${t} must be a valid ISO timestamp`)}function Eo(e,t,n){let r=e[t];r!==void 0&&g(typeof r=="number"&&Number.isInteger(r)&&r>=1,`${n} must be an integer >= 1`)}function On(e,t,n){let r=e[t];r!==void 0&&(g(typeof r=="string",`${n} must be a string`),g(re(r),`${n} must be a valid ISO timestamp`))}function la(e){if(e!==void 0){g(Array.isArray(e),"event.recurrence.by_weekday must be an array");for(let t of e){g(typeof t=="string","event.recurrence.by_weekday entries must be strings");let n=t.trim().toLowerCase();g(mt.includes(n),`event.recurrence.by_weekday entries must be one of: ${mt.join(", ")}`)}}}function ua(e){if(e!==void 0){g(Array.isArray(e),"event.recurrence.by_month_day must be an array");for(let t of e)g(typeof t=="number"&&Number.isInteger(t)&&t>=1&&t<=31,"event.recurrence.by_month_day entries must be integers 1..31")}}function fa(e){if(e!==void 0){g(Array.isArray(e),"event.recurrence.exdates must be an array");for(let t of e)g(typeof t=="string","event.recurrence.exdates entries must be strings"),g(re(t),"event.recurrence.exdates entries must be valid ISO timestamps")}}function ma(e){let t=Ge(e,"event.recurrence must be an object");g(typeof t.freq=="string","event.recurrence.freq must be a string");let n=t.freq.trim().toLowerCase();g(ft.includes(n),`event.recurrence.freq must be one of: ${ft.join(", ")}`),Eo(t,"interval","event.recurrence.interval"),Eo(t,"count","event.recurrence.count"),On(t,"until","event.recurrence.until"),la(t.by_weekday),ua(t.by_month_day),fa(t.exdates)}function _a(e){for(let r of vo)g(typeof e[r]=="string",`${r} is required and must be a string`);let t=e.type;g(typeof t=="string"&&t.trim().length>0,"type must be a non-empty string");let n=e.pm_format_version;return n!==void 0&&g(typeof n=="number"&&Number.isInteger(n)&&n>=Ie,`pm_format_version must be an integer >= ${Ie}`),t}function pa(e,t){let n=e.status;g(typeof n=="string"&&n.trim().length>0,"status must be a non-empty string");let r=t?.statusRegistry,o=St(n,r),i=r?r.definitions.map(s=>s.id):[...dt];g(o!==void 0,`status must be one of: ${i.join(", ")}`)}function ya(e){let t=e.priority;g(typeof t=="number"&&Number.isInteger(t)&&[0,1,2,3,4].includes(t),"priority must be an integer 0..4");let n=e.tags;g(Array.isArray(n),"tags must be an array");for(let r of n)g(typeof r=="string","tags entries must be strings")}function ha(e){let t=e.confidence;if(t!==void 0){if(typeof t=="number"){g(Number.isInteger(t)&&t>=0&&t<=100,"confidence number value must be an integer 0..100");return}if(typeof t=="string"){let n=t.trim().toLowerCase(),r=n==="med"||ut.includes(n);g(r,`confidence string value must be one of: ${[...ut,"med"].join(", ")}`);return}g(!1,"confidence must be a number or string")}}function ga(e){let t=e.severity;if(t===void 0)return;typeof t!="string"&&ie("severity must be a string");let n=t.trim().toLowerCase(),r=n==="med"||lt.includes(n);g(r,`severity value must be one of: ${[...lt,"med"].join(", ")}`)}function ba(e){e.regression!==void 0&&typeof e.regression!="boolean"&&ie("regression must be a boolean")}function wa(e){let t=e.reminders;if(t!==void 0){g(Array.isArray(t),"reminders must be an array");for(let n of t){let r=Ge(n,"reminders entries must be objects");g(typeof r.at=="string","reminder.at must be a string"),g(re(r.at),"reminder.at must be a valid ISO timestamp"),g(typeof r.text=="string","reminder.text must be a string"),g(r.text.trim().length>0,"reminder.text must not be empty")}}}function Ea(e){for(let t of["title","description","location","timezone"])e[t]!==void 0&&(g(typeof e[t]=="string",`event.${t} must be a string`),g(e[t].trim().length>0,`event.${t} must not be empty`))}function ka(e){e.recurrence!==void 0&&(ma(e.recurrence),e.recurrence.until!==void 0&&g(j(e.recurrence.until,e.start_at)>=0,"event.recurrence.until must be at or after event.start_at"))}function Sa(e){let t=Ge(e,"events entries must be objects");g(typeof t.start_at=="string","event.start_at must be a string"),g(re(t.start_at),"event.start_at must be a valid ISO timestamp"),t.end_at!==void 0&&(g(typeof t.end_at=="string","event.end_at must be a string"),g(re(t.end_at),"event.end_at must be a valid ISO timestamp"),g(j(t.end_at,t.start_at)>0,"event.end_at must be after event.start_at")),Ea(t),t.all_day!==void 0&&g(typeof t.all_day=="boolean","event.all_day must be a boolean"),ka(t)}function va(e){let t=e.events;if(t!==void 0){g(Array.isArray(t),"events must be an array");for(let n of t)Sa(n)}}function Ia(e){for(let t of["source_type","source_owner","design","external_ref"]){let n=e[t];n!==void 0&&g(typeof n=="string",`${t} must be a string`)}}function xa(e){let t=e.type_options;if(t===void 0)return;let n=Ge(t,"type_options must be an object");for(let[r,o]of Object.entries(n))g(r.trim().length>0,"type_options keys must be non-empty"),g(typeof o=="string","type_options values must be strings"),g(o.trim().length>0,"type_options values must be non-empty strings")}function Ta(e,t,n){if(n?.fieldRegistry)for(let r of n.fieldRegistry.definitions){let o=e[r.metadata_key];if(o===void 0){da(r,t)&&ie(`missing required schema field: ${r.metadata_key}`);continue}try{e[r.metadata_key]=We(r,o,`metadata field "${r.metadata_key}"`)}catch(i){ie(String(i?.message).replace(/^Invalid\s+/u,""))}}}function Oa(e,t){if(!t||t.unknownFieldPolicy==="allow")return;let n=xo(t),r=Object.keys(e).filter(o=>!n.has(o)).sort((o,i)=>o.localeCompare(i));r.length!==0&&(t.unknownFieldPolicy==="reject"?ie(`unknown schema fields are not allowed: ${r.join(", ")}`):t.onWarning?.(`item_unknown_schema_fields:${r.join(",")}`))}function Cn(e,t){let n=Ge(e,"item metadata must be an object"),r=_a(n);pa(n,t),ya(n),ha(n),ga(n),ba(n),In(n,"created_at"),In(n,"updated_at"),n.deadline!==void 0&&In(n,"deadline"),wa(n),va(n),On(n,"closed_at","closed_at"),On(n,"completed_at","completed_at"),Ia(n),xa(n),Ta(n,r,t),Oa(n,t)}function Ca(e){if(!(!e||e.length===0))return[...e].map(t=>({id:t.id.trim().toLowerCase(),kind:t.kind,created_at:t.created_at,author:t.author?.trim()||void 0,source_kind:t.source_kind?.trim()||void 0,author_source:t.author_source})).sort((t,n)=>{let r=j(t.created_at,n.created_at);if(r!==0)return r;let o=t.id.localeCompare(n.id);if(o!==0)return o;let i=t.kind.localeCompare(n.kind);return i!==0?i:(t.source_kind??"").localeCompare(n.source_kind??"")})}function xn(e){if(!(!e||e.length===0))return[...e].sort((t,n)=>{let r=j(t.created_at,n.created_at);if(r!==0)return r;let o=t.text.localeCompare(n.text);return o!==0?o:t.author.localeCompare(n.author)})}function Aa(e){if(!e||e.length===0)return;let t=[...e].map(n=>({at:n.at,text:n.text.trim()})).filter(n=>n.text.length>0).sort((n,r)=>{let o=j(n.at,r.at);return o!==0?o:n.text.localeCompare(r.text)});return t.length===0?void 0:t}function Ra(e){if(!e)return;let t=e.freq.trim().toLowerCase();if(!ft.includes(t))return;let n=Array.from(new Set((e.by_weekday??[]).map(s=>s.trim().toLowerCase()).filter(s=>mt.includes(s)))).sort((s,a)=>fn(s)-fn(a)),r=Array.from(new Set((e.by_month_day??[]).filter(s=>Number.isInteger(s)&&s>=1&&s<=31).map(s=>s))).sort((s,a)=>s-a),o=Array.from(new Set((e.exdates??[]).map(s=>s.trim()).filter(s=>re(s)))).sort((s,a)=>j(s,a)),i={freq:t,interval:e.interval!==void 0&&e.interval>1?e.interval:void 0,count:e.count,until:e.until?.trim()||void 0,by_weekday:n.length>0?n:void 0,by_month_day:r.length>0?r:void 0,exdates:o.length>0?o:void 0};for(let[s,a]of Object.entries(i))a===void 0&&delete i[s];return i}function Na(e){return!Array.isArray(e)||e.length===0?void 0:[...e].map(Da).sort(Ma)}function Da(e){let t={start_at:e.start_at,end_at:e.end_at||void 0,title:e.title?.trim()||void 0,description:e.description?.trim()||void 0,location:e.location?.trim()||void 0,all_day:e.all_day,timezone:e.timezone?.trim()||void 0,recurrence:Ra(e.recurrence)};return xt(t),t}function Ma(e,t){return Rn([j(e.start_at,t.start_at),(e.end_at??"").localeCompare(t.end_at??""),(e.title??"").localeCompare(t.title??""),+!!e.all_day-+!!t.all_day,(e.timezone??"").localeCompare(t.timezone??""),(e.location??"").localeCompare(t.location??""),(e.description??"").localeCompare(t.description??""),JSON.stringify(e.recurrence??{}).localeCompare(JSON.stringify(t.recurrence??{}))])}function La(e){if(!(!e||e.length===0))return e.map(t=>({path:Oe(t.path),scope:t.scope,note:t.note?.trim()||void 0}))}function Pa(e){if(!e||e.length===0)return;let t=e.map($a).filter(n=>n.run_id.length>0&&n.started_at.length>0&&n.finished_at.length>0&&n.recorded_at.length>0).sort((n,r)=>Rn([j(n.recorded_at,r.recorded_at),n.run_id.localeCompare(r.run_id),n.kind.localeCompare(r.kind)]));return t.length>0?t:void 0}function xe(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?Math.floor(e):void 0}function ja(e){return typeof e=="number"&&Number.isFinite(e)&&e>=1?Math.floor(e):void 0}function Tn(e){return typeof e=="string"?e:""}function Fa(e){if(!Array.isArray(e))return;let t=e.filter(r=>r!==null&&typeof r=="object"&&typeof r.name=="string"&&r.name.trim().length>0&&typeof r.value=="number"&&Number.isFinite(r.value)&&typeof r.recorded_at=="string"&&r.recorded_at.trim().length>0).map(r=>({name:r.name.trim(),value:r.value,unit:typeof r.unit=="string"&&r.unit.trim()||void 0,threshold:typeof r.threshold=="number"&&Number.isFinite(r.threshold)?r.threshold:void 0,recorded_at:r.recorded_at.trim()})),n=[...new Map(t.map(r=>[r.name,r])).values()].sort((r,o)=>r.name.localeCompare(o.name)).slice(0,32);return n.length>0?n:void 0}function $a(e){let t=typeof e.run_id=="string"?e.run_id.trim():"",n=e.kind==="test"||e.kind==="test-all"?e.kind:"test",r=sa.has(e.status)?e.status:"failed",o={run_id:t,kind:n,status:r,started_at:Tn(e.started_at),finished_at:Tn(e.finished_at),recorded_at:Tn(e.recorded_at),attempt:ja(e.attempt),resumed_from:e.resumed_from?.trim()||void 0,passed:xe(e.passed)??0,failed:xe(e.failed)??0,skipped:xe(e.skipped)??0,items:xe(e.items),linked_tests:xe(e.linked_tests),fail_on_skipped_triggered:e.fail_on_skipped_triggered===!0?!0:void 0,measurements:Fa(e.measurements)};return xt(o),o}function za(e){if(!(!Array.isArray(e)||e.length===0))return[...e].map(Wa).sort(qa)}function qe(e){if(!Array.isArray(e))return;let t=[...new Set(e.filter(n=>typeof n=="string").map(n=>n.trim()).filter(n=>n.length>0))].sort((n,r)=>n.localeCompare(r));return t.length>0?t:void 0}function To(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function Nn(e){return e==="__proto__"||e==="constructor"||e==="prototype"}function ko(e){if(!To(e))return;let t=Object.entries(e).map(([n,r])=>[n.trim(),String(r).trim()]).filter(([n,r])=>n.length>0&&!Nn(n)&&r.length>0).sort(([n],[r])=>n.localeCompare(r));return t.length>0?Object.fromEntries(t):void 0}function Ua(e){if(!To(e))return;let t=Object.entries(e).map(([n,r])=>[n.trim(),Number(r)]).filter(([n,r])=>n.length>0&&!Nn(n)&&Number.isFinite(r)).sort(([n],[r])=>n.localeCompare(r));return t.length>0?Object.fromEntries(t):void 0}function Ha(e){let t=e?.trim().toLowerCase();if(!(!t||!ia.has(t)))return t}function Wa(e){let t={command:e.command?.trim()||void 0,path:e.path?Oe(e.path):void 0,scope:e.scope,timeout_seconds:typeof e.timeout_seconds=="number"&&Number.isFinite(e.timeout_seconds)&&e.timeout_seconds>0?e.timeout_seconds:void 0,pm_context_mode:Ha(e.pm_context_mode),env_set:ko(e.env_set),env_clear:qe(e.env_clear),shared_host_safe:e.shared_host_safe===!0?!0:void 0,assert_stdout_contains:qe(e.assert_stdout_contains),assert_stdout_regex:qe(e.assert_stdout_regex),assert_stderr_contains:qe(e.assert_stderr_contains),assert_stderr_regex:qe(e.assert_stderr_regex),assert_stdout_min_lines:xe(e.assert_stdout_min_lines),assert_json_field_equals:ko(e.assert_json_field_equals),assert_json_field_gte:Ua(e.assert_json_field_gte),note:e.note?.trim()||void 0};return xt(t),t}function qa(e,t){return Rn([e.scope.localeCompare(t.scope),It(e.path,t.path),It(e.command,t.command),So(e.timeout_seconds,t.timeout_seconds),It(e.pm_context_mode,t.pm_context_mode),+!!e.shared_host_safe-+!!t.shared_host_safe,oe(e.env_clear,t.env_clear,[]),oe(e.env_set,t.env_set,{}),oe(e.assert_stdout_contains,t.assert_stdout_contains,[]),oe(e.assert_stdout_regex,t.assert_stdout_regex,[]),oe(e.assert_stderr_contains,t.assert_stderr_contains,[]),oe(e.assert_stderr_regex,t.assert_stderr_regex,[]),So(e.assert_stdout_min_lines,t.assert_stdout_min_lines),oe(e.assert_json_field_equals,t.assert_json_field_equals,{}),oe(e.assert_json_field_gte,t.assert_json_field_gte,{}),It(e.note,t.note)])}function It(e,t){return(e??"").localeCompare(t??"")}function So(e,t){return(e??0)-(t??0)}function oe(e,t,n){return JSON.stringify(e??n).localeCompare(JSON.stringify(t??n))}function Ba(e){if(!(!e||e.length===0))return[...e].map(t=>({path:Oe(t.path),scope:t.scope,note:t.note?.trim()||void 0})).sort((t,n)=>{let r=t.scope.localeCompare(n.scope);if(r!==0)return r;let o=t.path.localeCompare(n.path);return o!==0?o:(t.note??"").localeCompare(n.note??"")})}function y(e){if(typeof e!="string")return;let t=e.trim();return t.length>0?t:void 0}function Va(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(n===null||typeof n!="object")continue;let r=n,o=y(r.id),i=y(r.kind);if(!o||!i)continue;let s={id:o,kind:i},a=y(r.note);a&&(s.note=a),r.required_before_step===!0&&(s.required_before_step=!0),t.push(s)}return t.length>0?t:void 0}function Ga(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(n===null||typeof n!="object")continue;let r=n,o=y(r.path);if(!o)continue;let i={path:Oe(o)};(r.scope==="project"||r.scope==="global")&&(i.scope=r.scope);let s=y(r.note);s&&(i.note=s),t.push(i)}return t.length>0?t:void 0}function Xa(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(n===null||typeof n!="object")continue;let r=n,o=y(r.command),i=y(r.path);if(!o&&!i)continue;let s={};o&&(s.command=o),i&&(s.path=Oe(i));let a=y(r.note);a&&(s.note=a),t.push(s)}return t.length>0?t:void 0}function Ka(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(n===null||typeof n!="object")continue;let r=n,o=y(r.path);if(!o)continue;let i={path:Oe(o)};(r.scope==="project"||r.scope==="global")&&(i.scope=r.scope);let s=y(r.note);s&&(i.note=s),t.push(i)}return t.length>0?t:void 0}function Ja(e){if(e===null||typeof e!="object")return;let t=e,n=y(t.id),r=y(t.title),o=y(t.status),i=o&&aa.has(o)?o:void 0,s=Nr(t.order)??Number.NaN,a=typeof t.created_at=="string"?t.created_at:"",d=typeof t.updated_at=="string"?t.updated_at:"";if(!n||!r||!i||!Number.isFinite(s)||!a||!d)return;let l={id:n,order:s,title:r,status:i,created_at:a,updated_at:d};return Ya(l,t),l}function Ya(e,t){let n=[["body","body"],["owner","owner"],["evidence","evidence"],["blocked_reason","blocked_reason"],["superseded_by","superseded_by"]];for(let[i,s]of n){let a=y(t[s]);a&&(e[i]=a)}let r=typeof t.completed_at=="string"?t.completed_at:void 0;r&&r.length>0&&(e.completed_at=r);let o=[["linked_items","linked_items",Va],["files","files",Ga],["tests","tests",Xa],["docs","docs",Ka]];for(let[i,s,a]of o){let d=a(t[s]);d&&(e[i]=d)}}function Qa(e){if(!Array.isArray(e))return;let t=e.flatMap(n=>{let r=Ja(n);return r?[r]:[]});return t.sort((n,r)=>n.order-r.order),t.length>0?t:void 0}function Za(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(n===null||typeof n!="object")continue;let r=n,o=typeof r.ts=="string"?r.ts:"",i=typeof r.author=="string"?r.author:"",s=y(r.decision);if(!o||!i||!s)continue;let a={ts:o,author:i,decision:s},d=y(r.rationale);d&&(a.rationale=d);let l=y(r.evidence);l&&(a.evidence=l);let m=y(r.step_id);m&&(a.step_id=m),t.push(a)}return t.length>0?t:void 0}function ec(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(n===null||typeof n!="object")continue;let r=n,o=typeof r.ts=="string"?r.ts:"",i=typeof r.author=="string"?r.author:"",s=y(r.text);if(!o||!i||!s)continue;let a={ts:o,author:i,text:s},d=y(r.step_id);d&&(a.step_id=d),t.push(a)}return t.length>0?t:void 0}function tc(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(n===null||typeof n!="object")continue;let r=n,o=y(r.text);if(!o)continue;let i={text:o},s=y(r.command);s&&(i.command=s);let a=y(r.expected);a&&(i.expected=a),t.push(i)}return t.length>0?t:void 0}function nc(e){if(!e)return;let t=Object.entries(e).map(([n,r])=>[n.trim(),r.trim()]).filter(([n,r])=>n.length>0&&r.length>0).sort((n,r)=>n[0].localeCompare(r[0]));if(t.length!==0)return Object.fromEntries(t)}function Te(e){let t=0;for(;t<e.length&&e[t]===`
4
4
  `;)t+=1;return e.slice(t).trimEnd()}function rc(e){if(e===void 0)return;if(typeof e=="number")return e;let t=e.trim().toLowerCase();if(t==="med")return"medium";if(ut.includes(t))return t}function oc(e){if(e===void 0)return;let t=e.trim().toLowerCase();if(t==="med")return"medium";if(lt.includes(t))return t}function Be(e){return e||void 0}function ic(e,t){let n=e,r=t;for(let[o,i]of Object.entries(r))Nn(o)||Object.prototype.hasOwnProperty.call(n,o)||i===void 0||(n[o]=i)}function sc(e,t){if(!t?.fieldRegistry)return;let n=e;for(let r of t.fieldRegistry.definitions){let o=n[r.metadata_key];o!==void 0&&(n[r.metadata_key]=We(r,o,`metadata field "${r.metadata_key}"`))}}function ac(e,t){if(!t||t.unknownFieldPolicy==="allow")return;let n=xo(t),o=Object.keys(e).filter(i=>!n.has(i)).sort((i,s)=>i.localeCompare(s));o.length>0&&t.unknownFieldPolicy==="reject"&&ie(`unknown schema fields are not allowed: ${o.join(", ")}`),o.length>0&&t.onWarning?.(`item_unknown_schema_fields:${o.join(",")}`)}function Tt(e,t={}){let n=Io(t),r=St(e.status,n?.statusRegistry)??e.status,o=Array.from(new Set((Array.isArray(e.tags)?e.tags:[]).filter(s=>typeof s=="string").map(s=>s.trim().toLowerCase()).filter(Boolean))).sort((s,a)=>s.localeCompare(a)),i={id:e.id,title:e.title,description:e.description,type:e.type,pm_format_version:po(e.pm_format_version),source_type:y(e.source_type),type_options:nc(e.type_options),status:r,priority:e.priority,tags:o,created_at:e.created_at,updated_at:e.updated_at,dependencies:Ca(e.dependencies),comments:xn(e.comments),notes:xn(e.notes),learnings:xn(e.learnings),files:La(e.files),tests:za(e.tests),test_runs:Pa(e.test_runs),docs:Ba(e.docs),deadline:Be(e.deadline),reminders:Aa(e.reminders),events:Na(e.events),closed_at:Be(e.closed_at),completed_at:Be(e.completed_at),assignee:y(e.assignee),claim_principal:y(e.claim_principal),source_owner:y(e.source_owner),author:Be(e.author),estimated_minutes:e.estimated_minutes,acceptance_criteria:e.acceptance_criteria??void 0,design:e.design??void 0,external_ref:e.external_ref??void 0,definition_of_ready:y(e.definition_of_ready),order:e.order,goal:y(e.goal),objective:y(e.objective),value:y(e.value),impact:y(e.impact),outcome:y(e.outcome),why_now:y(e.why_now),parent:y(e.parent),reviewer:y(e.reviewer),risk:e.risk??void 0,confidence:rc(e.confidence),sprint:y(e.sprint),release:y(e.release),blocked_by:y(e.blocked_by),blocked_reason:y(e.blocked_reason),unblock_note:y(e.unblock_note),reporter:y(e.reporter),severity:oc(e.severity),environment:y(e.environment),repro_steps:y(e.repro_steps),resolution:y(e.resolution),expected_result:y(e.expected_result),actual_result:y(e.actual_result),affected_version:y(e.affected_version),fixed_version:y(e.fixed_version),component:y(e.component),regression:e.regression,customer_impact:y(e.customer_impact),close_reason:Be(e.close_reason),plan_mode:y(e.plan_mode),plan_scope:y(e.plan_scope),plan_harness:y(e.plan_harness),plan_resume_context:y(e.plan_resume_context),plan_steps:Qa(e.plan_steps),plan_decisions:Za(e.plan_decisions),plan_discoveries:ec(e.plan_discoveries),plan_validation:tc(e.plan_validation)};return ic(i,e),sc(i,n),ac(i,n),xt(i),i}function Oo(e){return E(e,ne)}function cc(e){let t=0,n=!1,r=!1;for(let o=0;o<e.length;o+=1){let i=e[o];if(n){if(r){r=!1;continue}if(i==="\\"){r=!0;continue}i==='"'&&(n=!1);continue}if(i==='"'){n=!0;continue}if(i==="{"){t+=1;continue}if(i==="}"&&(t-=1,t===0))return o}return-1}function dc(e){if(!e.startsWith("{"))return{frontMatter:"",body:e};let t=cc(e);if(t<0)return{frontMatter:"",body:e};let n=e.slice(0,t+1),r=e.slice(t+1).replace(/^\r?\n+/,"");return{frontMatter:n,body:r}}function lc(e){let t=e.charCodeAt(0)===65279?e.slice(1):e,n=t.match(/^[ \t]*---[ \t]*(?:\r?\n|$)/);if(!n)return{content:t,stripped:!1};let r=n[0].length;for(;r<t.length;){let o=t.indexOf(`
@@ -150,4 +150,4 @@ ${qn(i,t+1)}`).join(`
150
150
  `,"utf8")}catch{return await Qn(e),null}return t}async function Nd(e){let t;try{let r=await te.stat(e);if(t=Date.now()-r.mtimeMs,t<=vd)return!1}catch(r){return et(r,"ENOENT")}let n=await yi(e);return n!==null&&Rd(n.pid)&&t<=Id?!1:Qn(e)}async function Dd(e,t){let n=`${e}${Sd}`,r=await di(n);if(r!==null)return async()=>ci(n,r.token);if(!await Nd(n))return null;let o=await di(n);return o===null?null:async()=>ci(n,o.token)}async function Md(e){let t=await Dd(e.lockPath,e.id);if(t===null)return{lockInfo:e.fallbackLockInfo,shouldRetryCreate:!1,staleRemovalCounted:!1};try{let n=await li(e.lockPath);if(n.info===null&&n.warnings.length===0)return{lockInfo:n,shouldRetryCreate:!0,staleRemovalCounted:!1};if(!mi(n.info,e.ttlSeconds))return{lockInfo:n,shouldRetryCreate:!1,staleRemovalCounted:!1};if(Cd(e.id,n,e.force,e.forceRequiredForStaleLock),e.staleRemovals>=kd)throw pi(e.id,n.info,Date.now()-e.startedAtMs);return{lockInfo:n,shouldRetryCreate:await fi(e.lockPath,"lock:stale_remove"),staleRemovalCounted:!0}}finally{await t()}}async function ae(e,t,n,r,o=!1,i=!0,s){let a=await Z("lock_acquire",{pm_root:e,id:t,ttl_seconds:n,owner:r,force:o,force_required_for_stale_lock:i});if(a.handled){let _=Od(a.result);if(_)return async()=>{await Promise.resolve(_()),await Z("lock_release",{pm_root:e,id:t,owner:r})}}let d=Ar(e,t),l=xd(s),m=Date.now(),f=0,h=bd;for(;;)try{return await hd(d,t,r,n),async()=>{await fi(d,"lock:release"),await Z("lock_release",{pm_root:e,id:t,owner:r})}}catch(_){if(!et(_,"EEXIST"))throw new T(`Failed to acquire lock for ${t}: ${Rr(_)}`,I.GENERIC_FAILURE);let S=await li(d);if(mi(S.info,n)){let w=await Md({lockPath:d,id:t,ttlSeconds:n,force:o,forceRequiredForStaleLock:i,staleRemovals:f,waitBudgetMs:l,startedAtMs:m,fallbackLockInfo:S});if(S=w.lockInfo,w.staleRemovalCounted&&(f+=1),w.shouldRetryCreate)continue}let v=Date.now()-m;if(l===0||v>=l)throw pi(t,S.info,l===0?0:v);await Td(Math.min(h,l-v)),h=Math.min(h*2,wd)}}(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]="8ed70856-9cba-599d-8b53-21a981af1f40")}catch{}})();var K=8,ki=500,Pd="metadata-derived-index",jd="metadata-cache.json",Fd="metadata-cache-bodies.json",$d="metadata-cache-collections.json",zd="metadata-cache-delta.json",Ud="metadata-cache-manifest.json",hi=4,Hd=["comments","notes","learnings","files","tests","test_runs","docs"];function Si(){return _t(Xe())}function Gt(e){let t={...e},n={};for(let r of Hd)r in t&&(n[r]=t[r],delete t[r]);return{light:t,heavy:n}}function vi(e,t){return!t||Object.keys(t).length===0?e:{...e,...t}}function Ii(e,t,n,r){let o=Ld("sha256");o.update(`format:${e??"default"}`);let i=Object.entries(t).sort(([s],[a])=>s.localeCompare(a)).map(([s,a])=>`${s}=${a}`).join(",");return o.update(`|types:${i}`),n&&o.update(`|schema:${JSON.stringify(n)}`),r.length>0&&o.update(`|extension_fields:${r.join(",")}`),o.digest("hex").slice(0,16)}function Xt(e){return A.join(e,"runtime",jd)}function Kt(e){return A.join(e,"runtime",Fd)}function Jt(e){return A.join(e,"runtime",$d)}function er(e){return A.join(e,"runtime",zd)}function tr(e){return A.join(e,"runtime",Ud)}function Yt(e,t){let n=A.extname(e);return`${e.slice(0,-n.length)}.${t}${n}`}var Wd=24,H=new Map,Qt=new WeakMap;function nr(e){return Qt.get(e)??e.source_cursor}function qd(e,t){let n=nr(e);if(!(t.base_source_cursor!==n||e.source_cursor===t.source_cursor)){Qt.set(e,n);for(let[r,o]of Object.entries(t.changes))o.entry?e.entries[r]=o.entry:delete e.entries[r];e.directory_signatures=t.directory_signatures,e.source_cursor=t.source_cursor}}function Bd(e,t){if(!e)return;let n=nr(e);if(!(t.base_source_cursor!==n||e.source_cursor===t.source_cursor)){Qt.set(e,n);for(let[r,o]of Object.entries(t.changes))o.body?e.bodies[r]=o.body:delete e.bodies[r];e.source_cursor=t.source_cursor}}function Vd(e,t){if(!e)return;let n=nr(e);if(!(t.base_source_cursor!==n||e.source_cursor===t.source_cursor)){Qt.set(e,n);for(let[r,o]of Object.entries(t.changes))o.collections?e.collections[r]=o.collections:delete e.collections[r];e.source_cursor=t.source_cursor}}function Gd(e,t,n,r){!e||!r||e.context_fingerprint!==r.context_fingerprint||(qd(e,r),Bd(t,r),Vd(n,r))}function Zn(e,t){H.size>=Wd&&!H.has(e)&&ht(H),H.set(e,t)}async function ce(e,t){let n;try{n=await P.stat(e)}catch{return H.delete(e),null}let r=H.get(e);if(r&&tt(r.signature,n.mtimeMs,n.ctimeMs,n.size))return H.delete(e),H.set(e,r),r.envelope;let o;try{o=t(await P.readFile(e,"utf8"))}catch{o=null}return Zn(e,{signature:{mtime_ms:n.mtimeMs,ctime_ms:n.ctimeMs,size:n.size},envelope:o}),o}async function Xd(e,t,n){let r=a=>{let d=JSON.parse(a);return d.version!==K||typeof d.source_cursor!="string"||typeof d.entries!="object"||d.entries===null?null:d},o=Xt(e),i=await ce(o,r);if(!t||i===null||i.context_fingerprint===t)return i;let s=await ce(Yt(o,t),r);return s===null&&ot(n,`metadata_cache_context_changed:${i.context_fingerprint}->${t}`),s}async function Kd(e,t){let n=i=>{let s=JSON.parse(i);return s.version!==K||typeof s.source_cursor!="string"||typeof s.bodies!="object"||s.bodies===null?null:s},r=Kt(e),o=await ce(r,n);return t&&o?.context_fingerprint!==t?await ce(Yt(r,t),n):o}async function Jd(e,t){let n=i=>{let s=JSON.parse(i);return s.version!==K||typeof s.source_cursor!="string"||typeof s.collections!="object"||s.collections===null?null:s},r=Jt(e),o=await ce(r,n);return t&&o?.context_fingerprint!==t?await ce(Yt(r,t),n):o}async function rr(e){let t=er(e),n=await ce(t,r=>{let o=JSON.parse(r);return o.version!==K||typeof o.base_source_cursor!="string"||typeof o.source_cursor!="string"||typeof o.changes!="object"||o.changes===null?null:o});if(n)return{envelope:n,invalid:!1};try{return await P.stat(t),{envelope:null,invalid:!0}}catch{return{envelope:null,invalid:!1}}}async function or(e){let t=tr(e),n=await ce(t,r=>{let o=JSON.parse(r);return o.version!==K||typeof o.context_fingerprint!="string"||typeof o.source_cursor!="string"||!Number.isInteger(o.entry_count)||o.entry_count<0||typeof o.directory_signatures!="object"||o.directory_signatures===null?null:o});if(n)return n;try{await P.stat(t),await Me(e)}catch{}return null}async function nt(e,t){await P.mkdir(A.dirname(e),{recursive:!0}),await W(e,JSON.stringify(t));try{let r=await P.stat(e);Zn(e,{signature:{mtime_ms:r.mtimeMs,ctime_ms:r.ctimeMs,size:r.size},envelope:t})}catch{H.delete(e)}let n=A.dirname(A.dirname(e));if(e===Xt(n)||e===Kt(n)||e===Jt(n)){let r=Yt(e,t.context_fingerprint);await W(r,JSON.stringify(t));try{let d=await P.stat(r);Zn(r,{signature:{mtime_ms:d.mtimeMs,ctime_ms:d.ctimeMs,size:d.size},envelope:t})}catch{H.delete(r)}let o=A.dirname(e),i=A.extname(e),s=A.basename(e,i),a=(await P.readdir(o,{withFileTypes:!0}).catch(()=>[])).filter(d=>d.isFile()&&d.name!==A.basename(e)&&d.name.startsWith(`${s}.`)&&d.name.endsWith(i)).map(d=>A.join(o,d.name));if(a.length>hi){let d=(await Promise.all(a.map(async l=>{try{return{path:l,mtime:(await P.stat(l)).mtimeMs}}catch{return null}}))).filter(l=>l!==null);for(let l of d.sort((m,f)=>m.mtime-f.mtime).slice(0,Math.max(0,d.length-hi)))await P.rm(l.path,{force:!0}),H.delete(l.path)}}}function Yd(e,t,n){return n?t===n&&e!==n:t==="toon"&&e!=="toon"}function xi(e,t,n){return e===void 0||Yd(e,t,n)}function ot(e,t){e&&!e.includes(t)&&e.push(t)}function tt(e,t,n,r){return e.mtime_ms===t&&e.ctime_ms===n&&e.size===r}async function Qd(e,t,n){let r=A.join(e,t);try{let o=await P.readdir(r);return{folder:t,dirPath:r,files:o}}catch(o){return typeof o=="object"&&o!==null&&"code"in o&&o.code!=="ENOENT"&&ot(n,`item_list_directory_read_failed:${t}`),{folder:t,dirPath:r,files:[]}}}async function Zd(e,t){try{let n=await P.stat(A.join(e,t));return[t,{exists:!0,mtime_ms:n.mtimeMs,ctime_ms:n.ctimeMs,size:n.size}]}catch{return[t,{exists:!1,mtime_ms:0,ctime_ms:0,size:0}]}}async function Vt(e,t){return Object.fromEntries(await Promise.all(t.map(async n=>await Zd(e,n))))}function rt(e,t){return!e||Object.keys(e).length!==Object.keys(t).length?!1:Object.entries(t).every(([n,r])=>{let o=e[n];return o!==void 0&&o.exists===r.exists&&tt(o,r.mtime_ms,r.ctime_ms,r.size)})}function el(e){return yt.some(t=>e.toLowerCase().endsWith(t))}function tl(e,t,n,r,o,i){r||(e.metadata=!0),t&&!o&&(e.body=!0),n&&!i&&(e.collections=!0)}async function nl(e,t,n){if(n)for(let r of await X({path:e,scope:"project"}))ot(t,r)}function gi(e,t,n,r){if(e)return t&&n?n.collections:r}async function rl(e,t,n){let r=await P.stat(e),o=r.mtimeMs,i=r.ctimeMs,{size:s}=r,a=pn(e);await nl(e,n.warnings,n.dispatchReadHooks);let d=n.previousEntries[t],l=d!==void 0&&tt(d,o,i,s),m=n.previousBodies[t],f=m!==void 0&&tt(m,o,i,s),h=n.previousCollections[t],_=h!==void 0&&tt(h,o,i,s);if(!(!l||n.includeBody&&!f||n.includeCollections&&!_))return{mtimeMs:o,ctimeMs:i,size:s,itemFormat:a,lightMetadata:d.metadata,heavyMetadata:gi(n.includeCollections,_,h,void 0),bodyLength:d.body_length,body:n.includeBody?m.body:void 0};let v=await P.readFile(e,"utf8"),w=Ot(v,{format:a,schema:n.schema,extensionFieldNames:n.extensionFieldNames,onWarning:N=>ot(n.warnings,N)}),R=Gt(w.metadata);return tl(n.state.misses,n.includeBody,n.includeCollections,l,f,_),{mtimeMs:o,ctimeMs:i,size:s,itemFormat:a,lightMetadata:l?d.metadata:R.light,heavyMetadata:gi(n.includeCollections,_,h,R.heavy),bodyLength:l?d.body_length:w.body.length,body:n.includeBody?w.body:void 0}}function ol(e,t,n,r){n.state.newEntries[t]={mtime_ms:r.mtimeMs,ctime_ms:r.ctimeMs,size:r.size,metadata:r.lightMetadata,body_length:r.bodyLength},n.includeBody&&r.body!==void 0&&(n.state.newBodies[t]={mtime_ms:r.mtimeMs,ctime_ms:r.ctimeMs,size:r.size,body:r.body}),n.includeCollections&&r.heavyMetadata!==void 0&&(n.state.newCollections[t]={mtime_ms:r.mtimeMs,ctime_ms:r.ctimeMs,size:r.size,collections:r.heavyMetadata});let o=n.includeCollections?vi(r.lightMetadata,r.heavyMetadata):r.lightMetadata,i=n.state.documentsById.get(o.id),s={metadata:o,body:r.body,item_format:r.itemFormat,item_path:e};xi(i?.itemFormat,r.itemFormat,n.preferredFormat)&&n.state.documentsById.set(o.id,{candidate:s,itemFormat:r.itemFormat})}async function il(e,t,n,r){try{let o=await rl(t,n,r);ol(t,n,r,o)}catch{ot(r.warnings,`item_list_item_read_failed:${e}/${A.basename(t)}`)}}function sl(e,t){return e&&e.context_fingerprint===t?e.entries:{}}function al(e,t){return e&&e.context_fingerprint===t?e.bodies:{}}function cl(e,t){return e&&e.context_fingerprint===t?e.collections:{}}function dl(){return{newEntries:{},newBodies:{},newCollections:{},documentsById:new Map,misses:{metadata:!1,body:!1,collections:!1}}}function ll(e,t){let n=[];for(let{folder:r,dirPath:o,files:i}of e)for(let s of i){if(!el(s))continue;let a=A.join(o,s),d=A.relative(t.pmRoot,a);n.push(il(r,a,d,t))}return n}async function ul(e){if(!(!(e.state.misses.metadata||Object.keys(e.previousEntries).length!==Object.keys(e.state.newEntries).length||!rt(e.existingCache?.directory_signatures,e.directorySignatures))&&e.existingCache!==null&&e.existingCache.context_fingerprint===e.contextFingerprint))try{await nt(Xt(e.pmRoot),{version:K,context_fingerprint:e.contextFingerprint,source_cursor:e.sourceCursor,directory_signatures:e.directorySignatures,entries:e.state.newEntries}),await nt(tr(e.pmRoot),{version:K,context_fingerprint:e.contextFingerprint,source_cursor:e.sourceCursor,entry_count:Object.keys(e.state.newEntries).length,directory_signatures:e.directorySignatures});let n=[...e.state.documentsById.values()].map(({candidate:r})=>({relativePath:A.relative(e.pmRoot,r.item_path),metadata:Gt(r.metadata).light,linkedFiles:r.metadata.files??[]}));n.length>=e.minimumIndexedItems?await ii({pmRoot:e.pmRoot,contextFingerprint:e.contextFingerprint,sourceCursor:e.sourceCursor,rows:n}):await Bt(e.pmRoot)}catch{}}async function fl(e){!(e.state.misses.body||Object.keys(e.previousBodies).length!==Object.keys(e.state.newBodies).length)&&e.existingBodyCache!==null&&e.existingBodyCache.context_fingerprint===e.contextFingerprint||await nt(Kt(e.pmRoot),{version:K,context_fingerprint:e.contextFingerprint,source_cursor:e.sourceCursor,bodies:e.state.newBodies}).catch(()=>{})}async function ml(e){!(e.state.misses.collections||Object.keys(e.previousCollections).length!==Object.keys(e.state.newCollections).length)&&e.existingCollectionsCache!==null&&e.existingCollectionsCache.context_fingerprint===e.contextFingerprint||await nt(Jt(e.pmRoot),{version:K,context_fingerprint:e.contextFingerprint,source_cursor:e.sourceCursor,collections:e.state.newCollections}).catch(()=>{})}async function ir(e,t,n={}){let r=await or(e);return n.required!==!0&&(r===null||r.entry_count<ki)?async()=>{}:ae(e,Pd,30,t,!1,!1,3e3)}async function up(e,t){let n=await or(e);if(n===null)return null;let r=await rr(e);if(r.invalid)return await Me(e),null;let o=r.envelope?.context_fingerprint===n.context_fingerprint&&r.envelope.base_source_cursor===n.source_cursor?r.envelope.source_cursor:n.source_cursor,i=r.envelope?.context_fingerprint===n.context_fingerprint&&r.envelope.base_source_cursor===n.source_cursor?r.envelope.directory_signatures:n.directory_signatures;return t&&!rt(i,await Vt(e,t))?null:{source_cursor:o,entry_count:n.entry_count}}function bi(e,t){let n=A.relative(e,t);return n===""||n===".."||n.startsWith(`..${A.sep}`)||A.isAbsolute(n)?null:n}async function Me(e){await Promise.all([Xt(e),Kt(e),Jt(e),er(e),tr(e)].map(async t=>{await P.rm(t,{force:!0}),H.delete(t)})),await Bt(e)}async function _l(e){if(e.mutation.document===null)return{entry:null,body:null,collections:null};let t=await P.stat(e.mutation.itemPath),n=Gt(e.mutation.document.metadata),r={mtime_ms:t.mtimeMs,ctime_ms:t.ctimeMs,size:t.size};return{entry:{...r,metadata:n.light,body_length:e.mutation.document.body.length},body:{...r,body:e.mutation.document.body},collections:{...r,collections:n.heavy}}}function pl(e,t,n){return e?.context_fingerprint===t&&e.base_source_cursor===n?structuredClone(e.changes):{}}async function sr(e){let t=bi(e.pmRoot,e.itemPath),n=e.previousItemPath?bi(e.pmRoot,e.previousItemPath):void 0;if(t===null||n===null)return await Me(e.pmRoot),["metadata_derived_index_path_invalidated"];try{let r=Ii(e.preferredFormat,e.typeToFolder,e.schema,Si()),o=await or(e.pmRoot);if(o===null||o.context_fingerprint!==r)return[];let i=o.source_cursor,s=await rr(e.pmRoot);if(s.invalid)return await Me(e.pmRoot),["metadata_derived_index_refresh_failed"];let a=pl(s.envelope,r,i),d=s.envelope?.context_fingerprint===r&&s.envelope.base_source_cursor===i?s.envelope.source_cursor:i;n!==void 0&&(a[n]={entry:null,body:null,collections:null}),a[t]=await _l({mutation:e});let l=Ei();return await nt(er(e.pmRoot),{version:K,context_fingerprint:r,base_source_cursor:i,source_cursor:l,directory_signatures:await Vt(e.pmRoot,[...new Set(Object.values(e.typeToFolder))]),changes:a}),await si({pmRoot:e.pmRoot,contextFingerprint:r,expectedSourceCursor:d,sourceCursor:l,row:e.document===null?null:{relativePath:t,metadata:Gt(e.document.metadata).light,linkedFiles:e.document.metadata.files},deletedRelativePaths:[...n===void 0?[]:[n],...e.document===null?[t]:[]]})||await Bt(e.pmRoot),[]}catch{return await Me(e.pmRoot).catch(()=>{}),["metadata_derived_index_refresh_failed"]}}function yl(e){return[...e.documentsById.values()].sort((t,n)=>t.candidate.metadata.id.localeCompare(n.candidate.metadata.id)).map(t=>t.candidate)}function wi(e,t,n){return e?.context_fingerprint===t&&e.source_cursor===n}function hl(e,t,n,r,o){return e.every(i=>(!t||r[i]!==void 0)&&(!n||o[i]!==void 0))}function gl(e){let t=new Map;for(let[n,r]of Object.entries(e.previousEntries)){let o=pn(n);if(!o)continue;let i=e.includeCollections?vi(r.metadata,e.previousCollections[n]?.collections):r.metadata,s=t.get(i.id);xi(s?.itemFormat,o,e.preferredFormat)&&t.set(i.id,{itemFormat:o,candidate:{metadata:i,body:e.includeBody?e.previousBodies[n]?.body:void 0,item_format:o,item_path:A.join(e.pmRoot,n)}})}return[...t.values()].sort((n,r)=>n.candidate.metadata.id.localeCompare(r.candidate.metadata.id)).map(n=>n.candidate)}function bl(e){return e.forceSourceScan||Pn()||e.existingCache?.context_fingerprint!==e.contextFingerprint||e.entryKeys.length<e.minimumIndexedItems||!rt(e.existingCache?.directory_signatures,e.directorySignatures)?!1:[!e.includeBody||wi(e.existingBodyCache,e.contextFingerprint,e.existingCache.source_cursor),!e.includeCollections||wi(e.existingCollectionsCache,e.contextFingerprint,e.existingCache.source_cursor)].every(Boolean)&&hl(e.entryKeys,e.includeBody,e.includeCollections,e.previousBodies,e.previousCollections)}async function Zt(e,t,n,r,o,i={}){let s=i.includeBody!==!1,a=i.includeCollections!==!1,d=Si(),l=Ii(t,n,o,d),m=await rr(e);m.invalid&&await Me(e);let f=await Xd(e,l,i.cacheDiagnostics),h=s?await Kd(e,l):null,_=a?await Jd(e,l):null;Gd(f,h,_,m.envelope);let S=sl(f,l),v=al(h,l),w=cl(_,l),R=[...new Set(Object.values(n))],N=await Vt(e,R),J=Object.keys(S),F=Math.max(1,Math.floor(i.derivedIndexMinimumItems??ki));if(bl({forceSourceScan:i.forceSourceScan===!0,contextFingerprint:l,existingCache:f,existingBodyCache:h,existingCollectionsCache:_,directorySignatures:N,entryKeys:J,minimumIndexedItems:F,includeBody:s,includeCollections:a,previousBodies:v,previousCollections:w}))return gl({pmRoot:e,preferredFormat:t,includeBody:s,includeCollections:a,previousEntries:S,previousBodies:v,previousCollections:w});let dn=await Promise.all(R.map(_s=>Qd(e,_s,r))),at=Pn(),Y=dl(),ln={pmRoot:e,preferredFormat:t,warnings:r,schema:o,extensionFieldNames:d,includeBody:s,includeCollections:a,dispatchReadHooks:at,previousEntries:S,previousBodies:v,previousCollections:w,state:Y};await Promise.all(ll(dn,ln));let ct=await Vt(e,R),gr=rt(N,ct)?ct:{},un=Y.misses.metadata||Object.keys(S).length!==Object.keys(Y.newEntries).length||!rt(f?.directory_signatures,gr)||f===null?Ei():f.source_cursor;return await ul({pmRoot:e,contextFingerprint:l,sourceCursor:un,existingCache:f,previousEntries:S,directorySignatures:gr,state:Y,minimumIndexedItems:F}),s&&await fl({pmRoot:e,contextFingerprint:l,sourceCursor:un,existingBodyCache:h,previousBodies:v,state:Y}),a&&await ml({pmRoot:e,contextFingerprint:l,sourceCursor:un,existingCollectionsCache:_,previousCollections:w,state:Y}),yl(Y)}async function Ti(e,t,n,r,o){return(await Zt(e,t,n,r,o,{includeBody:!1})).map(s=>({metadata:s.metadata,body:s.body??""}))}async function Oi(e,t,n,r,o){return(await Zt(e,t,n,r,o,{includeBody:!1,includeCollections:!1})).map(s=>({metadata:s.metadata,body:s.body??""}))}import wl from"node:fs/promises";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]="8a15177d-4090-5e58-aac7-20b2ed7684a2")}catch{}})();var en="_workspace";function Ai(e){return Ci.join(e,"history",`${en}.jsonl`)}function El(e,t){return{metadata:{id:en,title:"Workspace state",description:"Audited singleton workspace document state.",type:"Chore",status:"open",priority:2,tags:["workspace-history"],created_at:t,updated_at:t,documents:e},body:""}}function Ri(e){let t=Ft();for(let n of e)t=zt(t,n.patch).document;return $t(t)}async function Ni(e){let t=Ai(e.pmRoot),n=await Ke(t,en),r=Xn(n);if(!r.ok)throw new TypeError(`Workspace history verification failed: ${r.errors.join(", ")}`);let o=e.idempotencyKey===void 0?void 0:n.find(f=>f.op===`${e.op}:${e.idempotencyKey}`);if(o)return{entry:o,historyPath:t};let i=new Date().toISOString(),s=n.length===0?je:Ri(n),a="documents"in s.metadata&&typeof s.metadata.documents=="object"&&s.metadata.documents!==null&&!Array.isArray(s.metadata.documents)?s.metadata.documents:{},d=a[e.documentPath];if(d!==void 0&&G(d)!==G(e.before))throw new T(`Workspace history state for "${e.documentPath}" changed outside the audited mutation path.`,I.CONFLICT,{code:"workspace_history_state_conflict",reason:"out_of_band_workspace_state",required:"Reconcile the singleton document with its matching _workspace history state before retrying the mutation.",why:"Accepting the write would make the append-only audit stream describe a state that was not actually observed.",examples:["pm history _workspace --verify","pm validate --check-history-drift --fix-hints"],nextSteps:["Review the version-control change that altered the singleton and preserve the intended document plus its matching workspace history.","Rerun the original mutation only after the on-disk singleton agrees with the latest audited workspace state."],recovery:{recovery_mode:"compact",next_best_command:"pm history _workspace --verify"}});let l=El({...a,[e.documentPath]:e.after},n.length===0?i:s.metadata.created_at),m=Re({nowIso:i,author:e.author,op:e.idempotencyKey===void 0?e.op:`${e.op}:${e.idempotencyKey}`,before:s,after:l,message:e.message});return await Ne(t,m),{entry:m,historyPath:t}}async function Sp(e){let t=await ae(e.pmRoot,"workspace-history",e.lockTtlSeconds,e.author,!1,!1,e.lockWaitMs);try{return await Ni(e)}finally{await t()}}async function vp(e){let t=await ae(e.pmRoot,"workspace-history",e.lockTtlSeconds,e.author,!1,!1,e.lockWaitMs);try{let n=Ai(e.pmRoot),r=await Ke(n,en),o=Xn(r);if(!o.ok)throw new TypeError(`Workspace history verification failed: ${o.errors.join(", ")}`);let i=r.length===0?je:Ri(r),s=Re({nowIso:new Date().toISOString(),author:e.author,op:e.op,before:i,after:i,message:e.message,context:e.context});return await Ne(n,s),{entry:s,historyPath:n}}finally{await t()}}async function Di(e){let t=await ae(e.pmRoot,"workspace-history",e.lockTtlSeconds,e.author,!1,!1,e.lockWaitMs);try{let n=await Ee(e.filePath);if(n===e.raw)return!1;let r=n===null?null:JSON.parse(n),o=JSON.parse(e.raw);await W(e.filePath,e.raw);try{(n!==null||e.recordCreation!==!1)&&await Ni({pmRoot:e.pmRoot,documentPath:Ci.relative(e.pmRoot,e.filePath).replaceAll("\\","/"),before:r,after:o,op:e.op,author:e.author,lockTtlSeconds:e.lockTtlSeconds,lockWaitMs:e.lockWaitMs,message:e.message})}catch(i){throw n===null?await wl.rm(e.filePath,{force:!0}):await W(e.filePath,n),i}return!0}finally{await t()}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="027f6acb-15cc-5707-85ed-b5298b6b6abe")}catch{}})();var L={ok:!1},u=e=>typeof e=="string"?{ok:!0,value:e}:L,x=e=>typeof e=="boolean"?{ok:!0,value:e}:L;function C(e={}){return t=>typeof t!="number"||!Number.isFinite(t)||e.int&&(!Number.isInteger(t)||!Number.isSafeInteger(t))||e.positive&&t<=0||typeof e.min=="number"&&t<e.min||typeof e.max=="number"&&t>e.max?L:{ok:!0,value:t}}function O(...e){return t=>typeof t=="string"&&e.includes(t)?{ok:!0,value:t}:L}function p(e,t){return n=>{if(!Array.isArray(n)||t!==void 0&&n.length>t)return L;let r=[];for(let o of n){let i=e(o);if(!i.ok)return L;r.push(i.value)}return{ok:!0,value:r}}}function cr(e,t){return n=>typeof n=="string"&&n.length>0&&n.length<=e&&n===n.trim()&&(t===void 0||t.test(n))?{ok:!0,value:n}:L}function c(e){return t=>t===void 0?{ok:!0,value:void 0}:e(t)}function tn(e){return t=>{if(typeof t!="object"||t===null||Array.isArray(t))return L;let n={};for(let[r,o]of Object.entries(t)){let i=e(o);if(!i.ok)return L;n[r]=i.value}return{ok:!0,value:n}}}function k(e){return t=>{if(typeof t!="object"||t===null||Array.isArray(t))return L;let n=t,r={};for(let[o,i]of Object.entries(e)){let s=i(n[o]);if(!s.ok)return L;s.value!==void 0&&(r[o]=s.value)}return{ok:!0,value:r}}}var kl=k({key:u,values:p(u),required:c(x),aliases:c(p(u)),description:c(u)}),Sl=k({command:O("create","update"),option:u,required:c(x),visible:c(x),enabled:c(x)}),vl=k({name:u,description:c(u),default_status:c(u),folder:c(u),aliases:c(p(u)),required_create_fields:c(p(u)),required_create_repeatables:c(p(u)),options:c(p(kl)),command_option_policies:c(p(Sl))}),Il=k({id:u,aliases:c(p(u)),roles:c(p(O(...wr))),description:c(u),order:c(C())}),xl=k({key:u,metadata_key:c(u),front_matter_key:c(u),cli_flag:c(u),cli_aliases:c(p(u)),description:c(u),type:c(O(...Er)),commands:c(p(O(...kr))),repeatable:c(x),required:c(x),required_on_create:c(x),required_types:c(p(u)),allow_unset:c(x)}),Tl=e=>{if(!Array.isArray(e)||e.length!==2)return L;let[t,n]=e;return typeof t!="string"||typeof n!="string"?L:{ok:!0,value:[t,n]}},Ol=k({type:u,allowed_transitions:p(Tl)}),Cl=c(k({version:c(C({int:!0})),files:c(k({types:c(u),statuses:c(u),fields:c(u),workflows:c(u)})),statuses:c(p(Il)),fields:c(p(xl)),workflow:c(k({draft_status:c(u),open_status:c(u),in_progress_status:c(u),blocked_status:c(u),close_status:c(u),canceled_status:c(u)})),type_workflows:c(p(Ol)),unknown_field_policy:c(O(...Sr))})),Al=c(k({preset:c(O(...vr)),ownership_enforcement:c(O("none","warn","strict")),create_mode_default:c(O("progressive","strict")),close_validation_default:c(O("off","warn","strict")),require_close_reason:c(x),parent_reference:c(O("warn","strict_error")),metadata_profile:c(O("core","strict","custom")),force_required_for_stale_lock:c(x),create_default_type:c(u),workflow_enforcement:c(O("off","warn","strict")),duplicate_detection_mode:c(O("off","advisory","strict")),duplicate_detection_threshold:c(C({min:0,max:1})),duplicate_detection_limit:c(C({int:!0,min:0,max:20}))})),Rl=k({name:u,disabled:c(x),require_trusted:c(x),require_provenance:c(x),sandbox_profile:c(O("none","restricted","strict")),allowed_capabilities:c(p(u)),blocked_capabilities:c(p(u)),allowed_surfaces:c(p(u)),blocked_surfaces:c(p(u)),allowed_commands:c(p(u)),blocked_commands:c(p(u)),allowed_actions:c(p(u)),blocked_actions:c(p(u)),allowed_services:c(p(u)),blocked_services:c(p(u))}),ar=O("block","warn"),Nl=e=>typeof e=="string"?ar(e):k({global:c(ar),project:c(ar)})(e),Dl=c(k({mode:c(O("off","warn","enforce")),trust_mode:c(O("off","warn","enforce")),pm_max_version_exceeded_mode:c(Nl),require_provenance:c(x),trusted_extensions:c(p(u)),default_sandbox_profile:c(O("none","restricted","strict")),allowed_extensions:c(p(u)),blocked_extensions:c(p(u)),allowed_capabilities:c(p(u)),blocked_capabilities:c(p(u)),allowed_surfaces:c(p(u)),blocked_surfaces:c(p(u)),allowed_commands:c(p(u)),blocked_commands:c(p(u)),allowed_actions:c(p(u)),blocked_actions:c(p(u)),allowed_services:c(p(u)),blocked_services:c(p(u)),extension_overrides:c(p(Rl))})),we=cr(128),Ml=k({harness:cr(128,/^[a-z0-9]+(?:-[a-z0-9]+)*$/u),environment_keys:c(p(we,64)),model_environment_keys:c(p(we,64)),session_environment_keys:c(p(we,64)),provenance_environment_keys:c(tn(p(we,64))),provenance_resolvers:c(tn(O("ai_agent_version","claude_session_file"))),provenance_unavailable_dimensions:c(p(we,64)),argv_markers:c(p(we,64)),client_names:c(p(we,64))}),Ll=k({version:C({int:!0}),id_prefix:u,ids:c(k({token_length:c(C({int:!0,min:4,max:12}))})),author_default:u,agent_identity:c(k({probes_enabled:c(x),identity_vocabulary:c(k({version:C({int:!0,positive:!0}),aliases:tn(cr(128,/^[a-z0-9]+(?:-[a-z0-9]+)*$/u))})),harness_signals:p(Ml)})),mutation_guard:c(k({require_attributed_author:c(x),secret_guard:c(O("off","advise","block")),stale_in_progress_hours:c(C({int:!0,positive:!0}))})),item_format:c(O("toon","json_markdown")),locks:k({ttl_seconds:C({int:!0}),wait_ms:c(C({int:!0,min:0}))}),checkpoints:c(k({retention_days:c(C({int:!0,positive:!0}))})),output:k({default_format:O("toon","json")}),history:c(k({missing_stream:O("auto_create","strict_error"),compact_policy:c(k({enabled:c(x),max_entries:c(C({int:!0,positive:!0})),trigger:c(O("health_warn","auto"))}))})),validation:c(k({sprint_release_format:O("warn","strict_error"),parent_reference:c(O("warn","strict_error")),metadata_profile:c(O("core","strict","custom")),metadata_required_fields:c(p(u)),lifecycle_stale_blocker_reason_patterns:c(p(u)),lifecycle_closure_like_blocked_reason_patterns:c(p(u)),lifecycle_closure_like_resolution_patterns:c(p(u)),lifecycle_closure_like_actual_result_patterns:c(p(u)),estimate_defaults_by_type:c(tn(C({int:!0,positive:!0})))})),governance:Al,workflow:c(k({definition_of_done:p(u)})),testing:c(k({record_results_to_items:x})),telemetry:c(k({enabled:x,first_run_prompt_completed:c(x),capture_level:c(O("minimal","redacted","max")),endpoint:c(u),installation_id:c(u),retention_days:c(C({int:!0,positive:!0}))})),agent_guidance:c(k({prompt_completed:c(x),declined:c(x),declined_at:c(u),template_version:c(C({int:!0,positive:!0})),last_checked_files:c(p(u))})),item_types:c(k({definitions:p(vl)})),schema:Cl,context:c(k({default_depth:c(O("brief","standard","deep")),activity_limit:c(C({int:!0,positive:!0})),stale_threshold_days:c(C({int:!0,positive:!0})),sections:c(k({hierarchy:c(x),activity:c(x),progress:c(x),recently_created:c(x),unparented:c(x),blockers:c(x),files:c(x),workload:c(x),staleness:c(x),tests:c(x)}))})),extensions:k({enabled:p(u),disabled:p(u),policy:Dl}),search:k({score_threshold:C(),hybrid_semantic_weight:c(C()),max_results:C({int:!0}),embedding_model:u,embedding_corpus_max_characters:c(C()),embedding_batch_size:C({int:!0}),embedding_timeout_ms:c(C({int:!0})),scanner_max_batch_retries:C({int:!0}),provider:c(u),corpus_fields:c(p(u)),mutation_refresh_policy:c(O("cache_only","semantic_configured","semantic_auto")),query_expansion:c(k({enabled:c(x),provider:c(u)})),rerank:c(k({enabled:c(x),model:c(u),top_k:c(C({int:!0,positive:!0}))})),bm25:c(k({k1:c(C()),b:c(C())}))}),providers:k({openai:k({base_url:u,api_key:u,model:u}),ollama:k({base_url:u,model:u})}),vector_store:k({adapter:c(u),collection_name:c(u),qdrant:k({url:u,api_key:u}),lancedb:k({path:u})})});function Mi(e){let t=Ll(e);return t.ok?{success:!0,data:t.value}:{success:!1}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="2d377bc4-c624-561c-9856-405c82099070")}catch{}})();var Pl={Epic:2880,Feature:480,Story:480,Milestone:2880,Task:120,Issue:60,Bug:60,Chore:30,Decision:15,Plan:120},Li=120;function dr(e){return typeof e=="number"&&Number.isFinite(e)&&e>0}function ji(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n.toLowerCase(),r);return t}var jl=ji(Pl),Pi=new WeakMap;function Fl(e){let t=Pi.get(e);if(t)return t;let n=ji(e);return Pi.set(e,n),n}function Op(e,t){let n=(e??"").trim().toLowerCase();if(n.length===0)return Li;if(t){let o=Fl(t).get(n);if(dr(o))return Math.floor(o)}let r=jl.get(n);return dr(r)?Math.floor(r):Li}function lr(e){let t={};if(e===null||typeof e!="object"||Array.isArray(e))return t;for(let[n,r]of Object.entries(e)){let o=n.trim();o.length===0||!dr(r)||(t[o]=Math.floor(r))}return t}import{stat as $l}from"node:fs/promises";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="60da76ea-0bd3-56a9-a2bc-d88ba76e1013")}catch{}})();var nn=new Map;function Fi(e){return[...new Set(e.map(t=>t.trim()).filter(t=>t.length>0))].sort((t,n)=>t.localeCompare(n))}async function zl(e){try{let t=await $l(e);return{path:e,mtime_ms:t.mtimeMs,size:t.size}}catch{return{path:e,mtime_ms:null,size:null}}}async function de(e){let t=Fi(e),n=await Promise.all(t.map(r=>zl(r)));return n.sort((r,o)=>r.path.localeCompare(o.path)),n}function it(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1){let r=e[n],o=t[n];if(r.path!==o.path||r.mtime_ms!==o.mtime_ms||r.size!==o.size)return!1}return!0}function $i(e){return nn.get(e)}function rn(e,t){let n=Fi(t.tracked_paths),r=[...t.signatures].map(o=>({path:o.path,mtime_ms:o.mtime_ms,size:o.size})).sort((o,i)=>o.path.localeCompare(i.path));nn.set(e,{tracked_paths:n,signatures:r,value:t.value})}function le(e){if(e){nn.delete(e);return}nn.clear()}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="a434b9ea-4692-51c5-8761-0f1759fff394")}catch{}})();var Ul="settings:write",qi=Symbol("pm.settings.persist_source"),Hl=128,Wl=new Set(["off","advisory","strict"]);function zi(e){return structuredClone(xr[e])}function ql(e){return e==="minimal"||e==="default"||e==="strict"||e==="custom"?e:b.governance.preset}function Ui(e,t){let n=typeof t.create_default_type=="string"?t.create_default_type.trim():void 0;return n&&n.length>0&&(e.create_default_type=n),(t.workflow_enforcement==="off"||t.workflow_enforcement==="warn"||t.workflow_enforcement==="strict")&&(e.workflow_enforcement=t.workflow_enforcement),t.require_close_reason===!1&&(e.require_close_reason=!1),e.duplicate_detection_mode=t.duplicate_detection_mode,e.duplicate_detection_threshold=t.duplicate_detection_threshold,e.duplicate_detection_limit=t.duplicate_detection_limit,e}function Bl(e){return e.preset==="custom"?Ui({preset:"custom",ownership_enforcement:e.ownership_enforcement,create_mode_default:e.create_mode_default,close_validation_default:e.close_validation_default,parent_reference:e.parent_reference,metadata_profile:e.metadata_profile,force_required_for_stale_lock:e.force_required_for_stale_lock},e):Ui({preset:e.preset},e)}function Vl(e){let t=typeof e.create_default_type=="string"?e.create_default_type.trim():void 0,n={};t&&t.length>0&&(n.create_default_type=t),(e.workflow_enforcement==="off"||e.workflow_enforcement==="warn"||e.workflow_enforcement==="strict")&&(n.workflow_enforcement=e.workflow_enforcement),typeof e.require_close_reason=="boolean"&&(n.require_close_reason=e.require_close_reason),Wl.has(String(e.duplicate_detection_mode))&&(n.duplicate_detection_mode=e.duplicate_detection_mode);let r=e.duplicate_detection_threshold;[typeof r=="number",Number.isFinite(r),Number(r)>=0,Number(r)<=1].every(Boolean)&&(n.duplicate_detection_threshold=r);let o=e.duplicate_detection_limit;return[typeof o=="number",Number.isSafeInteger(o),Number(o)>=0,Number(o)<=20].every(Boolean)&&(n.duplicate_detection_limit=o),n}function sn(e){let t=e.governance??{},n=ql(t.preset),r=Vl(t);if(n==="custom"){let s=zi("default"),a=r.require_close_reason??s.require_close_reason;return{preset:n,ownership_enforcement:t.ownership_enforcement??s.ownership_enforcement,create_mode_default:t.create_mode_default??s.create_mode_default,close_validation_default:t.close_validation_default??s.close_validation_default,parent_reference:t.parent_reference??s.parent_reference,metadata_profile:t.metadata_profile??s.metadata_profile,force_required_for_stale_lock:t.force_required_for_stale_lock??s.force_required_for_stale_lock,...r,require_close_reason:a,duplicate_detection_mode:r.duplicate_detection_mode??s.duplicate_detection_mode,duplicate_detection_threshold:r.duplicate_detection_threshold??s.duplicate_detection_threshold,duplicate_detection_limit:r.duplicate_detection_limit??s.duplicate_detection_limit}}let o=zi(n),i=r.require_close_reason??o.require_close_reason;return{preset:n,...o,...r,require_close_reason:i}}function Bi(){return structuredClone(b)}function Vi(e){return e==="cache_only"||e==="semantic_configured"||e==="semantic_auto"?e:b.search.mutation_refresh_policy}function Gi(e){return typeof e=="boolean"?e:b.search.query_expansion.enabled}function Xi(e){return typeof e!="string"?b.search.query_expansion.provider:e.trim()}function Ki(e){return typeof e=="boolean"?e:b.search.rerank.enabled}function Ji(e){return typeof e!="string"?b.search.rerank.model:e.trim()}function Yi(e){return typeof e=="number"&&Number.isFinite(e)&&Number.isInteger(e)&&e>0?e:b.search.rerank.top_k}function Qi(e){if(typeof e!="string")return b.vector_store.collection_name;let n=e.trim().replaceAll(/[^a-zA-Z0-9_-]/g,"_").slice(0,Hl);return n.length>0?n:b.vector_store.collection_name}function ur(e){return{present:Array.isArray(e),values:Array.isArray(e)?structuredClone(e):[]}}function Gl(e,t){let n=e.schema,r=ur(n?.statuses),o=ur(n?.fields),i=ur(n?.type_workflows);return{source_settings:structuredClone(e),has_source_item_type_definitions:Array.isArray(e.item_types?.definitions),source_item_type_definitions:Le(e.item_types?.definitions),has_source_schema_statuses:r.present,source_schema_statuses:r.values,has_source_schema_fields:o.present,source_schema_fields:o.values,has_source_schema_type_workflows:i.present,source_schema_type_workflows:i.values,runtime_item_type_definitions:Le(t.item_types?.definitions),runtime_schema_statuses:structuredClone(t.schema.statuses),runtime_schema_fields:structuredClone(t.schema.fields),runtime_schema_type_workflows:structuredClone(t.schema.type_workflows??[])}}function Zi(e,t){Object.defineProperty(e,qi,{value:t,writable:!0,configurable:!0,enumerable:!1})}function es(e){let t=e[qi];if(!(!t||typeof t!="object"))return t}function on(e){let t=structuredClone(e.settings),n=es(e.settings);return n&&Zi(t,n),{settings:t,metadata:{has_explicit_item_format:e.metadata.has_explicit_item_format},warnings:[...e.warnings]}}function Xl(e,t,n){let r=Ue(t);return[n,He(e,r.files.types,ze.types),He(e,r.files.statuses,ze.statuses),He(e,r.files.fields,ze.fields),He(e,r.files.workflows,ze.workflows)]}async function Kl(e,t,n){let r=await de(t);rn(e,{tracked_paths:t,signatures:r,value:on(n)})}async function Jl(e,t,n){try{await Kl(e,t,n)}catch{le(e)}}function Hi(e,t){return e.find(n=>n.path===t)}function Yl(e,t,n){for(let r of n){let o=Hi(e,r),i=Hi(t,r);if(!o||!i||!it([o],[i]))return!1}return!0}async function fr(e,t,n,r,o){try{let i=await de(t);if(!Yl(r,i,o)){le(e);return}rn(e,{tracked_paths:t,signatures:i,value:on(n)})}catch{le(e)}}function Ql(e,t){let n=Ue(e.schema),r=Le(e.item_types?.definitions);if(!t)return{item_type_definitions:r,schema_statuses:n.statuses,schema_fields:n.fields,schema_type_workflows:n.type_workflows};let o=n.type_workflows??[],i=ke(r,t.runtime_item_type_definitions),s=ke(n.statuses,t.runtime_schema_statuses),a=ke(n.fields,t.runtime_schema_fields),d=ke(o,t.runtime_schema_type_workflows);return{item_type_definitions:i?t.has_source_item_type_definitions?Le(t.source_item_type_definitions):[]:r,schema_statuses:s?t.has_source_schema_statuses?structuredClone(t.source_schema_statuses):[]:n.statuses,schema_fields:a?t.has_source_schema_fields?structuredClone(t.source_schema_fields):[]:n.fields,schema_type_workflows:d?t.has_source_schema_type_workflows?structuredClone(t.source_schema_type_workflows):void 0:n.type_workflows}}function st(e){return{settings:Bi(),metadata:{has_explicit_item_format:!1},warnings:e?[e]:[]}}function Zl(e){if(typeof e!="object"||e===null||Array.isArray(e))return!1;let t=e.item_format;return t==="toon"||t==="json_markdown"}function _r(e){return[...new Set((e??[]).map(t=>t.trim()).filter(t=>t.length>0))].sort((t,n)=>t.localeCompare(n))}function ts(e){let t=b.agent_guidance,n=e?.template_version;return{prompt_completed:e?.prompt_completed===!0,declined:e?.declined===!0,declined_at:typeof e?.declined_at=="string"?e.declined_at:t.declined_at,template_version:typeof n=="number"&&Number.isInteger(n)&&n>0?n:t.template_version,last_checked_files:_r(e?.last_checked_files??t.last_checked_files)}}function V(e){return[...new Set((e??[]).map(t=>t.trim().toLowerCase()).filter(t=>t.length>0))].sort((t,n)=>t.localeCompare(n))}function eu(e){return e==="off"||e==="warn"||e==="enforce"?e:b.extensions.policy.mode}function tu(e){return e==="off"||e==="warn"||e==="enforce"?e:b.extensions.policy.trust_mode}function ns(e){return e==="none"||e==="restricted"||e==="strict"?e:b.extensions.policy.default_sandbox_profile}function nu(e){let t=e.name.trim().toLowerCase();if(t.length===0)return null;let n={name:t};e.disabled===!0&&(n.disabled=!0),e.require_trusted===!0&&(n.require_trusted=!0),e.require_provenance===!0&&(n.require_provenance=!0),e.sandbox_profile!==void 0&&(n.sandbox_profile=ns(e.sandbox_profile));let r=V(e.allowed_capabilities),o=V(e.blocked_capabilities),i=V(e.allowed_surfaces),s=V(e.blocked_surfaces),a=V(e.allowed_commands),d=V(e.blocked_commands),l=V(e.allowed_actions),m=V(e.blocked_actions),f=V(e.allowed_services),h=V(e.blocked_services);return r.length>0&&(n.allowed_capabilities=r),o.length>0&&(n.blocked_capabilities=o),i.length>0&&(n.allowed_surfaces=i),s.length>0&&(n.blocked_surfaces=s),a.length>0&&(n.allowed_commands=a),d.length>0&&(n.blocked_commands=d),l.length>0&&(n.allowed_actions=l),m.length>0&&(n.blocked_actions=m),f.length>0&&(n.allowed_services=f),h.length>0&&(n.blocked_services=h),n}function ru(e){let t=new Map;for(let n of e??[]){let r=nu(n);r&&t.set(r.name,r)}return[...t.values()].sort((n,r)=>n.name.localeCompare(r.name))}function mr(e){return e==="block"||e==="warn"?e:void 0}function ou(e){if(typeof e=="string")return mr(e);if(typeof e=="object"&&e!==null&&!Array.isArray(e)){let t=mr(e.global),n=mr(e.project);return t===void 0&&n===void 0?void 0:{...t!==void 0?{global:t}:{},...n!==void 0?{project:n}:{}}}}function z(e,t){return V(e?.[t]??b.extensions.policy[t])}function rs(e){let t=ou(e?.pm_max_version_exceeded_mode);return{mode:eu(e?.mode),trust_mode:tu(e?.trust_mode),...t!==void 0?{pm_max_version_exceeded_mode:t}:{},require_provenance:e?.require_provenance===!0,trusted_extensions:z(e,"trusted_extensions"),default_sandbox_profile:ns(e?.default_sandbox_profile),allowed_extensions:z(e,"allowed_extensions"),blocked_extensions:z(e,"blocked_extensions"),allowed_capabilities:z(e,"allowed_capabilities"),blocked_capabilities:z(e,"blocked_capabilities"),allowed_surfaces:z(e,"allowed_surfaces"),blocked_surfaces:z(e,"blocked_surfaces"),allowed_commands:z(e,"allowed_commands"),blocked_commands:z(e,"blocked_commands"),allowed_actions:z(e,"allowed_actions"),blocked_actions:z(e,"blocked_actions"),allowed_services:z(e,"allowed_services"),blocked_services:z(e,"blocked_services"),extension_overrides:ru(e?.extension_overrides??b.extensions.policy.extension_overrides)}}function os(e){return[...new Set((e??[]).map(n=>n.trim().toLowerCase().replaceAll("-","_")))].filter(n=>n.length>0).sort((n,r)=>n.localeCompare(r)).filter(n=>["author","acceptance_criteria","estimated_minutes","close_reason","reviewer","risk","confidence","sprint","release"].includes(n))}function ue(e){return[...new Set((e??[]).map(t=>t.trim().toLowerCase()).filter(t=>t.length>0))].sort((t,n)=>t.localeCompare(n))}function D(e,t){return e===void 0?t:e}function U(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:{}}function pr(e){return Array.isArray(e)?e:[]}function iu(e,t,n){return{...t.validation,...e.validation,parent_reference:n.parent_reference,metadata_profile:n.metadata_profile,metadata_required_fields:os(e.validation?.metadata_required_fields),lifecycle_stale_blocker_reason_patterns:ue(e.validation?.lifecycle_stale_blocker_reason_patterns??t.validation.lifecycle_stale_blocker_reason_patterns),lifecycle_closure_like_blocked_reason_patterns:ue(e.validation?.lifecycle_closure_like_blocked_reason_patterns??t.validation.lifecycle_closure_like_blocked_reason_patterns),lifecycle_closure_like_resolution_patterns:ue(e.validation?.lifecycle_closure_like_resolution_patterns??t.validation.lifecycle_closure_like_resolution_patterns),lifecycle_closure_like_actual_result_patterns:ue(e.validation?.lifecycle_closure_like_actual_result_patterns??t.validation.lifecycle_closure_like_actual_result_patterns),estimate_defaults_by_type:lr(e.validation?.estimate_defaults_by_type)}}function su(e,t){return{enabled:e.telemetry?.enabled??t.telemetry.enabled,first_run_prompt_completed:e.telemetry?.first_run_prompt_completed??t.telemetry.first_run_prompt_completed,capture_level:e.telemetry?.capture_level??t.telemetry.capture_level,endpoint:e.telemetry?.endpoint??t.telemetry.endpoint,installation_id:e.telemetry?.installation_id??t.telemetry.installation_id,retention_days:e.telemetry?.retention_days??t.telemetry.retention_days}}function au(e,t){return{...t.search,...e.search,mutation_refresh_policy:Vi(e.search?.mutation_refresh_policy),query_expansion:{...t.search.query_expansion,...e.search?.query_expansion,enabled:Gi(e.search?.query_expansion?.enabled),provider:Xi(e.search?.query_expansion?.provider)},rerank:{...t.search.rerank,...e.search?.rerank,enabled:Ki(e.search?.rerank?.enabled),model:Ji(e.search?.rerank?.model),top_k:Yi(e.search?.rerank?.top_k)}}}function cu(e,t){return{adapter:e.vector_store.adapter??t.vector_store.adapter,collection_name:Qi(e.vector_store.collection_name),qdrant:{...t.vector_store.qdrant,...e.vector_store.qdrant},lancedb:{...t.vector_store.lancedb,...e.vector_store.lancedb}}}function du(e,t){return e.item_format==="json_markdown"?"toon":e.item_format??t.item_format}function lu(e,t){return{default_depth:e.context?.default_depth??t.context.default_depth,activity_limit:e.context?.activity_limit??t.context.activity_limit,stale_threshold_days:e.context?.stale_threshold_days??t.context.stale_threshold_days,sections:{...t.context.sections,...e.context?.sections}}}function uu(e,t){return{openai:{...t.providers.openai,...e.providers.openai},ollama:{...t.providers.ollama,...e.providers.ollama}}}function Le(e){let t=(e??[]).map(r=>Or(r)).filter(r=>r!==null),n=new Map;for(let r of t)n.set(r.name.toLowerCase(),r);return[...n.values()].sort((r,o)=>r.name.localeCompare(o.name))}function is(e){let t=Bi(),n=sn({governance:e.governance??{preset:"default"}});return{...t,...e,item_format:du(e,t),locks:{...t.locks,...e.locks},ids:{...t.ids,...e.ids},agent_identity:structuredClone(e.agent_identity??t.agent_identity),mutation_guard:{...t.mutation_guard,...e.mutation_guard},checkpoints:{...t.checkpoints,...e.checkpoints},output:{...t.output,...e.output},history:{...t.history,...e.history,compact_policy:{...t.history.compact_policy,...e.history?.compact_policy}},validation:iu(e,t,n),governance:n,workflow:{definition_of_done:[...e.workflow?.definition_of_done??t.workflow.definition_of_done]},testing:{record_results_to_items:e.testing?.record_results_to_items??t.testing.record_results_to_items},telemetry:su(e,t),agent_guidance:ts(e.agent_guidance??t.agent_guidance),item_types:{definitions:Le(e.item_types?.definitions)},schema:Ue(e.schema??t.schema),context:lu(e,t),extensions:{enabled:[...e.extensions.enabled],disabled:[...e.extensions.disabled],policy:rs(e.extensions.policy??t.extensions.policy)},search:au(e,t),providers:uu(e,t),vector_store:cu(e,t)}}function fu(e){e.agent_identity=E(e.agent_identity,["probes_enabled","identity_vocabulary","harness_signals"]);let t=e.agent_identity;Object.hasOwn(t,"identity_vocabulary")&&(t.identity_vocabulary=E(U(t.identity_vocabulary),["version","aliases"])),e.agent_identity.harness_signals=pr(e.agent_identity.harness_signals).map(n=>E(U(n),["harness","environment_keys","model_environment_keys","session_environment_keys","provenance_environment_keys","provenance_resolvers","provenance_unavailable_dimensions","argv_markers","client_names"])),e.locks=E(e.locks,["ttl_seconds","wait_ms"]),e.ids=E(e.ids,["token_length"]),e.mutation_guard=E(e.mutation_guard,["require_attributed_author","secret_guard","stale_in_progress_hours"]),e.checkpoints=E(e.checkpoints,["retention_days"]),e.output=E(e.output,["default_format"]),e.history=E(e.history,["missing_stream","compact_policy"]),e.validation=E(e.validation,["sprint_release_format","parent_reference","metadata_profile","metadata_required_fields","lifecycle_stale_blocker_reason_patterns","lifecycle_closure_like_blocked_reason_patterns","lifecycle_closure_like_resolution_patterns","lifecycle_closure_like_actual_result_patterns","estimate_defaults_by_type"]),e.governance=E(e.governance,["preset","ownership_enforcement","create_mode_default","close_validation_default","require_close_reason","parent_reference","metadata_profile","force_required_for_stale_lock","create_default_type","workflow_enforcement","duplicate_detection_mode","duplicate_detection_threshold","duplicate_detection_limit"]),e.workflow=E(e.workflow,["definition_of_done"]),e.testing=E(e.testing,["record_results_to_items"]),e.telemetry=E(e.telemetry,["enabled","first_run_prompt_completed","capture_level","endpoint","installation_id","retention_days"]),e.agent_guidance=E(e.agent_guidance,["prompt_completed","declined","declined_at","template_version","last_checked_files"]),e.item_types=E(e.item_types,["definitions"]),e.schema=E(e.schema,["version","files","statuses","fields","workflow","type_workflows","unknown_field_policy"]),e.schema.files=E(U(e.schema.files),["types","statuses","fields","workflows"]),e.schema.workflow=E(U(e.schema.workflow),["draft_status","open_status","in_progress_status","blocked_status","close_status","canceled_status"]),e.context=E(e.context,["default_depth","activity_limit","stale_threshold_days","sections"]),e.context.sections=E(U(e.context.sections),["hierarchy","activity","progress","blockers","files","workload","staleness","tests"]),e.extensions=E(e.extensions,["enabled","disabled","policy"]),e.extensions.policy=E(U(e.extensions.policy),["mode","trust_mode","pm_max_version_exceeded_mode","require_provenance","trusted_extensions","default_sandbox_profile","allowed_extensions","blocked_extensions","allowed_capabilities","blocked_capabilities","allowed_surfaces","blocked_surfaces","allowed_commands","blocked_commands","allowed_actions","blocked_actions","allowed_services","blocked_services","extension_overrides"]),e.extensions.policy.extension_overrides=pr(e.extensions.policy.extension_overrides).map(n=>E(U(n),["name","disabled","require_trusted","require_provenance","sandbox_profile","allowed_capabilities","blocked_capabilities","allowed_surfaces","blocked_surfaces","allowed_commands","blocked_commands","allowed_actions","blocked_actions","allowed_services","blocked_services"])),e.search=E(e.search,["score_threshold","hybrid_semantic_weight","max_results","embedding_model","embedding_corpus_max_characters","embedding_batch_size","embedding_timeout_ms","scanner_max_batch_retries","provider","mutation_refresh_policy","query_expansion","rerank"]),e.search.query_expansion=E(U(e.search.query_expansion),["enabled","provider"]),e.search.rerank=E(U(e.search.rerank),["enabled","model","top_k"]),e.providers=E(e.providers,["openai","ollama"]),e.providers.openai=E(U(e.providers.openai),["base_url","api_key","model"]),e.providers.ollama=E(U(e.providers.ollama),["base_url","model"]),e.vector_store=E(e.vector_store,["adapter","collection_name","qdrant","lancedb"]),e.vector_store.qdrant=E(U(e.vector_store.qdrant),["url","api_key"]),e.vector_store.lancedb=E(U(e.vector_store.lancedb),["path"])}function mu(e){return{...e,locks:D(e.locks,b.locks),ids:D(e.ids,b.ids),agent_identity:D(e.agent_identity,b.agent_identity),mutation_guard:D(e.mutation_guard,b.mutation_guard),checkpoints:D(e.checkpoints,b.checkpoints),output:D(e.output,b.output),history:D(e.history,b.history),validation:D(e.validation,b.validation),workflow:D(e.workflow,b.workflow),testing:D(e.testing,b.testing),telemetry:D(e.telemetry,b.telemetry),agent_guidance:D(e.agent_guidance,b.agent_guidance),item_types:D(e.item_types,b.item_types),schema:D(e.schema,b.schema),context:D(e.context,b.context),extensions:D(e.extensions,b.extensions),search:D(e.search,b.search),providers:D(e.providers,b.providers),vector_store:D(e.vector_store,b.vector_store)}}function _u(e,t){return{...e.validation,parent_reference:t.parent_reference,metadata_profile:t.metadata_profile,metadata_required_fields:os(e.validation?.metadata_required_fields),lifecycle_stale_blocker_reason_patterns:ue(e.validation?.lifecycle_stale_blocker_reason_patterns??b.validation.lifecycle_stale_blocker_reason_patterns),lifecycle_closure_like_blocked_reason_patterns:ue(e.validation?.lifecycle_closure_like_blocked_reason_patterns??b.validation.lifecycle_closure_like_blocked_reason_patterns),lifecycle_closure_like_resolution_patterns:ue(e.validation?.lifecycle_closure_like_resolution_patterns??b.validation.lifecycle_closure_like_resolution_patterns),lifecycle_closure_like_actual_result_patterns:ue(e.validation?.lifecycle_closure_like_actual_result_patterns??b.validation.lifecycle_closure_like_actual_result_patterns),estimate_defaults_by_type:lr(e.validation?.estimate_defaults_by_type)}}function pu(e){return{...b.search,...e.search,mutation_refresh_policy:Vi(e.search?.mutation_refresh_policy),query_expansion:{...b.search.query_expansion,...e.search?.query_expansion,enabled:Gi(e.search?.query_expansion?.enabled),provider:Xi(e.search?.query_expansion?.provider)},rerank:{...b.search.rerank,...e.search?.rerank,enabled:Ki(e.search?.rerank?.enabled),model:Ji(e.search?.rerank?.model),top_k:Yi(e.search?.rerank?.top_k)}}}function yu(e){return{default_depth:e.context?.default_depth??b.context.default_depth,activity_limit:e.context?.activity_limit??b.context.activity_limit,stale_threshold_days:e.context?.stale_threshold_days??b.context.stale_threshold_days,sections:{...b.context.sections,...e.context?.sections}}}function hu(e){return{...e.vector_store,adapter:e.vector_store?.adapter??b.vector_store.adapter,collection_name:Qi(e.vector_store?.collection_name),qdrant:{...e.vector_store?.qdrant},lancedb:{...e.vector_store?.lancedb}}}function gu(e,t,n,r){return{...e,item_format:"toon",validation:_u(e,t),governance:t,agent_guidance:ts(e.agent_guidance),item_types:{definitions:r.item_type_definitions},schema:{...n,statuses:r.schema_statuses,fields:r.schema_fields,type_workflows:r.schema_type_workflows},search:pu(e),context:yu(e),extensions:{enabled:_r(e.extensions?.enabled),disabled:_r(e.extensions?.disabled),policy:rs(e.extensions?.policy)},vector_store:hu(e)}}function ss(e,t,n){let r=new Set([...Object.keys(t),...Object.keys(n)]);for(let o of r){let i=t[o],s=n[o];if(!ke(i,s)){if(s===void 0){delete e[o];continue}if(typeof i=="object"&&i!==null&&!Array.isArray(i)&&typeof s=="object"&&s!==null&&!Array.isArray(s)){let a=e[o],d=typeof a=="object"&&a!==null&&!Array.isArray(a)?a:{};ss(d,i,s),Object.keys(d).length>0?e[o]=d:delete e[o];continue}e[o]=structuredClone(s)}}}var as=["version","id_prefix","ids","author_default","agent_identity","mutation_guard","item_format","locks","checkpoints","output","history","validation","governance","workflow","testing","telemetry","agent_guidance","item_types","schema","context","extensions","search","providers","vector_store"];function Wi(e,t){let n=mu(e),r=sn(n),o=Ue(n.schema),i=Ql(n,t),s=gu(n,r,o,i),a=E({...s,governance:Bl(r)},as);return fu(a),a}function bu(e,t={}){let n=Wi(e,t.persist_source);if(t.persist_source){let r=is(t.persist_source.source_settings);r.item_types={definitions:structuredClone(t.persist_source.runtime_item_type_definitions)},r.schema={...r.schema,statuses:structuredClone(t.persist_source.runtime_schema_statuses),fields:structuredClone(t.persist_source.runtime_schema_fields),type_workflows:structuredClone(t.persist_source.runtime_schema_type_workflows)};let o=Wi(r,t.persist_source),i=structuredClone(t.persist_source.source_settings);return ss(i,o,n),`${JSON.stringify(E(i,as),null,2)}
151
151
  `}return`${JSON.stringify(n,null,2)}
152
152
  `}async function cs(e){let t=mn(e),n=[t];await X({path:t,scope:"project"});let r=$i(e);if(r){let l=await de(r.tracked_paths);if(it(l,r.signatures))return on(r.value)}let o=await de([t]),i;try{i=await Ee(t)}catch{return st("settings_read_fs_error")}if(i===null){let l=st();return await fr(e,[t],l,o,[t]),l}let s=await de([t]);if(!it(o,s))return le(e),cs(e);let a;try{a=JSON.parse(i)}catch{let l=st("settings_read_invalid_json");return await fr(e,[t],l,s,[t]),l}let d=Mi(a);if(!d.success){let l=st("settings_read_invalid_schema");return await fr(e,[t],l,s,[t]),l}try{let l=is(d.data),m=Xl(e,l.schema,t);n=m;let f=await de(m),h=await zr(e,l.schema),_=await Ur(e,l.schema),S=await de(m),v={...l,item_types:{definitions:Le([...l.item_types.definitions,...pr(_.type_definitions_from_file)])},schema:_.schema};Zi(v,Gl(d.data,v));let w={settings:v,metadata:{has_explicit_item_format:Zl(a)},warnings:[...d.data.item_format==="json_markdown"?["settings_item_format_legacy_json_markdown_coerced_to_toon"]:[],...h.created_paths.map(R=>`runtime_schema_bootstrap_created:${R}`),..._.warnings]};return h.created_paths.length===0?it(f,S)?rn(e,{tracked_paths:m,signatures:S,value:on(w)}):le(e):le(e),w}catch{let l=st("settings_read_merge_failed");return await Jl(e,n,l),l}}async function qp(e){return(await cs(e)).settings}async function Bp(e,t,n=Ul){let r=mn(e),o=bu(t,{persist_source:es(t)});try{await Di({pmRoot:e,filePath:r,raw:o,op:n,author:so(void 0,t.author_default),lockTtlSeconds:t.locks.ttl_seconds,lockWaitMs:t.locks.wait_ms,recordCreation:!1}),await B({path:r,scope:"project",op:n})}finally{le(e)}}import wu from"node:fs/promises";import Eu from"node:path";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="58fd6fef-9c13-5c6a-9110-b760461896aa")}catch{}})();function ku(e){return[...new Set(e.filter(t=>t.trim().length>0))].sort((t,n)=>t.localeCompare(n))}function Su(e,t){return new T(`Missing history stream for ${e}. ${t} requires history streams when settings.history.missing_stream is strict_error.`,I.NOT_FOUND)}async function vu(e,t){return await Tr(Eu.dirname(e)),await(await wu.open(e,"a")).close(),B({path:e,scope:"project",op:`${t}:history:auto_create`})}async function yr(e){return Iu({pmRoot:e.pmRoot,settings:e.settings,itemIds:[e.itemId],commandLabel:e.commandLabel})}async function Iu(e){let t=ku(e.itemIds),n=[],r=[];for(let o of t){let i=$e(e.pmRoot,o);if(!await pt(i)){if(e.settings.history.missing_stream==="strict_error")throw Su(o,e.commandLabel);r.push(...await vu(i,e.commandLabel)),r.push(`history_stream_auto_created:${o}`),n.push(o)}}return{auto_created_ids:n,warnings:r}}import fe from"node:fs/promises";import Pe 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]="f43e1170-e797-5a0c-b02e-d31e002ab275")}catch{}})();async function xu(e){try{return await fe.access(e),!0}catch{return!1}}function an(e,t){return typeof e=="object"&&e!==null&&"code"in e&&e.code===t}function Tu(e,t){e&&(e.includes(t)||e.push(t))}function ds(e){return e??_t(Xe())}function Ou(e){return e==="toon"?["toon","json_markdown"]:e==="json_markdown"?["json_markdown","toon"]:["toon","json_markdown"]}function cn(e){return new T(`Tracker root is not a directory at ${e}.`,I.USAGE,{code:"tracker_root_not_directory",reason:"not_a_directory",nextSteps:["Pass the tracker directory itself, usually <workspace>/.agents/pm."]})}async function Cu(e){let t=Pe.parse(Pe.resolve(e)).root,n=Pe.dirname(Pe.resolve(e));for(;n!==t;){let r;try{r=await fe.stat(n)}catch(o){if(an(o,"ENOTDIR"))throw cn(e);if(!an(o,"ENOENT"))throw o;n=Pe.dirname(n);continue}if(!r.isDirectory())throw cn(e);break}}async function hr(e){let t;try{t=await fe.stat(e)}catch(n){throw an(n,"ENOENT")?(await Cu(e),new T(`Tracker root does not exist at ${e}.`,I.NOT_FOUND,{code:"tracker_root_missing",reason:"missing",nextSteps:["Confirm the tracker root path and retry the SDK read.","Initialize a tracker before enumerating its item metadata."]})):an(n,"ENOTDIR")?cn(e):n}if(!t.isDirectory())throw cn(e)}async function ls(e,t,n="pm-",r,o=me){let i=Jn(t,n),s=Kn(t),a=i===s?[i]:[i,s],d=Object.entries(o),l=Ou(r);for(let m of a)for(let[f]of d)for(let h of l){let _=_n(e,f,m,h,o);if(await xu(_))return{id:m,type:f,itemPath:_,item_format:h}}return null}async function us(e,t={}){let n=await fe.readFile(e.itemPath,"utf8");await X({path:e.itemPath,scope:"project"});let r=Ot(n,{format:e.item_format,schema:t.schema,extensionFieldNames:ds(t.extensionFieldNames),onWarning:o=>Tu(t.warnings,o)});return{raw:n,document:r}}async function Au(e,t,n=me,r,o){return await hr(e),(await Ti(e,t,n,r,o)).map(s=>s.metadata)}async function wy(e,t,n=me,r,o){return await hr(e),(await Oi(e,t,n,r,o)).map(s=>s.metadata)}async function Ey(e,t,n=me,r,o,i={}){return await hr(e),(await Zt(e,t,n,r,o,{includeBody:!0,forceSourceScan:i.forceSourceScan})).map(a=>({...a.metadata,body:a.body}))}function fs(e){return{async get(t){let n=await ls(e.pmRoot,t,e.settings.id_prefix,e.settings.item_format,e.typeToFolder);if(!n)return null;let{document:r}=await us(n,{schema:e.settings.schema});return{item:r.metadata,body:r.body}},list:()=>Au(e.pmRoot,e.settings.item_format,e.typeToFolder,void 0,e.settings.schema)}}async function Ru(e,t){let n=new Set(Object.values(t)),r=[];return await Promise.all([...n].map(async o=>{try{let i=await fe.readdir(Pe.join(e,o));for(let s of i)for(let a of yt)if(s.toLowerCase().endsWith(a)){r.push(s.slice(0,-a.length));break}}catch{}})),r}async function Nu(e,t,n,r){let o=Jn(t,n),i=await Ru(e,r);if(i.length===0)return[];let s=Math.max(3,Math.floor(o.length/2));return i.map(d=>({id:d,distance:br(d,o,s)})).filter(d=>d.distance!==null).sort((d,l)=>d.distance-l.distance).slice(0,3).map(d=>d.id)}async function Du(e,t,n,r){let o=await Nu(e,t,n,r),i=["Confirm the active --path/PM_PATH scope, then retry with a valid id."];return o.length>0&&i.unshift(`Did you mean one of: ${o.join(", ")}?`),new T(`Item ${t} not found`,I.NOT_FOUND,{nextSteps:i})}function Mu(e,t){return e==="claim"||t===!0&&(e==="comment_add"||e==="comment_edit"||e==="comment_delete"||e==="note_add"||e==="learning_add"||e==="release"||e==="update"||e==="update_ownership_bypass"||e==="update_audit")}async function ms(e){let t=e.typeToFolder??Cr(e.settings,Xe()).type_to_folder,n=await ls(e.pmRoot,e.id,e.settings.id_prefix,e.settings.item_format,t);if(!n)throw await Du(e.pmRoot,e.id,e.settings.id_prefix,t);let r=await ae(e.pmRoot,n.id,e.settings.locks.ttl_seconds,e.author,!!e.force,e.settings.governance.force_required_for_stale_lock,e.settings.locks.wait_ms);try{let o=[],{raw:i,document:s}=await us(n,{schema:e.settings.schema,extensionFieldNames:e.extensionFieldNames,warnings:o}),a=s.metadata.assignee?.trim(),d=s.metadata.claim_principal?.trim()||a,l=io(e.author),m=sn(e.settings);if(a&&d!==l&&!e.force&&!Mu(e.op,e.bypassAssigneeConflict)){if(m.ownership_enforcement==="strict")throw new T(`Item ${n.id} is assigned to ${a}. Use --force to override.`,I.CONFLICT);m.ownership_enforcement==="warn"&&o.push(`ownership_warning:assignee_conflict:${n.id}:${a}`)}return{typeToFolder:t,located:n,originalRaw:i,document:s,warnings:o,releaseLock:r}}catch(o){throw await r(),o}}function Lu(e,t,n){if(!e.handled||typeof e.result!="object"||e.result===null)return{effectiveTargetItemPath:t,effectiveSerializedAfter:n,skipItemWrite:!1};let r=e.result;return{effectiveTargetItemPath:typeof r.target_item_path=="string"&&r.target_item_path.trim().length>0?r.target_item_path:t,effectiveSerializedAfter:typeof r.contents=="string"?r.contents:n,skipItemWrite:r.skip_write===!0}}async function Pu(e){if(!e.skipItemWrite){if(e.effectiveTargetItemPath!==e.originalItemPath){await W(e.originalItemPath,e.originalRaw),await fe.rm(e.effectiveTargetItemPath,{force:!0});return}await W(e.originalItemPath,e.originalRaw)}}async function ky(e){let t=await ms({pmRoot:e.pmRoot,settings:e.settings,id:e.id,op:e.op,author:e.author,force:e.force,bypassAssigneeConflict:e.bypassAssigneeConflict,extensionFieldNames:e.extensionFieldNames,typeToFolder:e.typeToFolder}),{typeToFolder:n,located:r,originalRaw:o,document:i,warnings:s,releaseLock:a}=t;try{let d=q(i,{schema:e.settings.schema,extensionFieldNames:e.extensionFieldNames}),l=q(structuredClone(i),{schema:e.settings.schema,extensionFieldNames:e.extensionFieldNames}),m=await e.mutate(l);if(e.skipNoop===!0&&m.changedFields.length===0)return{item:d.metadata,body:d.body,changedFields:[],warnings:[...s,...m.warnings??[]]};l.metadata.updated_at=he();let f=q(l,{schema:e.settings.schema,extensionFieldNames:e.extensionFieldNames});await Ln({pm_root:e.pmRoot,operation:e.op,before:d,after:f,changed_fields:m.changedFields,sdk:fs({pmRoot:e.pmRoot,settings:e.settings,typeToFolder:n})});let h=await yr({pmRoot:e.pmRoot,settings:e.settings,itemId:r.id,commandLabel:e.op}),_="toon",S=Co(f,{format:_,schema:e.settings.schema,extensionFieldNames:e.extensionFieldNames}),v=_n(e.pmRoot,f.metadata.type,r.id,_,n),w=$e(e.pmRoot,r.id),R=await Z("item_store_write",{op:e.op,pm_root:e.pmRoot,item_id:r.id,source_item_path:r.itemPath,target_item_path:v,history_path:w,item_format:_,before:d,after:f,contents:S}),{effectiveTargetItemPath:N,effectiveSerializedAfter:J,skipItemWrite:F}=Lu(R,v,S),dn=await ir(e.pmRoot,e.author),at=[];try{F||await W(N,J),!F&&N!==r.itemPath&&await fe.rm(r.itemPath);let ln=Re({nowIso:f.metadata.updated_at,author:e.author,op:e.op,before:d,after:f,message:e.message});try{await Ne(w,ln)}catch(ct){throw await Pu({skipItemWrite:F,effectiveTargetItemPath:N,originalItemPath:r.itemPath,originalRaw:o}),ct}F||(at=await sr({pmRoot:e.pmRoot,preferredFormat:e.settings.item_format,typeToFolder:n,schema:e.settings.schema,itemPath:N,previousItemPath:r.itemPath,document:f}))}finally{await dn()}let Y=[...await B({path:N,scope:"project",op:e.op,item_id:f.metadata.id,item_type:f.metadata.type,before:d,after:f,changed_fields:m.changedFields}),...await B({path:w,scope:"project",op:`${e.op}:history`,item_id:f.metadata.id,item_type:f.metadata.type,before:d,after:f,changed_fields:m.changedFields})];return Mn({id:f.metadata.id,op:e.op,item_type:f.metadata.type,previous_status:d.metadata.status,status:f.metadata.status,previous:Ct(d.metadata,m.changedFields),current:Ct(f.metadata,m.changedFields),changed_fields:m.changedFields}),{item:f.metadata,body:f.body,changedFields:m.changedFields,warnings:[...s,...m.warnings??[],...h.warnings,...R.warnings,...at,...Y]}}finally{await a()}}async function Sy(e){let t=await ms({pmRoot:e.pmRoot,settings:e.settings,id:e.id,op:"delete",author:e.author,force:e.force}),{located:n,originalRaw:r,document:o,warnings:i,releaseLock:s}=t;try{let a=ds(void 0),d=q(o,{schema:e.settings.schema,extensionFieldNames:a});await Ln({pm_root:e.pmRoot,operation:"delete",before:d,after:null,changed_fields:["deleted"],sdk:fs({pmRoot:e.pmRoot,settings:e.settings,typeToFolder:t.typeToFolder})});let l=await yr({pmRoot:e.pmRoot,settings:e.settings,itemId:n.id,commandLabel:"delete"}),m=he(),f=je,h=Re({nowIso:m,author:e.author,op:"delete",before:d,after:f,message:e.message}),_=$e(e.pmRoot,n.id),S=await Z("item_store_delete",{op:"delete",pm_root:e.pmRoot,item_id:n.id,item_path:n.itemPath,history_path:_,before:d}),v=n.itemPath,w=!1;if(S.handled&&typeof S.result=="object"&&S.result!==null){let F=S.result;typeof F.item_path=="string"&&F.item_path.trim().length>0&&(v=F.item_path),F.skip_delete===!0&&(w=!0)}if(e.dryRun===!0)return{item:d.metadata,changedFields:["deleted"],targetPath:v,warnings:[...i,...l.warnings,...S.warnings]};let R=await ir(e.pmRoot,e.author),N=[];try{w||await fe.rm(v);try{await Ne(_,h)}catch(F){throw w||await W(v,r),F}w||(N=await sr({pmRoot:e.pmRoot,preferredFormat:e.settings.item_format,typeToFolder:t.typeToFolder,schema:e.settings.schema,itemPath:v,document:null}))}finally{await R()}let J=[...await B({path:v,scope:"project",op:"delete",item_id:d.metadata.id,item_type:d.metadata.type,before:d,after:f,changed_fields:["deleted"]}),...await B({path:_,scope:"project",op:"delete:history",item_id:d.metadata.id,item_type:d.metadata.type,before:d,after:f,changed_fields:["deleted"]})];return Mn({id:d.metadata.id,op:"delete",item_type:d.metadata.type,previous_status:d.metadata.status,previous:Ct(d.metadata,Object.keys(d.metadata)),changed_fields:["deleted"]}),{item:d.metadata,changedFields:["deleted"],warnings:[...i,...l.warnings,...S.warnings,...N,...J]}}finally{await s()}}export{Vf as a,pc as b,im as c,sm as d,am as e,cm as f,dm as g,lm as h,um as i,fm as j,Xe as k,Mn as l,Ct as m,B as n,Ln as o,X as p,Pn as q,mm as r,_m as s,Z as t,zc as u,pe as v,Gr as w,$u as x,zu as y,Jr as z,bs as A,Xu as B,Ku as C,Ju as D,no as E,Yu as F,Qu as G,Zu as H,Cs as I,io as J,so as K,he as L,j as M,df as N,lf as O,ae as P,go as Q,We as R,kf as S,Sf as T,Ie as U,_o as V,ff as W,po as X,Ks as Y,mf as Z,St as _,Ys as $,hf as aa,vt as ba,Tt as ca,Ot as da,Co as ea,q as fa,Ke as ga,Nm as ha,Dm as ia,Qm as ja,Zm as ka,Vc as la,Ye as ma,Xo as na,y_ as oa,Re as pa,Ne as qa,Zc as ra,Ft as sa,jt as ta,$t as ua,v_ as va,I_ as wa,Yo as xa,zt as ya,Xn as za,x_ as Aa,T_ as Ba,en as Ca,Ai as Da,Sp as Ea,vp as Fa,Di as Ga,Op as Ha,sn as Ia,cs as Ja,qp as Ka,Bp as La,yr as Ma,Iu as Na,ei as Oa,Kn as Pa,Jn as Qa,M_ as Ra,z_ as Sa,U_ as Ta,H_ as Ua,ki as Va,Hd as Wa,ir as Xa,up as Ya,sr as Za,Zt as _a,ls as $a,us as ab,Au as bb,wy as cb,Ey as db,fs as eb,Du as fb,ky as gb,Sy as hb};
153
- //# sourceMappingURL=chunk-7J5TUBUJ.js.map
153
+ //# sourceMappingURL=chunk-GEYU23YS.js.map
@@ -1,2 +1,2 @@
1
- import{$a as P,Ba as tt,Ia as et,K as V,Ka as rt,L as S,P as W,Pa as nt,Qa as ot,Xa as it,Za as st,ab as D,ea as Y,fa as X,ga as J,k as z,ma as p,n as C,pa as K,ra as _,ta as d,ua as L,ya as Q,za as Z}from"./chunk-7J5TUBUJ.js";import{D as M,J as G,M as B,N as q,P as j,p as k,q as H,r as m}from"./chunk-BIMTMOS7.js";import{Y as c,Z as l}from"./chunk-Y4LDYLLT.js";(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="47c087c2-124a-58b7-a5c9-09403235f4a2")}catch{}})();function yt(t,e){let n=-1;return t.forEach((r,o)=>{let i=Date.parse(r.ts);if(!Number.isFinite(i))throw new l(`History for this item contains invalid timestamp at entry ${o+1}.`,c.GENERIC_FAILURE);i<=e&&(n=o)}),n}function wt(t){let e=t[0]?.ts??null,n=t.at(-1)?.ts??null,r={code:"history_target_out_of_range",required:"Choose a target within the available item history.",why:"Point-in-time reads and restores can only reconstruct recorded versions.",examples:[],nextSteps:["Run pm history <id> to inspect available versions and timestamps."],valid_range:{first_version:null,last_version:null,first_timestamp:e,last_timestamp:n}};return n!==null&&(r.examples=["1",String(t.length),n],r.valid_range.first_version=1,r.valid_range.last_version=t.length),{guidance:r,lastTimestamp:n}}function pt(t,e){let n={};if(e instanceof Error&&e.message.trim().length>0&&(n.reason=e.message.trim()),typeof e!="object"||e===null)return n;let r=e;if(typeof r.index=="number"&&Number.isInteger(r.index)&&r.index>=0&&(n.patchIndex=r.index),typeof r.operation=="object"&&r.operation!==null){let o=r.operation;Object.assign(n,Object.fromEntries(["op","path","from"].flatMap(i=>{let s=o[i];return typeof s=="string"?[[i,s]]:[]})))}if(n.patchIndex!==void 0){let o=t[n.patchIndex];o&&(n.op??=o.op,n.path??=o.path,n.from??=o.from)}return n}function Mt(t,e,n={}){let r=t.trim(),o=n.errorSubject??"history",i=o==="restore"?"Restore":"History",{guidance:s,lastTimestamp:a}=wt(e);if(!r)throw new l(`Missing ${o} target. Use a timestamp or version number.`,c.USAGE,s);if(/^\d+$/.test(r)){let u=Number(r);if(!Number.isSafeInteger(u)||u<1||u>e.length)throw new l(`${i} version must be between 1 and ${e.length} for this item.`,c.USAGE,s);return{kind:"version",raw:r,historyIndex:u-1}}let h=Date.parse(r);if(!Number.isFinite(h))throw new l(`Invalid ${o} target "${t}". Use a positive version number or ISO timestamp.`,c.USAGE,s);let f=yt(e,h);if(f<0||n.allowFutureTimestamp!==!0&&h>Date.parse(a))throw new l(o==="restore"?`No history entries exist at or before timestamp ${r}.`:`No history entry exists at timestamp ${r}.`,c.USAGE,s);return{kind:"timestamp",raw:r,historyIndex:f}}function A(t,e,n,r){let o=Q(t,e);if(o.ok)return o.document;let i=pt(e,o.error),s=[`history_op=${r}`,i.patchIndex===void 0?null:`patch_index=${i.patchIndex}`,i.op?`op=${i.op}`:null,i.path?`path=${i.path}`:null,i.from?`from=${i.from}`:null].filter(a=>a!==null);throw new l(`Failed to apply history patch at entry ${n} (${s.join(", ")}). ${i.reason??String(o.error)}`,c.GENERIC_FAILURE)}function Gt(t,e){let n=structuredClone(_);for(let r=0;r<=e;r+=1){let o=t[r];if(!o)throw new l(`History target entry ${r+1} does not exist.`,c.USAGE);if(d(n)!==o.before_hash)throw new l(`History hash mismatch before replay at entry ${r+1}.`,c.GENERIC_FAILURE);if(n=A(n,o.patch,r+1,o.op),d(n)!==o.after_hash)throw new l(`History hash mismatch after replay at entry ${r+1}.`,c.GENERIC_FAILURE)}return n}function Bt(t,e){if(Object.keys(t.metadata).length>0)return t;throw new l(`History target ${e.raw} resolves to a deleted state; choose a version or timestamp where the item exists.`,c.USAGE)}import U from"node:fs/promises";import gt from"node:fs/promises";(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="a2ec9f1a-aae2-59d5-8c9a-7acd8bf5a7a2")}catch{}})();function It(t){if(!t.itemDocument)return[];let e=t.itemDocument.metadata?.assignee?.trim();if(!e||e===t.author||t.force)return[];let n=et(t.settings);if(n.ownership_enforcement==="strict")throw new l(`Item ${t.subjectId} is assigned to ${e}. Use --force to override.`,c.CONFLICT);return n.ownership_enforcement==="warn"?[`ownership_warning:assignee_conflict:${t.subjectId}:${e}`]:[]}async function _t(t){let e=await H(t.subject.historyPath);if(e!==t.historyRawBeforeLock)throw new l(`History for ${t.subject.id} changed while waiting for lock; retry ${t.operation}.`,c.CONFLICT);let n=await P(t.pmRoot,t.subject.id,t.settings.id_prefix,t.settings.item_format,t.typeRegistry.type_to_folder),r=n?await D(n,{schema:t.settings.schema}):null;if((r?.raw??null)!==(t.currentItemRawBeforeLock??null))throw new l(`Item ${t.subject.id} changed while waiting for lock; retry ${t.operation}.`,c.CONFLICT);return{historyRawUnderLock:e,locatedUnderLock:n,loadedItemUnderLock:r}}async function Zt(t){let e=t.writeHistoryRaw??m;try{await e(t.historyPath,t.nextHistoryRaw),await p(t.historyPath)}catch(n){try{t.historyRawUnderLock===null?await gt.rm(t.historyPath,{force:!0}):await e(t.historyPath,t.historyRawUnderLock),await p(t.historyPath)}catch(r){throw new AggregateError([n,r],`History rewrite failed and rollback also failed: ${String(n)}`)}throw n}}async function at(t){let e=[...It({itemDocument:t.itemDocument,subjectId:t.subject.id,author:t.author,force:t.force,settings:t.settings})],n=await W(t.pmRoot,t.subject.id,t.settings.locks.ttl_seconds,t.author,!!t.force,t.settings.governance.force_required_for_stale_lock,t.settings.locks.wait_ms);try{let r=await _t({pmRoot:t.pmRoot,subject:t.subject,settings:t.settings,typeRegistry:t.typeRegistry,historyRawBeforeLock:t.historyRawBeforeLock,currentItemRawBeforeLock:t.currentItemRawBeforeLock,operation:t.operation});return await t.applyRewrite(r),t.applyPostRewrite&&e.push(...await t.applyPostRewrite(r)),e}finally{await n()}}(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="cd2a27ec-0f12-591d-ab34-529ddda05063")}catch{}})();function ct(t){return Array.isArray(t)?t:typeof t=="string"?[t]:[]}function xt(t){let e=[];for(let n of t)e.includes(n)||e.push(n);return e.includes("g")||e.push("g"),e.join("")}function bt(t){let e=t.trim();if(e.length===0)throw new l("history-redact --regex requires a non-empty pattern.",c.USAGE);let n=e,r="g";if(e.startsWith("/")&&e.length>1){let o=e.lastIndexOf("/");o>0&&(n=e.slice(1,o),r=xt(e.slice(o+1)))}if(n.length===0)throw new l("history-redact --regex cannot use an empty pattern.",c.USAGE);try{new RegExp(n,r)}catch{throw new l("Invalid --regex value; provide a valid JavaScript regular expression.",c.USAGE)}return{kind:"regex",source:n,flags:r}}function Rt(t,e){let n=[...new Set(ct(t).map(i=>i.trim()))].filter(i=>i.length>0).map(i=>({kind:"literal",value:i})),r=[...new Set(ct(e).map(i=>i.trim()))].filter(i=>i.length>0).map(bt),o=[...n,...r];if(o.length===0)throw new l("history-redact requires at least one matcher via --literal or --regex.",c.USAGE,{code:"missing_required_argument",required:"Provide --literal <value> and/or --regex <pattern>.",examples:['pm history-redact pm-a1b2 --literal "[redacted_path_prefix]/private"','pm history-redact pm-a1b2 --regex "/192\\\\.168\\\\.[0-9.]+/g" --replacement "[scrubbed_ip]"']});return o}function Et(t,e,n){if(e.length===0)return{value:t,replacements:0};let r=0,o=0;for(;r<=t.length;){let i=t.indexOf(e,r);if(i===-1)break;o+=1,r=i+Math.max(1,e.length)}return o===0?{value:t,replacements:0}:{value:t.split(e).join(n),replacements:o}}function vt(t,e,n){let r=new RegExp(e.source,e.flags),o=[...t.matchAll(r)];return o.length===0?{value:t,replacements:0}:{value:t.replace(r,n),replacements:o.length}}function lt(t,e,n){let r=t,o=0;for(let i of e){let s=i.kind==="literal"?Et(r,i.value,n):vt(r,i,n);r=s.value,o+=s.replacements}return{value:r,replacements:o}}function F(t,e,n){if(typeof t=="string")return lt(t,e,n);if(Array.isArray(t)){let r=0;return{value:t.map(i=>{let s=F(i,e,n);return r+=s.replacements,s.value}),replacements:r}}if(typeof t=="object"&&t!==null){let r=0,o={};for(let[i,s]of Object.entries(t)){let a=F(s,e,n);r+=a.replacements,o[i]=a.value}return{value:o,replacements:r}}return{value:t,replacements:0}}function kt(t){let e=structuredClone(_),n=0,r=0;for(let o=0;o<t.length;o+=1){let i=t[o];d(e)!==i.before_hash&&(n+=1),e=A(e,i.patch,o+1,i.op),d(e)!==i.after_hash&&(r+=1)}return{hashMismatchesBefore:n,hashMismatchesAfter:r,finalDocument:e}}function Ht(t,e,n){let r=0,o=!1,i=t.message;if(typeof t.message=="string"){let a=lt(t.message,e,n);i=a.value,r+=a.replacements,a.replacements>0&&(o=!0)}let s=t.patch.map(a=>{if(!Object.prototype.hasOwnProperty.call(a,"value"))return a;let h=F(a.value,e,n);return r+=h.replacements,h.replacements>0?(o=!0,{...a,value:h.value}):a});return{entry:{...t,message:i,patch:s},replacements:r,changed:o}}function Pt(t,e,n){let r=structuredClone(_),o=0,i=0,s=[];for(let a=0;a<t.length;a+=1){let h=Ht(t[a],e,n);i+=h.replacements,h.changed&&(o+=1);let f=d(r);r=A(r,h.entry.patch,a+1,h.entry.op);let u=d(r);s.push({...h.entry,before_hash:f,after_hash:u})}return{entries:s,finalDocument:r,entriesChanged:o,replacements:i}}function Dt(t){return Object.keys(t.metadata).length>0}async function At(t,e){let n=t.located?.itemPath??null;if(!t.located)return{raw:null,path:n,document:null};let r=await D(t.located,{schema:e.schema});return{raw:r.raw,path:n,document:r.document}}function Tt(t){if(!Dt(t.finalDocument))return{raw:null,path:null,document:null};let e=X(L(t.finalDocument),{schema:t.settings.schema});if(e.metadata.id!==t.subject.id)throw new l("history-redact would change the item id; narrow your patterns.",c.USAGE);return{document:e,path:q(t.pmRoot,e.metadata.type,t.subject.id,"toon",t.typeToFolder),raw:Y(e,{format:"toon",schema:t.settings.schema})}}function $t(t,e){return typeof t.message=="string"&&t.message.trim().length>0?t.message:`history-redact replaced ${e.replacements} match(es) across ${e.entriesChanged} entr${e.entriesChanged===1?"y":"ies"}.`}function jt(t){let e=[...t.rewritten.entries];if(t.dryRun||!t.changed)return{rewrittenEntries:e,auditEntryAdded:!1};let n=t.nextItemDocument??L(t.rewritten.finalDocument);return e.push(K({nowIso:S(),author:t.author,op:"history_redact",before:n,after:n,message:t.message})),{rewrittenEntries:e,auditEntryAdded:!0}}async function Ct(t){let e=[];return at({pmRoot:t.pmRoot,subject:t.subject,settings:t.settings,typeRegistry:t.typeRegistry,historyRawBeforeLock:t.historyRawBeforeLock,currentItemRawBeforeLock:t.currentItem.raw,operation:"history-redact",author:t.author,force:t.force,itemDocument:t.currentItem.document,applyRewrite:async({historyRawUnderLock:n})=>{let r=await it(t.pmRoot,t.author),o=new Set;t.currentItem.path&&o.add(t.currentItem.path),t.nextItem.path&&o.add(t.nextItem.path);let i=new Map;t.currentItem.path&&t.currentItem.raw!==null&&i.set(t.currentItem.path,t.currentItem.raw);let s=()=>{};try{try{t.nextItem.path&&t.nextItem.raw!==null&&t.nextItem.raw!==t.currentItem.raw&&await m(t.nextItem.path,t.nextItem.raw),t.currentItem.path&&(!t.nextItem.path||t.nextItem.path!==t.currentItem.path)&&await U.rm(t.currentItem.path,{force:!0}),await m(t.subject.historyPath,tt(t.rewrittenEntries))}catch(h){try{await St(t.subject.historyPath,n,o,i)}finally{await p(t.subject.historyPath)}throw h}await p(t.subject.historyPath);let a=t.nextItem.path??t.currentItem.path;a&&(e=await st({pmRoot:t.pmRoot,preferredFormat:t.settings.item_format,typeToFolder:t.typeRegistry.type_to_folder,schema:t.settings.schema,itemPath:a,...t.currentItem.path?{previousItemPath:t.currentItem.path}:{},document:t.nextItem.document}))}finally{await r().catch(a=>{s=()=>{throw a}})}s()},applyPostRewrite:async()=>[...e,...await Lt(t.subject.historyPath,[t.nextItem.path,t.currentItem.path])]})}async function St(t,e,n,r){e===null?await U.rm(t,{force:!0}):await m(t,e);for(let o of n){let i=r.get(o);i===void 0?await U.rm(o,{force:!0}):await m(o,i)}}async function Lt(t,e){let n=[],r=new Set(e.filter(o=>o!==null));for(let o of r)n.push(...await C({path:o,scope:"project",op:"history_redact"}));return n.push(...await C({path:t,scope:"project",op:"history_redact:history"})),n}async function Ut(t,e,n,r){let o=await P(t,e,n.id_prefix,n.item_format,r);if(o)return{id:o.id,historyPath:j(t,o.id),located:o};let i=ot(e,n.id_prefix),s=nt(e),a=i===s?[i]:[i,s];for(let h of a){let f=j(t,h);if(await k(f))return{id:h,historyPath:f,located:null}}throw new l(`Item ${e} not found`,c.NOT_FOUND)}async function xe(t,e,n){let r=G(process.cwd(),n.path);if(!await k(B(r)))throw new l(`Tracker is not initialized at ${r}. Run pm init first.`,c.NOT_FOUND);let o=await rt(r),i=M(o,z()),s=e.replacement??"",a=s.length===0,h=a?"[redacted]":s,f=Rt(e.literal,e.regex),u=await Ut(r,t,o,i.type_to_folder);if(!await k(u.historyPath))throw new l(`No history stream exists for ${u.id}.`,c.NOT_FOUND);let ht=await H(u.historyPath),x=await J(u.historyPath,u.id);if(x.length===0)throw new l(`No history entries exist for ${u.id}; nothing to redact.`,c.USAGE);let b=kt(x),y=Pt(x,f,h),T=b.hashMismatchesBefore+b.hashMismatchesAfter,$=!!e.dryRun,R=y.replacements>0,E=[];T>0&&E.push(`history_redact_preexisting_hash_mismatches:${T}`),R||E.push("history_redact_no_matches");let g=await At(u,o),w=Tt({pmRoot:r,subject:u,settings:o,typeToFolder:i.type_to_folder,finalDocument:y.finalDocument}),ut=(g.path??null)!==(w.path??null)||(g.raw??null)!==(w.raw??null),N=V(e.author,o.author_default),ft=$t(e,y),{rewrittenEntries:O,auditEntryAdded:dt}=jt({rewritten:y,dryRun:$,changed:R,nextItemDocument:w.document,author:N,message:ft}),v=Z(O);if(!v.ok)throw new l(`history-redact produced an invalid rewritten chain (${v.errors.join(", ")}).`,c.GENERIC_FAILURE);return!$&&R&&E.push(...await Ct({pmRoot:r,subject:u,settings:o,typeRegistry:i,historyRawBeforeLock:ht,currentItem:g,nextItem:w,author:N,force:e.force,rewrittenEntries:O})),{id:u.id,dry_run:$,changed:R,patterns:{literal_count:f.filter(I=>I.kind==="literal").length,regex_count:f.filter(I=>I.kind==="regex").length,total_count:f.length,replacement_is_default:a},history:{path:u.historyPath,entries_scanned:x.length,entries_changed:y.entriesChanged,replacements:y.replacements,hash_mismatches_before:b.hashMismatchesBefore,hash_mismatches_after:b.hashMismatchesAfter,preexisting_hash_mismatches:T,audit_entry_added:dt,verify_ok:v.ok,verify_errors:v.errors},item:{existed_before:g.path!==null,exists_after:w.path!==null,path_before:g.path,path_after:w.path,changed:ut},warnings:[...new Set(E)].sort((I,mt)=>I.localeCompare(mt)),generated_at:S()}}export{Mt as a,A as b,Gt as c,Bt as d,Zt as e,at as f,Ut as g,xe as h};
2
- //# sourceMappingURL=chunk-WEM2E2PE.js.map
1
+ import{$a as P,Ba as tt,Ia as et,K as V,Ka as rt,L as S,P as W,Pa as nt,Qa as ot,Xa as it,Za as st,ab as D,ea as Y,fa as X,ga as J,k as z,ma as p,n as C,pa as K,ra as _,ta as d,ua as L,ya as Q,za as Z}from"./chunk-GEYU23YS.js";import{D as M,J as G,M as B,N as q,P as j,p as k,q as H,r as m}from"./chunk-EAXXF2HW.js";import{Y as c,Z as l}from"./chunk-7AZDTGPA.js";(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="47c087c2-124a-58b7-a5c9-09403235f4a2")}catch{}})();function yt(t,e){let n=-1;return t.forEach((r,o)=>{let i=Date.parse(r.ts);if(!Number.isFinite(i))throw new l(`History for this item contains invalid timestamp at entry ${o+1}.`,c.GENERIC_FAILURE);i<=e&&(n=o)}),n}function wt(t){let e=t[0]?.ts??null,n=t.at(-1)?.ts??null,r={code:"history_target_out_of_range",required:"Choose a target within the available item history.",why:"Point-in-time reads and restores can only reconstruct recorded versions.",examples:[],nextSteps:["Run pm history <id> to inspect available versions and timestamps."],valid_range:{first_version:null,last_version:null,first_timestamp:e,last_timestamp:n}};return n!==null&&(r.examples=["1",String(t.length),n],r.valid_range.first_version=1,r.valid_range.last_version=t.length),{guidance:r,lastTimestamp:n}}function pt(t,e){let n={};if(e instanceof Error&&e.message.trim().length>0&&(n.reason=e.message.trim()),typeof e!="object"||e===null)return n;let r=e;if(typeof r.index=="number"&&Number.isInteger(r.index)&&r.index>=0&&(n.patchIndex=r.index),typeof r.operation=="object"&&r.operation!==null){let o=r.operation;Object.assign(n,Object.fromEntries(["op","path","from"].flatMap(i=>{let s=o[i];return typeof s=="string"?[[i,s]]:[]})))}if(n.patchIndex!==void 0){let o=t[n.patchIndex];o&&(n.op??=o.op,n.path??=o.path,n.from??=o.from)}return n}function Mt(t,e,n={}){let r=t.trim(),o=n.errorSubject??"history",i=o==="restore"?"Restore":"History",{guidance:s,lastTimestamp:a}=wt(e);if(!r)throw new l(`Missing ${o} target. Use a timestamp or version number.`,c.USAGE,s);if(/^\d+$/.test(r)){let u=Number(r);if(!Number.isSafeInteger(u)||u<1||u>e.length)throw new l(`${i} version must be between 1 and ${e.length} for this item.`,c.USAGE,s);return{kind:"version",raw:r,historyIndex:u-1}}let h=Date.parse(r);if(!Number.isFinite(h))throw new l(`Invalid ${o} target "${t}". Use a positive version number or ISO timestamp.`,c.USAGE,s);let f=yt(e,h);if(f<0||n.allowFutureTimestamp!==!0&&h>Date.parse(a))throw new l(o==="restore"?`No history entries exist at or before timestamp ${r}.`:`No history entry exists at timestamp ${r}.`,c.USAGE,s);return{kind:"timestamp",raw:r,historyIndex:f}}function A(t,e,n,r){let o=Q(t,e);if(o.ok)return o.document;let i=pt(e,o.error),s=[`history_op=${r}`,i.patchIndex===void 0?null:`patch_index=${i.patchIndex}`,i.op?`op=${i.op}`:null,i.path?`path=${i.path}`:null,i.from?`from=${i.from}`:null].filter(a=>a!==null);throw new l(`Failed to apply history patch at entry ${n} (${s.join(", ")}). ${i.reason??String(o.error)}`,c.GENERIC_FAILURE)}function Gt(t,e){let n=structuredClone(_);for(let r=0;r<=e;r+=1){let o=t[r];if(!o)throw new l(`History target entry ${r+1} does not exist.`,c.USAGE);if(d(n)!==o.before_hash)throw new l(`History hash mismatch before replay at entry ${r+1}.`,c.GENERIC_FAILURE);if(n=A(n,o.patch,r+1,o.op),d(n)!==o.after_hash)throw new l(`History hash mismatch after replay at entry ${r+1}.`,c.GENERIC_FAILURE)}return n}function Bt(t,e){if(Object.keys(t.metadata).length>0)return t;throw new l(`History target ${e.raw} resolves to a deleted state; choose a version or timestamp where the item exists.`,c.USAGE)}import U from"node:fs/promises";import gt from"node:fs/promises";(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="a2ec9f1a-aae2-59d5-8c9a-7acd8bf5a7a2")}catch{}})();function It(t){if(!t.itemDocument)return[];let e=t.itemDocument.metadata?.assignee?.trim();if(!e||e===t.author||t.force)return[];let n=et(t.settings);if(n.ownership_enforcement==="strict")throw new l(`Item ${t.subjectId} is assigned to ${e}. Use --force to override.`,c.CONFLICT);return n.ownership_enforcement==="warn"?[`ownership_warning:assignee_conflict:${t.subjectId}:${e}`]:[]}async function _t(t){let e=await H(t.subject.historyPath);if(e!==t.historyRawBeforeLock)throw new l(`History for ${t.subject.id} changed while waiting for lock; retry ${t.operation}.`,c.CONFLICT);let n=await P(t.pmRoot,t.subject.id,t.settings.id_prefix,t.settings.item_format,t.typeRegistry.type_to_folder),r=n?await D(n,{schema:t.settings.schema}):null;if((r?.raw??null)!==(t.currentItemRawBeforeLock??null))throw new l(`Item ${t.subject.id} changed while waiting for lock; retry ${t.operation}.`,c.CONFLICT);return{historyRawUnderLock:e,locatedUnderLock:n,loadedItemUnderLock:r}}async function Zt(t){let e=t.writeHistoryRaw??m;try{await e(t.historyPath,t.nextHistoryRaw),await p(t.historyPath)}catch(n){try{t.historyRawUnderLock===null?await gt.rm(t.historyPath,{force:!0}):await e(t.historyPath,t.historyRawUnderLock),await p(t.historyPath)}catch(r){throw new AggregateError([n,r],`History rewrite failed and rollback also failed: ${String(n)}`)}throw n}}async function at(t){let e=[...It({itemDocument:t.itemDocument,subjectId:t.subject.id,author:t.author,force:t.force,settings:t.settings})],n=await W(t.pmRoot,t.subject.id,t.settings.locks.ttl_seconds,t.author,!!t.force,t.settings.governance.force_required_for_stale_lock,t.settings.locks.wait_ms);try{let r=await _t({pmRoot:t.pmRoot,subject:t.subject,settings:t.settings,typeRegistry:t.typeRegistry,historyRawBeforeLock:t.historyRawBeforeLock,currentItemRawBeforeLock:t.currentItemRawBeforeLock,operation:t.operation});return await t.applyRewrite(r),t.applyPostRewrite&&e.push(...await t.applyPostRewrite(r)),e}finally{await n()}}(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="cd2a27ec-0f12-591d-ab34-529ddda05063")}catch{}})();function ct(t){return Array.isArray(t)?t:typeof t=="string"?[t]:[]}function xt(t){let e=[];for(let n of t)e.includes(n)||e.push(n);return e.includes("g")||e.push("g"),e.join("")}function bt(t){let e=t.trim();if(e.length===0)throw new l("history-redact --regex requires a non-empty pattern.",c.USAGE);let n=e,r="g";if(e.startsWith("/")&&e.length>1){let o=e.lastIndexOf("/");o>0&&(n=e.slice(1,o),r=xt(e.slice(o+1)))}if(n.length===0)throw new l("history-redact --regex cannot use an empty pattern.",c.USAGE);try{new RegExp(n,r)}catch{throw new l("Invalid --regex value; provide a valid JavaScript regular expression.",c.USAGE)}return{kind:"regex",source:n,flags:r}}function Rt(t,e){let n=[...new Set(ct(t).map(i=>i.trim()))].filter(i=>i.length>0).map(i=>({kind:"literal",value:i})),r=[...new Set(ct(e).map(i=>i.trim()))].filter(i=>i.length>0).map(bt),o=[...n,...r];if(o.length===0)throw new l("history-redact requires at least one matcher via --literal or --regex.",c.USAGE,{code:"missing_required_argument",required:"Provide --literal <value> and/or --regex <pattern>.",examples:['pm history-redact pm-a1b2 --literal "[redacted_path_prefix]/private"','pm history-redact pm-a1b2 --regex "/192\\\\.168\\\\.[0-9.]+/g" --replacement "[scrubbed_ip]"']});return o}function Et(t,e,n){if(e.length===0)return{value:t,replacements:0};let r=0,o=0;for(;r<=t.length;){let i=t.indexOf(e,r);if(i===-1)break;o+=1,r=i+Math.max(1,e.length)}return o===0?{value:t,replacements:0}:{value:t.split(e).join(n),replacements:o}}function vt(t,e,n){let r=new RegExp(e.source,e.flags),o=[...t.matchAll(r)];return o.length===0?{value:t,replacements:0}:{value:t.replace(r,n),replacements:o.length}}function lt(t,e,n){let r=t,o=0;for(let i of e){let s=i.kind==="literal"?Et(r,i.value,n):vt(r,i,n);r=s.value,o+=s.replacements}return{value:r,replacements:o}}function F(t,e,n){if(typeof t=="string")return lt(t,e,n);if(Array.isArray(t)){let r=0;return{value:t.map(i=>{let s=F(i,e,n);return r+=s.replacements,s.value}),replacements:r}}if(typeof t=="object"&&t!==null){let r=0,o={};for(let[i,s]of Object.entries(t)){let a=F(s,e,n);r+=a.replacements,o[i]=a.value}return{value:o,replacements:r}}return{value:t,replacements:0}}function kt(t){let e=structuredClone(_),n=0,r=0;for(let o=0;o<t.length;o+=1){let i=t[o];d(e)!==i.before_hash&&(n+=1),e=A(e,i.patch,o+1,i.op),d(e)!==i.after_hash&&(r+=1)}return{hashMismatchesBefore:n,hashMismatchesAfter:r,finalDocument:e}}function Ht(t,e,n){let r=0,o=!1,i=t.message;if(typeof t.message=="string"){let a=lt(t.message,e,n);i=a.value,r+=a.replacements,a.replacements>0&&(o=!0)}let s=t.patch.map(a=>{if(!Object.prototype.hasOwnProperty.call(a,"value"))return a;let h=F(a.value,e,n);return r+=h.replacements,h.replacements>0?(o=!0,{...a,value:h.value}):a});return{entry:{...t,message:i,patch:s},replacements:r,changed:o}}function Pt(t,e,n){let r=structuredClone(_),o=0,i=0,s=[];for(let a=0;a<t.length;a+=1){let h=Ht(t[a],e,n);i+=h.replacements,h.changed&&(o+=1);let f=d(r);r=A(r,h.entry.patch,a+1,h.entry.op);let u=d(r);s.push({...h.entry,before_hash:f,after_hash:u})}return{entries:s,finalDocument:r,entriesChanged:o,replacements:i}}function Dt(t){return Object.keys(t.metadata).length>0}async function At(t,e){let n=t.located?.itemPath??null;if(!t.located)return{raw:null,path:n,document:null};let r=await D(t.located,{schema:e.schema});return{raw:r.raw,path:n,document:r.document}}function Tt(t){if(!Dt(t.finalDocument))return{raw:null,path:null,document:null};let e=X(L(t.finalDocument),{schema:t.settings.schema});if(e.metadata.id!==t.subject.id)throw new l("history-redact would change the item id; narrow your patterns.",c.USAGE);return{document:e,path:q(t.pmRoot,e.metadata.type,t.subject.id,"toon",t.typeToFolder),raw:Y(e,{format:"toon",schema:t.settings.schema})}}function $t(t,e){return typeof t.message=="string"&&t.message.trim().length>0?t.message:`history-redact replaced ${e.replacements} match(es) across ${e.entriesChanged} entr${e.entriesChanged===1?"y":"ies"}.`}function jt(t){let e=[...t.rewritten.entries];if(t.dryRun||!t.changed)return{rewrittenEntries:e,auditEntryAdded:!1};let n=t.nextItemDocument??L(t.rewritten.finalDocument);return e.push(K({nowIso:S(),author:t.author,op:"history_redact",before:n,after:n,message:t.message})),{rewrittenEntries:e,auditEntryAdded:!0}}async function Ct(t){let e=[];return at({pmRoot:t.pmRoot,subject:t.subject,settings:t.settings,typeRegistry:t.typeRegistry,historyRawBeforeLock:t.historyRawBeforeLock,currentItemRawBeforeLock:t.currentItem.raw,operation:"history-redact",author:t.author,force:t.force,itemDocument:t.currentItem.document,applyRewrite:async({historyRawUnderLock:n})=>{let r=await it(t.pmRoot,t.author),o=new Set;t.currentItem.path&&o.add(t.currentItem.path),t.nextItem.path&&o.add(t.nextItem.path);let i=new Map;t.currentItem.path&&t.currentItem.raw!==null&&i.set(t.currentItem.path,t.currentItem.raw);let s=()=>{};try{try{t.nextItem.path&&t.nextItem.raw!==null&&t.nextItem.raw!==t.currentItem.raw&&await m(t.nextItem.path,t.nextItem.raw),t.currentItem.path&&(!t.nextItem.path||t.nextItem.path!==t.currentItem.path)&&await U.rm(t.currentItem.path,{force:!0}),await m(t.subject.historyPath,tt(t.rewrittenEntries))}catch(h){try{await St(t.subject.historyPath,n,o,i)}finally{await p(t.subject.historyPath)}throw h}await p(t.subject.historyPath);let a=t.nextItem.path??t.currentItem.path;a&&(e=await st({pmRoot:t.pmRoot,preferredFormat:t.settings.item_format,typeToFolder:t.typeRegistry.type_to_folder,schema:t.settings.schema,itemPath:a,...t.currentItem.path?{previousItemPath:t.currentItem.path}:{},document:t.nextItem.document}))}finally{await r().catch(a=>{s=()=>{throw a}})}s()},applyPostRewrite:async()=>[...e,...await Lt(t.subject.historyPath,[t.nextItem.path,t.currentItem.path])]})}async function St(t,e,n,r){e===null?await U.rm(t,{force:!0}):await m(t,e);for(let o of n){let i=r.get(o);i===void 0?await U.rm(o,{force:!0}):await m(o,i)}}async function Lt(t,e){let n=[],r=new Set(e.filter(o=>o!==null));for(let o of r)n.push(...await C({path:o,scope:"project",op:"history_redact"}));return n.push(...await C({path:t,scope:"project",op:"history_redact:history"})),n}async function Ut(t,e,n,r){let o=await P(t,e,n.id_prefix,n.item_format,r);if(o)return{id:o.id,historyPath:j(t,o.id),located:o};let i=ot(e,n.id_prefix),s=nt(e),a=i===s?[i]:[i,s];for(let h of a){let f=j(t,h);if(await k(f))return{id:h,historyPath:f,located:null}}throw new l(`Item ${e} not found`,c.NOT_FOUND)}async function xe(t,e,n){let r=G(process.cwd(),n.path);if(!await k(B(r)))throw new l(`Tracker is not initialized at ${r}. Run pm init first.`,c.NOT_FOUND);let o=await rt(r),i=M(o,z()),s=e.replacement??"",a=s.length===0,h=a?"[redacted]":s,f=Rt(e.literal,e.regex),u=await Ut(r,t,o,i.type_to_folder);if(!await k(u.historyPath))throw new l(`No history stream exists for ${u.id}.`,c.NOT_FOUND);let ht=await H(u.historyPath),x=await J(u.historyPath,u.id);if(x.length===0)throw new l(`No history entries exist for ${u.id}; nothing to redact.`,c.USAGE);let b=kt(x),y=Pt(x,f,h),T=b.hashMismatchesBefore+b.hashMismatchesAfter,$=!!e.dryRun,R=y.replacements>0,E=[];T>0&&E.push(`history_redact_preexisting_hash_mismatches:${T}`),R||E.push("history_redact_no_matches");let g=await At(u,o),w=Tt({pmRoot:r,subject:u,settings:o,typeToFolder:i.type_to_folder,finalDocument:y.finalDocument}),ut=(g.path??null)!==(w.path??null)||(g.raw??null)!==(w.raw??null),N=V(e.author,o.author_default),ft=$t(e,y),{rewrittenEntries:O,auditEntryAdded:dt}=jt({rewritten:y,dryRun:$,changed:R,nextItemDocument:w.document,author:N,message:ft}),v=Z(O);if(!v.ok)throw new l(`history-redact produced an invalid rewritten chain (${v.errors.join(", ")}).`,c.GENERIC_FAILURE);return!$&&R&&E.push(...await Ct({pmRoot:r,subject:u,settings:o,typeRegistry:i,historyRawBeforeLock:ht,currentItem:g,nextItem:w,author:N,force:e.force,rewrittenEntries:O})),{id:u.id,dry_run:$,changed:R,patterns:{literal_count:f.filter(I=>I.kind==="literal").length,regex_count:f.filter(I=>I.kind==="regex").length,total_count:f.length,replacement_is_default:a},history:{path:u.historyPath,entries_scanned:x.length,entries_changed:y.entriesChanged,replacements:y.replacements,hash_mismatches_before:b.hashMismatchesBefore,hash_mismatches_after:b.hashMismatchesAfter,preexisting_hash_mismatches:T,audit_entry_added:dt,verify_ok:v.ok,verify_errors:v.errors},item:{existed_before:g.path!==null,exists_after:w.path!==null,path_before:g.path,path_after:w.path,changed:ut},warnings:[...new Set(E)].sort((I,mt)=>I.localeCompare(mt)),generated_at:S()}}export{Mt as a,A as b,Gt as c,Bt as d,Zt as e,at as f,Ut as g,xe as h};
2
+ //# sourceMappingURL=chunk-GIERI4YU.js.map
@@ -1,5 +1,5 @@
1
- import{X as we,l as pe,t as T,u as ye,v as ge,w as _e}from"./chunk-FGKY4MBE.js";import{e as fe,f as me,g as he}from"./chunk-WEM2E2PE.js";import{a as M}from"./chunk-PIMMYG7Q.js";import{Aa as j,Ba as I,K as re,Ka as x,L as S,M as P,ab as ue,ba as D,da as ne,db as le,ea as ie,fa as oe,ga as se,k as F,la as ae,n as te,ta as O,wa as ce,xa as de,za as B}from"./chunk-7J5TUBUJ.js";import{D as L,J as C,M as k,h as Z,p as E,q as ee}from"./chunk-BIMTMOS7.js";import{Y as y,Z as g,aa as w}from"./chunk-Y4LDYLLT.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]="582576df-8dbe-5f93-890b-5d872669dfe8")}catch{}})();function U(e,t){let n=D(e);if(n)throw new g(`History merge input (${t}) contains unresolved conflict markers at line ${n.line}. Merge drivers must receive clean per-side versions.`,y.GENERIC_FAILURE);let r=[];for(let[o,a]of e.split(/\r?\n/).entries()){let i=a.trim();if(i)try{let d=JSON.parse(i);if(typeof d!="object"||d===null||Array.isArray(d))throw new TypeError("history entry must be an object");r.push(d)}catch{throw new g(`History merge input (${t}) contains invalid JSON at line ${o+1}.`,y.GENERIC_FAILURE)}}return r}function v(e){return w({ts:e.ts,author:e.author,op:e.op,patch:e.patch,message:e.message??null})}function Ne(e,t){let n=Math.min(e.length,t.length),r=0;for(;r<n&&v(e[r])===v(t[r]);)r+=1;return r}function Re(e,t,n){U(e,"base");let r=U(t,"ours"),o=U(n,"theirs"),a=Ne(r,o);if(a===r.length&&a===o.length)return{merged:I(r),strategy:"identical",common_entries:a,entries_from_ours:0,entries_from_theirs:0,entries_total:r.length,reanchored:!1};if(a===o.length)return{merged:I(r),strategy:"fast_forward_ours",common_entries:a,entries_from_ours:r.length-a,entries_from_theirs:0,entries_total:r.length,reanchored:!1};if(a===r.length)return{merged:I(o),strategy:"fast_forward_theirs",common_entries:a,entries_from_ours:0,entries_from_theirs:o.length-a,entries_total:o.length,reanchored:!1};let i=r.slice(a),d=new Set(i.map(v)),c=o.slice(a).filter(u=>!d.has(v(u))),m=[...i,...c].sort((u,f)=>{let l=P(u.ts,f.ts);if(l!==0)return l;let h=d.has(v(u)),p=d.has(v(f));return h!==p?Number(p)-Number(h):v(u).localeCompare(v(f))}),s=j([...r.slice(0,a),...m]);return{merged:I(s.entries),strategy:"union_reanchor",common_entries:a,entries_from_ours:i.length,entries_from_theirs:c.length,entries_total:s.entries.length,reanchored:!0}}function J(e,t){let n=D(e);if(n)throw new g(`Relationship merge input (${t}) contains unresolved conflict markers at line ${n.line}. Merge drivers must receive clean per-side versions.`,y.GENERIC_FAILURE);let r=[];for(let[o,a]of e.split(/\r?\n/).entries()){let i=a.trim();if(!i)continue;let d;try{d=JSON.parse(i)}catch{throw new g(`Relationship merge input (${t}) contains invalid JSON at line ${o+1}.`,y.GENERIC_FAILURE)}if(typeof d!="object"||d===null||Array.isArray(d)||typeof d.eventId!="string"||typeof d.sequence!="number")throw new g(`Relationship merge input (${t}) line ${o+1} is not a relationship event (eventId + sequence required).`,y.GENERIC_FAILURE);r.push(d)}return r}function H(e){return e.length===0?"":`${e.map(t=>JSON.stringify(t)).join(`
1
+ import{X as we,l as pe,t as T,u as ye,v as ge,w as _e}from"./chunk-YHDCGUIW.js";import{e as fe,f as me,g as he}from"./chunk-GIERI4YU.js";import{a as M}from"./chunk-ME4XVOBJ.js";import{Aa as j,Ba as I,K as re,Ka as x,L as S,M as P,ab as ue,ba as D,da as ne,db as le,ea as ie,fa as oe,ga as se,k as F,la as ae,n as te,ta as O,wa as ce,xa as de,za as B}from"./chunk-GEYU23YS.js";import{D as L,J as C,M as k,h as Z,p as E,q as ee}from"./chunk-EAXXF2HW.js";import{Y as y,Z as g,aa as w}from"./chunk-7AZDTGPA.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]="582576df-8dbe-5f93-890b-5d872669dfe8")}catch{}})();function U(e,t){let n=D(e);if(n)throw new g(`History merge input (${t}) contains unresolved conflict markers at line ${n.line}. Merge drivers must receive clean per-side versions.`,y.GENERIC_FAILURE);let r=[];for(let[o,a]of e.split(/\r?\n/).entries()){let i=a.trim();if(i)try{let d=JSON.parse(i);if(typeof d!="object"||d===null||Array.isArray(d))throw new TypeError("history entry must be an object");r.push(d)}catch{throw new g(`History merge input (${t}) contains invalid JSON at line ${o+1}.`,y.GENERIC_FAILURE)}}return r}function v(e){return w({ts:e.ts,author:e.author,op:e.op,patch:e.patch,message:e.message??null})}function Ne(e,t){let n=Math.min(e.length,t.length),r=0;for(;r<n&&v(e[r])===v(t[r]);)r+=1;return r}function Re(e,t,n){U(e,"base");let r=U(t,"ours"),o=U(n,"theirs"),a=Ne(r,o);if(a===r.length&&a===o.length)return{merged:I(r),strategy:"identical",common_entries:a,entries_from_ours:0,entries_from_theirs:0,entries_total:r.length,reanchored:!1};if(a===o.length)return{merged:I(r),strategy:"fast_forward_ours",common_entries:a,entries_from_ours:r.length-a,entries_from_theirs:0,entries_total:r.length,reanchored:!1};if(a===r.length)return{merged:I(o),strategy:"fast_forward_theirs",common_entries:a,entries_from_ours:0,entries_from_theirs:o.length-a,entries_total:o.length,reanchored:!1};let i=r.slice(a),d=new Set(i.map(v)),c=o.slice(a).filter(u=>!d.has(v(u))),m=[...i,...c].sort((u,f)=>{let l=P(u.ts,f.ts);if(l!==0)return l;let h=d.has(v(u)),p=d.has(v(f));return h!==p?Number(p)-Number(h):v(u).localeCompare(v(f))}),s=j([...r.slice(0,a),...m]);return{merged:I(s.entries),strategy:"union_reanchor",common_entries:a,entries_from_ours:i.length,entries_from_theirs:c.length,entries_total:s.entries.length,reanchored:!0}}function J(e,t){let n=D(e);if(n)throw new g(`Relationship merge input (${t}) contains unresolved conflict markers at line ${n.line}. Merge drivers must receive clean per-side versions.`,y.GENERIC_FAILURE);let r=[];for(let[o,a]of e.split(/\r?\n/).entries()){let i=a.trim();if(!i)continue;let d;try{d=JSON.parse(i)}catch{throw new g(`Relationship merge input (${t}) contains invalid JSON at line ${o+1}.`,y.GENERIC_FAILURE)}if(typeof d!="object"||d===null||Array.isArray(d)||typeof d.eventId!="string"||typeof d.sequence!="number")throw new g(`Relationship merge input (${t}) line ${o+1} is not a relationship event (eventId + sequence required).`,y.GENERIC_FAILURE);r.push(d)}return r}function H(e){return e.length===0?"":`${e.map(t=>JSON.stringify(t)).join(`
2
2
  `)}
3
3
  `}function $e(e){return e.map((t,n)=>({...t,sequence:n+1}))}function ve(e,t,n){J(e,"base");let r=J(t,"ours"),o=J(n,"theirs"),a=Math.min(r.length,o.length),i=0;for(;i<a&&r[i].eventId===o[i].eventId;)i+=1;if(i===r.length&&i===o.length)return{merged:H(r),strategy:"identical",common_entries:i,entries_from_ours:0,entries_from_theirs:0,entries_total:r.length,reanchored:!1};if(i===o.length)return{merged:H(r),strategy:"fast_forward_ours",common_entries:i,entries_from_ours:r.length-i,entries_from_theirs:0,entries_total:r.length,reanchored:!1};if(i===r.length)return{merged:H(o),strategy:"fast_forward_theirs",common_entries:i,entries_from_ours:0,entries_from_theirs:o.length-i,entries_total:o.length,reanchored:!1};let d=r.slice(i),c=new Set(d.map(f=>f.eventId)),m=o.slice(i).filter(f=>!c.has(f.eventId)),s=[...d,...m].sort((f,l)=>{if(f.timestamp!==void 0&&l.timestamp!==void 0){let _=P(f.timestamp,l.timestamp);if(_!==0)return _}else{if(f.timestamp===void 0&&l.timestamp!==void 0)return 1;if(f.timestamp!==void 0)return-1}let h=c.has(f.eventId),p=c.has(l.eventId);return h!==p?Number(p)-Number(h):0}),u=$e([...r.slice(0,i),...s]);return{merged:H(u),strategy:"union_reanchor",common_entries:i,entries_from_ours:d.length,entries_from_theirs:m.length,entries_total:u.length,reanchored:!0}}var Pe=["tags","dependencies","comments","notes","learnings","files","tests","test_runs","docs","reminders","events"],De=["updated_at"];function b(e,t){return w(e??null)===w(t??null)}function je(e,t,n){let r=s=>Array.isArray(s)?s:[],o=new Set(r(e).map(s=>w(s))),a=r(t),i=new Set(a.map(s=>w(s))),d=r(n),c=new Set(d.map(s=>w(s))),m=a.filter(s=>{let u=w(s);return!o.has(u)||c.has(u)});for(let s of d){let u=w(s);!i.has(u)&&!o.has(u)&&m.push(s)}return m}function Me(e,t){return P(String(e),String(t))>=0?e:t}function q(e,t,n,r){return b(t,n)?{value:t,from_theirs:!1,conflict:!1}:b(e,t)?{value:n,from_theirs:!0,conflict:!1}:b(e,n)?{value:t,from_theirs:!1,conflict:!1}:{value:r==="theirs"?n:t,from_theirs:r==="theirs",conflict:!0}}function G(e){return{...e.metadata}}function z(e,t,n){try{return oe(ne(e,n),n)}catch(r){throw new g(`Item merge input (${t}) is not a readable item document: ${String(r)}`,y.GENERIC_FAILURE)}}function He(e,t,n,r){let o=new Set(Pe),a=new Set(De),i=[...new Set([...Object.keys(t),...Object.keys(n)])].sort((c,m)=>c.localeCompare(m)),d={merged:{},conflictFields:[],fieldsFromTheirs:[],unionFields:[],conflictDecisions:[]};for(let c of i){let m=e[c],s=t[c],u=n[c];if(o.has(c)){let l=je(m,s,u);d.merged[c]=l,b(l,s)||d.unionFields.push(c);continue}if(a.has(c)){d.merged[c]=Me(s,u);continue}let f=q(m,s,u,r);f.value!==void 0&&(d.merged[c]=f.value),f.conflict?(d.conflictFields.push(c),d.conflictDecisions.push({field:c,base:m,ours:s,theirs:u,retained:f.value,discarded:r==="theirs"?s:u})):f.from_theirs&&d.fieldsFromTheirs.push(c)}return d}function Ie(e,t,n,r={}){let o=r.preferred??"ours",a=e.trim().length>0,i=z(t,"ours",r),d=z(n,"theirs",r),c=a?z(e,"base",r):i,m=a?G(c):{},s=G(i),u=G(d),{merged:f,conflictFields:l,fieldsFromTheirs:h,unionFields:p,conflictDecisions:_}=He(m,s,u,o),R=q(a?c.body:"",i.body,d.body,o);return R.conflict?(l.push("body"),_.push({field:"body",base:a?c.body:"",ours:i.body,theirs:d.body,retained:R.value,discarded:o==="theirs"?i.body:d.body})):R.from_theirs&&h.push("body"),{merged:ie({metadata:f,body:R.value},r),conflict_fields:l,fields_from_theirs:h,union_fields:p,conflict_decisions:_,preferred:o}}function V(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function W(e,t){let n=D(e);if(n)throw new g(`JSON merge input (${t}) contains unresolved conflict markers at line ${n.line}.`,y.GENERIC_FAILURE);if(e.trim().length!==0)try{return JSON.parse(e)}catch{throw new g(`JSON merge input (${t}) is not valid JSON.`,y.GENERIC_FAILURE)}}function Le(e,t,n){if(!Array.isArray(e)||!Array.isArray(t)||!Array.isArray(n))return null;let r=m=>{let s=new Map;for(let u of m){let f=w(u);s.set(f,(s.get(f)??0)+1)}return s},o=r(e),a=r(t),i=r(n);for(let[m,s]of o)if((a.get(m)??0)<s||(i.get(m)??0)<s)return null;let d=new Map(a),c=[];for(let m of n){let s=w(m),u=d.get(s)??0;u>0?d.set(s,u-1):c.push(m)}return{merged:[...t,...c],acceptedTheirs:c.length>0}}function Be(e,t,n,r,o,a,i){if(!V(t)||!V(n))return null;let d=V(e)?e:{},c={},m=[...new Set([...Object.keys(t),...Object.keys(n)])].sort((s,u)=>s.localeCompare(u));for(let s of m){let u=o.length>0?`${o}.${s}`:s,f=Ue(d,t,n,s,r,u,a,i);f!==void 0&&(c[s]=f)}return c}function be(e,t,n,r,o,a,i){if(b(t,n))return t;let d=Le(e,t,n);if(d!==null)return d.acceptedTheirs&&i.push(o),d.merged;let c=Be(e,t,n,r,o,a,i);if(c!==null)return c;let m=q(e,t,n,r);return m.conflict?a.push(o):m.from_theirs&&i.push(o),m.value}function Ue(e,t,n,r,o,a,i,d){let c=Object.prototype.hasOwnProperty.call(t,r),m=Object.prototype.hasOwnProperty.call(n,r),s=Object.prototype.hasOwnProperty.call(e,r);if(c&&m)return be(e[r],t[r],n[r],o,a,i,d);if(c){if(s&&b(e[r],t[r])){d.push(a);return}return s?(i.push(a),o==="theirs"?void 0:t[r]):t[r]}if(!(s&&b(e[r],n[r])))return s?(i.push(a),o==="theirs"?n[r]:void 0):(d.push(a),n[r])}function Ee(e,t,n,r={}){let o=r.preferred??"ours",a=W(e,"base"),i=W(t,"ours"),d=W(n,"theirs"),c=[],m=[],s=be(a,i,d,o,"",c,m);return{merged:`${JSON.stringify(s??null,null,2)}
4
4
  `,conflict_paths:c,paths_from_theirs:m,preferred:o}}import{readFile as Je,writeFile as Ge}from"node:fs/promises";import ze 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]="182fee45-4de8-502d-8aec-84b5b8e4aecb")}catch{}})();var Se=["item","history","relationship","json"];function Ve(e){let t=e.trim().toLowerCase();if(Se.includes(t))return t;throw new g(`Unknown merge artifact "${e}". Supported values: ${Se.join(", ")}.`,y.USAGE)}function We(e){if(e===void 0)return"ours";let t=e.trim().toLowerCase();if(t==="ours"||t==="theirs")return t;throw new g(`Unknown --prefer value "${e}". Supported values: ours, theirs.`,y.USAGE)}async function X(e,t){try{return await Je(e,"utf8")}catch{throw new g(`Cannot read merge ${t} file at ${e}.`,y.NOT_FOUND)}}async function qe(e){let t=C(process.cwd(),e.path);return await E(k(t))?x(t):null}function Xe(e,t){return e.endsWith(".md")?"json_markdown":e.endsWith(".toon")?"toon":t?.item_format??"toon"}async function It(e,t){let n=Ve(e.artifact),r=We(e.prefer),o=ze.resolve(e.outputPath??e.oursPath),[a,i,d]=await Promise.all([X(e.basePath,"base"),X(e.oursPath,"ours"),X(e.theirsPath,"theirs")]),c,m,s=[],u={};if(n==="history"){let l=Re(a,i,d);c=l.merged,u.history={strategy:l.strategy,common_entries:l.common_entries,entries_from_ours:l.entries_from_ours,entries_from_theirs:l.entries_from_theirs,entries_total:l.entries_total,reanchored:l.reanchored}}else if(n==="relationship"){let l=ve(a,i,d);c=l.merged,u.relationship={strategy:l.strategy,common_entries:l.common_entries,entries_from_ours:l.entries_from_ours,entries_from_theirs:l.entries_from_theirs,entries_total:l.entries_total,reanchored:l.reanchored}}else if(n==="item"){let l=await qe(t),h=Ie(a,i,d,{format:Xe(e.itemPath??o,l),schema:l?.schema,extensionFieldNames:Z(F()),preferred:r});c=h.merged,s.push(...h.conflict_fields),u.item={fields_from_theirs:h.fields_from_theirs,union_fields:h.union_fields},e.itemPath!==void 0&&(m={cwd:process.cwd(),itemPath:e.itemPath,preferred:r,fieldsFromTheirs:h.fields_from_theirs,unionFields:h.union_fields,decisions:h.conflict_decisions})}else{let l=Ee(a,i,d,{preferred:r});c=l.merged,s.push(...l.conflict_paths),u.json={paths_from_theirs:l.paths_from_theirs}}if(await Ge(o,c,"utf8"),m!==void 0){let l=await ye(m);l!==null&&(u.receipt=T(l))}let f=[];if(s.length>0){let l=u.receipt===void 0?'Run "pm merge report" to inspect clone-local merge evidence.':`Run "pm merge report" and correlate receipt ${u.receipt.receipt_id} with item ${u.receipt.item_id}; clone-local discarded values are never copied into this result.`;f.push(`Both branches changed ${s.join(", ")}; the ${r} value was kept. ${l} Review the merged file, re-apply the losing change if needed, then "git add" it.`)}return n==="history"&&u.history?.reanchored&&f.push('The merged history chain was re-anchored. Run "pm validate --check-history-drift" and "pm history-repair --all" after the merge to reconcile item state with merged history.'),{ok:s.length===0,artifact:n,output_path:o,preferred:r,conflicts:s,...u,guidance:f,generated_at:S()}}import Ce 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 Oe(e,t){return t==="body"?e.body:e.metadata[t]}function K(e,t){if(e===void 0||Object.is(e,t))return!0;if(Array.isArray(e)){if(!Array.isArray(t))return!1;let r=new Set;return e.every(o=>{let a=t.findIndex((i,d)=>!r.has(d)&&K(o,i));return a<0?!1:(r.add(a),!0)})}if(e===null||t===null||typeof e!="object"||typeof t!="object"||Array.isArray(t))return!1;let n=t;return Object.entries(e).every(([r,o])=>Object.hasOwn(n,r)&&K(o,n[r]))}function Ae(e,t){let n=new Set(t),r=[];for(let o=e.length-1;o>=0&&n.size>0;o-=1){let a=e[o],i=new Set;for(let c of de(a.patch))i.add(M(c.path)),c.from&&i.add(M(c.from));let d=[...n].filter(c=>i.has(c));if(d.length!==0){for(let c of d)n.delete(c);r.push({index:o+1,ts:a.ts,author:a.author,op:a.op,fields:d.sort((c,m)=>c.localeCompare(m))})}}return r.reverse()}function Ke(e,t,n){let r=Ce.compare(t,n);if(r.length===0)return;let o=new Set;for(let h of r)o.add(M(h.path));let a=new Set([...o].filter(h=>K(Oe(t,h),Oe(n,h)))),i=new Set([...o].filter(h=>!a.has(h))),d=Ae(e,i),c=Ae(e,a),m=[...o].sort((h,p)=>h.localeCompare(p)),s=[...i].sort((h,p)=>h.localeCompare(p)),u=[...a].sort((h,p)=>h.localeCompare(p)),f=[...new Set(d.map(h=>h.author))].sort((h,p)=>h.localeCompare(p)),l=[...new Set(c.map(h=>h.author))].sort((h,p)=>h.localeCompare(p));return{reconciled_field_count:o.size,reconciled_fields:m,reverted_field_count:i.size,reverted_fields:s,discarded_events:d,discarded_authors:f,preserved_field_count:a.size,preserved_fields:u,preserved_events:c,preserved_authors:l,recovery_hint:d.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 Qe(e,t,n){let r=e.located?.itemPath??null,o=e.located?await ue(e.located,{schema:t.schema}):null;if(!o)return{currentItemReplay:null,currentItemPath:r,matchedChainBefore:null,currentItemRawBeforeLock:null,loadedItem:null};let a=ce(o.document),i=n[n.length-1]?.after_hash;return{currentItemReplay:a,currentItemPath:r,matchedChainBefore:O(a)===i,currentItemRawBeforeLock:o.raw,loadedItem:o}}function Ye(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 Ze(e){let t=[...e.reanchorEntries];if(!e.changed)return{rewrittenEntries:t,auditEntryAdded:!1};let n=e.reconcileNeeded&&e.currentItemReplay?e.currentItemReplay:e.finalReplay;return t.push({ts:S(),author:e.author,op:e.auditOperation,patch:e.reconcileNeeded&&e.currentItemReplay?Ce.compare(e.finalReplay,e.currentItemReplay):[],before_hash:O(e.finalReplay),after_hash:O(n),message:e.message,...e.auditContext===void 0?{}:{context:e.auditContext}}),{rewrittenEntries:t,auditEntryAdded:!0}}function et(e,t){let n=[];return e||n.push("history_repair_no_changes"),t>0&&n.push(`history_repair_skipped_unresolvable_ops:${t}`),n}async function tt(e){return me({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})=>fe({historyPath:e.historyPath,nextHistoryRaw:I(e.rewrittenEntries),historyRawUnderLock:t}),applyPostRewrite:async()=>te({path:e.historyPath,scope:"project",op:"history_repair:history"})})}async function Q(e,t,n){let r=C(process.cwd(),n.path);if(!await E(k(r)))throw new g(`Tracker is not initialized at ${r}. Run pm init first.`,y.NOT_FOUND);let o=await x(r),a=L(o,F()),i=await he(r,e,o,a.type_to_folder);if(!await E(i.historyPath))throw new g(`No history stream exists for ${i.id}.`,y.NOT_FOUND);let d=await ee(i.historyPath),c=await se(i.historyPath,i.id);if(c.length===0)throw new g(`No history entries exist for ${i.id}; nothing to repair.`,y.USAGE);let m=B(c),s=j(c),u=await Qe(i,o,c),f=s.finalDocument,l=u.currentItemReplay!==null&&O(f)!==O(u.currentItemReplay),h=l&&u.currentItemReplay?Ke(s.entries,f,u.currentItemReplay):void 0,p=[s.entriesRehashed>0,s.entriesPatchRepaired>0,l,t.forceAuditEntry===!0].some(Boolean),_=re(t.author,o.author_default),R=!!t.dryRun,A=Ye({message:t.message,entriesRehashed:s.entriesRehashed,entriesPatchRepaired:s.entriesPatchRepaired,reconcileNeeded:l}),{rewrittenEntries:Y,auditEntryAdded:Fe}=Ze({reanchorEntries:s.entries,changed:p,reconcileNeeded:l,currentItemReplay:u.currentItemReplay,finalReplay:f,author:_,message:A,auditOperation:t.auditOperation??"history_repair",auditContext:t.auditContext}),N=B(Y);if(!N.ok)throw new g(`history-repair produced an invalid rewritten chain (${N.errors.join(", ")}).`,y.GENERIC_FAILURE);let $=et(p,s.skippedOps);return h&&h.discarded_events.length>0&&($.push(`history_repair_reconcile_discards_events:${h.discarded_events.length}`),$.push(`history_repair_discarded_authors:${h.discarded_authors.join(",")}`)),p&&!R&&$.push(...await tt({pmRoot:r,subject:i,settings:o,typeRegistry:a,historyRawBeforeLock:d,currentItemRawBeforeLock:u.currentItemRawBeforeLock,author:_,force:t.force,loadedItem:u.loadedItem,historyPath:i.historyPath,rewrittenEntries:Y})),{id:i.id,dry_run:R,changed:p,history:{path:i.historyPath,entries_scanned:c.length,chain_drift_before:!m.ok,entries_rehashed:s.entriesRehashed,entries_patch_repaired:s.entriesPatchRepaired,converted_replace_to_add:s.convertedReplaceToAdd,skipped_ops:s.skippedOps,reconciled_with_item:l,audit_entry_added:Fe,verify_ok:N.ok,verify_errors:N.errors},item:{exists:u.currentItemPath!==null,path:u.currentItemPath,matched_chain_before:u.matchedChainBefore},...h?{reconciliation:h}:{},warnings:[...new Set($)].sort((xe,Te)=>xe.localeCompare(Te)),generated_at:S()}}function Ut(e,t){if(t&&e!==void 0)throw new g("history-repair: <id> and --all are mutually exclusive; pass an item id to repair one stream or --all to repair every drifted stream.",y.USAGE);if(!t&&e===void 0)throw new g("history-repair: provide an item <id> or pass --all to repair every drifted stream.",y.USAGE)}async function ke(e,t){let n=C(process.cwd(),t.path);if(!await E(k(n)))throw new g(`Tracker is not initialized at ${n}. Run pm init first.`,y.NOT_FOUND);let r=await x(n),o=L(r,F()),a=[],i=await le(n,r.item_format,o.type_to_folder,a,r.schema,{forceSourceScan:!0}),d=await pe(n,i),c=[],m=[],s={repaired:0,skipped_clean:0,failed:0};for(let u of d.driftedItems)try{let f=await Q(u,{...e,auditContext:e.auditContextById?.[u],auditContextById:void 0},t),l=f.changed?"repaired":"skipped_clean";s[l]+=1,m.push(...f.warnings.map(h=>`${u}:${h}`)),c.push({id:u,outcome:l,entries_rehashed:f.history.entries_rehashed,entries_patch_repaired:f.history.entries_patch_repaired,reconciled_with_item:f.history.reconciled_with_item,...f.reconciliation?{reconciliation:f.reconciliation}:{},warnings:f.warnings})}catch(f){s.failed+=1,c.push({id:u,outcome:"failed",error:f instanceof Error?f.message:String(f)})}return e.dryRun||await ae(n),{all:!0,dry_run:!!e.dryRun,scanned_streams:i.length,drifted_streams:d.driftedItems.length,streams:c,totals:s,warnings:[...new Set([...a,...m])].sort((u,f)=>u.localeCompare(f)),generated_at: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]="b2f34565-7664-5612-815d-949b8b1d4f90")}catch{}})();async function Wt(e,t){let n=e.dryRun===!0,r=await ge(process.cwd()),o=r.reduce((p,_)=>((p[_.item_id]??=[]).push(_),p),{}),a=Object.fromEntries(Object.entries(o).map(([p,_])=>[p,{merge:{receipts:_.map(T)}}])),i=await ke({dryRun:n,author:e.author??t.author,message:e.message??"post-merge reconciliation of field-aware tracker history",force:e.force,auditOperation:"merge_reconcile",auditContextById:a},t),d=new Set(i.streams.map(p=>p.id)),c=Object.keys(o).filter(p=>!d.has(p));(await Promise.allSettled(c.map(p=>Q(p,{dryRun:n,author:e.author??t.author,message:e.message??"record field-aware branch merge provenance",force:e.force,auditOperation:"merge_reconcile",auditContext:a[p],forceAuditEntry:!0},t)))).forEach((p,_)=>{let R=c[_];if(p.status==="fulfilled"){let A=p.value.changed?"repaired":"skipped_clean";i.streams.push({id:R,outcome:A,entries_rehashed:p.value.history.entries_rehashed,entries_patch_repaired:p.value.history.entries_patch_repaired,reconciled_with_item:p.value.history.reconciled_with_item,warnings:p.value.warnings}),i.totals[A]+=1}else i.streams.push({id:R,outcome:"failed",error:p.reason instanceof Error?p.reason.message:String(p.reason)}),i.totals.failed+=1});let s=0;!n&&i.totals.failed===0&&(await Promise.all(r.map(p=>_e(process.cwd(),p))),s=r.length);let u=await we({checkHistoryDrift:!0,checkStorageIntegrity:!0},t),f=u.checks.every(p=>p.status==="ok"),l=i.totals.failed===0&&f,h=n?["Review repair.streams, then rerun pm merge reconcile without --dry-run to apply audited repairs.","No Git hook is installed automatically; invoke this command from an explicit post-merge hook only when your repository policy opts in."]:l?["Reconciliation is complete; commit changed history streams with the merge result.","Rerun pm merge reconcile --dry-run after future tracker-data merges as a non-mutating integrity check."]:["Reconciliation remains incomplete; inspect repair failures and non-green validation checks before retrying.","Do not commit repaired history streams as reconciled until pm merge reconcile returns ok=true."];return{ok:l,dry_run:n,repair:i,receipts:{pending_before:r.length,reconciled:s,summaries:r.map(T)},validation:u,guidance:h,generated_at:u.generated_at}}export{Re as a,ve as b,Pe as c,De as d,Ie as e,Ee as f,Se as g,It as h,Q as i,Ut as j,ke as k,Wt as l};
5
- //# sourceMappingURL=chunk-WVIVUWVL.js.map
5
+ //# sourceMappingURL=chunk-GSW2Y7VZ.js.map