@unbrained/pm-cli 2026.7.1 → 2026.7.2

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 (563) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/cli/commander-usage.d.ts +2 -0
  3. package/dist/cli/commander-usage.js +58 -47
  4. package/dist/cli/commander-usage.js.map +1 -1
  5. package/dist/cli/commands/aggregate.js +102 -79
  6. package/dist/cli/commands/aggregate.js.map +1 -1
  7. package/dist/cli/commands/calendar.js +278 -243
  8. package/dist/cli/commands/calendar.js.map +1 -1
  9. package/dist/cli/commands/close-many.js +89 -68
  10. package/dist/cli/commands/close-many.js.map +1 -1
  11. package/dist/cli/commands/close.js +157 -129
  12. package/dist/cli/commands/close.js.map +1 -1
  13. package/dist/cli/commands/comments-audit.js +50 -42
  14. package/dist/cli/commands/comments-audit.js.map +1 -1
  15. package/dist/cli/commands/config.d.ts +2 -0
  16. package/dist/cli/commands/config.js +443 -879
  17. package/dist/cli/commands/config.js.map +1 -1
  18. package/dist/cli/commands/context.js +365 -287
  19. package/dist/cli/commands/context.js.map +1 -1
  20. package/dist/cli/commands/contracts.js +352 -238
  21. package/dist/cli/commands/contracts.js.map +1 -1
  22. package/dist/cli/commands/dedupe-audit.js +46 -39
  23. package/dist/cli/commands/dedupe-audit.js.map +1 -1
  24. package/dist/cli/commands/dedupe-merge.js +88 -69
  25. package/dist/cli/commands/dedupe-merge.js.map +1 -1
  26. package/dist/cli/commands/get.js +114 -81
  27. package/dist/cli/commands/get.js.map +1 -1
  28. package/dist/cli/commands/health.d.ts +17 -0
  29. package/dist/cli/commands/health.js +446 -307
  30. package/dist/cli/commands/health.js.map +1 -1
  31. package/dist/cli/commands/history-compact.js +209 -140
  32. package/dist/cli/commands/history-compact.js.map +1 -1
  33. package/dist/cli/commands/history-redact.js +162 -119
  34. package/dist/cli/commands/history-redact.js.map +1 -1
  35. package/dist/cli/commands/history-repair.js +120 -85
  36. package/dist/cli/commands/history-repair.js.map +1 -1
  37. package/dist/cli/commands/init.d.ts +8 -2
  38. package/dist/cli/commands/init.js +263 -162
  39. package/dist/cli/commands/init.js.map +1 -1
  40. package/dist/cli/commands/list.js +152 -102
  41. package/dist/cli/commands/list.js.map +1 -1
  42. package/dist/cli/commands/next.js +49 -32
  43. package/dist/cli/commands/next.js.map +1 -1
  44. package/dist/cli/commands/plan.js +373 -298
  45. package/dist/cli/commands/plan.js.map +1 -1
  46. package/dist/cli/commands/recurrence-parsers.js +43 -25
  47. package/dist/cli/commands/recurrence-parsers.js.map +1 -1
  48. package/dist/cli/commands/reindex.d.ts +21 -5
  49. package/dist/cli/commands/reindex.js +345 -205
  50. package/dist/cli/commands/reindex.js.map +1 -1
  51. package/dist/cli/commands/restore.d.ts +8 -7
  52. package/dist/cli/commands/restore.js +105 -69
  53. package/dist/cli/commands/restore.js.map +1 -1
  54. package/dist/cli/commands/schema.js +33 -30
  55. package/dist/cli/commands/schema.js.map +1 -1
  56. package/dist/cli/commands/search.d.ts +10 -2
  57. package/dist/cli/commands/search.js +503 -470
  58. package/dist/cli/commands/search.js.map +1 -1
  59. package/dist/cli/commands/telemetry.js +98 -87
  60. package/dist/cli/commands/telemetry.js.map +1 -1
  61. package/dist/cli/commands/test-all.js +237 -168
  62. package/dist/cli/commands/test-all.js.map +1 -1
  63. package/dist/cli/commands/test.d.ts +6 -5
  64. package/dist/cli/commands/test.js +424 -344
  65. package/dist/cli/commands/test.js.map +1 -1
  66. package/dist/cli/commands/update-many.js +57 -42
  67. package/dist/cli/commands/update-many.js.map +1 -1
  68. package/dist/cli/commands/update.d.ts +1 -1
  69. package/dist/cli/commands/update.js +738 -671
  70. package/dist/cli/commands/update.js.map +1 -1
  71. package/dist/cli/commands/validate.d.ts +18 -1
  72. package/dist/cli/commands/validate.js +466 -343
  73. package/dist/cli/commands/validate.js.map +1 -1
  74. package/dist/cli/error-guidance.js +399 -357
  75. package/dist/cli/error-guidance.js.map +1 -1
  76. package/dist/cli/main.d.ts +47 -0
  77. package/dist/cli/main.js +428 -341
  78. package/dist/cli/main.js.map +1 -1
  79. package/dist/cli/migration-gates.js +22 -45
  80. package/dist/cli/migration-gates.js.map +1 -1
  81. package/dist/cli/register-list-query.js +94 -105
  82. package/dist/cli/register-list-query.js.map +1 -1
  83. package/dist/cli/register-mutation.js +400 -416
  84. package/dist/cli/register-mutation.js.map +1 -1
  85. package/dist/cli/register-operations.js +86 -66
  86. package/dist/cli/register-operations.js.map +1 -1
  87. package/dist/cli/register-setup.js +120 -101
  88. package/dist/cli/register-setup.js.map +1 -1
  89. package/dist/cli-bundle/chunks/{activity-DBLQVIP6.js → activity-CUC4JY3U.js} +9 -9
  90. package/dist/cli-bundle/chunks/activity-WEIEMM73.js +16 -0
  91. package/dist/cli-bundle/chunks/{aggregate-JTEF4BP7.js → aggregate-DKUTRY6R.js} +108 -84
  92. package/dist/cli-bundle/chunks/aggregate-DKUTRY6R.js.map +1 -0
  93. package/dist/cli-bundle/chunks/{aggregate-SDF7DUOD.js → aggregate-SW5PNGCS.js} +107 -83
  94. package/dist/cli-bundle/chunks/{aggregate-SDF7DUOD.js.map → aggregate-SW5PNGCS.js.map} +2 -2
  95. package/dist/cli-bundle/chunks/{append-QCFJSDFL.js → append-H32VOR2Y.js} +6 -6
  96. package/dist/cli-bundle/chunks/{append-LOVPGVPT.js → append-UBM632FK.js} +6 -6
  97. package/dist/cli-bundle/chunks/{chunk-RLDHZHQS.js → chunk-2227673O.js} +158 -114
  98. package/dist/cli-bundle/chunks/chunk-2227673O.js.map +1 -0
  99. package/dist/cli-bundle/chunks/{chunk-SLMUGTK3.js → chunk-2ASNV4DH.js} +4 -4
  100. package/dist/cli-bundle/chunks/{chunk-UZIWVBE6.js → chunk-2CHRYUXL.js} +2 -2
  101. package/dist/cli-bundle/chunks/{chunk-NWMZWYYB.js → chunk-2KWL5NPW.js} +42 -27
  102. package/dist/cli-bundle/chunks/chunk-2KWL5NPW.js.map +1 -0
  103. package/dist/cli-bundle/chunks/{chunk-NFDPYAIP.js → chunk-36UGKF4O.js} +21 -29
  104. package/dist/cli-bundle/chunks/chunk-36UGKF4O.js.map +7 -0
  105. package/dist/cli-bundle/chunks/{chunk-NU2UEROZ.js → chunk-3AZUFQK6.js} +6 -6
  106. package/dist/cli-bundle/chunks/{chunk-LB6TP6MC.js → chunk-3LCUASYG.js} +2 -2
  107. package/dist/cli-bundle/chunks/{chunk-HPPFYYOV.js → chunk-3Q2HBMTI.js} +2 -2
  108. package/dist/cli-bundle/chunks/{chunk-IPYBJWTE.js → chunk-4NUOWFBT.js} +109 -72
  109. package/dist/cli-bundle/chunks/chunk-4NUOWFBT.js.map +7 -0
  110. package/dist/cli-bundle/chunks/{chunk-W4ULYO7Z.js → chunk-55XRYWEG.js} +6 -6
  111. package/dist/cli-bundle/chunks/{chunk-HXTQJXWT.js → chunk-5GVTFFTC.js} +2 -2
  112. package/dist/cli-bundle/chunks/{chunk-BDTISOSD.js → chunk-5PGBHRY3.js} +41 -26
  113. package/dist/cli-bundle/chunks/chunk-5PGBHRY3.js.map +7 -0
  114. package/dist/cli-bundle/chunks/{chunk-YITK2PJ6.js → chunk-66Z3X7ZG.js} +261 -161
  115. package/dist/cli-bundle/chunks/chunk-66Z3X7ZG.js.map +7 -0
  116. package/dist/cli-bundle/chunks/{chunk-NUHHPVVS.js → chunk-6ITZLD4T.js} +712 -612
  117. package/dist/cli-bundle/chunks/chunk-6ITZLD4T.js.map +7 -0
  118. package/dist/cli-bundle/chunks/{chunk-V3NOKJF2.js → chunk-6YCYF2AI.js} +262 -162
  119. package/dist/cli-bundle/chunks/chunk-6YCYF2AI.js.map +1 -0
  120. package/dist/cli-bundle/chunks/{chunk-BZCEN4JA.js → chunk-6ZMBJRDJ.js} +492 -403
  121. package/dist/cli-bundle/chunks/chunk-6ZMBJRDJ.js.map +7 -0
  122. package/dist/cli-bundle/chunks/{chunk-CF7RL6FR.js → chunk-7MYWF4ZX.js} +110 -73
  123. package/dist/cli-bundle/chunks/chunk-7MYWF4ZX.js.map +1 -0
  124. package/dist/cli-bundle/chunks/{chunk-RVUALSJF.js → chunk-7NSPKJUS.js} +356 -285
  125. package/dist/cli-bundle/chunks/chunk-7NSPKJUS.js.map +7 -0
  126. package/dist/cli-bundle/chunks/{chunk-4DSGXSBL.js → chunk-7TH5NMVB.js} +95 -53
  127. package/dist/cli-bundle/chunks/chunk-7TH5NMVB.js.map +7 -0
  128. package/dist/cli-bundle/chunks/{chunk-ZETXE4SE.js → chunk-7W4H4K26.js} +713 -613
  129. package/dist/cli-bundle/chunks/chunk-7W4H4K26.js.map +1 -0
  130. package/dist/cli-bundle/chunks/{chunk-64HNBBFQ.js → chunk-A6VOGKBA.js} +6 -6
  131. package/dist/cli-bundle/chunks/{chunk-WYDHYJPO.js → chunk-AIAIXG7I.js} +2 -2
  132. package/dist/cli-bundle/chunks/{chunk-CWFNTKQJ.js → chunk-AJEBCRIY.js} +5 -5
  133. package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js → chunk-B4O5S7I3.js} +79 -57
  134. package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js.map → chunk-B4O5S7I3.js.map} +2 -2
  135. package/dist/cli-bundle/chunks/{chunk-NOLPZMSV.js → chunk-BTX5MIQF.js} +2 -2
  136. package/dist/cli-bundle/chunks/{chunk-RH5ZBYFD.js → chunk-BVZZN2LH.js} +3 -3
  137. package/dist/cli-bundle/chunks/{chunk-27BXPBAY.js → chunk-CYBDUHNO.js} +3 -3
  138. package/dist/cli-bundle/chunks/{chunk-A7FPBAQS.js → chunk-CZPVDLD2.js} +4 -4
  139. package/dist/cli-bundle/chunks/{chunk-3VGN2UWE.js → chunk-EMPGXBUF.js} +22 -30
  140. package/dist/cli-bundle/chunks/chunk-EMPGXBUF.js.map +1 -0
  141. package/dist/cli-bundle/chunks/{chunk-JPECA746.js → chunk-EUKTMRN3.js} +2 -2
  142. package/dist/cli-bundle/chunks/{chunk-2466X6E4.js → chunk-FFOQHGNH.js} +6 -6
  143. package/dist/cli-bundle/chunks/{chunk-JLM7BHI7.js → chunk-GFMSLORL.js} +6 -6
  144. package/dist/cli-bundle/chunks/{chunk-SDR5J34Q.js → chunk-GRRG3MCT.js} +4 -4
  145. package/dist/cli-bundle/chunks/{chunk-GJ326ZKX.js → chunk-H4GRLYJS.js} +3 -3
  146. package/dist/cli-bundle/chunks/{chunk-OGXLACHC.js → chunk-HQTPRV4D.js} +6 -6
  147. package/dist/cli-bundle/chunks/{chunk-7R4QEMZZ.js → chunk-I66WE2HE.js} +354 -283
  148. package/dist/cli-bundle/chunks/chunk-I66WE2HE.js.map +1 -0
  149. package/dist/cli-bundle/chunks/{chunk-BHO33VBQ.js → chunk-IEEJQCZ4.js} +3 -3
  150. package/dist/cli-bundle/chunks/{chunk-JMP4E6D7.js → chunk-IG5JYZGU.js} +390 -312
  151. package/dist/cli-bundle/chunks/{chunk-JMP4E6D7.js.map → chunk-IG5JYZGU.js.map} +2 -2
  152. package/dist/cli-bundle/chunks/{chunk-4DUVCVLZ.js → chunk-JMK5GCK2.js} +2 -2
  153. package/dist/cli-bundle/chunks/{chunk-3K2M5OYU.js → chunk-JXAUVO6X.js} +258 -169
  154. package/dist/cli-bundle/chunks/{chunk-3K2M5OYU.js.map → chunk-JXAUVO6X.js.map} +2 -2
  155. package/dist/cli-bundle/chunks/{chunk-AXIDKKAT.js → chunk-K2VYLVX4.js} +2 -2
  156. package/dist/cli-bundle/chunks/{chunk-EJUDVUYZ.js → chunk-KCO2EAN5.js} +3 -3
  157. package/dist/cli-bundle/chunks/{chunk-6AQZPVHQ.js → chunk-KIYCOJ63.js} +4 -4
  158. package/dist/cli-bundle/chunks/{chunk-ZRP4VG5U.js → chunk-KLXF7NCC.js} +2 -2
  159. package/dist/cli-bundle/chunks/{chunk-QCWF6IYD.js → chunk-KN3URLKS.js} +3 -3
  160. package/dist/cli-bundle/chunks/{chunk-N74UMG5H.js → chunk-LRKMWUUV.js} +2 -2
  161. package/dist/cli-bundle/chunks/{chunk-AVEE5EHK.js → chunk-LTRAF2D7.js} +3 -3
  162. package/dist/cli-bundle/chunks/{chunk-VARHOHYV.js → chunk-MNBPX5JS.js} +55 -36
  163. package/dist/cli-bundle/chunks/chunk-MNBPX5JS.js.map +7 -0
  164. package/dist/cli-bundle/chunks/{chunk-IJYK2T43.js → chunk-MRD4T5LF.js} +2 -2
  165. package/dist/cli-bundle/chunks/{chunk-G7I7DEZA.js → chunk-N2JSWVWG.js} +4 -4
  166. package/dist/cli-bundle/chunks/{chunk-5QFDBI4F.js → chunk-N3QCJS4M.js} +6 -6
  167. package/dist/cli-bundle/chunks/{chunk-JSU5P7VS.js → chunk-NRZS637N.js} +258 -169
  168. package/dist/cli-bundle/chunks/chunk-NRZS637N.js.map +1 -0
  169. package/dist/cli-bundle/chunks/{chunk-4A3BJ675.js → chunk-OTUJZKGI.js} +3 -3
  170. package/dist/cli-bundle/chunks/{chunk-5CGRF3L5.js → chunk-Q6K2OACU.js} +153 -90
  171. package/dist/cli-bundle/chunks/chunk-Q6K2OACU.js.map +1 -0
  172. package/dist/cli-bundle/chunks/{chunk-3XZCOZ5J.js → chunk-Q6NXOHS6.js} +391 -313
  173. package/dist/cli-bundle/chunks/chunk-Q6NXOHS6.js.map +1 -0
  174. package/dist/cli-bundle/chunks/{chunk-HZZEHPRG.js → chunk-QH3FSKRJ.js} +2 -2
  175. package/dist/cli-bundle/chunks/{chunk-4XOIEKSD.js → chunk-RM37OPYK.js} +56 -37
  176. package/dist/cli-bundle/chunks/chunk-RM37OPYK.js.map +1 -0
  177. package/dist/cli-bundle/chunks/{chunk-NKZAN7BD.js → chunk-S62UANU7.js} +3 -3
  178. package/dist/cli-bundle/chunks/{chunk-RMMQ74TG.js → chunk-SPM2XLWI.js} +37 -28
  179. package/dist/cli-bundle/chunks/chunk-SPM2XLWI.js.map +7 -0
  180. package/dist/cli-bundle/chunks/{chunk-3J6JRJ3I.js → chunk-SYNKD3ZG.js} +5 -5
  181. package/dist/cli-bundle/chunks/{chunk-FFMQB7WR.js → chunk-SYVUU7EK.js} +493 -404
  182. package/dist/cli-bundle/chunks/chunk-SYVUU7EK.js.map +1 -0
  183. package/dist/cli-bundle/chunks/{chunk-UYUYDGIB.js → chunk-TPOFWBMY.js} +95 -53
  184. package/dist/cli-bundle/chunks/chunk-TPOFWBMY.js.map +1 -0
  185. package/dist/cli-bundle/chunks/{chunk-OTUHB4HS.js → chunk-TTHCEV5Q.js} +92 -77
  186. package/dist/cli-bundle/chunks/chunk-TTHCEV5Q.js.map +1 -0
  187. package/dist/cli-bundle/chunks/{chunk-L5OEFZQG.js → chunk-U2BEEM2X.js} +3 -3
  188. package/dist/cli-bundle/chunks/{chunk-KNPEF7QG.js → chunk-UGLU6Q2I.js} +91 -76
  189. package/dist/cli-bundle/chunks/chunk-UGLU6Q2I.js.map +7 -0
  190. package/dist/cli-bundle/chunks/{chunk-EVMTBV6V.js → chunk-UT73HUPC.js} +3 -3
  191. package/dist/cli-bundle/chunks/{chunk-VICZWYGZ.js → chunk-UTSH5GWX.js} +4 -4
  192. package/dist/cli-bundle/chunks/{chunk-IZBR4NRW.js → chunk-UWKEJMZU.js} +157 -113
  193. package/dist/cli-bundle/chunks/chunk-UWKEJMZU.js.map +7 -0
  194. package/dist/cli-bundle/chunks/{chunk-3S2KT7NG.js → chunk-W47SML5B.js} +152 -89
  195. package/dist/cli-bundle/chunks/chunk-W47SML5B.js.map +7 -0
  196. package/dist/cli-bundle/chunks/{chunk-RGEMWD6Q.js → chunk-WJAMWAHZ.js} +157 -118
  197. package/dist/cli-bundle/chunks/chunk-WJAMWAHZ.js.map +7 -0
  198. package/dist/cli-bundle/chunks/{chunk-JWXRETDF.js → chunk-XCHUVHKU.js} +626 -484
  199. package/dist/cli-bundle/chunks/chunk-XCHUVHKU.js.map +1 -0
  200. package/dist/cli-bundle/chunks/{chunk-55SNVXRQ.js → chunk-XEWQKDYZ.js} +626 -484
  201. package/dist/cli-bundle/chunks/chunk-XEWQKDYZ.js.map +7 -0
  202. package/dist/cli-bundle/chunks/{chunk-TP5Q5ZD3.js → chunk-XTHQWXVC.js} +158 -119
  203. package/dist/cli-bundle/chunks/chunk-XTHQWXVC.js.map +1 -0
  204. package/dist/cli-bundle/chunks/{chunk-MDPEOIGN.js → chunk-XWGEMNBR.js} +2 -2
  205. package/dist/cli-bundle/chunks/{chunk-HYTGA6GI.js → chunk-Y4NRKBFW.js} +3 -3
  206. package/dist/cli-bundle/chunks/{chunk-2D4HATP2.js → chunk-YLZZ6T54.js} +38 -29
  207. package/dist/cli-bundle/chunks/chunk-YLZZ6T54.js.map +1 -0
  208. package/dist/cli-bundle/chunks/{chunk-22WKIL3H.js → chunk-YPKFV2JR.js} +6 -6
  209. package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js → chunk-Z4DGFQDH.js} +80 -58
  210. package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js.map → chunk-Z4DGFQDH.js.map} +1 -1
  211. package/dist/cli-bundle/chunks/{chunk-DDPTYJIM.js → chunk-ZNHEYCDD.js} +2 -2
  212. package/dist/cli-bundle/chunks/{chunk-MAUKX7JC.js → chunk-ZNT7KEWE.js} +2 -2
  213. package/dist/cli-bundle/chunks/{claim-T3GCKV7C.js → claim-SENTPZBN.js} +8 -8
  214. package/dist/cli-bundle/chunks/{claim-EMQLYPRW.js → claim-Z7MEQCBT.js} +8 -8
  215. package/dist/cli-bundle/chunks/{close-TQYAAFJP.js → close-424MX4CU.js} +7 -7
  216. package/dist/cli-bundle/chunks/close-YCWQQPDS.js +14 -0
  217. package/dist/cli-bundle/chunks/{close-many-LDRVEQY2.js → close-many-2IV4J2TR.js} +102 -81
  218. package/dist/cli-bundle/chunks/close-many-2IV4J2TR.js.map +1 -0
  219. package/dist/cli-bundle/chunks/{close-many-BG5QQIDQ.js → close-many-SWY34BII.js} +101 -80
  220. package/dist/cli-bundle/chunks/close-many-SWY34BII.js.map +7 -0
  221. package/dist/cli-bundle/chunks/{comments-YUXJRZPQ.js → comments-4FGNTSNV.js} +8 -8
  222. package/dist/cli-bundle/chunks/{comments-QCKR2YY2.js → comments-7YS5MY5X.js} +8 -8
  223. package/dist/cli-bundle/chunks/config-BZJKK7FZ.js +1062 -0
  224. package/dist/cli-bundle/chunks/config-BZJKK7FZ.js.map +1 -0
  225. package/dist/cli-bundle/chunks/config-G74GISC4.js +1072 -0
  226. package/dist/cli-bundle/chunks/config-G74GISC4.js.map +7 -0
  227. package/dist/cli-bundle/chunks/{context-OCZ3FJ4Z.js → context-LHVKJSPJ.js} +12 -12
  228. package/dist/cli-bundle/chunks/{context-B6275WPX.js → context-ZQY54JNS.js} +12 -12
  229. package/dist/cli-bundle/chunks/{contracts-HN7ABKLP.js → contracts-CP2EZJC7.js} +320 -199
  230. package/dist/cli-bundle/chunks/contracts-CP2EZJC7.js.map +7 -0
  231. package/dist/cli-bundle/chunks/{contracts-W4FZVVD6.js → contracts-FIZLMP7O.js} +321 -200
  232. package/dist/cli-bundle/chunks/contracts-FIZLMP7O.js.map +1 -0
  233. package/dist/cli-bundle/chunks/{copy-DEM4DATS.js → copy-GYNQQPW2.js} +5 -5
  234. package/dist/cli-bundle/chunks/{copy-BTJOSKKT.js → copy-TLW7JTQT.js} +5 -5
  235. package/dist/cli-bundle/chunks/{create-RLRJMRTM.js → create-VSKYSOCD.js} +12 -12
  236. package/dist/cli-bundle/chunks/create-XTMAPS7I.js +28 -0
  237. package/dist/cli-bundle/chunks/{delete-LSVHAB4Y.js → delete-4W5JYCEG.js} +5 -5
  238. package/dist/cli-bundle/chunks/{delete-BHK7VB2Z.js → delete-ANTOTI2I.js} +5 -5
  239. package/dist/cli-bundle/chunks/{deps-XHYXWEPT.js → deps-HPPE6MJN.js} +5 -5
  240. package/dist/cli-bundle/chunks/{deps-4UDFJRUA.js → deps-ZQZN54EZ.js} +5 -5
  241. package/dist/cli-bundle/chunks/{docs-GYZNVS26.js → docs-RPOVFMP3.js} +7 -7
  242. package/dist/cli-bundle/chunks/{docs-26S44RXU.js → docs-XJNYBJGE.js} +7 -7
  243. package/dist/cli-bundle/chunks/{eval-PGRVIJQU.js → eval-DM6JBZTS.js} +10 -10
  244. package/dist/cli-bundle/chunks/{eval-UYF3ZPVO.js → eval-RFBI5FGS.js} +10 -10
  245. package/dist/cli-bundle/chunks/{extension-CPSLJQVE.js → extension-B3YY4WY5.js} +11 -11
  246. package/dist/cli-bundle/chunks/{extension-CXJ6RELI.js → extension-TTSEFQTS.js} +11 -11
  247. package/dist/cli-bundle/chunks/{files-NQHEXUZD.js → files-5D65CHGE.js} +7 -7
  248. package/dist/cli-bundle/chunks/{files-MBNICQFM.js → files-GPIG77EN.js} +7 -7
  249. package/dist/cli-bundle/chunks/{focus-XZW5423D.js → focus-C3PEJV2C.js} +6 -6
  250. package/dist/cli-bundle/chunks/{focus-DWYIG7GU.js → focus-ZHN7WIGX.js} +6 -6
  251. package/dist/cli-bundle/chunks/{gc-LPVMKJQJ.js → gc-D4JQ6OWN.js} +3 -3
  252. package/dist/cli-bundle/chunks/{gc-7GQYOS2G.js → gc-VZIXDL32.js} +3 -3
  253. package/dist/cli-bundle/chunks/{get-DSDEKJ3L.js → get-GIBRUUOP.js} +121 -81
  254. package/dist/cli-bundle/chunks/get-GIBRUUOP.js.map +1 -0
  255. package/dist/cli-bundle/chunks/{get-A7MAOHCU.js → get-IOVAN6RU.js} +120 -80
  256. package/dist/cli-bundle/chunks/get-IOVAN6RU.js.map +7 -0
  257. package/dist/cli-bundle/chunks/{health-3IPFLKXB.js → health-L2U3AFKV.js} +437 -265
  258. package/dist/cli-bundle/chunks/health-L2U3AFKV.js.map +1 -0
  259. package/dist/cli-bundle/chunks/{health-GZXGBZ36.js → health-MM7AWXYF.js} +436 -264
  260. package/dist/cli-bundle/chunks/health-MM7AWXYF.js.map +7 -0
  261. package/dist/cli-bundle/chunks/history-DD7L7BNL.js +18 -0
  262. package/dist/cli-bundle/chunks/{history-NERDJNUB.js → history-IL7XCEX2.js} +8 -8
  263. package/dist/cli-bundle/chunks/{history-compact-HR7BB4LR.js → history-compact-HALOTOU7.js} +214 -135
  264. package/dist/cli-bundle/chunks/history-compact-HALOTOU7.js.map +1 -0
  265. package/dist/cli-bundle/chunks/{history-compact-2WRZ2WK4.js → history-compact-MV25P7DM.js} +213 -134
  266. package/dist/cli-bundle/chunks/history-compact-MV25P7DM.js.map +7 -0
  267. package/dist/cli-bundle/chunks/history-redact-IX4YEWMY.js +19 -0
  268. package/dist/cli-bundle/chunks/{history-redact-O3NBCNWC.js → history-redact-VYCWQFK7.js} +9 -9
  269. package/dist/cli-bundle/chunks/{history-repair-XA3LC4GA.js → history-repair-44MODPQF.js} +124 -84
  270. package/dist/cli-bundle/chunks/history-repair-44MODPQF.js.map +1 -0
  271. package/dist/cli-bundle/chunks/{history-repair-LCMOS45X.js → history-repair-CPNAOCNF.js} +123 -83
  272. package/dist/cli-bundle/chunks/history-repair-CPNAOCNF.js.map +7 -0
  273. package/dist/cli-bundle/chunks/{init-64XDLQJB.js → init-F27NHENZ.js} +12 -12
  274. package/dist/cli-bundle/chunks/init-HHVQQP6C.js +22 -0
  275. package/dist/cli-bundle/chunks/{learnings-LPKCSJX7.js → learnings-HJVDQIGY.js} +8 -8
  276. package/dist/cli-bundle/chunks/{learnings-JR6MA5TI.js → learnings-XSFSUUWK.js} +8 -8
  277. package/dist/cli-bundle/chunks/{list-G5Y65VF6.js → list-HPMEKCAA.js} +8 -8
  278. package/dist/cli-bundle/chunks/{list-DNBJVO3E.js → list-VMPWTURB.js} +8 -8
  279. package/dist/cli-bundle/chunks/{next-BCERKDUR.js → next-ETXF2ZCN.js} +59 -37
  280. package/dist/cli-bundle/chunks/next-ETXF2ZCN.js.map +7 -0
  281. package/dist/cli-bundle/chunks/{next-FYTQF6HG.js → next-QM6YJIIS.js} +60 -38
  282. package/dist/cli-bundle/chunks/next-QM6YJIIS.js.map +1 -0
  283. package/dist/cli-bundle/chunks/{notes-2BMU3VVQ.js → notes-GDZIKGR6.js} +8 -8
  284. package/dist/cli-bundle/chunks/{notes-6KTGO2OJ.js → notes-WDDBPC4D.js} +8 -8
  285. package/dist/cli-bundle/chunks/{plan-RKZHQVXR.js → plan-BGDR73Z6.js} +373 -279
  286. package/dist/cli-bundle/chunks/plan-BGDR73Z6.js.map +1 -0
  287. package/dist/cli-bundle/chunks/{plan-4WXEQCTN.js → plan-C5IMM335.js} +372 -278
  288. package/dist/cli-bundle/chunks/plan-C5IMM335.js.map +7 -0
  289. package/dist/cli-bundle/chunks/{profile-QLER5ENE.js → profile-CCOKZ2IQ.js} +9 -9
  290. package/dist/cli-bundle/chunks/{profile-4OMM32CD.js → profile-HUCENIEQ.js} +9 -9
  291. package/dist/cli-bundle/chunks/{register-list-query-7LV46VAU.js → register-list-query-ROSNIL52.js} +80 -83
  292. package/dist/cli-bundle/chunks/register-list-query-ROSNIL52.js.map +1 -0
  293. package/dist/cli-bundle/chunks/{register-list-query-SNG5PGA4.js → register-list-query-XN4ZRHSV.js} +79 -82
  294. package/dist/cli-bundle/chunks/register-list-query-XN4ZRHSV.js.map +7 -0
  295. package/dist/cli-bundle/chunks/{register-mutation-ENNDUAZG.js → register-mutation-CFSB2MS3.js} +403 -382
  296. package/dist/cli-bundle/chunks/register-mutation-CFSB2MS3.js.map +1 -0
  297. package/dist/cli-bundle/chunks/{register-mutation-KK7PHYYU.js → register-mutation-KRLAHEL2.js} +402 -381
  298. package/dist/cli-bundle/chunks/register-mutation-KRLAHEL2.js.map +7 -0
  299. package/dist/cli-bundle/chunks/{register-operations-HZ6XERQG.js → register-operations-4PASGJDB.js} +112 -93
  300. package/dist/cli-bundle/chunks/register-operations-4PASGJDB.js.map +7 -0
  301. package/dist/cli-bundle/chunks/{register-operations-C6OWLDSH.js → register-operations-MBN4KGUM.js} +113 -94
  302. package/dist/cli-bundle/chunks/register-operations-MBN4KGUM.js.map +1 -0
  303. package/dist/cli-bundle/chunks/{register-setup-P67EMBDJ.js → register-setup-VIAWYFP5.js} +129 -104
  304. package/dist/cli-bundle/chunks/register-setup-VIAWYFP5.js.map +1 -0
  305. package/dist/cli-bundle/chunks/{register-setup-ZKJ53RS7.js → register-setup-ZCGKHDKL.js} +128 -103
  306. package/dist/cli-bundle/chunks/register-setup-ZCGKHDKL.js.map +7 -0
  307. package/dist/cli-bundle/chunks/{restore-4MHZFJ2E.js → restore-4CBWUMCX.js} +9 -9
  308. package/dist/cli-bundle/chunks/restore-5UEAGG3W.js +17 -0
  309. package/dist/cli-bundle/chunks/{scheduling-shortcuts-LB6DOLRL.js → scheduling-shortcuts-6VFKNKCM.js} +12 -12
  310. package/dist/cli-bundle/chunks/{scheduling-shortcuts-UTOYKLXQ.js → scheduling-shortcuts-ERHCVTEM.js} +12 -12
  311. package/dist/cli-bundle/chunks/{schema-73HR2OJW.js → schema-TDGK6N3I.js} +7 -7
  312. package/dist/cli-bundle/chunks/{schema-U6LJKSIR.js → schema-UE5KKAUX.js} +7 -7
  313. package/dist/cli-bundle/chunks/{search-KILGT37L.js → search-FP7MEU4S.js} +10 -10
  314. package/dist/cli-bundle/chunks/{search-AXPXKZER.js → search-K4CFLQ5S.js} +10 -10
  315. package/dist/cli-bundle/chunks/{stats-PSYVVTNZ.js → stats-NJJCALEZ.js} +6 -6
  316. package/dist/cli-bundle/chunks/{stats-W5KNVJWQ.js → stats-XT6QRKQY.js} +6 -6
  317. package/dist/cli-bundle/chunks/{telemetry-GAHHQTOS.js → telemetry-5SQ5UDXC.js} +84 -70
  318. package/dist/cli-bundle/chunks/telemetry-5SQ5UDXC.js.map +7 -0
  319. package/dist/cli-bundle/chunks/{telemetry-BZUF6H7G.js → telemetry-HVXFZA2U.js} +85 -71
  320. package/dist/cli-bundle/chunks/telemetry-HVXFZA2U.js.map +1 -0
  321. package/dist/cli-bundle/chunks/{test-ACD52Z3S.js → test-UFSJ5YIO.js} +15 -15
  322. package/dist/cli-bundle/chunks/{test-PWDIZ255.js → test-YCDAUBWF.js} +15 -15
  323. package/dist/cli-bundle/chunks/test-all-2BWKY3GQ.js +427 -0
  324. package/dist/cli-bundle/chunks/test-all-2BWKY3GQ.js.map +1 -0
  325. package/dist/cli-bundle/chunks/test-all-PM7UYN42.js +430 -0
  326. package/dist/cli-bundle/chunks/test-all-PM7UYN42.js.map +7 -0
  327. package/dist/cli-bundle/chunks/{test-runs-UXIXPDKU.js → test-runs-FK5E75AA.js} +185 -147
  328. package/dist/cli-bundle/chunks/test-runs-FK5E75AA.js.map +1 -0
  329. package/dist/cli-bundle/chunks/{test-runs-PLRAZEFW.js → test-runs-H4TGWGRN.js} +184 -146
  330. package/dist/cli-bundle/chunks/test-runs-H4TGWGRN.js.map +7 -0
  331. package/dist/cli-bundle/chunks/update-MTCFES6X.js +24 -0
  332. package/dist/cli-bundle/chunks/{update-KFX2SIAC.js → update-Y5WQVT5O.js} +15 -15
  333. package/dist/cli-bundle/chunks/{update-many-Z5GJS5LC.js → update-many-6YAYYRLE.js} +82 -67
  334. package/dist/cli-bundle/chunks/{update-many-Z5GJS5LC.js.map → update-many-6YAYYRLE.js.map} +2 -2
  335. package/dist/cli-bundle/chunks/{update-many-RNSBX2TA.js → update-many-JTKKSA7Y.js} +83 -68
  336. package/dist/cli-bundle/chunks/{update-many-RNSBX2TA.js.map → update-many-JTKKSA7Y.js.map} +1 -1
  337. package/dist/cli-bundle/chunks/{upgrade-HAK6JG2O.js → upgrade-DTAHZ236.js} +11 -11
  338. package/dist/cli-bundle/chunks/{upgrade-BRL6KCOJ.js → upgrade-JUDU7YL4.js} +11 -11
  339. package/dist/cli-bundle/chunks/{validate-MTUVL5VC.js → validate-732RWS5W.js} +440 -320
  340. package/dist/cli-bundle/chunks/validate-732RWS5W.js.map +7 -0
  341. package/dist/cli-bundle/chunks/{validate-X5W76YJL.js → validate-W7H5TEDC.js} +441 -321
  342. package/dist/cli-bundle/chunks/validate-W7H5TEDC.js.map +1 -0
  343. package/dist/cli-bundle/main.js +945 -812
  344. package/dist/cli-bundle/main.js.map +3 -3
  345. package/dist/core/config/nested-settings.js +89 -67
  346. package/dist/core/config/nested-settings.js.map +1 -1
  347. package/dist/core/governance/metadata-coverage.js +20 -28
  348. package/dist/core/governance/metadata-coverage.js.map +1 -1
  349. package/dist/core/history/drift-scan.js +93 -81
  350. package/dist/core/history/drift-scan.js.map +1 -1
  351. package/dist/core/item/item-type-definition.js +14 -14
  352. package/dist/core/item/item-type-definition.js.map +1 -1
  353. package/dist/core/item/type-registry.js +87 -82
  354. package/dist/core/item/type-registry.js.map +1 -1
  355. package/dist/core/output/mutation-projection.js +42 -26
  356. package/dist/core/output/mutation-projection.js.map +1 -1
  357. package/dist/core/schema/runtime-schema.js +34 -28
  358. package/dist/core/schema/runtime-schema.js.map +1 -1
  359. package/dist/core/search/semantic-defaults.js +64 -37
  360. package/dist/core/search/semantic-defaults.js.map +1 -1
  361. package/dist/core/search/vector-stores.js +32 -17
  362. package/dist/core/search/vector-stores.js.map +1 -1
  363. package/dist/core/sentry/helpers.js +31 -28
  364. package/dist/core/sentry/helpers.js.map +1 -1
  365. package/dist/core/sentry/instrument.js +54 -43
  366. package/dist/core/sentry/instrument.js.map +1 -1
  367. package/dist/core/store/front-matter-cache.js +239 -153
  368. package/dist/core/store/front-matter-cache.js.map +1 -1
  369. package/dist/core/store/item-store.js +33 -26
  370. package/dist/core/store/item-store.js.map +1 -1
  371. package/dist/core/store/settings.js +247 -203
  372. package/dist/core/store/settings.js.map +1 -1
  373. package/dist/core/test/background-runs.js +189 -160
  374. package/dist/core/test/background-runs.js.map +1 -1
  375. package/package.json +2 -2
  376. package/packages/pm-beads/extensions/beads/runtime.ts +240 -167
  377. package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +65 -58
  378. package/packages/pm-todos/extensions/todos/runtime.ts +65 -42
  379. package/dist/cli-bundle/chunks/activity-AW6XVFH6.js +0 -16
  380. package/dist/cli-bundle/chunks/aggregate-JTEF4BP7.js.map +0 -1
  381. package/dist/cli-bundle/chunks/chunk-2D4HATP2.js.map +0 -1
  382. package/dist/cli-bundle/chunks/chunk-3S2KT7NG.js.map +0 -7
  383. package/dist/cli-bundle/chunks/chunk-3VGN2UWE.js.map +0 -1
  384. package/dist/cli-bundle/chunks/chunk-3XZCOZ5J.js.map +0 -1
  385. package/dist/cli-bundle/chunks/chunk-4DSGXSBL.js.map +0 -7
  386. package/dist/cli-bundle/chunks/chunk-4XOIEKSD.js.map +0 -1
  387. package/dist/cli-bundle/chunks/chunk-55SNVXRQ.js.map +0 -7
  388. package/dist/cli-bundle/chunks/chunk-5CGRF3L5.js.map +0 -1
  389. package/dist/cli-bundle/chunks/chunk-7R4QEMZZ.js.map +0 -1
  390. package/dist/cli-bundle/chunks/chunk-BDTISOSD.js.map +0 -7
  391. package/dist/cli-bundle/chunks/chunk-BZCEN4JA.js.map +0 -7
  392. package/dist/cli-bundle/chunks/chunk-CF7RL6FR.js.map +0 -1
  393. package/dist/cli-bundle/chunks/chunk-FFMQB7WR.js.map +0 -1
  394. package/dist/cli-bundle/chunks/chunk-IPYBJWTE.js.map +0 -7
  395. package/dist/cli-bundle/chunks/chunk-IZBR4NRW.js.map +0 -7
  396. package/dist/cli-bundle/chunks/chunk-JSU5P7VS.js.map +0 -1
  397. package/dist/cli-bundle/chunks/chunk-JWXRETDF.js.map +0 -1
  398. package/dist/cli-bundle/chunks/chunk-KNPEF7QG.js.map +0 -7
  399. package/dist/cli-bundle/chunks/chunk-NFDPYAIP.js.map +0 -7
  400. package/dist/cli-bundle/chunks/chunk-NUHHPVVS.js.map +0 -7
  401. package/dist/cli-bundle/chunks/chunk-NWMZWYYB.js.map +0 -1
  402. package/dist/cli-bundle/chunks/chunk-OTUHB4HS.js.map +0 -1
  403. package/dist/cli-bundle/chunks/chunk-RGEMWD6Q.js.map +0 -7
  404. package/dist/cli-bundle/chunks/chunk-RLDHZHQS.js.map +0 -1
  405. package/dist/cli-bundle/chunks/chunk-RMMQ74TG.js.map +0 -7
  406. package/dist/cli-bundle/chunks/chunk-RVUALSJF.js.map +0 -7
  407. package/dist/cli-bundle/chunks/chunk-TP5Q5ZD3.js.map +0 -1
  408. package/dist/cli-bundle/chunks/chunk-UYUYDGIB.js.map +0 -1
  409. package/dist/cli-bundle/chunks/chunk-V3NOKJF2.js.map +0 -1
  410. package/dist/cli-bundle/chunks/chunk-VARHOHYV.js.map +0 -7
  411. package/dist/cli-bundle/chunks/chunk-YITK2PJ6.js.map +0 -7
  412. package/dist/cli-bundle/chunks/chunk-ZETXE4SE.js.map +0 -1
  413. package/dist/cli-bundle/chunks/close-E6ZZGCJY.js +0 -14
  414. package/dist/cli-bundle/chunks/close-many-BG5QQIDQ.js.map +0 -7
  415. package/dist/cli-bundle/chunks/close-many-LDRVEQY2.js.map +0 -1
  416. package/dist/cli-bundle/chunks/config-DMSU64QO.js +0 -1541
  417. package/dist/cli-bundle/chunks/config-DMSU64QO.js.map +0 -7
  418. package/dist/cli-bundle/chunks/config-QH2DICD6.js +0 -1531
  419. package/dist/cli-bundle/chunks/config-QH2DICD6.js.map +0 -1
  420. package/dist/cli-bundle/chunks/contracts-HN7ABKLP.js.map +0 -7
  421. package/dist/cli-bundle/chunks/contracts-W4FZVVD6.js.map +0 -1
  422. package/dist/cli-bundle/chunks/create-OH3BDGBB.js +0 -28
  423. package/dist/cli-bundle/chunks/get-A7MAOHCU.js.map +0 -7
  424. package/dist/cli-bundle/chunks/get-DSDEKJ3L.js.map +0 -1
  425. package/dist/cli-bundle/chunks/health-3IPFLKXB.js.map +0 -1
  426. package/dist/cli-bundle/chunks/health-GZXGBZ36.js.map +0 -7
  427. package/dist/cli-bundle/chunks/history-WSZHY3PN.js +0 -18
  428. package/dist/cli-bundle/chunks/history-compact-2WRZ2WK4.js.map +0 -7
  429. package/dist/cli-bundle/chunks/history-compact-HR7BB4LR.js.map +0 -1
  430. package/dist/cli-bundle/chunks/history-redact-MP6CH7U5.js +0 -19
  431. package/dist/cli-bundle/chunks/history-repair-LCMOS45X.js.map +0 -7
  432. package/dist/cli-bundle/chunks/history-repair-XA3LC4GA.js.map +0 -1
  433. package/dist/cli-bundle/chunks/init-PAX32BJA.js +0 -22
  434. package/dist/cli-bundle/chunks/next-BCERKDUR.js.map +0 -7
  435. package/dist/cli-bundle/chunks/next-FYTQF6HG.js.map +0 -1
  436. package/dist/cli-bundle/chunks/plan-4WXEQCTN.js.map +0 -7
  437. package/dist/cli-bundle/chunks/plan-RKZHQVXR.js.map +0 -1
  438. package/dist/cli-bundle/chunks/register-list-query-7LV46VAU.js.map +0 -1
  439. package/dist/cli-bundle/chunks/register-list-query-SNG5PGA4.js.map +0 -7
  440. package/dist/cli-bundle/chunks/register-mutation-ENNDUAZG.js.map +0 -1
  441. package/dist/cli-bundle/chunks/register-mutation-KK7PHYYU.js.map +0 -7
  442. package/dist/cli-bundle/chunks/register-operations-C6OWLDSH.js.map +0 -1
  443. package/dist/cli-bundle/chunks/register-operations-HZ6XERQG.js.map +0 -7
  444. package/dist/cli-bundle/chunks/register-setup-P67EMBDJ.js.map +0 -1
  445. package/dist/cli-bundle/chunks/register-setup-ZKJ53RS7.js.map +0 -7
  446. package/dist/cli-bundle/chunks/restore-YALDGTQR.js +0 -17
  447. package/dist/cli-bundle/chunks/telemetry-BZUF6H7G.js.map +0 -1
  448. package/dist/cli-bundle/chunks/telemetry-GAHHQTOS.js.map +0 -7
  449. package/dist/cli-bundle/chunks/test-all-L2MDDUCA.js +0 -358
  450. package/dist/cli-bundle/chunks/test-all-L2MDDUCA.js.map +0 -1
  451. package/dist/cli-bundle/chunks/test-all-RBZ6DLU2.js +0 -361
  452. package/dist/cli-bundle/chunks/test-all-RBZ6DLU2.js.map +0 -7
  453. package/dist/cli-bundle/chunks/test-runs-PLRAZEFW.js.map +0 -7
  454. package/dist/cli-bundle/chunks/test-runs-UXIXPDKU.js.map +0 -1
  455. package/dist/cli-bundle/chunks/update-AMRSOIWP.js +0 -24
  456. package/dist/cli-bundle/chunks/validate-MTUVL5VC.js.map +0 -7
  457. package/dist/cli-bundle/chunks/validate-X5W76YJL.js.map +0 -1
  458. /package/dist/cli-bundle/chunks/{activity-DBLQVIP6.js.map → activity-CUC4JY3U.js.map} +0 -0
  459. /package/dist/cli-bundle/chunks/{activity-AW6XVFH6.js.map → activity-WEIEMM73.js.map} +0 -0
  460. /package/dist/cli-bundle/chunks/{append-QCFJSDFL.js.map → append-H32VOR2Y.js.map} +0 -0
  461. /package/dist/cli-bundle/chunks/{append-LOVPGVPT.js.map → append-UBM632FK.js.map} +0 -0
  462. /package/dist/cli-bundle/chunks/{chunk-SLMUGTK3.js.map → chunk-2ASNV4DH.js.map} +0 -0
  463. /package/dist/cli-bundle/chunks/{chunk-UZIWVBE6.js.map → chunk-2CHRYUXL.js.map} +0 -0
  464. /package/dist/cli-bundle/chunks/{chunk-NU2UEROZ.js.map → chunk-3AZUFQK6.js.map} +0 -0
  465. /package/dist/cli-bundle/chunks/{chunk-LB6TP6MC.js.map → chunk-3LCUASYG.js.map} +0 -0
  466. /package/dist/cli-bundle/chunks/{chunk-HPPFYYOV.js.map → chunk-3Q2HBMTI.js.map} +0 -0
  467. /package/dist/cli-bundle/chunks/{chunk-W4ULYO7Z.js.map → chunk-55XRYWEG.js.map} +0 -0
  468. /package/dist/cli-bundle/chunks/{chunk-HXTQJXWT.js.map → chunk-5GVTFFTC.js.map} +0 -0
  469. /package/dist/cli-bundle/chunks/{chunk-64HNBBFQ.js.map → chunk-A6VOGKBA.js.map} +0 -0
  470. /package/dist/cli-bundle/chunks/{chunk-WYDHYJPO.js.map → chunk-AIAIXG7I.js.map} +0 -0
  471. /package/dist/cli-bundle/chunks/{chunk-CWFNTKQJ.js.map → chunk-AJEBCRIY.js.map} +0 -0
  472. /package/dist/cli-bundle/chunks/{chunk-NOLPZMSV.js.map → chunk-BTX5MIQF.js.map} +0 -0
  473. /package/dist/cli-bundle/chunks/{chunk-RH5ZBYFD.js.map → chunk-BVZZN2LH.js.map} +0 -0
  474. /package/dist/cli-bundle/chunks/{chunk-27BXPBAY.js.map → chunk-CYBDUHNO.js.map} +0 -0
  475. /package/dist/cli-bundle/chunks/{chunk-A7FPBAQS.js.map → chunk-CZPVDLD2.js.map} +0 -0
  476. /package/dist/cli-bundle/chunks/{chunk-JPECA746.js.map → chunk-EUKTMRN3.js.map} +0 -0
  477. /package/dist/cli-bundle/chunks/{chunk-2466X6E4.js.map → chunk-FFOQHGNH.js.map} +0 -0
  478. /package/dist/cli-bundle/chunks/{chunk-JLM7BHI7.js.map → chunk-GFMSLORL.js.map} +0 -0
  479. /package/dist/cli-bundle/chunks/{chunk-SDR5J34Q.js.map → chunk-GRRG3MCT.js.map} +0 -0
  480. /package/dist/cli-bundle/chunks/{chunk-GJ326ZKX.js.map → chunk-H4GRLYJS.js.map} +0 -0
  481. /package/dist/cli-bundle/chunks/{chunk-OGXLACHC.js.map → chunk-HQTPRV4D.js.map} +0 -0
  482. /package/dist/cli-bundle/chunks/{chunk-BHO33VBQ.js.map → chunk-IEEJQCZ4.js.map} +0 -0
  483. /package/dist/cli-bundle/chunks/{chunk-4DUVCVLZ.js.map → chunk-JMK5GCK2.js.map} +0 -0
  484. /package/dist/cli-bundle/chunks/{chunk-AXIDKKAT.js.map → chunk-K2VYLVX4.js.map} +0 -0
  485. /package/dist/cli-bundle/chunks/{chunk-EJUDVUYZ.js.map → chunk-KCO2EAN5.js.map} +0 -0
  486. /package/dist/cli-bundle/chunks/{chunk-6AQZPVHQ.js.map → chunk-KIYCOJ63.js.map} +0 -0
  487. /package/dist/cli-bundle/chunks/{chunk-ZRP4VG5U.js.map → chunk-KLXF7NCC.js.map} +0 -0
  488. /package/dist/cli-bundle/chunks/{chunk-QCWF6IYD.js.map → chunk-KN3URLKS.js.map} +0 -0
  489. /package/dist/cli-bundle/chunks/{chunk-N74UMG5H.js.map → chunk-LRKMWUUV.js.map} +0 -0
  490. /package/dist/cli-bundle/chunks/{chunk-AVEE5EHK.js.map → chunk-LTRAF2D7.js.map} +0 -0
  491. /package/dist/cli-bundle/chunks/{chunk-IJYK2T43.js.map → chunk-MRD4T5LF.js.map} +0 -0
  492. /package/dist/cli-bundle/chunks/{chunk-G7I7DEZA.js.map → chunk-N2JSWVWG.js.map} +0 -0
  493. /package/dist/cli-bundle/chunks/{chunk-5QFDBI4F.js.map → chunk-N3QCJS4M.js.map} +0 -0
  494. /package/dist/cli-bundle/chunks/{chunk-4A3BJ675.js.map → chunk-OTUJZKGI.js.map} +0 -0
  495. /package/dist/cli-bundle/chunks/{chunk-HZZEHPRG.js.map → chunk-QH3FSKRJ.js.map} +0 -0
  496. /package/dist/cli-bundle/chunks/{chunk-NKZAN7BD.js.map → chunk-S62UANU7.js.map} +0 -0
  497. /package/dist/cli-bundle/chunks/{chunk-3J6JRJ3I.js.map → chunk-SYNKD3ZG.js.map} +0 -0
  498. /package/dist/cli-bundle/chunks/{chunk-L5OEFZQG.js.map → chunk-U2BEEM2X.js.map} +0 -0
  499. /package/dist/cli-bundle/chunks/{chunk-EVMTBV6V.js.map → chunk-UT73HUPC.js.map} +0 -0
  500. /package/dist/cli-bundle/chunks/{chunk-VICZWYGZ.js.map → chunk-UTSH5GWX.js.map} +0 -0
  501. /package/dist/cli-bundle/chunks/{chunk-MDPEOIGN.js.map → chunk-XWGEMNBR.js.map} +0 -0
  502. /package/dist/cli-bundle/chunks/{chunk-HYTGA6GI.js.map → chunk-Y4NRKBFW.js.map} +0 -0
  503. /package/dist/cli-bundle/chunks/{chunk-22WKIL3H.js.map → chunk-YPKFV2JR.js.map} +0 -0
  504. /package/dist/cli-bundle/chunks/{chunk-DDPTYJIM.js.map → chunk-ZNHEYCDD.js.map} +0 -0
  505. /package/dist/cli-bundle/chunks/{chunk-MAUKX7JC.js.map → chunk-ZNT7KEWE.js.map} +0 -0
  506. /package/dist/cli-bundle/chunks/{claim-T3GCKV7C.js.map → claim-SENTPZBN.js.map} +0 -0
  507. /package/dist/cli-bundle/chunks/{claim-EMQLYPRW.js.map → claim-Z7MEQCBT.js.map} +0 -0
  508. /package/dist/cli-bundle/chunks/{close-TQYAAFJP.js.map → close-424MX4CU.js.map} +0 -0
  509. /package/dist/cli-bundle/chunks/{close-E6ZZGCJY.js.map → close-YCWQQPDS.js.map} +0 -0
  510. /package/dist/cli-bundle/chunks/{comments-YUXJRZPQ.js.map → comments-4FGNTSNV.js.map} +0 -0
  511. /package/dist/cli-bundle/chunks/{comments-QCKR2YY2.js.map → comments-7YS5MY5X.js.map} +0 -0
  512. /package/dist/cli-bundle/chunks/{context-OCZ3FJ4Z.js.map → context-LHVKJSPJ.js.map} +0 -0
  513. /package/dist/cli-bundle/chunks/{context-B6275WPX.js.map → context-ZQY54JNS.js.map} +0 -0
  514. /package/dist/cli-bundle/chunks/{copy-DEM4DATS.js.map → copy-GYNQQPW2.js.map} +0 -0
  515. /package/dist/cli-bundle/chunks/{copy-BTJOSKKT.js.map → copy-TLW7JTQT.js.map} +0 -0
  516. /package/dist/cli-bundle/chunks/{create-RLRJMRTM.js.map → create-VSKYSOCD.js.map} +0 -0
  517. /package/dist/cli-bundle/chunks/{create-OH3BDGBB.js.map → create-XTMAPS7I.js.map} +0 -0
  518. /package/dist/cli-bundle/chunks/{delete-LSVHAB4Y.js.map → delete-4W5JYCEG.js.map} +0 -0
  519. /package/dist/cli-bundle/chunks/{delete-BHK7VB2Z.js.map → delete-ANTOTI2I.js.map} +0 -0
  520. /package/dist/cli-bundle/chunks/{deps-XHYXWEPT.js.map → deps-HPPE6MJN.js.map} +0 -0
  521. /package/dist/cli-bundle/chunks/{deps-4UDFJRUA.js.map → deps-ZQZN54EZ.js.map} +0 -0
  522. /package/dist/cli-bundle/chunks/{docs-GYZNVS26.js.map → docs-RPOVFMP3.js.map} +0 -0
  523. /package/dist/cli-bundle/chunks/{docs-26S44RXU.js.map → docs-XJNYBJGE.js.map} +0 -0
  524. /package/dist/cli-bundle/chunks/{eval-PGRVIJQU.js.map → eval-DM6JBZTS.js.map} +0 -0
  525. /package/dist/cli-bundle/chunks/{eval-UYF3ZPVO.js.map → eval-RFBI5FGS.js.map} +0 -0
  526. /package/dist/cli-bundle/chunks/{extension-CPSLJQVE.js.map → extension-B3YY4WY5.js.map} +0 -0
  527. /package/dist/cli-bundle/chunks/{extension-CXJ6RELI.js.map → extension-TTSEFQTS.js.map} +0 -0
  528. /package/dist/cli-bundle/chunks/{files-NQHEXUZD.js.map → files-5D65CHGE.js.map} +0 -0
  529. /package/dist/cli-bundle/chunks/{files-MBNICQFM.js.map → files-GPIG77EN.js.map} +0 -0
  530. /package/dist/cli-bundle/chunks/{focus-XZW5423D.js.map → focus-C3PEJV2C.js.map} +0 -0
  531. /package/dist/cli-bundle/chunks/{focus-DWYIG7GU.js.map → focus-ZHN7WIGX.js.map} +0 -0
  532. /package/dist/cli-bundle/chunks/{gc-LPVMKJQJ.js.map → gc-D4JQ6OWN.js.map} +0 -0
  533. /package/dist/cli-bundle/chunks/{gc-7GQYOS2G.js.map → gc-VZIXDL32.js.map} +0 -0
  534. /package/dist/cli-bundle/chunks/{history-WSZHY3PN.js.map → history-DD7L7BNL.js.map} +0 -0
  535. /package/dist/cli-bundle/chunks/{history-NERDJNUB.js.map → history-IL7XCEX2.js.map} +0 -0
  536. /package/dist/cli-bundle/chunks/{history-redact-MP6CH7U5.js.map → history-redact-IX4YEWMY.js.map} +0 -0
  537. /package/dist/cli-bundle/chunks/{history-redact-O3NBCNWC.js.map → history-redact-VYCWQFK7.js.map} +0 -0
  538. /package/dist/cli-bundle/chunks/{init-64XDLQJB.js.map → init-F27NHENZ.js.map} +0 -0
  539. /package/dist/cli-bundle/chunks/{init-PAX32BJA.js.map → init-HHVQQP6C.js.map} +0 -0
  540. /package/dist/cli-bundle/chunks/{learnings-LPKCSJX7.js.map → learnings-HJVDQIGY.js.map} +0 -0
  541. /package/dist/cli-bundle/chunks/{learnings-JR6MA5TI.js.map → learnings-XSFSUUWK.js.map} +0 -0
  542. /package/dist/cli-bundle/chunks/{list-G5Y65VF6.js.map → list-HPMEKCAA.js.map} +0 -0
  543. /package/dist/cli-bundle/chunks/{list-DNBJVO3E.js.map → list-VMPWTURB.js.map} +0 -0
  544. /package/dist/cli-bundle/chunks/{notes-2BMU3VVQ.js.map → notes-GDZIKGR6.js.map} +0 -0
  545. /package/dist/cli-bundle/chunks/{notes-6KTGO2OJ.js.map → notes-WDDBPC4D.js.map} +0 -0
  546. /package/dist/cli-bundle/chunks/{profile-QLER5ENE.js.map → profile-CCOKZ2IQ.js.map} +0 -0
  547. /package/dist/cli-bundle/chunks/{profile-4OMM32CD.js.map → profile-HUCENIEQ.js.map} +0 -0
  548. /package/dist/cli-bundle/chunks/{restore-4MHZFJ2E.js.map → restore-4CBWUMCX.js.map} +0 -0
  549. /package/dist/cli-bundle/chunks/{restore-YALDGTQR.js.map → restore-5UEAGG3W.js.map} +0 -0
  550. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-LB6DOLRL.js.map → scheduling-shortcuts-6VFKNKCM.js.map} +0 -0
  551. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-UTOYKLXQ.js.map → scheduling-shortcuts-ERHCVTEM.js.map} +0 -0
  552. /package/dist/cli-bundle/chunks/{schema-73HR2OJW.js.map → schema-TDGK6N3I.js.map} +0 -0
  553. /package/dist/cli-bundle/chunks/{schema-U6LJKSIR.js.map → schema-UE5KKAUX.js.map} +0 -0
  554. /package/dist/cli-bundle/chunks/{search-KILGT37L.js.map → search-FP7MEU4S.js.map} +0 -0
  555. /package/dist/cli-bundle/chunks/{search-AXPXKZER.js.map → search-K4CFLQ5S.js.map} +0 -0
  556. /package/dist/cli-bundle/chunks/{stats-PSYVVTNZ.js.map → stats-NJJCALEZ.js.map} +0 -0
  557. /package/dist/cli-bundle/chunks/{stats-W5KNVJWQ.js.map → stats-XT6QRKQY.js.map} +0 -0
  558. /package/dist/cli-bundle/chunks/{test-ACD52Z3S.js.map → test-UFSJ5YIO.js.map} +0 -0
  559. /package/dist/cli-bundle/chunks/{test-PWDIZ255.js.map → test-YCDAUBWF.js.map} +0 -0
  560. /package/dist/cli-bundle/chunks/{update-AMRSOIWP.js.map → update-MTCFES6X.js.map} +0 -0
  561. /package/dist/cli-bundle/chunks/{update-KFX2SIAC.js.map → update-Y5WQVT5O.js.map} +0 -0
  562. /package/dist/cli-bundle/chunks/{upgrade-HAK6JG2O.js.map → upgrade-DTAHZ236.js.map} +0 -0
  563. /package/dist/cli-bundle/chunks/{upgrade-BRL6KCOJ.js.map → upgrade-JUDU7YL4.js.map} +0 -0
