@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
@@ -1,6 +1,6 @@
1
1
  // dist/core/fs/fs-utils.js
2
2
 
3
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="a5eddd91-53f1-5292-9781-c74192041379")}catch(e){}}();
3
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="236f0bc3-3408-510b-9449-4755558bc2fb")}catch(e){}}();
4
4
  import * as fs from "node:fs/promises";
5
5
  import path from "node:path";
6
6
  import crypto from "node:crypto";
@@ -195,6 +195,7 @@ var KNOWN_EXTENSION_POLICY_SURFACES = [
195
195
  "schema.flags",
196
196
  "schema.itemfields",
197
197
  "schema.itemtypes",
198
+ "schema.relationshipkinds",
198
199
  "schema.migrations",
199
200
  "schema.profiles",
200
201
  "parser.override",
@@ -1516,7 +1517,7 @@ function validateTypeOptions(typeName, rawTypeOptions, registry) {
1516
1517
  }
1517
1518
 
1518
1519
  // dist/core/store/paths.js
1519
- import { readFileSync, statSync } from "node:fs";
1520
+ import { readFileSync, readdirSync, statSync } from "node:fs";
1520
1521
  import os from "node:os";
1521
1522
  import path3 from "node:path";
1522
1523
  var ITEM_FILE_EXTENSION_BY_FORMAT = {
@@ -1527,6 +1528,12 @@ var ITEM_FORMAT_BY_EXTENSION = {
1527
1528
  ".md": "json_markdown",
1528
1529
  ".toon": "toon"
1529
1530
  };
1531
+ var NEARBY_TRACKER_SCAN_IGNORED_DIRECTORIES = /* @__PURE__ */ new Set([
1532
+ ".git",
1533
+ "coverage",
1534
+ "dist",
1535
+ "node_modules"
1536
+ ]);
1530
1537
  var ITEM_FILE_EXTENSIONS = [".md", ".toon"];
1531
1538
  function pathExists2(pathValue) {
1532
1539
  try {
@@ -1566,6 +1573,14 @@ function discoverPmRootFromAncestors(cwd) {
1566
1573
  current = parent;
1567
1574
  }
1568
1575
  }
1576
+ function discoverNearbyPmRoot(cwd, excludedRoot) {
1577
+ const normalizedExcluded = excludedRoot ? path3.resolve(excludedRoot) : void 0;
1578
+ try {
1579
+ 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];
1580
+ } catch {
1581
+ return void 0;
1582
+ }
1583
+ }
1569
1584
  function resolvePmRoot(cwd, cliPath) {
1570
1585
  const envPath = process.env.PM_PATH;
1571
1586
  const explicitPath = cliPath?.trim() || envPath?.trim();
@@ -1724,6 +1739,572 @@ function asRecordClone(value) {
1724
1739
  return typeof value === "object" && value !== null && !Array.isArray(value) ? { ...value } : {};
1725
1740
  }
1726
1741
 
1742
+ // dist/sdk/relationships.js
1743
+ var BUILTIN_RELATIONSHIP_KINDS = [
1744
+ {
1745
+ kind: "blocked_by",
1746
+ direction: "directed",
1747
+ inverse: "blocks",
1748
+ ordering: true,
1749
+ precedence: "target_before_source",
1750
+ hierarchy: false,
1751
+ outgoing: "many",
1752
+ incoming: "many",
1753
+ lifecycle: "persistent",
1754
+ aliases: ["depends_on"],
1755
+ compatibilityVersion: 1,
1756
+ allowSelf: false
1757
+ },
1758
+ {
1759
+ kind: "blocks",
1760
+ direction: "directed",
1761
+ inverse: "blocked_by",
1762
+ ordering: true,
1763
+ precedence: "source_before_target",
1764
+ hierarchy: false,
1765
+ outgoing: "many",
1766
+ incoming: "many",
1767
+ lifecycle: "persistent",
1768
+ compatibilityVersion: 1,
1769
+ allowSelf: false
1770
+ },
1771
+ {
1772
+ kind: "parent",
1773
+ direction: "directed",
1774
+ inverse: "child",
1775
+ ordering: false,
1776
+ hierarchy: true,
1777
+ hierarchyDirection: "target_parent",
1778
+ outgoing: "one",
1779
+ incoming: "many",
1780
+ lifecycle: "supersedable",
1781
+ aliases: ["child_of", "epic"],
1782
+ compatibilityVersion: 1,
1783
+ allowSelf: false
1784
+ },
1785
+ {
1786
+ kind: "child",
1787
+ direction: "directed",
1788
+ inverse: "parent",
1789
+ ordering: false,
1790
+ hierarchy: true,
1791
+ hierarchyDirection: "source_parent",
1792
+ outgoing: "many",
1793
+ incoming: "one",
1794
+ lifecycle: "supersedable",
1795
+ aliases: ["parent_child", "task"],
1796
+ compatibilityVersion: 1,
1797
+ allowSelf: false
1798
+ },
1799
+ {
1800
+ kind: "related",
1801
+ direction: "undirected",
1802
+ ordering: false,
1803
+ hierarchy: false,
1804
+ outgoing: "many",
1805
+ incoming: "many",
1806
+ lifecycle: "persistent",
1807
+ aliases: ["related_to"],
1808
+ compatibilityVersion: 1,
1809
+ allowSelf: false
1810
+ },
1811
+ {
1812
+ kind: "discovered_from",
1813
+ direction: "directed",
1814
+ ordering: false,
1815
+ hierarchy: false,
1816
+ outgoing: "many",
1817
+ incoming: "many",
1818
+ lifecycle: "persistent",
1819
+ compatibilityVersion: 1,
1820
+ allowSelf: false
1821
+ },
1822
+ {
1823
+ kind: "incident_from",
1824
+ direction: "directed",
1825
+ ordering: false,
1826
+ hierarchy: false,
1827
+ outgoing: "many",
1828
+ incoming: "many",
1829
+ lifecycle: "persistent",
1830
+ compatibilityVersion: 1,
1831
+ allowSelf: false
1832
+ },
1833
+ {
1834
+ kind: "supersedes",
1835
+ direction: "directed",
1836
+ ordering: false,
1837
+ hierarchy: false,
1838
+ outgoing: "many",
1839
+ incoming: "many",
1840
+ lifecycle: "supersedable",
1841
+ compatibilityVersion: 1,
1842
+ allowSelf: false
1843
+ }
1844
+ ];
1845
+ function normalizeKind(kind) {
1846
+ return kind.trim().toLowerCase().replaceAll("-", "_");
1847
+ }
1848
+ function normalizeInverseKind(inverse) {
1849
+ if (inverse === void 0)
1850
+ return void 0;
1851
+ const normalized = normalizeKind(inverse);
1852
+ if (!/^[a-z][a-z0-9_]*$/.test(normalized))
1853
+ throw new TypeError(`Invalid inverse relationship kind: ${inverse}`);
1854
+ return normalized;
1855
+ }
1856
+ function freezeValue(value, visited = /* @__PURE__ */ new Set()) {
1857
+ if (value === null || typeof value !== "object")
1858
+ return value;
1859
+ if (visited.has(value))
1860
+ return value;
1861
+ visited.add(value);
1862
+ if (Array.isArray(value)) {
1863
+ for (const entry of value)
1864
+ freezeValue(entry, visited);
1865
+ return Object.freeze(value);
1866
+ }
1867
+ for (const entry of Object.values(value))
1868
+ freezeValue(entry, visited);
1869
+ return Object.freeze(value);
1870
+ }
1871
+ function assertRelationshipPrecedence(definition, kind) {
1872
+ if (definition.precedence !== void 0 && definition.precedence !== "source_before_target" && definition.precedence !== "target_before_source")
1873
+ throw new TypeError(`Invalid relationship precedence for ${kind}`);
1874
+ if (!definition.ordering && definition.precedence !== void 0)
1875
+ throw new TypeError(`Non-ordering relationship kind cannot declare precedence: ${kind}`);
1876
+ }
1877
+ function assertRelationshipHierarchyDirection(definition, kind) {
1878
+ if (definition.hierarchyDirection !== void 0 && definition.hierarchyDirection !== "source_parent" && definition.hierarchyDirection !== "target_parent")
1879
+ throw new TypeError(`Invalid relationship hierarchy direction for ${kind}`);
1880
+ if (!definition.hierarchy && definition.hierarchyDirection !== void 0)
1881
+ throw new TypeError(`Non-hierarchy relationship kind cannot declare hierarchy direction: ${kind}`);
1882
+ }
1883
+ function normalizeRelationshipKindIdentifier(definition) {
1884
+ if (typeof definition !== "object" || definition === null)
1885
+ throw new TypeError("Relationship kind definition requires an object");
1886
+ if (typeof definition.kind !== "string")
1887
+ throw new TypeError("Relationship kind requires a string identifier");
1888
+ const kind = normalizeKind(definition.kind);
1889
+ if (!/^[a-z][a-z0-9_]*$/.test(kind))
1890
+ throw new TypeError(`Invalid relationship kind: ${definition.kind}`);
1891
+ if (!Number.isInteger(definition.compatibilityVersion) || definition.compatibilityVersion < 1)
1892
+ throw new TypeError(`Invalid compatibility version for ${kind}`);
1893
+ return kind;
1894
+ }
1895
+ function assertRelationshipKindSemantics(definition, kind) {
1896
+ if (!["directed", "undirected"].includes(definition.direction))
1897
+ throw new TypeError(`Invalid relationship direction for ${kind}`);
1898
+ if (typeof definition.ordering !== "boolean")
1899
+ throw new TypeError(`Invalid relationship ordering flag for ${kind}`);
1900
+ if (![void 0, true, false].includes(definition.hierarchy))
1901
+ throw new TypeError(`Invalid relationship hierarchy flag for ${kind}`);
1902
+ if (!["one", "many"].includes(definition.outgoing))
1903
+ throw new TypeError(`Invalid outgoing relationship cardinality for ${kind}`);
1904
+ if (!["one", "many"].includes(definition.incoming))
1905
+ throw new TypeError(`Invalid incoming relationship cardinality for ${kind}`);
1906
+ if (!["persistent", "supersedable", "ephemeral"].includes(definition.lifecycle))
1907
+ throw new TypeError(`Invalid relationship lifecycle for ${kind}`);
1908
+ if (typeof definition.allowSelf !== "boolean")
1909
+ throw new TypeError(`Invalid relationship self-edge flag for ${kind}`);
1910
+ }
1911
+ function assertRelationshipKindPayload(definition, kind) {
1912
+ if (definition.payloadSchema !== void 0 && (typeof definition.payloadSchema !== "object" || definition.payloadSchema === null || Array.isArray(definition.payloadSchema)))
1913
+ throw new TypeError(`Invalid relationship payload schema for ${kind}`);
1914
+ if (definition.aliases !== void 0 && (!Array.isArray(definition.aliases) || definition.aliases.some((alias) => typeof alias !== "string")))
1915
+ throw new TypeError(`Invalid relationship aliases for ${kind}`);
1916
+ }
1917
+ var RelationshipKindRegistry = class {
1918
+ #definitions = /* @__PURE__ */ new Map();
1919
+ #aliases = /* @__PURE__ */ new Map();
1920
+ /** Create a registry initialized with the stable built-in ontology by default. */
1921
+ constructor(definitions = BUILTIN_RELATIONSHIP_KINDS) {
1922
+ for (const definition of definitions)
1923
+ this.register(definition);
1924
+ }
1925
+ /** Register one definition after validating its identifier, version, and aliases. */
1926
+ register(definition) {
1927
+ const kind = normalizeRelationshipKindIdentifier(definition);
1928
+ assertRelationshipKindSemantics(definition, kind);
1929
+ assertRelationshipKindPayload(definition, kind);
1930
+ assertRelationshipPrecedence(definition, kind);
1931
+ assertRelationshipHierarchyDirection(definition, kind);
1932
+ if (this.#definitions.has(kind) || this.#aliases.has(kind))
1933
+ throw new TypeError(`Relationship kind already registered: ${kind}`);
1934
+ const inverse = normalizeInverseKind(definition.inverse);
1935
+ const aliases = [
1936
+ ...new Set((definition.aliases ?? []).map(normalizeKind))
1937
+ ].sort();
1938
+ for (const alias of aliases) {
1939
+ if (!/^[a-z][a-z0-9_]*$/.test(alias))
1940
+ throw new TypeError(`Invalid relationship alias: ${alias}`);
1941
+ if (alias === kind || this.#definitions.has(alias) || this.#aliases.has(alias))
1942
+ throw new TypeError(`Relationship alias already registered: ${alias}`);
1943
+ }
1944
+ const normalized = Object.freeze({
1945
+ ...definition,
1946
+ kind,
1947
+ hierarchy: definition.hierarchy ?? false,
1948
+ inverse,
1949
+ aliases: Object.freeze(aliases),
1950
+ payloadSchema: definition.payloadSchema ? freezeValue(structuredClone(definition.payloadSchema)) : void 0
1951
+ });
1952
+ this.#definitions.set(kind, normalized);
1953
+ for (const alias of aliases)
1954
+ this.#aliases.set(alias, kind);
1955
+ return this;
1956
+ }
1957
+ /** Resolve a canonical kind or compatibility alias. */
1958
+ resolve(kind) {
1959
+ if (typeof kind !== "string")
1960
+ return void 0;
1961
+ const normalized = normalizeKind(kind);
1962
+ return this.#definitions.get(this.#aliases.get(normalized) ?? normalized);
1963
+ }
1964
+ /** Resolve a kind or throw a precise error suitable for command adapters. */
1965
+ require(kind) {
1966
+ const definition = this.resolve(kind);
1967
+ if (!definition)
1968
+ throw new TypeError(`Unknown relationship kind: ${kind}`);
1969
+ return definition;
1970
+ }
1971
+ /** Return a deterministic immutable registry snapshot. */
1972
+ list() {
1973
+ return Object.freeze([...this.#definitions.values()].sort((left, right) => left.kind.localeCompare(right.kind)));
1974
+ }
1975
+ };
1976
+ function createRelationshipKindRegistry() {
1977
+ return new RelationshipKindRegistry();
1978
+ }
1979
+ var defaultRegistry = createRelationshipKindRegistry();
1980
+ function isOrderingRelationshipKind(kind, registry = defaultRegistry) {
1981
+ return registry.resolve(kind)?.ordering === true;
1982
+ }
1983
+ function compareEdges(left, right) {
1984
+ return left.source.localeCompare(right.source) || left.target.localeCompare(right.target) || left.kind.localeCompare(right.kind);
1985
+ }
1986
+ function normalizeRelationshipEdge(candidate, nodes, registry) {
1987
+ const source = typeof candidate.source === "string" ? candidate.source.trim() : "";
1988
+ const target = typeof candidate.target === "string" ? candidate.target.trim() : "";
1989
+ const definition = registry.require(candidate.kind);
1990
+ if (!nodes.has(source) || !nodes.has(target))
1991
+ throw new TypeError(`Relationship endpoint not found: ${source} -> ${target}`);
1992
+ if (source === target && !definition.allowSelf)
1993
+ throw new TypeError(`Self relationship is not allowed for ${definition.kind}`);
1994
+ const edge = Object.freeze({
1995
+ ...candidate,
1996
+ source,
1997
+ target,
1998
+ kind: definition.kind
1999
+ });
2000
+ const endpoints = definition.direction === "undirected" ? [source, target].sort().join("\0") : `${source}\0${target}`;
2001
+ return { edge, identity: `${definition.kind}\0${endpoints}` };
2002
+ }
2003
+ function appendIndexedEdge(index, node, edge) {
2004
+ const indexed = index.get(node);
2005
+ if (indexed)
2006
+ indexed.push(edge);
2007
+ else
2008
+ index.set(node, [edge]);
2009
+ }
2010
+ function normalizeNodeId(value) {
2011
+ return typeof value === "string" ? value.trim() : "";
2012
+ }
2013
+ function resolveExistingNodeId(value, ids) {
2014
+ const id = normalizeNodeId(value);
2015
+ return id && ids.has(id) ? id : void 0;
2016
+ }
2017
+ function reconstructPath(source, target, parents) {
2018
+ const path7 = [target];
2019
+ let cursor = target;
2020
+ while (cursor !== source) {
2021
+ cursor = parents.get(cursor);
2022
+ path7.push(cursor);
2023
+ }
2024
+ return path7.reverse();
2025
+ }
2026
+ var RelationshipGraph = class _RelationshipGraph {
2027
+ #registry;
2028
+ #nodes;
2029
+ #nodeSnapshot;
2030
+ #edges;
2031
+ #outgoing = /* @__PURE__ */ new Map();
2032
+ #incoming = /* @__PURE__ */ new Map();
2033
+ /** Validate and index nodes and edges without reading tracker storage. */
2034
+ constructor(nodes, edges, registry = defaultRegistry) {
2035
+ this.#registry = registry;
2036
+ this.#nodes = new Set([...nodes].filter((id) => typeof id === "string").map((id) => id.trim()).filter(Boolean));
2037
+ this.#nodeSnapshot = Object.freeze([...this.#nodes].sort());
2038
+ const deduped = /* @__PURE__ */ new Map();
2039
+ for (const candidate of edges) {
2040
+ const { edge, identity } = normalizeRelationshipEdge(candidate, this.#nodes, registry);
2041
+ deduped.set(identity, edge);
2042
+ }
2043
+ this.#edges = Object.freeze([...deduped.values()].sort(compareEdges));
2044
+ for (const edge of this.#edges) {
2045
+ appendIndexedEdge(this.#outgoing, edge.source, edge);
2046
+ appendIndexedEdge(this.#incoming, edge.target, edge);
2047
+ if (registry.require(edge.kind).direction === "undirected") {
2048
+ appendIndexedEdge(this.#outgoing, edge.target, edge);
2049
+ appendIndexedEdge(this.#incoming, edge.source, edge);
2050
+ }
2051
+ }
2052
+ }
2053
+ /** Build the graph directly from item metadata, including hierarchy and legacy blocker fields. */
2054
+ static fromItems(items, registry = defaultRegistry) {
2055
+ const ids = new Set(items.map((item) => normalizeNodeId(item.id)).filter(Boolean));
2056
+ const edges = [];
2057
+ for (const item of items) {
2058
+ const source = normalizeNodeId(item.id);
2059
+ if (!source)
2060
+ continue;
2061
+ const parent = resolveExistingNodeId(item.parent, ids);
2062
+ if (parent)
2063
+ edges.push({ source, target: parent, kind: "parent" });
2064
+ const blockedBy = resolveExistingNodeId(item.blocked_by, ids);
2065
+ if (blockedBy)
2066
+ edges.push({
2067
+ source,
2068
+ target: blockedBy,
2069
+ kind: "blocked_by"
2070
+ });
2071
+ for (const dependency of item.dependencies ?? []) {
2072
+ const dependencyId = resolveExistingNodeId(dependency.id, ids);
2073
+ if (dependencyId && registry.resolve(dependency.kind))
2074
+ edges.push({
2075
+ source,
2076
+ target: dependencyId,
2077
+ kind: dependency.kind,
2078
+ createdAt: dependency.created_at,
2079
+ author: dependency.author
2080
+ });
2081
+ }
2082
+ }
2083
+ return new _RelationshipGraph(ids, edges, registry);
2084
+ }
2085
+ /** Return the deterministic immutable edge snapshot. */
2086
+ edges() {
2087
+ return this.#edges;
2088
+ }
2089
+ /** Return the deterministic immutable edges incident to one node. */
2090
+ incidentEdges(id) {
2091
+ this.#assertNode(id);
2092
+ const outgoing = this.#outgoing.get(id) ?? [];
2093
+ const incoming = this.#incoming.get(id) ?? [];
2094
+ if (outgoing.length === 0)
2095
+ return Object.freeze([...incoming]);
2096
+ if (incoming.length === 0)
2097
+ return Object.freeze([...outgoing]);
2098
+ const edges = [];
2099
+ let outgoingIndex = 0;
2100
+ let incomingIndex = 0;
2101
+ while (outgoingIndex < outgoing.length || incomingIndex < incoming.length) {
2102
+ const outgoingEdge = outgoing[outgoingIndex];
2103
+ const incomingEdge = incoming[incomingIndex];
2104
+ const edge = outgoingEdge === void 0 ? incomingEdge : incomingEdge === void 0 || compareEdges(outgoingEdge, incomingEdge) <= 0 ? outgoingEdge : incomingEdge;
2105
+ if (edges.at(-1) !== edge)
2106
+ edges.push(edge);
2107
+ if (outgoingEdge === edge)
2108
+ outgoingIndex += 1;
2109
+ if (incomingEdge === edge)
2110
+ incomingIndex += 1;
2111
+ }
2112
+ return Object.freeze(edges);
2113
+ }
2114
+ /** Return the deterministic immutable node snapshot. */
2115
+ nodes() {
2116
+ return this.#nodeSnapshot;
2117
+ }
2118
+ /** Report whether an identifier names an indexed node. */
2119
+ hasNode(id) {
2120
+ return this.#nodes.has(id);
2121
+ }
2122
+ /** Return the registry that interprets this graph's relationship kinds. */
2123
+ registry() {
2124
+ return this.#registry;
2125
+ }
2126
+ #assertNode(id) {
2127
+ if (!this.#nodes.has(id))
2128
+ throw new TypeError(`Relationship node not found: ${id}`);
2129
+ }
2130
+ #matchesKinds(edge, kinds) {
2131
+ if (!kinds)
2132
+ return true;
2133
+ const definition = this.#registry.require(edge.kind);
2134
+ return kinds.has(edge.kind) || definition.inverse !== void 0 && kinds.has(definition.inverse);
2135
+ }
2136
+ #neighbors(id, direction, kinds) {
2137
+ const candidates = [
2138
+ ...direction === "incoming" ? [] : this.#outgoing.get(id) ?? [],
2139
+ ...direction === "outgoing" ? [] : this.#incoming.get(id) ?? []
2140
+ ];
2141
+ return [...new Set(candidates)].filter((edge) => this.#matchesKinds(edge, kinds)).map((edge) => ({
2142
+ id: edge.source === id ? edge.target : edge.source,
2143
+ edge
2144
+ })).sort((left, right) => left.id.localeCompare(right.id) || compareEdges(left.edge, right.edge));
2145
+ }
2146
+ /** Return one-hop adjacent node identifiers. */
2147
+ adjacency(id, options = {}) {
2148
+ this.#assertNode(id);
2149
+ options.signal?.throwIfAborted();
2150
+ const kinds = options.kinds ? new Set(options.kinds.map((kind) => this.#registry.require(kind).kind)) : void 0;
2151
+ const rows = this.#neighbors(id, options.direction ?? "outgoing", kinds);
2152
+ const limit = options.limit ?? Number.POSITIVE_INFINITY;
2153
+ const uniqueNeighbors = [...new Set(rows.map((row) => row.id))];
2154
+ const value = uniqueNeighbors.slice(0, limit);
2155
+ return {
2156
+ value,
2157
+ meta: {
2158
+ visitedNodes: 1,
2159
+ inspectedEdges: rows.length,
2160
+ truncated: value.length < uniqueNeighbors.length,
2161
+ nextCursor: value.at(-1)
2162
+ }
2163
+ };
2164
+ }
2165
+ /** Return deterministic one-hop neighbor rows paired with each connecting edge. */
2166
+ neighborEdges(id, options = {}) {
2167
+ this.#assertNode(id);
2168
+ options.signal?.throwIfAborted();
2169
+ const kinds = options.kinds ? new Set(options.kinds.map((kind) => this.#registry.require(kind).kind)) : void 0;
2170
+ const rows = this.#neighbors(id, options.direction ?? "outgoing", kinds);
2171
+ const limit = options.limit ?? Number.POSITIVE_INFINITY;
2172
+ const value = rows.slice(0, limit);
2173
+ return {
2174
+ value,
2175
+ meta: {
2176
+ visitedNodes: 1,
2177
+ inspectedEdges: rows.length,
2178
+ truncated: value.length < rows.length,
2179
+ nextCursor: value.at(-1)?.id
2180
+ }
2181
+ };
2182
+ }
2183
+ /** Return bounded transitive closure in breadth-first discovery order. */
2184
+ closure(id, options = {}) {
2185
+ this.#assertNode(id);
2186
+ const kinds = options.kinds ? new Set(options.kinds.map((kind) => this.#registry.require(kind).kind)) : void 0;
2187
+ const direction = options.direction ?? "outgoing";
2188
+ const limit = options.limit ?? Number.POSITIVE_INFINITY;
2189
+ const maxDepth = options.maxDepth ?? Number.POSITIVE_INFINITY;
2190
+ const seen = /* @__PURE__ */ new Set([id]);
2191
+ const value = [];
2192
+ const queue = [{ id, depth: 0 }];
2193
+ let visitedNodes = 0;
2194
+ let inspectedEdges = 0;
2195
+ let truncated = false;
2196
+ traversal: for (let index = 0; index < queue.length; index += 1) {
2197
+ options.signal?.throwIfAborted();
2198
+ const current = queue[index];
2199
+ visitedNodes += 1;
2200
+ const neighbors = this.#neighbors(current.id, direction, kinds);
2201
+ inspectedEdges += neighbors.length;
2202
+ if (current.depth >= maxDepth) {
2203
+ if (neighbors.some((neighbor) => !seen.has(neighbor.id)))
2204
+ truncated = true;
2205
+ continue;
2206
+ }
2207
+ for (const neighbor of neighbors) {
2208
+ if (seen.has(neighbor.id))
2209
+ continue;
2210
+ if (value.length >= limit) {
2211
+ truncated = true;
2212
+ break traversal;
2213
+ }
2214
+ seen.add(neighbor.id);
2215
+ value.push(neighbor.id);
2216
+ queue.push({ id: neighbor.id, depth: current.depth + 1 });
2217
+ }
2218
+ }
2219
+ return {
2220
+ value,
2221
+ meta: {
2222
+ visitedNodes,
2223
+ inspectedEdges,
2224
+ truncated,
2225
+ nextCursor: value.at(-1)
2226
+ }
2227
+ };
2228
+ }
2229
+ /** Return a deterministic shortest path, or an empty array when disconnected. */
2230
+ shortestPath(source, target, options = {}) {
2231
+ this.#assertNode(source);
2232
+ this.#assertNode(target);
2233
+ if (source === target)
2234
+ return {
2235
+ value: [source],
2236
+ meta: { visitedNodes: 1, inspectedEdges: 0, truncated: false }
2237
+ };
2238
+ const kinds = options.kinds ? new Set(options.kinds.map((kind) => this.#registry.require(kind).kind)) : void 0;
2239
+ const direction = options.direction ?? "outgoing";
2240
+ const maxDepth = options.maxDepth ?? Number.POSITIVE_INFINITY;
2241
+ const queue = [{ id: source, depth: 0 }];
2242
+ const parents = /* @__PURE__ */ new Map();
2243
+ const seen = /* @__PURE__ */ new Set([source]);
2244
+ let visitedNodes = 0;
2245
+ let inspectedEdges = 0;
2246
+ let truncated = false;
2247
+ for (let index = 0; index < queue.length; index += 1) {
2248
+ options.signal?.throwIfAborted();
2249
+ const current = queue[index];
2250
+ visitedNodes += 1;
2251
+ const neighbors = this.#neighbors(current.id, direction, kinds);
2252
+ inspectedEdges += neighbors.length;
2253
+ if (current.depth >= maxDepth) {
2254
+ if (neighbors.some((neighbor) => !seen.has(neighbor.id)))
2255
+ truncated = true;
2256
+ continue;
2257
+ }
2258
+ for (const neighbor of neighbors) {
2259
+ if (seen.has(neighbor.id))
2260
+ continue;
2261
+ parents.set(neighbor.id, current.id);
2262
+ if (neighbor.id === target)
2263
+ return {
2264
+ value: reconstructPath(source, target, parents),
2265
+ meta: { visitedNodes, inspectedEdges, truncated: false }
2266
+ };
2267
+ seen.add(neighbor.id);
2268
+ queue.push({ id: neighbor.id, depth: current.depth + 1 });
2269
+ }
2270
+ }
2271
+ return {
2272
+ value: [],
2273
+ meta: { visitedNodes, inspectedEdges, truncated }
2274
+ };
2275
+ }
2276
+ /** Return the induced subgraph over a bounded closure including the root. */
2277
+ subgraph(id, options = {}) {
2278
+ const closure = this.closure(id, options);
2279
+ const nodes = [id, ...closure.value].sort();
2280
+ const included = new Set(nodes);
2281
+ const kinds = options.kinds ? new Set(options.kinds.map((kind) => this.#registry.require(kind).kind)) : void 0;
2282
+ const edges = /* @__PURE__ */ new Set();
2283
+ for (const node of nodes) {
2284
+ for (const edge of this.#outgoing.get(node) ?? []) {
2285
+ if (included.has(edge.source) && included.has(edge.target) && this.#matchesKinds(edge, kinds))
2286
+ edges.add(edge);
2287
+ }
2288
+ }
2289
+ return {
2290
+ value: {
2291
+ nodes,
2292
+ edges: [...edges].sort(compareEdges)
2293
+ },
2294
+ meta: closure.meta
2295
+ };
2296
+ }
2297
+ };
2298
+ function dependencyToRelationship(source, dependency, registry = defaultRegistry) {
2299
+ return {
2300
+ source,
2301
+ target: dependency.id,
2302
+ kind: registry.require(dependency.kind).kind,
2303
+ createdAt: dependency.created_at,
2304
+ author: dependency.author
2305
+ };
2306
+ }
2307
+
1727
2308
  // dist/core/shared/levenshtein.js
1728
2309
  function levenshteinDistanceWithinLimit(left, right, limit) {
1729
2310
  if (left === right) {
@@ -1941,6 +2522,7 @@ function createEmptyExtensionRegistrationRegistry() {
1941
2522
  flags: [],
1942
2523
  item_fields: [],
1943
2524
  item_types: [],
2525
+ relationship_kinds: [],
1944
2526
  migrations: [],
1945
2527
  profiles: [],
1946
2528
  importers: [],
@@ -2038,7 +2620,8 @@ async function runCommandHandler(commands, context) {
2038
2620
  args: cloneContextSnapshot(context.args),
2039
2621
  options: cloneContextSnapshot(context.options),
2040
2622
  global: cloneContextSnapshot(context.global),
2041
- pm_root: context.pm_root
2623
+ pm_root: context.pm_root,
2624
+ ...context.sdk === void 0 ? {} : { sdk: context.sdk }
2042
2625
  });
2043
2626
  return {
2044
2627
  handled: true,
@@ -4442,6 +5025,7 @@ var ExtensionApiRegistrar = class {
4442
5025
  this.registerFlags = this.registerFlags.bind(this);
4443
5026
  this.registerItemFields = this.registerItemFields.bind(this);
4444
5027
  this.registerItemTypes = this.registerItemTypes.bind(this);
5028
+ this.registerRelationshipKinds = this.registerRelationshipKinds.bind(this);
4445
5029
  this.registerMigration = this.registerMigration.bind(this);
4446
5030
  this.registerProfile = this.registerProfile.bind(this);
4447
5031
  this.registerRenderer = this.registerRenderer.bind(this);
@@ -4691,6 +5275,33 @@ var ExtensionApiRegistrar = class {
4691
5275
  types: normalizedTypes
4692
5276
  });
4693
5277
  }
5278
+ registerRelationshipKinds(definitions) {
5279
+ assertExtensionCapability(this.#loadedExtension, "schema", "registerRelationshipKinds");
5280
+ if (!this.allowRegistration("schema.relationshipkinds", "registerRelationshipKinds", "schema")) {
5281
+ return;
5282
+ }
5283
+ if (!Array.isArray(definitions)) {
5284
+ throw new TypeError("registerRelationshipKinds definitions requires an array of object definitions");
5285
+ }
5286
+ if (definitions.length === 0) {
5287
+ throw new TypeError("registerRelationshipKinds requires at least one definition");
5288
+ }
5289
+ const registry = createRelationshipKindRegistry();
5290
+ for (const registration of this.#registrationRegistry.relationship_kinds) {
5291
+ for (const definition of registration.definitions) {
5292
+ registry.register(definition);
5293
+ }
5294
+ }
5295
+ const validated = definitions.map((definition) => {
5296
+ registry.register(definition);
5297
+ return registry.require(definition.kind);
5298
+ });
5299
+ this.#registrationRegistry.relationship_kinds.push({
5300
+ layer: this.#loadedExtension.layer,
5301
+ name: this.#loadedExtension.name,
5302
+ definitions: validated
5303
+ });
5304
+ }
4694
5305
  registerMigration(definition) {
4695
5306
  assertExtensionCapability(this.#loadedExtension, "schema", "registerMigration");
4696
5307
  if (!this.allowRegistration("schema.migrations", "registerMigration", "schema")) {
@@ -4924,11 +5535,13 @@ function getRegistrationCounts(registrations) {
4924
5535
  const flagCount = registrations.flags.reduce((total, entry) => total + entry.flags.length, 0);
4925
5536
  const itemFieldCount = registrations.item_fields.reduce((total, entry) => total + entry.fields.length, 0);
4926
5537
  const itemTypeCount = registrations.item_types.reduce((total, entry) => total + entry.types.length, 0);
5538
+ const relationshipKindCount = (registrations.relationship_kinds ?? []).reduce((total, entry) => total + entry.definitions.length, 0);
4927
5539
  return {
4928
5540
  commands: commandCount,
4929
5541
  flags: flagCount,
4930
5542
  item_fields: itemFieldCount,
4931
5543
  item_types: itemTypeCount,
5544
+ ...relationshipKindCount > 0 ? { relationship_kinds: relationshipKindCount } : {},
4932
5545
  migrations: registrations.migrations.length,
4933
5546
  profiles: registrations.profiles.length,
4934
5547
  importers: registrations.importers.length,
@@ -5126,6 +5739,7 @@ var EXTENSION_CAPABILITY_REGISTRATION_SURFACES = {
5126
5739
  "registerFlags",
5127
5740
  "registerItemFields",
5128
5741
  "registerItemTypes",
5742
+ "registerRelationshipKinds",
5129
5743
  "registerMigration",
5130
5744
  "registerProfile"
5131
5745
  ],
@@ -5178,6 +5792,7 @@ function attributeCapabilityUsage(activation) {
5178
5792
  record(registrations.flags, "schema");
5179
5793
  record(registrations.item_fields, "schema");
5180
5794
  record(registrations.item_types, "schema");
5795
+ record(registrations.relationship_kinds ?? [], "schema");
5181
5796
  record(registrations.migrations, "schema");
5182
5797
  record(registrations.profiles, "schema");
5183
5798
  record(registrations.importers, "importers");
@@ -6144,6 +6759,7 @@ export {
6144
6759
  resolveCommandOptionPolicyState,
6145
6760
  validateTypeOptions,
6146
6761
  ITEM_FILE_EXTENSIONS,
6762
+ discoverNearbyPmRoot,
6147
6763
  resolvePmRoot,
6148
6764
  resolveWorkspaceRoot,
6149
6765
  resolveGlobalPmRoot,
@@ -6179,6 +6795,11 @@ export {
6179
6795
  levenshteinDistanceWithinLimit,
6180
6796
  evaluatePmMinVersionBound,
6181
6797
  evaluatePmMaxVersionBound,
6798
+ RelationshipKindRegistry,
6799
+ createRelationshipKindRegistry,
6800
+ isOrderingRelationshipKind,
6801
+ RelationshipGraph,
6802
+ dependencyToRelationship,
6182
6803
  normalizeKnownExtensionCapability,
6183
6804
  resolveLegacyExtensionCapabilityAlias,
6184
6805
  parseUnknownExtensionCapabilityWarning,
@@ -6234,6 +6855,6 @@ export {
6234
6855
  parseRegisteredItemFieldAssignments,
6235
6856
  applyRegisteredItemFieldDefaultsAndValidation
6236
6857
  };
6237
- //# sourceMappingURL=chunk-KX62NMZC.js.map
6858
+ //# sourceMappingURL=chunk-D35WYXWC.js.map
6238
6859
 
6239
- //# debugId=a5eddd91-53f1-5292-9781-c74192041379
6860
+ //# debugId=236f0bc3-3408-510b-9449-4755558bc2fb