@unbrained/pm-cli 2026.7.3 → 2026.7.5

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 (663) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/CONTRIBUTING.md +36 -7
  3. package/README.md +1 -9
  4. package/dist/cli/commands/calendar.d.ts +3 -2
  5. package/dist/cli/commands/calendar.js +5 -5
  6. package/dist/cli/commands/calendar.js.map +1 -1
  7. package/dist/cli/commands/claim.js +17 -3
  8. package/dist/cli/commands/claim.js.map +1 -1
  9. package/dist/cli/commands/close.js +34 -16
  10. package/dist/cli/commands/close.js.map +1 -1
  11. package/dist/cli/commands/completion.js +231 -345
  12. package/dist/cli/commands/completion.js.map +1 -1
  13. package/dist/cli/commands/copy.js +3 -3
  14. package/dist/cli/commands/copy.js.map +1 -1
  15. package/dist/cli/commands/create.d.ts +9 -59
  16. package/dist/cli/commands/create.js +162 -132
  17. package/dist/cli/commands/create.js.map +1 -1
  18. package/dist/cli/commands/extension/bundled-catalog.d.ts +6 -0
  19. package/dist/cli/commands/extension/bundled-catalog.js +15 -2
  20. package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
  21. package/dist/cli/commands/extension/describe.d.ts +6 -3
  22. package/dist/cli/commands/extension/describe.js +21 -9
  23. package/dist/cli/commands/extension/describe.js.map +1 -1
  24. package/dist/cli/commands/extension/doctor.d.ts +0 -4
  25. package/dist/cli/commands/extension/doctor.js +3 -3
  26. package/dist/cli/commands/extension/doctor.js.map +1 -1
  27. package/dist/cli/commands/extension/scaffold.js +59 -133
  28. package/dist/cli/commands/extension/scaffold.js.map +1 -1
  29. package/dist/cli/commands/extension/shared.d.ts +2 -7
  30. package/dist/cli/commands/extension/shared.js +4 -10
  31. package/dist/cli/commands/extension/shared.js.map +1 -1
  32. package/dist/cli/commands/extension.js +33 -8
  33. package/dist/cli/commands/extension.js.map +1 -1
  34. package/dist/cli/commands/files.js +3 -3
  35. package/dist/cli/commands/files.js.map +1 -1
  36. package/dist/cli/commands/history-compact.js +9 -18
  37. package/dist/cli/commands/history-compact.js.map +1 -1
  38. package/dist/cli/commands/history-repair.js +9 -19
  39. package/dist/cli/commands/history-repair.js.map +1 -1
  40. package/dist/cli/commands/init-agent-guidance.js +133 -97
  41. package/dist/cli/commands/init-agent-guidance.js.map +1 -1
  42. package/dist/cli/commands/init.js +3 -3
  43. package/dist/cli/commands/init.js.map +1 -1
  44. package/dist/cli/commands/item-filter-options.d.ts +2 -0
  45. package/dist/cli/commands/item-filter-options.js +2 -2
  46. package/dist/cli/commands/item-filter-options.js.map +1 -1
  47. package/dist/cli/commands/mutation-command-options.d.ts +78 -0
  48. package/dist/cli/commands/mutation-command-options.js +10 -0
  49. package/dist/cli/commands/mutation-command-options.js.map +1 -0
  50. package/dist/cli/commands/profile.js +3 -3
  51. package/dist/cli/commands/profile.js.map +1 -1
  52. package/dist/cli/commands/reindex.js +4 -4
  53. package/dist/cli/commands/reindex.js.map +1 -1
  54. package/dist/cli/commands/restore.js +3 -3
  55. package/dist/cli/commands/restore.js.map +1 -1
  56. package/dist/cli/commands/schema.js +10 -10
  57. package/dist/cli/commands/schema.js.map +1 -1
  58. package/dist/cli/commands/shared-unset-fields.d.ts +19 -0
  59. package/dist/cli/commands/shared-unset-fields.js +31 -2
  60. package/dist/cli/commands/shared-unset-fields.js.map +1 -1
  61. package/dist/cli/commands/update.d.ts +2 -59
  62. package/dist/cli/commands/update.js +29 -98
  63. package/dist/cli/commands/update.js.map +1 -1
  64. package/dist/cli/commands/validate.js +4 -4
  65. package/dist/cli/commands/validate.js.map +1 -1
  66. package/dist/cli/error-guidance.js +107 -7
  67. package/dist/cli/error-guidance.js.map +1 -1
  68. package/dist/cli/main.d.ts +6 -2
  69. package/dist/cli/main.js +33 -12
  70. package/dist/cli/main.js.map +1 -1
  71. package/dist/cli/register-list-query.js +4 -2
  72. package/dist/cli/register-list-query.js.map +1 -1
  73. package/dist/cli/registration-helpers.js +12 -6
  74. package/dist/cli/registration-helpers.js.map +1 -1
  75. package/dist/cli-bundle/chunks/activity-4XQIDNM5.js +18 -0
  76. package/dist/cli-bundle/chunks/{activity-5YWLSPGE.js → activity-YKAKZTZ4.js} +11 -9
  77. package/dist/cli-bundle/chunks/{aggregate-2V2M3JZU.js → aggregate-EQX2RGB7.js} +16 -13
  78. package/dist/cli-bundle/chunks/{aggregate-2V2M3JZU.js.map → aggregate-EQX2RGB7.js.map} +1 -1
  79. package/dist/cli-bundle/chunks/{aggregate-EK7DXML7.js → aggregate-PEGZGJXD.js} +18 -15
  80. package/dist/cli-bundle/chunks/{aggregate-EK7DXML7.js.map → aggregate-PEGZGJXD.js.map} +1 -1
  81. package/dist/cli-bundle/chunks/{append-EZESUVJT.js → append-CZGUZ45Q.js} +11 -8
  82. package/dist/cli-bundle/chunks/{append-EZESUVJT.js.map → append-CZGUZ45Q.js.map} +1 -1
  83. package/dist/cli-bundle/chunks/{append-JFG4WQMG.js → append-NSQBCXZJ.js} +13 -10
  84. package/dist/cli-bundle/chunks/{append-JFG4WQMG.js.map → append-NSQBCXZJ.js.map} +1 -1
  85. package/dist/cli-bundle/chunks/chunk-3JZNEQBA.js +1413 -0
  86. package/dist/cli-bundle/chunks/chunk-3JZNEQBA.js.map +1 -0
  87. package/dist/cli-bundle/chunks/{chunk-NOIEVOK5.js → chunk-3PL6LEKP.js} +16 -14
  88. package/dist/cli-bundle/chunks/{chunk-NOIEVOK5.js.map → chunk-3PL6LEKP.js.map} +1 -1
  89. package/dist/cli-bundle/chunks/{chunk-6KRFL33E.js → chunk-3U3VEWK6.js} +277 -119
  90. package/dist/cli-bundle/chunks/chunk-3U3VEWK6.js.map +7 -0
  91. package/dist/cli-bundle/chunks/{chunk-Z5F6XZXE.js → chunk-3Y4OESPP.js} +14 -12
  92. package/dist/cli-bundle/chunks/{chunk-Z5F6XZXE.js.map → chunk-3Y4OESPP.js.map} +1 -1
  93. package/dist/cli-bundle/chunks/{chunk-HB4FAT3O.js → chunk-4LRVSBO6.js} +21 -15
  94. package/dist/cli-bundle/chunks/chunk-4LRVSBO6.js.map +7 -0
  95. package/dist/cli-bundle/chunks/{chunk-T3P7PMZP.js → chunk-4OFLJHX6.js} +7 -5
  96. package/dist/cli-bundle/chunks/{chunk-T3P7PMZP.js.map → chunk-4OFLJHX6.js.map} +1 -1
  97. package/dist/cli-bundle/chunks/{chunk-JPATY4SE.js → chunk-4QQ6PM7M.js} +45 -557
  98. package/dist/cli-bundle/chunks/chunk-4QQ6PM7M.js.map +7 -0
  99. package/dist/cli-bundle/chunks/{chunk-6CDCWKSX.js → chunk-53BTLLAF.js} +68 -331
  100. package/dist/cli-bundle/chunks/chunk-53BTLLAF.js.map +1 -0
  101. package/dist/cli-bundle/chunks/{chunk-4WB6S4YX.js → chunk-57C2RLW5.js} +277 -112
  102. package/dist/cli-bundle/chunks/chunk-57C2RLW5.js.map +1 -0
  103. package/dist/cli-bundle/chunks/{chunk-PULUSQAV.js → chunk-5B3X4Y22.js} +52 -63
  104. package/dist/cli-bundle/chunks/{chunk-PULUSQAV.js.map → chunk-5B3X4Y22.js.map} +3 -3
  105. package/dist/cli-bundle/chunks/{chunk-7LYO6S5A.js → chunk-5J2XPTAD.js} +10 -8
  106. package/dist/cli-bundle/chunks/{chunk-7LYO6S5A.js.map → chunk-5J2XPTAD.js.map} +1 -1
  107. package/dist/cli-bundle/chunks/{chunk-QCDTQCMW.js → chunk-5JE6SMYS.js} +2 -2
  108. package/dist/cli-bundle/chunks/{chunk-MHRS5FUX.js → chunk-5JZ7APJU.js} +153 -108
  109. package/dist/cli-bundle/chunks/chunk-5JZ7APJU.js.map +1 -0
  110. package/dist/cli-bundle/chunks/{chunk-KHVGM5CS.js → chunk-5VVUKE3U.js} +544 -2368
  111. package/dist/cli-bundle/chunks/chunk-5VVUKE3U.js.map +7 -0
  112. package/dist/cli-bundle/chunks/{chunk-RJH5VQHW.js → chunk-75U6M5ZD.js} +22 -16
  113. package/dist/cli-bundle/chunks/chunk-75U6M5ZD.js.map +1 -0
  114. package/dist/cli-bundle/chunks/chunk-7C2O74AE.js +23 -0
  115. package/dist/cli-bundle/chunks/chunk-7C2O74AE.js.map +7 -0
  116. package/dist/cli-bundle/chunks/{chunk-ZFTKYWIF.js → chunk-7EQNAZX2.js} +14 -12
  117. package/dist/cli-bundle/chunks/{chunk-ZFTKYWIF.js.map → chunk-7EQNAZX2.js.map} +1 -1
  118. package/dist/cli-bundle/chunks/{chunk-Z4DGFQDH.js → chunk-7LQKVMPA.js} +14 -4
  119. package/dist/cli-bundle/chunks/chunk-7LQKVMPA.js.map +1 -0
  120. package/dist/cli-bundle/chunks/{chunk-ERG65A2L.js → chunk-7MDXZAZS.js} +29 -7
  121. package/dist/cli-bundle/chunks/chunk-7MDXZAZS.js.map +1 -0
  122. package/dist/cli-bundle/chunks/{chunk-OGLGI22K.js → chunk-7QH7DHUB.js} +74 -8
  123. package/dist/cli-bundle/chunks/chunk-7QH7DHUB.js.map +1 -0
  124. package/dist/cli-bundle/chunks/{chunk-JBZ2NTKX.js → chunk-7WYXBPYQ.js} +7 -5
  125. package/dist/cli-bundle/chunks/{chunk-JBZ2NTKX.js.map → chunk-7WYXBPYQ.js.map} +1 -1
  126. package/dist/cli-bundle/chunks/chunk-AAEQMOC6.js +150 -0
  127. package/dist/cli-bundle/chunks/chunk-AAEQMOC6.js.map +1 -0
  128. package/dist/cli-bundle/chunks/{chunk-K5DT2YKM.js → chunk-ABRA3BHY.js} +18 -16
  129. package/dist/cli-bundle/chunks/{chunk-K5DT2YKM.js.map → chunk-ABRA3BHY.js.map} +2 -2
  130. package/dist/cli-bundle/chunks/chunk-B5KXLBSJ.js +47 -0
  131. package/dist/cli-bundle/chunks/chunk-B5KXLBSJ.js.map +7 -0
  132. package/dist/cli-bundle/chunks/{chunk-7CLLC75T.js → chunk-BFVHCAOO.js} +9 -7
  133. package/dist/cli-bundle/chunks/{chunk-7CLLC75T.js.map → chunk-BFVHCAOO.js.map} +1 -1
  134. package/dist/cli-bundle/chunks/{chunk-MDHWWBNZ.js → chunk-BVEUCSH2.js} +6 -4
  135. package/dist/cli-bundle/chunks/{chunk-MDHWWBNZ.js.map → chunk-BVEUCSH2.js.map} +1 -1
  136. package/dist/cli-bundle/chunks/chunk-C3PMDWGX.js +160 -0
  137. package/dist/cli-bundle/chunks/chunk-C3PMDWGX.js.map +7 -0
  138. package/dist/cli-bundle/chunks/{chunk-T4XBKJ3F.js → chunk-D3UCE7RW.js} +7 -5
  139. package/dist/cli-bundle/chunks/{chunk-T4XBKJ3F.js.map → chunk-D3UCE7RW.js.map} +1 -1
  140. package/dist/cli-bundle/chunks/chunk-DC3QJQWI.js +275 -0
  141. package/dist/cli-bundle/chunks/chunk-DC3QJQWI.js.map +7 -0
  142. package/dist/cli-bundle/chunks/chunk-DLQ4ZTCU.js +634 -0
  143. package/dist/cli-bundle/chunks/chunk-DLQ4ZTCU.js.map +7 -0
  144. package/dist/cli-bundle/chunks/{chunk-AJHYQCBJ.js → chunk-DRBV5UC2.js} +8 -23
  145. package/dist/cli-bundle/chunks/chunk-DRBV5UC2.js.map +7 -0
  146. package/dist/cli-bundle/chunks/{chunk-NZ7QIUP5.js → chunk-E2FUG6GD.js} +67 -351
  147. package/dist/cli-bundle/chunks/chunk-E2FUG6GD.js.map +7 -0
  148. package/dist/cli-bundle/chunks/{chunk-4PFVUUYV.js → chunk-EEY54JMF.js} +5 -3
  149. package/dist/cli-bundle/chunks/{chunk-4PFVUUYV.js.map → chunk-EEY54JMF.js.map} +1 -1
  150. package/dist/cli-bundle/chunks/{chunk-3W2HJKJX.js → chunk-EZFKWSC7.js} +94 -16
  151. package/dist/cli-bundle/chunks/{chunk-3W2HJKJX.js.map → chunk-EZFKWSC7.js.map} +4 -4
  152. package/dist/cli-bundle/chunks/{chunk-F6WNBITZ.js → chunk-FDBARR33.js} +40 -19
  153. package/dist/cli-bundle/chunks/{chunk-F6WNBITZ.js.map → chunk-FDBARR33.js.map} +3 -3
  154. package/dist/cli-bundle/chunks/{chunk-WRYERRZX.js → chunk-FGQKEDE4.js} +36 -12
  155. package/dist/cli-bundle/chunks/chunk-FGQKEDE4.js.map +7 -0
  156. package/dist/cli-bundle/chunks/{chunk-CXR3CMBQ.js → chunk-FJRKQREY.js} +10 -18
  157. package/dist/cli-bundle/chunks/chunk-FJRKQREY.js.map +1 -0
  158. package/dist/cli-bundle/chunks/{chunk-QNNQAAZ5.js → chunk-FUM6UMY4.js} +10 -11
  159. package/dist/cli-bundle/chunks/{chunk-QNNQAAZ5.js.map → chunk-FUM6UMY4.js.map} +1 -1
  160. package/dist/cli-bundle/chunks/{chunk-TQ6AX5SQ.js → chunk-GIWXVMZ3.js} +140 -334
  161. package/dist/cli-bundle/chunks/chunk-GIWXVMZ3.js.map +7 -0
  162. package/dist/cli-bundle/chunks/{chunk-FZJM2TXF.js → chunk-HBYZDSK5.js} +19 -17
  163. package/dist/cli-bundle/chunks/{chunk-FZJM2TXF.js.map → chunk-HBYZDSK5.js.map} +1 -1
  164. package/dist/cli-bundle/chunks/{chunk-5IZUBZBR.js → chunk-HJE4JTKQ.js} +6 -4
  165. package/dist/cli-bundle/chunks/{chunk-5IZUBZBR.js.map → chunk-HJE4JTKQ.js.map} +1 -1
  166. package/dist/cli-bundle/chunks/{chunk-YSDFIY7N.js → chunk-HK72NWAD.js} +89 -18
  167. package/dist/cli-bundle/chunks/chunk-HK72NWAD.js.map +1 -0
  168. package/dist/cli-bundle/chunks/{chunk-LBE5QFMZ.js → chunk-IJ6CO3JV.js} +41 -20
  169. package/dist/cli-bundle/chunks/{chunk-LBE5QFMZ.js.map → chunk-IJ6CO3JV.js.map} +1 -1
  170. package/dist/cli-bundle/chunks/{chunk-YF746GTH.js → chunk-JFCVQXZX.js} +139 -326
  171. package/dist/cli-bundle/chunks/chunk-JFCVQXZX.js.map +1 -0
  172. package/dist/cli-bundle/chunks/{chunk-A3OQ7TFW.js → chunk-JLA7EVYV.js} +12 -10
  173. package/dist/cli-bundle/chunks/{chunk-A3OQ7TFW.js.map → chunk-JLA7EVYV.js.map} +1 -1
  174. package/dist/cli-bundle/chunks/chunk-K32L7HZO.js +76 -0
  175. package/dist/cli-bundle/chunks/chunk-K32L7HZO.js.map +1 -0
  176. package/dist/cli-bundle/chunks/{chunk-32IUNTG4.js → chunk-K3AGVXSF.js} +37 -13
  177. package/dist/cli-bundle/chunks/chunk-K3AGVXSF.js.map +1 -0
  178. package/dist/cli-bundle/chunks/chunk-KDZ6K25I.js +79 -0
  179. package/dist/cli-bundle/chunks/chunk-KDZ6K25I.js.map +7 -0
  180. package/dist/cli-bundle/chunks/chunk-KGHH652T.js +44 -0
  181. package/dist/cli-bundle/chunks/chunk-KGHH652T.js.map +1 -0
  182. package/dist/cli-bundle/chunks/chunk-KL22PY6L.js +915 -0
  183. package/dist/cli-bundle/chunks/chunk-KL22PY6L.js.map +1 -0
  184. package/dist/cli-bundle/chunks/{chunk-BI4R7HI2.js → chunk-KLG4ZULO.js} +12 -10
  185. package/dist/cli-bundle/chunks/{chunk-BI4R7HI2.js.map → chunk-KLG4ZULO.js.map} +1 -1
  186. package/dist/cli-bundle/chunks/{chunk-XRYSCRZR.js → chunk-LEKT4K7I.js} +74 -8
  187. package/dist/cli-bundle/chunks/chunk-LEKT4K7I.js.map +7 -0
  188. package/dist/cli-bundle/chunks/{contracts-X74F2GSM.js → chunk-MNZ7DRNC.js} +13 -10
  189. package/dist/cli-bundle/chunks/{contracts-X74F2GSM.js.map → chunk-MNZ7DRNC.js.map} +1 -1
  190. package/dist/cli-bundle/chunks/{chunk-4EXFFP7T.js → chunk-MTTXDAK4.js} +206 -147
  191. package/dist/cli-bundle/chunks/chunk-MTTXDAK4.js.map +7 -0
  192. package/dist/cli-bundle/chunks/{chunk-KEZOIPCR.js → chunk-MZ7VNEVY.js} +8 -6
  193. package/dist/cli-bundle/chunks/{chunk-KEZOIPCR.js.map → chunk-MZ7VNEVY.js.map} +1 -1
  194. package/dist/cli-bundle/chunks/{chunk-5JIWFWOZ.js → chunk-N6DNM2FA.js} +2 -2
  195. package/dist/cli-bundle/chunks/{test-runs-QIR5MJPL.js → chunk-N7X4WP6L.js} +11 -8
  196. package/dist/cli-bundle/chunks/{test-runs-QIR5MJPL.js.map → chunk-N7X4WP6L.js.map} +1 -1
  197. package/dist/cli-bundle/chunks/{chunk-U3S2B7TA.js → chunk-NBFCNJ7Q.js} +206 -147
  198. package/dist/cli-bundle/chunks/chunk-NBFCNJ7Q.js.map +1 -0
  199. package/dist/cli-bundle/chunks/{chunk-GVJE5T7Q.js → chunk-NER3KUUS.js} +2 -2
  200. package/dist/cli-bundle/chunks/chunk-NNHHXJB2.js +20 -0
  201. package/dist/cli-bundle/chunks/chunk-NNHHXJB2.js.map +1 -0
  202. package/dist/cli-bundle/chunks/chunk-OBA2WH65.js +918 -0
  203. package/dist/cli-bundle/chunks/chunk-OBA2WH65.js.map +7 -0
  204. package/dist/cli-bundle/chunks/{chunk-YPWUSH72.js → chunk-OESSOFJ4.js} +14 -12
  205. package/dist/cli-bundle/chunks/{chunk-YPWUSH72.js.map → chunk-OESSOFJ4.js.map} +1 -1
  206. package/dist/cli-bundle/chunks/chunk-OK5NXCZB.js +238 -0
  207. package/dist/cli-bundle/chunks/chunk-OK5NXCZB.js.map +1 -0
  208. package/dist/cli-bundle/chunks/{chunk-FUFFPIYA.js → chunk-OWTIRHX4.js} +28 -6
  209. package/dist/cli-bundle/chunks/chunk-OWTIRHX4.js.map +7 -0
  210. package/dist/cli-bundle/chunks/{chunk-Z7RPDF2Y.js → chunk-P3VRG72Q.js} +10 -8
  211. package/dist/cli-bundle/chunks/{chunk-Z7RPDF2Y.js.map → chunk-P3VRG72Q.js.map} +1 -1
  212. package/dist/cli-bundle/chunks/chunk-P5TFTLWW.js +1423 -0
  213. package/dist/cli-bundle/chunks/chunk-P5TFTLWW.js.map +7 -0
  214. package/dist/cli-bundle/chunks/chunk-P5YORJRH.js +1977 -0
  215. package/dist/cli-bundle/chunks/chunk-P5YORJRH.js.map +7 -0
  216. package/dist/cli-bundle/chunks/{chunk-MEZZZBYX.js → chunk-PDXT6Q55.js} +2 -2
  217. package/dist/cli-bundle/chunks/{chunk-EJ2OCBHF.js → chunk-PJ3A56YF.js} +46 -537
  218. package/dist/cli-bundle/chunks/chunk-PJ3A56YF.js.map +1 -0
  219. package/dist/cli-bundle/chunks/{test-runs-MG5VIGSK.js → chunk-PPAJG4GB.js} +13 -10
  220. package/dist/cli-bundle/chunks/{test-runs-MG5VIGSK.js.map → chunk-PPAJG4GB.js.map} +1 -1
  221. package/dist/cli-bundle/chunks/{chunk-572FKBRL.js → chunk-PPE4YUQM.js} +1725 -1663
  222. package/dist/cli-bundle/chunks/chunk-PPE4YUQM.js.map +1 -0
  223. package/dist/cli-bundle/chunks/{chunk-ER4ME5U2.js → chunk-QHZO65XW.js} +8 -6
  224. package/dist/cli-bundle/chunks/{chunk-ER4ME5U2.js.map → chunk-QHZO65XW.js.map} +1 -1
  225. package/dist/cli-bundle/chunks/{chunk-T6AXEBOP.js → chunk-R3ZBLGTC.js} +9 -10
  226. package/dist/cli-bundle/chunks/{chunk-T6AXEBOP.js.map → chunk-R3ZBLGTC.js.map} +2 -2
  227. package/dist/cli-bundle/chunks/chunk-RCT3YJOK.js +624 -0
  228. package/dist/cli-bundle/chunks/chunk-RCT3YJOK.js.map +1 -0
  229. package/dist/cli-bundle/chunks/{chunk-YVKZ3ANP.js → chunk-RX3HQSYG.js} +2 -2
  230. package/dist/cli-bundle/chunks/{chunk-LOWVNZBZ.js → chunk-S4APD35C.js} +4 -4
  231. package/dist/cli-bundle/chunks/{chunk-FH2H3CBD.js → chunk-S5AYOUT5.js} +8 -6
  232. package/dist/cli-bundle/chunks/{chunk-FH2H3CBD.js.map → chunk-S5AYOUT5.js.map} +1 -1
  233. package/dist/cli-bundle/chunks/{chunk-SYE6WMV6.js → chunk-STPSZ2XY.js} +19 -744
  234. package/dist/cli-bundle/chunks/chunk-STPSZ2XY.js.map +1 -0
  235. package/dist/cli-bundle/chunks/{chunk-6NYJGMTY.js → chunk-T35XLYZF.js} +2 -2
  236. package/dist/cli-bundle/chunks/{chunk-P5L7Z2O6.js → chunk-T3ABIMGW.js} +5 -3
  237. package/dist/cli-bundle/chunks/{chunk-P5L7Z2O6.js.map → chunk-T3ABIMGW.js.map} +1 -1
  238. package/dist/cli-bundle/chunks/{chunk-SU2E4AWU.js → chunk-T3F4DF23.js} +16 -14
  239. package/dist/cli-bundle/chunks/{chunk-SU2E4AWU.js.map → chunk-T3F4DF23.js.map} +1 -1
  240. package/dist/cli-bundle/chunks/chunk-T4MX77AK.js +272 -0
  241. package/dist/cli-bundle/chunks/chunk-T4MX77AK.js.map +1 -0
  242. package/dist/cli-bundle/chunks/chunk-T5Y3QSNF.js +5354 -0
  243. package/dist/cli-bundle/chunks/chunk-T5Y3QSNF.js.map +1 -0
  244. package/dist/cli-bundle/chunks/{chunk-ECU6MMTQ.js → chunk-TSPKZRRW.js} +50 -116
  245. package/dist/cli-bundle/chunks/chunk-TSPKZRRW.js.map +1 -0
  246. package/dist/cli-bundle/chunks/{chunk-BE2SR6QL.js → chunk-TT42JUMF.js} +4 -4
  247. package/dist/cli-bundle/chunks/chunk-UHKX7I75.js +165 -0
  248. package/dist/cli-bundle/chunks/chunk-UHKX7I75.js.map +1 -0
  249. package/dist/cli-bundle/chunks/{chunk-RAHINBVP.js → chunk-UI5BJ6DO.js} +1339 -1277
  250. package/dist/cli-bundle/chunks/chunk-UI5BJ6DO.js.map +7 -0
  251. package/dist/cli-bundle/chunks/chunk-US3T3W5J.js +1932 -0
  252. package/dist/cli-bundle/chunks/chunk-US3T3W5J.js.map +1 -0
  253. package/dist/cli-bundle/chunks/chunk-UZRDBL6W.js +175 -0
  254. package/dist/cli-bundle/chunks/chunk-UZRDBL6W.js.map +7 -0
  255. package/dist/cli-bundle/chunks/{chunk-B4O5S7I3.js → chunk-VUHVWI4C.js} +13 -3
  256. package/dist/cli-bundle/chunks/chunk-VUHVWI4C.js.map +7 -0
  257. package/dist/cli-bundle/chunks/{contracts-L6ODXNUM.js → chunk-VZIYHZDX.js} +11 -8
  258. package/dist/cli-bundle/chunks/{contracts-L6ODXNUM.js.map → chunk-VZIYHZDX.js.map} +1 -1
  259. package/dist/cli-bundle/chunks/{chunk-U5TR4N7J.js → chunk-WISPVC2E.js} +9 -7
  260. package/dist/cli-bundle/chunks/{chunk-U5TR4N7J.js.map → chunk-WISPVC2E.js.map} +1 -1
  261. package/dist/cli-bundle/chunks/chunk-WVSGSZ6J.js +5434 -0
  262. package/dist/cli-bundle/chunks/chunk-WVSGSZ6J.js.map +7 -0
  263. package/dist/cli-bundle/chunks/{chunk-HQAF23Q2.js → chunk-XQCG2JGW.js} +17 -749
  264. package/dist/cli-bundle/chunks/chunk-XQCG2JGW.js.map +7 -0
  265. package/dist/cli-bundle/chunks/chunk-Y76TWC45.js +550 -0
  266. package/dist/cli-bundle/chunks/chunk-Y76TWC45.js.map +7 -0
  267. package/dist/cli-bundle/chunks/{chunk-L4SLHV6G.js → chunk-YD5FML7K.js} +464 -2239
  268. package/dist/cli-bundle/chunks/chunk-YD5FML7K.js.map +1 -0
  269. package/dist/cli-bundle/chunks/{chunk-YSGTMDWC.js → chunk-YFIE7YK6.js} +7 -5
  270. package/dist/cli-bundle/chunks/{chunk-YSGTMDWC.js.map → chunk-YFIE7YK6.js.map} +1 -1
  271. package/dist/cli-bundle/chunks/{chunk-WYOIIFSE.js → chunk-YMABYTNG.js} +49 -115
  272. package/dist/cli-bundle/chunks/chunk-YMABYTNG.js.map +7 -0
  273. package/dist/cli-bundle/chunks/{chunk-SU3TB4NS.js → chunk-YOF5VPKM.js} +2 -2
  274. package/dist/cli-bundle/chunks/{chunk-WJA3PXW7.js → chunk-YPPVU5GX.js} +11 -9
  275. package/dist/cli-bundle/chunks/{chunk-WJA3PXW7.js.map → chunk-YPPVU5GX.js.map} +1 -1
  276. package/dist/cli-bundle/chunks/{chunk-GUYNUXQT.js → chunk-YQMMMONE.js} +6 -4
  277. package/dist/cli-bundle/chunks/{chunk-GUYNUXQT.js.map → chunk-YQMMMONE.js.map} +1 -1
  278. package/dist/cli-bundle/chunks/{chunk-AIKU3IIL.js → chunk-YSAH5FY5.js} +16 -14
  279. package/dist/cli-bundle/chunks/{chunk-AIKU3IIL.js.map → chunk-YSAH5FY5.js.map} +1 -1
  280. package/dist/cli-bundle/chunks/{chunk-KS6ATO47.js → chunk-YZIR4R3U.js} +153 -108
  281. package/dist/cli-bundle/chunks/chunk-YZIR4R3U.js.map +7 -0
  282. package/dist/cli-bundle/chunks/{chunk-LCWQP6NM.js → chunk-Z2CRRZYF.js} +14 -12
  283. package/dist/cli-bundle/chunks/{chunk-LCWQP6NM.js.map → chunk-Z2CRRZYF.js.map} +1 -1
  284. package/dist/cli-bundle/chunks/chunk-ZAHXPXVY.js +533 -0
  285. package/dist/cli-bundle/chunks/chunk-ZAHXPXVY.js.map +1 -0
  286. package/dist/cli-bundle/chunks/{chunk-UMNQZS4H.js → chunk-ZCJAA3JK.js} +8 -6
  287. package/dist/cli-bundle/chunks/{chunk-UMNQZS4H.js.map → chunk-ZCJAA3JK.js.map} +1 -1
  288. package/dist/cli-bundle/chunks/{chunk-EQURFOMH.js → chunk-ZD34OFFQ.js} +5 -3
  289. package/dist/cli-bundle/chunks/{chunk-EQURFOMH.js.map → chunk-ZD34OFFQ.js.map} +1 -1
  290. package/dist/cli-bundle/chunks/{chunk-67LARBDL.js → chunk-ZJB3UV5U.js} +54 -58
  291. package/dist/cli-bundle/chunks/chunk-ZJB3UV5U.js.map +1 -0
  292. package/dist/cli-bundle/chunks/{chunk-5E7N4T2Z.js → chunk-ZMD35NYG.js} +2 -2
  293. package/dist/cli-bundle/chunks/chunk-ZVDL32GJ.js +241 -0
  294. package/dist/cli-bundle/chunks/chunk-ZVDL32GJ.js.map +7 -0
  295. package/dist/cli-bundle/chunks/{claim-5GU7OE67.js → claim-4DROPSIS.js} +30 -13
  296. package/dist/cli-bundle/chunks/claim-4DROPSIS.js.map +1 -0
  297. package/dist/cli-bundle/chunks/{claim-2BGBGSVI.js → claim-VX54TV5U.js} +29 -12
  298. package/dist/cli-bundle/chunks/claim-VX54TV5U.js.map +7 -0
  299. package/dist/cli-bundle/chunks/{close-AFVKPR57.js → close-3YRR3XY6.js} +9 -7
  300. package/dist/cli-bundle/chunks/close-OB2Y4QP5.js +16 -0
  301. package/dist/cli-bundle/chunks/{close-many-JKUJMHLG.js → close-many-AP4MWU36.js} +21 -18
  302. package/dist/cli-bundle/chunks/{close-many-JKUJMHLG.js.map → close-many-AP4MWU36.js.map} +1 -1
  303. package/dist/cli-bundle/chunks/{close-many-7KLOSYLP.js → close-many-OMZIGZB4.js} +19 -16
  304. package/dist/cli-bundle/chunks/{close-many-7KLOSYLP.js.map → close-many-OMZIGZB4.js.map} +1 -1
  305. package/dist/cli-bundle/chunks/{comments-DNWHEBOS.js → comments-MIW5MZOX.js} +12 -9
  306. package/dist/cli-bundle/chunks/{comments-DNWHEBOS.js.map → comments-MIW5MZOX.js.map} +1 -1
  307. package/dist/cli-bundle/chunks/{comments-RW23R3VE.js → comments-SAG5LSKL.js} +14 -11
  308. package/dist/cli-bundle/chunks/{comments-RW23R3VE.js.map → comments-SAG5LSKL.js.map} +1 -1
  309. package/dist/cli-bundle/chunks/{config-AUM5WBYA.js → config-DJJKZB5R.js} +20 -17
  310. package/dist/cli-bundle/chunks/{config-AUM5WBYA.js.map → config-DJJKZB5R.js.map} +1 -1
  311. package/dist/cli-bundle/chunks/{config-OZWSA2NP.js → config-V57QD47V.js} +22 -19
  312. package/dist/cli-bundle/chunks/{config-OZWSA2NP.js.map → config-V57QD47V.js.map} +1 -1
  313. package/dist/cli-bundle/chunks/{context-PKCEHQY3.js → context-4OQGIPSO.js} +15 -12
  314. package/dist/cli-bundle/chunks/{context-OYXRGY7S.js → context-WLA6IAWE.js} +15 -12
  315. package/dist/cli-bundle/chunks/contracts-HXJLKCRI.js +12 -0
  316. package/dist/cli-bundle/chunks/contracts-OJEXMKVW.js +16 -0
  317. package/dist/cli-bundle/chunks/{copy-I4NCLBR4.js → copy-LEE6P6EM.js} +17 -14
  318. package/dist/cli-bundle/chunks/{copy-I4NCLBR4.js.map → copy-LEE6P6EM.js.map} +2 -2
  319. package/dist/cli-bundle/chunks/{copy-6XOR3HKN.js → copy-OTJOWFL6.js} +18 -15
  320. package/dist/cli-bundle/chunks/{copy-6XOR3HKN.js.map → copy-OTJOWFL6.js.map} +1 -1
  321. package/dist/cli-bundle/chunks/create-WKOZKPQR.js +30 -0
  322. package/dist/cli-bundle/chunks/{create-PM45M6PE.js → create-XWWQFQ6S.js} +14 -12
  323. package/dist/cli-bundle/chunks/{delete-7YXHYG67.js → delete-62JQTYT4.js} +10 -7
  324. package/dist/cli-bundle/chunks/{delete-7YXHYG67.js.map → delete-62JQTYT4.js.map} +1 -1
  325. package/dist/cli-bundle/chunks/{delete-LPISP43T.js → delete-HQKGRNRZ.js} +12 -9
  326. package/dist/cli-bundle/chunks/{delete-LPISP43T.js.map → delete-HQKGRNRZ.js.map} +1 -1
  327. package/dist/cli-bundle/chunks/{deps-WATKQDE3.js → deps-55FTG6Z5.js} +12 -9
  328. package/dist/cli-bundle/chunks/{deps-WATKQDE3.js.map → deps-55FTG6Z5.js.map} +1 -1
  329. package/dist/cli-bundle/chunks/{deps-N2T26FME.js → deps-L2FPIAD3.js} +10 -7
  330. package/dist/cli-bundle/chunks/{deps-N2T26FME.js.map → deps-L2FPIAD3.js.map} +1 -1
  331. package/dist/cli-bundle/chunks/{docs-6LQ3GLM7.js → docs-6CRCSVKK.js} +11 -9
  332. package/dist/cli-bundle/chunks/{docs-6LQ3GLM7.js.map → docs-6CRCSVKK.js.map} +1 -1
  333. package/dist/cli-bundle/chunks/{docs-Z3X6JZLT.js → docs-S6UTOTO5.js} +9 -7
  334. package/dist/cli-bundle/chunks/{docs-Z3X6JZLT.js.map → docs-S6UTOTO5.js.map} +1 -1
  335. package/dist/cli-bundle/chunks/{eval-6DCLG52D.js → eval-N6UHFWVO.js} +15 -11
  336. package/dist/cli-bundle/chunks/{eval-6DCLG52D.js.map → eval-N6UHFWVO.js.map} +1 -1
  337. package/dist/cli-bundle/chunks/{eval-Y3ZCUTHK.js → eval-PHOTWYHI.js} +17 -13
  338. package/dist/cli-bundle/chunks/{eval-Y3ZCUTHK.js.map → eval-PHOTWYHI.js.map} +1 -1
  339. package/dist/cli-bundle/chunks/{extension-BNINIMT7.js → extension-NBAH62ML.js} +17 -11
  340. package/dist/cli-bundle/chunks/{extension-QWE4YYK5.js → extension-ZF6ZZPOU.js} +17 -11
  341. package/dist/cli-bundle/chunks/{files-FUYPSOFJ.js → files-6P57MRKL.js} +14 -11
  342. package/dist/cli-bundle/chunks/files-6P57MRKL.js.map +7 -0
  343. package/dist/cli-bundle/chunks/{files-6SGKHS6O.js → files-JPU3FNJ7.js} +15 -12
  344. package/dist/cli-bundle/chunks/files-JPU3FNJ7.js.map +1 -0
  345. package/dist/cli-bundle/chunks/{focus-2Q3K76G2.js → focus-LFZ6IDBR.js} +15 -11
  346. package/dist/cli-bundle/chunks/{focus-2Q3K76G2.js.map → focus-LFZ6IDBR.js.map} +1 -1
  347. package/dist/cli-bundle/chunks/{focus-ATLBWXXD.js → focus-WNMYCVYA.js} +13 -9
  348. package/dist/cli-bundle/chunks/{focus-ATLBWXXD.js.map → focus-WNMYCVYA.js.map} +1 -1
  349. package/dist/cli-bundle/chunks/{gc-RUYEMNRF.js → gc-AETFKZ44.js} +10 -7
  350. package/dist/cli-bundle/chunks/{gc-RUYEMNRF.js.map → gc-AETFKZ44.js.map} +1 -1
  351. package/dist/cli-bundle/chunks/{gc-TDWSDR66.js → gc-RLBP4QVN.js} +12 -9
  352. package/dist/cli-bundle/chunks/{gc-TDWSDR66.js.map → gc-RLBP4QVN.js.map} +1 -1
  353. package/dist/cli-bundle/chunks/{get-LY6M2JIM.js → get-NH2MPBCI.js} +18 -15
  354. package/dist/cli-bundle/chunks/{get-LY6M2JIM.js.map → get-NH2MPBCI.js.map} +1 -1
  355. package/dist/cli-bundle/chunks/{get-2WGLX74N.js → get-P4ZQXCPZ.js} +16 -13
  356. package/dist/cli-bundle/chunks/{get-2WGLX74N.js.map → get-P4ZQXCPZ.js.map} +1 -1
  357. package/dist/cli-bundle/chunks/{health-4RKHYS3T.js → health-3GVPMQBL.js} +36 -29
  358. package/dist/cli-bundle/chunks/{health-4RKHYS3T.js.map → health-3GVPMQBL.js.map} +1 -1
  359. package/dist/cli-bundle/chunks/{health-TMFVNYRA.js → health-DNTM72GJ.js} +34 -27
  360. package/dist/cli-bundle/chunks/{health-TMFVNYRA.js.map → health-DNTM72GJ.js.map} +1 -1
  361. package/dist/cli-bundle/chunks/history-RYKLC72X.js +20 -0
  362. package/dist/cli-bundle/chunks/{history-SGRRS72R.js → history-SGPYRAFT.js} +10 -8
  363. package/dist/cli-bundle/chunks/{history-compact-LOED43R3.js → history-compact-3F6VELO7.js} +26 -30
  364. package/dist/cli-bundle/chunks/history-compact-3F6VELO7.js.map +7 -0
  365. package/dist/cli-bundle/chunks/{history-compact-V5DNAQHH.js → history-compact-656Y2TN4.js} +27 -31
  366. package/dist/cli-bundle/chunks/history-compact-656Y2TN4.js.map +1 -0
  367. package/dist/cli-bundle/chunks/history-redact-4H3FCKF3.js +21 -0
  368. package/dist/cli-bundle/chunks/{history-redact-IRL7WJ3E.js → history-redact-54ICFKXM.js} +11 -9
  369. package/dist/cli-bundle/chunks/{history-repair-PGYQJMGD.js → history-repair-4N6SDVHK.js} +25 -30
  370. package/dist/cli-bundle/chunks/history-repair-4N6SDVHK.js.map +7 -0
  371. package/dist/cli-bundle/chunks/{history-repair-4WVBVHFR.js → history-repair-EVTO6LIH.js} +26 -31
  372. package/dist/cli-bundle/chunks/history-repair-EVTO6LIH.js.map +1 -0
  373. package/dist/cli-bundle/chunks/init-RPIPQUNV.js +32 -0
  374. package/dist/cli-bundle/chunks/init-SKQAESQS.js +28 -0
  375. package/dist/cli-bundle/chunks/{learnings-4FJY7WIW.js → learnings-2HTPZNGZ.js} +10 -8
  376. package/dist/cli-bundle/chunks/{learnings-4FJY7WIW.js.map → learnings-2HTPZNGZ.js.map} +1 -1
  377. package/dist/cli-bundle/chunks/{learnings-4BHWFFUV.js → learnings-YBIHY3D6.js} +12 -10
  378. package/dist/cli-bundle/chunks/{learnings-4BHWFFUV.js.map → learnings-YBIHY3D6.js.map} +1 -1
  379. package/dist/cli-bundle/chunks/{list-472TIOVK.js → list-64LHZ3HM.js} +10 -8
  380. package/dist/cli-bundle/chunks/{list-D7BF5CL2.js → list-7LXBTEKI.js} +10 -8
  381. package/dist/cli-bundle/chunks/{next-SFQZVX2B.js → next-7ODPAQ4U.js} +22 -18
  382. package/dist/cli-bundle/chunks/{next-SFQZVX2B.js.map → next-7ODPAQ4U.js.map} +1 -1
  383. package/dist/cli-bundle/chunks/{next-D5STGWI2.js → next-ODJUM4ZM.js} +24 -20
  384. package/dist/cli-bundle/chunks/{next-D5STGWI2.js.map → next-ODJUM4ZM.js.map} +1 -1
  385. package/dist/cli-bundle/chunks/{notes-6KNOSLIT.js → notes-72YXN5JX.js} +10 -8
  386. package/dist/cli-bundle/chunks/{notes-6KNOSLIT.js.map → notes-72YXN5JX.js.map} +1 -1
  387. package/dist/cli-bundle/chunks/{notes-W4UEICGF.js → notes-NJ7IQJX4.js} +12 -10
  388. package/dist/cli-bundle/chunks/{notes-W4UEICGF.js.map → notes-NJ7IQJX4.js.map} +1 -1
  389. package/dist/cli-bundle/chunks/{plan-MJQW5XK3.js → plan-R4NDQ27E.js} +18 -15
  390. package/dist/cli-bundle/chunks/{plan-MJQW5XK3.js.map → plan-R4NDQ27E.js.map} +1 -1
  391. package/dist/cli-bundle/chunks/{plan-JO6V7BXO.js → plan-XWY5T67S.js} +20 -17
  392. package/dist/cli-bundle/chunks/{plan-JO6V7BXO.js.map → plan-XWY5T67S.js.map} +1 -1
  393. package/dist/cli-bundle/chunks/profile-XQWEQKS3.js +397 -0
  394. package/dist/cli-bundle/chunks/profile-XQWEQKS3.js.map +1 -0
  395. package/dist/cli-bundle/chunks/profile-YRDHLMRO.js +400 -0
  396. package/dist/cli-bundle/chunks/profile-YRDHLMRO.js.map +7 -0
  397. package/dist/cli-bundle/chunks/{register-list-query-ELBHCCFI.js → register-list-query-5H66WFYF.js} +24 -21
  398. package/dist/cli-bundle/chunks/register-list-query-5H66WFYF.js.map +7 -0
  399. package/dist/cli-bundle/chunks/{register-list-query-GAPQ6DM3.js → register-list-query-FB3FNDLZ.js} +25 -22
  400. package/dist/cli-bundle/chunks/{register-list-query-ELBHCCFI.js.map → register-list-query-FB3FNDLZ.js.map} +1 -7
  401. package/dist/cli-bundle/chunks/{register-mutation-SJWMVIJ2.js → register-mutation-UJO23C7R.js} +42 -39
  402. package/dist/cli-bundle/chunks/{register-mutation-SJWMVIJ2.js.map → register-mutation-UJO23C7R.js.map} +1 -1
  403. package/dist/cli-bundle/chunks/{register-mutation-ROFE2YPC.js → register-mutation-Z2ETYHKS.js} +40 -37
  404. package/dist/cli-bundle/chunks/{register-mutation-ROFE2YPC.js.map → register-mutation-Z2ETYHKS.js.map} +1 -1
  405. package/dist/cli-bundle/chunks/{register-operations-MEKU3AKC.js → register-operations-A3XAM5J7.js} +39 -36
  406. package/dist/cli-bundle/chunks/{register-operations-MEKU3AKC.js.map → register-operations-A3XAM5J7.js.map} +1 -1
  407. package/dist/cli-bundle/chunks/{register-operations-IADFVH53.js → register-operations-SG7HBSUP.js} +37 -34
  408. package/dist/cli-bundle/chunks/{register-operations-IADFVH53.js.map → register-operations-SG7HBSUP.js.map} +1 -1
  409. package/dist/cli-bundle/chunks/{register-setup-AJWUSSQX.js → register-setup-I45OGJUV.js} +25 -19
  410. package/dist/cli-bundle/chunks/{register-setup-AJWUSSQX.js.map → register-setup-I45OGJUV.js.map} +1 -1
  411. package/dist/cli-bundle/chunks/{register-setup-3QJY43CY.js → register-setup-K6U3NVY5.js} +23 -17
  412. package/dist/cli-bundle/chunks/{register-setup-3QJY43CY.js.map → register-setup-K6U3NVY5.js.map} +1 -1
  413. package/dist/cli-bundle/chunks/restore-PXOFL6AM.js +19 -0
  414. package/dist/cli-bundle/chunks/{restore-44IHMMZZ.js → restore-YJ2ET6AT.js} +11 -9
  415. package/dist/cli-bundle/chunks/{scheduling-shortcuts-TSBK4AY5.js → scheduling-shortcuts-SSC4MYWQ.js} +14 -12
  416. package/dist/cli-bundle/chunks/{scheduling-shortcuts-TSBK4AY5.js.map → scheduling-shortcuts-SSC4MYWQ.js.map} +1 -1
  417. package/dist/cli-bundle/chunks/{scheduling-shortcuts-OLHNLAZY.js → scheduling-shortcuts-ULRG7MNP.js} +16 -14
  418. package/dist/cli-bundle/chunks/{scheduling-shortcuts-OLHNLAZY.js.map → scheduling-shortcuts-ULRG7MNP.js.map} +1 -1
  419. package/dist/cli-bundle/chunks/{schema-VBCELP5G.js → schema-2PUXCZ25.js} +10 -7
  420. package/dist/cli-bundle/chunks/{schema-IB2NZZWD.js → schema-Y6DXXK2F.js} +10 -7
  421. package/dist/cli-bundle/chunks/{search-7UBETML4.js → search-3S72CTD6.js} +13 -10
  422. package/dist/cli-bundle/chunks/{search-R227JOL6.js → search-WNUNBQXO.js} +13 -10
  423. package/dist/cli-bundle/chunks/{stats-FAG7COEH.js → stats-IJYTRQGV.js} +13 -10
  424. package/dist/cli-bundle/chunks/{stats-FAG7COEH.js.map → stats-IJYTRQGV.js.map} +1 -1
  425. package/dist/cli-bundle/chunks/{stats-MCK7PLYS.js → stats-L2D5Y2O5.js} +15 -12
  426. package/dist/cli-bundle/chunks/{stats-MCK7PLYS.js.map → stats-L2D5Y2O5.js.map} +1 -1
  427. package/dist/cli-bundle/chunks/{telemetry-DRPDZMAO.js → telemetry-L2CVOKVN.js} +11 -8
  428. package/dist/cli-bundle/chunks/{telemetry-DRPDZMAO.js.map → telemetry-L2CVOKVN.js.map} +1 -1
  429. package/dist/cli-bundle/chunks/{telemetry-GVVUQSJQ.js → telemetry-QBYWQA76.js} +13 -10
  430. package/dist/cli-bundle/chunks/{telemetry-GVVUQSJQ.js.map → telemetry-QBYWQA76.js.map} +1 -1
  431. package/dist/cli-bundle/chunks/{test-QY44WAMR.js → test-DQ2QFJ7W.js} +21 -15
  432. package/dist/cli-bundle/chunks/test-W7QBLVJS.js +41 -0
  433. package/dist/cli-bundle/chunks/{test-all-USPJHXFR.js → test-all-636NTRTT.js} +26 -19
  434. package/dist/cli-bundle/chunks/{test-all-USPJHXFR.js.map → test-all-636NTRTT.js.map} +1 -1
  435. package/dist/cli-bundle/chunks/{test-all-QD6QAEG7.js → test-all-DWYK3RG6.js} +24 -17
  436. package/dist/cli-bundle/chunks/{test-all-QD6QAEG7.js.map → test-all-DWYK3RG6.js.map} +1 -1
  437. package/dist/cli-bundle/chunks/test-runs-245OINZR.js +28 -0
  438. package/dist/cli-bundle/chunks/test-runs-245OINZR.js.map +1 -0
  439. package/dist/cli-bundle/chunks/test-runs-ZRD4GCTT.js +24 -0
  440. package/dist/cli-bundle/chunks/test-runs-ZRD4GCTT.js.map +7 -0
  441. package/dist/cli-bundle/chunks/update-SFLZPJXX.js +30 -0
  442. package/dist/cli-bundle/chunks/update-SFLZPJXX.js.map +1 -0
  443. package/dist/cli-bundle/chunks/update-SJZ6S77U.js +26 -0
  444. package/dist/cli-bundle/chunks/update-SJZ6S77U.js.map +7 -0
  445. package/dist/cli-bundle/chunks/{update-many-RATAARHU.js → update-many-DC7X3EWM.js} +32 -29
  446. package/dist/cli-bundle/chunks/{update-many-RATAARHU.js.map → update-many-DC7X3EWM.js.map} +1 -1
  447. package/dist/cli-bundle/chunks/{update-many-BEMTDA2X.js → update-many-SLLAMHT7.js} +34 -31
  448. package/dist/cli-bundle/chunks/{update-many-BEMTDA2X.js.map → update-many-SLLAMHT7.js.map} +1 -1
  449. package/dist/cli-bundle/chunks/{upgrade-VU46BLJZ.js → upgrade-HFFXLZJA.js} +19 -12
  450. package/dist/cli-bundle/chunks/{upgrade-VU46BLJZ.js.map → upgrade-HFFXLZJA.js.map} +1 -1
  451. package/dist/cli-bundle/chunks/{upgrade-NWMR3VQL.js → upgrade-UYQKM7RF.js} +21 -14
  452. package/dist/cli-bundle/chunks/{upgrade-NWMR3VQL.js.map → upgrade-UYQKM7RF.js.map} +1 -1
  453. package/dist/cli-bundle/chunks/{validate-NRY6MFXN.js → validate-PA4FDTOV.js} +35 -28
  454. package/dist/cli-bundle/chunks/validate-PA4FDTOV.js.map +7 -0
  455. package/dist/cli-bundle/chunks/{validate-GAJ6FUSI.js → validate-Z7L75YEJ.js} +35 -28
  456. package/dist/cli-bundle/chunks/validate-Z7L75YEJ.js.map +1 -0
  457. package/dist/cli-bundle/main.js +173 -57
  458. package/dist/cli-bundle/main.js.map +2 -2
  459. package/dist/cli-bundle/sdk-runtime.js +247 -0
  460. package/dist/cli-bundle/sdk-runtime.js.map +7 -0
  461. package/dist/cli-bundle/sdk-testing.js +101 -0
  462. package/dist/cli-bundle/sdk-testing.js.map +7 -0
  463. package/dist/cli-bundle/sdk.js +787 -0
  464. package/dist/cli-bundle/sdk.js.map +7 -0
  465. package/dist/core/config/nested-settings.d.ts +4 -3
  466. package/dist/core/config/nested-settings.js +17 -6
  467. package/dist/core/config/nested-settings.js.map +1 -1
  468. package/dist/core/extensions/activation-summary.d.ts +6 -0
  469. package/dist/core/extensions/activation-summary.js +10 -4
  470. package/dist/core/extensions/activation-summary.js.map +1 -1
  471. package/dist/core/extensions/capability-usage.d.ts +6 -0
  472. package/dist/core/extensions/capability-usage.js +10 -4
  473. package/dist/core/extensions/capability-usage.js.map +1 -1
  474. package/dist/core/extensions/extension-types.d.ts +6 -2
  475. package/dist/core/extensions/extension-types.js +2 -2
  476. package/dist/core/extensions/extension-types.js.map +1 -1
  477. package/dist/core/extensions/loader.d.ts +3 -0
  478. package/dist/core/extensions/loader.js +11 -19
  479. package/dist/core/extensions/loader.js.map +1 -1
  480. package/dist/core/history/history-rewrite.d.ts +10 -0
  481. package/dist/core/history/history-rewrite.js +28 -4
  482. package/dist/core/history/history-rewrite.js.map +1 -1
  483. package/dist/core/item/parent-reference-policy.d.ts +9 -1
  484. package/dist/core/item/parent-reference-policy.js +28 -4
  485. package/dist/core/item/parent-reference-policy.js.map +1 -1
  486. package/dist/core/item/type-registry.d.ts +1 -0
  487. package/dist/core/item/type-registry.js +153 -177
  488. package/dist/core/item/type-registry.js.map +1 -1
  489. package/dist/core/lock/lock.d.ts +28 -1
  490. package/dist/core/lock/lock.js +254 -20
  491. package/dist/core/lock/lock.js.map +1 -1
  492. package/dist/core/search/background-refresh.js +7 -19
  493. package/dist/core/search/background-refresh.js.map +1 -1
  494. package/dist/core/search/http-client.d.ts +0 -1
  495. package/dist/core/search/http-client.js +3 -3
  496. package/dist/core/search/http-client.js.map +1 -1
  497. package/dist/core/shared/constants.js +3 -2
  498. package/dist/core/shared/constants.js.map +1 -1
  499. package/dist/core/shared/errors.d.ts +1 -0
  500. package/dist/core/shared/errors.js +2 -2
  501. package/dist/core/shared/errors.js.map +1 -1
  502. package/dist/core/shared/primitives.d.ts +12 -0
  503. package/dist/core/shared/primitives.js +29 -2
  504. package/dist/core/shared/primitives.js.map +1 -1
  505. package/dist/core/store/item-store.js +3 -3
  506. package/dist/core/store/item-store.js.map +1 -1
  507. package/dist/core/store/settings-validator.d.ts +1 -0
  508. package/dist/core/store/settings-validator.js +6 -3
  509. package/dist/core/store/settings-validator.js.map +1 -1
  510. package/dist/core/store/settings.js +3 -3
  511. package/dist/core/store/settings.js.map +1 -1
  512. package/dist/core/validate/fix-planning.d.ts +0 -2
  513. package/dist/core/validate/fix-planning.js +3 -3
  514. package/dist/core/validate/fix-planning.js.map +1 -1
  515. package/dist/sdk/cli-contracts/commander-mutation-options.js +3 -2
  516. package/dist/sdk/cli-contracts/commander-mutation-options.js.map +1 -1
  517. package/dist/sdk/cli-contracts/flag-contracts.js +5 -2
  518. package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
  519. package/dist/sdk/cli-contracts/tool-option-contracts.js +4 -2
  520. package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
  521. package/dist/sdk/cli-contracts/tool-schema.js +55 -94
  522. package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
  523. package/dist/sdk/errors.d.ts +21 -2
  524. package/dist/sdk/errors.js +8 -2
  525. package/dist/sdk/errors.js.map +1 -1
  526. package/dist/sdk/package-import-adapters.d.ts +90 -2
  527. package/dist/sdk/package-import-adapters.js +275 -3
  528. package/dist/sdk/package-import-adapters.js.map +1 -1
  529. package/dist/sdk/runtime.d.ts +1 -1
  530. package/dist/sdk/runtime.js +3 -3
  531. package/dist/sdk/runtime.js.map +1 -1
  532. package/dist/sdk/testing.js +41 -19
  533. package/dist/sdk/testing.js.map +1 -1
  534. package/dist/types.d.ts +6 -0
  535. package/dist/types.js +2 -2
  536. package/dist/types.js.map +1 -1
  537. package/docs/ARCHITECTURE.md +27 -0
  538. package/docs/CONFIGURATION.md +3 -0
  539. package/docs/README.md +1 -0
  540. package/docs/SDK_PRIMITIVE_INVENTORY.md +55 -0
  541. package/docs/TESTING.md +5 -1
  542. package/docs/examples/ci/github-actions-pm-extension-gate.yml +5 -5
  543. package/docs/examples/ci/gitlab-ci-pm-extension-gate.yml +1 -1
  544. package/docs/examples/ci/jenkins-pm-extension-gate.Jenkinsfile +1 -1
  545. package/package.json +14 -26
  546. package/packages/pm-beads/extensions/beads/package.json +3 -0
  547. package/packages/pm-beads/extensions/beads/runtime-loader.ts +50 -41
  548. package/packages/pm-beads/extensions/beads/runtime.ts +106 -223
  549. package/packages/pm-calendar/extensions/calendar/package.json +3 -0
  550. package/packages/pm-calendar/extensions/calendar/runtime.ts +21 -18
  551. package/packages/pm-command-kit/extensions/command-kit/package.json +3 -0
  552. package/packages/pm-governance-audit/extensions/governance-audit/package.json +3 -0
  553. package/packages/pm-guide-shell/extensions/guide-shell/package.json +3 -0
  554. package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +9 -11
  555. package/packages/pm-kanban/extensions/kanban/package.json +3 -0
  556. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/package.json +3 -0
  557. package/packages/pm-search-advanced/extensions/search-advanced/package.json +3 -0
  558. package/packages/pm-templates/extensions/templates/package.json +3 -0
  559. package/packages/pm-todos/extensions/todos/package.json +3 -0
  560. package/packages/pm-todos/extensions/todos/runtime-loader.ts +62 -72
  561. package/packages/pm-todos/extensions/todos/runtime.ts +61 -257
  562. package/plugins/pm-claude/scripts/pm-mcp-server.mjs +73 -31
  563. package/plugins/pm-codex/scripts/pm-mcp-server.mjs +80 -34
  564. package/scripts/bundle-cli.mjs +12 -2
  565. package/scripts/install.ps1 +7 -7
  566. package/dist/cli-bundle/chunks/activity-BIML7K2D.js +0 -16
  567. package/dist/cli-bundle/chunks/chunk-32IUNTG4.js.map +0 -1
  568. package/dist/cli-bundle/chunks/chunk-4EXFFP7T.js.map +0 -7
  569. package/dist/cli-bundle/chunks/chunk-4WB6S4YX.js.map +0 -1
  570. package/dist/cli-bundle/chunks/chunk-572FKBRL.js.map +0 -1
  571. package/dist/cli-bundle/chunks/chunk-67LARBDL.js.map +0 -1
  572. package/dist/cli-bundle/chunks/chunk-6CDCWKSX.js.map +0 -1
  573. package/dist/cli-bundle/chunks/chunk-6KRFL33E.js.map +0 -7
  574. package/dist/cli-bundle/chunks/chunk-AJHYQCBJ.js.map +0 -7
  575. package/dist/cli-bundle/chunks/chunk-B4O5S7I3.js.map +0 -7
  576. package/dist/cli-bundle/chunks/chunk-CXR3CMBQ.js.map +0 -1
  577. package/dist/cli-bundle/chunks/chunk-ECU6MMTQ.js.map +0 -1
  578. package/dist/cli-bundle/chunks/chunk-EJ2OCBHF.js.map +0 -1
  579. package/dist/cli-bundle/chunks/chunk-ERG65A2L.js.map +0 -1
  580. package/dist/cli-bundle/chunks/chunk-FUFFPIYA.js.map +0 -7
  581. package/dist/cli-bundle/chunks/chunk-HB4FAT3O.js.map +0 -7
  582. package/dist/cli-bundle/chunks/chunk-HQAF23Q2.js.map +0 -7
  583. package/dist/cli-bundle/chunks/chunk-JPATY4SE.js.map +0 -7
  584. package/dist/cli-bundle/chunks/chunk-KHVGM5CS.js.map +0 -7
  585. package/dist/cli-bundle/chunks/chunk-KS6ATO47.js.map +0 -7
  586. package/dist/cli-bundle/chunks/chunk-L4SLHV6G.js.map +0 -1
  587. package/dist/cli-bundle/chunks/chunk-MHRS5FUX.js.map +0 -1
  588. package/dist/cli-bundle/chunks/chunk-NZ7QIUP5.js.map +0 -7
  589. package/dist/cli-bundle/chunks/chunk-OGLGI22K.js.map +0 -1
  590. package/dist/cli-bundle/chunks/chunk-RAHINBVP.js.map +0 -7
  591. package/dist/cli-bundle/chunks/chunk-RJH5VQHW.js.map +0 -1
  592. package/dist/cli-bundle/chunks/chunk-SYE6WMV6.js.map +0 -1
  593. package/dist/cli-bundle/chunks/chunk-TQ6AX5SQ.js.map +0 -7
  594. package/dist/cli-bundle/chunks/chunk-U3S2B7TA.js.map +0 -1
  595. package/dist/cli-bundle/chunks/chunk-WRYERRZX.js.map +0 -7
  596. package/dist/cli-bundle/chunks/chunk-WYOIIFSE.js.map +0 -7
  597. package/dist/cli-bundle/chunks/chunk-XRYSCRZR.js.map +0 -7
  598. package/dist/cli-bundle/chunks/chunk-YF746GTH.js.map +0 -1
  599. package/dist/cli-bundle/chunks/chunk-YSDFIY7N.js.map +0 -1
  600. package/dist/cli-bundle/chunks/chunk-Z4DGFQDH.js.map +0 -1
  601. package/dist/cli-bundle/chunks/claim-2BGBGSVI.js.map +0 -7
  602. package/dist/cli-bundle/chunks/claim-5GU7OE67.js.map +0 -1
  603. package/dist/cli-bundle/chunks/close-6YODBUIV.js +0 -14
  604. package/dist/cli-bundle/chunks/create-Z7YCH3BE.js +0 -28
  605. package/dist/cli-bundle/chunks/files-6SGKHS6O.js.map +0 -1
  606. package/dist/cli-bundle/chunks/files-FUYPSOFJ.js.map +0 -7
  607. package/dist/cli-bundle/chunks/history-CGNQJXFE.js +0 -18
  608. package/dist/cli-bundle/chunks/history-compact-LOED43R3.js.map +0 -7
  609. package/dist/cli-bundle/chunks/history-compact-V5DNAQHH.js.map +0 -1
  610. package/dist/cli-bundle/chunks/history-redact-N3JK7VBW.js +0 -19
  611. package/dist/cli-bundle/chunks/history-repair-4WVBVHFR.js.map +0 -1
  612. package/dist/cli-bundle/chunks/history-repair-PGYQJMGD.js.map +0 -7
  613. package/dist/cli-bundle/chunks/init-4GESW7RM.js +0 -26
  614. package/dist/cli-bundle/chunks/init-XIDPABA4.js +0 -22
  615. package/dist/cli-bundle/chunks/profile-3TOTMUR4.js +0 -1243
  616. package/dist/cli-bundle/chunks/profile-3TOTMUR4.js.map +0 -7
  617. package/dist/cli-bundle/chunks/profile-WIQY2KCV.js +0 -1205
  618. package/dist/cli-bundle/chunks/profile-WIQY2KCV.js.map +0 -1
  619. package/dist/cli-bundle/chunks/register-list-query-GAPQ6DM3.js.map +0 -1
  620. package/dist/cli-bundle/chunks/restore-EXHU34EU.js +0 -17
  621. package/dist/cli-bundle/chunks/test-SY76DZTO.js +0 -35
  622. package/dist/cli-bundle/chunks/update-A7EICML6.js +0 -24
  623. package/dist/cli-bundle/chunks/update-IKJZWLQC.js +0 -28
  624. package/dist/cli-bundle/chunks/validate-GAJ6FUSI.js.map +0 -1
  625. package/dist/cli-bundle/chunks/validate-NRY6MFXN.js.map +0 -7
  626. /package/dist/cli-bundle/chunks/{activity-BIML7K2D.js.map → activity-4XQIDNM5.js.map} +0 -0
  627. /package/dist/cli-bundle/chunks/{activity-5YWLSPGE.js.map → activity-YKAKZTZ4.js.map} +0 -0
  628. /package/dist/cli-bundle/chunks/{chunk-QCDTQCMW.js.map → chunk-5JE6SMYS.js.map} +0 -0
  629. /package/dist/cli-bundle/chunks/{chunk-5JIWFWOZ.js.map → chunk-N6DNM2FA.js.map} +0 -0
  630. /package/dist/cli-bundle/chunks/{chunk-GVJE5T7Q.js.map → chunk-NER3KUUS.js.map} +0 -0
  631. /package/dist/cli-bundle/chunks/{chunk-MEZZZBYX.js.map → chunk-PDXT6Q55.js.map} +0 -0
  632. /package/dist/cli-bundle/chunks/{chunk-YVKZ3ANP.js.map → chunk-RX3HQSYG.js.map} +0 -0
  633. /package/dist/cli-bundle/chunks/{chunk-LOWVNZBZ.js.map → chunk-S4APD35C.js.map} +0 -0
  634. /package/dist/cli-bundle/chunks/{chunk-6NYJGMTY.js.map → chunk-T35XLYZF.js.map} +0 -0
  635. /package/dist/cli-bundle/chunks/{chunk-BE2SR6QL.js.map → chunk-TT42JUMF.js.map} +0 -0
  636. /package/dist/cli-bundle/chunks/{chunk-SU3TB4NS.js.map → chunk-YOF5VPKM.js.map} +0 -0
  637. /package/dist/cli-bundle/chunks/{chunk-5E7N4T2Z.js.map → chunk-ZMD35NYG.js.map} +0 -0
  638. /package/dist/cli-bundle/chunks/{close-AFVKPR57.js.map → close-3YRR3XY6.js.map} +0 -0
  639. /package/dist/cli-bundle/chunks/{close-6YODBUIV.js.map → close-OB2Y4QP5.js.map} +0 -0
  640. /package/dist/cli-bundle/chunks/{context-PKCEHQY3.js.map → context-4OQGIPSO.js.map} +0 -0
  641. /package/dist/cli-bundle/chunks/{context-OYXRGY7S.js.map → context-WLA6IAWE.js.map} +0 -0
  642. /package/dist/cli-bundle/chunks/{create-Z7YCH3BE.js.map → contracts-HXJLKCRI.js.map} +0 -0
  643. /package/dist/cli-bundle/chunks/{create-PM45M6PE.js.map → contracts-OJEXMKVW.js.map} +0 -0
  644. /package/dist/cli-bundle/chunks/{extension-BNINIMT7.js.map → create-WKOZKPQR.js.map} +0 -0
  645. /package/dist/cli-bundle/chunks/{extension-QWE4YYK5.js.map → create-XWWQFQ6S.js.map} +0 -0
  646. /package/dist/cli-bundle/chunks/{history-CGNQJXFE.js.map → extension-NBAH62ML.js.map} +0 -0
  647. /package/dist/cli-bundle/chunks/{history-SGRRS72R.js.map → extension-ZF6ZZPOU.js.map} +0 -0
  648. /package/dist/cli-bundle/chunks/{history-redact-N3JK7VBW.js.map → history-RYKLC72X.js.map} +0 -0
  649. /package/dist/cli-bundle/chunks/{history-redact-IRL7WJ3E.js.map → history-SGPYRAFT.js.map} +0 -0
  650. /package/dist/cli-bundle/chunks/{init-XIDPABA4.js.map → history-redact-4H3FCKF3.js.map} +0 -0
  651. /package/dist/cli-bundle/chunks/{init-4GESW7RM.js.map → history-redact-54ICFKXM.js.map} +0 -0
  652. /package/dist/cli-bundle/chunks/{list-D7BF5CL2.js.map → init-RPIPQUNV.js.map} +0 -0
  653. /package/dist/cli-bundle/chunks/{list-472TIOVK.js.map → init-SKQAESQS.js.map} +0 -0
  654. /package/dist/cli-bundle/chunks/{restore-EXHU34EU.js.map → list-64LHZ3HM.js.map} +0 -0
  655. /package/dist/cli-bundle/chunks/{restore-44IHMMZZ.js.map → list-7LXBTEKI.js.map} +0 -0
  656. /package/dist/cli-bundle/chunks/{schema-VBCELP5G.js.map → restore-PXOFL6AM.js.map} +0 -0
  657. /package/dist/cli-bundle/chunks/{schema-IB2NZZWD.js.map → restore-YJ2ET6AT.js.map} +0 -0
  658. /package/dist/cli-bundle/chunks/{search-R227JOL6.js.map → schema-2PUXCZ25.js.map} +0 -0
  659. /package/dist/cli-bundle/chunks/{search-7UBETML4.js.map → schema-Y6DXXK2F.js.map} +0 -0
  660. /package/dist/cli-bundle/chunks/{test-QY44WAMR.js.map → search-3S72CTD6.js.map} +0 -0
  661. /package/dist/cli-bundle/chunks/{test-SY76DZTO.js.map → search-WNUNBQXO.js.map} +0 -0
  662. /package/dist/cli-bundle/chunks/{update-IKJZWLQC.js.map → test-DQ2QFJ7W.js.map} +0 -0
  663. /package/dist/cli-bundle/chunks/{update-A7EICML6.js.map → test-W7QBLVJS.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../../core/profile/profile-presets.ts", "../../../../../../../../core/profile/profile-lint.ts"],
4
+ "sourcesContent": ["/**\n * @module core/profile/profile-presets\n *\n * Defines the project-profile model and the first-party archetype presets that\n * compose the existing schema, config, template, and package primitives into a\n * single declarative bundle. A profile is a higher-level customization unit than\n * a {@link TYPE_PRESET_DEFINITIONS type preset}: where a type preset only stages\n * item types, a profile stages item types, custom statuses, custom fields,\n * per-type workflows, configuration knobs, create templates, and recommended\n * packages so a fresh tracker can be tailored to an archetype (agile delivery,\n * operations, or research) in one idempotent `pm profile apply` invocation.\n *\n * The raw type definitions are shared verbatim with {@link TYPE_PRESET_DEFINITIONS}\n * so `pm profile apply agile` registers byte-identical item types to\n * `pm init --type-preset agile` and `pm schema apply-preset agile`. Everything in\n * this module is pure data plus name normalization; the planning and apply logic\n * lives in {@link module:core/profile/profile-plan} and `cli/commands/profile`.\n */\nimport type { RawAddTypeInput } from \"../schema/item-types-file.js\";\nimport type { RawAddStatusInput } from \"../schema/status-defs-file.js\";\nimport type { RawAddFieldInput } from \"../schema/fields-file.js\";\nimport type { TypeWorkflowDefinition } from \"../../types.js\";\nimport { TYPE_PRESET_DEFINITIONS } from \"../schema/type-presets.js\";\n\n/**\n * Repeatable create-flag values used to stage a profile template. Mirrors the\n * stored-template option shape (`Record<flag, string | string[]>`) accepted by\n * `pm templates save` without importing the CLI module into core.\n */\nexport type ProfileTemplateOptions = Readonly<Record<string, string | readonly string[]>>;\n\n/**\n * A single nested-settings knob a profile stages during apply. The `key` is a\n * {@link module:core/config/nested-settings} descriptor key (snake_case) and the\n * `value` is the raw string the descriptor parser coerces into a typed leaf, so\n * profile config reuses exactly the same validation as `pm config set`.\n */\nexport interface ProfileConfigEntry {\n /** Nested-settings descriptor key, e.g. `search_provider`. */\n key: string;\n /** Raw value parsed by the descriptor (e.g. `\"bm25\"`, `\"20\"`). */\n value: string;\n /** Short human-facing rationale surfaced in profile descriptions. */\n summary: string;\n}\n\n/**\n * A named create template a profile stages into `<pmRoot>/templates/<name>.json`\n * so operators can immediately `pm create --template <name>`.\n */\nexport interface ProfileTemplateEntry {\n /** Template name (matches the `pm templates` naming rules). */\n name: string;\n /** Create-flag option payload stored for the template. */\n options: ProfileTemplateOptions;\n}\n\n/**\n * A package the profile recommends but never auto-installs. Apply surfaces these\n * as advisory `pm package install` hints, keeping profile application offline and\n * side-effect-free with respect to the package registry.\n */\nexport interface ProfilePackageRecommendation {\n /** Catalog alias or install spec, e.g. `templates` or `npm:@unbrained/pm-templates`. */\n spec: string;\n /** Why this archetype benefits from the package. */\n reason: string;\n}\n\n/**\n * The complete declarative definition of a project profile. Every dimension is\n * optional-by-emptiness: an empty array simply stages nothing for that surface.\n */\nexport interface ProjectProfileDefinition {\n /** Stable lowercase profile identifier, e.g. `agile`. */\n name: string;\n /** Human-facing display title. */\n title: string;\n /** One-line description of the archetype the profile tailors the tracker for. */\n summary: string;\n /** Item types to upsert (shared with the matching type preset). */\n types: readonly RawAddTypeInput[];\n /** Custom statuses to upsert. */\n statuses: readonly RawAddStatusInput[];\n /** Custom fields to upsert. */\n fields: readonly RawAddFieldInput[];\n /** Per-type workflow transition allow-lists to stage into settings. */\n workflows: readonly TypeWorkflowDefinition[];\n /** Nested-settings knobs to stage. */\n config: readonly ProfileConfigEntry[];\n /** Create templates to stage. */\n templates: readonly ProfileTemplateEntry[];\n /** Advisory package recommendations (never auto-installed). */\n packages: readonly ProfilePackageRecommendation[];\n}\n\n/**\n * The shape an extension passes to `api.registerProfile(profile)`.\n *\n * Only `name` and `title` are required; every other dimension is optional and\n * defaults to an empty array (and `summary` to an empty string) during\n * registration, matching the \"optional-by-emptiness\" model of\n * {@link ProjectProfileDefinition}. The loader normalizes a registration input\n * into a full {@link ProjectProfileDefinition} before storing it, so a sparse\n * `{ name, title }` archetype is a first-class, fully-typed call — no casts —\n * while a complete definition (a built-in or `defineProjectProfile`-typed value)\n * also satisfies it.\n */\nexport type ProjectProfileRegistrationInput = Pick<ProjectProfileDefinition, \"name\" | \"title\"> &\n Partial<Omit<ProjectProfileDefinition, \"name\" | \"title\">>;\n\n/**\n * Ordered list of first-party profile names. Drives CLI help, completion,\n * contracts, and the `pm profile list` ordering.\n */\nexport const PROFILE_NAMES = [\"agile\", \"ops\", \"research\"] as const;\n/**\n * Restricts profile name values accepted by command, SDK, and storage contracts.\n */\nexport type ProfileName = (typeof PROFILE_NAMES)[number];\n\n/**\n * First-party archetype profiles. Each composes its matching\n * {@link TYPE_PRESET_DEFINITIONS} entry (so item types stay identical to the\n * standalone type preset) with archetype-appropriate statuses, fields, a primary\n * workflow, offline-friendly search config, a starter template, and package\n * recommendations.\n */\nexport const BUILTIN_PROFILES: Record<ProfileName, ProjectProfileDefinition> = {\n agile: {\n name: \"agile\",\n title: \"Agile delivery\",\n summary: \"Story/Spike delivery with a review stage, story points, and acceptance ownership.\",\n types: TYPE_PRESET_DEFINITIONS.agile,\n statuses: [\n {\n id: \"review\",\n roles: [\"active\"],\n aliases: [\"in-review\"],\n description: \"Work is implementation-complete and awaiting peer review.\",\n },\n ],\n fields: [\n {\n key: \"story_points\",\n type: \"number\",\n commands: [\"create\", \"update\", \"list\"],\n description: \"Relative estimation size for a story or spike.\",\n aliases: [\"points\"],\n },\n {\n key: \"acceptance_owner\",\n type: \"string\",\n commands: [\"create\", \"update\", \"list\"],\n description: \"Stakeholder accountable for accepting the delivered story.\",\n aliases: [\"acceptor\"],\n },\n ],\n workflows: [\n {\n type: \"Story\",\n allowed_transitions: [\n [\"open\", \"in_progress\"],\n [\"in_progress\", \"review\"],\n [\"review\", \"in_progress\"],\n [\"review\", \"closed\"],\n [\"in_progress\", \"blocked\"],\n [\"blocked\", \"in_progress\"],\n ],\n },\n ],\n config: [\n { key: \"search_provider\", value: \"bm25\", summary: \"Offline BM25 lexical search works without an embedding service.\" },\n { key: \"search_max_results\", value: \"20\", summary: \"Sprint-sized result cap for quick triage.\" },\n ],\n templates: [\n {\n name: \"story\",\n options: {\n type: \"Story\",\n priority: \"2\",\n tags: \"story\",\n acceptanceCriteria: \"Story delivers the stated user outcome with tests and docs updated.\",\n body: \"## As a\\n\\n## I want\\n\\n## So that\\n\\n## Acceptance\\n- [ ] \\n\",\n },\n },\n ],\n packages: [\n { spec: \"templates\", reason: \"Reusable create templates for recurring story shapes.\" },\n { spec: \"calendar\", reason: \"Sprint and iteration scheduling views.\" },\n { spec: \"search-advanced\", reason: \"Richer retrieval as the backlog grows.\" },\n ],\n },\n ops: {\n name: \"ops\",\n title: \"Operations\",\n summary: \"Incident/Runbook response with mitigation and monitoring stages, severity, and service fields.\",\n types: TYPE_PRESET_DEFINITIONS.ops,\n statuses: [\n {\n id: \"mitigating\",\n roles: [\"active\"],\n aliases: [\"mitigation\"],\n description: \"Active mitigation is underway to restore service.\",\n },\n {\n id: \"monitoring\",\n roles: [\"active\"],\n aliases: [\"observing\"],\n description: \"Mitigation applied; monitoring for recurrence before closure.\",\n },\n ],\n fields: [\n {\n key: \"severity\",\n type: \"string\",\n commands: [\"create\", \"update\", \"list\"],\n description: \"Incident severity classification (e.g. sev1, sev2, sev3).\",\n aliases: [\"sev\"],\n },\n {\n key: \"service\",\n type: \"string\",\n commands: [\"create\", \"update\", \"list\"],\n description: \"Primary affected service or component.\",\n },\n ],\n workflows: [\n {\n type: \"Incident\",\n allowed_transitions: [\n [\"open\", \"mitigating\"],\n [\"mitigating\", \"monitoring\"],\n [\"monitoring\", \"mitigating\"],\n [\"monitoring\", \"closed\"],\n [\"mitigating\", \"blocked\"],\n [\"blocked\", \"mitigating\"],\n ],\n },\n ],\n config: [\n { key: \"search_provider\", value: \"bm25\", summary: \"Offline BM25 lexical search for fast incident lookup.\" },\n { key: \"search_max_results\", value: \"25\", summary: \"Wider result cap to surface related incidents and runbooks.\" },\n ],\n templates: [\n {\n name: \"incident\",\n options: {\n type: \"Incident\",\n priority: \"1\",\n tags: \"incident\",\n acceptanceCriteria: \"Service restored, root cause documented, and follow-ups filed.\",\n body: \"## Impact\\n\\n## Timeline\\n\\n## Root cause\\n\\n## Mitigation\\n\\n## Follow-ups\\n\",\n },\n },\n ],\n packages: [\n { spec: \"lifecycle-hooks\", reason: \"Automate transitions and notifications on incident state changes.\" },\n { spec: \"governance-audit\", reason: \"Audit incident metadata completeness and closure quality.\" },\n { spec: \"calendar\", reason: \"On-call and follow-up scheduling.\" },\n ],\n },\n research: {\n name: \"research\",\n title: \"Research\",\n summary: \"Experiment/Hypothesis investigation with an analysis stage, hypothesis, and method fields.\",\n types: TYPE_PRESET_DEFINITIONS.research,\n statuses: [\n {\n id: \"analyzing\",\n roles: [\"active\"],\n aliases: [\"analysis\"],\n description: \"Data collected; analysis and synthesis in progress.\",\n },\n ],\n fields: [\n {\n key: \"hypothesis\",\n type: \"string\",\n commands: [\"create\", \"update\"],\n description: \"The testable claim the experiment evaluates.\",\n },\n {\n key: \"method\",\n type: \"string\",\n commands: [\"create\", \"update\", \"list\"],\n description: \"Experimental method or protocol used to evaluate the hypothesis.\",\n aliases: [\"protocol\"],\n },\n ],\n workflows: [\n {\n type: \"Experiment\",\n allowed_transitions: [\n [\"open\", \"in_progress\"],\n [\"in_progress\", \"analyzing\"],\n [\"analyzing\", \"in_progress\"],\n [\"analyzing\", \"closed\"],\n [\"in_progress\", \"blocked\"],\n [\"blocked\", \"in_progress\"],\n ],\n },\n ],\n config: [\n { key: \"search_provider\", value: \"bm25\", summary: \"Offline BM25 lexical search across the research corpus.\" },\n { key: \"search_max_results\", value: \"50\", summary: \"Broader recall cap for literature and prior-experiment discovery.\" },\n ],\n templates: [\n {\n name: \"experiment\",\n options: {\n type: \"Experiment\",\n priority: \"2\",\n tags: \"experiment\",\n acceptanceCriteria: \"Hypothesis is supported, rejected, or refined with recorded evidence.\",\n body: \"## Hypothesis\\n\\n## Method\\n\\n## Results\\n\\n## Conclusion\\n\",\n },\n },\n ],\n packages: [\n { spec: \"search-advanced\", reason: \"Semantic retrieval over experiments and findings.\" },\n { spec: \"templates\", reason: \"Consistent experiment and hypothesis scaffolds.\" },\n { spec: \"beads\", reason: \"Import structured prior work into the tracker.\" },\n ],\n },\n};\n\n/**\n * Validates and normalizes a raw profile-name value. Returns `undefined` when the\n * value is omitted. Throws a plain Error with a stable message for an empty or\n * unknown name; CLI layers map it to a USAGE exit code. Accepts hyphen/underscore\n * and casing variations for ergonomics, mirroring {@link normalizeTypePresetName}.\n */\nexport function normalizeProfileName(rawValue: string | undefined): ProfileName | undefined {\n if (rawValue === undefined) {\n return undefined;\n }\n const normalized = normalizeProfileLookupKey(rawValue);\n if (normalized.length === 0) {\n throw new Error(\"Profile name must not be empty.\");\n }\n // Validate against PROFILE_NAMES so adding a profile never drifts from the\n // accepted set (single source of truth shared with BUILTIN_PROFILES).\n if ((PROFILE_NAMES as readonly string[]).includes(normalized)) {\n return normalized as ProfileName;\n }\n throw new Error(`Invalid profile \"${rawValue}\". Allowed: ${PROFILE_NAMES.join(\", \")}.`);\n}\n\n/**\n * Resolves a built-in profile definition by validated name. Throws (via\n * {@link normalizeProfileName}) when the name is missing or unknown.\n */\nexport function resolveProfile(rawValue: string | undefined): ProjectProfileDefinition {\n const name = normalizeProfileName(rawValue);\n if (name === undefined) {\n throw new Error(`Profile name is required. Allowed: ${PROFILE_NAMES.join(\", \")}.`);\n }\n return BUILTIN_PROFILES[name];\n}\n\n/**\n * Returns all built-in profile definitions in {@link PROFILE_NAMES} order. Used by\n * `pm profile list` and SDK consumers enumerating available archetypes.\n */\nexport function listProfiles(): ProjectProfileDefinition[] {\n return PROFILE_NAMES.map((name) => BUILTIN_PROFILES[name]);\n}\n\n/**\n * Whether a resolved profile is core-baked or contributed by an active extension.\n */\nexport type ProfileSourceKind = \"builtin\" | \"extension\";\n\n/**\n * A profile definition paired with where it came from, returned by the merged\n * `pm profile` resolution so callers can label a profile's origin.\n */\nexport interface ResolvedProfile {\n /** The profile definition. */\n definition: ProjectProfileDefinition;\n /** Whether the profile is core-baked or contributed by an active extension. */\n source: ProfileSourceKind;\n /** For an extension profile, the owning package/extension name; absent for builtins. */\n package?: string;\n}\n\n/**\n * A profile contributed by an active extension, fed into the merge resolver.\n *\n * This intentionally mirrors the loader's `RegisteredExtensionProjectProfile`\n * without importing `core/extensions` — `extension-types` depends on this module\n * for {@link ProjectProfileDefinition}, so importing back would form a cycle. The\n * CLI maps the active registration registry onto this shape.\n */\nexport interface ExtensionProfileContribution {\n /** Owning extension/package name, surfaced as the resolved profile's source. */\n name: string;\n /** The profile definition the extension registered. */\n profile: ProjectProfileDefinition;\n}\n\n/**\n * Result of {@link resolveProfileCatalog}: the merged profile list plus any\n * non-fatal collisions encountered while merging.\n */\nexport interface ResolveProfileCatalogResult {\n /** Builtins first (in {@link PROFILE_NAMES} order), then accepted extension profiles in contribution order. */\n profiles: ResolvedProfile[];\n /** Non-fatal merge warnings (built-in shadowing attempts, duplicate names). */\n warnings: string[];\n}\n\n/**\n * Result of {@link resolveProfileEntry}: the single resolved profile plus the\n * same non-fatal merge `warnings` {@link resolveProfileCatalog} produced, so\n * `pm profile show`/`apply` surface a shadowed or duplicate extension profile\n * just like `pm profile list` does rather than swallowing it.\n */\nexport interface ResolveProfileEntryResult {\n /** The resolved profile and its source. */\n resolved: ResolvedProfile;\n /** Non-fatal merge warnings from building the catalog the entry was resolved against. */\n warnings: string[];\n}\n\n/**\n * Canonical lookup key for a profile name: trimmed, lowercased, with hyphens\n * folded to underscores. Shared by both sides of every catalog match (and by\n * {@link normalizeProfileName}) so a user can type `my-flow`, `My-Flow`, or\n * `my_flow ` interchangeably. Interior spaces are preserved — only the\n * hyphen/underscore distinction and surrounding whitespace/casing are folded.\n */\nexport function normalizeProfileLookupKey(rawValue: string): string {\n return rawValue.trim().toLowerCase().replaceAll(\"-\", \"_\");\n}\n\nfunction formatAvailableProfileNames(profiles: readonly ResolvedProfile[]): string {\n return profiles.map((entry) => entry.definition.name).join(\", \");\n}\n\n/**\n * Merges the core-baked {@link BUILTIN_PROFILES} with profiles contributed by\n * active extensions into one resolvable catalog.\n *\n * Built-in names are reserved: an extension profile whose normalized name\n * collides with a built-in archetype is dropped with a warning, so a package can\n * never silently shadow a core profile. Two extension profiles that normalize to\n * the same key keep the first contribution and warn on each later duplicate.\n * Builtins always sort first, preserving the established `pm profile list`\n * ordering. Names are non-blank by construction — the loader's\n * `registerProfile` validation rejects an empty `name` before it can reach the\n * registry that feeds this resolver.\n */\nexport function resolveProfileCatalog(\n contributions: readonly ExtensionProfileContribution[] = [],\n): ResolveProfileCatalogResult {\n const profiles: ResolvedProfile[] = PROFILE_NAMES.map((name) => ({\n definition: BUILTIN_PROFILES[name],\n source: \"builtin\" as const,\n }));\n const builtinKeys = new Set<string>(PROFILE_NAMES.map((name) => normalizeProfileLookupKey(name)));\n const seen = new Set<string>(builtinKeys);\n const warnings: string[] = [];\n for (const contribution of contributions) {\n const key = normalizeProfileLookupKey(contribution.profile.name);\n if (builtinKeys.has(key)) {\n warnings.push(\n `Extension \"${contribution.name}\" profile \"${contribution.profile.name}\" uses a name reserved by a built-in archetype and was ignored.`,\n );\n continue;\n }\n if (seen.has(key)) {\n warnings.push(\n `Profile \"${contribution.profile.name}\" from extension \"${contribution.name}\" duplicates an already-registered profile and was ignored.`,\n );\n continue;\n }\n seen.add(key);\n profiles.push({ definition: contribution.profile, source: \"extension\", package: contribution.name });\n }\n return { profiles, warnings };\n}\n\n/**\n * Resolves a single profile by name from the merged catalog (builtins +\n * extension contributions), returning it alongside the catalog's merge warnings.\n * Throws a plain Error with a stable, name-listing message when the value is\n * missing or unknown, so CLI layers map it to a USAGE exit code — the\n * extension-aware counterpart to {@link resolveProfile}.\n */\nexport function resolveProfileEntry(\n rawValue: string | undefined,\n contributions: readonly ExtensionProfileContribution[] = [],\n): ResolveProfileEntryResult {\n const { profiles, warnings } = resolveProfileCatalog(contributions);\n // Treat any non-string name as missing — undefined, null, or a non-string\n // primitive slipping in from an untyped JS caller or parsed payload — so the\n // `.trim()` below never throws.\n if (typeof rawValue !== \"string\" || rawValue.trim().length === 0) {\n throw new Error(`Profile name is required. Allowed: ${formatAvailableProfileNames(profiles)}.`);\n }\n const key = normalizeProfileLookupKey(rawValue);\n const match = profiles.find((entry) => normalizeProfileLookupKey(entry.definition.name) === key);\n if (match === undefined) {\n throw new Error(`Invalid profile \"${rawValue}\". Allowed: ${formatAvailableProfileNames(profiles)}.`);\n }\n return { resolved: match, warnings };\n}\n", "/**\n * @module core/profile/profile-lint\n *\n * Author-time, tracker-independent consistency linting for a\n * {@link ProjectProfileDefinition}. This is the project-profile analogue of the\n * extension surface's `lintExtensionBlueprint`: where `defineProjectProfile`\n * (and `api.registerProfile`) only assert structural shape, and\n * {@link module:core/profile/profile-plan planProfileApplication} only validates\n * config knobs fail-fast against a live tracker at apply time, this linter\n * inspects a profile definition in isolation and reports *every* problem at once\n * across all eight dimensions.\n *\n * Findings are graded:\n * - `error` — a condition that makes `pm profile apply` throw or silently lose\n * data (an invalid type/status/field the upsert normalizer rejects, a\n * duplicate key whose later entry overwrites the earlier one, an unknown or\n * invalid config knob the planner rejects, an empty profile name resolution\n * requires, or a malformed workflow transition pair the workflow resolver\n * silently drops).\n * - `warning` — authored content that is structurally valid but very likely a\n * bug (a workflow governing a type the profile never declares, a transition\n * referencing a status token no profile/built-in status defines — a dead,\n * unreachable rule — a template whose `type` references an undeclared type, a\n * profile name resolution would fold, or an empty title/summary/package spec).\n *\n * Cross-reference checks are warnings rather than errors because the referenced\n * type or status MAY already exist in the target tracker independently of the\n * profile (profiles layer onto whatever schema is present), so erroring would\n * produce false positives against valid layered setups.\n *\n * Everything here is pure and side-effect-free so it is fully coverage-gated; the\n * CLI `pm profile lint` command and the SDK `assertProjectProfile` helper are\n * thin wrappers around {@link lintProjectProfile}.\n */\nimport { BUILTIN_ITEM_TYPE_VALUES } from \"../../types/index.js\";\nimport { parseNestedSettingValue, resolveNestedSettingDescriptor } from \"../config/nested-settings.js\";\nimport { normalizeAddFieldInput } from \"../schema/fields-file.js\";\nimport { normalizeAddStatusInput } from \"../schema/status-defs-file.js\";\nimport { normalizeAddTypeInput } from \"../schema/item-types-file.js\";\nimport { normalizeStatusToken } from \"../schema/type-workflows.js\";\nimport { DEFAULT_RUNTIME_STATUS_DEFINITIONS } from \"../schema/runtime-schema.js\";\nimport { toErrorMessage } from \"../shared/primitives.js\";\nimport { normalizeProfileLookupKey, type ProjectProfileDefinition } from \"./profile-presets.js\";\n\n/** Severity grade of a profile lint finding. */\nexport type ProfileLintSeverity = \"error\" | \"warning\";\n\n/** Profile dimension a lint finding is attributed to. */\nexport const PROFILE_LINT_DIMENSIONS = [\n \"profile\",\n \"types\",\n \"statuses\",\n \"fields\",\n \"workflows\",\n \"config\",\n \"templates\",\n \"packages\",\n] as const;\n/**\n * Restricts profile lint dimension values accepted by command, SDK, and storage contracts.\n */\nexport type ProfileLintDimension = (typeof PROFILE_LINT_DIMENSIONS)[number];\n\n/** Stable machine-readable codes every {@link ProjectProfileLintFinding} carries. */\nexport const PROFILE_LINT_CODES = [\n \"profile_name_empty\",\n \"profile_name_not_normalized\",\n \"profile_title_empty\",\n \"profile_summary_empty\",\n \"type_invalid\",\n \"type_duplicate\",\n \"status_invalid\",\n \"status_duplicate\",\n \"field_invalid\",\n \"field_duplicate\",\n \"workflow_type_empty\",\n \"workflow_type_unknown\",\n \"workflow_duplicate_type\",\n \"workflow_transition_malformed\",\n \"workflow_status_unknown\",\n \"config_key_unknown\",\n \"config_value_invalid\",\n \"config_duplicate\",\n \"template_type_unknown\",\n \"package_spec_empty\",\n] as const;\n/**\n * Restricts profile lint code values accepted by command, SDK, and storage contracts.\n */\nexport type ProfileLintCode = (typeof PROFILE_LINT_CODES)[number];\n\n/** A single graded consistency finding produced by {@link lintProjectProfile}. */\nexport interface ProjectProfileLintFinding {\n /** Whether the finding blocks a clean apply (`error`) or merely flags risk (`warning`). */\n severity: ProfileLintSeverity;\n /** Stable machine-readable classification. */\n code: ProfileLintCode;\n /** Profile dimension the finding belongs to. */\n dimension: ProfileLintDimension;\n /** Identifier of the offending entry within the dimension, when applicable. */\n target?: string;\n /** Human-facing description of the problem. */\n message: string;\n}\n\n/** Result of linting a single {@link ProjectProfileDefinition}. */\nexport interface ProjectProfileLintReport {\n /** The profile name as authored (preserved verbatim, even when blank). */\n profile: string;\n /** True when no `error`-severity findings were produced. */\n ok: boolean;\n /** All findings in deterministic dimension order. */\n findings: ProjectProfileLintFinding[];\n /** Count of `error`-severity findings. */\n errorCount: number;\n /** Count of `warning`-severity findings. */\n warningCount: number;\n}\n\n/**\n * Built-in status tokens (canonical ids and their aliases, normalized) every\n * tracker recognizes regardless of profile. A workflow transition referencing one\n * of these is always resolvable, so it never triggers a `workflow_status_unknown`\n * warning. Computed once from the canonical defaults so it never drifts.\n */\nconst BUILTIN_STATUS_TOKENS: ReadonlySet<string> = new Set(\n DEFAULT_RUNTIME_STATUS_DEFINITIONS.flatMap((definition) => [\n normalizeStatusToken(definition.id),\n ...(definition.aliases ?? []).map((alias) => normalizeStatusToken(alias)),\n ]).filter((token) => token.length > 0),\n);\n\n/** Built-in item type names, lower-cased for case-insensitive workflow/template matching. */\nconst BUILTIN_TYPE_KEYS: ReadonlySet<string> = new Set(BUILTIN_ITEM_TYPE_VALUES.map((name) => name.toLowerCase()));\n\n/** Lint the profile-level identity fields (name, title, summary). */\nfunction lintProfileIdentity(profile: ProjectProfileDefinition, findings: ProjectProfileLintFinding[]): void {\n if (profile.name.trim().length === 0) {\n findings.push({\n severity: \"error\",\n code: \"profile_name_empty\",\n dimension: \"profile\",\n message: \"Profile name must not be empty; profile resolution requires a non-blank name.\",\n });\n } else if (profile.name !== normalizeProfileLookupKey(profile.name)) {\n findings.push({\n severity: \"warning\",\n code: \"profile_name_not_normalized\",\n dimension: \"profile\",\n target: profile.name,\n message: `Profile name \"${profile.name}\" is not in canonical form; resolution folds it to \"${normalizeProfileLookupKey(profile.name)}\" (lowercase, hyphens as underscores).`,\n });\n }\n if (profile.title.trim().length === 0) {\n findings.push({\n severity: \"warning\",\n code: \"profile_title_empty\",\n dimension: \"profile\",\n message: \"Profile title is empty; list and show surfaces will render a blank title.\",\n });\n }\n if (profile.summary.trim().length === 0) {\n findings.push({\n severity: \"warning\",\n code: \"profile_summary_empty\",\n dimension: \"profile\",\n message: \"Profile summary is empty; list and show surfaces will render a blank archetype description.\",\n });\n }\n}\n\n/**\n * Lint the item types, returning the set of declared type keys (lower-cased)\n * collected from entries that normalize cleanly so workflow and template checks\n * can resolve cross-references against them.\n */\nfunction lintTypes(profile: ProjectProfileDefinition, findings: ProjectProfileLintFinding[]): Set<string> {\n const declared = new Set<string>();\n const seen = new Set<string>();\n for (const [index, type] of profile.types.entries()) {\n let name: string;\n try {\n name = normalizeAddTypeInput(type).name;\n } catch (error) {\n findings.push({\n severity: \"error\",\n code: \"type_invalid\",\n dimension: \"types\",\n target: typeof type.name === \"string\" ? type.name : `#${index}`,\n message: toErrorMessage(error),\n });\n continue;\n }\n const key = name.toLowerCase();\n if (seen.has(key)) {\n findings.push({\n severity: \"error\",\n code: \"type_duplicate\",\n dimension: \"types\",\n target: name,\n message: `Item type \"${name}\" is declared more than once; the later definition silently overwrites the earlier upsert.`,\n });\n continue;\n }\n seen.add(key);\n declared.add(key);\n }\n return declared;\n}\n\n/**\n * Lint the custom statuses, returning the set of declared status tokens (ids and\n * aliases, normalized) collected from entries that normalize cleanly so workflow\n * transition checks can resolve cross-references against them.\n */\nfunction lintStatuses(profile: ProjectProfileDefinition, findings: ProjectProfileLintFinding[]): Set<string> {\n const declared = new Set<string>();\n const seen = new Set<string>();\n for (const [index, status] of profile.statuses.entries()) {\n let normalized: ReturnType<typeof normalizeAddStatusInput>;\n try {\n normalized = normalizeAddStatusInput(status);\n } catch (error) {\n findings.push({\n severity: \"error\",\n code: \"status_invalid\",\n dimension: \"statuses\",\n target: typeof status.id === \"string\" ? status.id : `#${index}`,\n message: toErrorMessage(error),\n });\n continue;\n }\n if (seen.has(normalized.id)) {\n findings.push({\n severity: \"error\",\n code: \"status_duplicate\",\n dimension: \"statuses\",\n target: normalized.id,\n message: `Status \"${normalized.id}\" is declared more than once; the later definition silently overwrites the earlier upsert.`,\n });\n continue;\n }\n seen.add(normalized.id);\n declared.add(normalized.id);\n for (const alias of normalized.aliases ?? []) {\n declared.add(normalizeStatusToken(alias));\n }\n }\n return declared;\n}\n\n/** Lint the custom fields for invalid and duplicate keys. */\nfunction lintFields(profile: ProjectProfileDefinition, findings: ProjectProfileLintFinding[]): void {\n const seen = new Set<string>();\n for (const [index, field] of profile.fields.entries()) {\n let key: string;\n try {\n key = normalizeAddFieldInput(field).key;\n } catch (error) {\n findings.push({\n severity: \"error\",\n code: \"field_invalid\",\n dimension: \"fields\",\n target: typeof field.key === \"string\" ? field.key : `#${index}`,\n message: toErrorMessage(error),\n });\n continue;\n }\n if (seen.has(key)) {\n findings.push({\n severity: \"error\",\n code: \"field_duplicate\",\n dimension: \"fields\",\n target: key,\n message: `Field \"${key}\" is declared more than once; the later definition silently overwrites the earlier upsert.`,\n });\n continue;\n }\n seen.add(key);\n }\n}\n\n/**\n * Lint the per-type workflows: flag workflows that govern an undeclared type,\n * duplicate workflows for the same type, malformed transition pairs, and\n * transitions referencing a status token no built-in or profile status defines.\n */\nfunction lintWorkflows(\n profile: ProjectProfileDefinition,\n declaredTypes: ReadonlySet<string>,\n declaredStatuses: ReadonlySet<string>,\n findings: ProjectProfileLintFinding[],\n): void {\n const seenTypes = new Set<string>();\n for (const [index, workflow] of profile.workflows.entries()) {\n const typeKey = workflow.type.trim().toLowerCase();\n if (typeKey.length === 0) {\n findings.push({\n severity: \"error\",\n code: \"workflow_type_empty\",\n dimension: \"workflows\",\n target: `#${index}`,\n message: \"Workflow has an empty type; the workflow resolver drops entries without a type.\",\n });\n continue;\n }\n const duplicate = seenTypes.has(typeKey);\n seenTypes.add(typeKey);\n if (duplicate) {\n // The unknown-type check already fired for the first occurrence, so only\n // report the duplication here to avoid a redundant second finding.\n findings.push({\n severity: \"warning\",\n code: \"workflow_duplicate_type\",\n dimension: \"workflows\",\n target: workflow.type,\n message: `Workflow type \"${workflow.type}\" is declared more than once; the later transition set wins.`,\n });\n } else if (!BUILTIN_TYPE_KEYS.has(typeKey) && !declaredTypes.has(typeKey)) {\n findings.push({\n severity: \"warning\",\n code: \"workflow_type_unknown\",\n dimension: \"workflows\",\n target: workflow.type,\n message: `Workflow governs type \"${workflow.type}\" which is neither a built-in type nor declared by this profile; it has no effect unless that type already exists.`,\n });\n }\n // Each unknown status is reported once per workflow (not globally) so a later\n // workflow referencing the same unresolved token is still surfaced in its own\n // context.\n const reportedUnknownStatuses = new Set<string>();\n for (const pair of workflow.allowed_transitions) {\n const from = normalizeStatusToken(pair[0]);\n const to = normalizeStatusToken(pair[1]);\n if (from.length === 0 || to.length === 0) {\n findings.push({\n severity: \"error\",\n code: \"workflow_transition_malformed\",\n dimension: \"workflows\",\n target: workflow.type,\n message: `Workflow \"${workflow.type}\" has a transition with an empty status; the workflow resolver silently drops it.`,\n });\n continue;\n }\n for (const token of [from, to]) {\n if (BUILTIN_STATUS_TOKENS.has(token) || declaredStatuses.has(token) || reportedUnknownStatuses.has(token)) {\n continue;\n }\n reportedUnknownStatuses.add(token);\n findings.push({\n severity: \"warning\",\n code: \"workflow_status_unknown\",\n dimension: \"workflows\",\n target: token,\n message: `Workflow \"${workflow.type}\" references status \"${token}\" which is neither a built-in status nor declared by this profile; transitions to or from it are unreachable.`,\n });\n }\n }\n }\n}\n\n/**\n * Lint the config knobs: resolve each descriptor, flag duplicates that would\n * silently overwrite an earlier knob, and parse each value.\n */\nfunction lintConfig(profile: ProjectProfileDefinition, findings: ProjectProfileLintFinding[]): void {\n const seen = new Set<string>();\n for (const entry of profile.config) {\n const descriptor = resolveNestedSettingDescriptor(entry.key);\n if (descriptor === undefined) {\n findings.push({\n severity: \"error\",\n code: \"config_key_unknown\",\n dimension: \"config\",\n target: entry.key,\n message: `Config knob \"${entry.key}\" is not a recognized setting; apply rejects it with a usage error.`,\n });\n continue;\n }\n // Dedupe on the resolved descriptor key so two entries that differ only by\n // alias/casing (e.g. `search-provider` and `search_provider`) are caught.\n if (seen.has(descriptor.key)) {\n findings.push({\n severity: \"error\",\n code: \"config_duplicate\",\n dimension: \"config\",\n target: descriptor.key,\n message: `Config knob \"${descriptor.key}\" is set more than once; the later value silently overwrites the earlier one.`,\n });\n } else {\n seen.add(descriptor.key);\n }\n const parsed = parseNestedSettingValue(descriptor, entry.value);\n if (!parsed.ok) {\n findings.push({\n severity: \"error\",\n code: \"config_value_invalid\",\n dimension: \"config\",\n target: entry.key,\n message: parsed.error.message,\n });\n }\n }\n}\n\n/** Lint the create templates: flag a `type` option referencing an undeclared type. */\nfunction lintTemplates(\n profile: ProjectProfileDefinition,\n declaredTypes: ReadonlySet<string>,\n findings: ProjectProfileLintFinding[],\n): void {\n for (const template of profile.templates) {\n const typeOption = template.options.type;\n if (typeof typeOption !== \"string\" || typeOption.trim().length === 0) {\n continue;\n }\n const typeKey = typeOption.trim().toLowerCase();\n if (!BUILTIN_TYPE_KEYS.has(typeKey) && !declaredTypes.has(typeKey)) {\n findings.push({\n severity: \"warning\",\n code: \"template_type_unknown\",\n dimension: \"templates\",\n target: template.name,\n message: `Template \"${template.name}\" creates type \"${typeOption}\" which is neither a built-in type nor declared by this profile.`,\n });\n }\n }\n}\n\n/** Lint the advisory package recommendations for an empty spec. */\nfunction lintPackages(profile: ProjectProfileDefinition, findings: ProjectProfileLintFinding[]): void {\n for (const [index, recommendation] of profile.packages.entries()) {\n if (recommendation.spec.trim().length === 0) {\n findings.push({\n severity: \"warning\",\n code: \"package_spec_empty\",\n dimension: \"packages\",\n target: `#${index}`,\n message: \"Package recommendation has an empty spec; it cannot be surfaced as an install hint.\",\n });\n }\n }\n}\n\n/**\n * Lints a project profile definition for internal consistency, returning every\n * graded finding across all dimensions. Pure and tracker-independent: it never\n * reads disk or settings, so authors can call it on a `defineProjectProfile`\n * value, the CLI can call it on a resolved built-in or extension-contributed\n * profile, and tests can gate against it.\n *\n * @param profile The profile definition to lint.\n * @returns A report whose `ok` flag is true exactly when no `error` findings\n * were produced.\n */\nexport function lintProjectProfile(profile: ProjectProfileDefinition): ProjectProfileLintReport {\n const findings: ProjectProfileLintFinding[] = [];\n lintProfileIdentity(profile, findings);\n const declaredTypes = lintTypes(profile, findings);\n const declaredStatuses = lintStatuses(profile, findings);\n lintFields(profile, findings);\n lintWorkflows(profile, declaredTypes, declaredStatuses, findings);\n lintConfig(profile, findings);\n lintTemplates(profile, declaredTypes, findings);\n lintPackages(profile, findings);\n const errorCount = findings.filter((finding) => finding.severity === \"error\").length;\n const warningCount = findings.length - errorCount;\n return {\n profile: profile.name,\n ok: errorCount === 0,\n findings,\n errorCount,\n warningCount,\n };\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmHO,IAAM,gBAAgB,CAAC,SAAS,OAAO,UAAU;AAajD,IAAM,mBAAkE;EAC7E,OAAO;IACL,MAAM;IACN,OAAO;IACP,SAAS;IACT,OAAO,wBAAwB;IAC/B,UAAU;MACR;QACE,IAAI;QACJ,OAAO,CAAC,QAAQ;QAChB,SAAS,CAAC,WAAW;QACrB,aAAa;;;IAGjB,QAAQ;MACN;QACE,KAAK;QACL,MAAM;QACN,UAAU,CAAC,UAAU,UAAU,MAAM;QACrC,aAAa;QACb,SAAS,CAAC,QAAQ;;MAEpB;QACE,KAAK;QACL,MAAM;QACN,UAAU,CAAC,UAAU,UAAU,MAAM;QACrC,aAAa;QACb,SAAS,CAAC,UAAU;;;IAGxB,WAAW;MACT;QACE,MAAM;QACN,qBAAqB;UACnB,CAAC,QAAQ,aAAa;UACtB,CAAC,eAAe,QAAQ;UACxB,CAAC,UAAU,aAAa;UACxB,CAAC,UAAU,QAAQ;UACnB,CAAC,eAAe,SAAS;UACzB,CAAC,WAAW,aAAa;;;;IAI/B,QAAQ;MACN,EAAE,KAAK,mBAAmB,OAAO,QAAQ,SAAS,kEAAiE;MACnH,EAAE,KAAK,sBAAsB,OAAO,MAAM,SAAS,4CAA2C;;IAEhG,WAAW;MACT;QACE,MAAM;QACN,SAAS;UACP,MAAM;UACN,UAAU;UACV,MAAM;UACN,oBAAoB;UACpB,MAAM;;;;IAIZ,UAAU;MACR,EAAE,MAAM,aAAa,QAAQ,wDAAuD;MACpF,EAAE,MAAM,YAAY,QAAQ,yCAAwC;MACpE,EAAE,MAAM,mBAAmB,QAAQ,yCAAwC;;;EAG/E,KAAK;IACH,MAAM;IACN,OAAO;IACP,SAAS;IACT,OAAO,wBAAwB;IAC/B,UAAU;MACR;QACE,IAAI;QACJ,OAAO,CAAC,QAAQ;QAChB,SAAS,CAAC,YAAY;QACtB,aAAa;;MAEf;QACE,IAAI;QACJ,OAAO,CAAC,QAAQ;QAChB,SAAS,CAAC,WAAW;QACrB,aAAa;;;IAGjB,QAAQ;MACN;QACE,KAAK;QACL,MAAM;QACN,UAAU,CAAC,UAAU,UAAU,MAAM;QACrC,aAAa;QACb,SAAS,CAAC,KAAK;;MAEjB;QACE,KAAK;QACL,MAAM;QACN,UAAU,CAAC,UAAU,UAAU,MAAM;QACrC,aAAa;;;IAGjB,WAAW;MACT;QACE,MAAM;QACN,qBAAqB;UACnB,CAAC,QAAQ,YAAY;UACrB,CAAC,cAAc,YAAY;UAC3B,CAAC,cAAc,YAAY;UAC3B,CAAC,cAAc,QAAQ;UACvB,CAAC,cAAc,SAAS;UACxB,CAAC,WAAW,YAAY;;;;IAI9B,QAAQ;MACN,EAAE,KAAK,mBAAmB,OAAO,QAAQ,SAAS,wDAAuD;MACzG,EAAE,KAAK,sBAAsB,OAAO,MAAM,SAAS,8DAA6D;;IAElH,WAAW;MACT;QACE,MAAM;QACN,SAAS;UACP,MAAM;UACN,UAAU;UACV,MAAM;UACN,oBAAoB;UACpB,MAAM;;;;IAIZ,UAAU;MACR,EAAE,MAAM,mBAAmB,QAAQ,oEAAmE;MACtG,EAAE,MAAM,oBAAoB,QAAQ,4DAA2D;MAC/F,EAAE,MAAM,YAAY,QAAQ,oCAAmC;;;EAGnE,UAAU;IACR,MAAM;IACN,OAAO;IACP,SAAS;IACT,OAAO,wBAAwB;IAC/B,UAAU;MACR;QACE,IAAI;QACJ,OAAO,CAAC,QAAQ;QAChB,SAAS,CAAC,UAAU;QACpB,aAAa;;;IAGjB,QAAQ;MACN;QACE,KAAK;QACL,MAAM;QACN,UAAU,CAAC,UAAU,QAAQ;QAC7B,aAAa;;MAEf;QACE,KAAK;QACL,MAAM;QACN,UAAU,CAAC,UAAU,UAAU,MAAM;QACrC,aAAa;QACb,SAAS,CAAC,UAAU;;;IAGxB,WAAW;MACT;QACE,MAAM;QACN,qBAAqB;UACnB,CAAC,QAAQ,aAAa;UACtB,CAAC,eAAe,WAAW;UAC3B,CAAC,aAAa,aAAa;UAC3B,CAAC,aAAa,QAAQ;UACtB,CAAC,eAAe,SAAS;UACzB,CAAC,WAAW,aAAa;;;;IAI/B,QAAQ;MACN,EAAE,KAAK,mBAAmB,OAAO,QAAQ,SAAS,0DAAyD;MAC3G,EAAE,KAAK,sBAAsB,OAAO,MAAM,SAAS,oEAAmE;;IAExH,WAAW;MACT;QACE,MAAM;QACN,SAAS;UACP,MAAM;UACN,UAAU;UACV,MAAM;UACN,oBAAoB;UACpB,MAAM;;;;IAIZ,UAAU;MACR,EAAE,MAAM,mBAAmB,QAAQ,oDAAmD;MACtF,EAAE,MAAM,aAAa,QAAQ,kDAAiD;MAC9E,EAAE,MAAM,SAAS,QAAQ,iDAAgD;;;;AAWzE,SAAU,qBAAqB,UAA4B;AAC/D,MAAI,aAAa,QAAW;AAC1B,WAAO;EACT;AACA,QAAM,aAAa,0BAA0B,QAAQ;AACrD,MAAI,WAAW,WAAW,GAAG;AAC3B,UAAM,IAAI,MAAM,iCAAiC;EACnD;AAGA,MAAK,cAAoC,SAAS,UAAU,GAAG;AAC7D,WAAO;EACT;AACA,QAAM,IAAI,MAAM,oBAAoB,QAAQ,eAAe,cAAc,KAAK,IAAI,CAAC,GAAG;AACxF;AAMM,SAAU,eAAe,UAA4B;AACzD,QAAM,OAAO,qBAAqB,QAAQ;AAC1C,MAAI,SAAS,QAAW;AACtB,UAAM,IAAI,MAAM,sCAAsC,cAAc,KAAK,IAAI,CAAC,GAAG;EACnF;AACA,SAAO,iBAAiB,IAAI;AAC9B;AAMM,SAAU,eAAY;AAC1B,SAAO,cAAc,IAAI,CAAC,SAAS,iBAAiB,IAAI,CAAC;AAC3D;AAkEM,SAAU,0BAA0B,UAAgB;AACxD,SAAO,SAAS,KAAI,EAAG,YAAW,EAAG,WAAW,KAAK,GAAG;AAC1D;AAEA,SAAS,4BAA4B,UAAoC;AACvE,SAAO,SAAS,IAAI,CAAC,UAAU,MAAM,WAAW,IAAI,EAAE,KAAK,IAAI;AACjE;AAeM,SAAU,sBACd,gBAAyD,CAAA,GAAE;AAE3D,QAAM,WAA8B,cAAc,IAAI,CAAC,UAAU;IAC/D,YAAY,iBAAiB,IAAI;IACjC,QAAQ;IACR;AACF,QAAM,cAAc,IAAI,IAAY,cAAc,IAAI,CAAC,SAAS,0BAA0B,IAAI,CAAC,CAAC;AAChG,QAAM,OAAO,IAAI,IAAY,WAAW;AACxC,QAAM,WAAqB,CAAA;AAC3B,aAAW,gBAAgB,eAAe;AACxC,UAAM,MAAM,0BAA0B,aAAa,QAAQ,IAAI;AAC/D,QAAI,YAAY,IAAI,GAAG,GAAG;AACxB,eAAS,KACP,cAAc,aAAa,IAAI,cAAc,aAAa,QAAQ,IAAI,iEAAiE;AAEzI;IACF;AACA,QAAI,KAAK,IAAI,GAAG,GAAG;AACjB,eAAS,KACP,YAAY,aAAa,QAAQ,IAAI,qBAAqB,aAAa,IAAI,6DAA6D;AAE1I;IACF;AACA,SAAK,IAAI,GAAG;AACZ,aAAS,KAAK,EAAE,YAAY,aAAa,SAAS,QAAQ,aAAa,SAAS,aAAa,KAAI,CAAE;EACrG;AACA,SAAO,EAAE,UAAU,SAAQ;AAC7B;AASM,SAAU,oBACd,UACA,gBAAyD,CAAA,GAAE;AAE3D,QAAM,EAAE,UAAU,SAAQ,IAAK,sBAAsB,aAAa;AAIlE,MAAI,OAAO,aAAa,YAAY,SAAS,KAAI,EAAG,WAAW,GAAG;AAChE,UAAM,IAAI,MAAM,sCAAsC,4BAA4B,QAAQ,CAAC,GAAG;EAChG;AACA,QAAM,MAAM,0BAA0B,QAAQ;AAC9C,QAAM,QAAQ,SAAS,KAAK,CAAC,UAAU,0BAA0B,MAAM,WAAW,IAAI,MAAM,GAAG;AAC/F,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI,MAAM,oBAAoB,QAAQ,eAAe,4BAA4B,QAAQ,CAAC,GAAG;EACrG;AACA,SAAO,EAAE,UAAU,OAAO,SAAQ;AACpC;;;;;;;;;;AC5cO,IAAM,0BAA0B;EACrC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAQK,IAAM,qBAAqB;EAChC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAyCF,IAAM,wBAA6C,IAAI,IACrD,mCAAmC,QAAQ,CAAC,eAAe;EACzD,qBAAqB,WAAW,EAAE;EAClC,IAAI,WAAW,WAAW,CAAA,GAAI,IAAI,CAAC,UAAU,qBAAqB,KAAK,CAAC;CACzE,EAAE,OAAO,CAAC,UAAU,MAAM,SAAS,CAAC,CAAC;AAIxC,IAAM,oBAAyC,IAAI,IAAI,yBAAyB,IAAI,CAAC,SAAS,KAAK,YAAW,CAAE,CAAC;AAGjH,SAAS,oBAAoB,SAAmC,UAAqC;AACnG,MAAI,QAAQ,KAAK,KAAI,EAAG,WAAW,GAAG;AACpC,aAAS,KAAK;MACZ,UAAU;MACV,MAAM;MACN,WAAW;MACX,SAAS;KACV;EACH,WAAW,QAAQ,SAAS,0BAA0B,QAAQ,IAAI,GAAG;AACnE,aAAS,KAAK;MACZ,UAAU;MACV,MAAM;MACN,WAAW;MACX,QAAQ,QAAQ;MAChB,SAAS,iBAAiB,QAAQ,IAAI,uDAAuD,0BAA0B,QAAQ,IAAI,CAAC;KACrI;EACH;AACA,MAAI,QAAQ,MAAM,KAAI,EAAG,WAAW,GAAG;AACrC,aAAS,KAAK;MACZ,UAAU;MACV,MAAM;MACN,WAAW;MACX,SAAS;KACV;EACH;AACA,MAAI,QAAQ,QAAQ,KAAI,EAAG,WAAW,GAAG;AACvC,aAAS,KAAK;MACZ,UAAU;MACV,MAAM;MACN,WAAW;MACX,SAAS;KACV;EACH;AACF;AAOA,SAAS,UAAU,SAAmC,UAAqC;AACzF,QAAM,WAAW,oBAAI,IAAG;AACxB,QAAM,OAAO,oBAAI,IAAG;AACpB,aAAW,CAAC,OAAO,IAAI,KAAK,QAAQ,MAAM,QAAO,GAAI;AACnD,QAAI;AACJ,QAAI;AACF,aAAO,sBAAsB,IAAI,EAAE;IACrC,SAAS,OAAO;AACd,eAAS,KAAK;QACZ,UAAU;QACV,MAAM;QACN,WAAW;QACX,QAAQ,OAAO,KAAK,SAAS,WAAW,KAAK,OAAO,IAAI,KAAK;QAC7D,SAAS,eAAe,KAAK;OAC9B;AACD;IACF;AACA,UAAM,MAAM,KAAK,YAAW;AAC5B,QAAI,KAAK,IAAI,GAAG,GAAG;AACjB,eAAS,KAAK;QACZ,UAAU;QACV,MAAM;QACN,WAAW;QACX,QAAQ;QACR,SAAS,cAAc,IAAI;OAC5B;AACD;IACF;AACA,SAAK,IAAI,GAAG;AACZ,aAAS,IAAI,GAAG;EAClB;AACA,SAAO;AACT;AAOA,SAAS,aAAa,SAAmC,UAAqC;AAC5F,QAAM,WAAW,oBAAI,IAAG;AACxB,QAAM,OAAO,oBAAI,IAAG;AACpB,aAAW,CAAC,OAAO,MAAM,KAAK,QAAQ,SAAS,QAAO,GAAI;AACxD,QAAI;AACJ,QAAI;AACF,mBAAa,wBAAwB,MAAM;IAC7C,SAAS,OAAO;AACd,eAAS,KAAK;QACZ,UAAU;QACV,MAAM;QACN,WAAW;QACX,QAAQ,OAAO,OAAO,OAAO,WAAW,OAAO,KAAK,IAAI,KAAK;QAC7D,SAAS,eAAe,KAAK;OAC9B;AACD;IACF;AACA,QAAI,KAAK,IAAI,WAAW,EAAE,GAAG;AAC3B,eAAS,KAAK;QACZ,UAAU;QACV,MAAM;QACN,WAAW;QACX,QAAQ,WAAW;QACnB,SAAS,WAAW,WAAW,EAAE;OAClC;AACD;IACF;AACA,SAAK,IAAI,WAAW,EAAE;AACtB,aAAS,IAAI,WAAW,EAAE;AAC1B,eAAW,SAAS,WAAW,WAAW,CAAA,GAAI;AAC5C,eAAS,IAAI,qBAAqB,KAAK,CAAC;IAC1C;EACF;AACA,SAAO;AACT;AAGA,SAAS,WAAW,SAAmC,UAAqC;AAC1F,QAAM,OAAO,oBAAI,IAAG;AACpB,aAAW,CAAC,OAAO,KAAK,KAAK,QAAQ,OAAO,QAAO,GAAI;AACrD,QAAI;AACJ,QAAI;AACF,YAAM,uBAAuB,KAAK,EAAE;IACtC,SAAS,OAAO;AACd,eAAS,KAAK;QACZ,UAAU;QACV,MAAM;QACN,WAAW;QACX,QAAQ,OAAO,MAAM,QAAQ,WAAW,MAAM,MAAM,IAAI,KAAK;QAC7D,SAAS,eAAe,KAAK;OAC9B;AACD;IACF;AACA,QAAI,KAAK,IAAI,GAAG,GAAG;AACjB,eAAS,KAAK;QACZ,UAAU;QACV,MAAM;QACN,WAAW;QACX,QAAQ;QACR,SAAS,UAAU,GAAG;OACvB;AACD;IACF;AACA,SAAK,IAAI,GAAG;EACd;AACF;AAOA,SAAS,cACP,SACA,eACA,kBACA,UAAqC;AAErC,QAAM,YAAY,oBAAI,IAAG;AACzB,aAAW,CAAC,OAAO,QAAQ,KAAK,QAAQ,UAAU,QAAO,GAAI;AAC3D,UAAM,UAAU,SAAS,KAAK,KAAI,EAAG,YAAW;AAChD,QAAI,QAAQ,WAAW,GAAG;AACxB,eAAS,KAAK;QACZ,UAAU;QACV,MAAM;QACN,WAAW;QACX,QAAQ,IAAI,KAAK;QACjB,SAAS;OACV;AACD;IACF;AACA,UAAM,YAAY,UAAU,IAAI,OAAO;AACvC,cAAU,IAAI,OAAO;AACrB,QAAI,WAAW;AAGb,eAAS,KAAK;QACZ,UAAU;QACV,MAAM;QACN,WAAW;QACX,QAAQ,SAAS;QACjB,SAAS,kBAAkB,SAAS,IAAI;OACzC;IACH,WAAW,CAAC,kBAAkB,IAAI,OAAO,KAAK,CAAC,cAAc,IAAI,OAAO,GAAG;AACzE,eAAS,KAAK;QACZ,UAAU;QACV,MAAM;QACN,WAAW;QACX,QAAQ,SAAS;QACjB,SAAS,0BAA0B,SAAS,IAAI;OACjD;IACH;AAIA,UAAM,0BAA0B,oBAAI,IAAG;AACvC,eAAW,QAAQ,SAAS,qBAAqB;AAC/C,YAAM,OAAO,qBAAqB,KAAK,CAAC,CAAC;AACzC,YAAM,KAAK,qBAAqB,KAAK,CAAC,CAAC;AACvC,UAAI,KAAK,WAAW,KAAK,GAAG,WAAW,GAAG;AACxC,iBAAS,KAAK;UACZ,UAAU;UACV,MAAM;UACN,WAAW;UACX,QAAQ,SAAS;UACjB,SAAS,aAAa,SAAS,IAAI;SACpC;AACD;MACF;AACA,iBAAW,SAAS,CAAC,MAAM,EAAE,GAAG;AAC9B,YAAI,sBAAsB,IAAI,KAAK,KAAK,iBAAiB,IAAI,KAAK,KAAK,wBAAwB,IAAI,KAAK,GAAG;AACzG;QACF;AACA,gCAAwB,IAAI,KAAK;AACjC,iBAAS,KAAK;UACZ,UAAU;UACV,MAAM;UACN,WAAW;UACX,QAAQ;UACR,SAAS,aAAa,SAAS,IAAI,wBAAwB,KAAK;SACjE;MACH;IACF;EACF;AACF;AAMA,SAAS,WAAW,SAAmC,UAAqC;AAC1F,QAAM,OAAO,oBAAI,IAAG;AACpB,aAAW,SAAS,QAAQ,QAAQ;AAClC,UAAM,aAAa,+BAA+B,MAAM,GAAG;AAC3D,QAAI,eAAe,QAAW;AAC5B,eAAS,KAAK;QACZ,UAAU;QACV,MAAM;QACN,WAAW;QACX,QAAQ,MAAM;QACd,SAAS,gBAAgB,MAAM,GAAG;OACnC;AACD;IACF;AAGA,QAAI,KAAK,IAAI,WAAW,GAAG,GAAG;AAC5B,eAAS,KAAK;QACZ,UAAU;QACV,MAAM;QACN,WAAW;QACX,QAAQ,WAAW;QACnB,SAAS,gBAAgB,WAAW,GAAG;OACxC;IACH,OAAO;AACL,WAAK,IAAI,WAAW,GAAG;IACzB;AACA,UAAM,SAAS,wBAAwB,YAAY,MAAM,KAAK;AAC9D,QAAI,CAAC,OAAO,IAAI;AACd,eAAS,KAAK;QACZ,UAAU;QACV,MAAM;QACN,WAAW;QACX,QAAQ,MAAM;QACd,SAAS,OAAO,MAAM;OACvB;IACH;EACF;AACF;AAGA,SAAS,cACP,SACA,eACA,UAAqC;AAErC,aAAW,YAAY,QAAQ,WAAW;AACxC,UAAM,aAAa,SAAS,QAAQ;AACpC,QAAI,OAAO,eAAe,YAAY,WAAW,KAAI,EAAG,WAAW,GAAG;AACpE;IACF;AACA,UAAM,UAAU,WAAW,KAAI,EAAG,YAAW;AAC7C,QAAI,CAAC,kBAAkB,IAAI,OAAO,KAAK,CAAC,cAAc,IAAI,OAAO,GAAG;AAClE,eAAS,KAAK;QACZ,UAAU;QACV,MAAM;QACN,WAAW;QACX,QAAQ,SAAS;QACjB,SAAS,aAAa,SAAS,IAAI,mBAAmB,UAAU;OACjE;IACH;EACF;AACF;AAGA,SAAS,aAAa,SAAmC,UAAqC;AAC5F,aAAW,CAAC,OAAO,cAAc,KAAK,QAAQ,SAAS,QAAO,GAAI;AAChE,QAAI,eAAe,KAAK,KAAI,EAAG,WAAW,GAAG;AAC3C,eAAS,KAAK;QACZ,UAAU;QACV,MAAM;QACN,WAAW;QACX,QAAQ,IAAI,KAAK;QACjB,SAAS;OACV;IACH;EACF;AACF;AAaM,SAAU,mBAAmB,SAAiC;AAClE,QAAM,WAAwC,CAAA;AAC9C,sBAAoB,SAAS,QAAQ;AACrC,QAAM,gBAAgB,UAAU,SAAS,QAAQ;AACjD,QAAM,mBAAmB,aAAa,SAAS,QAAQ;AACvD,aAAW,SAAS,QAAQ;AAC5B,gBAAc,SAAS,eAAe,kBAAkB,QAAQ;AAChE,aAAW,SAAS,QAAQ;AAC5B,gBAAc,SAAS,eAAe,QAAQ;AAC9C,eAAa,SAAS,QAAQ;AAC9B,QAAM,aAAa,SAAS,OAAO,CAAC,YAAY,QAAQ,aAAa,OAAO,EAAE;AAC9E,QAAM,eAAe,SAAS,SAAS;AACvC,SAAO;IACL,SAAS,QAAQ;IACjB,IAAI,eAAe;IACnB;IACA;IACA;;AAEJ;",
6
+ "names": []
7
+ }
@@ -1,26 +1,12 @@
1
1
  import {
2
- EXIT_CODE,
3
2
  PmCliError
4
- } from "./chunk-KHVGM5CS.js";
5
-
6
- // dist/core/shared/memo.js
7
- !(function() {
8
- try {
9
- var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
10
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "6994d548-06c7-57d3-810a-6164e2001577");
11
- } catch (e2) {
12
- }
13
- })();
14
- function evictOldestMemoEntries(memo) {
15
- let remaining = Math.ceil(memo.size / 2);
16
- for (const key of memo.keys()) {
17
- if (remaining === 0) {
18
- return;
19
- }
20
- memo.delete(key);
21
- remaining -= 1;
22
- }
23
- }
3
+ } from "./chunk-P5YORJRH.js";
4
+ import {
5
+ evictOldestMemoEntries
6
+ } from "./chunk-7C2O74AE.js";
7
+ import {
8
+ EXIT_CODE
9
+ } from "./chunk-5VVUKE3U.js";
24
10
 
