@unbrained/pm-cli 2026.5.29 → 2026.5.31

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 (274) hide show
  1. package/CHANGELOG.md +54 -12
  2. package/dist/cli/bootstrap-args.d.ts +1 -1
  3. package/dist/cli/bootstrap-args.js +59 -9
  4. package/dist/cli/bootstrap-args.js.map +1 -1
  5. package/dist/cli/commands/activity.js +4 -4
  6. package/dist/cli/commands/activity.js.map +1 -1
  7. package/dist/cli/commands/calendar.js +83 -11
  8. package/dist/cli/commands/calendar.js.map +1 -1
  9. package/dist/cli/commands/close.js +4 -4
  10. package/dist/cli/commands/close.js.map +1 -1
  11. package/dist/cli/commands/completion.js +4 -4
  12. package/dist/cli/commands/completion.js.map +1 -1
  13. package/dist/cli/commands/create.js +50 -7
  14. package/dist/cli/commands/create.js.map +1 -1
  15. package/dist/cli/commands/deps.js +4 -4
  16. package/dist/cli/commands/deps.js.map +1 -1
  17. package/dist/cli/commands/extension/install-sources.d.ts +3 -0
  18. package/dist/cli/commands/extension/install-sources.js +29 -4
  19. package/dist/cli/commands/extension/install-sources.js.map +1 -1
  20. package/dist/cli/commands/extension.js +26 -5
  21. package/dist/cli/commands/extension.js.map +1 -1
  22. package/dist/cli/commands/get.js +6 -3
  23. package/dist/cli/commands/get.js.map +1 -1
  24. package/dist/cli/commands/list.js +25 -6
  25. package/dist/cli/commands/list.js.map +1 -1
  26. package/dist/cli/commands/reindex.js +3 -3
  27. package/dist/cli/commands/reindex.js.map +1 -1
  28. package/dist/cli/commands/search.d.ts +17 -0
  29. package/dist/cli/commands/search.js +40 -10
  30. package/dist/cli/commands/search.js.map +1 -1
  31. package/dist/cli/commands/stats.js +4 -4
  32. package/dist/cli/commands/stats.js.map +1 -1
  33. package/dist/cli/commands/test-all.js +4 -4
  34. package/dist/cli/commands/test-all.js.map +1 -1
  35. package/dist/cli/main.d.ts +2 -0
  36. package/dist/cli/main.js +39 -11
  37. package/dist/cli/main.js.map +1 -1
  38. package/dist/cli/register-list-query.js +10 -12
  39. package/dist/cli/register-list-query.js.map +1 -1
  40. package/dist/cli/register-mutation.js +20 -22
  41. package/dist/cli/register-mutation.js.map +1 -1
  42. package/dist/cli/register-operations.js +32 -25
  43. package/dist/cli/register-operations.js.map +1 -1
  44. package/dist/cli/register-setup.js +7 -9
  45. package/dist/cli/register-setup.js.map +1 -1
  46. package/dist/cli/registration-helpers.js +6 -3
  47. package/dist/cli/registration-helpers.js.map +1 -1
  48. package/dist/cli/search-refresh.d.ts +2 -0
  49. package/dist/cli/search-refresh.js +13 -0
  50. package/dist/cli/search-refresh.js.map +1 -0
  51. package/dist/cli-bundle/chunks/activity-OWYSUZOY.js +17 -0
  52. package/dist/cli-bundle/chunks/activity-OWYSUZOY.js.map +7 -0
  53. package/dist/cli-bundle/chunks/aggregate-ADUOSFRO.js +209 -0
  54. package/dist/cli-bundle/chunks/aggregate-ADUOSFRO.js.map +7 -0
  55. package/dist/cli-bundle/chunks/append-JD2DETU7.js +73 -0
  56. package/dist/cli-bundle/chunks/append-JD2DETU7.js.map +7 -0
  57. package/dist/cli-bundle/chunks/chunk-3HUE7XOF.js +27 -0
  58. package/dist/cli-bundle/chunks/chunk-3HUE7XOF.js.map +7 -0
  59. package/dist/cli-bundle/chunks/chunk-3M73P3G6.js +1636 -0
  60. package/dist/cli-bundle/chunks/chunk-3M73P3G6.js.map +7 -0
  61. package/dist/cli-bundle/chunks/chunk-4AEZR5EJ.js +189 -0
  62. package/dist/cli-bundle/chunks/chunk-4AEZR5EJ.js.map +7 -0
  63. package/dist/cli-bundle/chunks/chunk-5HSEP75M.js +330 -0
  64. package/dist/cli-bundle/chunks/chunk-5HSEP75M.js.map +7 -0
  65. package/dist/cli-bundle/chunks/chunk-6HT2F4TK.js +1770 -0
  66. package/dist/cli-bundle/chunks/chunk-6HT2F4TK.js.map +7 -0
  67. package/dist/cli-bundle/chunks/chunk-6YCV7WSL.js +552 -0
  68. package/dist/cli-bundle/chunks/chunk-6YCV7WSL.js.map +7 -0
  69. package/dist/cli-bundle/chunks/chunk-7Y53ZJIQ.js +202 -0
  70. package/dist/cli-bundle/chunks/chunk-7Y53ZJIQ.js.map +7 -0
  71. package/dist/cli-bundle/chunks/chunk-A7E7PUVX.js +157 -0
  72. package/dist/cli-bundle/chunks/chunk-A7E7PUVX.js.map +7 -0
  73. package/dist/cli-bundle/chunks/chunk-AKOOMO3T.js +90 -0
  74. package/dist/cli-bundle/chunks/chunk-AKOOMO3T.js.map +7 -0
  75. package/dist/cli-bundle/chunks/chunk-BUPWJ3IJ.js +950 -0
  76. package/dist/cli-bundle/chunks/chunk-BUPWJ3IJ.js.map +7 -0
  77. package/dist/cli-bundle/chunks/chunk-CEFIVZPG.js +79 -0
  78. package/dist/cli-bundle/chunks/chunk-CEFIVZPG.js.map +7 -0
  79. package/dist/cli-bundle/chunks/chunk-D7AOMPRH.js +349 -0
  80. package/dist/cli-bundle/chunks/chunk-D7AOMPRH.js.map +7 -0
  81. package/dist/cli-bundle/chunks/chunk-EAOG77HM.js +56 -0
  82. package/dist/cli-bundle/chunks/chunk-EAOG77HM.js.map +7 -0
  83. package/dist/cli-bundle/chunks/chunk-EGUGFSNX.js +47 -0
  84. package/dist/cli-bundle/chunks/chunk-EGUGFSNX.js.map +7 -0
  85. package/dist/cli-bundle/chunks/chunk-FM26RGSU.js +56 -0
  86. package/dist/cli-bundle/chunks/chunk-FM26RGSU.js.map +7 -0
  87. package/dist/cli-bundle/chunks/chunk-FQE6XZDB.js +435 -0
  88. package/dist/cli-bundle/chunks/chunk-FQE6XZDB.js.map +7 -0
  89. package/dist/cli-bundle/chunks/chunk-G57E5D7T.js +185 -0
  90. package/dist/cli-bundle/chunks/chunk-G57E5D7T.js.map +7 -0
  91. package/dist/cli-bundle/chunks/chunk-GN7IJPCD.js +3621 -0
  92. package/dist/cli-bundle/chunks/chunk-GN7IJPCD.js.map +7 -0
  93. package/dist/cli-bundle/chunks/chunk-JFWUHHS2.js +233 -0
  94. package/dist/cli-bundle/chunks/chunk-JFWUHHS2.js.map +7 -0
  95. package/dist/cli-bundle/chunks/chunk-JTWRXG4B.js +1861 -0
  96. package/dist/cli-bundle/chunks/chunk-JTWRXG4B.js.map +7 -0
  97. package/dist/cli-bundle/chunks/chunk-JULRTHJQ.js +648 -0
  98. package/dist/cli-bundle/chunks/chunk-JULRTHJQ.js.map +7 -0
  99. package/dist/cli-bundle/chunks/chunk-KBQY3YG5.js +122 -0
  100. package/dist/cli-bundle/chunks/chunk-KBQY3YG5.js.map +7 -0
  101. package/dist/cli-bundle/chunks/chunk-L2FXEKDB.js +185 -0
  102. package/dist/cli-bundle/chunks/chunk-L2FXEKDB.js.map +7 -0
  103. package/dist/cli-bundle/chunks/chunk-LRBOHPUE.js +189 -0
  104. package/dist/cli-bundle/chunks/chunk-LRBOHPUE.js.map +7 -0
  105. package/dist/cli-bundle/chunks/chunk-LSXGH6NE.js +5153 -0
  106. package/dist/cli-bundle/chunks/chunk-LSXGH6NE.js.map +7 -0
  107. package/dist/cli-bundle/chunks/chunk-MD7K4JYF.js +1345 -0
  108. package/dist/cli-bundle/chunks/chunk-MD7K4JYF.js.map +7 -0
  109. package/dist/cli-bundle/chunks/chunk-NGN7UV5K.js +341 -0
  110. package/dist/cli-bundle/chunks/chunk-NGN7UV5K.js.map +7 -0
  111. package/dist/cli-bundle/chunks/chunk-O7IWB35H.js +18 -0
  112. package/dist/cli-bundle/chunks/chunk-O7IWB35H.js.map +7 -0
  113. package/dist/cli-bundle/chunks/chunk-OGZEG5TT.js +2929 -0
  114. package/dist/cli-bundle/chunks/chunk-OGZEG5TT.js.map +7 -0
  115. package/dist/cli-bundle/chunks/chunk-P53TN6IA.js +674 -0
  116. package/dist/cli-bundle/chunks/chunk-P53TN6IA.js.map +7 -0
  117. package/dist/cli-bundle/chunks/chunk-PVNQLCIS.js +176 -0
  118. package/dist/cli-bundle/chunks/chunk-PVNQLCIS.js.map +7 -0
  119. package/dist/cli-bundle/chunks/chunk-PXUAZUUY.js +1680 -0
  120. package/dist/cli-bundle/chunks/chunk-PXUAZUUY.js.map +7 -0
  121. package/dist/cli-bundle/chunks/chunk-QAJBIGRA.js +20 -0
  122. package/dist/cli-bundle/chunks/chunk-QAJBIGRA.js.map +7 -0
  123. package/dist/cli-bundle/chunks/chunk-SEXQN4KL.js +60 -0
  124. package/dist/cli-bundle/chunks/chunk-SEXQN4KL.js.map +7 -0
  125. package/dist/cli-bundle/chunks/chunk-U7FMKRXH.js +362 -0
  126. package/dist/cli-bundle/chunks/chunk-U7FMKRXH.js.map +7 -0
  127. package/dist/cli-bundle/chunks/chunk-VGICHR7D.js +141 -0
  128. package/dist/cli-bundle/chunks/chunk-VGICHR7D.js.map +7 -0
  129. package/dist/cli-bundle/chunks/chunk-WDPXDQFG.js +632 -0
  130. package/dist/cli-bundle/chunks/chunk-WDPXDQFG.js.map +7 -0
  131. package/dist/cli-bundle/chunks/chunk-WJ2NAC37.js +252 -0
  132. package/dist/cli-bundle/chunks/chunk-WJ2NAC37.js.map +7 -0
  133. package/dist/cli-bundle/chunks/claim-EE4TKKCV.js +133 -0
  134. package/dist/cli-bundle/chunks/claim-EE4TKKCV.js.map +7 -0
  135. package/dist/cli-bundle/chunks/close-XY4CSAYF.js +14 -0
  136. package/dist/cli-bundle/chunks/close-XY4CSAYF.js.map +7 -0
  137. package/dist/cli-bundle/chunks/comments-AAKJQ6LW.js +104 -0
  138. package/dist/cli-bundle/chunks/comments-AAKJQ6LW.js.map +7 -0
  139. package/dist/cli-bundle/chunks/config-V3FZOKLI.js +1577 -0
  140. package/dist/cli-bundle/chunks/config-V3FZOKLI.js.map +7 -0
  141. package/dist/cli-bundle/chunks/context-RZ5QPNJB.js +1458 -0
  142. package/dist/cli-bundle/chunks/context-RZ5QPNJB.js.map +7 -0
  143. package/dist/cli-bundle/chunks/contracts-YLMH33VU.js +1245 -0
  144. package/dist/cli-bundle/chunks/contracts-YLMH33VU.js.map +7 -0
  145. package/dist/cli-bundle/chunks/create-PZVHRIZQ.js +28 -0
  146. package/dist/cli-bundle/chunks/create-PZVHRIZQ.js.map +7 -0
  147. package/dist/cli-bundle/chunks/delete-RHCTEORS.js +59 -0
  148. package/dist/cli-bundle/chunks/delete-RHCTEORS.js.map +7 -0
  149. package/dist/cli-bundle/chunks/deps-MZYCMLAO.js +229 -0
  150. package/dist/cli-bundle/chunks/deps-MZYCMLAO.js.map +7 -0
  151. package/dist/cli-bundle/chunks/docs-FXXUCZYU.js +35 -0
  152. package/dist/cli-bundle/chunks/docs-FXXUCZYU.js.map +7 -0
  153. package/dist/cli-bundle/chunks/extension-B4WL7BQU.js +25 -0
  154. package/dist/cli-bundle/chunks/extension-B4WL7BQU.js.map +7 -0
  155. package/dist/cli-bundle/chunks/files-WVOX67PE.js +286 -0
  156. package/dist/cli-bundle/chunks/files-WVOX67PE.js.map +7 -0
  157. package/dist/cli-bundle/chunks/gc-JWNF66EC.js +181 -0
  158. package/dist/cli-bundle/chunks/gc-JWNF66EC.js.map +7 -0
  159. package/dist/cli-bundle/chunks/get-LTK3HOCQ.js +198 -0
  160. package/dist/cli-bundle/chunks/get-LTK3HOCQ.js.map +7 -0
  161. package/dist/cli-bundle/chunks/health-TCWL55KM.js +1233 -0
  162. package/dist/cli-bundle/chunks/health-TCWL55KM.js.map +7 -0
  163. package/dist/cli-bundle/chunks/history-A2JUDXUE.js +21 -0
  164. package/dist/cli-bundle/chunks/history-A2JUDXUE.js.map +7 -0
  165. package/dist/cli-bundle/chunks/history-redact-ED6RFCPL.js +20 -0
  166. package/dist/cli-bundle/chunks/history-redact-ED6RFCPL.js.map +7 -0
  167. package/dist/cli-bundle/chunks/history-repair-ZWSTDRH2.js +198 -0
  168. package/dist/cli-bundle/chunks/history-repair-ZWSTDRH2.js.map +7 -0
  169. package/dist/cli-bundle/chunks/init-M2WUB4YH.js +16 -0
  170. package/dist/cli-bundle/chunks/init-M2WUB4YH.js.map +7 -0
  171. package/dist/cli-bundle/chunks/learnings-NXTWE3FR.js +48 -0
  172. package/dist/cli-bundle/chunks/learnings-NXTWE3FR.js.map +7 -0
  173. package/dist/cli-bundle/chunks/list-OGWQPC26.js +20 -0
  174. package/dist/cli-bundle/chunks/list-OGWQPC26.js.map +7 -0
  175. package/dist/cli-bundle/chunks/notes-DFS5ZGOO.js +48 -0
  176. package/dist/cli-bundle/chunks/notes-DFS5ZGOO.js.map +7 -0
  177. package/dist/cli-bundle/chunks/plan-67AB2PLM.js +1175 -0
  178. package/dist/cli-bundle/chunks/plan-67AB2PLM.js.map +7 -0
  179. package/dist/cli-bundle/chunks/register-list-query-UP3VRUFS.js +232 -0
  180. package/dist/cli-bundle/chunks/register-list-query-UP3VRUFS.js.map +7 -0
  181. package/dist/cli-bundle/chunks/register-mutation-YWSBF545.js +712 -0
  182. package/dist/cli-bundle/chunks/register-mutation-YWSBF545.js.map +7 -0
  183. package/dist/cli-bundle/chunks/register-operations-3BDTGSDH.js +374 -0
  184. package/dist/cli-bundle/chunks/register-operations-3BDTGSDH.js.map +7 -0
  185. package/dist/cli-bundle/chunks/register-setup-V56GDRUS.js +246 -0
  186. package/dist/cli-bundle/chunks/register-setup-V56GDRUS.js.map +7 -0
  187. package/dist/cli-bundle/chunks/restore-MB2ISME7.js +18 -0
  188. package/dist/cli-bundle/chunks/restore-MB2ISME7.js.map +7 -0
  189. package/dist/cli-bundle/chunks/schema-Q622KC46.js +119 -0
  190. package/dist/cli-bundle/chunks/schema-Q622KC46.js.map +7 -0
  191. package/dist/cli-bundle/chunks/search-HENBL456.js +1135 -0
  192. package/dist/cli-bundle/chunks/search-HENBL456.js.map +7 -0
  193. package/dist/cli-bundle/chunks/stats-N6H3YP2F.js +124 -0
  194. package/dist/cli-bundle/chunks/stats-N6H3YP2F.js.map +7 -0
  195. package/dist/cli-bundle/chunks/test-VNBDRJ4Z.js +32 -0
  196. package/dist/cli-bundle/chunks/test-VNBDRJ4Z.js.map +7 -0
  197. package/dist/cli-bundle/chunks/test-all-G2AZOHXI.js +332 -0
  198. package/dist/cli-bundle/chunks/test-all-G2AZOHXI.js.map +7 -0
  199. package/dist/cli-bundle/chunks/test-runs-GX5HTPSF.js +939 -0
  200. package/dist/cli-bundle/chunks/test-runs-GX5HTPSF.js.map +7 -0
  201. package/dist/cli-bundle/chunks/update-H6SCWNMA.js +22 -0
  202. package/dist/cli-bundle/chunks/update-H6SCWNMA.js.map +7 -0
  203. package/dist/cli-bundle/chunks/update-many-46HRSP2Q.js +676 -0
  204. package/dist/cli-bundle/chunks/update-many-46HRSP2Q.js.map +7 -0
  205. package/dist/cli-bundle/chunks/upgrade-H5HHM5UV.js +271 -0
  206. package/dist/cli-bundle/chunks/upgrade-H5HHM5UV.js.map +7 -0
  207. package/dist/cli-bundle/chunks/validate-TMCVKIGZ.js +1110 -0
  208. package/dist/cli-bundle/chunks/validate-TMCVKIGZ.js.map +7 -0
  209. package/dist/cli-bundle/main.js +6952 -0
  210. package/dist/cli-bundle/main.js.map +7 -0
  211. package/dist/cli.js +1 -1
  212. package/dist/core/config/nested-settings.d.ts +2 -0
  213. package/dist/core/config/nested-settings.js +17 -2
  214. package/dist/core/config/nested-settings.js.map +1 -1
  215. package/dist/core/item/item-type-definition.js +6 -2
  216. package/dist/core/item/item-type-definition.js.map +1 -1
  217. package/dist/core/item/type-registry.d.ts +4 -0
  218. package/dist/core/item/type-registry.js +10 -2
  219. package/dist/core/item/type-registry.js.map +1 -1
  220. package/dist/core/item/type-synonyms.d.ts +20 -0
  221. package/dist/core/item/type-synonyms.js +42 -0
  222. package/dist/core/item/type-synonyms.js.map +1 -0
  223. package/dist/core/search/background-refresh.d.ts +53 -0
  224. package/dist/core/search/background-refresh.js +286 -0
  225. package/dist/core/search/background-refresh.js.map +1 -0
  226. package/dist/core/search/cache.d.ts +20 -1
  227. package/dist/core/search/cache.js +76 -5
  228. package/dist/core/search/cache.js.map +1 -1
  229. package/dist/core/search/semantic-defaults.js +73 -32
  230. package/dist/core/search/semantic-defaults.js.map +1 -1
  231. package/dist/core/search/vector-stores.js +7 -3
  232. package/dist/core/search/vector-stores.js.map +1 -1
  233. package/dist/core/sentry/helpers.d.ts +1 -1
  234. package/dist/core/sentry/helpers.js +4 -4
  235. package/dist/core/sentry/helpers.js.map +1 -1
  236. package/dist/core/shared/constants.d.ts +2 -2
  237. package/dist/core/shared/constants.js +3 -3
  238. package/dist/core/shared/constants.js.map +1 -1
  239. package/dist/core/shared/html-entity-decode.d.ts +2 -1
  240. package/dist/core/shared/html-entity-decode.js +14 -9
  241. package/dist/core/shared/html-entity-decode.js.map +1 -1
  242. package/dist/core/shared/time.js +52 -2
  243. package/dist/core/shared/time.js.map +1 -1
  244. package/dist/core/store/front-matter-cache.d.ts +24 -0
  245. package/dist/core/store/front-matter-cache.js +119 -8
  246. package/dist/core/store/front-matter-cache.js.map +1 -1
  247. package/dist/core/store/item-format-migration.js +25 -15
  248. package/dist/core/store/item-format-migration.js.map +1 -1
  249. package/dist/core/store/item-store.d.ts +7 -0
  250. package/dist/core/store/item-store.js +13 -3
  251. package/dist/core/store/item-store.js.map +1 -1
  252. package/dist/core/store/settings-validator.d.ts +1 -0
  253. package/dist/core/store/settings-validator.js +7 -2
  254. package/dist/core/store/settings-validator.js.map +1 -1
  255. package/dist/core/store/settings.js +19 -3
  256. package/dist/core/store/settings.js.map +1 -1
  257. package/dist/core/telemetry/runtime.d.ts +10 -0
  258. package/dist/core/telemetry/runtime.js +86 -2
  259. package/dist/core/telemetry/runtime.js.map +1 -1
  260. package/dist/mcp/server.js +3 -3
  261. package/dist/mcp/server.js.map +1 -1
  262. package/dist/sdk/cli-contracts/tool-parameter-tables.js +4 -4
  263. package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
  264. package/dist/sdk/cli-contracts.js +29 -8
  265. package/dist/sdk/cli-contracts.js.map +1 -1
  266. package/dist/types.d.ts +9 -1
  267. package/dist/types.js +2 -2
  268. package/dist/types.js.map +1 -1
  269. package/docs/CONFIGURATION.md +11 -0
  270. package/docs/RELEASING.md +1 -1
  271. package/package.json +7 -5
  272. package/packages/pm-calendar/extensions/calendar/index.js +27 -2
  273. package/packages/pm-calendar/extensions/calendar/index.ts +28 -2
  274. package/scripts/bundle-cli.mjs +39 -0