@@ -88,6 +88,19 @@ interface ItemTypeRegistry {
88
88
  type_to_folder: Record<string, string>;
89
89
  }
90
90
 
91
+ interface BeadsImportRuntime {
92
+ sdk: BeadsSdkModule;
93
+ pmRoot: string;
94
+ settings: PmSettings;
95
+ typeRegistry: ItemTypeRegistry;
96
+ preserveSourceIds: boolean;
97
+ author: string;
98
+ message: string;
99
+ }
100
+
101
+ type BeadsImportLineResult = { id: string; writeWarnings: string[] } | { warning: string };
102
+ type ParsedBeadsLine = { record: BeadsRecord } | { warning: string } | null;
103
+
91
104
  interface BeadsSdkModule {
92
105
  DEPENDENCY_KIND_VALUES: readonly Dependency["kind"][];
93
106
  EXIT_CODE: {
@@ -135,50 +148,73 @@ interface BeadsSdkModule {
135
148
  toNonEmptyImportString: (value: unknown) => string | undefined;
136
149
  }
137
150
 
138
- async function loadBeadsSdkModule(): Promise<BeadsSdkModule> {
151
+ const BEADS_SDK_ARRAY_EXPORTS = [
152
+ "DEPENDENCY_KIND_VALUES",
153
+ ] as const satisfies readonly (keyof BeadsSdkModule)[];
154
+
155
+ const BEADS_SDK_FUNCTION_EXPORTS = [
156
+ "PmCliError",
157
+ "canonicalDocument",
158
+ "commitImportedItem",
159
+ "ensureTrackerInitialized",
160
+ "generateItemId",
161
+ "getActiveExtensionRegistrations",
162
+ "getItemPath",
163
+ "isTimestampLiteral",
164
+ "locateItem",
165
+ "normalizeFrontMatter",
166
+ "normalizeItemId",
167
+ "normalizeRawItemId",
168
+ "nowIso",
169
+ "pathExists",
170
+ "readSettings",
171
+ "resolveItemTypeRegistry",
172
+ "resolvePmRoot",
173
+ "runActiveOnReadHooks",
174
+ "selectImportAuthor",
175
+ "toEstimatedMinutesValue",
176
+ "toImportPriority",
177
+ "toImportStatus",
178
+ "toImportTags",
179
+ "toNonEmptyImportString",
180
+ ] as const satisfies readonly (keyof BeadsSdkModule)[];
181
+
182
+ function resolveBeadsSdkModulePath(): string {
139
183
  const envRoot = process.env[PM_PACKAGE_ROOT_ENV];
140
184
  const hasConfiguredPackageRoot = typeof envRoot === "string" && envRoot.trim().length > 0;
141
- const packageRoot =
142
- hasConfiguredPackageRoot
143
- ? path.resolve(envRoot.trim())
144
- : path.resolve(CURRENT_RUNTIME_ROOT, "../../../..");
145
- const modulePath = hasConfiguredPackageRoot
185
+ const packageRoot = hasConfiguredPackageRoot ? path.resolve(envRoot.trim()) : path.resolve(CURRENT_RUNTIME_ROOT, "../../../..");
186
+ return hasConfiguredPackageRoot
146
187
  ? path.join(packageRoot, "dist", "sdk", "index.js")
147
188
  : path.join(packageRoot, "src", "sdk", "index.ts");
189
+ }
190
+
191
+ function hasBeadsSdkArrayExports(loaded: Partial<BeadsSdkModule>): boolean {
192
+ return BEADS_SDK_ARRAY_EXPORTS.every((key) => Array.isArray(loaded[key]));
193
+ }
194
+
195
+ function hasBeadsSdkFunctionExports(loaded: Partial<BeadsSdkModule>): boolean {
196
+ return BEADS_SDK_FUNCTION_EXPORTS.every((key) => typeof loaded[key] === "function");
197
+ }
198
+
199
+ function hasBeadsSdkExitCodeExports(loaded: Partial<BeadsSdkModule>): boolean {
200
+ return (
201
+ typeof loaded.EXIT_CODE === "object" &&
202
+ loaded.EXIT_CODE !== null &&
203
+ typeof loaded.EXIT_CODE.NOT_FOUND === "number" &&
204
+ typeof loaded.EXIT_CODE.USAGE === "number"
205
+ );
206
+ }
207
+
208
+ function isBeadsSdkModule(loaded: Partial<BeadsSdkModule>): loaded is BeadsSdkModule {
209
+ return hasBeadsSdkArrayExports(loaded) && hasBeadsSdkFunctionExports(loaded) && hasBeadsSdkExitCodeExports(loaded);
210
+ }
211
+
212
+ async function loadBeadsSdkModule(): Promise<BeadsSdkModule> {
213
+ const modulePath = resolveBeadsSdkModulePath();
148
214
  try {
149
215
  const loaded = (await import(pathToFileURL(modulePath).href)) as Partial<BeadsSdkModule>;
150
- if (
151
- Array.isArray(loaded.DEPENDENCY_KIND_VALUES) &&
152
- typeof loaded.EXIT_CODE === "object" &&
153
- loaded.EXIT_CODE !== null &&
154
- typeof loaded.EXIT_CODE.NOT_FOUND === "number" &&
155
- typeof loaded.EXIT_CODE.USAGE === "number" &&
156
- typeof loaded.PmCliError === "function" &&
157
- typeof loaded.canonicalDocument === "function" &&
158
- typeof loaded.commitImportedItem === "function" &&
159
- typeof loaded.ensureTrackerInitialized === "function" &&
160
- typeof loaded.generateItemId === "function" &&
161
- typeof loaded.getActiveExtensionRegistrations === "function" &&
162
- typeof loaded.getItemPath === "function" &&
163
- typeof loaded.isTimestampLiteral === "function" &&
164
- typeof loaded.locateItem === "function" &&
165
- typeof loaded.normalizeFrontMatter === "function" &&
166
- typeof loaded.normalizeItemId === "function" &&
167
- typeof loaded.normalizeRawItemId === "function" &&
168
- typeof loaded.nowIso === "function" &&
169
- typeof loaded.pathExists === "function" &&
170
- typeof loaded.readSettings === "function" &&
171
- typeof loaded.resolveItemTypeRegistry === "function" &&
172
- typeof loaded.resolvePmRoot === "function" &&
173
- typeof loaded.runActiveOnReadHooks === "function" &&
174
- typeof loaded.selectImportAuthor === "function" &&
175
- typeof loaded.toEstimatedMinutesValue === "function" &&
176
- typeof loaded.toImportPriority === "function" &&
177
- typeof loaded.toImportStatus === "function" &&
178
- typeof loaded.toImportTags === "function" &&
179
- typeof loaded.toNonEmptyImportString === "function"
180
- ) {
181
- return loaded as BeadsSdkModule;
216
+ if (isBeadsSdkModule(loaded)) {
217
+ return loaded;
182
218
  }
183
219
  } catch (error: unknown) {
184
220
  throw new Error(`builtin-beads failed to load SDK exports from ${modulePath}.`, { cause: error });
@@ -186,19 +222,15 @@ async function loadBeadsSdkModule(): Promise<BeadsSdkModule> {
186
222
  throw new Error(`builtin-beads failed to load SDK exports from ${modulePath}.`);
187
223
  }
188
224
 
225
+ const beadsSdk = await loadBeadsSdkModule();
226
+
189
227
  const {
190
228
  DEPENDENCY_KIND_VALUES,
191
229
  EXIT_CODE,
192
230
  PmCliError,
193
- canonicalDocument,
194
- commitImportedItem,
195
231
  ensureTrackerInitialized,
196
- generateItemId,
197
232
  getActiveExtensionRegistrations,
198
- getItemPath,
199
233
  isTimestampLiteral,
200
- locateItem,
201
- normalizeFrontMatter,
202
234
  normalizeItemId,
203
235
  normalizeRawItemId,
204
236
  nowIso,
@@ -213,7 +245,7 @@ const {
213
245
  toImportStatus,
214
246
  toImportTags,
215
247
  toNonEmptyImportString,
216
- } = await loadBeadsSdkModule();
248
+ } = beadsSdk;
217
249
 
218
250
  // Shared, behavior-identical value coercers are sourced from the SDK adapter
219
251
  // surface; package-specific mappings (timestamps, item types, dependencies,
@@ -451,36 +483,49 @@ function toLinkedTests(value: unknown): LinkedTest[] | undefined {
451
483
  if (c) tests.push({ command: c, scope: "project" });
452
484
  continue;
453
485
  }
454
- if (typeof entry !== "object" || entry === null || Array.isArray(entry)) {
455
- continue;
456
- }
457
- const candidate = entry as Record<string, unknown>;
458
- const command = toNonEmptyString(candidate.command) ?? toNonEmptyString(candidate.test);
459
- const p = toNonEmptyString(candidate.path);
460
- if (!command && !p) continue;
461
-
462
- let timeout: number | undefined;
463
- if (typeof candidate.timeout_seconds === "number" && Number.isFinite(candidate.timeout_seconds)) {
464
- timeout = candidate.timeout_seconds;
465
- } else if (typeof candidate.timeout_seconds === "string") {
466
- const parsed = Number(candidate.timeout_seconds);
467
- if (Number.isFinite(parsed) && parsed >= 0) {
468
- timeout = parsed;
469
- }
486
+ const linkedTest = toLinkedTestFromRecord(entry);
487
+ if (linkedTest) {
488
+ tests.push(linkedTest);
470
489
  }
471
-
472
- tests.push({
473
- command,
474
- path: p,
475
- scope: toNonEmptyString(candidate.scope) === "global" ? "global" : "project",
476
- timeout_seconds: timeout,
477
- note: toNonEmptyString(candidate.note),
478
- });
479
490
  }
480
491
 
481
492
  return tests.length > 0 ? tests : undefined;
482
493
  }
483
494
 
495
+ function toLinkedTestTimeout(value: unknown): number | undefined {
496
+ if (typeof value === "number" && Number.isFinite(value) && value >= 0) {
497
+ return value;
498
+ }
499
+ if (typeof value !== "string") {
500
+ return undefined;
501
+ }
502
+ const trimmed = value.trim();
503
+ if (!trimmed) {
504
+ return undefined;
505
+ }
506
+ const parsed = Number(trimmed);
507
+ return Number.isFinite(parsed) && parsed >= 0 ? parsed : undefined;
508
+ }
509
+
510
+ function toLinkedTestFromRecord(value: unknown): LinkedTest | undefined {
511
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
512
+ return undefined;
513
+ }
514
+ const candidate = value as Record<string, unknown>;
515
+ const command = toNonEmptyString(candidate.command) ?? toNonEmptyString(candidate.test);
516
+ const p = toNonEmptyString(candidate.path);
517
+ if (!command && !p) {
518
+ return undefined;
519
+ }
520
+ return {
521
+ command,
522
+ path: p,
523
+ scope: toNonEmptyString(candidate.scope) === "global" ? "global" : "project",
524
+ timeout_seconds: toLinkedTestTimeout(candidate.timeout_seconds),
525
+ note: toNonEmptyString(candidate.note),
526
+ };
527
+ }
528
+
484
529
  function toLinkedDocs(value: unknown): LinkedDoc[] | undefined {
485
530
  if (typeof value === "string") {
486
531
  const p = toNonEmptyString(value);
@@ -596,6 +641,114 @@ async function resolveBeadsSource(rawPath: string | undefined): Promise<{
596
641
  );
597
642
  }
598
643
 
644
+ function parseBeadsLine(line: string, lineNumber: number): ParsedBeadsLine {
645
+ const trimmed = line.trim();
646
+ if (trimmed.length === 0) {
647
+ return null;
648
+ }
649
+ let parsed: unknown;
650
+ try {
651
+ parsed = JSON.parse(trimmed) as unknown;
652
+ } catch {
653
+ return { warning: `beads_import_invalid_jsonl_line:${lineNumber}` };
654
+ }
655
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
656
+ return { warning: `beads_import_invalid_record:${lineNumber}` };
657
+ }
658
+ return { record: parsed as BeadsRecord };
659
+ }
660
+
661
+ async function resolveBeadsImportId(record: BeadsRecord, runtime: BeadsImportRuntime): Promise<string> {
662
+ const rawId = toNonEmptyString(record.id);
663
+ return rawId
664
+ ? normalizeImportedId(rawId, runtime.settings.id_prefix, runtime.preserveSourceIds)
665
+ : await runtime.sdk.generateItemId(runtime.pmRoot, runtime.settings.id_prefix);
666
+ }
667
+
668
+ function buildBeadsImportedBody(record: BeadsRecord): string {
669
+ const rawBody = toNonEmptyString(record.body) ?? "";
670
+ const design = toNonEmptyString(record.design);
671
+ const externalRef = toNonEmptyString(record.external_ref);
672
+ let finalBody = rawBody;
673
+ if (design) {
674
+ finalBody += (finalBody ? "\n\n" : "") + "## Design\n\n" + design;
675
+ }
676
+ if (externalRef) {
677
+ finalBody += (finalBody ? "\n\n" : "") + "## External Reference\n" + externalRef;
678
+ }
679
+ return finalBody;
680
+ }
681
+
682
+ async function importBeadsRecord(record: BeadsRecord, lineNumber: number, runtime: BeadsImportRuntime): Promise<BeadsImportLineResult> {
683
+ const title = toNonEmptyString(record.title);
684
+ if (!title) {
685
+ return { warning: `beads_import_missing_title:${lineNumber}` };
686
+ }
687
+
688
+ const createdAt = toIsoString(record.created_at) ?? nowIso();
689
+ const updatedAt = toIsoString(record.updated_at) ?? createdAt;
690
+ const id = await resolveBeadsImportId(record, runtime);
691
+ const typeMapping = toItemType(record.issue_type ?? record.type);
692
+ const type = typeMapping.type;
693
+ const closedAt = toIsoString(record.closed_at);
694
+ const assignee = toNonEmptyString(record.assignee) ?? toNonEmptyString(record.owner);
695
+ const frontMatter = runtime.sdk.normalizeFrontMatter({
696
+ id,
697
+ title,
698
+ description: toNonEmptyString(record.description) ?? "",
699
+ type,
700
+ source_type: typeMapping.sourceType,
701
+ status: toStatus(record.status),
702
+ priority: toPriority(record.priority),
703
+ tags: toTags(record.tags ?? record.labels),
704
+ created_at: createdAt,
705
+ updated_at: updatedAt,
706
+ deadline: toIsoString(record.due_at ?? record.deadline),
707
+ closed_at: closedAt,
708
+ assignee,
709
+ source_owner: toNonEmptyString(record.owner),
710
+ author: toNonEmptyString(record.author) ?? toNonEmptyString(record.created_by) ?? runtime.author,
711
+ estimated_minutes: toEstimatedMinutes(record.estimated_minutes),
712
+ acceptance_criteria: toNonEmptyString(record.acceptance_criteria),
713
+ design: toNonEmptyString(record.design),
714
+ external_ref: toNonEmptyString(record.external_ref),
715
+ close_reason: toNonEmptyString(record.close_reason),
716
+ dependencies: toDependencies(record.dependencies, createdAt, runtime.settings.id_prefix, runtime.preserveSourceIds),
717
+ comments: toLogEntries(record.comments, createdAt, runtime.author),
718
+ notes: toLogEntries(record.notes, createdAt, runtime.author),
719
+ learnings: toLogEntries(record.learnings, createdAt, runtime.author),
720
+ files: toLinkedFiles(record.files),
721
+ tests: toLinkedTests(record.tests),
722
+ docs: toLinkedDocs(record.docs),
723
+ });
724
+ const afterDocument = runtime.sdk.canonicalDocument({
725
+ metadata: frontMatter,
726
+ body: buildBeadsImportedBody(record),
727
+ });
728
+ const existing = await runtime.sdk.locateItem(
729
+ runtime.pmRoot,
730
+ id,
731
+ runtime.settings.id_prefix,
732
+ runtime.settings.item_format,
733
+ runtime.typeRegistry.type_to_folder,
734
+ );
735
+ if (existing) {
736
+ return { warning: `beads_import_item_exists:${id}` };
737
+ }
738
+ const itemPath = runtime.sdk.getItemPath(runtime.pmRoot, type, id, "toon", runtime.typeRegistry.type_to_folder);
739
+ const commit = await runtime.sdk.commitImportedItem({
740
+ pmRoot: runtime.pmRoot,
741
+ id,
742
+ itemPath,
743
+ document: afterDocument,
744
+ author: runtime.author,
745
+ message: runtime.message,
746
+ settings: runtime.settings,
747
+ conflictWarningPrefix: "beads_import_lock_conflict",
748
+ });
749
+ return commit.committed ? { id, writeWarnings: commit.writeWarnings } : { warning: commit.conflictWarning };
750
+ }
751
+
599
752
  export async function runBeadsImport(options: BeadsImportOptions, global: GlobalOptions): Promise<BeadsImportResult> {
600
753
  const pmRoot = resolvePmRoot(process.cwd(), global.path);
601
754
  await ensureInitHasRun(pmRoot);
@@ -621,115 +774,35 @@ export async function runBeadsImport(options: BeadsImportOptions, global: Global
621
774
  const ids: string[] = [];
622
775
  let imported = 0;
623
776
  let skipped = 0;
777
+ const runtime: BeadsImportRuntime = {
778
+ sdk: beadsSdk,
779
+ pmRoot,
780
+ settings,
781
+ typeRegistry,
782
+ preserveSourceIds,
783
+ author,
784
+ message,
785
+ };
624
786
 
625
787
  for (let index = 0; index < lines.length; index += 1) {
626
788
  const lineNumber = index + 1;
627
- const line = lines[index].trim();
628
- if (line.length === 0) {
629
- continue;
630
- }
631
-
632
- let parsed: unknown;
633
- try {
634
- parsed = JSON.parse(line) as unknown;
635
- } catch {
636
- warnings.push(`beads_import_invalid_jsonl_line:${lineNumber}`);
637
- skipped += 1;
638
- continue;
639
- }
640
-
641
- if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
642
- warnings.push(`beads_import_invalid_record:${lineNumber}`);
643
- skipped += 1;
644
- continue;
645
- }
646
- const record = parsed as BeadsRecord;
647
-
648
- const title = toNonEmptyString(record.title);
649
- if (!title) {
650
- warnings.push(`beads_import_missing_title:${lineNumber}`);
651
- skipped += 1;
789
+ const parsed = parseBeadsLine(lines[index], lineNumber);
790
+ if (!parsed) {
652
791
  continue;
653
792
  }
654
-
655
- const createdAt = toIsoString(record.created_at) ?? nowIso();
656
- const updatedAt = toIsoString(record.updated_at) ?? createdAt;
657
- const id = toNonEmptyString(record.id)
658
- ? normalizeImportedId(toNonEmptyString(record.id) as string, settings.id_prefix, preserveSourceIds)
659
- : await generateItemId(pmRoot, settings.id_prefix);
660
- const typeMapping = toItemType(record.issue_type ?? record.type);
661
- const type = typeMapping.type;
662
- const closedAt = toIsoString(record.closed_at);
663
- const assignee = toNonEmptyString(record.assignee) ?? toNonEmptyString(record.owner);
664
- const frontMatter = normalizeFrontMatter({
665
- id,
666
- title,
667
- description: toNonEmptyString(record.description) ?? "",
668
- type,
669
- source_type: typeMapping.sourceType,
670
- status: toStatus(record.status),
671
- priority: toPriority(record.priority),
672
- tags: toTags(record.tags ?? record.labels),
673
- created_at: createdAt,
674
- updated_at: updatedAt,
675
- deadline: toIsoString(record.due_at ?? record.deadline),
676
- closed_at: closedAt,
677
- assignee,
678
- source_owner: toNonEmptyString(record.owner),
679
- author: toNonEmptyString(record.author) ?? toNonEmptyString(record.created_by) ?? author,
680
- estimated_minutes: toEstimatedMinutes(record.estimated_minutes),
681
- acceptance_criteria: toNonEmptyString(record.acceptance_criteria),
682
- design: toNonEmptyString(record.design),
683
- external_ref: toNonEmptyString(record.external_ref),
684
- close_reason: toNonEmptyString(record.close_reason),
685
- dependencies: toDependencies(record.dependencies, createdAt, settings.id_prefix, preserveSourceIds),
686
- comments: toLogEntries(record.comments, createdAt, author),
687
- notes: toLogEntries(record.notes, createdAt, author),
688
- learnings: toLogEntries(record.learnings, createdAt, author),
689
- files: toLinkedFiles(record.files),
690
- tests: toLinkedTests(record.tests),
691
- docs: toLinkedDocs(record.docs),
692
- });
693
- const rawBody = toNonEmptyString(record.body) ?? "";
694
- const design = toNonEmptyString(record.design);
695
- const externalRef = toNonEmptyString(record.external_ref);
696
- let finalBody = rawBody;
697
- if (design) {
698
- finalBody += (finalBody ? "\n\n" : "") + "## Design\n\n" + design;
699
- }
700
- if (externalRef) {
701
- finalBody += (finalBody ? "\n\n" : "") + "## External Reference\n" + externalRef;
702
- }
703
- const afterDocument = canonicalDocument({
704
- metadata: frontMatter,
705
- body: finalBody,
706
- });
707
- const existing = await locateItem(pmRoot, id, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);
708
- if (existing) {
709
- warnings.push(`beads_import_item_exists:${id}`);
793
+ if ("warning" in parsed) {
794
+ warnings.push(parsed.warning);
710
795
  skipped += 1;
711
796
  continue;
712
797
  }
713
- const itemPath = getItemPath(pmRoot, type, id, "toon", typeRegistry.type_to_folder);
714
-
715
- const commit = await commitImportedItem({
716
- pmRoot,
717
- id,
718
- itemPath,
719
- document: afterDocument,
720
- author,
721
- message,
722
- settings,
723
- conflictWarningPrefix: "beads_import_lock_conflict",
724
- });
725
- if (!commit.committed) {
726
- warnings.push(commit.conflictWarning);
798
+ const importedLine = await importBeadsRecord(parsed.record, lineNumber, runtime);
799
+ if ("warning" in importedLine) {
800
+ warnings.push(importedLine.warning);
727
801
  skipped += 1;
728
802
  continue;
729
803
  }
730
- warnings.push(...commit.writeWarnings);
731
-
732
- ids.push(id);
804
+ warnings.push(...importedLine.writeWarnings);
805
+ ids.push(importedLine.id);
733
806
  imported += 1;
734
807
  }
735
808
 
@@ -58,6 +58,24 @@ interface RuntimeBundle {
58
58
 
59
59
  let runtimeBundle: RuntimeBundle | null = null;
60
60
  let runtimeBundlePromise: Promise<RuntimeBundle> | null = null;
61
+ const REQUIRED_RUNTIME_SDK_EXPORTS = [
62
+ "runGuide",
63
+ "resolveGuideOutputFormat",
64
+ "renderGuideMarkdown",
65
+ "runCompletion",
66
+ "pathExists",
67
+ "getSettingsPath",
68
+ "resolvePmRoot",
69
+ "readSettings",
70
+ "resolveItemTypeRegistry",
71
+ "resolveRuntimeStatusRegistry",
72
+ "resolveRuntimeFieldRegistry",
73
+ "listAllFrontMatter",
74
+ "getActiveExtensionRegistrations",
75
+ "readStringOption",
76
+ "readBooleanOption",
77
+ "readCsvListOption",
78
+ ] as const satisfies ReadonlyArray<keyof RuntimeSdkModule>;
61
79
 
62
80
  async function ensureRuntimeBundle(): Promise<RuntimeBundle> {
63
81
  if (runtimeBundle) {
@@ -80,24 +98,7 @@ async function loadRuntimeBundle(): Promise<RuntimeBundle> {
80
98
  const modulePath = path.join(path.resolve(envRoot.trim()), "dist", "sdk", "runtime.js");
81
99
  try {
82
100
  const sdkLoaded = (await import(pathToFileURL(modulePath).href)) as Partial<RuntimeSdkModule>;
83
- if (
84
- typeof sdkLoaded.runGuide === "function" &&
85
- typeof sdkLoaded.resolveGuideOutputFormat === "function" &&
86
- typeof sdkLoaded.renderGuideMarkdown === "function" &&
87
- typeof sdkLoaded.runCompletion === "function" &&
88
- typeof sdkLoaded.pathExists === "function" &&
89
- typeof sdkLoaded.getSettingsPath === "function" &&
90
- typeof sdkLoaded.resolvePmRoot === "function" &&
91
- typeof sdkLoaded.readSettings === "function" &&
92
- typeof sdkLoaded.resolveItemTypeRegistry === "function" &&
93
- typeof sdkLoaded.resolveRuntimeStatusRegistry === "function" &&
94
- typeof sdkLoaded.resolveRuntimeFieldRegistry === "function" &&
95
- typeof sdkLoaded.listAllFrontMatter === "function" &&
96
- typeof sdkLoaded.getActiveExtensionRegistrations === "function" &&
97
- typeof sdkLoaded.readStringOption === "function" &&
98
- typeof sdkLoaded.readBooleanOption === "function" &&
99
- typeof sdkLoaded.readCsvListOption === "function"
100
- ) {
101
+ if (REQUIRED_RUNTIME_SDK_EXPORTS.every((key) => typeof sdkLoaded[key] === "function")) {
101
102
  return {
102
103
  sdk: sdkLoaded as RuntimeSdkModule,
103
104
  };
@@ -240,6 +241,45 @@ function collectTagsFromItems(items: Array<{ metadata: { tags?: string[] } }>):
240
241
  return [...tagSet].sort((left, right) => left.localeCompare(right));
241
242
  }
242
243
 
244
+ function readStringArrayResult(result: unknown, key: "tags" | "statuses" | "types"): string[] {
245
+ if (typeof result !== "object" || result === null) {
246
+ return [];
247
+ }
248
+ const value = (result as Record<string, unknown>)[key];
249
+ return Array.isArray(value) ? value.filter((entry): entry is string => typeof entry === "string") : [];
250
+ }
251
+
252
+ function renderJsonOrWords(payload: unknown, result: unknown, key: "tags" | "statuses" | "types"): string {
253
+ if (readPayloadFormat(payload) === "json") {
254
+ return `${JSON.stringify(result, null, 2)}\n`;
255
+ }
256
+ return `${readStringArrayResult(result, key).join(" ")}\n`;
257
+ }
258
+
259
+ function renderCompletionPackageOutput(payload: unknown, result: unknown): string | null {
260
+ if (readPayloadFormat(payload) === "json") {
261
+ return `${JSON.stringify(result, null, 2)}\n`;
262
+ }
263
+ if (typeof result === "object" && result !== null && typeof (result as { script?: unknown }).script === "string") {
264
+ const script = (result as { script: string }).script;
265
+ return script.endsWith("\n") ? script : `${script}\n`;
266
+ }
267
+ return null;
268
+ }
269
+
270
+ function renderGuidePackageOutput(bundle: RuntimeBundle, context: ServiceOverrideContext, result: unknown): string | null {
271
+ const options = (context.options ?? {}) as Record<string, unknown>;
272
+ const global = (context.global ?? {}) as GlobalOptions;
273
+ const outputFormat = bundle.sdk.resolveGuideOutputFormat(options, global);
274
+ if (outputFormat === "markdown") {
275
+ return `${bundle.sdk.renderGuideMarkdown(result)}\n`;
276
+ }
277
+ if (outputFormat === "json" || readPayloadFormat(context.payload) === "json") {
278
+ return `${JSON.stringify(result, null, 2)}\n`;
279
+ }
280
+ return null;
281
+ }
282
+
243
283
  export async function runGuidePackage(
244
284
  args: string[],
245
285
  options: Record<string, unknown>,
@@ -317,58 +357,25 @@ export async function runCompletionTypesPackage(global: GlobalOptions): Promise<
317
357
  }
318
358
 
319
359
  export function renderGuideShellPackageOutput(context: ServiceOverrideContext): string | null {
320
- if (!runtimeBundle) {
360
+ const bundle = runtimeBundle;
361
+ if (!bundle) {
321
362
  return null;
322
363
  }
323
364
  const result = readPayloadResult(context.payload);
324
365
  if (context.command === "guide") {
325
- const options = (context.options ?? {}) as Record<string, unknown>;
326
- const global = (context.global ?? {}) as GlobalOptions;
327
- const outputFormat = runtimeBundle.sdk.resolveGuideOutputFormat(options, global);
328
- if (outputFormat === "markdown") {
329
- return `${runtimeBundle.sdk.renderGuideMarkdown(result)}\n`;
330
- }
331
- if (outputFormat === "json" || readPayloadFormat(context.payload) === "json") {
332
- return `${JSON.stringify(result, null, 2)}\n`;
333
- }
334
- return null;
366
+ return renderGuidePackageOutput(bundle, context, result);
335
367
  }
336
368
  if (context.command === "completion") {
337
- if (readPayloadFormat(context.payload) === "json") {
338
- return `${JSON.stringify(result, null, 2)}\n`;
339
- }
340
- if (typeof result === "object" && result !== null && typeof (result as { script?: unknown }).script === "string") {
341
- const script = (result as { script: string }).script;
342
- return script.endsWith("\n") ? script : `${script}\n`;
343
- }
344
- return null;
369
+ return renderCompletionPackageOutput(context.payload, result);
345
370
  }
346
371
  if (context.command === "completion-tags") {
347
- if (readPayloadFormat(context.payload) === "json") {
348
- return `${JSON.stringify(result, null, 2)}\n`;
349
- }
350
- const tags = typeof result === "object" && result !== null && Array.isArray((result as { tags?: unknown }).tags)
351
- ? ((result as { tags: unknown[] }).tags.filter((entry): entry is string => typeof entry === "string"))
352
- : [];
353
- return `${tags.join(" ")}\n`;
372
+ return renderJsonOrWords(context.payload, result, "tags");
354
373
  }
355
374
  if (context.command === "completion-statuses") {
356
- if (readPayloadFormat(context.payload) === "json") {
357
- return `${JSON.stringify(result, null, 2)}\n`;
358
- }
359
- const statuses = typeof result === "object" && result !== null && Array.isArray((result as { statuses?: unknown }).statuses)
360
- ? ((result as { statuses: unknown[] }).statuses.filter((entry): entry is string => typeof entry === "string"))
361
- : [];
362
- return `${statuses.join(" ")}\n`;
375
+ return renderJsonOrWords(context.payload, result, "statuses");
363
376
  }
364
377
  if (context.command === "completion-types") {
365
- if (readPayloadFormat(context.payload) === "json") {
366
- return `${JSON.stringify(result, null, 2)}\n`;
367
- }
368
- const types = typeof result === "object" && result !== null && Array.isArray((result as { types?: unknown }).types)
369
- ? ((result as { types: unknown[] }).types.filter((entry): entry is string => typeof entry === "string"))
370
- : [];
371
- return `${types.join(" ")}\n`;
378
+ return renderJsonOrWords(context.payload, result, "types");
372
379
  }
373
380
  return null;
374
381
  }