25
11
  // dist/core/shared/time.js
26
12
  !(function() {
@@ -237,10 +223,9 @@ function resolveIsoOrRelative(input, now = /* @__PURE__ */ new Date(), fieldLabe
237
223
  }
238
224
 
239
225
  export {
240
- evictOldestMemoEntries,
241
226
  nowIso,
242
227
  isTimestampLiteral,
243
228
  compareTimestampStrings,
244
229
  resolveIsoOrRelative
245
230
  };
246
- //# sourceMappingURL=chunk-AJHYQCBJ.js.map
231
+ //# sourceMappingURL=chunk-DRBV5UC2.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../../core/shared/time.ts"],
4
+ "sourcesContent": ["/**\n * @module core/shared/time\n *\n * Provides shared primitives and utilities for Time.\n */\nimport { PmCliError } from \"./errors.js\";\nimport { evictOldestMemoEntries } from \"./memo.js\";\nimport { EXIT_CODE } from \"./constants.js\";\n\nconst RELATIVE_DEADLINE = /^([+-]?)(\\d+)([hdwm])$/i;\nconst COMPOUND_RELATIVE_DEADLINE = /^[+-]?\\d+[hdwm](?:[+-]\\d+[hdwm])+$/i;\nconst COMPACT_DATE = /^(\\d{4})(\\d{2})(\\d{2})$/;\nconst COMPACT_DATETIME = /^(\\d{4})(\\d{2})(\\d{2})(?:[T\\s]?)(\\d{2})(\\d{2})(\\d{2})?([.,]\\d{1,3})?(Z|[+-]\\d{2}:?\\d{2})?$/i;\nconst HYPHEN_TIME = /^(\\d{4}-\\d{2}-\\d{2})[T\\s](\\d{2})-(\\d{2})(?:-(\\d{2}))?([.,]\\d{1,3})?(Z|[+-]\\d{2}:?\\d{2})?$/i;\nconst COMPACT_TIME = /^(\\d{4}-\\d{2}-\\d{2})[T\\s](\\d{2})(\\d{2})(\\d{2})?([.,]\\d{1,3})?(Z|[+-]\\d{2}:?\\d{2})?$/i;\n\n/**\n * Implements now iso for the public runtime surface of this module.\n */\nexport function nowIso(): string {\n return new Date().toISOString();\n}\n\n/**\n * Implements check whether timestamp literal for the public runtime surface of this module.\n */\nexport function isTimestampLiteral(input: string): boolean {\n return Number.isFinite(Date.parse(input));\n}\n\n/**\n * Memoized `Date.parse` for {@link compareTimestampStrings}. Sort comparators call it\n * O(n log n) times over a corpus whose timestamp strings repeat heavily, and\n * `Date.parse` is expensive enough to show up in list/next/context profiles. The cap\n * bounds memory in long-lived hosts (the MCP server); half-eviction keeps the\n * newest-inserted half when the cap is hit.\n */\nconst TIMESTAMP_PARSE_MEMO_MAX_ENTRIES = 10_000;\nconst timestampParseMemo = new Map<string, number>();\n\nfunction parseTimestampMsMemoized(value: string): number {\n const memoized = timestampParseMemo.get(value);\n if (memoized !== undefined) {\n return memoized;\n }\n const parsed = Date.parse(value);\n if (timestampParseMemo.size >= TIMESTAMP_PARSE_MEMO_MAX_ENTRIES) {\n evictOldestMemoEntries(timestampParseMemo);\n }\n timestampParseMemo.set(value, parsed);\n return parsed;\n}\n\n/**\n * Implements compare timestamp strings for the public runtime surface of this module.\n */\nexport function compareTimestampStrings(left: string, right: string): number {\n const leftMs = parseTimestampMsMemoized(left);\n const rightMs = parseTimestampMsMemoized(right);\n if (Number.isFinite(leftMs) && Number.isFinite(rightMs) && leftMs !== rightMs) {\n return leftMs - rightMs;\n }\n return left.localeCompare(right);\n}\n\nfunction normalizeFraction(raw: string | undefined): string {\n if (!raw) return \"\";\n const digits = raw.slice(1);\n return `.${digits.padEnd(3, \"0\").slice(0, 3)}`;\n}\n\nfunction normalizeOffset(raw: string | undefined): string {\n if (!raw) return \"\";\n if (raw.toUpperCase() === \"Z\") return \"Z\";\n const compact = /^([+-]\\d{2})(\\d{2})$/.exec(raw);\n if (compact) return `${compact[1]}:${compact[2]}`;\n return raw;\n}\n\nfunction pushTimestampCandidate(candidates: string[], input: string, value: string | undefined): void {\n if (!value) return;\n if (value === input) return;\n if (candidates.includes(value)) return;\n candidates.push(value);\n}\n\nfunction normalizeTimestampCandidates(input: string): string[] {\n const candidates: string[] = [];\n const push = (value: string | undefined): void => pushTimestampCandidate(candidates, input, value);\n\n const compactDate = COMPACT_DATE.exec(input);\n if (compactDate) {\n const [, year, month, day] = compactDate;\n push(`${year}-${month}-${day}`);\n }\n\n const compactDateTime = COMPACT_DATETIME.exec(input);\n if (compactDateTime) {\n const [, year, month, day, hour, minute, secondRaw, fractionRaw, offsetRaw] = compactDateTime;\n const second = secondRaw ? `:${secondRaw}` : \"\";\n push(\n `${year}-${month}-${day}T${hour}:${minute}${second}${normalizeFraction(fractionRaw)}${normalizeOffset(offsetRaw)}`,\n );\n }\n\n const hyphenTime = HYPHEN_TIME.exec(input);\n if (hyphenTime) {\n const [, datePart, hour, minute, secondRaw, fractionRaw, offsetRaw] = hyphenTime;\n const second = secondRaw ? `:${secondRaw}` : \"\";\n push(`${datePart}T${hour}:${minute}${second}${normalizeFraction(fractionRaw)}${normalizeOffset(offsetRaw)}`);\n }\n\n const compactTime = COMPACT_TIME.exec(input);\n if (compactTime) {\n const [, datePart, hour, minute, secondRaw, fractionRaw, offsetRaw] = compactTime;\n const second = secondRaw ? `:${secondRaw}` : \"\";\n push(`${datePart}T${hour}:${minute}${second}${normalizeFraction(fractionRaw)}${normalizeOffset(offsetRaw)}`);\n }\n\n const datePrefixLength = 10;\n const datePrefix = input.slice(0, datePrefixLength);\n if (isHyphenDatePrefix(datePrefix)) {\n let index = datePrefixLength;\n while (index < input.length && isWhitespaceCharacter(input[index])) {\n index += 1;\n }\n if (index < input.length) {\n push(`${datePrefix}T${input.slice(index)}`);\n }\n }\n\n return candidates;\n}\n\nfunction parseTimestampWithFallbacks(input: string): number {\n const direct = Date.parse(input);\n if (Number.isFinite(direct)) return direct;\n for (const candidate of normalizeTimestampCandidates(input)) {\n const parsed = Date.parse(candidate);\n if (Number.isFinite(parsed)) return parsed;\n }\n return Number.NaN;\n}\n\nfunction isHyphenDatePrefix(value: string): boolean {\n if (value.length !== 10) {\n return false;\n }\n for (let index = 0; index < value.length; index += 1) {\n const character = value[index];\n if (index === 4 || index === 7) {\n if (character !== \"-\") {\n return false;\n }\n continue;\n }\n const code = character.charCodeAt(0);\n if (code < 48 || code > 57) {\n return false;\n }\n }\n return true;\n}\n\nfunction isWhitespaceCharacter(character: string | undefined): boolean {\n if (!character) {\n return false;\n }\n return (\n character === \" \" ||\n character === \"\\t\" ||\n character === \"\\n\" ||\n character === \"\\r\" ||\n character === \"\\f\" ||\n character === \"\\v\"\n );\n}\n\nfunction daysInUtcMonth(year: number, monthIndex: number): number {\n return new Date(Date.UTC(year, monthIndex + 1, 0)).getUTCDate();\n}\n\nconst MONTH_NAMES = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n] as const;\n\n// Leading literal calendar date in either hyphenated (`2026-02-30`) or compact\n// (`20260230`) form, optionally followed by any time/zone component. We validate\n// the digits the caller actually typed — not the parsed instant — so timezone\n// offsets never produce a false \"impossible date\" rejection. The hyphenated form\n// is unambiguous, so anything may follow (`T`/space time, `Z`, `+/-` offset). The\n// compact form must be followed by end-of-string or a time digit (with an optional\n// `T`/space separator) so a no-separator compact datetime like `20260230135900Z`\n// is still guarded and a 7-digit non-date is not misread as a date.\nconst LEADING_HYPHEN_DATE = /^(\\d{4})-(\\d{2})-(\\d{2})/;\nconst LEADING_COMPACT_DATE = /^(\\d{4})(\\d{2})(\\d{2})(?:[T ]?\\d{2}|$)/;\n\n/**\n * Reject literal calendar dates whose day cannot exist (e.g. `2026-02-30`, which JS\n * `Date` silently rolls forward to March 2). Without this, agents that pass an\n * impossible deadline get a silently-wrong stored date instead of an actionable\n * error. Only triggers on a leading literal date; relative tokens, \"now\", and pure\n * times are untouched. Month 00 / >12 is also rejected with a clear message rather\n * than falling through to the generic \"invalid value\" path.\n */\nfunction assertRealCalendarDate(originalInput: string, trimmed: string, fieldLabel: string): void {\n const match = LEADING_HYPHEN_DATE.exec(trimmed) ?? LEADING_COMPACT_DATE.exec(trimmed);\n if (!match) {\n return;\n }\n const year = Number.parseInt(match[1], 10);\n const month = Number.parseInt(match[2], 10);\n const day = Number.parseInt(match[3], 10);\n const label = fieldLabel?.trim() || \"deadline\";\n if (month < 1 || month > 12) {\n throw new PmCliError(\n `Invalid ${label} value \"${originalInput}\". Month \"${match[2]}\" is out of range — use a month between 01 and 12.`,\n EXIT_CODE.USAGE,\n );\n }\n const maxDay = daysInUtcMonth(year, month - 1);\n if (day < 1 || day > maxDay) {\n throw new PmCliError(\n `Invalid ${label} value \"${originalInput}\". ${MONTH_NAMES[month - 1]} ${year} has ${maxDay} days, so day \"${match[3]}\" does not exist. Use a real YYYY-MM-DD calendar date.`,\n EXIT_CODE.USAGE,\n );\n }\n}\n\nfunction addUtcMonths(now: Date, amount: number): Date {\n const result = new Date(now.getTime());\n const startDay = result.getUTCDate();\n const targetMonthIndex = result.getUTCMonth() + amount;\n const targetYear = result.getUTCFullYear() + Math.floor(targetMonthIndex / 12);\n const targetMonth = ((targetMonthIndex % 12) + 12) % 12;\n const day = Math.min(startDay, daysInUtcMonth(targetYear, targetMonth));\n result.setUTCFullYear(targetYear, targetMonth, day);\n return result;\n}\n\n/**\n * Implements resolve iso or relative for the public runtime surface of this module.\n */\nexport function resolveIsoOrRelative(\n input: string,\n now: Date = new Date(),\n fieldLabel = \"deadline\",\n): string {\n const trimmed = input.trim();\n if (trimmed.toLowerCase() === \"now\") {\n return now.toISOString();\n }\n const relative = RELATIVE_DEADLINE.exec(trimmed);\n if (relative) {\n const sign = relative[1] === \"-\" ? -1 : 1;\n const amount = Number.parseInt(relative[2], 10) * sign;\n const unit = relative[3].toLowerCase();\n if (unit === \"m\") {\n return addUtcMonths(now, amount).toISOString();\n }\n const msPerUnit = unit === \"h\" ? 60 * 60 * 1000 : unit === \"d\" ? 24 * 60 * 60 * 1000 : 7 * 24 * 60 * 60 * 1000;\n return new Date(now.getTime() + amount * msPerUnit).toISOString();\n }\n\n assertRealCalendarDate(input, trimmed, fieldLabel);\n\n const timestamp = parseTimestampWithFallbacks(trimmed);\n if (!Number.isFinite(timestamp)) {\n const normalizedLabel = fieldLabel.trim().length > 0 ? fieldLabel.trim() : \"deadline\";\n const guidance = COMPOUND_RELATIVE_DEADLINE.test(trimmed)\n ? \"Compound relative expressions like +3d+1h are not supported; use a single relative token (for example +3d) or an ISO/date string.\"\n : 'Use ISO/date string input, \"now\", or relative +6h/-6h/+1d/-1d/+2w/-2w/+6m/-6m.';\n throw new PmCliError(\n `Invalid ${normalizedLabel} value \"${input}\". ${guidance}`,\n EXIT_CODE.USAGE,\n );\n }\n return new Date(timestamp).toISOString();\n}\n\nexport const _testOnly = {\n normalizeOffset,\n pushTimestampCandidate,\n normalizeTimestampCandidates,\n parseTimestampWithFallbacks,\n isWhitespaceCharacter,\n};\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }