@unbrained/pm-cli 2026.7.18 → 2026.7.19

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 (497) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/CHANGELOG.md +17 -0
  3. package/dist/cli/commands/claim.js +6 -4
  4. package/dist/cli/commands/claim.js.map +1 -1
  5. package/dist/cli/commands/comments.js +5 -2
  6. package/dist/cli/commands/comments.js.map +1 -1
  7. package/dist/cli/commands/context.d.ts +10 -1
  8. package/dist/cli/commands/context.js +44 -6
  9. package/dist/cli/commands/context.js.map +1 -1
  10. package/dist/cli/commands/create.js +15 -4
  11. package/dist/cli/commands/create.js.map +1 -1
  12. package/dist/cli/commands/next.js +13 -3
  13. package/dist/cli/commands/next.js.map +1 -1
  14. package/dist/cli/commands/update.js +14 -3
  15. package/dist/cli/commands/update.js.map +1 -1
  16. package/dist/cli/error-guidance.js +23 -4
  17. package/dist/cli/error-guidance.js.map +1 -1
  18. package/dist/cli/extension-command-help.d.ts +11 -0
  19. package/dist/cli/extension-command-help.js +62 -2
  20. package/dist/cli/extension-command-help.js.map +1 -1
  21. package/dist/cli/main.d.ts +1 -0
  22. package/dist/cli/main.js +16 -11
  23. package/dist/cli/main.js.map +1 -1
  24. package/dist/cli-bundle/bundle-manifest.json +326 -350
  25. package/dist/cli-bundle/chunks/{append-5YF3TO7I.js → append-MBXHNWSX.js} +5 -5
  26. package/dist/cli-bundle/chunks/append-XUYF7NON.js +11 -0
  27. package/dist/cli-bundle/chunks/{chunk-BIRYX32V.js → chunk-2UCG5H6B.js} +3 -3
  28. package/dist/cli-bundle/chunks/{chunk-VE6ZSTQW.js → chunk-2XPDCXK5.js} +4 -4
  29. package/dist/cli-bundle/chunks/{chunk-I3INI567.js → chunk-3EZZTFL2.js} +909 -124
  30. package/dist/cli-bundle/chunks/chunk-3EZZTFL2.js.map +7 -0
  31. package/dist/cli-bundle/chunks/{chunk-GLZKZON6.js → chunk-3HSRP6T2.js} +2 -2
  32. package/dist/cli-bundle/chunks/{chunk-XWBD6DSR.js → chunk-3KPNOZOH.js} +23 -23
  33. package/dist/cli-bundle/chunks/{chunk-MR4SHYR4.js → chunk-3QNUDDY2.js} +104 -23
  34. package/dist/cli-bundle/chunks/chunk-3QNUDDY2.js.map +7 -0
  35. package/dist/cli-bundle/chunks/{chunk-SIPOACV5.js → chunk-46Z6FAVP.js} +888 -124
  36. package/dist/cli-bundle/chunks/chunk-46Z6FAVP.js.map +1 -0
  37. package/dist/cli-bundle/chunks/{chunk-HO4DLBNK.js → chunk-4M6RZJXF.js} +2 -2
  38. package/dist/cli-bundle/chunks/{chunk-RXPQ5Q23.js → chunk-4PSJVGRE.js} +11 -11
  39. package/dist/cli-bundle/chunks/{chunk-ADXDCAKP.js → chunk-5S6IZXK7.js} +146 -32
  40. package/dist/cli-bundle/chunks/{chunk-IL5SPRMH.js.map → chunk-5S6IZXK7.js.map} +7 -1
  41. package/dist/cli-bundle/chunks/chunk-66SRNEBK.js +143 -0
  42. package/dist/cli-bundle/chunks/chunk-66SRNEBK.js.map +7 -0
  43. package/dist/cli-bundle/chunks/{chunk-YFE7JHX3.js → chunk-6BNV3G6C.js} +2 -2
  44. package/dist/cli-bundle/chunks/{chunk-43UMFKCK.js → chunk-6V4T4RD3.js} +23 -23
  45. package/dist/cli-bundle/chunks/chunk-77XFQRTD.js +140 -0
  46. package/dist/cli-bundle/chunks/chunk-77XFQRTD.js.map +1 -0
  47. package/dist/cli-bundle/chunks/{chunk-EHJFUOXL.js → chunk-7B7IHMLH.js} +3 -3
  48. package/dist/cli-bundle/chunks/{chunk-I7DIDUSP.js → chunk-7CHWLT2J.js} +2 -2
  49. package/dist/cli-bundle/chunks/{chunk-L6FVNR7X.js → chunk-A3GAQLBH.js} +5 -5
  50. package/dist/cli-bundle/chunks/{chunk-B57RJHBZ.js → chunk-A4FVWFZY.js} +4 -4
  51. package/dist/cli-bundle/chunks/{chunk-D52ZN3BF.js → chunk-A5EQPNV7.js} +2 -2
  52. package/dist/cli-bundle/chunks/{chunk-TZAE66GQ.js → chunk-AGEBQRBG.js} +15 -15
  53. package/dist/cli-bundle/chunks/{chunk-WU3KAN6A.js → chunk-AQUNTB7G.js} +3 -3
  54. package/dist/cli-bundle/chunks/{chunk-OGVTB5VO.js → chunk-AR24KW26.js} +237 -36
  55. package/dist/cli-bundle/chunks/chunk-AR24KW26.js.map +7 -0
  56. package/dist/cli-bundle/chunks/{chunk-XWYQ2LT4.js → chunk-BBGR4FKQ.js} +4 -4
  57. package/dist/cli-bundle/chunks/{chunk-HTXXXF45.js → chunk-BDC4TW4B.js} +98 -24
  58. package/dist/cli-bundle/chunks/chunk-BDC4TW4B.js.map +1 -0
  59. package/dist/cli-bundle/chunks/{chunk-2FUOXSRN.js → chunk-BFJP4VYC.js} +4 -4
  60. package/dist/cli-bundle/chunks/{chunk-633PKXLT.js → chunk-BZKE2O5V.js} +3 -3
  61. package/dist/cli-bundle/chunks/{chunk-XPUTSGJU.js → chunk-CZA2DXCV.js} +230 -36
  62. package/dist/cli-bundle/chunks/chunk-CZA2DXCV.js.map +1 -0
  63. package/dist/cli-bundle/chunks/{chunk-KX62NMZC.js → chunk-D35WYXWC.js} +626 -5
  64. package/dist/cli-bundle/chunks/chunk-D35WYXWC.js.map +1 -0
  65. package/dist/cli-bundle/chunks/chunk-DOASIOQR.js +289 -0
  66. package/dist/cli-bundle/chunks/chunk-DOASIOQR.js.map +7 -0
  67. package/dist/cli-bundle/chunks/{chunk-L337QKWJ.js → chunk-DUDLSQFG.js} +5 -5
  68. package/dist/cli-bundle/chunks/{chunk-BVLOMU6O.js → chunk-E7KBMWEF.js} +2 -2
  69. package/dist/cli-bundle/chunks/{chunk-3QDR6ZLU.js → chunk-EAV3P54W.js} +9 -9
  70. package/dist/cli-bundle/chunks/{chunk-3QDR6ZLU.js.map → chunk-EAV3P54W.js.map} +2 -2
  71. package/dist/cli-bundle/chunks/{chunk-WQXRZMFN.js → chunk-EEECAV5M.js} +2 -2
  72. package/dist/cli-bundle/chunks/{chunk-35FHWD4C.js → chunk-EI3UIMZM.js} +4 -4
  73. package/dist/cli-bundle/chunks/{chunk-RGMWJLXF.js → chunk-EVAN5VJA.js} +8 -5
  74. package/dist/cli-bundle/chunks/{chunk-RGMWJLXF.js.map → chunk-EVAN5VJA.js.map} +2 -2
  75. package/dist/cli-bundle/chunks/{chunk-PT7MCCGD.js → chunk-FIUTBFC6.js} +2 -2
  76. package/dist/cli-bundle/chunks/{chunk-7H5NNCJ5.js → chunk-FQF6VVPH.js} +4 -4
  77. package/dist/cli-bundle/chunks/{chunk-6DYOZS6C.js → chunk-FQO5THHM.js} +2 -2
  78. package/dist/cli-bundle/chunks/{chunk-5HGZKQUL.js → chunk-FQODDTE7.js} +4 -4
  79. package/dist/cli-bundle/chunks/{chunk-67RO3H4N.js → chunk-G33XIMRT.js} +6 -6
  80. package/dist/cli-bundle/chunks/{chunk-D53RTYVI.js → chunk-GFZB5CLP.js} +20 -10
  81. package/dist/cli-bundle/chunks/chunk-GFZB5CLP.js.map +7 -0
  82. package/dist/cli-bundle/chunks/{chunk-QWBKN3QC.js → chunk-GKCEEXMA.js} +8 -8
  83. package/dist/cli-bundle/chunks/{chunk-DG2EQRIH.js → chunk-GRDK25BN.js} +7 -7
  84. package/dist/cli-bundle/chunks/{chunk-FXFCFL73.js → chunk-H3YKUVDR.js} +5 -5
  85. package/dist/cli-bundle/chunks/{chunk-IL5SPRMH.js → chunk-IEMXESIS.js} +123 -16
  86. package/dist/cli-bundle/chunks/chunk-IEMXESIS.js.map +1 -0
  87. package/dist/cli-bundle/chunks/{chunk-ARGDWQ4J.js → chunk-IGBBTPM5.js} +2 -2
  88. package/dist/cli-bundle/chunks/{chunk-QPGQNLPI.js → chunk-IR3GOO6E.js} +3842 -4109
  89. package/dist/cli-bundle/chunks/chunk-IR3GOO6E.js.map +1 -0
  90. package/dist/cli-bundle/chunks/{chunk-FY4RLHSC.js → chunk-IRJ6F23W.js} +2 -2
  91. package/dist/cli-bundle/chunks/{chunk-66MKH7SZ.js → chunk-IXG5CMBR.js} +4 -4
  92. package/dist/cli-bundle/chunks/{chunk-F3VC3GOV.js → chunk-JBW2S2C6.js} +2090 -253
  93. package/dist/cli-bundle/chunks/chunk-JBW2S2C6.js.map +7 -0
  94. package/dist/cli-bundle/chunks/{chunk-7UCY6DR5.js → chunk-JPWUZOMR.js} +2 -2
  95. package/dist/cli-bundle/chunks/{chunk-FVNWHUME.js → chunk-K2L6FZBX.js} +8 -8
  96. package/dist/cli-bundle/chunks/chunk-KGPLSHJD.js +286 -0
  97. package/dist/cli-bundle/chunks/chunk-KGPLSHJD.js.map +1 -0
  98. package/dist/cli-bundle/chunks/{chunk-YQEZWI3R.js → chunk-KZ5AC6B5.js} +5 -3
  99. package/dist/cli-bundle/chunks/chunk-KZ5AC6B5.js.map +7 -0
  100. package/dist/cli-bundle/chunks/{chunk-X2MGQMZO.js → chunk-LT5UWU7H.js} +2 -2
  101. package/dist/cli-bundle/chunks/{chunk-KH6QAHME.js → chunk-M4B4RK4J.js} +3 -3
  102. package/dist/cli-bundle/chunks/{chunk-QRZNCRNA.js → chunk-MI3346YW.js} +377 -240
  103. package/dist/cli-bundle/chunks/chunk-MI3346YW.js.map +1 -0
  104. package/dist/cli-bundle/chunks/{chunk-2XOSFSTH.js → chunk-MQOSMBWV.js} +5 -5
  105. package/dist/cli-bundle/chunks/{chunk-YIIIAKCE.js → chunk-MRXAHR4B.js} +28 -22
  106. package/dist/cli-bundle/chunks/chunk-MRXAHR4B.js.map +1 -0
  107. package/dist/cli-bundle/chunks/{chunk-7R6UIHYY.js → chunk-N2TEEOXJ.js} +5 -5
  108. package/dist/cli-bundle/chunks/{chunk-NTRQLE2R.js → chunk-N7FCFJ76.js} +2 -2
  109. package/dist/cli-bundle/chunks/{chunk-37DRDP2B.js → chunk-NPEYH6CE.js} +5 -5
  110. package/dist/cli-bundle/chunks/{chunk-GKPCTQYG.js → chunk-NTS2RKHN.js} +3942 -4216
  111. package/dist/cli-bundle/chunks/chunk-NTS2RKHN.js.map +7 -0
  112. package/dist/cli-bundle/chunks/{chunk-6VHUGVNP.js → chunk-ODEIDKGW.js} +2062 -246
  113. package/dist/cli-bundle/chunks/chunk-ODEIDKGW.js.map +1 -0
  114. package/dist/cli-bundle/chunks/{chunk-2CXL335K.js → chunk-OK7VSX3N.js} +3 -3
  115. package/dist/cli-bundle/chunks/{chunk-NNANAWFH.js → chunk-OKPZDH43.js} +3 -3
  116. package/dist/cli-bundle/chunks/{chunk-G6MYGULG.js → chunk-OKWJUL6F.js} +6 -6
  117. package/dist/cli-bundle/chunks/{chunk-HPAYDSR2.js → chunk-P24ZU5QV.js} +27 -21
  118. package/dist/cli-bundle/chunks/chunk-P24ZU5QV.js.map +7 -0
  119. package/dist/cli-bundle/chunks/{chunk-TGBTLGPX.js → chunk-Q4PSG2GV.js} +13 -4
  120. package/dist/cli-bundle/chunks/{chunk-TGBTLGPX.js.map → chunk-Q4PSG2GV.js.map} +1 -1
  121. package/dist/cli-bundle/chunks/{chunk-5UKQLQM2.js → chunk-Q5NHJ6RO.js} +6 -4
  122. package/dist/cli-bundle/chunks/chunk-Q5NHJ6RO.js.map +1 -0
  123. package/dist/cli-bundle/chunks/{chunk-D5XHO4Q7.js → chunk-Q6JPYR7I.js} +2 -2
  124. package/dist/cli-bundle/chunks/{chunk-P22HGFFI.js → chunk-QFG4MB7P.js} +5 -5
  125. package/dist/cli-bundle/chunks/{chunk-P22HGFFI.js.map → chunk-QFG4MB7P.js.map} +1 -1
  126. package/dist/cli-bundle/chunks/{chunk-IE5KRAKN.js → chunk-QQ77W23U.js} +4 -4
  127. package/dist/cli-bundle/chunks/{chunk-M7MVOKVV.js → chunk-QYGK2XQ3.js} +3 -3
  128. package/dist/cli-bundle/chunks/{chunk-646MQXFW.js → chunk-RLLOZAM2.js} +4 -4
  129. package/dist/cli-bundle/chunks/{chunk-646MQXFW.js.map → chunk-RLLOZAM2.js.map} +2 -2
  130. package/dist/cli-bundle/chunks/{chunk-X5YCTFKT.js → chunk-RWAIRGBC.js} +3 -3
  131. package/dist/cli-bundle/chunks/{chunk-W5E2UUSH.js → chunk-RX53WHFI.js} +3 -3
  132. package/dist/cli-bundle/chunks/{chunk-R5XTTZSJ.js → chunk-SBW7EQC4.js} +5 -5
  133. package/dist/cli-bundle/chunks/{chunk-TM5CIO3F.js → chunk-SGJB6PXA.js} +3 -3
  134. package/dist/cli-bundle/chunks/{chunk-DDFGYUCQ.js → chunk-STBCBDKF.js} +7 -7
  135. package/dist/cli-bundle/chunks/{chunk-EX7OQT3Y.js → chunk-SUNZKVAH.js} +10 -10
  136. package/dist/cli-bundle/chunks/{chunk-EX7OQT3Y.js.map → chunk-SUNZKVAH.js.map} +1 -1
  137. package/dist/cli-bundle/chunks/{chunk-FHOBCGQO.js → chunk-SVAWG7EE.js} +2 -2
  138. package/dist/cli-bundle/chunks/{chunk-6O44IN44.js → chunk-T6MOTLOJ.js} +2 -2
  139. package/dist/cli-bundle/chunks/{chunk-HSYV4ZYT.js → chunk-TELI67UP.js} +9 -6
  140. package/dist/cli-bundle/chunks/{chunk-HSYV4ZYT.js.map → chunk-TELI67UP.js.map} +1 -1
  141. package/dist/cli-bundle/chunks/{chunk-EWIT5WIC.js → chunk-U6RYD446.js} +11 -11
  142. package/dist/cli-bundle/chunks/{chunk-E4FXM2XB.js → chunk-UE7LK3RE.js} +5 -5
  143. package/dist/cli-bundle/chunks/{chunk-N33FD2UI.js → chunk-UNNCT5QY.js} +3 -3
  144. package/dist/cli-bundle/chunks/{chunk-2IPNL3DR.js → chunk-UOIFZ66L.js} +3 -3
  145. package/dist/cli-bundle/chunks/{chunk-LSOWTLEM.js → chunk-UU6EP25G.js} +2 -2
  146. package/dist/cli-bundle/chunks/{chunk-HYTOJW2Q.js → chunk-UW6HCMP2.js} +15 -15
  147. package/dist/cli-bundle/chunks/{chunk-47HXN6RX.js → chunk-UWAQI3B7.js} +3 -3
  148. package/dist/cli-bundle/chunks/{chunk-YKFHF37B.js → chunk-V4QHAMI5.js} +3 -3
  149. package/dist/cli-bundle/chunks/{chunk-VAHZIPWS.js → chunk-VA3H7VVC.js} +4 -4
  150. package/dist/cli-bundle/chunks/{chunk-XC2HEEOV.js → chunk-VFA5EIEN.js} +21 -11
  151. package/dist/cli-bundle/chunks/chunk-VFA5EIEN.js.map +1 -0
  152. package/dist/cli-bundle/chunks/{chunk-TLWJP5BF.js → chunk-VQOG2ETB.js} +4 -4
  153. package/dist/cli-bundle/chunks/{chunk-H5IOT54C.js → chunk-VSQE43NO.js} +8 -8
  154. package/dist/cli-bundle/chunks/{chunk-BDA35QG5.js → chunk-W6IEJXNC.js} +2 -2
  155. package/dist/cli-bundle/chunks/{chunk-WACRQ26A.js → chunk-WCBB6VI3.js} +637 -9
  156. package/dist/cli-bundle/chunks/chunk-WCBB6VI3.js.map +7 -0
  157. package/dist/cli-bundle/chunks/{chunk-OWP6QFBV.js → chunk-XDWXPG2E.js} +4 -4
  158. package/dist/cli-bundle/chunks/{chunk-CKX4WOPC.js → chunk-XKVHL3MB.js} +2 -2
  159. package/dist/cli-bundle/chunks/{chunk-WL3SS45P.js → chunk-XVB6BATY.js} +3 -3
  160. package/dist/cli-bundle/chunks/{chunk-NVZ6NVHJ.js → chunk-XXWDEQ6O.js} +4 -4
  161. package/dist/cli-bundle/chunks/{chunk-ILVOOAT4.js → chunk-Y2VSGFT4.js} +8 -8
  162. package/dist/cli-bundle/chunks/{chunk-NCVT6XEL.js → chunk-YG56M3NE.js} +11 -11
  163. package/dist/cli-bundle/chunks/{chunk-AFGKSHAM.js → chunk-YGEA4CLH.js} +4 -4
  164. package/dist/cli-bundle/chunks/{chunk-AXRT7K5V.js → chunk-YIC5NGXF.js} +11 -11
  165. package/dist/cli-bundle/chunks/{chunk-DHNG452T.js → chunk-ZF52NVRT.js} +396 -245
  166. package/dist/cli-bundle/chunks/chunk-ZF52NVRT.js.map +7 -0
  167. package/dist/cli-bundle/chunks/{chunk-XXLXJL7V.js → chunk-ZUCBPXNA.js} +4 -4
  168. package/dist/cli-bundle/chunks/{close-X3CF6FQP.js → close-7NWA3GLA.js} +5 -5
  169. package/dist/cli-bundle/chunks/close-ZZCDDWJT.js +12 -0
  170. package/dist/cli-bundle/chunks/close-many-QCZHFCON.js +23 -0
  171. package/dist/cli-bundle/chunks/{close-many-J7A5EHOQ.js → close-many-YALQ7AXS.js} +14 -14
  172. package/dist/cli-bundle/chunks/comments-FMQNYPSZ.js +13 -0
  173. package/dist/cli-bundle/chunks/{comments-TMHMALA5.js → comments-SQIQ5WYR.js} +7 -7
  174. package/dist/cli-bundle/chunks/copy-GI3RCVZP.js +9 -0
  175. package/dist/cli-bundle/chunks/{copy-FWQA5OU4.js → copy-YDAMENCP.js} +4 -4
  176. package/dist/cli-bundle/chunks/{create-AQ5SIGZC.js → create-JSL6CXU3.js} +11 -9
  177. package/dist/cli-bundle/chunks/create-LXMLYJNM.js +29 -0
  178. package/dist/cli-bundle/chunks/delete-5DFAXJNI.js +10 -0
  179. package/dist/cli-bundle/chunks/{delete-YYYFOSEA.js → delete-IGVOZEU2.js} +4 -4
  180. package/dist/cli-bundle/chunks/{deps-NIIKXLPB.js → deps-BQAXUQAK.js} +6 -6
  181. package/dist/cli-bundle/chunks/{deps-MQ4ZIGZB.js → deps-CBPPSS6J.js} +6 -6
  182. package/dist/cli-bundle/chunks/docs-KCWPLQOV.js +14 -0
  183. package/dist/cli-bundle/chunks/{docs-53NUGMIQ.js → docs-NS2AZWCN.js} +7 -7
  184. package/dist/cli-bundle/chunks/{files-3PXGXYDB.js → files-PVWEPT5J.js} +7 -7
  185. package/dist/cli-bundle/chunks/{files-EGLKHD7O.js → files-XUUBQ76I.js} +7 -7
  186. package/dist/cli-bundle/chunks/focus-3EJVFI3D.js +10 -0
  187. package/dist/cli-bundle/chunks/{focus-SRPASFTN.js → focus-DHBHKK3E.js} +5 -5
  188. package/dist/cli-bundle/chunks/{history-compact-G4DULDCX.js → history-compact-3TNPYVFG.js} +6 -6
  189. package/dist/cli-bundle/chunks/history-compact-JHYVDYLW.js +16 -0
  190. package/dist/cli-bundle/chunks/{history-redact-IUSJ6X3E.js → history-redact-ELRL73XN.js} +4 -4
  191. package/dist/cli-bundle/chunks/{history-redact-THHGRQXV.js → history-redact-KKFDICCF.js} +4 -4
  192. package/dist/cli-bundle/chunks/{history-repair-LUQWRS7X.js → history-repair-J7WKZFAG.js} +6 -6
  193. package/dist/cli-bundle/chunks/history-repair-REMI7DDI.js +16 -0
  194. package/dist/cli-bundle/chunks/learnings-O6V5WDCV.js +13 -0
  195. package/dist/cli-bundle/chunks/{learnings-2MRNBFJF.js → learnings-X4D6JCCG.js} +7 -7
  196. package/dist/cli-bundle/chunks/{notes-73JWKWUD.js → notes-UQC6VS6N.js} +7 -7
  197. package/dist/cli-bundle/chunks/notes-ZSZREWZA.js +13 -0
  198. package/dist/cli-bundle/chunks/{plan-AZPMCG37.js → plan-5GKRBJJO.js} +12 -10
  199. package/dist/cli-bundle/chunks/plan-EZW2YDDY.js +26 -0
  200. package/dist/cli-bundle/chunks/{profile-AVCIIZID.js → profile-5PQAPCLF.js} +10 -10
  201. package/dist/cli-bundle/chunks/{profile-LFYO3HHX.js → profile-CW4BD3FO.js} +10 -10
  202. package/dist/cli-bundle/chunks/{register-list-query-UKMF55FT.js → register-list-query-HTDQE6VI.js} +24 -24
  203. package/dist/cli-bundle/chunks/{register-list-query-MZUF2EEC.js → register-list-query-PHIPDFP2.js} +24 -24
  204. package/dist/cli-bundle/chunks/{register-mutation-T6RVNJC4.js → register-mutation-BLEWM5I6.js} +32 -32
  205. package/dist/cli-bundle/chunks/{register-mutation-2PBW2GEX.js → register-mutation-OTYHR7J6.js} +32 -32
  206. package/dist/cli-bundle/chunks/{register-operations-KHZYR6MG.js → register-operations-AMCUFYEW.js} +38 -40
  207. package/dist/cli-bundle/chunks/{register-operations-KHZYR6MG.js.map → register-operations-AMCUFYEW.js.map} +1 -1
  208. package/dist/cli-bundle/chunks/{register-operations-WPQ2LWZJ.js → register-operations-MRLHOZYR.js} +36 -38
  209. package/dist/cli-bundle/chunks/{register-operations-WPQ2LWZJ.js.map → register-operations-MRLHOZYR.js.map} +1 -1
  210. package/dist/cli-bundle/chunks/{register-setup-PGDNOXDQ.js → register-setup-N2FOSWAG.js} +15 -17
  211. package/dist/cli-bundle/chunks/{register-setup-PGDNOXDQ.js.map → register-setup-N2FOSWAG.js.map} +1 -1
  212. package/dist/cli-bundle/chunks/{register-setup-TDN7WAO6.js → register-setup-ZVKTDL4G.js} +17 -19
  213. package/dist/cli-bundle/chunks/{register-setup-TDN7WAO6.js.map → register-setup-ZVKTDL4G.js.map} +1 -1
  214. package/dist/cli-bundle/chunks/restore-A55MLFAI.js +14 -0
  215. package/dist/cli-bundle/chunks/{restore-E3PRGDN3.js → restore-HEQAG6EK.js} +6 -6
  216. package/dist/cli-bundle/chunks/{schema-5JNFQFUW.js → schema-MAXAIHEC.js} +6 -6
  217. package/dist/cli-bundle/chunks/{schema-TMIW4XZC.js → schema-Q5DAWJ2S.js} +6 -6
  218. package/dist/cli-bundle/chunks/update-5DTSCWVF.js +23 -0
  219. package/dist/cli-bundle/chunks/{update-SQYZA3ZW.js → update-DWFXXJKP.js} +15 -13
  220. package/dist/cli-bundle/chunks/update-many-6T4ZLZS7.js +34 -0
  221. package/dist/cli-bundle/chunks/update-many-MYRK6VBJ.js +38 -0
  222. package/dist/cli-bundle/main.js +152 -29
  223. package/dist/cli-bundle/main.js.map +3 -3
  224. package/dist/cli-bundle/sdk-runtime.js +72 -75
  225. package/dist/cli-bundle/sdk-testing.js +8 -8
  226. package/dist/cli-bundle/sdk.js +288 -642
  227. package/dist/cli-bundle/sdk.js.map +4 -4
  228. package/dist/core/extensions/activation-summary.d.ts +2 -0
  229. package/dist/core/extensions/activation-summary.js +7 -2
  230. package/dist/core/extensions/activation-summary.js.map +1 -1
  231. package/dist/core/extensions/capability-usage.d.ts +1 -1
  232. package/dist/core/extensions/capability-usage.js +5 -2
  233. package/dist/core/extensions/capability-usage.js.map +1 -1
  234. package/dist/core/extensions/extension-hook-runtime.js +3 -2
  235. package/dist/core/extensions/extension-hook-runtime.js.map +1 -1
  236. package/dist/core/extensions/extension-registries.js +3 -2
  237. package/dist/core/extensions/extension-registries.js.map +1 -1
  238. package/dist/core/extensions/extension-types.d.ts +38 -1
  239. package/dist/core/extensions/extension-types.js +3 -2
  240. package/dist/core/extensions/extension-types.js.map +1 -1
  241. package/dist/core/extensions/loader.js +36 -2
  242. package/dist/core/extensions/loader.js.map +1 -1
  243. package/dist/core/store/item-store.d.ts +4 -1
  244. package/dist/core/store/item-store.js +3 -3
  245. package/dist/core/store/item-store.js.map +1 -1
  246. package/dist/core/store/paths.d.ts +2 -0
  247. package/dist/core/store/paths.js +26 -3
  248. package/dist/core/store/paths.js.map +1 -1
  249. package/dist/sdk/cli-contracts/enum-contracts.d.ts +1 -1
  250. package/dist/sdk/compose.d.ts +3 -0
  251. package/dist/sdk/compose.js +14 -2
  252. package/dist/sdk/compose.js.map +1 -1
  253. package/dist/sdk/dependencies.js +3 -3
  254. package/dist/sdk/dependencies.js.map +1 -1
  255. package/dist/sdk/extension-command-context.d.ts +10 -0
  256. package/dist/sdk/extension-command-context.js +30 -0
  257. package/dist/sdk/extension-command-context.js.map +1 -0
  258. package/dist/sdk/graph/assembly.js +14 -4
  259. package/dist/sdk/graph/assembly.js.map +1 -1
  260. package/dist/sdk/graph/index.d.ts +1 -0
  261. package/dist/sdk/graph/index.js +3 -2
  262. package/dist/sdk/graph/index.js.map +1 -1
  263. package/dist/sdk/graph/mutation-advisory.d.ts +20 -0
  264. package/dist/sdk/graph/mutation-advisory.js +80 -0
  265. package/dist/sdk/graph/mutation-advisory.js.map +1 -0
  266. package/dist/sdk/graph/run.d.ts +5 -1
  267. package/dist/sdk/graph/run.js +11 -3
  268. package/dist/sdk/graph/run.js.map +1 -1
  269. package/dist/sdk/index.d.ts +4 -1
  270. package/dist/sdk/index.js +5 -2
  271. package/dist/sdk/index.js.map +1 -1
  272. package/dist/sdk/ownership-source.d.ts +2 -0
  273. package/dist/sdk/ownership-source.js +22 -0
  274. package/dist/sdk/ownership-source.js.map +1 -0
  275. package/dist/sdk/relationship-history.d.ts +38 -0
  276. package/dist/sdk/relationship-history.js +60 -2
  277. package/dist/sdk/relationship-history.js.map +1 -1
  278. package/dist/sdk/relationships.js +49 -8
  279. package/dist/sdk/relationships.js.map +1 -1
  280. package/dist/sdk/runtime-input.js +3 -2
  281. package/dist/sdk/runtime-input.js.map +1 -1
  282. package/dist/sdk/runtime.d.ts +2 -0
  283. package/dist/sdk/runtime.js +19 -2
  284. package/dist/sdk/runtime.js.map +1 -1
  285. package/dist/sdk/tracker-root-discovery.d.ts +6 -0
  286. package/dist/sdk/tracker-root-discovery.js +10 -0
  287. package/dist/sdk/tracker-root-discovery.js.map +1 -0
  288. package/dist/sdk/workspace-transaction.d.ts +83 -0
  289. package/dist/sdk/workspace-transaction.js +364 -0
  290. package/dist/sdk/workspace-transaction.js.map +1 -0
  291. package/docs/AGENT_UX_CONTRACTS.md +41 -0
  292. package/docs/EXTENSIONS.md +4 -4
  293. package/docs/README.md +1 -0
  294. package/docs/SDK.md +102 -1
  295. package/marketplace.json +2 -2
  296. package/package.json +1 -1
  297. package/packages/pm-beads/package.json +1 -1
  298. package/packages/pm-calendar/package.json +1 -1
  299. package/packages/pm-command-kit/package.json +1 -1
  300. package/packages/pm-governance-audit/package.json +1 -1
  301. package/packages/pm-guide-shell/package.json +1 -1
  302. package/packages/pm-kanban/package.json +1 -1
  303. package/packages/pm-lifecycle-hooks/package.json +1 -1
  304. package/packages/pm-linked-test-adapters/package.json +1 -1
  305. package/packages/pm-search-advanced/package.json +1 -1
  306. package/packages/pm-templates/package.json +1 -1
  307. package/packages/pm-todos/package.json +1 -1
  308. package/packages/pm-vcs/GAP_REPORT.md +31 -0
  309. package/packages/pm-vcs/README.md +62 -0
  310. package/packages/pm-vcs/extensions/vcs/index.ts +745 -0
  311. package/packages/pm-vcs/extensions/vcs/manifest.json +19 -0
  312. package/packages/pm-vcs/extensions/vcs/package.json +3 -0
  313. package/packages/pm-vcs/package.json +55 -0
  314. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  315. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  316. package/dist/cli-bundle/chunks/append-JHO5K6RP.js +0 -11
  317. package/dist/cli-bundle/chunks/chunk-2BX74BAS.js +0 -125
  318. package/dist/cli-bundle/chunks/chunk-2BX74BAS.js.map +0 -7
  319. package/dist/cli-bundle/chunks/chunk-3CUQZNQ6.js +0 -672
  320. package/dist/cli-bundle/chunks/chunk-3CUQZNQ6.js.map +0 -7
  321. package/dist/cli-bundle/chunks/chunk-5UKQLQM2.js.map +0 -1
  322. package/dist/cli-bundle/chunks/chunk-6VHUGVNP.js.map +0 -1
  323. package/dist/cli-bundle/chunks/chunk-74FKFFXO.js +0 -172
  324. package/dist/cli-bundle/chunks/chunk-74FKFFXO.js.map +0 -7
  325. package/dist/cli-bundle/chunks/chunk-ADXDCAKP.js.map +0 -7
  326. package/dist/cli-bundle/chunks/chunk-BAP7G3N2.js +0 -178
  327. package/dist/cli-bundle/chunks/chunk-BAP7G3N2.js.map +0 -7
  328. package/dist/cli-bundle/chunks/chunk-D53RTYVI.js.map +0 -7
  329. package/dist/cli-bundle/chunks/chunk-DHNG452T.js.map +0 -7
  330. package/dist/cli-bundle/chunks/chunk-EY7ZE3TG.js +0 -1831
  331. package/dist/cli-bundle/chunks/chunk-EY7ZE3TG.js.map +0 -1
  332. package/dist/cli-bundle/chunks/chunk-F3VC3GOV.js.map +0 -7
  333. package/dist/cli-bundle/chunks/chunk-FL4D53ND.js +0 -162
  334. package/dist/cli-bundle/chunks/chunk-FL4D53ND.js.map +0 -1
  335. package/dist/cli-bundle/chunks/chunk-GKPCTQYG.js.map +0 -7
  336. package/dist/cli-bundle/chunks/chunk-HPAYDSR2.js.map +0 -7
  337. package/dist/cli-bundle/chunks/chunk-HTXXXF45.js.map +0 -1
  338. package/dist/cli-bundle/chunks/chunk-I3INI567.js.map +0 -7
  339. package/dist/cli-bundle/chunks/chunk-KX62NMZC.js.map +0 -1
  340. package/dist/cli-bundle/chunks/chunk-L5BTTDU5.js +0 -662
  341. package/dist/cli-bundle/chunks/chunk-L5BTTDU5.js.map +0 -1
  342. package/dist/cli-bundle/chunks/chunk-MR4SHYR4.js.map +0 -7
  343. package/dist/cli-bundle/chunks/chunk-OGVTB5VO.js.map +0 -7
  344. package/dist/cli-bundle/chunks/chunk-QPGQNLPI.js.map +0 -1
  345. package/dist/cli-bundle/chunks/chunk-QRZNCRNA.js.map +0 -1
  346. package/dist/cli-bundle/chunks/chunk-RC4UOUXA.js +0 -122
  347. package/dist/cli-bundle/chunks/chunk-RC4UOUXA.js.map +0 -1
  348. package/dist/cli-bundle/chunks/chunk-RTBX3C4C.js +0 -1841
  349. package/dist/cli-bundle/chunks/chunk-RTBX3C4C.js.map +0 -7
  350. package/dist/cli-bundle/chunks/chunk-SIPOACV5.js.map +0 -1
  351. package/dist/cli-bundle/chunks/chunk-WACRQ26A.js.map +0 -7
  352. package/dist/cli-bundle/chunks/chunk-XC2HEEOV.js.map +0 -1
  353. package/dist/cli-bundle/chunks/chunk-XPUTSGJU.js.map +0 -1
  354. package/dist/cli-bundle/chunks/chunk-YIIIAKCE.js.map +0 -1
  355. package/dist/cli-bundle/chunks/chunk-YJSURTBB.js +0 -175
  356. package/dist/cli-bundle/chunks/chunk-YJSURTBB.js.map +0 -1
  357. package/dist/cli-bundle/chunks/chunk-YQEZWI3R.js.map +0 -7
  358. package/dist/cli-bundle/chunks/close-GPD7DTJV.js +0 -12
  359. package/dist/cli-bundle/chunks/close-many-NQLYGPYW.js +0 -23
  360. package/dist/cli-bundle/chunks/comments-2AOZQ5D2.js +0 -13
  361. package/dist/cli-bundle/chunks/copy-N3LCQBMC.js +0 -9
  362. package/dist/cli-bundle/chunks/create-KOGQ3JKD.js +0 -27
  363. package/dist/cli-bundle/chunks/delete-6G3MBZ6S.js +0 -10
  364. package/dist/cli-bundle/chunks/docs-OWRGDMNY.js +0 -14
  365. package/dist/cli-bundle/chunks/focus-KZLIA6WS.js +0 -10
  366. package/dist/cli-bundle/chunks/history-compact-HHIUOMZ7.js +0 -16
  367. package/dist/cli-bundle/chunks/history-repair-KG7SWXI6.js +0 -16
  368. package/dist/cli-bundle/chunks/learnings-ZVHSALJY.js +0 -13
  369. package/dist/cli-bundle/chunks/notes-BAKUL5DJ.js +0 -13
  370. package/dist/cli-bundle/chunks/plan-LEAGLPGP.js +0 -24
  371. package/dist/cli-bundle/chunks/restore-KIUYTAEJ.js +0 -14
  372. package/dist/cli-bundle/chunks/update-XZJYS5X7.js +0 -21
  373. package/dist/cli-bundle/chunks/update-many-R24B3GBK.js +0 -36
  374. package/dist/cli-bundle/chunks/update-many-WQ3R3J6N.js +0 -32
  375. /package/dist/cli-bundle/chunks/{append-5YF3TO7I.js.map → append-MBXHNWSX.js.map} +0 -0
  376. /package/dist/cli-bundle/chunks/{append-JHO5K6RP.js.map → append-XUYF7NON.js.map} +0 -0
  377. /package/dist/cli-bundle/chunks/{chunk-BIRYX32V.js.map → chunk-2UCG5H6B.js.map} +0 -0
  378. /package/dist/cli-bundle/chunks/{chunk-VE6ZSTQW.js.map → chunk-2XPDCXK5.js.map} +0 -0
  379. /package/dist/cli-bundle/chunks/{chunk-GLZKZON6.js.map → chunk-3HSRP6T2.js.map} +0 -0
  380. /package/dist/cli-bundle/chunks/{chunk-XWBD6DSR.js.map → chunk-3KPNOZOH.js.map} +0 -0
  381. /package/dist/cli-bundle/chunks/{chunk-HO4DLBNK.js.map → chunk-4M6RZJXF.js.map} +0 -0
  382. /package/dist/cli-bundle/chunks/{chunk-RXPQ5Q23.js.map → chunk-4PSJVGRE.js.map} +0 -0
  383. /package/dist/cli-bundle/chunks/{chunk-YFE7JHX3.js.map → chunk-6BNV3G6C.js.map} +0 -0
  384. /package/dist/cli-bundle/chunks/{chunk-43UMFKCK.js.map → chunk-6V4T4RD3.js.map} +0 -0
  385. /package/dist/cli-bundle/chunks/{chunk-EHJFUOXL.js.map → chunk-7B7IHMLH.js.map} +0 -0
  386. /package/dist/cli-bundle/chunks/{chunk-I7DIDUSP.js.map → chunk-7CHWLT2J.js.map} +0 -0
  387. /package/dist/cli-bundle/chunks/{chunk-L6FVNR7X.js.map → chunk-A3GAQLBH.js.map} +0 -0
  388. /package/dist/cli-bundle/chunks/{chunk-B57RJHBZ.js.map → chunk-A4FVWFZY.js.map} +0 -0
  389. /package/dist/cli-bundle/chunks/{chunk-D52ZN3BF.js.map → chunk-A5EQPNV7.js.map} +0 -0
  390. /package/dist/cli-bundle/chunks/{chunk-TZAE66GQ.js.map → chunk-AGEBQRBG.js.map} +0 -0
  391. /package/dist/cli-bundle/chunks/{chunk-WU3KAN6A.js.map → chunk-AQUNTB7G.js.map} +0 -0
  392. /package/dist/cli-bundle/chunks/{chunk-XWYQ2LT4.js.map → chunk-BBGR4FKQ.js.map} +0 -0
  393. /package/dist/cli-bundle/chunks/{chunk-2FUOXSRN.js.map → chunk-BFJP4VYC.js.map} +0 -0
  394. /package/dist/cli-bundle/chunks/{chunk-633PKXLT.js.map → chunk-BZKE2O5V.js.map} +0 -0
  395. /package/dist/cli-bundle/chunks/{chunk-L337QKWJ.js.map → chunk-DUDLSQFG.js.map} +0 -0
  396. /package/dist/cli-bundle/chunks/{chunk-BVLOMU6O.js.map → chunk-E7KBMWEF.js.map} +0 -0
  397. /package/dist/cli-bundle/chunks/{chunk-WQXRZMFN.js.map → chunk-EEECAV5M.js.map} +0 -0
  398. /package/dist/cli-bundle/chunks/{chunk-35FHWD4C.js.map → chunk-EI3UIMZM.js.map} +0 -0
  399. /package/dist/cli-bundle/chunks/{chunk-PT7MCCGD.js.map → chunk-FIUTBFC6.js.map} +0 -0
  400. /package/dist/cli-bundle/chunks/{chunk-7H5NNCJ5.js.map → chunk-FQF6VVPH.js.map} +0 -0
  401. /package/dist/cli-bundle/chunks/{chunk-6DYOZS6C.js.map → chunk-FQO5THHM.js.map} +0 -0
  402. /package/dist/cli-bundle/chunks/{chunk-5HGZKQUL.js.map → chunk-FQODDTE7.js.map} +0 -0
  403. /package/dist/cli-bundle/chunks/{chunk-67RO3H4N.js.map → chunk-G33XIMRT.js.map} +0 -0
  404. /package/dist/cli-bundle/chunks/{chunk-QWBKN3QC.js.map → chunk-GKCEEXMA.js.map} +0 -0
  405. /package/dist/cli-bundle/chunks/{chunk-DG2EQRIH.js.map → chunk-GRDK25BN.js.map} +0 -0
  406. /package/dist/cli-bundle/chunks/{chunk-FXFCFL73.js.map → chunk-H3YKUVDR.js.map} +0 -0
  407. /package/dist/cli-bundle/chunks/{chunk-ARGDWQ4J.js.map → chunk-IGBBTPM5.js.map} +0 -0
  408. /package/dist/cli-bundle/chunks/{chunk-FY4RLHSC.js.map → chunk-IRJ6F23W.js.map} +0 -0
  409. /package/dist/cli-bundle/chunks/{chunk-66MKH7SZ.js.map → chunk-IXG5CMBR.js.map} +0 -0
  410. /package/dist/cli-bundle/chunks/{chunk-7UCY6DR5.js.map → chunk-JPWUZOMR.js.map} +0 -0
  411. /package/dist/cli-bundle/chunks/{chunk-FVNWHUME.js.map → chunk-K2L6FZBX.js.map} +0 -0
  412. /package/dist/cli-bundle/chunks/{chunk-X2MGQMZO.js.map → chunk-LT5UWU7H.js.map} +0 -0
  413. /package/dist/cli-bundle/chunks/{chunk-KH6QAHME.js.map → chunk-M4B4RK4J.js.map} +0 -0
  414. /package/dist/cli-bundle/chunks/{chunk-2XOSFSTH.js.map → chunk-MQOSMBWV.js.map} +0 -0
  415. /package/dist/cli-bundle/chunks/{chunk-7R6UIHYY.js.map → chunk-N2TEEOXJ.js.map} +0 -0
  416. /package/dist/cli-bundle/chunks/{chunk-NTRQLE2R.js.map → chunk-N7FCFJ76.js.map} +0 -0
  417. /package/dist/cli-bundle/chunks/{chunk-37DRDP2B.js.map → chunk-NPEYH6CE.js.map} +0 -0
  418. /package/dist/cli-bundle/chunks/{chunk-2CXL335K.js.map → chunk-OK7VSX3N.js.map} +0 -0
  419. /package/dist/cli-bundle/chunks/{chunk-NNANAWFH.js.map → chunk-OKPZDH43.js.map} +0 -0
  420. /package/dist/cli-bundle/chunks/{chunk-G6MYGULG.js.map → chunk-OKWJUL6F.js.map} +0 -0
  421. /package/dist/cli-bundle/chunks/{chunk-D5XHO4Q7.js.map → chunk-Q6JPYR7I.js.map} +0 -0
  422. /package/dist/cli-bundle/chunks/{chunk-IE5KRAKN.js.map → chunk-QQ77W23U.js.map} +0 -0
  423. /package/dist/cli-bundle/chunks/{chunk-M7MVOKVV.js.map → chunk-QYGK2XQ3.js.map} +0 -0
  424. /package/dist/cli-bundle/chunks/{chunk-X5YCTFKT.js.map → chunk-RWAIRGBC.js.map} +0 -0
  425. /package/dist/cli-bundle/chunks/{chunk-W5E2UUSH.js.map → chunk-RX53WHFI.js.map} +0 -0
  426. /package/dist/cli-bundle/chunks/{chunk-R5XTTZSJ.js.map → chunk-SBW7EQC4.js.map} +0 -0
  427. /package/dist/cli-bundle/chunks/{chunk-TM5CIO3F.js.map → chunk-SGJB6PXA.js.map} +0 -0
  428. /package/dist/cli-bundle/chunks/{chunk-DDFGYUCQ.js.map → chunk-STBCBDKF.js.map} +0 -0
  429. /package/dist/cli-bundle/chunks/{chunk-FHOBCGQO.js.map → chunk-SVAWG7EE.js.map} +0 -0
  430. /package/dist/cli-bundle/chunks/{chunk-6O44IN44.js.map → chunk-T6MOTLOJ.js.map} +0 -0
  431. /package/dist/cli-bundle/chunks/{chunk-EWIT5WIC.js.map → chunk-U6RYD446.js.map} +0 -0
  432. /package/dist/cli-bundle/chunks/{chunk-E4FXM2XB.js.map → chunk-UE7LK3RE.js.map} +0 -0
  433. /package/dist/cli-bundle/chunks/{chunk-N33FD2UI.js.map → chunk-UNNCT5QY.js.map} +0 -0
  434. /package/dist/cli-bundle/chunks/{chunk-2IPNL3DR.js.map → chunk-UOIFZ66L.js.map} +0 -0
  435. /package/dist/cli-bundle/chunks/{chunk-LSOWTLEM.js.map → chunk-UU6EP25G.js.map} +0 -0
  436. /package/dist/cli-bundle/chunks/{chunk-HYTOJW2Q.js.map → chunk-UW6HCMP2.js.map} +0 -0
  437. /package/dist/cli-bundle/chunks/{chunk-47HXN6RX.js.map → chunk-UWAQI3B7.js.map} +0 -0
  438. /package/dist/cli-bundle/chunks/{chunk-YKFHF37B.js.map → chunk-V4QHAMI5.js.map} +0 -0
  439. /package/dist/cli-bundle/chunks/{chunk-VAHZIPWS.js.map → chunk-VA3H7VVC.js.map} +0 -0
  440. /package/dist/cli-bundle/chunks/{chunk-TLWJP5BF.js.map → chunk-VQOG2ETB.js.map} +0 -0
  441. /package/dist/cli-bundle/chunks/{chunk-H5IOT54C.js.map → chunk-VSQE43NO.js.map} +0 -0
  442. /package/dist/cli-bundle/chunks/{chunk-BDA35QG5.js.map → chunk-W6IEJXNC.js.map} +0 -0
  443. /package/dist/cli-bundle/chunks/{chunk-OWP6QFBV.js.map → chunk-XDWXPG2E.js.map} +0 -0
  444. /package/dist/cli-bundle/chunks/{chunk-CKX4WOPC.js.map → chunk-XKVHL3MB.js.map} +0 -0
  445. /package/dist/cli-bundle/chunks/{chunk-WL3SS45P.js.map → chunk-XVB6BATY.js.map} +0 -0
  446. /package/dist/cli-bundle/chunks/{chunk-NVZ6NVHJ.js.map → chunk-XXWDEQ6O.js.map} +0 -0
  447. /package/dist/cli-bundle/chunks/{chunk-ILVOOAT4.js.map → chunk-Y2VSGFT4.js.map} +0 -0
  448. /package/dist/cli-bundle/chunks/{chunk-NCVT6XEL.js.map → chunk-YG56M3NE.js.map} +0 -0
  449. /package/dist/cli-bundle/chunks/{chunk-AFGKSHAM.js.map → chunk-YGEA4CLH.js.map} +0 -0
  450. /package/dist/cli-bundle/chunks/{chunk-AXRT7K5V.js.map → chunk-YIC5NGXF.js.map} +0 -0
  451. /package/dist/cli-bundle/chunks/{chunk-XXLXJL7V.js.map → chunk-ZUCBPXNA.js.map} +0 -0
  452. /package/dist/cli-bundle/chunks/{close-X3CF6FQP.js.map → close-7NWA3GLA.js.map} +0 -0
  453. /package/dist/cli-bundle/chunks/{close-GPD7DTJV.js.map → close-ZZCDDWJT.js.map} +0 -0
  454. /package/dist/cli-bundle/chunks/{close-many-NQLYGPYW.js.map → close-many-QCZHFCON.js.map} +0 -0
  455. /package/dist/cli-bundle/chunks/{close-many-J7A5EHOQ.js.map → close-many-YALQ7AXS.js.map} +0 -0
  456. /package/dist/cli-bundle/chunks/{comments-2AOZQ5D2.js.map → comments-FMQNYPSZ.js.map} +0 -0
  457. /package/dist/cli-bundle/chunks/{comments-TMHMALA5.js.map → comments-SQIQ5WYR.js.map} +0 -0
  458. /package/dist/cli-bundle/chunks/{copy-N3LCQBMC.js.map → copy-GI3RCVZP.js.map} +0 -0
  459. /package/dist/cli-bundle/chunks/{copy-FWQA5OU4.js.map → copy-YDAMENCP.js.map} +0 -0
  460. /package/dist/cli-bundle/chunks/{create-AQ5SIGZC.js.map → create-JSL6CXU3.js.map} +0 -0
  461. /package/dist/cli-bundle/chunks/{create-KOGQ3JKD.js.map → create-LXMLYJNM.js.map} +0 -0
  462. /package/dist/cli-bundle/chunks/{delete-6G3MBZ6S.js.map → delete-5DFAXJNI.js.map} +0 -0
  463. /package/dist/cli-bundle/chunks/{delete-YYYFOSEA.js.map → delete-IGVOZEU2.js.map} +0 -0
  464. /package/dist/cli-bundle/chunks/{deps-NIIKXLPB.js.map → deps-BQAXUQAK.js.map} +0 -0
  465. /package/dist/cli-bundle/chunks/{deps-MQ4ZIGZB.js.map → deps-CBPPSS6J.js.map} +0 -0
  466. /package/dist/cli-bundle/chunks/{docs-OWRGDMNY.js.map → docs-KCWPLQOV.js.map} +0 -0
  467. /package/dist/cli-bundle/chunks/{docs-53NUGMIQ.js.map → docs-NS2AZWCN.js.map} +0 -0
  468. /package/dist/cli-bundle/chunks/{files-3PXGXYDB.js.map → files-PVWEPT5J.js.map} +0 -0
  469. /package/dist/cli-bundle/chunks/{files-EGLKHD7O.js.map → files-XUUBQ76I.js.map} +0 -0
  470. /package/dist/cli-bundle/chunks/{focus-KZLIA6WS.js.map → focus-3EJVFI3D.js.map} +0 -0
  471. /package/dist/cli-bundle/chunks/{focus-SRPASFTN.js.map → focus-DHBHKK3E.js.map} +0 -0
  472. /package/dist/cli-bundle/chunks/{history-compact-G4DULDCX.js.map → history-compact-3TNPYVFG.js.map} +0 -0
  473. /package/dist/cli-bundle/chunks/{history-compact-HHIUOMZ7.js.map → history-compact-JHYVDYLW.js.map} +0 -0
  474. /package/dist/cli-bundle/chunks/{history-redact-IUSJ6X3E.js.map → history-redact-ELRL73XN.js.map} +0 -0
  475. /package/dist/cli-bundle/chunks/{history-redact-THHGRQXV.js.map → history-redact-KKFDICCF.js.map} +0 -0
  476. /package/dist/cli-bundle/chunks/{history-repair-LUQWRS7X.js.map → history-repair-J7WKZFAG.js.map} +0 -0
  477. /package/dist/cli-bundle/chunks/{history-repair-KG7SWXI6.js.map → history-repair-REMI7DDI.js.map} +0 -0
  478. /package/dist/cli-bundle/chunks/{learnings-ZVHSALJY.js.map → learnings-O6V5WDCV.js.map} +0 -0
  479. /package/dist/cli-bundle/chunks/{learnings-2MRNBFJF.js.map → learnings-X4D6JCCG.js.map} +0 -0
  480. /package/dist/cli-bundle/chunks/{notes-73JWKWUD.js.map → notes-UQC6VS6N.js.map} +0 -0
  481. /package/dist/cli-bundle/chunks/{notes-BAKUL5DJ.js.map → notes-ZSZREWZA.js.map} +0 -0
  482. /package/dist/cli-bundle/chunks/{plan-AZPMCG37.js.map → plan-5GKRBJJO.js.map} +0 -0
  483. /package/dist/cli-bundle/chunks/{plan-LEAGLPGP.js.map → plan-EZW2YDDY.js.map} +0 -0
  484. /package/dist/cli-bundle/chunks/{profile-AVCIIZID.js.map → profile-5PQAPCLF.js.map} +0 -0
  485. /package/dist/cli-bundle/chunks/{profile-LFYO3HHX.js.map → profile-CW4BD3FO.js.map} +0 -0
  486. /package/dist/cli-bundle/chunks/{register-list-query-UKMF55FT.js.map → register-list-query-HTDQE6VI.js.map} +0 -0
  487. /package/dist/cli-bundle/chunks/{register-list-query-MZUF2EEC.js.map → register-list-query-PHIPDFP2.js.map} +0 -0
  488. /package/dist/cli-bundle/chunks/{register-mutation-T6RVNJC4.js.map → register-mutation-BLEWM5I6.js.map} +0 -0
  489. /package/dist/cli-bundle/chunks/{register-mutation-2PBW2GEX.js.map → register-mutation-OTYHR7J6.js.map} +0 -0
  490. /package/dist/cli-bundle/chunks/{restore-KIUYTAEJ.js.map → restore-A55MLFAI.js.map} +0 -0
  491. /package/dist/cli-bundle/chunks/{restore-E3PRGDN3.js.map → restore-HEQAG6EK.js.map} +0 -0
  492. /package/dist/cli-bundle/chunks/{schema-5JNFQFUW.js.map → schema-MAXAIHEC.js.map} +0 -0
  493. /package/dist/cli-bundle/chunks/{schema-TMIW4XZC.js.map → schema-Q5DAWJ2S.js.map} +0 -0
  494. /package/dist/cli-bundle/chunks/{update-XZJYS5X7.js.map → update-5DTSCWVF.js.map} +0 -0
  495. /package/dist/cli-bundle/chunks/{update-SQYZA3ZW.js.map → update-DWFXXJKP.js.map} +0 -0
  496. /package/dist/cli-bundle/chunks/{update-many-WQ3R3J6N.js.map → update-many-6T4ZLZS7.js.map} +0 -0
  497. /package/dist/cli-bundle/chunks/{update-many-R24B3GBK.js.map → update-many-MYRK6VBJ.js.map} +0 -0