@@ -0,0 +1,332 @@
1
+ import {
2
+ appendTrackedTestRunSummary,
3
+ countFailureCategories,
4
+ runLinkedTests,
5
+ runTest,
6
+ summarizeContextPreflight
7
+ } from "./chunk-PXUAZUUY.js";
8
+ import {
9
+ resolveAuthor
10
+ } from "./chunk-O7IWB35H.js";
11
+ import "./chunk-WJ2NAC37.js";
12
+ import {
13
+ parseOptionalNumber
14
+ } from "./chunk-NGN7UV5K.js";
15
+ import "./chunk-JULRTHJQ.js";
16
+ import "./chunk-OGZEG5TT.js";
17
+ import "./chunk-EGUGFSNX.js";
18
+ import "./chunk-3HUE7XOF.js";
19
+ import {
20
+ listAllFrontMatterLight
21
+ } from "./chunk-BUPWJ3IJ.js";
22
+ import "./chunk-4AEZR5EJ.js";
23
+ import "./chunk-CEFIVZPG.js";
24
+ import {
25
+ normalizeStatusInput
26
+ } from "./chunk-MD7K4JYF.js";
27
+ import {
28
+ resolveItemTypeRegistry
29
+ } from "./chunk-WDPXDQFG.js";
30
+ import {
31
+ nowIso
32
+ } from "./chunk-PVNQLCIS.js";
33
+ import {
34
+ EXIT_CODE,
35
+ PmCliError,
36
+ getActiveExtensionRegistrations,
37
+ getSettingsPath,
38
+ pathExists,
39
+ readSettings,
40
+ resolveGlobalPmRoot,
41
+ resolvePmRoot,
42
+ resolveRuntimeStatusRegistry
43
+ } from "./chunk-LSXGH6NE.js";
44
+
45
+ // dist/cli/commands/test-all.js
46
+ !(function() {
47
+ try {
48
+ var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
49
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "ffaa33f1-79c1-5ecb-bd00-82051c665e1e");
50
+ } catch (e2) {
51
+ }
52
+ })();
53
+ function parseStatus(raw, statusRegistry) {
54
+ if (raw === void 0) {
55
+ return void 0;
56
+ }
57
+ const normalized = normalizeStatusInput(raw, statusRegistry);
58
+ if (!normalized) {
59
+ const allowedStatuses = statusRegistry.definitions.map((definition) => definition.id);
60
+ throw new PmCliError(`Invalid --status value "${raw}". Allowed: ${allowedStatuses.join(", ")}`, EXIT_CODE.USAGE);
61
+ }
62
+ return normalized;
63
+ }
64
+ function parseTimeout(raw) {
65
+ if (raw === void 0) {
66
+ return void 0;
67
+ }
68
+ return parseOptionalNumber(raw, "timeout");
69
+ }
70
+ function parseNonNegativeInteger(raw, flag) {
71
+ if (raw === void 0) {
72
+ return void 0;
73
+ }
74
+ const parsed = Number(raw);
75
+ if (!Number.isInteger(parsed) || parsed < 0) {
76
+ throw new PmCliError(`${flag} must be a non-negative integer`, EXIT_CODE.USAGE);
77
+ }
78
+ return parsed;
79
+ }
80
+ function resolveTrackedRunId() {
81
+ const fromEnv = process.env.PM_BACKGROUND_TEST_RUN_ID?.trim();
82
+ if (fromEnv && fromEnv.length > 0) {
83
+ return fromEnv;
84
+ }
85
+ return `test-all-local-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
86
+ }
87
+ function normalizeCommand(command) {
88
+ return command.trim().replaceAll(/\s+/g, " ");
89
+ }
90
+ function normalizeEnvSetSignature(value) {
91
+ if (!value || Object.keys(value).length === 0) {
92
+ return "{}";
93
+ }
94
+ return JSON.stringify(Object.fromEntries(Object.entries(value).sort(([left], [right]) => left.localeCompare(right))));
95
+ }
96
+ function normalizeEnvClearSignature(value) {
97
+ if (!value || value.length === 0) {
98
+ return "[]";
99
+ }
100
+ return JSON.stringify([...value].sort((left, right) => left.localeCompare(right)));
101
+ }
102
+ function normalizePmContextModeSignature(value) {
103
+ const normalized = value?.trim().toLowerCase();
104
+ return normalized && normalized.length > 0 ? normalized : "none";
105
+ }
106
+ function normalizeAssertionSignature(test) {
107
+ const normalized = {
108
+ assert_stdout_contains: [...new Set(test.assert_stdout_contains ?? [])].sort((left, right) => left.localeCompare(right)),
109
+ assert_stdout_regex: [...new Set(test.assert_stdout_regex ?? [])].sort((left, right) => left.localeCompare(right)),
110
+ assert_stderr_contains: [...new Set(test.assert_stderr_contains ?? [])].sort((left, right) => left.localeCompare(right)),
111
+ assert_stderr_regex: [...new Set(test.assert_stderr_regex ?? [])].sort((left, right) => left.localeCompare(right)),
112
+ assert_stdout_min_lines: typeof test.assert_stdout_min_lines === "number" ? test.assert_stdout_min_lines : void 0,
113
+ assert_json_field_equals: Object.fromEntries(Object.entries(test.assert_json_field_equals ?? {}).sort(([left], [right]) => left.localeCompare(right))),
114
+ assert_json_field_gte: Object.fromEntries(Object.entries(test.assert_json_field_gte ?? {}).sort(([left], [right]) => left.localeCompare(right)))
115
+ };
116
+ return JSON.stringify(normalized);
117
+ }
118
+ function buildLinkedTestKey(test) {
119
+ const command = test.command?.trim();
120
+ if (command && command.length > 0) {
121
+ const envSet = normalizeEnvSetSignature(test.env_set);
122
+ const envClear = normalizeEnvClearSignature(test.env_clear);
123
+ const pmContextMode = normalizePmContextModeSignature(test.pm_context_mode);
124
+ const sharedHostSafe = test.shared_host_safe === true ? "true" : "false";
125
+ const assertions = normalizeAssertionSignature(test);
126
+ return `command:${test.scope}:${normalizeCommand(command)}:${envSet}:${envClear}:${pmContextMode}:${sharedHostSafe}:${assertions}`;
127
+ }
128
+ const linkedPath = test.path?.trim() ?? "";
129
+ return `path:${test.scope}:${linkedPath}`;
130
+ }
131
+ function maxTimeoutSeconds(current, candidate) {
132
+ if (candidate === void 0) {
133
+ return current;
134
+ }
135
+ if (current === void 0 || candidate > current) {
136
+ return candidate;
137
+ }
138
+ return current;
139
+ }
140
+ function countStatuses(runResults) {
141
+ let passed = 0;
142
+ let failed = 0;
143
+ let skipped = 0;
144
+ for (const result of runResults) {
145
+ if (result.status === "passed") {
146
+ passed += 1;
147
+ continue;
148
+ }
149
+ if (result.status === "failed") {
150
+ failed += 1;
151
+ continue;
152
+ }
153
+ skipped += 1;
154
+ }
155
+ return { passed, failed, skipped };
156
+ }
157
+ function mergeFailureCategoryCounts(target, source) {
158
+ for (const [key, value] of Object.entries(source)) {
159
+ target[key] += value;
160
+ }
161
+ }
162
+ async function runTestAll(options, global2) {
163
+ const pmRoot = resolvePmRoot(process.cwd(), global2.path);
164
+ if (!await pathExists(getSettingsPath(pmRoot))) {
165
+ throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);
166
+ }
167
+ const settings = await readSettings(pmRoot);
168
+ const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);
169
+ const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());
170
+ const statusFilter = parseStatus(options.status, statusRegistry);
171
+ const limitFilter = parseNonNegativeInteger(options.limit, "--limit");
172
+ const offsetFilter = parseNonNegativeInteger(options.offset, "--offset") ?? 0;
173
+ const allItems = await listAllFrontMatterLight(pmRoot, settings.item_format, typeRegistry.type_to_folder, void 0, settings.schema);
174
+ const statusFilteredItems = allItems.filter((item) => statusFilter ? item.status === statusFilter : true).sort((a, b) => a.id.localeCompare(b.id));
175
+ const filteredItems = limitFilter === void 0 ? statusFilteredItems.slice(offsetFilter) : statusFilteredItems.slice(offsetFilter, offsetFilter + limitFilter);
176
+ const defaultTimeoutSeconds = parseTimeout(options.timeout);
177
+ const sourceRoots = {
178
+ projectPmRoot: pmRoot,
179
+ globalPmRoot: resolveGlobalPmRoot(process.cwd())
180
+ };
181
+ const runStartedAt = nowIso();
182
+ const trackingEnabled = settings.testing.record_results_to_items === true;
183
+ const trackingRunId = resolveTrackedRunId();
184
+ const trackingAuthor = resolveAuthor(void 0, settings.author_default);
185
+ const trackingAttemptRaw = process.env.PM_BACKGROUND_TEST_RUN_ATTEMPT?.trim();
186
+ const trackingParsedAttempt = trackingAttemptRaw ? Number.parseInt(trackingAttemptRaw, 10) : Number.NaN;
187
+ const trackingResumedFrom = process.env.PM_BACKGROUND_TEST_RUN_RESUMED_FROM?.trim();
188
+ const trackingWarnings = [];
189
+ const results = [];
190
+ const seenTestKeys = /* @__PURE__ */ new Set();
191
+ let passed = 0;
192
+ let failed = 0;
193
+ let skipped = 0;
194
+ let linkedTests = 0;
195
+ const failureCategories = countFailureCategories([]);
196
+ const itemTests = [];
197
+ for (const item of filteredItems) {
198
+ const readResult = await runTest(item.id, {
199
+ run: false
200
+ }, {
201
+ ...global2,
202
+ path: pmRoot
203
+ });
204
+ linkedTests += readResult.tests.length;
205
+ itemTests.push({ item, tests: readResult.tests });
206
+ }
207
+ const effectiveTimeoutByKey = /* @__PURE__ */ new Map();
208
+ for (const { tests } of itemTests) {
209
+ for (const test of tests) {
210
+ const key = buildLinkedTestKey(test);
211
+ if (!effectiveTimeoutByKey.has(key)) {
212
+ effectiveTimeoutByKey.set(key, test.timeout_seconds);
213
+ continue;
214
+ }
215
+ effectiveTimeoutByKey.set(key, maxTimeoutSeconds(effectiveTimeoutByKey.get(key), test.timeout_seconds));
216
+ }
217
+ }
218
+ for (const { item, tests } of itemTests) {
219
+ const testsToRun = [];
220
+ const keyedTests = tests.map((test) => {
221
+ const key = buildLinkedTestKey(test);
222
+ const duplicate = seenTestKeys.has(key);
223
+ if (!duplicate) {
224
+ seenTestKeys.add(key);
225
+ const effectiveTimeoutSeconds = effectiveTimeoutByKey.get(key);
226
+ testsToRun.push(effectiveTimeoutSeconds === void 0 ? test : { ...test, timeout_seconds: effectiveTimeoutSeconds });
227
+ }
228
+ return { test, key, duplicate };
229
+ });
230
+ const executedResults = testsToRun.length > 0 ? await runLinkedTests(testsToRun, defaultTimeoutSeconds, {
231
+ progress: options.progress,
232
+ sourceRoots,
233
+ envSet: options.envSet,
234
+ envClear: options.envClear,
235
+ sharedHostSafe: options.sharedHostSafe,
236
+ pmContext: options.pmContext,
237
+ overrideLinkedPmContext: options.overrideLinkedPmContext,
238
+ failOnContextMismatch: options.failOnContextMismatch,
239
+ failOnEmptyTestRun: options.failOnEmptyTestRun,
240
+ requireAssertionsForPm: options.requireAssertionsForPm,
241
+ checkContext: options.checkContext,
242
+ autoPmContext: options.autoPmContext
243
+ }) : [];
244
+ let executedIndex = 0;
245
+ const runResults = keyedTests.map(({ test, key, duplicate }) => {
246
+ if (!duplicate) {
247
+ const executed = executedResults[executedIndex];
248
+ executedIndex += 1;
249
+ return executed;
250
+ }
251
+ return {
252
+ command: test.command,
253
+ path: test.path,
254
+ status: "skipped",
255
+ error: `Duplicate linked test skipped (key=${key}).`
256
+ };
257
+ });
258
+ const summary = countStatuses(runResults);
259
+ const itemFailureCategories = countFailureCategories(runResults);
260
+ mergeFailureCategoryCounts(failureCategories, itemFailureCategories);
261
+ passed += summary.passed;
262
+ failed += summary.failed;
263
+ skipped += summary.skipped;
264
+ if (trackingEnabled) {
265
+ try {
266
+ await appendTrackedTestRunSummary({
267
+ pmRoot,
268
+ settings,
269
+ itemId: item.id,
270
+ author: trackingAuthor,
271
+ message: `Track test-all run summary (${trackingRunId})`,
272
+ entry: {
273
+ run_id: trackingRunId,
274
+ kind: "test-all",
275
+ status: summary.failed > 0 || options.failOnSkipped === true && summary.skipped > 0 ? "failed" : "passed",
276
+ started_at: runStartedAt,
277
+ finished_at: nowIso(),
278
+ recorded_at: nowIso(),
279
+ attempt: Number.isFinite(trackingParsedAttempt) && trackingParsedAttempt >= 1 ? trackingParsedAttempt : void 0,
280
+ resumed_from: trackingResumedFrom && trackingResumedFrom.length > 0 ? trackingResumedFrom : void 0,
281
+ passed: summary.passed,
282
+ failed: summary.failed,
283
+ skipped: summary.skipped,
284
+ items: 1,
285
+ linked_tests: tests.length,
286
+ fail_on_skipped_triggered: options.failOnSkipped === true && summary.skipped > 0 ? true : void 0
287
+ }
288
+ });
289
+ } catch (error) {
290
+ trackingWarnings.push(`test_result_tracking_failed:${item.id}:${error instanceof Error ? error.message : String(error)}`);
291
+ }
292
+ }
293
+ results.push({
294
+ ok: summary.failed === 0 && !(options.failOnSkipped === true && summary.skipped > 0),
295
+ id: item.id,
296
+ status: item.status,
297
+ test_count: tests.length,
298
+ passed: summary.passed,
299
+ failed: summary.failed,
300
+ skipped: summary.skipped,
301
+ run_results: runResults,
302
+ failure_categories: itemFailureCategories
303
+ });
304
+ }
305
+ const failOnSkippedTriggered = options.failOnSkipped === true && skipped > 0;
306
+ if (options.checkContext === true) {
307
+ const allRunResults = results.flatMap((entry) => entry.run_results);
308
+ const preflight = summarizeContextPreflight(allRunResults);
309
+ trackingWarnings.push(`context_preflight:checked_pm_commands=${preflight.checked_pm_commands};tracker_read_commands=${preflight.tracker_read_commands};mismatches=${preflight.mismatches};auto_remediated=${preflight.auto_remediated}`);
310
+ }
311
+ return {
312
+ ok: failed === 0 && failOnSkippedTriggered !== true,
313
+ totals: {
314
+ items: filteredItems.length,
315
+ linked_tests: linkedTests,
316
+ passed,
317
+ failed,
318
+ skipped,
319
+ failure_categories: failureCategories
320
+ },
321
+ failed,
322
+ passed,
323
+ skipped,
324
+ fail_on_skipped_triggered: failOnSkippedTriggered ? true : void 0,
325
+ warnings: trackingWarnings.length > 0 ? trackingWarnings : void 0,
326
+ results
327
+ };
328
+ }
329
+ export {
330
+ runTestAll
331
+ };
332
+ //# sourceMappingURL=test-all-G2AZOHXI.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../../cli/commands/test-all.ts"],
4
+ "sourcesContent": ["import { pathExists } from \"../../core/fs/fs-utils.js\";\nimport { getActiveExtensionRegistrations } from \"../../core/extensions/index.js\";\nimport { resolveItemTypeRegistry } from \"../../core/item/type-registry.js\";\nimport { parseOptionalNumber } from \"../../core/item/parse.js\";\nimport { normalizeStatusInput } from \"../../core/item/status.js\";\nimport { resolveRuntimeStatusRegistry, type RuntimeStatusRegistry } from \"../../core/schema/runtime-schema.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport { listAllFrontMatterLight } from \"../../core/store/item-store.js\";\nimport { getSettingsPath, resolveGlobalPmRoot, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings } from \"../../core/store/settings.js\";\nimport { appendTrackedTestRunSummary } from \"../../core/test/item-test-run-tracking.js\";\nimport { resolveAuthor } from \"../../core/shared/author.js\";\nimport type { ItemStatus, LinkedTest } from \"../../types/index.js\";\nimport {\n countFailureCategories,\n runLinkedTests,\n runTest,\n summarizeContextPreflight,\n type LinkedTestFailureCategory,\n type TestRunResult,\n} from \"./test.js\";\n\nexport interface TestAllCommandOptions {\n status?: string;\n limit?: string;\n offset?: string;\n timeout?: string;\n progress?: boolean;\n envSet?: string[];\n envClear?: string[];\n sharedHostSafe?: boolean;\n pmContext?: string;\n overrideLinkedPmContext?: boolean;\n failOnContextMismatch?: boolean;\n failOnSkipped?: boolean;\n failOnEmptyTestRun?: boolean;\n requireAssertionsForPm?: boolean;\n checkContext?: boolean;\n autoPmContext?: boolean;\n}\n\nexport interface TestAllItemResult {\n ok: boolean;\n id: string;\n status: ItemStatus;\n test_count: number;\n passed: number;\n failed: number;\n skipped: number;\n run_results: TestRunResult[];\n failure_categories: Record<LinkedTestFailureCategory, number>;\n}\n\nexport interface TestAllResult {\n ok: boolean;\n totals: {\n items: number;\n linked_tests: number;\n passed: number;\n failed: number;\n skipped: number;\n failure_categories: Record<LinkedTestFailureCategory, number>;\n };\n failed: number;\n passed: number;\n skipped: number;\n fail_on_skipped_triggered?: boolean;\n warnings?: string[];\n results: TestAllItemResult[];\n}\n\nfunction parseStatus(raw: string | undefined, statusRegistry: RuntimeStatusRegistry): ItemStatus | undefined {\n if (raw === undefined) {\n return undefined;\n }\n const normalized = normalizeStatusInput(raw, statusRegistry);\n if (!normalized) {\n const allowedStatuses = statusRegistry.definitions.map((definition) => definition.id);\n throw new PmCliError(`Invalid --status value \"${raw}\". Allowed: ${allowedStatuses.join(\", \")}`, EXIT_CODE.USAGE);\n }\n return normalized;\n}\n\nfunction parseTimeout(raw: string | undefined): number | undefined {\n if (raw === undefined) {\n return undefined;\n }\n return parseOptionalNumber(raw, \"timeout\");\n}\n\nfunction parseNonNegativeInteger(raw: string | undefined, flag: string): number | undefined {\n if (raw === undefined) {\n return undefined;\n }\n const parsed = Number(raw);\n if (!Number.isInteger(parsed) || parsed < 0) {\n throw new PmCliError(`${flag} must be a non-negative integer`, EXIT_CODE.USAGE);\n }\n return parsed;\n}\n\nfunction resolveTrackedRunId(): string {\n const fromEnv = process.env.PM_BACKGROUND_TEST_RUN_ID?.trim();\n if (fromEnv && fromEnv.length > 0) {\n return fromEnv;\n }\n return `test-all-local-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;\n}\n\nfunction normalizeCommand(command: string): string {\n return command.trim().replaceAll(/\\s+/g, \" \");\n}\n\nfunction normalizeEnvSetSignature(value: LinkedTest[\"env_set\"]): string {\n if (!value || Object.keys(value).length === 0) {\n return \"{}\";\n }\n return JSON.stringify(\n Object.fromEntries(Object.entries(value).sort(([left], [right]) => left.localeCompare(right))),\n );\n}\n\nfunction normalizeEnvClearSignature(value: LinkedTest[\"env_clear\"]): string {\n if (!value || value.length === 0) {\n return \"[]\";\n }\n return JSON.stringify([...value].sort((left, right) => left.localeCompare(right)));\n}\n\nfunction normalizePmContextModeSignature(value: LinkedTest[\"pm_context_mode\"]): string {\n const normalized = value?.trim().toLowerCase();\n return normalized && normalized.length > 0 ? normalized : \"none\";\n}\n\nfunction normalizeAssertionSignature(test: LinkedTest): string {\n const normalized = {\n assert_stdout_contains: [...new Set(test.assert_stdout_contains ?? [])].sort((left, right) => left.localeCompare(right)),\n assert_stdout_regex: [...new Set(test.assert_stdout_regex ?? [])].sort((left, right) => left.localeCompare(right)),\n assert_stderr_contains: [...new Set(test.assert_stderr_contains ?? [])].sort((left, right) => left.localeCompare(right)),\n assert_stderr_regex: [...new Set(test.assert_stderr_regex ?? [])].sort((left, right) => left.localeCompare(right)),\n assert_stdout_min_lines: typeof test.assert_stdout_min_lines === \"number\" ? test.assert_stdout_min_lines : undefined,\n assert_json_field_equals: Object.fromEntries(\n Object.entries(test.assert_json_field_equals ?? {}).sort(([left], [right]) => left.localeCompare(right)),\n ),\n assert_json_field_gte: Object.fromEntries(\n Object.entries(test.assert_json_field_gte ?? {}).sort(([left], [right]) => left.localeCompare(right)),\n ),\n };\n return JSON.stringify(normalized);\n}\n\nfunction buildLinkedTestKey(test: LinkedTest): string {\n const command = test.command?.trim();\n if (command && command.length > 0) {\n const envSet = normalizeEnvSetSignature(test.env_set);\n const envClear = normalizeEnvClearSignature(test.env_clear);\n const pmContextMode = normalizePmContextModeSignature(test.pm_context_mode);\n const sharedHostSafe = test.shared_host_safe === true ? \"true\" : \"false\";\n const assertions = normalizeAssertionSignature(test);\n return `command:${test.scope}:${normalizeCommand(command)}:${envSet}:${envClear}:${pmContextMode}:${sharedHostSafe}:${assertions}`;\n }\n const linkedPath = test.path?.trim() ?? \"\";\n return `path:${test.scope}:${linkedPath}`;\n}\n\nfunction maxTimeoutSeconds(current: number | undefined, candidate: number | undefined): number | undefined {\n if (candidate === undefined) {\n /* c8 ignore next - exercised implicitly by duplicate timeout normalization */\n return current;\n }\n if (current === undefined || candidate > current) {\n return candidate;\n }\n return current;\n}\n\nfunction countStatuses(runResults: TestRunResult[]): { passed: number; failed: number; skipped: number } {\n let passed = 0;\n let failed = 0;\n let skipped = 0;\n for (const result of runResults) {\n if (result.status === \"passed\") {\n passed += 1;\n continue;\n }\n if (result.status === \"failed\") {\n failed += 1;\n continue;\n }\n skipped += 1;\n }\n return { passed, failed, skipped };\n}\n\nfunction mergeFailureCategoryCounts(\n target: Record<LinkedTestFailureCategory, number>,\n source: Record<LinkedTestFailureCategory, number>,\n): void {\n for (const [key, value] of Object.entries(source)) {\n target[key as LinkedTestFailureCategory] += value;\n }\n}\n\nexport async function runTestAll(options: TestAllCommandOptions, global: GlobalOptions): Promise<TestAllResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n\n const settings = await readSettings(pmRoot);\n const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const statusFilter = parseStatus(options.status, statusRegistry);\n const limitFilter = parseNonNegativeInteger(options.limit, \"--limit\");\n const offsetFilter = parseNonNegativeInteger(options.offset, \"--offset\") ?? 0;\n const allItems = await listAllFrontMatterLight(pmRoot, settings.item_format, typeRegistry.type_to_folder, undefined, settings.schema);\n const statusFilteredItems = allItems\n .filter((item) => (statusFilter ? item.status === statusFilter : true))\n .sort((a, b) => a.id.localeCompare(b.id));\n const filteredItems =\n limitFilter === undefined\n ? statusFilteredItems.slice(offsetFilter)\n : statusFilteredItems.slice(offsetFilter, offsetFilter + limitFilter);\n const defaultTimeoutSeconds = parseTimeout(options.timeout);\n const sourceRoots = {\n projectPmRoot: pmRoot,\n globalPmRoot: resolveGlobalPmRoot(process.cwd()),\n };\n const runStartedAt = nowIso();\n const trackingEnabled = settings.testing.record_results_to_items === true;\n const trackingRunId = resolveTrackedRunId();\n const trackingAuthor = resolveAuthor(undefined, settings.author_default);\n const trackingAttemptRaw = process.env.PM_BACKGROUND_TEST_RUN_ATTEMPT?.trim();\n const trackingParsedAttempt = trackingAttemptRaw ? Number.parseInt(trackingAttemptRaw, 10) : Number.NaN;\n const trackingResumedFrom = process.env.PM_BACKGROUND_TEST_RUN_RESUMED_FROM?.trim();\n const trackingWarnings: string[] = [];\n\n const results: TestAllItemResult[] = [];\n const seenTestKeys = new Set<string>();\n let passed = 0;\n let failed = 0;\n let skipped = 0;\n let linkedTests = 0;\n const failureCategories = countFailureCategories([]);\n const itemTests: Array<{ item: (typeof filteredItems)[number]; tests: LinkedTest[] }> = [];\n\n for (const item of filteredItems) {\n const readResult = await runTest(\n item.id,\n {\n run: false,\n },\n {\n ...global,\n path: pmRoot,\n },\n );\n\n linkedTests += readResult.tests.length;\n itemTests.push({ item, tests: readResult.tests });\n }\n\n const effectiveTimeoutByKey = new Map<string, number | undefined>();\n for (const { tests } of itemTests) {\n for (const test of tests) {\n const key = buildLinkedTestKey(test);\n if (!effectiveTimeoutByKey.has(key)) {\n effectiveTimeoutByKey.set(key, test.timeout_seconds);\n continue;\n }\n effectiveTimeoutByKey.set(key, maxTimeoutSeconds(effectiveTimeoutByKey.get(key), test.timeout_seconds));\n }\n }\n\n for (const { item, tests } of itemTests) {\n const testsToRun: LinkedTest[] = [];\n const keyedTests = tests.map((test) => {\n const key = buildLinkedTestKey(test);\n const duplicate = seenTestKeys.has(key);\n if (!duplicate) {\n seenTestKeys.add(key);\n const effectiveTimeoutSeconds = effectiveTimeoutByKey.get(key);\n testsToRun.push(\n effectiveTimeoutSeconds === undefined ? test : { ...test, timeout_seconds: effectiveTimeoutSeconds },\n );\n }\n return { test, key, duplicate };\n });\n\n const executedResults =\n testsToRun.length > 0\n ? await runLinkedTests(testsToRun, defaultTimeoutSeconds, {\n progress: options.progress,\n sourceRoots,\n envSet: options.envSet,\n envClear: options.envClear,\n sharedHostSafe: options.sharedHostSafe,\n pmContext: options.pmContext,\n overrideLinkedPmContext: options.overrideLinkedPmContext,\n failOnContextMismatch: options.failOnContextMismatch,\n failOnEmptyTestRun: options.failOnEmptyTestRun,\n requireAssertionsForPm: options.requireAssertionsForPm,\n checkContext: options.checkContext,\n autoPmContext: options.autoPmContext,\n })\n : [];\n let executedIndex = 0;\n const runResults = keyedTests.map(({ test, key, duplicate }) => {\n if (!duplicate) {\n const executed = executedResults[executedIndex];\n executedIndex += 1;\n return executed;\n }\n return {\n command: test.command,\n path: test.path,\n status: \"skipped\" as const,\n error: `Duplicate linked test skipped (key=${key}).`,\n };\n });\n\n const summary = countStatuses(runResults);\n const itemFailureCategories = countFailureCategories(runResults);\n mergeFailureCategoryCounts(failureCategories, itemFailureCategories);\n passed += summary.passed;\n failed += summary.failed;\n skipped += summary.skipped;\n if (trackingEnabled) {\n try {\n await appendTrackedTestRunSummary({\n pmRoot,\n settings,\n itemId: item.id,\n author: trackingAuthor,\n message: `Track test-all run summary (${trackingRunId})`,\n entry: {\n run_id: trackingRunId,\n kind: \"test-all\",\n status: summary.failed > 0 || (options.failOnSkipped === true && summary.skipped > 0) ? \"failed\" : \"passed\",\n started_at: runStartedAt,\n finished_at: nowIso(),\n recorded_at: nowIso(),\n attempt: Number.isFinite(trackingParsedAttempt) && trackingParsedAttempt >= 1 ? trackingParsedAttempt : undefined,\n resumed_from: trackingResumedFrom && trackingResumedFrom.length > 0 ? trackingResumedFrom : undefined,\n passed: summary.passed,\n failed: summary.failed,\n skipped: summary.skipped,\n items: 1,\n linked_tests: tests.length,\n fail_on_skipped_triggered: options.failOnSkipped === true && summary.skipped > 0 ? true : undefined,\n },\n });\n } catch (error: unknown) {\n trackingWarnings.push(`test_result_tracking_failed:${item.id}:${error instanceof Error ? error.message : String(error)}`);\n }\n }\n results.push({\n ok: summary.failed === 0 && !(options.failOnSkipped === true && summary.skipped > 0),\n id: item.id,\n status: item.status,\n test_count: tests.length,\n passed: summary.passed,\n failed: summary.failed,\n skipped: summary.skipped,\n run_results: runResults,\n failure_categories: itemFailureCategories,\n });\n }\n\n const failOnSkippedTriggered = options.failOnSkipped === true && skipped > 0;\n if (options.checkContext === true) {\n const allRunResults = results.flatMap((entry) => entry.run_results);\n const preflight = summarizeContextPreflight(allRunResults);\n trackingWarnings.push(\n `context_preflight:checked_pm_commands=${preflight.checked_pm_commands};` +\n `tracker_read_commands=${preflight.tracker_read_commands};` +\n `mismatches=${preflight.mismatches};` +\n `auto_remediated=${preflight.auto_remediated}`,\n );\n }\n\n return {\n ok: failed === 0 && failOnSkippedTriggered !== true,\n totals: {\n items: filteredItems.length,\n linked_tests: linkedTests,\n passed,\n failed,\n skipped,\n failure_categories: failureCategories,\n },\n failed,\n passed,\n skipped,\n fail_on_skipped_triggered: failOnSkippedTriggered ? true : undefined,\n warnings: trackingWarnings.length > 0 ? trackingWarnings : undefined,\n results,\n };\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["global"]
7
+ }