@unbrained/pm-cli 2026.5.30 → 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 (228) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/cli/commands/calendar.js +81 -9
  3. package/dist/cli/commands/calendar.js.map +1 -1
  4. package/dist/cli/commands/create.js +34 -4
  5. package/dist/cli/commands/create.js.map +1 -1
  6. package/dist/cli/commands/extension/install-sources.d.ts +2 -0
  7. package/dist/cli/commands/extension/install-sources.js +11 -4
  8. package/dist/cli/commands/extension/install-sources.js.map +1 -1
  9. package/dist/cli/commands/reindex.js +3 -3
  10. package/dist/cli/commands/reindex.js.map +1 -1
  11. package/dist/cli/commands/search.d.ts +17 -0
  12. package/dist/cli/commands/search.js +40 -10
  13. package/dist/cli/commands/search.js.map +1 -1
  14. package/dist/cli/register-list-query.js +9 -11
  15. package/dist/cli/register-list-query.js.map +1 -1
  16. package/dist/cli/register-mutation.js +20 -22
  17. package/dist/cli/register-mutation.js.map +1 -1
  18. package/dist/cli/register-operations.js +32 -25
  19. package/dist/cli/register-operations.js.map +1 -1
  20. package/dist/cli/register-setup.js +6 -8
  21. package/dist/cli/register-setup.js.map +1 -1
  22. package/dist/cli/registration-helpers.js +6 -3
  23. package/dist/cli/registration-helpers.js.map +1 -1
  24. package/dist/cli/search-refresh.d.ts +2 -0
  25. package/dist/cli/search-refresh.js +13 -0
  26. package/dist/cli/search-refresh.js.map +1 -0
  27. package/dist/cli-bundle/chunks/activity-OWYSUZOY.js +17 -0
  28. package/dist/cli-bundle/chunks/activity-OWYSUZOY.js.map +7 -0
  29. package/dist/cli-bundle/chunks/aggregate-ADUOSFRO.js +209 -0
  30. package/dist/cli-bundle/chunks/aggregate-ADUOSFRO.js.map +7 -0
  31. package/dist/cli-bundle/chunks/append-JD2DETU7.js +73 -0
  32. package/dist/cli-bundle/chunks/append-JD2DETU7.js.map +7 -0
  33. package/dist/cli-bundle/chunks/chunk-3HUE7XOF.js +27 -0
  34. package/dist/cli-bundle/chunks/chunk-3HUE7XOF.js.map +7 -0
  35. package/dist/cli-bundle/chunks/chunk-3M73P3G6.js +1636 -0
  36. package/dist/cli-bundle/chunks/chunk-3M73P3G6.js.map +7 -0
  37. package/dist/cli-bundle/chunks/chunk-4AEZR5EJ.js +189 -0
  38. package/dist/cli-bundle/chunks/chunk-4AEZR5EJ.js.map +7 -0
  39. package/dist/cli-bundle/chunks/chunk-5HSEP75M.js +330 -0
  40. package/dist/cli-bundle/chunks/chunk-5HSEP75M.js.map +7 -0
  41. package/dist/cli-bundle/chunks/chunk-6HT2F4TK.js +1770 -0
  42. package/dist/cli-bundle/chunks/chunk-6HT2F4TK.js.map +7 -0
  43. package/dist/cli-bundle/chunks/chunk-6YCV7WSL.js +552 -0
  44. package/dist/cli-bundle/chunks/chunk-6YCV7WSL.js.map +7 -0
  45. package/dist/cli-bundle/chunks/chunk-7Y53ZJIQ.js +202 -0
  46. package/dist/cli-bundle/chunks/chunk-7Y53ZJIQ.js.map +7 -0
  47. package/dist/cli-bundle/chunks/chunk-A7E7PUVX.js +157 -0
  48. package/dist/cli-bundle/chunks/chunk-A7E7PUVX.js.map +7 -0
  49. package/dist/cli-bundle/chunks/chunk-AKOOMO3T.js +90 -0
  50. package/dist/cli-bundle/chunks/chunk-AKOOMO3T.js.map +7 -0
  51. package/dist/cli-bundle/chunks/chunk-BUPWJ3IJ.js +950 -0
  52. package/dist/cli-bundle/chunks/chunk-BUPWJ3IJ.js.map +7 -0
  53. package/dist/cli-bundle/chunks/chunk-CEFIVZPG.js +79 -0
  54. package/dist/cli-bundle/chunks/chunk-CEFIVZPG.js.map +7 -0
  55. package/dist/cli-bundle/chunks/chunk-D7AOMPRH.js +349 -0
  56. package/dist/cli-bundle/chunks/chunk-D7AOMPRH.js.map +7 -0
  57. package/dist/cli-bundle/chunks/chunk-EAOG77HM.js +56 -0
  58. package/dist/cli-bundle/chunks/chunk-EAOG77HM.js.map +7 -0
  59. package/dist/cli-bundle/chunks/chunk-EGUGFSNX.js +47 -0
  60. package/dist/cli-bundle/chunks/chunk-EGUGFSNX.js.map +7 -0
  61. package/dist/cli-bundle/chunks/chunk-FM26RGSU.js +56 -0
  62. package/dist/cli-bundle/chunks/chunk-FM26RGSU.js.map +7 -0
  63. package/dist/cli-bundle/chunks/chunk-FQE6XZDB.js +435 -0
  64. package/dist/cli-bundle/chunks/chunk-FQE6XZDB.js.map +7 -0
  65. package/dist/cli-bundle/chunks/chunk-G57E5D7T.js +185 -0
  66. package/dist/cli-bundle/chunks/chunk-G57E5D7T.js.map +7 -0
  67. package/dist/cli-bundle/chunks/chunk-GN7IJPCD.js +3621 -0
  68. package/dist/cli-bundle/chunks/chunk-GN7IJPCD.js.map +7 -0
  69. package/dist/cli-bundle/chunks/chunk-JFWUHHS2.js +233 -0
  70. package/dist/cli-bundle/chunks/chunk-JFWUHHS2.js.map +7 -0
  71. package/dist/cli-bundle/chunks/chunk-JTWRXG4B.js +1861 -0
  72. package/dist/cli-bundle/chunks/chunk-JTWRXG4B.js.map +7 -0
  73. package/dist/cli-bundle/chunks/chunk-JULRTHJQ.js +648 -0
  74. package/dist/cli-bundle/chunks/chunk-JULRTHJQ.js.map +7 -0
  75. package/dist/cli-bundle/chunks/{chunk-PB2YU2E3.js → chunk-KBQY3YG5.js} +28 -70
  76. package/dist/cli-bundle/chunks/chunk-KBQY3YG5.js.map +7 -0
  77. package/dist/cli-bundle/chunks/chunk-L2FXEKDB.js +185 -0
  78. package/dist/cli-bundle/chunks/chunk-L2FXEKDB.js.map +7 -0
  79. package/dist/cli-bundle/chunks/chunk-LRBOHPUE.js +189 -0
  80. package/dist/cli-bundle/chunks/chunk-LRBOHPUE.js.map +7 -0
  81. package/dist/cli-bundle/chunks/chunk-LSXGH6NE.js +5153 -0
  82. package/dist/cli-bundle/chunks/chunk-LSXGH6NE.js.map +7 -0
  83. package/dist/cli-bundle/chunks/chunk-MD7K4JYF.js +1345 -0
  84. package/dist/cli-bundle/chunks/chunk-MD7K4JYF.js.map +7 -0
  85. package/dist/cli-bundle/chunks/chunk-NGN7UV5K.js +341 -0
  86. package/dist/cli-bundle/chunks/chunk-NGN7UV5K.js.map +7 -0
  87. package/dist/cli-bundle/chunks/chunk-O7IWB35H.js +18 -0
  88. package/dist/cli-bundle/chunks/chunk-O7IWB35H.js.map +7 -0
  89. package/dist/cli-bundle/chunks/chunk-OGZEG5TT.js +2929 -0
  90. package/dist/cli-bundle/chunks/chunk-OGZEG5TT.js.map +7 -0
  91. package/dist/cli-bundle/chunks/{chunk-RJONRNXN.js → chunk-P53TN6IA.js} +22 -30
  92. package/dist/cli-bundle/chunks/chunk-P53TN6IA.js.map +7 -0
  93. package/dist/cli-bundle/chunks/chunk-PVNQLCIS.js +176 -0
  94. package/dist/cli-bundle/chunks/chunk-PVNQLCIS.js.map +7 -0
  95. package/dist/cli-bundle/chunks/chunk-PXUAZUUY.js +1680 -0
  96. package/dist/cli-bundle/chunks/chunk-PXUAZUUY.js.map +7 -0
  97. package/dist/cli-bundle/chunks/chunk-QAJBIGRA.js +20 -0
  98. package/dist/cli-bundle/chunks/chunk-QAJBIGRA.js.map +7 -0
  99. package/dist/cli-bundle/chunks/chunk-SEXQN4KL.js +60 -0
  100. package/dist/cli-bundle/chunks/chunk-SEXQN4KL.js.map +7 -0
  101. package/dist/cli-bundle/chunks/chunk-U7FMKRXH.js +362 -0
  102. package/dist/cli-bundle/chunks/chunk-U7FMKRXH.js.map +7 -0
  103. package/dist/cli-bundle/chunks/chunk-VGICHR7D.js +141 -0
  104. package/dist/cli-bundle/chunks/chunk-VGICHR7D.js.map +7 -0
  105. package/dist/cli-bundle/chunks/chunk-WDPXDQFG.js +632 -0
  106. package/dist/cli-bundle/chunks/chunk-WDPXDQFG.js.map +7 -0
  107. package/dist/cli-bundle/chunks/chunk-WJ2NAC37.js +252 -0
  108. package/dist/cli-bundle/chunks/chunk-WJ2NAC37.js.map +7 -0
  109. package/dist/cli-bundle/chunks/claim-EE4TKKCV.js +133 -0
  110. package/dist/cli-bundle/chunks/claim-EE4TKKCV.js.map +7 -0
  111. package/dist/cli-bundle/chunks/close-XY4CSAYF.js +14 -0
  112. package/dist/cli-bundle/chunks/close-XY4CSAYF.js.map +7 -0
  113. package/dist/cli-bundle/chunks/comments-AAKJQ6LW.js +104 -0
  114. package/dist/cli-bundle/chunks/comments-AAKJQ6LW.js.map +7 -0
  115. package/dist/cli-bundle/chunks/config-V3FZOKLI.js +1577 -0
  116. package/dist/cli-bundle/chunks/config-V3FZOKLI.js.map +7 -0
  117. package/dist/cli-bundle/chunks/context-RZ5QPNJB.js +1458 -0
  118. package/dist/cli-bundle/chunks/context-RZ5QPNJB.js.map +7 -0
  119. package/dist/cli-bundle/chunks/contracts-YLMH33VU.js +1245 -0
  120. package/dist/cli-bundle/chunks/contracts-YLMH33VU.js.map +7 -0
  121. package/dist/cli-bundle/chunks/create-PZVHRIZQ.js +28 -0
  122. package/dist/cli-bundle/chunks/create-PZVHRIZQ.js.map +7 -0
  123. package/dist/cli-bundle/chunks/delete-RHCTEORS.js +59 -0
  124. package/dist/cli-bundle/chunks/delete-RHCTEORS.js.map +7 -0
  125. package/dist/cli-bundle/chunks/deps-MZYCMLAO.js +229 -0
  126. package/dist/cli-bundle/chunks/deps-MZYCMLAO.js.map +7 -0
  127. package/dist/cli-bundle/chunks/docs-FXXUCZYU.js +35 -0
  128. package/dist/cli-bundle/chunks/docs-FXXUCZYU.js.map +7 -0
  129. package/dist/cli-bundle/chunks/extension-B4WL7BQU.js +25 -0
  130. package/dist/cli-bundle/chunks/extension-B4WL7BQU.js.map +7 -0
  131. package/dist/cli-bundle/chunks/files-WVOX67PE.js +286 -0
  132. package/dist/cli-bundle/chunks/files-WVOX67PE.js.map +7 -0
  133. package/dist/cli-bundle/chunks/gc-JWNF66EC.js +181 -0
  134. package/dist/cli-bundle/chunks/gc-JWNF66EC.js.map +7 -0
  135. package/dist/cli-bundle/chunks/get-LTK3HOCQ.js +198 -0
  136. package/dist/cli-bundle/chunks/get-LTK3HOCQ.js.map +7 -0
  137. package/dist/cli-bundle/chunks/health-TCWL55KM.js +1233 -0
  138. package/dist/cli-bundle/chunks/health-TCWL55KM.js.map +7 -0
  139. package/dist/cli-bundle/chunks/history-A2JUDXUE.js +21 -0
  140. package/dist/cli-bundle/chunks/history-A2JUDXUE.js.map +7 -0
  141. package/dist/cli-bundle/chunks/history-redact-ED6RFCPL.js +20 -0
  142. package/dist/cli-bundle/chunks/history-redact-ED6RFCPL.js.map +7 -0
  143. package/dist/cli-bundle/chunks/history-repair-ZWSTDRH2.js +198 -0
  144. package/dist/cli-bundle/chunks/history-repair-ZWSTDRH2.js.map +7 -0
  145. package/dist/cli-bundle/chunks/init-M2WUB4YH.js +16 -0
  146. package/dist/cli-bundle/chunks/init-M2WUB4YH.js.map +7 -0
  147. package/dist/cli-bundle/chunks/learnings-NXTWE3FR.js +48 -0
  148. package/dist/cli-bundle/chunks/learnings-NXTWE3FR.js.map +7 -0
  149. package/dist/cli-bundle/chunks/list-OGWQPC26.js +20 -0
  150. package/dist/cli-bundle/chunks/list-OGWQPC26.js.map +7 -0
  151. package/dist/cli-bundle/chunks/notes-DFS5ZGOO.js +48 -0
  152. package/dist/cli-bundle/chunks/notes-DFS5ZGOO.js.map +7 -0
  153. package/dist/cli-bundle/chunks/plan-67AB2PLM.js +1175 -0
  154. package/dist/cli-bundle/chunks/plan-67AB2PLM.js.map +7 -0
  155. package/dist/cli-bundle/chunks/{register-list-query-EIVQ5FMR.js → register-list-query-UP3VRUFS.js} +24 -15
  156. package/dist/cli-bundle/chunks/register-list-query-UP3VRUFS.js.map +7 -0
  157. package/dist/cli-bundle/chunks/{register-mutation-RSZNPSGI.js → register-mutation-YWSBF545.js} +38 -28
  158. package/dist/cli-bundle/chunks/register-mutation-YWSBF545.js.map +7 -0
  159. package/dist/cli-bundle/chunks/{register-operations-APUSYDMR.js → register-operations-3BDTGSDH.js} +49 -30
  160. package/dist/cli-bundle/chunks/register-operations-3BDTGSDH.js.map +7 -0
  161. package/dist/cli-bundle/chunks/{register-setup-OZOKSMPJ.js → register-setup-V56GDRUS.js} +21 -12
  162. package/dist/cli-bundle/chunks/register-setup-V56GDRUS.js.map +7 -0
  163. package/dist/cli-bundle/chunks/restore-MB2ISME7.js +18 -0
  164. package/dist/cli-bundle/chunks/restore-MB2ISME7.js.map +7 -0
  165. package/dist/cli-bundle/chunks/schema-Q622KC46.js +119 -0
  166. package/dist/cli-bundle/chunks/schema-Q622KC46.js.map +7 -0
  167. package/dist/cli-bundle/chunks/search-HENBL456.js +1135 -0
  168. package/dist/cli-bundle/chunks/search-HENBL456.js.map +7 -0
  169. package/dist/cli-bundle/chunks/stats-N6H3YP2F.js +124 -0
  170. package/dist/cli-bundle/chunks/stats-N6H3YP2F.js.map +7 -0
  171. package/dist/cli-bundle/chunks/test-VNBDRJ4Z.js +32 -0
  172. package/dist/cli-bundle/chunks/test-VNBDRJ4Z.js.map +7 -0
  173. package/dist/cli-bundle/chunks/test-all-G2AZOHXI.js +332 -0
  174. package/dist/cli-bundle/chunks/test-all-G2AZOHXI.js.map +7 -0
  175. package/dist/cli-bundle/chunks/test-runs-GX5HTPSF.js +939 -0
  176. package/dist/cli-bundle/chunks/test-runs-GX5HTPSF.js.map +7 -0
  177. package/dist/cli-bundle/chunks/update-H6SCWNMA.js +22 -0
  178. package/dist/cli-bundle/chunks/update-H6SCWNMA.js.map +7 -0
  179. package/dist/cli-bundle/chunks/update-many-46HRSP2Q.js +676 -0
  180. package/dist/cli-bundle/chunks/update-many-46HRSP2Q.js.map +7 -0
  181. package/dist/cli-bundle/chunks/upgrade-H5HHM5UV.js +271 -0
  182. package/dist/cli-bundle/chunks/upgrade-H5HHM5UV.js.map +7 -0
  183. package/dist/cli-bundle/chunks/validate-TMCVKIGZ.js +1110 -0
  184. package/dist/cli-bundle/chunks/validate-TMCVKIGZ.js.map +7 -0
  185. package/dist/cli-bundle/main.js +146 -90
  186. package/dist/cli-bundle/main.js.map +4 -4
  187. package/dist/core/item/item-type-definition.js +6 -2
  188. package/dist/core/item/item-type-definition.js.map +1 -1
  189. package/dist/core/item/type-registry.d.ts +4 -0
  190. package/dist/core/item/type-registry.js +10 -2
  191. package/dist/core/item/type-registry.js.map +1 -1
  192. package/dist/core/search/background-refresh.d.ts +53 -0
  193. package/dist/core/search/background-refresh.js +286 -0
  194. package/dist/core/search/background-refresh.js.map +1 -0
  195. package/dist/core/search/cache.d.ts +20 -1
  196. package/dist/core/search/cache.js +33 -4
  197. package/dist/core/search/cache.js.map +1 -1
  198. package/dist/core/search/vector-stores.js +7 -3
  199. package/dist/core/search/vector-stores.js.map +1 -1
  200. package/dist/core/shared/constants.d.ts +2 -2
  201. package/dist/core/shared/constants.js +2 -3
  202. package/dist/core/shared/constants.js.map +1 -1
  203. package/dist/core/store/item-format-migration.js +25 -15
  204. package/dist/core/store/item-format-migration.js.map +1 -1
  205. package/dist/core/store/settings-validator.js +6 -2
  206. package/dist/core/store/settings-validator.js.map +1 -1
  207. package/dist/core/telemetry/runtime.d.ts +10 -0
  208. package/dist/core/telemetry/runtime.js +86 -2
  209. package/dist/core/telemetry/runtime.js.map +1 -1
  210. package/dist/sdk/cli-contracts/tool-parameter-tables.js +4 -4
  211. package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
  212. package/dist/sdk/cli-contracts.js +26 -5
  213. package/dist/sdk/cli-contracts.js.map +1 -1
  214. package/dist/types.d.ts +7 -1
  215. package/dist/types.js +2 -2
  216. package/dist/types.js.map +1 -1
  217. package/docs/RELEASING.md +1 -1
  218. package/package.json +1 -2
  219. package/dist/cli-bundle/chunks/chunk-PB2YU2E3.js.map +0 -7
  220. package/dist/cli-bundle/chunks/chunk-RJONRNXN.js.map +0 -7
  221. package/dist/cli-bundle/chunks/chunk-SW5BMMCU.js +0 -13864
  222. package/dist/cli-bundle/chunks/chunk-SW5BMMCU.js.map +0 -7
  223. package/dist/cli-bundle/chunks/commands-XJ4TJ5UN.js +0 -24225
  224. package/dist/cli-bundle/chunks/commands-XJ4TJ5UN.js.map +0 -7
  225. package/dist/cli-bundle/chunks/register-list-query-EIVQ5FMR.js.map +0 -7
  226. package/dist/cli-bundle/chunks/register-mutation-RSZNPSGI.js.map +0 -7
  227. package/dist/cli-bundle/chunks/register-operations-APUSYDMR.js.map +0 -7
  228. package/dist/cli-bundle/chunks/register-setup-OZOKSMPJ.js.map +0 -7