@@ -170,7 +170,7 @@ function resolveConfiguredPmPackageRoot(env = process.env, envName = "PM_CLI_PAC
170
170
  !(function() {
171
171
  try {
172
172
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
173
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "0fbce948-b444-5d85-9c78-d3f3b79ef6c7");
173
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "765cc85b-c5c2-5021-8237-60235d3726df");
174
174
  } catch (e2) {
175
175
  }
176
176
  })();
@@ -214,6 +214,7 @@ var KNOWN_EXTENSION_POLICY_SURFACES = [
214
214
  "schema.flags",
215
215
  "schema.itemfields",
216
216
  "schema.itemtypes",
217
+ "schema.relationshipkinds",
217
218
  "schema.migrations",
218
219
  "schema.profiles",
219
220
  "parser.override",
@@ -1572,13 +1573,13 @@ function validateTypeOptions(typeName, rawTypeOptions, registry) {
1572
1573
  }
1573
1574
 
1574
1575
  // dist/core/store/paths.js
1575
- import { readFileSync, statSync } from "node:fs";
1576
+ import { readFileSync, readdirSync, statSync } from "node:fs";
1576
1577
  import os from "node:os";
1577
1578
  import path3 from "node:path";
1578
1579
  !(function() {
1579
1580
  try {
1580
1581
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
1581
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "c608ecfa-22ff-57f1-ba73-5c9d9dcda559");
1582
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "d048a0fa-7ce5-56bf-90b4-beec55a3cb93");
1582
1583
  } catch (e2) {
1583
1584
  }
1584
1585
  })();
