@unbrained/pm-cli 2026.6.30 → 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 (628) hide show
  1. package/AGENTS.md +2 -0
  2. package/CHANGELOG.md +26 -0
  3. package/dist/cli/bootstrap-args.js +89 -79
  4. package/dist/cli/bootstrap-args.js.map +1 -1
  5. package/dist/cli/commander-usage.d.ts +2 -0
  6. package/dist/cli/commander-usage.js +58 -47
  7. package/dist/cli/commander-usage.js.map +1 -1
  8. package/dist/cli/commands/aggregate.js +102 -79
  9. package/dist/cli/commands/aggregate.js.map +1 -1
  10. package/dist/cli/commands/calendar.js +339 -303
  11. package/dist/cli/commands/calendar.js.map +1 -1
  12. package/dist/cli/commands/close-many.js +89 -68
  13. package/dist/cli/commands/close-many.js.map +1 -1
  14. package/dist/cli/commands/close.js +157 -129
  15. package/dist/cli/commands/close.js.map +1 -1
  16. package/dist/cli/commands/comments-audit.js +50 -42
  17. package/dist/cli/commands/comments-audit.js.map +1 -1
  18. package/dist/cli/commands/config.d.ts +2 -0
  19. package/dist/cli/commands/config.js +443 -879
  20. package/dist/cli/commands/config.js.map +1 -1
  21. package/dist/cli/commands/context.js +365 -287
  22. package/dist/cli/commands/context.js.map +1 -1
  23. package/dist/cli/commands/contracts.js +352 -238
  24. package/dist/cli/commands/contracts.js.map +1 -1
  25. package/dist/cli/commands/create.js +483 -434
  26. package/dist/cli/commands/create.js.map +1 -1
  27. package/dist/cli/commands/dedupe-audit.js +46 -39
  28. package/dist/cli/commands/dedupe-audit.js.map +1 -1
  29. package/dist/cli/commands/dedupe-merge.js +88 -69
  30. package/dist/cli/commands/dedupe-merge.js.map +1 -1
  31. package/dist/cli/commands/extension/bundled-catalog.js +59 -46
  32. package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
  33. package/dist/cli/commands/extension/doctor.js +129 -78
  34. package/dist/cli/commands/extension/doctor.js.map +1 -1
  35. package/dist/cli/commands/extension/managed-state.js +101 -57
  36. package/dist/cli/commands/extension/managed-state.js.map +1 -1
  37. package/dist/cli/commands/extension/scaffold.d.ts +7 -0
  38. package/dist/cli/commands/extension/scaffold.js +214 -186
  39. package/dist/cli/commands/extension/scaffold.js.map +1 -1
  40. package/dist/cli/commands/extension.d.ts +6 -1
  41. package/dist/cli/commands/extension.js +1034 -902
  42. package/dist/cli/commands/extension.js.map +1 -1
  43. package/dist/cli/commands/get.js +114 -81
  44. package/dist/cli/commands/get.js.map +1 -1
  45. package/dist/cli/commands/health.d.ts +17 -0
  46. package/dist/cli/commands/health.js +446 -307
  47. package/dist/cli/commands/health.js.map +1 -1
  48. package/dist/cli/commands/history-compact.js +209 -140
  49. package/dist/cli/commands/history-compact.js.map +1 -1
  50. package/dist/cli/commands/history-redact.js +162 -119
  51. package/dist/cli/commands/history-redact.js.map +1 -1
  52. package/dist/cli/commands/history-repair.js +120 -85
  53. package/dist/cli/commands/history-repair.js.map +1 -1
  54. package/dist/cli/commands/init.d.ts +8 -2
  55. package/dist/cli/commands/init.js +263 -162
  56. package/dist/cli/commands/init.js.map +1 -1
  57. package/dist/cli/commands/list-filter-shared.js +55 -48
  58. package/dist/cli/commands/list-filter-shared.js.map +1 -1
  59. package/dist/cli/commands/list.js +152 -102
  60. package/dist/cli/commands/list.js.map +1 -1
  61. package/dist/cli/commands/next.js +49 -32
  62. package/dist/cli/commands/next.js.map +1 -1
  63. package/dist/cli/commands/plan.js +373 -298
  64. package/dist/cli/commands/plan.js.map +1 -1
  65. package/dist/cli/commands/recurrence-parsers.js +43 -25
  66. package/dist/cli/commands/recurrence-parsers.js.map +1 -1
  67. package/dist/cli/commands/reindex.d.ts +21 -5
  68. package/dist/cli/commands/reindex.js +345 -205
  69. package/dist/cli/commands/reindex.js.map +1 -1
  70. package/dist/cli/commands/restore.d.ts +8 -7
  71. package/dist/cli/commands/restore.js +105 -69
  72. package/dist/cli/commands/restore.js.map +1 -1
  73. package/dist/cli/commands/schema.js +33 -30
  74. package/dist/cli/commands/schema.js.map +1 -1
  75. package/dist/cli/commands/search.d.ts +10 -2
  76. package/dist/cli/commands/search.js +595 -536
  77. package/dist/cli/commands/search.js.map +1 -1
  78. package/dist/cli/commands/telemetry.js +98 -87
  79. package/dist/cli/commands/telemetry.js.map +1 -1
  80. package/dist/cli/commands/test-all.js +237 -168
  81. package/dist/cli/commands/test-all.js.map +1 -1
  82. package/dist/cli/commands/test.d.ts +6 -5
  83. package/dist/cli/commands/test.js +530 -464
  84. package/dist/cli/commands/test.js.map +1 -1
  85. package/dist/cli/commands/update-many.js +57 -42
  86. package/dist/cli/commands/update-many.js.map +1 -1
  87. package/dist/cli/commands/update.d.ts +1 -1
  88. package/dist/cli/commands/update.js +764 -747
  89. package/dist/cli/commands/update.js.map +1 -1
  90. package/dist/cli/commands/validate.d.ts +18 -1
  91. package/dist/cli/commands/validate.js +466 -343
  92. package/dist/cli/commands/validate.js.map +1 -1
  93. package/dist/cli/error-guidance.js +399 -357
  94. package/dist/cli/error-guidance.js.map +1 -1
  95. package/dist/cli/extension-command-options.js +48 -21
  96. package/dist/cli/extension-command-options.js.map +1 -1
  97. package/dist/cli/main.d.ts +47 -0
  98. package/dist/cli/main.js +428 -341
  99. package/dist/cli/main.js.map +1 -1
  100. package/dist/cli/migration-gates.js +22 -45
  101. package/dist/cli/migration-gates.js.map +1 -1
  102. package/dist/cli/register-list-query.js +94 -105
  103. package/dist/cli/register-list-query.js.map +1 -1
  104. package/dist/cli/register-mutation.js +400 -416
  105. package/dist/cli/register-mutation.js.map +1 -1
  106. package/dist/cli/register-operations.js +86 -66
  107. package/dist/cli/register-operations.js.map +1 -1
  108. package/dist/cli/register-setup.js +120 -101
  109. package/dist/cli/register-setup.js.map +1 -1
  110. package/dist/cli/registration-helpers.js +117 -122
  111. package/dist/cli/registration-helpers.js.map +1 -1
  112. package/dist/cli-bundle/chunks/{activity-MVSEND6D.js → activity-CUC4JY3U.js} +9 -9
  113. package/dist/cli-bundle/chunks/activity-WEIEMM73.js +16 -0
  114. package/dist/cli-bundle/chunks/{aggregate-MOC4TR2G.js → aggregate-DKUTRY6R.js} +109 -85
  115. package/dist/cli-bundle/chunks/aggregate-DKUTRY6R.js.map +1 -0
  116. package/dist/cli-bundle/chunks/{aggregate-XJHLZQ5X.js → aggregate-SW5PNGCS.js} +108 -84
  117. package/dist/cli-bundle/chunks/{aggregate-XJHLZQ5X.js.map → aggregate-SW5PNGCS.js.map} +2 -2
  118. package/dist/cli-bundle/chunks/{append-KDHT4GHI.js → append-H32VOR2Y.js} +6 -6
  119. package/dist/cli-bundle/chunks/{append-LEDBAM3K.js → append-UBM632FK.js} +6 -6
  120. package/dist/cli-bundle/chunks/{chunk-Z55WX4IQ.js → chunk-2227673O.js} +158 -114
  121. package/dist/cli-bundle/chunks/chunk-2227673O.js.map +1 -0
  122. package/dist/cli-bundle/chunks/{chunk-SJZTPVFT.js → chunk-2ASNV4DH.js} +4 -4
  123. package/dist/cli-bundle/chunks/{chunk-JVQ7UOYC.js → chunk-2CHRYUXL.js} +2 -2
  124. package/dist/cli-bundle/chunks/{chunk-QE5UFCCO.js → chunk-2KWL5NPW.js} +42 -27
  125. package/dist/cli-bundle/chunks/chunk-2KWL5NPW.js.map +1 -0
  126. package/dist/cli-bundle/chunks/{chunk-ZEATCVAC.js → chunk-36UGKF4O.js} +21 -29
  127. package/dist/cli-bundle/chunks/chunk-36UGKF4O.js.map +7 -0
  128. package/dist/cli-bundle/chunks/{chunk-JZG5ADVE.js → chunk-3AZUFQK6.js} +1103 -963
  129. package/dist/cli-bundle/chunks/chunk-3AZUFQK6.js.map +1 -0
  130. package/dist/cli-bundle/chunks/{chunk-DRPF274X.js → chunk-3LCUASYG.js} +2 -2
  131. package/dist/cli-bundle/chunks/{chunk-JJ4SG243.js → chunk-3Q2HBMTI.js} +2 -2
  132. package/dist/cli-bundle/chunks/chunk-4BU75MF4.js +87 -0
  133. package/dist/cli-bundle/chunks/chunk-4BU75MF4.js.map +7 -0
  134. package/dist/cli-bundle/chunks/{chunk-GF7EAR22.js → chunk-4NUOWFBT.js} +109 -72
  135. package/dist/cli-bundle/chunks/chunk-4NUOWFBT.js.map +7 -0
  136. package/dist/cli-bundle/chunks/{chunk-TQ6E76BE.js → chunk-55XRYWEG.js} +6 -6
  137. package/dist/cli-bundle/chunks/{chunk-5IRVSKPS.js → chunk-5GVTFFTC.js} +150 -224
  138. package/dist/cli-bundle/chunks/chunk-5GVTFFTC.js.map +1 -0
  139. package/dist/cli-bundle/chunks/{chunk-CHRNYKNI.js → chunk-5PGBHRY3.js} +41 -26
  140. package/dist/cli-bundle/chunks/chunk-5PGBHRY3.js.map +7 -0
  141. package/dist/cli-bundle/chunks/{chunk-53ARXF2O.js → chunk-66Z3X7ZG.js} +261 -161
  142. package/dist/cli-bundle/chunks/chunk-66Z3X7ZG.js.map +7 -0
  143. package/dist/cli-bundle/chunks/{chunk-A3UNLXNJ.js → chunk-6ITZLD4T.js} +738 -688
  144. package/dist/cli-bundle/chunks/chunk-6ITZLD4T.js.map +7 -0
  145. package/dist/cli-bundle/chunks/{chunk-JTRKME24.js → chunk-6YCYF2AI.js} +262 -162
  146. package/dist/cli-bundle/chunks/chunk-6YCYF2AI.js.map +1 -0
  147. package/dist/cli-bundle/chunks/{chunk-RM6MHL6A.js → chunk-6ZMBJRDJ.js} +580 -467
  148. package/dist/cli-bundle/chunks/chunk-6ZMBJRDJ.js.map +7 -0
  149. package/dist/cli-bundle/chunks/{chunk-RPRW26NG.js → chunk-7MYWF4ZX.js} +110 -73
  150. package/dist/cli-bundle/chunks/chunk-7MYWF4ZX.js.map +1 -0
  151. package/dist/cli-bundle/chunks/{chunk-SNUK7H5J.js → chunk-7NSPKJUS.js} +716 -606
  152. package/dist/cli-bundle/chunks/chunk-7NSPKJUS.js.map +7 -0
  153. package/dist/cli-bundle/chunks/{chunk-KYDYQMNW.js → chunk-7TH5NMVB.js} +95 -53
  154. package/dist/cli-bundle/chunks/chunk-7TH5NMVB.js.map +7 -0
  155. package/dist/cli-bundle/chunks/{chunk-VD3LKZFX.js → chunk-7W4H4K26.js} +739 -689
  156. package/dist/cli-bundle/chunks/chunk-7W4H4K26.js.map +1 -0
  157. package/dist/cli-bundle/chunks/{chunk-IBU2LLWM.js → chunk-A6VOGKBA.js} +6 -6
  158. package/dist/cli-bundle/chunks/{chunk-MLHX6DN5.js → chunk-AIAIXG7I.js} +2 -2
  159. package/dist/cli-bundle/chunks/{chunk-NIBP3I7A.js → chunk-AJEBCRIY.js} +128 -126
  160. package/dist/cli-bundle/chunks/chunk-AJEBCRIY.js.map +1 -0
  161. package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js → chunk-B4O5S7I3.js} +79 -57
  162. package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js.map → chunk-B4O5S7I3.js.map} +2 -2
  163. package/dist/cli-bundle/chunks/{chunk-5ABGFWR4.js → chunk-BTX5MIQF.js} +2 -2
  164. package/dist/cli-bundle/chunks/chunk-BVZZN2LH.js +809 -0
  165. package/dist/cli-bundle/chunks/chunk-BVZZN2LH.js.map +7 -0
  166. package/dist/cli-bundle/chunks/{chunk-3JWQCLR5.js → chunk-CYBDUHNO.js} +3 -3
  167. package/dist/cli-bundle/chunks/{chunk-WFJZDUM7.js → chunk-CZPVDLD2.js} +4 -4
  168. package/dist/cli-bundle/chunks/{chunk-FDEVKXC4.js → chunk-EMPGXBUF.js} +22 -30
  169. package/dist/cli-bundle/chunks/chunk-EMPGXBUF.js.map +1 -0
  170. package/dist/cli-bundle/chunks/{chunk-HUYYMTGW.js → chunk-EUKTMRN3.js} +2 -2
  171. package/dist/cli-bundle/chunks/{chunk-EVWYAG46.js → chunk-FFOQHGNH.js} +6 -6
  172. package/dist/cli-bundle/chunks/{chunk-IF4ERU6A.js → chunk-GFMSLORL.js} +6 -6
  173. package/dist/cli-bundle/chunks/{chunk-IZQOJR2B.js → chunk-GRRG3MCT.js} +198 -189
  174. package/dist/cli-bundle/chunks/chunk-GRRG3MCT.js.map +7 -0
  175. package/dist/cli-bundle/chunks/{chunk-IDYCAK35.js → chunk-H4GRLYJS.js} +3 -3
  176. package/dist/cli-bundle/chunks/{chunk-VMY7MZEM.js → chunk-HQTPRV4D.js} +6 -6
  177. package/dist/cli-bundle/chunks/{chunk-CY5IJMUM.js → chunk-I66WE2HE.js} +712 -602
  178. package/dist/cli-bundle/chunks/chunk-I66WE2HE.js.map +1 -0
  179. package/dist/cli-bundle/chunks/{chunk-ZFIEEDTJ.js → chunk-IEEJQCZ4.js} +509 -363
  180. package/dist/cli-bundle/chunks/chunk-IEEJQCZ4.js.map +7 -0
  181. package/dist/cli-bundle/chunks/{chunk-DU66JUGT.js → chunk-IG5JYZGU.js} +488 -420
  182. package/dist/cli-bundle/chunks/chunk-IG5JYZGU.js.map +7 -0
  183. package/dist/cli-bundle/chunks/{chunk-7L6TXOOC.js → chunk-JMK5GCK2.js} +2 -2
  184. package/dist/cli-bundle/chunks/{chunk-LBH7UYKY.js → chunk-JXAUVO6X.js} +258 -169
  185. package/dist/cli-bundle/chunks/{chunk-LBH7UYKY.js.map → chunk-JXAUVO6X.js.map} +2 -2
  186. package/dist/cli-bundle/chunks/{chunk-KRASIL6M.js → chunk-K2VYLVX4.js} +2 -2
  187. package/dist/cli-bundle/chunks/{chunk-4YIMPANT.js → chunk-KCO2EAN5.js} +3 -3
  188. package/dist/cli-bundle/chunks/{chunk-T7ZMQI4J.js → chunk-KIYCOJ63.js} +198 -189
  189. package/dist/cli-bundle/chunks/chunk-KIYCOJ63.js.map +1 -0
  190. package/dist/cli-bundle/chunks/{chunk-D6USKAMA.js → chunk-KLXF7NCC.js} +2 -2
  191. package/dist/cli-bundle/chunks/{chunk-V3KLX7U7.js → chunk-KN3URLKS.js} +510 -364
  192. package/dist/cli-bundle/chunks/chunk-KN3URLKS.js.map +1 -0
  193. package/dist/cli-bundle/chunks/{chunk-OB3RJV5F.js → chunk-LRKMWUUV.js} +2 -2
  194. package/dist/cli-bundle/chunks/{chunk-74PUWBGN.js → chunk-LTRAF2D7.js} +3 -3
  195. package/dist/cli-bundle/chunks/{chunk-5T6WPLRO.js → chunk-MNBPX5JS.js} +394 -354
  196. package/dist/cli-bundle/chunks/chunk-MNBPX5JS.js.map +7 -0
  197. package/dist/cli-bundle/chunks/{chunk-4TXTVZL3.js → chunk-MRD4T5LF.js} +2 -2
  198. package/dist/cli-bundle/chunks/{chunk-E2Q2ULMR.js → chunk-N2JSWVWG.js} +4 -4
  199. package/dist/cli-bundle/chunks/{chunk-7WDETKGP.js → chunk-N3QCJS4M.js} +1105 -965
  200. package/dist/cli-bundle/chunks/chunk-N3QCJS4M.js.map +7 -0
  201. package/dist/cli-bundle/chunks/{chunk-KGQ3W65B.js → chunk-NRZS637N.js} +258 -169
  202. package/dist/cli-bundle/chunks/chunk-NRZS637N.js.map +1 -0
  203. package/dist/cli-bundle/chunks/chunk-OTUJZKGI.js +799 -0
  204. package/dist/cli-bundle/chunks/chunk-OTUJZKGI.js.map +1 -0
  205. package/dist/cli-bundle/chunks/{chunk-ZIE6WXJ2.js → chunk-Q6K2OACU.js} +153 -90
  206. package/dist/cli-bundle/chunks/chunk-Q6K2OACU.js.map +1 -0
  207. package/dist/cli-bundle/chunks/{chunk-K46GQ265.js → chunk-Q6NXOHS6.js} +489 -421
  208. package/dist/cli-bundle/chunks/chunk-Q6NXOHS6.js.map +1 -0
  209. package/dist/cli-bundle/chunks/{chunk-7RIJGN4R.js → chunk-QH3FSKRJ.js} +2 -2
  210. package/dist/cli-bundle/chunks/{chunk-UB3V5WUI.js → chunk-RM37OPYK.js} +394 -354
  211. package/dist/cli-bundle/chunks/chunk-RM37OPYK.js.map +1 -0
  212. package/dist/cli-bundle/chunks/{chunk-OUQ5JEFM.js → chunk-S62UANU7.js} +3 -3
  213. package/dist/cli-bundle/chunks/{chunk-NO6Y6FB2.js → chunk-SPM2XLWI.js} +37 -28
  214. package/dist/cli-bundle/chunks/chunk-SPM2XLWI.js.map +7 -0
  215. package/dist/cli-bundle/chunks/{chunk-DORJSBGJ.js → chunk-SYNKD3ZG.js} +127 -125
  216. package/dist/cli-bundle/chunks/chunk-SYNKD3ZG.js.map +7 -0
  217. package/dist/cli-bundle/chunks/{chunk-6YRAMXRS.js → chunk-SYVUU7EK.js} +581 -468
  218. package/dist/cli-bundle/chunks/chunk-SYVUU7EK.js.map +1 -0
  219. package/dist/cli-bundle/chunks/{chunk-D5LYZVGB.js → chunk-TPOFWBMY.js} +95 -53
  220. package/dist/cli-bundle/chunks/chunk-TPOFWBMY.js.map +1 -0
  221. package/dist/cli-bundle/chunks/{chunk-IHXXUIXS.js → chunk-TTHCEV5Q.js} +92 -77
  222. package/dist/cli-bundle/chunks/chunk-TTHCEV5Q.js.map +1 -0
  223. package/dist/cli-bundle/chunks/{chunk-DLDCPF5X.js → chunk-U2BEEM2X.js} +3 -3
  224. package/dist/cli-bundle/chunks/{chunk-Z5BM2FKQ.js → chunk-UGLU6Q2I.js} +91 -76
  225. package/dist/cli-bundle/chunks/chunk-UGLU6Q2I.js.map +7 -0
  226. package/dist/cli-bundle/chunks/{chunk-73PTKMAE.js → chunk-UT73HUPC.js} +3 -3
  227. package/dist/cli-bundle/chunks/{chunk-F7G53BOA.js → chunk-UTSH5GWX.js} +4 -4
  228. package/dist/cli-bundle/chunks/{chunk-AWN4PPH5.js → chunk-UWKEJMZU.js} +157 -113
  229. package/dist/cli-bundle/chunks/chunk-UWKEJMZU.js.map +7 -0
  230. package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js +84 -0
  231. package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js.map +1 -0
  232. package/dist/cli-bundle/chunks/{chunk-KTMMTOIP.js → chunk-W47SML5B.js} +152 -89
  233. package/dist/cli-bundle/chunks/chunk-W47SML5B.js.map +7 -0
  234. package/dist/cli-bundle/chunks/{chunk-UFKNF23C.js → chunk-WJAMWAHZ.js} +157 -118
  235. package/dist/cli-bundle/chunks/chunk-WJAMWAHZ.js.map +7 -0
  236. package/dist/cli-bundle/chunks/{chunk-HIBK6H4S.js → chunk-XCHUVHKU.js} +685 -544
  237. package/dist/cli-bundle/chunks/chunk-XCHUVHKU.js.map +1 -0
  238. package/dist/cli-bundle/chunks/{chunk-DJDXAU74.js → chunk-XEWQKDYZ.js} +685 -544
  239. package/dist/cli-bundle/chunks/chunk-XEWQKDYZ.js.map +7 -0
  240. package/dist/cli-bundle/chunks/{chunk-BOWQWXLI.js → chunk-XTHQWXVC.js} +158 -119
  241. package/dist/cli-bundle/chunks/chunk-XTHQWXVC.js.map +1 -0
  242. package/dist/cli-bundle/chunks/{chunk-6T5ZIWBS.js → chunk-XWGEMNBR.js} +150 -224
  243. package/dist/cli-bundle/chunks/chunk-XWGEMNBR.js.map +7 -0
  244. package/dist/cli-bundle/chunks/{chunk-JIP67N2K.js → chunk-Y4NRKBFW.js} +3 -3
  245. package/dist/cli-bundle/chunks/{chunk-WTRUDJ3R.js → chunk-YLZZ6T54.js} +38 -29
  246. package/dist/cli-bundle/chunks/chunk-YLZZ6T54.js.map +1 -0
  247. package/dist/cli-bundle/chunks/{chunk-FBZ5XAAF.js → chunk-YPKFV2JR.js} +6 -6
  248. package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js → chunk-Z4DGFQDH.js} +80 -58
  249. package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js.map → chunk-Z4DGFQDH.js.map} +1 -1
  250. package/dist/cli-bundle/chunks/{chunk-BN3CWK6G.js → chunk-ZNHEYCDD.js} +2 -2
  251. package/dist/cli-bundle/chunks/{chunk-YEDFE4DC.js → chunk-ZNT7KEWE.js} +2 -2
  252. package/dist/cli-bundle/chunks/{claim-HMCLSLUE.js → claim-SENTPZBN.js} +8 -8
  253. package/dist/cli-bundle/chunks/{claim-6NINZYB3.js → claim-Z7MEQCBT.js} +8 -8
  254. package/dist/cli-bundle/chunks/{close-OP3LK7Z2.js → close-424MX4CU.js} +7 -7
  255. package/dist/cli-bundle/chunks/close-YCWQQPDS.js +14 -0
  256. package/dist/cli-bundle/chunks/{close-many-CXJBOWWY.js → close-many-2IV4J2TR.js} +103 -82
  257. package/dist/cli-bundle/chunks/close-many-2IV4J2TR.js.map +1 -0
  258. package/dist/cli-bundle/chunks/{close-many-BFMP6HHK.js → close-many-SWY34BII.js} +102 -81
  259. package/dist/cli-bundle/chunks/close-many-SWY34BII.js.map +7 -0
  260. package/dist/cli-bundle/chunks/{comments-ETHABIY6.js → comments-4FGNTSNV.js} +8 -8
  261. package/dist/cli-bundle/chunks/{comments-MU2WMBUY.js → comments-7YS5MY5X.js} +8 -8
  262. package/dist/cli-bundle/chunks/config-BZJKK7FZ.js +1062 -0
  263. package/dist/cli-bundle/chunks/config-BZJKK7FZ.js.map +1 -0
  264. package/dist/cli-bundle/chunks/config-G74GISC4.js +1072 -0
  265. package/dist/cli-bundle/chunks/config-G74GISC4.js.map +7 -0
  266. package/dist/cli-bundle/chunks/{context-7ZEZV3BV.js → context-LHVKJSPJ.js} +12 -12
  267. package/dist/cli-bundle/chunks/{context-XDI4DKKT.js → context-ZQY54JNS.js} +12 -12
  268. package/dist/cli-bundle/chunks/{contracts-SMOAN5NF.js → contracts-CP2EZJC7.js} +320 -199
  269. package/dist/cli-bundle/chunks/contracts-CP2EZJC7.js.map +7 -0
  270. package/dist/cli-bundle/chunks/{contracts-KP4QAGVW.js → contracts-FIZLMP7O.js} +321 -200
  271. package/dist/cli-bundle/chunks/contracts-FIZLMP7O.js.map +1 -0
  272. package/dist/cli-bundle/chunks/{copy-JJ3KOQW2.js → copy-GYNQQPW2.js} +5 -5
  273. package/dist/cli-bundle/chunks/{copy-CWM6SBY6.js → copy-TLW7JTQT.js} +5 -5
  274. package/dist/cli-bundle/chunks/{create-J5Q2ELZT.js → create-VSKYSOCD.js} +12 -12
  275. package/dist/cli-bundle/chunks/create-XTMAPS7I.js +28 -0
  276. package/dist/cli-bundle/chunks/{delete-2GZLQEUQ.js → delete-4W5JYCEG.js} +5 -5
  277. package/dist/cli-bundle/chunks/{delete-OOQS4KVD.js → delete-ANTOTI2I.js} +5 -5
  278. package/dist/cli-bundle/chunks/{deps-IF4IGL4R.js → deps-HPPE6MJN.js} +5 -5
  279. package/dist/cli-bundle/chunks/{deps-ZVGGCRR6.js → deps-ZQZN54EZ.js} +5 -5
  280. package/dist/cli-bundle/chunks/{docs-NFTBCQQC.js → docs-RPOVFMP3.js} +7 -7
  281. package/dist/cli-bundle/chunks/{docs-2TIFR62T.js → docs-XJNYBJGE.js} +7 -7
  282. package/dist/cli-bundle/chunks/{eval-2F6EH4XN.js → eval-DM6JBZTS.js} +10 -10
  283. package/dist/cli-bundle/chunks/{eval-PFKXQR3B.js → eval-RFBI5FGS.js} +10 -10
  284. package/dist/cli-bundle/chunks/{extension-GMVOIP4O.js → extension-B3YY4WY5.js} +11 -10
  285. package/dist/cli-bundle/chunks/{extension-3LRYX7SW.js → extension-TTSEFQTS.js} +11 -10
  286. package/dist/cli-bundle/chunks/{files-DF3HO6XK.js → files-5D65CHGE.js} +7 -7
  287. package/dist/cli-bundle/chunks/{files-T5ODMETM.js → files-GPIG77EN.js} +7 -7
  288. package/dist/cli-bundle/chunks/{focus-MY5ARIEK.js → focus-C3PEJV2C.js} +6 -6
  289. package/dist/cli-bundle/chunks/{focus-DLXKK4AH.js → focus-ZHN7WIGX.js} +6 -6
  290. package/dist/cli-bundle/chunks/{gc-MDGRR2SU.js → gc-D4JQ6OWN.js} +3 -3
  291. package/dist/cli-bundle/chunks/{gc-FULIVYR4.js → gc-VZIXDL32.js} +3 -3
  292. package/dist/cli-bundle/chunks/{get-VYPIICPC.js → get-GIBRUUOP.js} +121 -81
  293. package/dist/cli-bundle/chunks/get-GIBRUUOP.js.map +1 -0
  294. package/dist/cli-bundle/chunks/{get-AWK324RS.js → get-IOVAN6RU.js} +120 -80
  295. package/dist/cli-bundle/chunks/get-IOVAN6RU.js.map +7 -0
  296. package/dist/cli-bundle/chunks/{health-Q66C43GN.js → health-L2U3AFKV.js} +437 -264
  297. package/dist/cli-bundle/chunks/health-L2U3AFKV.js.map +1 -0
  298. package/dist/cli-bundle/chunks/{health-FBCVZGSX.js → health-MM7AWXYF.js} +436 -263
  299. package/dist/cli-bundle/chunks/health-MM7AWXYF.js.map +7 -0
  300. package/dist/cli-bundle/chunks/history-DD7L7BNL.js +18 -0
  301. package/dist/cli-bundle/chunks/{history-X4OSES6K.js → history-IL7XCEX2.js} +8 -8
  302. package/dist/cli-bundle/chunks/{history-compact-2GHT32UX.js → history-compact-HALOTOU7.js} +214 -135
  303. package/dist/cli-bundle/chunks/history-compact-HALOTOU7.js.map +1 -0
  304. package/dist/cli-bundle/chunks/{history-compact-WLCQEKXS.js → history-compact-MV25P7DM.js} +213 -134
  305. package/dist/cli-bundle/chunks/history-compact-MV25P7DM.js.map +7 -0
  306. package/dist/cli-bundle/chunks/history-redact-IX4YEWMY.js +19 -0
  307. package/dist/cli-bundle/chunks/{history-redact-45YW65BK.js → history-redact-VYCWQFK7.js} +9 -9
  308. package/dist/cli-bundle/chunks/{history-repair-FY75IC26.js → history-repair-44MODPQF.js} +124 -84
  309. package/dist/cli-bundle/chunks/history-repair-44MODPQF.js.map +1 -0
  310. package/dist/cli-bundle/chunks/{history-repair-GABSDSVD.js → history-repair-CPNAOCNF.js} +123 -83
  311. package/dist/cli-bundle/chunks/history-repair-CPNAOCNF.js.map +7 -0
  312. package/dist/cli-bundle/chunks/{init-KO7CGIRQ.js → init-F27NHENZ.js} +12 -11
  313. package/dist/cli-bundle/chunks/init-HHVQQP6C.js +22 -0
  314. package/dist/cli-bundle/chunks/{learnings-LHZT5BHW.js → learnings-HJVDQIGY.js} +8 -8
  315. package/dist/cli-bundle/chunks/{learnings-3F7YLI45.js → learnings-XSFSUUWK.js} +8 -8
  316. package/dist/cli-bundle/chunks/{list-Y6AU5BJS.js → list-HPMEKCAA.js} +8 -8
  317. package/dist/cli-bundle/chunks/{list-ROT7JF62.js → list-VMPWTURB.js} +8 -8
  318. package/dist/cli-bundle/chunks/{next-66BJB4N2.js → next-ETXF2ZCN.js} +59 -37
  319. package/dist/cli-bundle/chunks/next-ETXF2ZCN.js.map +7 -0
  320. package/dist/cli-bundle/chunks/{next-N5MWJTBY.js → next-QM6YJIIS.js} +60 -38
  321. package/dist/cli-bundle/chunks/next-QM6YJIIS.js.map +1 -0
  322. package/dist/cli-bundle/chunks/{notes-FW6YFLND.js → notes-GDZIKGR6.js} +8 -8
  323. package/dist/cli-bundle/chunks/{notes-EVJZ3VAB.js → notes-WDDBPC4D.js} +8 -8
  324. package/dist/cli-bundle/chunks/{plan-ZHKZ7JVF.js → plan-BGDR73Z6.js} +373 -279
  325. package/dist/cli-bundle/chunks/plan-BGDR73Z6.js.map +1 -0
  326. package/dist/cli-bundle/chunks/{plan-DQ7G4EDC.js → plan-C5IMM335.js} +372 -278
  327. package/dist/cli-bundle/chunks/plan-C5IMM335.js.map +7 -0
  328. package/dist/cli-bundle/chunks/{profile-CHAW6SEA.js → profile-CCOKZ2IQ.js} +9 -9
  329. package/dist/cli-bundle/chunks/{profile-UPZGCDOG.js → profile-HUCENIEQ.js} +9 -9
  330. package/dist/cli-bundle/chunks/{register-list-query-Y2VRHPCL.js → register-list-query-ROSNIL52.js} +80 -83
  331. package/dist/cli-bundle/chunks/register-list-query-ROSNIL52.js.map +1 -0
  332. package/dist/cli-bundle/chunks/{register-list-query-KY6Z6WV7.js → register-list-query-XN4ZRHSV.js} +79 -82
  333. package/dist/cli-bundle/chunks/register-list-query-XN4ZRHSV.js.map +7 -0
  334. package/dist/cli-bundle/chunks/{register-mutation-PCARIGZS.js → register-mutation-CFSB2MS3.js} +406 -385
  335. package/dist/cli-bundle/chunks/register-mutation-CFSB2MS3.js.map +1 -0
  336. package/dist/cli-bundle/chunks/{register-mutation-N6AYSKPM.js → register-mutation-KRLAHEL2.js} +405 -384
  337. package/dist/cli-bundle/chunks/register-mutation-KRLAHEL2.js.map +7 -0
  338. package/dist/cli-bundle/chunks/{register-operations-L6CYTOIH.js → register-operations-4PASGJDB.js} +112 -93
  339. package/dist/cli-bundle/chunks/register-operations-4PASGJDB.js.map +7 -0
  340. package/dist/cli-bundle/chunks/{register-operations-YAT6FUUB.js → register-operations-MBN4KGUM.js} +113 -94
  341. package/dist/cli-bundle/chunks/register-operations-MBN4KGUM.js.map +1 -0
  342. package/dist/cli-bundle/chunks/{register-setup-N7UGXYJC.js → register-setup-VIAWYFP5.js} +129 -104
  343. package/dist/cli-bundle/chunks/register-setup-VIAWYFP5.js.map +1 -0
  344. package/dist/cli-bundle/chunks/{register-setup-MPANILQF.js → register-setup-ZCGKHDKL.js} +128 -103
  345. package/dist/cli-bundle/chunks/register-setup-ZCGKHDKL.js.map +7 -0
  346. package/dist/cli-bundle/chunks/{restore-DKMCLPI5.js → restore-4CBWUMCX.js} +9 -9
  347. package/dist/cli-bundle/chunks/restore-5UEAGG3W.js +17 -0
  348. package/dist/cli-bundle/chunks/{scheduling-shortcuts-3F4QUEDH.js → scheduling-shortcuts-6VFKNKCM.js} +12 -12
  349. package/dist/cli-bundle/chunks/{scheduling-shortcuts-BNZLQK36.js → scheduling-shortcuts-ERHCVTEM.js} +12 -12
  350. package/dist/cli-bundle/chunks/{schema-OLT6LVKH.js → schema-TDGK6N3I.js} +7 -7
  351. package/dist/cli-bundle/chunks/{schema-XJXKJQF5.js → schema-UE5KKAUX.js} +7 -7
  352. package/dist/cli-bundle/chunks/{search-KP6H7COV.js → search-FP7MEU4S.js} +10 -10
  353. package/dist/cli-bundle/chunks/{search-CX5UMV4H.js → search-K4CFLQ5S.js} +10 -10
  354. package/dist/cli-bundle/chunks/{stats-QZUG6MX5.js → stats-NJJCALEZ.js} +6 -6
  355. package/dist/cli-bundle/chunks/{stats-7XW4OEMK.js → stats-XT6QRKQY.js} +6 -6
  356. package/dist/cli-bundle/chunks/{telemetry-DIFPXCAT.js → telemetry-5SQ5UDXC.js} +84 -70
  357. package/dist/cli-bundle/chunks/telemetry-5SQ5UDXC.js.map +7 -0
  358. package/dist/cli-bundle/chunks/{telemetry-WTYFUPRL.js → telemetry-HVXFZA2U.js} +85 -71
  359. package/dist/cli-bundle/chunks/telemetry-HVXFZA2U.js.map +1 -0
  360. package/dist/cli-bundle/chunks/{test-QNDXZQCW.js → test-UFSJ5YIO.js} +15 -14
  361. package/dist/cli-bundle/chunks/{test-HU2BS7EY.js → test-YCDAUBWF.js} +15 -14
  362. package/dist/cli-bundle/chunks/test-all-2BWKY3GQ.js +427 -0
  363. package/dist/cli-bundle/chunks/test-all-2BWKY3GQ.js.map +1 -0
  364. package/dist/cli-bundle/chunks/test-all-PM7UYN42.js +430 -0
  365. package/dist/cli-bundle/chunks/test-all-PM7UYN42.js.map +7 -0
  366. package/dist/cli-bundle/chunks/{test-runs-CA6K32RD.js → test-runs-FK5E75AA.js} +185 -147
  367. package/dist/cli-bundle/chunks/test-runs-FK5E75AA.js.map +1 -0
  368. package/dist/cli-bundle/chunks/{test-runs-LANLLPVO.js → test-runs-H4TGWGRN.js} +184 -146
  369. package/dist/cli-bundle/chunks/test-runs-H4TGWGRN.js.map +7 -0
  370. package/dist/cli-bundle/chunks/update-MTCFES6X.js +24 -0
  371. package/dist/cli-bundle/chunks/{update-DJKWLBWJ.js → update-Y5WQVT5O.js} +15 -15
  372. package/dist/cli-bundle/chunks/{update-many-LU3SCNK5.js → update-many-6YAYYRLE.js} +83 -68
  373. package/dist/cli-bundle/chunks/{update-many-LU3SCNK5.js.map → update-many-6YAYYRLE.js.map} +2 -2
  374. package/dist/cli-bundle/chunks/{update-many-VW5DGF3S.js → update-many-JTKKSA7Y.js} +84 -69
  375. package/dist/cli-bundle/chunks/{update-many-VW5DGF3S.js.map → update-many-JTKKSA7Y.js.map} +1 -1
  376. package/dist/cli-bundle/chunks/{upgrade-ICXY244R.js → upgrade-DTAHZ236.js} +11 -10
  377. package/dist/cli-bundle/chunks/{upgrade-ICXY244R.js.map → upgrade-DTAHZ236.js.map} +1 -1
  378. package/dist/cli-bundle/chunks/{upgrade-77FRUAXN.js → upgrade-JUDU7YL4.js} +13 -12
  379. package/dist/cli-bundle/chunks/{upgrade-77FRUAXN.js.map → upgrade-JUDU7YL4.js.map} +1 -1
  380. package/dist/cli-bundle/chunks/{validate-2G566PKQ.js → validate-732RWS5W.js} +440 -319
  381. package/dist/cli-bundle/chunks/validate-732RWS5W.js.map +7 -0
  382. package/dist/cli-bundle/chunks/{validate-BDPVXHHH.js → validate-W7H5TEDC.js} +441 -320
  383. package/dist/cli-bundle/chunks/validate-W7H5TEDC.js.map +1 -0
  384. package/dist/cli-bundle/main.js +986 -1500
  385. package/dist/cli-bundle/main.js.map +4 -4
  386. package/dist/core/config/nested-settings.js +89 -67
  387. package/dist/core/config/nested-settings.js.map +1 -1
  388. package/dist/core/extensions/activation-summary-markdown.js +23 -12
  389. package/dist/core/extensions/activation-summary-markdown.js.map +1 -1
  390. package/dist/core/extensions/extension-policy.d.ts +18 -3
  391. package/dist/core/extensions/extension-policy.js +116 -106
  392. package/dist/core/extensions/extension-policy.js.map +1 -1
  393. package/dist/core/extensions/loader.js +310 -232
  394. package/dist/core/extensions/loader.js.map +1 -1
  395. package/dist/core/governance/metadata-coverage.js +20 -28
  396. package/dist/core/governance/metadata-coverage.js.map +1 -1
  397. package/dist/core/history/drift-scan.js +93 -81
  398. package/dist/core/history/drift-scan.js.map +1 -1
  399. package/dist/core/item/item-format.js +523 -410
  400. package/dist/core/item/item-format.js.map +1 -1
  401. package/dist/core/item/item-type-definition.js +14 -14
  402. package/dist/core/item/item-type-definition.js.map +1 -1
  403. package/dist/core/item/type-registry.js +87 -82
  404. package/dist/core/item/type-registry.js.map +1 -1
  405. package/dist/core/output/mutation-projection.js +42 -26
  406. package/dist/core/output/mutation-projection.js.map +1 -1
  407. package/dist/core/schema/runtime-schema.js +34 -28
  408. package/dist/core/schema/runtime-schema.js.map +1 -1
  409. package/dist/core/search/semantic-defaults.js +64 -37
  410. package/dist/core/search/semantic-defaults.js.map +1 -1
  411. package/dist/core/search/vector-stores.js +32 -17
  412. package/dist/core/search/vector-stores.js.map +1 -1
  413. package/dist/core/sentry/helpers.js +31 -28
  414. package/dist/core/sentry/helpers.js.map +1 -1
  415. package/dist/core/sentry/instrument.js +54 -43
  416. package/dist/core/sentry/instrument.js.map +1 -1
  417. package/dist/core/store/front-matter-cache.js +239 -153
  418. package/dist/core/store/front-matter-cache.js.map +1 -1
  419. package/dist/core/store/item-store.js +33 -26
  420. package/dist/core/store/item-store.js.map +1 -1
  421. package/dist/core/store/settings.js +247 -203
  422. package/dist/core/store/settings.js.map +1 -1
  423. package/dist/core/test/background-runs.js +189 -160
  424. package/dist/core/test/background-runs.js.map +1 -1
  425. package/dist/mcp/server.js +387 -367
  426. package/dist/mcp/server.js.map +1 -1
  427. package/dist/sdk/cli-contracts/flag-contracts.js +111 -180
  428. package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
  429. package/dist/sdk/cli-contracts/tool-schema.js +76 -45
  430. package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
  431. package/dist/sdk/compose.d.ts +4 -1
  432. package/dist/sdk/compose.js +181 -115
  433. package/dist/sdk/compose.js.map +1 -1
  434. package/docs/RELEASING.md +2 -3
  435. package/package.json +2 -2
  436. package/packages/pm-beads/extensions/beads/runtime.ts +240 -167
  437. package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +65 -58
  438. package/packages/pm-todos/extensions/todos/runtime.ts +65 -42
  439. package/dist/cli-bundle/chunks/activity-EJBMXUBH.js +0 -16
  440. package/dist/cli-bundle/chunks/aggregate-MOC4TR2G.js.map +0 -1
  441. package/dist/cli-bundle/chunks/chunk-53ARXF2O.js.map +0 -7
  442. package/dist/cli-bundle/chunks/chunk-5IRVSKPS.js.map +0 -1
  443. package/dist/cli-bundle/chunks/chunk-5T6WPLRO.js.map +0 -7
  444. package/dist/cli-bundle/chunks/chunk-6T5ZIWBS.js.map +0 -7
  445. package/dist/cli-bundle/chunks/chunk-6YRAMXRS.js.map +0 -1
  446. package/dist/cli-bundle/chunks/chunk-7WDETKGP.js.map +0 -7
  447. package/dist/cli-bundle/chunks/chunk-A3UNLXNJ.js.map +0 -7
  448. package/dist/cli-bundle/chunks/chunk-AWN4PPH5.js.map +0 -7
  449. package/dist/cli-bundle/chunks/chunk-BOWQWXLI.js.map +0 -1
  450. package/dist/cli-bundle/chunks/chunk-C2KCIZKZ.js +0 -115
  451. package/dist/cli-bundle/chunks/chunk-C2KCIZKZ.js.map +0 -1
  452. package/dist/cli-bundle/chunks/chunk-CHRNYKNI.js.map +0 -7
  453. package/dist/cli-bundle/chunks/chunk-CY5IJMUM.js.map +0 -1
  454. package/dist/cli-bundle/chunks/chunk-D5LYZVGB.js.map +0 -1
  455. package/dist/cli-bundle/chunks/chunk-DJDXAU74.js.map +0 -7
  456. package/dist/cli-bundle/chunks/chunk-DORJSBGJ.js.map +0 -7
  457. package/dist/cli-bundle/chunks/chunk-DU66JUGT.js.map +0 -7
  458. package/dist/cli-bundle/chunks/chunk-F6VH3LFC.js +0 -118
  459. package/dist/cli-bundle/chunks/chunk-F6VH3LFC.js.map +0 -7
  460. package/dist/cli-bundle/chunks/chunk-FDEVKXC4.js.map +0 -1
  461. package/dist/cli-bundle/chunks/chunk-GF7EAR22.js.map +0 -7
  462. package/dist/cli-bundle/chunks/chunk-HIBK6H4S.js.map +0 -1
  463. package/dist/cli-bundle/chunks/chunk-IHXXUIXS.js.map +0 -1
  464. package/dist/cli-bundle/chunks/chunk-ISEKN64V.js +0 -35
  465. package/dist/cli-bundle/chunks/chunk-ISEKN64V.js.map +0 -7
  466. package/dist/cli-bundle/chunks/chunk-IZQOJR2B.js.map +0 -7
  467. package/dist/cli-bundle/chunks/chunk-JTRKME24.js.map +0 -1
  468. package/dist/cli-bundle/chunks/chunk-JZG5ADVE.js.map +0 -1
  469. package/dist/cli-bundle/chunks/chunk-K46GQ265.js.map +0 -1
  470. package/dist/cli-bundle/chunks/chunk-KGQ3W65B.js.map +0 -1
  471. package/dist/cli-bundle/chunks/chunk-KTMMTOIP.js.map +0 -7
  472. package/dist/cli-bundle/chunks/chunk-KYDYQMNW.js.map +0 -7
  473. package/dist/cli-bundle/chunks/chunk-NIBP3I7A.js.map +0 -1
  474. package/dist/cli-bundle/chunks/chunk-NO6Y6FB2.js.map +0 -7
  475. package/dist/cli-bundle/chunks/chunk-QE5UFCCO.js.map +0 -1
  476. package/dist/cli-bundle/chunks/chunk-RM6MHL6A.js.map +0 -7
  477. package/dist/cli-bundle/chunks/chunk-RPRW26NG.js.map +0 -1
  478. package/dist/cli-bundle/chunks/chunk-SNUK7H5J.js.map +0 -7
  479. package/dist/cli-bundle/chunks/chunk-T7ZMQI4J.js.map +0 -1
  480. package/dist/cli-bundle/chunks/chunk-UB3V5WUI.js.map +0 -1
  481. package/dist/cli-bundle/chunks/chunk-UFKNF23C.js.map +0 -7
  482. package/dist/cli-bundle/chunks/chunk-V3KLX7U7.js.map +0 -1
  483. package/dist/cli-bundle/chunks/chunk-VD3LKZFX.js.map +0 -1
  484. package/dist/cli-bundle/chunks/chunk-W2VMLL5S.js +0 -32
  485. package/dist/cli-bundle/chunks/chunk-W2VMLL5S.js.map +0 -1
  486. package/dist/cli-bundle/chunks/chunk-WTRUDJ3R.js.map +0 -1
  487. package/dist/cli-bundle/chunks/chunk-Z55WX4IQ.js.map +0 -1
  488. package/dist/cli-bundle/chunks/chunk-Z5BM2FKQ.js.map +0 -7
  489. package/dist/cli-bundle/chunks/chunk-ZEATCVAC.js.map +0 -7
  490. package/dist/cli-bundle/chunks/chunk-ZFIEEDTJ.js.map +0 -7
  491. package/dist/cli-bundle/chunks/chunk-ZIE6WXJ2.js.map +0 -1
  492. package/dist/cli-bundle/chunks/close-37KEHLYM.js +0 -14
  493. package/dist/cli-bundle/chunks/close-many-BFMP6HHK.js.map +0 -7
  494. package/dist/cli-bundle/chunks/close-many-CXJBOWWY.js.map +0 -1
  495. package/dist/cli-bundle/chunks/config-FIXJZEQK.js +0 -1541
  496. package/dist/cli-bundle/chunks/config-FIXJZEQK.js.map +0 -7
  497. package/dist/cli-bundle/chunks/config-X3ZVCUUG.js +0 -1531
  498. package/dist/cli-bundle/chunks/config-X3ZVCUUG.js.map +0 -1
  499. package/dist/cli-bundle/chunks/contracts-KP4QAGVW.js.map +0 -1
  500. package/dist/cli-bundle/chunks/contracts-SMOAN5NF.js.map +0 -7
  501. package/dist/cli-bundle/chunks/create-DFMNBKBS.js +0 -28
  502. package/dist/cli-bundle/chunks/get-AWK324RS.js.map +0 -7
  503. package/dist/cli-bundle/chunks/get-VYPIICPC.js.map +0 -1
  504. package/dist/cli-bundle/chunks/health-FBCVZGSX.js.map +0 -7
  505. package/dist/cli-bundle/chunks/health-Q66C43GN.js.map +0 -1
  506. package/dist/cli-bundle/chunks/history-5XUSLAJA.js +0 -18
  507. package/dist/cli-bundle/chunks/history-compact-2GHT32UX.js.map +0 -1
  508. package/dist/cli-bundle/chunks/history-compact-WLCQEKXS.js.map +0 -7
  509. package/dist/cli-bundle/chunks/history-redact-BVHWDXPR.js +0 -19
  510. package/dist/cli-bundle/chunks/history-repair-FY75IC26.js.map +0 -1
  511. package/dist/cli-bundle/chunks/history-repair-GABSDSVD.js.map +0 -7
  512. package/dist/cli-bundle/chunks/init-TRYJELH4.js +0 -21
  513. package/dist/cli-bundle/chunks/next-66BJB4N2.js.map +0 -7
  514. package/dist/cli-bundle/chunks/next-N5MWJTBY.js.map +0 -1
  515. package/dist/cli-bundle/chunks/plan-DQ7G4EDC.js.map +0 -7
  516. package/dist/cli-bundle/chunks/plan-ZHKZ7JVF.js.map +0 -1
  517. package/dist/cli-bundle/chunks/register-list-query-KY6Z6WV7.js.map +0 -7
  518. package/dist/cli-bundle/chunks/register-list-query-Y2VRHPCL.js.map +0 -1
  519. package/dist/cli-bundle/chunks/register-mutation-N6AYSKPM.js.map +0 -7
  520. package/dist/cli-bundle/chunks/register-mutation-PCARIGZS.js.map +0 -1
  521. package/dist/cli-bundle/chunks/register-operations-L6CYTOIH.js.map +0 -7
  522. package/dist/cli-bundle/chunks/register-operations-YAT6FUUB.js.map +0 -1
  523. package/dist/cli-bundle/chunks/register-setup-MPANILQF.js.map +0 -7
  524. package/dist/cli-bundle/chunks/register-setup-N7UGXYJC.js.map +0 -1
  525. package/dist/cli-bundle/chunks/restore-IRAKSWIW.js +0 -17
  526. package/dist/cli-bundle/chunks/telemetry-DIFPXCAT.js.map +0 -7
  527. package/dist/cli-bundle/chunks/telemetry-WTYFUPRL.js.map +0 -1
  528. package/dist/cli-bundle/chunks/test-all-PZTBLLQ6.js +0 -360
  529. package/dist/cli-bundle/chunks/test-all-PZTBLLQ6.js.map +0 -7
  530. package/dist/cli-bundle/chunks/test-all-XLPI4USF.js +0 -357
  531. package/dist/cli-bundle/chunks/test-all-XLPI4USF.js.map +0 -1
  532. package/dist/cli-bundle/chunks/test-runs-CA6K32RD.js.map +0 -1
  533. package/dist/cli-bundle/chunks/test-runs-LANLLPVO.js.map +0 -7
  534. package/dist/cli-bundle/chunks/update-UXDLTEOZ.js +0 -24
  535. package/dist/cli-bundle/chunks/validate-2G566PKQ.js.map +0 -7
  536. package/dist/cli-bundle/chunks/validate-BDPVXHHH.js.map +0 -1
  537. /package/dist/cli-bundle/chunks/{activity-MVSEND6D.js.map → activity-CUC4JY3U.js.map} +0 -0
  538. /package/dist/cli-bundle/chunks/{activity-EJBMXUBH.js.map → activity-WEIEMM73.js.map} +0 -0
  539. /package/dist/cli-bundle/chunks/{append-KDHT4GHI.js.map → append-H32VOR2Y.js.map} +0 -0
  540. /package/dist/cli-bundle/chunks/{append-LEDBAM3K.js.map → append-UBM632FK.js.map} +0 -0
  541. /package/dist/cli-bundle/chunks/{chunk-SJZTPVFT.js.map → chunk-2ASNV4DH.js.map} +0 -0
  542. /package/dist/cli-bundle/chunks/{chunk-JVQ7UOYC.js.map → chunk-2CHRYUXL.js.map} +0 -0
  543. /package/dist/cli-bundle/chunks/{chunk-DRPF274X.js.map → chunk-3LCUASYG.js.map} +0 -0
  544. /package/dist/cli-bundle/chunks/{chunk-JJ4SG243.js.map → chunk-3Q2HBMTI.js.map} +0 -0
  545. /package/dist/cli-bundle/chunks/{chunk-TQ6E76BE.js.map → chunk-55XRYWEG.js.map} +0 -0
  546. /package/dist/cli-bundle/chunks/{chunk-IBU2LLWM.js.map → chunk-A6VOGKBA.js.map} +0 -0
  547. /package/dist/cli-bundle/chunks/{chunk-MLHX6DN5.js.map → chunk-AIAIXG7I.js.map} +0 -0
  548. /package/dist/cli-bundle/chunks/{chunk-5ABGFWR4.js.map → chunk-BTX5MIQF.js.map} +0 -0
  549. /package/dist/cli-bundle/chunks/{chunk-3JWQCLR5.js.map → chunk-CYBDUHNO.js.map} +0 -0
  550. /package/dist/cli-bundle/chunks/{chunk-WFJZDUM7.js.map → chunk-CZPVDLD2.js.map} +0 -0
  551. /package/dist/cli-bundle/chunks/{chunk-HUYYMTGW.js.map → chunk-EUKTMRN3.js.map} +0 -0
  552. /package/dist/cli-bundle/chunks/{chunk-EVWYAG46.js.map → chunk-FFOQHGNH.js.map} +0 -0
  553. /package/dist/cli-bundle/chunks/{chunk-IF4ERU6A.js.map → chunk-GFMSLORL.js.map} +0 -0
  554. /package/dist/cli-bundle/chunks/{chunk-IDYCAK35.js.map → chunk-H4GRLYJS.js.map} +0 -0
  555. /package/dist/cli-bundle/chunks/{chunk-VMY7MZEM.js.map → chunk-HQTPRV4D.js.map} +0 -0
  556. /package/dist/cli-bundle/chunks/{chunk-7L6TXOOC.js.map → chunk-JMK5GCK2.js.map} +0 -0
  557. /package/dist/cli-bundle/chunks/{chunk-KRASIL6M.js.map → chunk-K2VYLVX4.js.map} +0 -0
  558. /package/dist/cli-bundle/chunks/{chunk-4YIMPANT.js.map → chunk-KCO2EAN5.js.map} +0 -0
  559. /package/dist/cli-bundle/chunks/{chunk-D6USKAMA.js.map → chunk-KLXF7NCC.js.map} +0 -0
  560. /package/dist/cli-bundle/chunks/{chunk-OB3RJV5F.js.map → chunk-LRKMWUUV.js.map} +0 -0
  561. /package/dist/cli-bundle/chunks/{chunk-74PUWBGN.js.map → chunk-LTRAF2D7.js.map} +0 -0
  562. /package/dist/cli-bundle/chunks/{chunk-4TXTVZL3.js.map → chunk-MRD4T5LF.js.map} +0 -0
  563. /package/dist/cli-bundle/chunks/{chunk-E2Q2ULMR.js.map → chunk-N2JSWVWG.js.map} +0 -0
  564. /package/dist/cli-bundle/chunks/{chunk-7RIJGN4R.js.map → chunk-QH3FSKRJ.js.map} +0 -0
  565. /package/dist/cli-bundle/chunks/{chunk-OUQ5JEFM.js.map → chunk-S62UANU7.js.map} +0 -0
  566. /package/dist/cli-bundle/chunks/{chunk-DLDCPF5X.js.map → chunk-U2BEEM2X.js.map} +0 -0
  567. /package/dist/cli-bundle/chunks/{chunk-73PTKMAE.js.map → chunk-UT73HUPC.js.map} +0 -0
  568. /package/dist/cli-bundle/chunks/{chunk-F7G53BOA.js.map → chunk-UTSH5GWX.js.map} +0 -0
  569. /package/dist/cli-bundle/chunks/{chunk-JIP67N2K.js.map → chunk-Y4NRKBFW.js.map} +0 -0
  570. /package/dist/cli-bundle/chunks/{chunk-FBZ5XAAF.js.map → chunk-YPKFV2JR.js.map} +0 -0
  571. /package/dist/cli-bundle/chunks/{chunk-BN3CWK6G.js.map → chunk-ZNHEYCDD.js.map} +0 -0
  572. /package/dist/cli-bundle/chunks/{chunk-YEDFE4DC.js.map → chunk-ZNT7KEWE.js.map} +0 -0
  573. /package/dist/cli-bundle/chunks/{claim-HMCLSLUE.js.map → claim-SENTPZBN.js.map} +0 -0
  574. /package/dist/cli-bundle/chunks/{claim-6NINZYB3.js.map → claim-Z7MEQCBT.js.map} +0 -0
  575. /package/dist/cli-bundle/chunks/{close-OP3LK7Z2.js.map → close-424MX4CU.js.map} +0 -0
  576. /package/dist/cli-bundle/chunks/{close-37KEHLYM.js.map → close-YCWQQPDS.js.map} +0 -0
  577. /package/dist/cli-bundle/chunks/{comments-ETHABIY6.js.map → comments-4FGNTSNV.js.map} +0 -0
  578. /package/dist/cli-bundle/chunks/{comments-MU2WMBUY.js.map → comments-7YS5MY5X.js.map} +0 -0
  579. /package/dist/cli-bundle/chunks/{context-7ZEZV3BV.js.map → context-LHVKJSPJ.js.map} +0 -0
  580. /package/dist/cli-bundle/chunks/{context-XDI4DKKT.js.map → context-ZQY54JNS.js.map} +0 -0
  581. /package/dist/cli-bundle/chunks/{copy-JJ3KOQW2.js.map → copy-GYNQQPW2.js.map} +0 -0
  582. /package/dist/cli-bundle/chunks/{copy-CWM6SBY6.js.map → copy-TLW7JTQT.js.map} +0 -0
  583. /package/dist/cli-bundle/chunks/{create-J5Q2ELZT.js.map → create-VSKYSOCD.js.map} +0 -0
  584. /package/dist/cli-bundle/chunks/{create-DFMNBKBS.js.map → create-XTMAPS7I.js.map} +0 -0
  585. /package/dist/cli-bundle/chunks/{delete-2GZLQEUQ.js.map → delete-4W5JYCEG.js.map} +0 -0
  586. /package/dist/cli-bundle/chunks/{delete-OOQS4KVD.js.map → delete-ANTOTI2I.js.map} +0 -0
  587. /package/dist/cli-bundle/chunks/{deps-IF4IGL4R.js.map → deps-HPPE6MJN.js.map} +0 -0
  588. /package/dist/cli-bundle/chunks/{deps-ZVGGCRR6.js.map → deps-ZQZN54EZ.js.map} +0 -0
  589. /package/dist/cli-bundle/chunks/{docs-NFTBCQQC.js.map → docs-RPOVFMP3.js.map} +0 -0
  590. /package/dist/cli-bundle/chunks/{docs-2TIFR62T.js.map → docs-XJNYBJGE.js.map} +0 -0
  591. /package/dist/cli-bundle/chunks/{eval-2F6EH4XN.js.map → eval-DM6JBZTS.js.map} +0 -0
  592. /package/dist/cli-bundle/chunks/{eval-PFKXQR3B.js.map → eval-RFBI5FGS.js.map} +0 -0
  593. /package/dist/cli-bundle/chunks/{extension-GMVOIP4O.js.map → extension-B3YY4WY5.js.map} +0 -0
  594. /package/dist/cli-bundle/chunks/{extension-3LRYX7SW.js.map → extension-TTSEFQTS.js.map} +0 -0
  595. /package/dist/cli-bundle/chunks/{files-DF3HO6XK.js.map → files-5D65CHGE.js.map} +0 -0
  596. /package/dist/cli-bundle/chunks/{files-T5ODMETM.js.map → files-GPIG77EN.js.map} +0 -0
  597. /package/dist/cli-bundle/chunks/{focus-MY5ARIEK.js.map → focus-C3PEJV2C.js.map} +0 -0
  598. /package/dist/cli-bundle/chunks/{focus-DLXKK4AH.js.map → focus-ZHN7WIGX.js.map} +0 -0
  599. /package/dist/cli-bundle/chunks/{gc-MDGRR2SU.js.map → gc-D4JQ6OWN.js.map} +0 -0
  600. /package/dist/cli-bundle/chunks/{gc-FULIVYR4.js.map → gc-VZIXDL32.js.map} +0 -0
  601. /package/dist/cli-bundle/chunks/{history-5XUSLAJA.js.map → history-DD7L7BNL.js.map} +0 -0
  602. /package/dist/cli-bundle/chunks/{history-X4OSES6K.js.map → history-IL7XCEX2.js.map} +0 -0
  603. /package/dist/cli-bundle/chunks/{history-redact-BVHWDXPR.js.map → history-redact-IX4YEWMY.js.map} +0 -0
  604. /package/dist/cli-bundle/chunks/{history-redact-45YW65BK.js.map → history-redact-VYCWQFK7.js.map} +0 -0
  605. /package/dist/cli-bundle/chunks/{init-KO7CGIRQ.js.map → init-F27NHENZ.js.map} +0 -0
  606. /package/dist/cli-bundle/chunks/{init-TRYJELH4.js.map → init-HHVQQP6C.js.map} +0 -0
  607. /package/dist/cli-bundle/chunks/{learnings-LHZT5BHW.js.map → learnings-HJVDQIGY.js.map} +0 -0
  608. /package/dist/cli-bundle/chunks/{learnings-3F7YLI45.js.map → learnings-XSFSUUWK.js.map} +0 -0
  609. /package/dist/cli-bundle/chunks/{list-Y6AU5BJS.js.map → list-HPMEKCAA.js.map} +0 -0
  610. /package/dist/cli-bundle/chunks/{list-ROT7JF62.js.map → list-VMPWTURB.js.map} +0 -0
  611. /package/dist/cli-bundle/chunks/{notes-FW6YFLND.js.map → notes-GDZIKGR6.js.map} +0 -0
  612. /package/dist/cli-bundle/chunks/{notes-EVJZ3VAB.js.map → notes-WDDBPC4D.js.map} +0 -0
  613. /package/dist/cli-bundle/chunks/{profile-CHAW6SEA.js.map → profile-CCOKZ2IQ.js.map} +0 -0
  614. /package/dist/cli-bundle/chunks/{profile-UPZGCDOG.js.map → profile-HUCENIEQ.js.map} +0 -0
  615. /package/dist/cli-bundle/chunks/{restore-DKMCLPI5.js.map → restore-4CBWUMCX.js.map} +0 -0
  616. /package/dist/cli-bundle/chunks/{restore-IRAKSWIW.js.map → restore-5UEAGG3W.js.map} +0 -0
  617. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-3F4QUEDH.js.map → scheduling-shortcuts-6VFKNKCM.js.map} +0 -0
  618. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-BNZLQK36.js.map → scheduling-shortcuts-ERHCVTEM.js.map} +0 -0
  619. /package/dist/cli-bundle/chunks/{schema-OLT6LVKH.js.map → schema-TDGK6N3I.js.map} +0 -0
  620. /package/dist/cli-bundle/chunks/{schema-XJXKJQF5.js.map → schema-UE5KKAUX.js.map} +0 -0
  621. /package/dist/cli-bundle/chunks/{search-KP6H7COV.js.map → search-FP7MEU4S.js.map} +0 -0
  622. /package/dist/cli-bundle/chunks/{search-CX5UMV4H.js.map → search-K4CFLQ5S.js.map} +0 -0
  623. /package/dist/cli-bundle/chunks/{stats-QZUG6MX5.js.map → stats-NJJCALEZ.js.map} +0 -0
  624. /package/dist/cli-bundle/chunks/{stats-7XW4OEMK.js.map → stats-XT6QRKQY.js.map} +0 -0
  625. /package/dist/cli-bundle/chunks/{test-QNDXZQCW.js.map → test-UFSJ5YIO.js.map} +0 -0
  626. /package/dist/cli-bundle/chunks/{test-HU2BS7EY.js.map → test-YCDAUBWF.js.map} +0 -0
  627. /package/dist/cli-bundle/chunks/{update-UXDLTEOZ.js.map → update-MTCFES6X.js.map} +0 -0
  628. /package/dist/cli-bundle/chunks/{update-DJKWLBWJ.js.map → update-Y5WQVT5O.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
  }