@@ -0,0 +1,632 @@
1
+ import {
2
+ ITEM_TYPE_VALUES,
3
+ TYPE_TO_FOLDER,
4
+ normalizeItemTypeDefinition,
5
+ normalizeItemTypeStringList,
6
+ strictPolicyCommand
7
+ } from "./chunk-LSXGH6NE.js";
8
+
9
+ // dist/core/item/type-registry.js
10
+ !(function() {
11
+ try {
12
+ var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
13
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "3a95db0f-9c6e-5a39-bffe-30ff5e40da57");
14
+ } catch (e2) {
15
+ }
16
+ })();
17
+ var DEFAULT_REQUIRED_CREATE_FIELDS = [
18
+ "title",
19
+ "description",
20
+ "status",
21
+ "priority",
22
+ "tags",
23
+ "body",
24
+ "deadline",
25
+ "estimatedMinutes",
26
+ "acceptanceCriteria",
27
+ "author",
28
+ "message",
29
+ "assignee"
30
+ ];
31
+ var DEFAULT_REQUIRED_CREATE_REPEATABLES = ["dep", "comment", "note", "learning", "file", "test", "doc"];
32
+ var CREATE_COMMAND_OPTION_KEYS = [
33
+ "title",
34
+ "description",
35
+ "type",
36
+ "status",
37
+ "priority",
38
+ "tags",
39
+ "body",
40
+ "deadline",
41
+ "estimatedMinutes",
42
+ "acceptanceCriteria",
43
+ "definitionOfReady",
44
+ "order",
45
+ "goal",
46
+ "objective",
47
+ "value",
48
+ "impact",
49
+ "outcome",
50
+ "whyNow",
51
+ "author",
52
+ "message",
53
+ "assignee",
54
+ "parent",
55
+ "reviewer",
56
+ "risk",
57
+ "confidence",
58
+ "sprint",
59
+ "release",
60
+ "blockedBy",
61
+ "blockedReason",
62
+ "unblockNote",
63
+ "reporter",
64
+ "severity",
65
+ "environment",
66
+ "reproSteps",
67
+ "resolution",
68
+ "expectedResult",
69
+ "actualResult",
70
+ "affectedVersion",
71
+ "fixedVersion",
72
+ "component",
73
+ "regression",
74
+ "customerImpact",
75
+ "dep",
76
+ "comment",
77
+ "note",
78
+ "learning",
79
+ "file",
80
+ "test",
81
+ "doc",
82
+ "reminder",
83
+ "event",
84
+ "typeOption"
85
+ ];
86
+ var UPDATE_COMMAND_OPTION_KEYS = [
87
+ "title",
88
+ "description",
89
+ "body",
90
+ "status",
91
+ "closeReason",
92
+ "priority",
93
+ "type",
94
+ "tags",
95
+ "deadline",
96
+ "estimatedMinutes",
97
+ "acceptanceCriteria",
98
+ "definitionOfReady",
99
+ "order",
100
+ "goal",
101
+ "objective",
102
+ "value",
103
+ "impact",
104
+ "outcome",
105
+ "whyNow",
106
+ "author",
107
+ "message",
108
+ "assignee",
109
+ "parent",
110
+ "reviewer",
111
+ "risk",
112
+ "confidence",
113
+ "sprint",
114
+ "release",
115
+ "blockedBy",
116
+ "blockedReason",
117
+ "unblockNote",
118
+ "reporter",
119
+ "severity",
120
+ "environment",
121
+ "reproSteps",
122
+ "resolution",
123
+ "expectedResult",
124
+ "actualResult",
125
+ "affectedVersion",
126
+ "fixedVersion",
127
+ "component",
128
+ "regression",
129
+ "customerImpact",
130
+ "comment",
131
+ "note",
132
+ "learning",
133
+ "file",
134
+ "test",
135
+ "doc",
136
+ "reminder",
137
+ "event",
138
+ "typeOption",
139
+ "allowAuditUpdate",
140
+ "force"
141
+ ];
142
+ var SHARED_COMMAND_OPTION_ALIASES = {
143
+ "close-reason": "closeReason",
144
+ close_reason: "closeReason",
145
+ "estimated-minutes": "estimatedMinutes",
146
+ estimated_minutes: "estimatedMinutes",
147
+ estimate: "estimatedMinutes",
148
+ "acceptance-criteria": "acceptanceCriteria",
149
+ acceptance_criteria: "acceptanceCriteria",
150
+ ac: "acceptanceCriteria",
151
+ "definition-of-ready": "definitionOfReady",
152
+ definition_of_ready: "definitionOfReady",
153
+ rank: "order",
154
+ "why-now": "whyNow",
155
+ why_now: "whyNow",
156
+ "blocked-by": "blockedBy",
157
+ blocked_by: "blockedBy",
158
+ "blocked-reason": "blockedReason",
159
+ blocked_reason: "blockedReason",
160
+ "unblock-note": "unblockNote",
161
+ unblock_note: "unblockNote",
162
+ "repro-steps": "reproSteps",
163
+ repro_steps: "reproSteps",
164
+ "expected-result": "expectedResult",
165
+ expected_result: "expectedResult",
166
+ "actual-result": "actualResult",
167
+ actual_result: "actualResult",
168
+ "affected-version": "affectedVersion",
169
+ affected_version: "affectedVersion",
170
+ "fixed-version": "fixedVersion",
171
+ fixed_version: "fixedVersion",
172
+ "customer-impact": "customerImpact",
173
+ customer_impact: "customerImpact",
174
+ "type-option": "typeOption",
175
+ type_option: "typeOption",
176
+ type_options: "typeOption"
177
+ };
178
+ var CREATE_COMMAND_OPTION_ALIASES = {
179
+ ...SHARED_COMMAND_OPTION_ALIASES
180
+ };
181
+ var UPDATE_COMMAND_OPTION_ALIASES = {
182
+ ...SHARED_COMMAND_OPTION_ALIASES,
183
+ "allow-audit-update": "allowAuditUpdate",
184
+ allow_audit_update: "allowAuditUpdate"
185
+ };
186
+ var CREATE_COMMAND_OPTION_FLAG_LABELS = {
187
+ title: "--title",
188
+ description: "--description",
189
+ type: "--type",
190
+ status: "--status",
191
+ priority: "--priority",
192
+ tags: "--tags",
193
+ body: "--body",
194
+ deadline: "--deadline",
195
+ estimatedMinutes: "--estimate/--estimated-minutes",
196
+ acceptanceCriteria: "--acceptance-criteria/--ac",
197
+ definitionOfReady: "--definition-of-ready",
198
+ order: "--order/--rank",
199
+ goal: "--goal",
200
+ objective: "--objective",
201
+ value: "--value",
202
+ impact: "--impact",
203
+ outcome: "--outcome",
204
+ whyNow: "--why-now",
205
+ author: "--author",
206
+ message: "--message",
207
+ assignee: "--assignee",
208
+ parent: "--parent",
209
+ reviewer: "--reviewer",
210
+ risk: "--risk",
211
+ confidence: "--confidence",
212
+ sprint: "--sprint",
213
+ release: "--release",
214
+ blockedBy: "--blocked-by",
215
+ blockedReason: "--blocked-reason",
216
+ unblockNote: "--unblock-note",
217
+ reporter: "--reporter",
218
+ severity: "--severity",
219
+ environment: "--environment",
220
+ reproSteps: "--repro-steps",
221
+ resolution: "--resolution",
222
+ expectedResult: "--expected-result",
223
+ actualResult: "--actual-result",
224
+ affectedVersion: "--affected-version",
225
+ fixedVersion: "--fixed-version",
226
+ component: "--component",
227
+ regression: "--regression",
228
+ customerImpact: "--customer-impact",
229
+ dep: "--dep",
230
+ comment: "--comment",
231
+ note: "--note",
232
+ learning: "--learning",
233
+ file: "--file",
234
+ test: "--test",
235
+ doc: "--doc",
236
+ reminder: "--reminder",
237
+ event: "--event",
238
+ typeOption: "--type-option"
239
+ };
240
+ var UPDATE_COMMAND_OPTION_FLAG_LABELS = {
241
+ title: "--title",
242
+ description: "--description",
243
+ body: "--body",
244
+ status: "--status",
245
+ closeReason: "--close-reason",
246
+ priority: "--priority",
247
+ type: "--type",
248
+ tags: "--tags",
249
+ deadline: "--deadline",
250
+ estimatedMinutes: "--estimate/--estimated-minutes",
251
+ acceptanceCriteria: "--acceptance-criteria/--ac",
252
+ definitionOfReady: "--definition-of-ready",
253
+ order: "--order/--rank",
254
+ goal: "--goal",
255
+ objective: "--objective",
256
+ value: "--value",
257
+ impact: "--impact",
258
+ outcome: "--outcome",
259
+ whyNow: "--why-now",
260
+ assignee: "--assignee",
261
+ parent: "--parent",
262
+ reviewer: "--reviewer",
263
+ risk: "--risk",
264
+ confidence: "--confidence",
265
+ sprint: "--sprint",
266
+ release: "--release",
267
+ blockedBy: "--blocked-by",
268
+ blockedReason: "--blocked-reason",
269
+ unblockNote: "--unblock-note",
270
+ reporter: "--reporter",
271
+ severity: "--severity",
272
+ environment: "--environment",
273
+ reproSteps: "--repro-steps",
274
+ resolution: "--resolution",
275
+ expectedResult: "--expected-result",
276
+ actualResult: "--actual-result",
277
+ affectedVersion: "--affected-version",
278
+ fixedVersion: "--fixed-version",
279
+ component: "--component",
280
+ regression: "--regression",
281
+ customerImpact: "--customer-impact",
282
+ comment: "--comment",
283
+ note: "--note",
284
+ learning: "--learning",
285
+ file: "--file",
286
+ test: "--test",
287
+ doc: "--doc",
288
+ reminder: "--reminder",
289
+ event: "--event",
290
+ typeOption: "--type-option",
291
+ allowAuditUpdate: "--allow-audit-update",
292
+ author: "--author",
293
+ message: "--message",
294
+ force: "--force"
295
+ };
296
+ function normalizeCommandOptionToken(value) {
297
+ return value.trim().replace(/^--+/, "").toLowerCase();
298
+ }
299
+ function commandOptionKeys(command) {
300
+ return command === "create" ? CREATE_COMMAND_OPTION_KEYS : UPDATE_COMMAND_OPTION_KEYS;
301
+ }
302
+ function commandOptionAliases(command) {
303
+ return command === "create" ? CREATE_COMMAND_OPTION_ALIASES : UPDATE_COMMAND_OPTION_ALIASES;
304
+ }
305
+ function canonicalizeCommandOptionKey(command, rawOption) {
306
+ const normalizedToken = normalizeCommandOptionToken(rawOption);
307
+ if (normalizedToken.length === 0) {
308
+ return void 0;
309
+ }
310
+ const aliased = commandOptionAliases(command)[normalizedToken];
311
+ if (aliased) {
312
+ return aliased;
313
+ }
314
+ return commandOptionKeys(command).find((candidate) => candidate.toLowerCase() === normalizedToken);
315
+ }
316
+ function commandOptionFlagLabel(command, optionKey) {
317
+ const labels = command === "create" ? CREATE_COMMAND_OPTION_FLAG_LABELS : UPDATE_COMMAND_OPTION_FLAG_LABELS;
318
+ return labels[optionKey] ?? `--${optionKey.replace(/([A-Z])/g, "-$1").toLowerCase()}`;
319
+ }
320
+ function toDefaultFolder(name) {
321
+ const normalized = name.trim().toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
322
+ if (normalized.length === 0) {
323
+ return "items";
324
+ }
325
+ return normalized.endsWith("s") ? normalized : `${normalized}s`;
326
+ }
327
+ function normalizeTypeDefinition(definition) {
328
+ return normalizeItemTypeDefinition(definition, { resolvePolicyCommand: strictPolicyCommand });
329
+ }
330
+ function coerceTypeDefinitionFromUnknown(raw) {
331
+ if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
332
+ return null;
333
+ }
334
+ const record = raw;
335
+ const name = typeof record.name === "string" ? record.name : "";
336
+ if (name.trim().length === 0) {
337
+ return null;
338
+ }
339
+ const folder = typeof record.folder === "string" ? record.folder : void 0;
340
+ const description = typeof record.description === "string" ? record.description : void 0;
341
+ const defaultStatus = typeof record.default_status === "string" ? record.default_status : void 0;
342
+ const aliases = Array.isArray(record.aliases) ? record.aliases.filter((value) => typeof value === "string") : void 0;
343
+ const requiredCreateFields = Array.isArray(record.required_create_fields) ? record.required_create_fields.filter((value) => typeof value === "string") : void 0;
344
+ const requiredCreateRepeatables = Array.isArray(record.required_create_repeatables) ? record.required_create_repeatables.filter((value) => typeof value === "string") : void 0;
345
+ let options;
346
+ if (Array.isArray(record.options)) {
347
+ options = [];
348
+ for (const entry of record.options) {
349
+ if (typeof entry !== "object" || entry === null || Array.isArray(entry)) {
350
+ continue;
351
+ }
352
+ const optionRecord = entry;
353
+ if (typeof optionRecord.key !== "string") {
354
+ continue;
355
+ }
356
+ options.push({
357
+ key: optionRecord.key,
358
+ values: Array.isArray(optionRecord.values) ? optionRecord.values.filter((value) => typeof value === "string") : [],
359
+ required: optionRecord.required === void 0 ? void 0 : Boolean(optionRecord.required),
360
+ aliases: Array.isArray(optionRecord.aliases) ? optionRecord.aliases.filter((value) => typeof value === "string") : void 0,
361
+ description: typeof optionRecord.description === "string" ? optionRecord.description : void 0
362
+ });
363
+ }
364
+ }
365
+ let commandOptionPolicies;
366
+ if (Array.isArray(record.command_option_policies)) {
367
+ commandOptionPolicies = [];
368
+ for (const entry of record.command_option_policies) {
369
+ if (typeof entry !== "object" || entry === null || Array.isArray(entry)) {
370
+ continue;
371
+ }
372
+ const policyRecord = entry;
373
+ if (typeof policyRecord.command !== "string" || typeof policyRecord.option !== "string") {
374
+ continue;
375
+ }
376
+ const normalizedCommand = policyRecord.command.trim().toLowerCase();
377
+ if (normalizedCommand !== "create" && normalizedCommand !== "update") {
378
+ continue;
379
+ }
380
+ commandOptionPolicies.push({
381
+ command: normalizedCommand,
382
+ option: policyRecord.option,
383
+ required: policyRecord.required === void 0 ? void 0 : Boolean(policyRecord.required),
384
+ visible: policyRecord.visible === void 0 ? void 0 : Boolean(policyRecord.visible),
385
+ enabled: policyRecord.enabled === void 0 ? void 0 : Boolean(policyRecord.enabled)
386
+ });
387
+ }
388
+ }
389
+ return {
390
+ name,
391
+ description,
392
+ default_status: defaultStatus,
393
+ folder,
394
+ aliases,
395
+ required_create_fields: requiredCreateFields,
396
+ required_create_repeatables: requiredCreateRepeatables,
397
+ options,
398
+ command_option_policies: commandOptionPolicies
399
+ };
400
+ }
401
+ function applyTypeDefinitions(source, target, preserveBuiltinDefaults) {
402
+ for (const rawDefinition of source) {
403
+ const normalizedDefinition = normalizeTypeDefinition(rawDefinition);
404
+ if (!normalizedDefinition) {
405
+ continue;
406
+ }
407
+ const lowerName = normalizedDefinition.name.toLowerCase();
408
+ const existing = target.get(lowerName);
409
+ const keepName = existing?.name ?? normalizedDefinition.name;
410
+ const folder = normalizedDefinition.folder ?? existing?.folder ?? toDefaultFolder(keepName);
411
+ const aliases = normalizeItemTypeStringList([
412
+ ...existing?.aliases ?? [],
413
+ ...normalizedDefinition.aliases ?? []
414
+ ]);
415
+ const requiredCreateFields = normalizedDefinition.required_create_fields ? normalizeItemTypeStringList(normalizedDefinition.required_create_fields) : existing?.required_create_fields ?? (preserveBuiltinDefaults ? [...DEFAULT_REQUIRED_CREATE_FIELDS] : []);
416
+ const requiredCreateRepeatables = normalizedDefinition.required_create_repeatables ? normalizeItemTypeStringList(normalizedDefinition.required_create_repeatables) : existing?.required_create_repeatables ?? (preserveBuiltinDefaults ? [...DEFAULT_REQUIRED_CREATE_REPEATABLES] : []);
417
+ const options = normalizedDefinition.options ? normalizedDefinition.options : existing?.options ? [...existing.options] : [];
418
+ const commandOptionPolicies = normalizedDefinition.command_option_policies ? normalizedDefinition.command_option_policies : existing?.command_option_policies ? [...existing.command_option_policies] : [];
419
+ const defaultStatus = normalizedDefinition.default_status ?? existing?.default_status;
420
+ const description = normalizedDefinition.description ?? existing?.description;
421
+ target.set(lowerName, {
422
+ name: keepName,
423
+ ...description ? { description } : {},
424
+ ...defaultStatus ? { default_status: defaultStatus } : {},
425
+ folder,
426
+ aliases,
427
+ required_create_fields: requiredCreateFields,
428
+ required_create_repeatables: requiredCreateRepeatables,
429
+ options,
430
+ command_option_policies: commandOptionPolicies
431
+ });
432
+ }
433
+ }
434
+ function collectExtensionTypeDefinitions(registrations) {
435
+ if (!registrations) {
436
+ return [];
437
+ }
438
+ const definitions = [];
439
+ for (const registration of registrations.item_types ?? []) {
440
+ const typeDefinitionsRaw = registration.types;
441
+ if (!Array.isArray(typeDefinitionsRaw)) {
442
+ continue;
443
+ }
444
+ for (const rawDefinition of typeDefinitionsRaw) {
445
+ const normalized = coerceTypeDefinitionFromUnknown(rawDefinition);
446
+ if (normalized) {
447
+ definitions.push(normalized);
448
+ }
449
+ }
450
+ }
451
+ return definitions;
452
+ }
453
+ function resolveItemTypeRegistry(settings, extensionRegistrations = null) {
454
+ const byLowerName = /* @__PURE__ */ new Map();
455
+ for (const builtin of ITEM_TYPE_VALUES) {
456
+ byLowerName.set(builtin.toLowerCase(), {
457
+ name: builtin,
458
+ folder: TYPE_TO_FOLDER[builtin],
459
+ aliases: [],
460
+ required_create_fields: [...DEFAULT_REQUIRED_CREATE_FIELDS],
461
+ required_create_repeatables: [...DEFAULT_REQUIRED_CREATE_REPEATABLES],
462
+ options: [],
463
+ command_option_policies: []
464
+ });
465
+ }
466
+ applyTypeDefinitions(settings.item_types?.definitions ?? [], byLowerName, false);
467
+ applyTypeDefinitions(collectExtensionTypeDefinitions(extensionRegistrations), byLowerName, false);
468
+ const definitions = [...byLowerName.values()].sort((left, right) => left.name.localeCompare(right.name));
469
+ const byType = {};
470
+ const aliasToType = {};
471
+ const typeToFolder = {};
472
+ for (const definition of definitions) {
473
+ byType[definition.name] = definition;
474
+ typeToFolder[definition.name] = definition.folder;
475
+ aliasToType[definition.name.toLowerCase()] = definition.name;
476
+ for (const alias of definition.aliases) {
477
+ aliasToType[alias.toLowerCase()] = definition.name;
478
+ }
479
+ }
480
+ const folders = [...new Set(definitions.map((definition) => definition.folder))].sort((left, right) => left.localeCompare(right));
481
+ return {
482
+ types: definitions.map((definition) => definition.name),
483
+ folders,
484
+ type_to_folder: typeToFolder,
485
+ by_type: byType,
486
+ alias_to_type: aliasToType
487
+ };
488
+ }
489
+ function resolveTypeName(rawType, registry) {
490
+ if (rawType === void 0) {
491
+ return void 0;
492
+ }
493
+ return registry.alias_to_type[rawType.trim().toLowerCase()];
494
+ }
495
+ function resolveTypeDefinition(typeName, registry) {
496
+ const resolvedName = resolveTypeName(typeName, registry);
497
+ if (!resolvedName) {
498
+ return void 0;
499
+ }
500
+ return registry.by_type[resolvedName];
501
+ }
502
+ function resolveCommandOptionPolicyState(typeDefinition, command, baseRequiredOptions) {
503
+ const errors = [];
504
+ const required = /* @__PURE__ */ new Set();
505
+ const hidden = /* @__PURE__ */ new Set();
506
+ const disabled = /* @__PURE__ */ new Set();
507
+ for (const rawBase of baseRequiredOptions) {
508
+ const canonical = canonicalizeCommandOptionKey(command, rawBase);
509
+ if (!canonical) {
510
+ errors.push(`Unsupported base required option "${rawBase}" for command "${command}" on type "${typeDefinition.name}"`);
511
+ continue;
512
+ }
513
+ required.add(canonical);
514
+ }
515
+ for (const policy of typeDefinition.command_option_policies) {
516
+ if (policy.command !== command) {
517
+ continue;
518
+ }
519
+ const canonical = canonicalizeCommandOptionKey(command, policy.option);
520
+ if (!canonical) {
521
+ errors.push(`Unsupported command_option_policies option "${policy.option}" for command "${command}" on type "${typeDefinition.name}"`);
522
+ continue;
523
+ }
524
+ if (policy.required !== void 0) {
525
+ if (policy.required) {
526
+ required.add(canonical);
527
+ } else {
528
+ required.delete(canonical);
529
+ }
530
+ }
531
+ if (policy.visible !== void 0) {
532
+ if (policy.visible) {
533
+ hidden.delete(canonical);
534
+ } else {
535
+ hidden.add(canonical);
536
+ }
537
+ }
538
+ if (policy.enabled !== void 0) {
539
+ if (policy.enabled) {
540
+ disabled.delete(canonical);
541
+ } else {
542
+ disabled.add(canonical);
543
+ }
544
+ }
545
+ }
546
+ for (const option of required) {
547
+ if (disabled.has(option)) {
548
+ errors.push(`Option "${option}" cannot be both required and disabled for command "${command}" on type "${typeDefinition.name}"`);
549
+ }
550
+ }
551
+ return {
552
+ required: [...required],
553
+ hidden: [...hidden].sort((left, right) => left.localeCompare(right)),
554
+ disabled: [...disabled].sort((left, right) => left.localeCompare(right)),
555
+ errors
556
+ };
557
+ }
558
+ function validateTypeOptions(typeName, rawTypeOptions, registry) {
559
+ const typeDefinition = resolveTypeDefinition(typeName, registry);
560
+ if (!typeDefinition) {
561
+ return {
562
+ normalized: void 0,
563
+ errors: [`Unknown type "${typeName}"`]
564
+ };
565
+ }
566
+ const errors = [];
567
+ const optionByAlias = /* @__PURE__ */ new Map();
568
+ for (const option of typeDefinition.options) {
569
+ optionByAlias.set(option.key.toLowerCase(), option);
570
+ for (const alias of option.aliases ?? []) {
571
+ optionByAlias.set(alias.toLowerCase(), option);
572
+ }
573
+ }
574
+ const normalized = {};
575
+ for (const [rawKey, rawValue] of Object.entries(rawTypeOptions ?? {})) {
576
+ const trimmedKey = rawKey.trim();
577
+ const trimmedValue = rawValue.trim();
578
+ if (trimmedKey.length === 0) {
579
+ errors.push("type option keys must not be empty");
580
+ continue;
581
+ }
582
+ if (trimmedValue.length === 0) {
583
+ errors.push(`type option "${trimmedKey}" must not be empty`);
584
+ continue;
585
+ }
586
+ const optionDefinition = optionByAlias.get(trimmedKey.toLowerCase());
587
+ if (!optionDefinition) {
588
+ const allowed = typeDefinition.options.map((option) => option.key).join(", ");
589
+ errors.push(typeDefinition.options.length > 0 ? `Unknown type option "${trimmedKey}" for type "${typeDefinition.name}". Allowed: ${allowed}` : `Type "${typeDefinition.name}" does not define any configurable type options`);
590
+ continue;
591
+ }
592
+ const allowedValues = optionDefinition.values;
593
+ let resolvedValue = trimmedValue;
594
+ if (allowedValues.length > 0) {
595
+ const valueLookup = new Map(allowedValues.map((value) => [value.toLowerCase(), value]));
596
+ const canonical = valueLookup.get(trimmedValue.toLowerCase());
597
+ if (!canonical) {
598
+ errors.push(`Invalid value "${trimmedValue}" for type option "${optionDefinition.key}". Allowed: ${allowedValues.join(", ")}`);
599
+ continue;
600
+ }
601
+ resolvedValue = canonical;
602
+ }
603
+ normalized[optionDefinition.key] = resolvedValue;
604
+ }
605
+ for (const option of typeDefinition.options) {
606
+ if (option.required && !(option.key in normalized)) {
607
+ errors.push(`Missing required type option "${option.key}" for type "${typeDefinition.name}"`);
608
+ }
609
+ }
610
+ const sortedKeys = Object.keys(normalized).sort((left, right) => left.localeCompare(right));
611
+ if (sortedKeys.length === 0) {
612
+ return {
613
+ normalized: void 0,
614
+ errors
615
+ };
616
+ }
617
+ return {
618
+ normalized: Object.fromEntries(sortedKeys.map((key) => [key, normalized[key]])),
619
+ errors
620
+ };
621
+ }
622
+
623
+ export {
624
+ canonicalizeCommandOptionKey,
625
+ commandOptionFlagLabel,
626
+ resolveItemTypeRegistry,
627
+ resolveTypeName,
628
+ resolveTypeDefinition,
629
+ resolveCommandOptionPolicyState,
630
+ validateTypeOptions
631
+ };
632
+ //# sourceMappingURL=chunk-WDPXDQFG.js.map