@@ -1590,6 +1591,12 @@ var ITEM_FORMAT_BY_EXTENSION = {
1590
1591
  ".md": "json_markdown",
1591
1592
  ".toon": "toon"
1592
1593
  };
1594
+ var NEARBY_TRACKER_SCAN_IGNORED_DIRECTORIES = /* @__PURE__ */ new Set([
1595
+ ".git",
1596
+ "coverage",
1597
+ "dist",
1598
+ "node_modules"
1599
+ ]);
1593
1600
  var ITEM_FILE_EXTENSIONS = [".md", ".toon"];
1594
1601
  function pathExists2(pathValue) {
1595
1602
  try {
@@ -1629,6 +1636,14 @@ function discoverPmRootFromAncestors(cwd) {
1629
1636
  current = parent;
1630
1637
  }
1631
1638
  }
1639
+ function discoverNearbyPmRoot(cwd, excludedRoot) {
1640
+ const normalizedExcluded = excludedRoot ? path3.resolve(excludedRoot) : void 0;
1641
+ try {
1642
+ return readdirSync(path3.resolve(cwd), { withFileTypes: true }).filter((entry) => entry.isDirectory() && !NEARBY_TRACKER_SCAN_IGNORED_DIRECTORIES.has(entry.name)).map((entry) => path3.join(path3.resolve(cwd), entry.name)).filter((candidate) => candidate !== normalizedExcluded).filter((candidate) => pathExists2(getSettingsPath(candidate))).filter((candidate) => isPmSettingsFile(getSettingsPath(candidate))).sort((left, right) => left.localeCompare(right))[0];
1643
+ } catch {
1644
+ return void 0;
1645
+ }
1646
+ }
1632
1647
  function resolvePmRoot(cwd, cliPath) {
1633
1648
  const envPath = process.env.PM_PATH;
1634
1649
  const explicitPath = cliPath?.trim() || envPath?.trim();
@@ -1794,6 +1809,579 @@ function asRecordClone(value) {
1794
1809
  return typeof value === "object" && value !== null && !Array.isArray(value) ? { ...value } : {};
1795
1810
  }
1796
1811
 
1812
+ // dist/sdk/relationships.js
1813
+ !(function() {
1814
+ try {
1815
+ var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
1816
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "d57e6d37-e489-5e57-b146-bcc9fab2e3d7");
1817
+ } catch (e2) {
1818
+ }
1819
+ })();
1820
+ var BUILTIN_RELATIONSHIP_KINDS = [
1821
+ {
1822
+ kind: "blocked_by",
1823
+ direction: "directed",
1824
+ inverse: "blocks",
1825
+ ordering: true,
1826
+ precedence: "target_before_source",
1827
+ hierarchy: false,
1828
+ outgoing: "many",
1829
+ incoming: "many",
1830
+ lifecycle: "persistent",
1831
+ aliases: ["depends_on"],
1832
+ compatibilityVersion: 1,
1833
+ allowSelf: false
1834
+ },
1835
+ {
1836
+ kind: "blocks",
1837
+ direction: "directed",
1838
+ inverse: "blocked_by",
1839
+ ordering: true,
1840
+ precedence: "source_before_target",
1841
+ hierarchy: false,
1842
+ outgoing: "many",
1843
+ incoming: "many",
1844
+ lifecycle: "persistent",
1845
+ compatibilityVersion: 1,
1846
+ allowSelf: false
1847
+ },
1848
+ {
1849
+ kind: "parent",
1850
+ direction: "directed",
1851
+ inverse: "child",
1852
+ ordering: false,
1853
+ hierarchy: true,
1854
+ hierarchyDirection: "target_parent",
1855
+ outgoing: "one",
1856
+ incoming: "many",
1857
+ lifecycle: "supersedable",
1858
+ aliases: ["child_of", "epic"],
1859
+ compatibilityVersion: 1,
1860
+ allowSelf: false
1861
+ },
1862
+ {
1863
+ kind: "child",
1864
+ direction: "directed",
1865
+ inverse: "parent",
1866
+ ordering: false,
1867
+ hierarchy: true,
1868
+ hierarchyDirection: "source_parent",
1869
+ outgoing: "many",
1870
+ incoming: "one",
1871
+ lifecycle: "supersedable",
1872
+ aliases: ["parent_child", "task"],
1873
+ compatibilityVersion: 1,
1874
+ allowSelf: false
1875
+ },
1876
+ {
1877
+ kind: "related",
1878
+ direction: "undirected",
1879
+ ordering: false,
1880
+ hierarchy: false,
1881
+ outgoing: "many",
1882
+ incoming: "many",
1883
+ lifecycle: "persistent",
1884
+ aliases: ["related_to"],
1885
+ compatibilityVersion: 1,
1886
+ allowSelf: false
1887
+ },
1888
+ {
1889
+ kind: "discovered_from",
1890
+ direction: "directed",
1891
+ ordering: false,
1892
+ hierarchy: false,
1893
+ outgoing: "many",
1894
+ incoming: "many",
1895
+ lifecycle: "persistent",
1896
+ compatibilityVersion: 1,
1897
+ allowSelf: false
1898
+ },
1899
+ {
1900
+ kind: "incident_from",
1901
+ direction: "directed",
1902
+ ordering: false,
1903
+ hierarchy: false,
1904
+ outgoing: "many",
1905
+ incoming: "many",
1906
+ lifecycle: "persistent",
1907
+ compatibilityVersion: 1,
1908
+ allowSelf: false
1909
+ },
1910
+ {
1911
+ kind: "supersedes",
1912
+ direction: "directed",
1913
+ ordering: false,
1914
+ hierarchy: false,
1915
+ outgoing: "many",
1916
+ incoming: "many",
1917
+ lifecycle: "supersedable",
1918
+ compatibilityVersion: 1,
1919
+ allowSelf: false
1920
+ }
1921
+ ];
1922
+ function normalizeKind(kind) {
1923
+ return kind.trim().toLowerCase().replaceAll("-", "_");
1924
+ }
1925
+ function normalizeInverseKind(inverse) {
1926
+ if (inverse === void 0)
1927
+ return void 0;
1928
+ const normalized = normalizeKind(inverse);
1929
+ if (!/^[a-z][a-z0-9_]*$/.test(normalized))
1930
+ throw new TypeError(`Invalid inverse relationship kind: ${inverse}`);
1931
+ return normalized;
1932
+ }
1933
+ function freezeValue(value, visited = /* @__PURE__ */ new Set()) {
1934
+ if (value === null || typeof value !== "object")
1935
+ return value;
1936
+ if (visited.has(value))
1937
+ return value;
1938
+ visited.add(value);
1939
+ if (Array.isArray(value)) {
1940
+ for (const entry of value)
1941
+ freezeValue(entry, visited);
1942
+ return Object.freeze(value);
1943
+ }
1944
+ for (const entry of Object.values(value))
1945
+ freezeValue(entry, visited);
1946
+ return Object.freeze(value);
1947
+ }
1948
+ function assertRelationshipPrecedence(definition, kind) {
1949
+ if (definition.precedence !== void 0 && definition.precedence !== "source_before_target" && definition.precedence !== "target_before_source")
1950
+ throw new TypeError(`Invalid relationship precedence for ${kind}`);
1951
+ if (!definition.ordering && definition.precedence !== void 0)
1952
+ throw new TypeError(`Non-ordering relationship kind cannot declare precedence: ${kind}`);
1953
+ }
1954
+ function assertRelationshipHierarchyDirection(definition, kind) {
1955
+ if (definition.hierarchyDirection !== void 0 && definition.hierarchyDirection !== "source_parent" && definition.hierarchyDirection !== "target_parent")
1956
+ throw new TypeError(`Invalid relationship hierarchy direction for ${kind}`);
1957
+ if (!definition.hierarchy && definition.hierarchyDirection !== void 0)
1958
+ throw new TypeError(`Non-hierarchy relationship kind cannot declare hierarchy direction: ${kind}`);
1959
+ }
1960
+ function normalizeRelationshipKindIdentifier(definition) {
1961
+ if (typeof definition !== "object" || definition === null)
1962
+ throw new TypeError("Relationship kind definition requires an object");
1963
+ if (typeof definition.kind !== "string")
1964
+ throw new TypeError("Relationship kind requires a string identifier");
1965
+ const kind = normalizeKind(definition.kind);
1966
+ if (!/^[a-z][a-z0-9_]*$/.test(kind))
1967
+ throw new TypeError(`Invalid relationship kind: ${definition.kind}`);
1968
+ if (!Number.isInteger(definition.compatibilityVersion) || definition.compatibilityVersion < 1)
1969
+ throw new TypeError(`Invalid compatibility version for ${kind}`);
1970
+ return kind;
1971
+ }
1972
+ function assertRelationshipKindSemantics(definition, kind) {
1973
+ if (!["directed", "undirected"].includes(definition.direction))
1974
+ throw new TypeError(`Invalid relationship direction for ${kind}`);
1975
+ if (typeof definition.ordering !== "boolean")
1976
+ throw new TypeError(`Invalid relationship ordering flag for ${kind}`);
1977
+ if (![void 0, true, false].includes(definition.hierarchy))
1978
+ throw new TypeError(`Invalid relationship hierarchy flag for ${kind}`);
1979
+ if (!["one", "many"].includes(definition.outgoing))
1980
+ throw new TypeError(`Invalid outgoing relationship cardinality for ${kind}`);
1981
+ if (!["one", "many"].includes(definition.incoming))
1982
+ throw new TypeError(`Invalid incoming relationship cardinality for ${kind}`);
1983
+ if (!["persistent", "supersedable", "ephemeral"].includes(definition.lifecycle))
1984
+ throw new TypeError(`Invalid relationship lifecycle for ${kind}`);
1985
+ if (typeof definition.allowSelf !== "boolean")
1986
+ throw new TypeError(`Invalid relationship self-edge flag for ${kind}`);
1987
+ }
1988
+ function assertRelationshipKindPayload(definition, kind) {
1989
+ if (definition.payloadSchema !== void 0 && (typeof definition.payloadSchema !== "object" || definition.payloadSchema === null || Array.isArray(definition.payloadSchema)))
1990
+ throw new TypeError(`Invalid relationship payload schema for ${kind}`);
1991
+ if (definition.aliases !== void 0 && (!Array.isArray(definition.aliases) || definition.aliases.some((alias) => typeof alias !== "string")))
1992
+ throw new TypeError(`Invalid relationship aliases for ${kind}`);
1993
+ }
1994
+ var RelationshipKindRegistry = class {
1995
+ #definitions = /* @__PURE__ */ new Map();
1996
+ #aliases = /* @__PURE__ */ new Map();
1997
+ /** Create a registry initialized with the stable built-in ontology by default. */
1998
+ constructor(definitions = BUILTIN_RELATIONSHIP_KINDS) {
1999
+ for (const definition of definitions)
2000
+ this.register(definition);
2001
+ }
2002
+ /** Register one definition after validating its identifier, version, and aliases. */
2003
+ register(definition) {
2004
+ const kind = normalizeRelationshipKindIdentifier(definition);
2005
+ assertRelationshipKindSemantics(definition, kind);
2006
+ assertRelationshipKindPayload(definition, kind);
2007
+ assertRelationshipPrecedence(definition, kind);
2008
+ assertRelationshipHierarchyDirection(definition, kind);
2009
+ if (this.#definitions.has(kind) || this.#aliases.has(kind))
2010
+ throw new TypeError(`Relationship kind already registered: ${kind}`);
2011
+ const inverse = normalizeInverseKind(definition.inverse);
2012
+ const aliases = [
2013
+ ...new Set((definition.aliases ?? []).map(normalizeKind))
2014
+ ].sort();
2015
+ for (const alias of aliases) {
2016
+ if (!/^[a-z][a-z0-9_]*$/.test(alias))
2017
+ throw new TypeError(`Invalid relationship alias: ${alias}`);
2018
+ if (alias === kind || this.#definitions.has(alias) || this.#aliases.has(alias))
2019
+ throw new TypeError(`Relationship alias already registered: ${alias}`);
2020
+ }
2021
+ const normalized = Object.freeze({
2022
+ ...definition,
2023
+ kind,
2024
+ hierarchy: definition.hierarchy ?? false,
2025
+ inverse,
2026
+ aliases: Object.freeze(aliases),
2027
+ payloadSchema: definition.payloadSchema ? freezeValue(structuredClone(definition.payloadSchema)) : void 0
2028
+ });
2029
+ this.#definitions.set(kind, normalized);
2030
+ for (const alias of aliases)
2031
+ this.#aliases.set(alias, kind);
2032
+ return this;
2033
+ }
2034
+ /** Resolve a canonical kind or compatibility alias. */
2035
+ resolve(kind) {
2036
+ if (typeof kind !== "string")
2037
+ return void 0;
2038
+ const normalized = normalizeKind(kind);
2039
+ return this.#definitions.get(this.#aliases.get(normalized) ?? normalized);
2040
+ }
2041
+ /** Resolve a kind or throw a precise error suitable for command adapters. */
2042
+ require(kind) {
2043
+ const definition = this.resolve(kind);
2044
+ if (!definition)
2045
+ throw new TypeError(`Unknown relationship kind: ${kind}`);
2046
+ return definition;
2047
+ }
2048
+ /** Return a deterministic immutable registry snapshot. */
2049
+ list() {
2050
+ return Object.freeze([...this.#definitions.values()].sort((left, right) => left.kind.localeCompare(right.kind)));
2051
+ }
2052
+ };
2053
+ function createRelationshipKindRegistry() {
2054
+ return new RelationshipKindRegistry();
2055
+ }
2056
+ var defaultRegistry = createRelationshipKindRegistry();
2057
+ function isOrderingRelationshipKind(kind, registry = defaultRegistry) {
2058
+ return registry.resolve(kind)?.ordering === true;
2059
+ }
2060
+ function compareEdges(left, right) {
2061
+ return left.source.localeCompare(right.source) || left.target.localeCompare(right.target) || left.kind.localeCompare(right.kind);
2062
+ }
2063
+ function normalizeRelationshipEdge(candidate, nodes, registry) {
2064
+ const source = typeof candidate.source === "string" ? candidate.source.trim() : "";
2065
+ const target = typeof candidate.target === "string" ? candidate.target.trim() : "";
2066
+ const definition = registry.require(candidate.kind);
2067
+ if (!nodes.has(source) || !nodes.has(target))
2068
+ throw new TypeError(`Relationship endpoint not found: ${source} -> ${target}`);
2069
+ if (source === target && !definition.allowSelf)
2070
+ throw new TypeError(`Self relationship is not allowed for ${definition.kind}`);
2071
+ const edge = Object.freeze({
2072
+ ...candidate,
2073
+ source,
2074
+ target,
2075
+ kind: definition.kind
2076
+ });
2077
+ const endpoints = definition.direction === "undirected" ? [source, target].sort().join("\0") : `${source}\0${target}`;
2078
+ return { edge, identity: `${definition.kind}\0${endpoints}` };
2079
+ }
2080
+ function appendIndexedEdge(index, node, edge) {
2081
+ const indexed = index.get(node);
2082
+ if (indexed)
2083
+ indexed.push(edge);
2084
+ else
2085
+ index.set(node, [edge]);
2086
+ }
2087
+ function normalizeNodeId(value) {
2088
+ return typeof value === "string" ? value.trim() : "";
2089
+ }
2090
+ function resolveExistingNodeId(value, ids) {
2091
+ const id = normalizeNodeId(value);
2092
+ return id && ids.has(id) ? id : void 0;
2093
+ }
2094
+ function reconstructPath(source, target, parents) {
2095
+ const path7 = [target];
2096
+ let cursor = target;
2097
+ while (cursor !== source) {
2098
+ cursor = parents.get(cursor);
2099
+ path7.push(cursor);
2100
+ }
2101
+ return path7.reverse();
2102
+ }
2103
+ var RelationshipGraph = class _RelationshipGraph {
2104
+ #registry;
2105
+ #nodes;
2106
+ #nodeSnapshot;
2107
+ #edges;
2108
+ #outgoing = /* @__PURE__ */ new Map();
2109
+ #incoming = /* @__PURE__ */ new Map();
2110
+ /** Validate and index nodes and edges without reading tracker storage. */
2111
+ constructor(nodes, edges, registry = defaultRegistry) {
2112
+ this.#registry = registry;
2113
+ this.#nodes = new Set([...nodes].filter((id) => typeof id === "string").map((id) => id.trim()).filter(Boolean));
2114
+ this.#nodeSnapshot = Object.freeze([...this.#nodes].sort());
2115
+ const deduped = /* @__PURE__ */ new Map();
2116
+ for (const candidate of edges) {
2117
+ const { edge, identity } = normalizeRelationshipEdge(candidate, this.#nodes, registry);
2118
+ deduped.set(identity, edge);
2119
+ }
2120
+ this.#edges = Object.freeze([...deduped.values()].sort(compareEdges));
2121
+ for (const edge of this.#edges) {
2122
+ appendIndexedEdge(this.#outgoing, edge.source, edge);
2123
+ appendIndexedEdge(this.#incoming, edge.target, edge);
2124
+ if (registry.require(edge.kind).direction === "undirected") {
2125
+ appendIndexedEdge(this.#outgoing, edge.target, edge);
2126
+ appendIndexedEdge(this.#incoming, edge.source, edge);
2127
+ }
2128
+ }
2129
+ }
2130
+ /** Build the graph directly from item metadata, including hierarchy and legacy blocker fields. */
2131
+ static fromItems(items, registry = defaultRegistry) {
2132
+ const ids = new Set(items.map((item) => normalizeNodeId(item.id)).filter(Boolean));
2133
+ const edges = [];
2134
+ for (const item of items) {
2135
+ const source = normalizeNodeId(item.id);
2136
+ if (!source)
2137
+ continue;
2138
+ const parent = resolveExistingNodeId(item.parent, ids);
2139
+ if (parent)
2140
+ edges.push({ source, target: parent, kind: "parent" });
2141
+ const blockedBy = resolveExistingNodeId(item.blocked_by, ids);
2142
+ if (blockedBy)
2143
+ edges.push({
2144
+ source,
2145
+ target: blockedBy,
2146
+ kind: "blocked_by"
2147
+ });
2148
+ for (const dependency of item.dependencies ?? []) {
2149
+ const dependencyId = resolveExistingNodeId(dependency.id, ids);
2150
+ if (dependencyId && registry.resolve(dependency.kind))
2151
+ edges.push({
2152
+ source,
2153
+ target: dependencyId,
2154
+ kind: dependency.kind,
2155
+ createdAt: dependency.created_at,
2156
+ author: dependency.author
2157
+ });
2158
+ }
2159
+ }
2160
+ return new _RelationshipGraph(ids, edges, registry);
2161
+ }
2162
+ /** Return the deterministic immutable edge snapshot. */
2163
+ edges() {
2164
+ return this.#edges;
2165
+ }
2166
+ /** Return the deterministic immutable edges incident to one node. */
2167
+ incidentEdges(id) {
2168
+ this.#assertNode(id);
2169
+ const outgoing = this.#outgoing.get(id) ?? [];
2170
+ const incoming = this.#incoming.get(id) ?? [];
2171
+ if (outgoing.length === 0)
2172
+ return Object.freeze([...incoming]);
2173
+ if (incoming.length === 0)
2174
+ return Object.freeze([...outgoing]);
2175
+ const edges = [];
2176
+ let outgoingIndex = 0;
2177
+ let incomingIndex = 0;
2178
+ while (outgoingIndex < outgoing.length || incomingIndex < incoming.length) {
2179
+ const outgoingEdge = outgoing[outgoingIndex];
2180
+ const incomingEdge = incoming[incomingIndex];
2181
+ const edge = outgoingEdge === void 0 ? incomingEdge : incomingEdge === void 0 || compareEdges(outgoingEdge, incomingEdge) <= 0 ? outgoingEdge : incomingEdge;
2182
+ if (edges.at(-1) !== edge)
2183
+ edges.push(edge);
2184
+ if (outgoingEdge === edge)
2185
+ outgoingIndex += 1;
2186
+ if (incomingEdge === edge)
2187
+ incomingIndex += 1;
2188
+ }
2189
+ return Object.freeze(edges);
2190
+ }
2191
+ /** Return the deterministic immutable node snapshot. */
2192
+ nodes() {
2193
+ return this.#nodeSnapshot;
2194
+ }
2195
+ /** Report whether an identifier names an indexed node. */
2196
+ hasNode(id) {
2197
+ return this.#nodes.has(id);
2198
+ }
2199
+ /** Return the registry that interprets this graph's relationship kinds. */
2200
+ registry() {
2201
+ return this.#registry;
2202
+ }
2203
+ #assertNode(id) {
2204
+ if (!this.#nodes.has(id))
2205
+ throw new TypeError(`Relationship node not found: ${id}`);
2206
+ }
2207
+ #matchesKinds(edge, kinds) {
2208
+ if (!kinds)
2209
+ return true;
2210
+ const definition = this.#registry.require(edge.kind);
2211
+ return kinds.has(edge.kind) || definition.inverse !== void 0 && kinds.has(definition.inverse);
2212
+ }
2213
+ #neighbors(id, direction, kinds) {
2214
+ const candidates = [
2215
+ ...direction === "incoming" ? [] : this.#outgoing.get(id) ?? [],
2216
+ ...direction === "outgoing" ? [] : this.#incoming.get(id) ?? []
2217
+ ];
2218
+ return [...new Set(candidates)].filter((edge) => this.#matchesKinds(edge, kinds)).map((edge) => ({
2219
+ id: edge.source === id ? edge.target : edge.source,
2220
+ edge
2221
+ })).sort((left, right) => left.id.localeCompare(right.id) || compareEdges(left.edge, right.edge));
2222
+ }
2223
+ /** Return one-hop adjacent node identifiers. */
2224
+ adjacency(id, options = {}) {
2225
+ this.#assertNode(id);
2226
+ options.signal?.throwIfAborted();
2227
+ const kinds = options.kinds ? new Set(options.kinds.map((kind) => this.#registry.require(kind).kind)) : void 0;
2228
+ const rows = this.#neighbors(id, options.direction ?? "outgoing", kinds);
2229
+ const limit = options.limit ?? Number.POSITIVE_INFINITY;
2230
+ const uniqueNeighbors = [...new Set(rows.map((row) => row.id))];
2231
+ const value = uniqueNeighbors.slice(0, limit);
2232
+ return {
2233
+ value,
2234
+ meta: {
2235
+ visitedNodes: 1,
2236
+ inspectedEdges: rows.length,
2237
+ truncated: value.length < uniqueNeighbors.length,
2238
+ nextCursor: value.at(-1)
2239
+ }
2240
+ };
2241
+ }
2242
+ /** Return deterministic one-hop neighbor rows paired with each connecting edge. */
2243
+ neighborEdges(id, options = {}) {
2244
+ this.#assertNode(id);
2245
+ options.signal?.throwIfAborted();
2246
+ const kinds = options.kinds ? new Set(options.kinds.map((kind) => this.#registry.require(kind).kind)) : void 0;
2247
+ const rows = this.#neighbors(id, options.direction ?? "outgoing", kinds);
2248
+ const limit = options.limit ?? Number.POSITIVE_INFINITY;
2249
+ const value = rows.slice(0, limit);
2250
+ return {
2251
+ value,
2252
+ meta: {
2253
+ visitedNodes: 1,
2254
+ inspectedEdges: rows.length,
2255
+ truncated: value.length < rows.length,
2256
+ nextCursor: value.at(-1)?.id
2257
+ }
2258
+ };
2259
+ }
2260
+ /** Return bounded transitive closure in breadth-first discovery order. */
2261
+ closure(id, options = {}) {
2262
+ this.#assertNode(id);
2263
+ const kinds = options.kinds ? new Set(options.kinds.map((kind) => this.#registry.require(kind).kind)) : void 0;
2264
+ const direction = options.direction ?? "outgoing";
2265
+ const limit = options.limit ?? Number.POSITIVE_INFINITY;
2266
+ const maxDepth = options.maxDepth ?? Number.POSITIVE_INFINITY;
2267
+ const seen = /* @__PURE__ */ new Set([id]);
2268
+ const value = [];
2269
+ const queue = [{ id, depth: 0 }];
2270
+ let visitedNodes = 0;
2271
+ let inspectedEdges = 0;
2272
+ let truncated = false;
2273
+ traversal: for (let index = 0; index < queue.length; index += 1) {
2274
+ options.signal?.throwIfAborted();
2275
+ const current = queue[index];
2276
+ visitedNodes += 1;
2277
+ const neighbors = this.#neighbors(current.id, direction, kinds);
2278
+ inspectedEdges += neighbors.length;
2279
+ if (current.depth >= maxDepth) {
2280
+ if (neighbors.some((neighbor) => !seen.has(neighbor.id)))
2281
+ truncated = true;
2282
+ continue;
2283
+ }
2284
+ for (const neighbor of neighbors) {
2285
+ if (seen.has(neighbor.id))
2286
+ continue;
2287
+ if (value.length >= limit) {
2288
+ truncated = true;
2289
+ break traversal;
2290
+ }
2291
+ seen.add(neighbor.id);
2292
+ value.push(neighbor.id);
2293
+ queue.push({ id: neighbor.id, depth: current.depth + 1 });
2294
+ }
2295
+ }
2296
+ return {
2297
+ value,
2298
+ meta: {
2299
+ visitedNodes,
2300
+ inspectedEdges,
2301
+ truncated,
2302
+ nextCursor: value.at(-1)
2303
+ }
2304
+ };
2305
+ }
2306
+ /** Return a deterministic shortest path, or an empty array when disconnected. */
2307
+ shortestPath(source, target, options = {}) {
2308
+ this.#assertNode(source);
2309
+ this.#assertNode(target);
2310
+ if (source === target)
2311
+ return {
2312
+ value: [source],
2313
+ meta: { visitedNodes: 1, inspectedEdges: 0, truncated: false }
2314
+ };
2315
+ const kinds = options.kinds ? new Set(options.kinds.map((kind) => this.#registry.require(kind).kind)) : void 0;
2316
+ const direction = options.direction ?? "outgoing";
2317
+ const maxDepth = options.maxDepth ?? Number.POSITIVE_INFINITY;
2318
+ const queue = [{ id: source, depth: 0 }];
2319
+ const parents = /* @__PURE__ */ new Map();
2320
+ const seen = /* @__PURE__ */ new Set([source]);
2321
+ let visitedNodes = 0;
2322
+ let inspectedEdges = 0;
2323
+ let truncated = false;
2324
+ for (let index = 0; index < queue.length; index += 1) {
2325
+ options.signal?.throwIfAborted();
2326
+ const current = queue[index];
2327
+ visitedNodes += 1;
2328
+ const neighbors = this.#neighbors(current.id, direction, kinds);
2329
+ inspectedEdges += neighbors.length;
2330
+ if (current.depth >= maxDepth) {
2331
+ if (neighbors.some((neighbor) => !seen.has(neighbor.id)))
2332
+ truncated = true;
2333
+ continue;
2334
+ }
2335
+ for (const neighbor of neighbors) {
2336
+ if (seen.has(neighbor.id))
2337
+ continue;
2338
+ parents.set(neighbor.id, current.id);
2339
+ if (neighbor.id === target)
2340
+ return {
2341
+ value: reconstructPath(source, target, parents),
2342
+ meta: { visitedNodes, inspectedEdges, truncated: false }
2343
+ };
2344
+ seen.add(neighbor.id);
2345
+ queue.push({ id: neighbor.id, depth: current.depth + 1 });
2346
+ }
2347
+ }
2348
+ return {
2349
+ value: [],
2350
+ meta: { visitedNodes, inspectedEdges, truncated }
2351
+ };
2352
+ }
2353
+ /** Return the induced subgraph over a bounded closure including the root. */
2354
+ subgraph(id, options = {}) {
2355
+ const closure = this.closure(id, options);
2356
+ const nodes = [id, ...closure.value].sort();
2357
+ const included = new Set(nodes);
2358
+ const kinds = options.kinds ? new Set(options.kinds.map((kind) => this.#registry.require(kind).kind)) : void 0;
2359
+ const edges = /* @__PURE__ */ new Set();
2360
+ for (const node of nodes) {
2361
+ for (const edge of this.#outgoing.get(node) ?? []) {
2362
+ if (included.has(edge.source) && included.has(edge.target) && this.#matchesKinds(edge, kinds))
2363
+ edges.add(edge);
2364
+ }
2365
+ }
2366
+ return {
2367
+ value: {
2368
+ nodes,
2369
+ edges: [...edges].sort(compareEdges)
2370
+ },
2371
+ meta: closure.meta
2372
+ };
2373
+ }
2374
+ };
2375
+ function dependencyToRelationship(source, dependency, registry = defaultRegistry) {
2376
+ return {
2377
+ source,
2378
+ target: dependency.id,
2379
+ kind: registry.require(dependency.kind).kind,
2380
+ createdAt: dependency.created_at,
2381
+ author: dependency.author
2382
+ };
2383
+ }
2384
+
1797
2385
  // dist/core/shared/levenshtein.js
1798
2386
  !(function() {
1799
2387
  try {
@@ -1987,7 +2575,7 @@ function parseLegacyExtensionCapabilityAliasWarning(warning) {
1987
2575
  !(function() {
1988
2576
  try {
1989
2577
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
1990
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "1fca4a62-1207-5e86-961b-f1f62667c4ea");
2578
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "24b47552-6812-588e-8dbf-38b18ab0b706");
1991
2579
  } catch (e2) {
1992
2580
  }
1993
2581
  })();
@@ -2032,6 +2620,7 @@ function createEmptyExtensionRegistrationRegistry() {
2032
2620
  flags: [],
2033
2621
  item_fields: [],
2034
2622
  item_types: [],
2623
+ relationship_kinds: [],
2035
2624
  migrations: [],
2036
2625
  profiles: [],
2037
2626
  importers: [],
@@ -2074,7 +2663,7 @@ function cloneContextSnapshot(value) {
2074
2663
  !(function() {
2075
2664
  try {
2076
2665
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
2077
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "43beef4d-01b8-5cd5-a8c2-2f84cca24bce");
2666
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "3215fb32-6670-55b4-87ac-e3635716ad4b");
2078
2667
  } catch (e2) {
2079
2668
  }
2080
2669
  })();
@@ -2143,7 +2732,8 @@ async function runCommandHandler(commands, context) {
2143
2732
  args: cloneContextSnapshot(context.args),
2144
2733
  options: cloneContextSnapshot(context.options),
2145
2734
  global: cloneContextSnapshot(context.global),
2146
- pm_root: context.pm_root
2735
+ pm_root: context.pm_root,
2736
+ ...context.sdk === void 0 ? {} : { sdk: context.sdk }
2147
2737
  });
2148
2738
  return {
2149
2739
  handled: true,
@@ -3275,7 +3865,7 @@ function evaluateExtensionPolicyForRegistration(policy, extension, surface, meth
3275
3865
  !(function() {
3276
3866
  try {
3277
3867
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
3278
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "4932a233-cd95-5e07-9166-d554e26e51e7");
3868
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "07895505-edff-5b68-b610-00724d711422");
3279
3869
  } catch (e2) {
3280
3870
  }
3281
3871
  })();
@@ -4589,6 +5179,7 @@ var ExtensionApiRegistrar = class {
4589
5179
  this.registerFlags = this.registerFlags.bind(this);
4590
5180
  this.registerItemFields = this.registerItemFields.bind(this);
4591
5181
  this.registerItemTypes = this.registerItemTypes.bind(this);
5182
+ this.registerRelationshipKinds = this.registerRelationshipKinds.bind(this);
4592
5183
  this.registerMigration = this.registerMigration.bind(this);
4593
5184
  this.registerProfile = this.registerProfile.bind(this);
4594
5185
  this.registerRenderer = this.registerRenderer.bind(this);
@@ -4838,6 +5429,33 @@ var ExtensionApiRegistrar = class {
4838
5429
  types: normalizedTypes
4839
5430
  });
4840
5431
  }
5432
+ registerRelationshipKinds(definitions) {
5433
+ assertExtensionCapability(this.#loadedExtension, "schema", "registerRelationshipKinds");
5434
+ if (!this.allowRegistration("schema.relationshipkinds", "registerRelationshipKinds", "schema")) {
5435
+ return;
5436
+ }
5437
+ if (!Array.isArray(definitions)) {
5438
+ throw new TypeError("registerRelationshipKinds definitions requires an array of object definitions");
5439
+ }
5440
+ if (definitions.length === 0) {
5441
+ throw new TypeError("registerRelationshipKinds requires at least one definition");
5442
+ }
5443
+ const registry = createRelationshipKindRegistry();
5444
+ for (const registration of this.#registrationRegistry.relationship_kinds) {
5445
+ for (const definition of registration.definitions) {
5446
+ registry.register(definition);
5447
+ }
5448
+ }
5449
+ const validated = definitions.map((definition) => {
5450
+ registry.register(definition);
5451
+ return registry.require(definition.kind);
5452
+ });
5453
+ this.#registrationRegistry.relationship_kinds.push({
5454
+ layer: this.#loadedExtension.layer,
5455
+ name: this.#loadedExtension.name,
5456
+ definitions: validated
5457
+ });
5458
+ }
4841
5459
  registerMigration(definition) {
4842
5460
  assertExtensionCapability(this.#loadedExtension, "schema", "registerMigration");
4843
5461
  if (!this.allowRegistration("schema.migrations", "registerMigration", "schema")) {
@@ -5071,11 +5689,13 @@ function getRegistrationCounts(registrations) {
5071
5689
  const flagCount = registrations.flags.reduce((total, entry) => total + entry.flags.length, 0);
5072
5690
  const itemFieldCount = registrations.item_fields.reduce((total, entry) => total + entry.fields.length, 0);
5073
5691
  const itemTypeCount = registrations.item_types.reduce((total, entry) => total + entry.types.length, 0);
5692
+ const relationshipKindCount = (registrations.relationship_kinds ?? []).reduce((total, entry) => total + entry.definitions.length, 0);
5074
5693
  return {
5075
5694
  commands: commandCount,
5076
5695
  flags: flagCount,
5077
5696
  item_fields: itemFieldCount,
5078
5697
  item_types: itemTypeCount,
5698
+ ...relationshipKindCount > 0 ? { relationship_kinds: relationshipKindCount } : {},
5079
5699
  migrations: registrations.migrations.length,
5080
5700
  profiles: registrations.profiles.length,
5081
5701
  importers: registrations.importers.length,
@@ -5262,7 +5882,7 @@ async function activateExtensions(loadResult) {
5262
5882
  !(function() {
5263
5883
  try {
5264
5884
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
5265
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "048d1af0-b38f-5f14-afa0-24c1b649698c");
5885
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "44358d55-62cf-55fb-a61b-1c1d45bead09");
5266
5886
  } catch (e2) {
5267
5887
  }
5268
5888
  })();
@@ -5280,6 +5900,7 @@ var EXTENSION_CAPABILITY_REGISTRATION_SURFACES = {
5280
5900
  "registerFlags",
5281
5901
  "registerItemFields",
5282
5902
  "registerItemTypes",
5903
+ "registerRelationshipKinds",
5283
5904
  "registerMigration",
5284
5905
  "registerProfile"
5285
5906
  ],
@@ -5332,6 +5953,7 @@ function attributeCapabilityUsage(activation) {
5332
5953
  record(registrations.flags, "schema");
5333
5954
  record(registrations.item_fields, "schema");
5334
5955
  record(registrations.item_types, "schema");
5956
+ record(registrations.relationship_kinds ?? [], "schema");
5335
5957
  record(registrations.migrations, "schema");
5336
5958
  record(registrations.profiles, "schema");
5337
5959
  record(registrations.importers, "importers");
@@ -6326,6 +6948,7 @@ export {
6326
6948
  resolveCommandOptionPolicyState,
6327
6949
  validateTypeOptions,
6328
6950
  ITEM_FILE_EXTENSIONS,
6951
+ discoverNearbyPmRoot,
6329
6952
  resolvePmRoot,
6330
6953
  resolveWorkspaceRoot,
6331
6954
  resolveGlobalPmRoot,
@@ -6361,6 +6984,11 @@ export {
6361
6984
  levenshteinDistanceWithinLimit,
6362
6985
  evaluatePmMinVersionBound,
6363
6986
  evaluatePmMaxVersionBound,
6987
+ RelationshipKindRegistry,
6988
+ createRelationshipKindRegistry,
6989
+ isOrderingRelationshipKind,
6990
+ RelationshipGraph,
6991
+ dependencyToRelationship,
6364
6992
  normalizeKnownExtensionCapability,
6365
6993
  resolveLegacyExtensionCapabilityAlias,
6366
6994
  parseUnknownExtensionCapabilityWarning,
@@ -6416,4 +7044,4 @@ export {
6416
7044
  parseRegisteredItemFieldAssignments,
6417
7045
  applyRegisteredItemFieldDefaultsAndValidation
6418
7046
  };
6419
- //# sourceMappingURL=chunk-WACRQ26A.js.map
7047
+ //# sourceMappingURL=chunk-WCBB6VI3.js.map