@lumenflow/packs-software-delivery 4.24.0 → 5.0.0

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 (286) hide show
  1. package/dist/manifest-schema.d.ts +12 -0
  2. package/dist/manifest-schema.d.ts.map +1 -1
  3. package/dist/manifest-schema.js +10 -0
  4. package/dist/manifest-schema.js.map +1 -1
  5. package/dist/manifest.d.ts +21 -0
  6. package/dist/manifest.d.ts.map +1 -1
  7. package/dist/manifest.js +92 -1
  8. package/dist/manifest.js.map +1 -1
  9. package/dist/src/commands/index.d.ts +2 -0
  10. package/dist/src/commands/index.d.ts.map +1 -0
  11. package/dist/src/commands/index.js +5 -0
  12. package/dist/src/commands/index.js.map +1 -0
  13. package/dist/src/config/delivery-review-contract.d.ts +17 -0
  14. package/dist/src/config/delivery-review-contract.d.ts.map +1 -0
  15. package/dist/src/config/delivery-review-contract.js +19 -0
  16. package/dist/src/config/delivery-review-contract.js.map +1 -0
  17. package/dist/src/config/env-accessors.d.ts +16 -0
  18. package/dist/src/config/env-accessors.d.ts.map +1 -0
  19. package/dist/src/config/env-accessors.js +18 -0
  20. package/dist/src/config/env-accessors.js.map +1 -0
  21. package/dist/src/config/index.d.ts +3 -0
  22. package/dist/src/config/index.d.ts.map +1 -0
  23. package/dist/src/config/index.js +8 -0
  24. package/dist/src/config/index.js.map +1 -0
  25. package/dist/src/config/normalize-config-keys.d.ts +16 -0
  26. package/dist/src/config/normalize-config-keys.d.ts.map +1 -0
  27. package/dist/src/config/normalize-config-keys.js +18 -0
  28. package/dist/src/config/normalize-config-keys.js.map +1 -0
  29. package/dist/src/config/schemas/lumenflow-config-schema-types.d.ts +190 -0
  30. package/dist/src/config/schemas/lumenflow-config-schema-types.d.ts.map +1 -0
  31. package/dist/src/config/schemas/lumenflow-config-schema-types.js +182 -0
  32. package/dist/src/config/schemas/lumenflow-config-schema-types.js.map +1 -0
  33. package/dist/src/config/schemas/lumenflow-config-schema.d.ts +190 -0
  34. package/dist/src/config/schemas/lumenflow-config-schema.d.ts.map +1 -0
  35. package/dist/src/config/schemas/lumenflow-config-schema.js +182 -0
  36. package/dist/src/config/schemas/lumenflow-config-schema.js.map +1 -0
  37. package/dist/src/config/workspace-reader.d.ts +56 -0
  38. package/dist/src/config/workspace-reader.d.ts.map +1 -0
  39. package/dist/src/config/workspace-reader.js +209 -0
  40. package/dist/src/config/workspace-reader.js.map +1 -0
  41. package/dist/src/constants/backlog-patterns.d.ts +21 -0
  42. package/dist/src/constants/backlog-patterns.d.ts.map +1 -0
  43. package/dist/src/constants/backlog-patterns.js +26 -0
  44. package/dist/src/constants/backlog-patterns.js.map +1 -0
  45. package/dist/src/constants/client-ids.d.ts +16 -0
  46. package/dist/src/constants/client-ids.d.ts.map +1 -0
  47. package/dist/src/constants/client-ids.js +16 -0
  48. package/dist/src/constants/client-ids.js.map +1 -0
  49. package/dist/src/constants/config-contract.d.ts +2 -0
  50. package/dist/src/constants/config-contract.d.ts.map +1 -0
  51. package/dist/src/constants/config-contract.js +7 -0
  52. package/dist/src/constants/config-contract.js.map +1 -0
  53. package/dist/src/constants/docs-layout-presets.d.ts +31 -0
  54. package/dist/src/constants/docs-layout-presets.d.ts.map +1 -0
  55. package/dist/src/constants/docs-layout-presets.js +41 -0
  56. package/dist/src/constants/docs-layout-presets.js.map +1 -0
  57. package/dist/src/constants/duration-constants.d.ts +11 -0
  58. package/dist/src/constants/duration-constants.d.ts.map +1 -0
  59. package/dist/src/constants/duration-constants.js +13 -0
  60. package/dist/src/constants/duration-constants.js.map +1 -0
  61. package/dist/src/constants/gate-constants.d.ts +24 -0
  62. package/dist/src/constants/gate-constants.d.ts.map +1 -0
  63. package/dist/src/constants/gate-constants.js +26 -0
  64. package/dist/src/constants/gate-constants.js.map +1 -0
  65. package/dist/src/constants/index.d.ts +18 -0
  66. package/dist/src/constants/index.d.ts.map +1 -0
  67. package/dist/src/constants/index.js +29 -0
  68. package/dist/src/constants/index.js.map +1 -0
  69. package/dist/src/constants/lock-constants.d.ts +29 -0
  70. package/dist/src/constants/lock-constants.d.ts.map +1 -0
  71. package/dist/src/constants/lock-constants.js +31 -0
  72. package/dist/src/constants/lock-constants.js.map +1 -0
  73. package/dist/src/constants/object-guards.d.ts +9 -0
  74. package/dist/src/constants/object-guards.d.ts.map +1 -0
  75. package/dist/src/constants/object-guards.js +11 -0
  76. package/dist/src/constants/object-guards.js.map +1 -0
  77. package/dist/src/constants/section-headings.d.ts +35 -0
  78. package/dist/src/constants/section-headings.d.ts.map +1 -0
  79. package/dist/src/constants/section-headings.js +82 -0
  80. package/dist/src/constants/section-headings.js.map +1 -0
  81. package/dist/src/constants/wu-cli-constants.d.ts +434 -0
  82. package/dist/src/constants/wu-cli-constants.d.ts.map +1 -0
  83. package/dist/src/constants/wu-cli-constants.js +439 -0
  84. package/dist/src/constants/wu-cli-constants.js.map +1 -0
  85. package/dist/src/constants/wu-domain-constants.d.ts +296 -0
  86. package/dist/src/constants/wu-domain-constants.d.ts.map +1 -0
  87. package/dist/src/constants/wu-domain-constants.js +400 -0
  88. package/dist/src/constants/wu-domain-constants.js.map +1 -0
  89. package/dist/src/constants/wu-git-constants.d.ts +2 -0
  90. package/dist/src/constants/wu-git-constants.d.ts.map +1 -0
  91. package/dist/src/constants/wu-git-constants.js +7 -0
  92. package/dist/src/constants/wu-git-constants.js.map +1 -0
  93. package/dist/src/constants/wu-id-format.d.ts +138 -0
  94. package/dist/src/constants/wu-id-format.d.ts.map +1 -0
  95. package/dist/src/constants/wu-id-format.js +265 -0
  96. package/dist/src/constants/wu-id-format.js.map +1 -0
  97. package/dist/src/constants/wu-paths-constants.d.ts +254 -0
  98. package/dist/src/constants/wu-paths-constants.d.ts.map +1 -0
  99. package/dist/src/constants/wu-paths-constants.js +276 -0
  100. package/dist/src/constants/wu-paths-constants.js.map +1 -0
  101. package/dist/src/constants/wu-statuses.d.ts +209 -0
  102. package/dist/src/constants/wu-statuses.d.ts.map +1 -0
  103. package/dist/src/constants/wu-statuses.js +245 -0
  104. package/dist/src/constants/wu-statuses.js.map +1 -0
  105. package/dist/src/constants/wu-type-helpers.d.ts +28 -0
  106. package/dist/src/constants/wu-type-helpers.d.ts.map +1 -0
  107. package/dist/src/constants/wu-type-helpers.js +49 -0
  108. package/dist/src/constants/wu-type-helpers.js.map +1 -0
  109. package/dist/src/constants/wu-ui-constants.d.ts +236 -0
  110. package/dist/src/constants/wu-ui-constants.d.ts.map +1 -0
  111. package/dist/src/constants/wu-ui-constants.js +238 -0
  112. package/dist/src/constants/wu-ui-constants.js.map +1 -0
  113. package/dist/src/constants/wu-validation-constants.d.ts +61 -0
  114. package/dist/src/constants/wu-validation-constants.d.ts.map +1 -0
  115. package/dist/src/constants/wu-validation-constants.js +69 -0
  116. package/dist/src/constants/wu-validation-constants.js.map +1 -0
  117. package/dist/src/domain/index.d.ts +4 -0
  118. package/dist/src/domain/index.d.ts.map +1 -0
  119. package/dist/src/domain/index.js +6 -0
  120. package/dist/src/domain/index.js.map +1 -0
  121. package/dist/src/domain/orchestration.constants.d.ts +111 -0
  122. package/dist/src/domain/orchestration.constants.d.ts.map +1 -0
  123. package/dist/src/domain/orchestration.constants.js +130 -0
  124. package/dist/src/domain/orchestration.constants.js.map +1 -0
  125. package/dist/src/domain/orchestration.schemas.d.ts +307 -0
  126. package/dist/src/domain/orchestration.schemas.d.ts.map +1 -0
  127. package/dist/src/domain/orchestration.schemas.js +214 -0
  128. package/dist/src/domain/orchestration.schemas.js.map +1 -0
  129. package/dist/src/domain/orchestration.types.d.ts +134 -0
  130. package/dist/src/domain/orchestration.types.d.ts.map +1 -0
  131. package/dist/src/domain/orchestration.types.js +5 -0
  132. package/dist/src/domain/orchestration.types.js.map +1 -0
  133. package/dist/src/methodology/incremental-test.d.ts +33 -0
  134. package/dist/src/methodology/incremental-test.d.ts.map +1 -0
  135. package/dist/src/methodology/incremental-test.js +73 -0
  136. package/dist/src/methodology/incremental-test.js.map +1 -0
  137. package/dist/src/methodology/index.d.ts +3 -0
  138. package/dist/src/methodology/index.d.ts.map +1 -0
  139. package/dist/src/methodology/index.js +6 -0
  140. package/dist/src/methodology/index.js.map +1 -0
  141. package/dist/src/methodology/manual-test-validator.d.ts +97 -0
  142. package/dist/src/methodology/manual-test-validator.d.ts.map +1 -0
  143. package/dist/src/methodology/manual-test-validator.js +248 -0
  144. package/dist/src/methodology/manual-test-validator.js.map +1 -0
  145. package/dist/src/policy/coverage-gate.d.ts +127 -0
  146. package/dist/src/policy/coverage-gate.d.ts.map +1 -0
  147. package/dist/src/policy/coverage-gate.js +211 -0
  148. package/dist/src/policy/coverage-gate.js.map +1 -0
  149. package/dist/src/policy/gates-agent-mode.d.ts +107 -0
  150. package/dist/src/policy/gates-agent-mode.d.ts.map +1 -0
  151. package/dist/src/policy/gates-agent-mode.js +138 -0
  152. package/dist/src/policy/gates-agent-mode.js.map +1 -0
  153. package/dist/src/policy/gates-config-internal.d.ts +54 -0
  154. package/dist/src/policy/gates-config-internal.d.ts.map +1 -0
  155. package/dist/src/policy/gates-config-internal.js +108 -0
  156. package/dist/src/policy/gates-config-internal.js.map +1 -0
  157. package/dist/src/policy/gates-config.d.ts +67 -0
  158. package/dist/src/policy/gates-config.d.ts.map +1 -0
  159. package/dist/src/policy/gates-config.js +193 -0
  160. package/dist/src/policy/gates-config.js.map +1 -0
  161. package/dist/src/policy/gates-coverage.d.ts +48 -0
  162. package/dist/src/policy/gates-coverage.d.ts.map +1 -0
  163. package/dist/src/policy/gates-coverage.js +182 -0
  164. package/dist/src/policy/gates-coverage.js.map +1 -0
  165. package/dist/src/policy/gates-presets.d.ts +51 -0
  166. package/dist/src/policy/gates-presets.d.ts.map +1 -0
  167. package/dist/src/policy/gates-presets.js +117 -0
  168. package/dist/src/policy/gates-presets.js.map +1 -0
  169. package/dist/src/policy/gates-schemas.d.ts +142 -0
  170. package/dist/src/policy/gates-schemas.d.ts.map +1 -0
  171. package/dist/src/policy/gates-schemas.js +67 -0
  172. package/dist/src/policy/gates-schemas.js.map +1 -0
  173. package/dist/src/policy/index.d.ts +19 -0
  174. package/dist/src/policy/index.d.ts.map +1 -0
  175. package/dist/src/policy/index.js +21 -0
  176. package/dist/src/policy/index.js.map +1 -0
  177. package/dist/src/policy/package-manager-resolver.d.ts +79 -0
  178. package/dist/src/policy/package-manager-resolver.d.ts.map +1 -0
  179. package/dist/src/policy/package-manager-resolver.js +245 -0
  180. package/dist/src/policy/package-manager-resolver.js.map +1 -0
  181. package/dist/src/policy/resolve-policy.d.ts +337 -0
  182. package/dist/src/policy/resolve-policy.d.ts.map +1 -0
  183. package/dist/src/policy/resolve-policy.js +353 -0
  184. package/dist/src/policy/resolve-policy.js.map +1 -0
  185. package/dist/src/ports/config.ports.d.ts +83 -0
  186. package/dist/src/ports/config.ports.d.ts.map +1 -0
  187. package/dist/src/ports/config.ports.js +4 -0
  188. package/dist/src/ports/config.ports.js.map +1 -0
  189. package/dist/src/ports/dashboard-renderer.port.d.ts +113 -0
  190. package/dist/src/ports/dashboard-renderer.port.d.ts.map +1 -0
  191. package/dist/src/ports/dashboard-renderer.port.js +4 -0
  192. package/dist/src/ports/dashboard-renderer.port.js.map +1 -0
  193. package/dist/src/ports/index.d.ts +5 -0
  194. package/dist/src/ports/index.d.ts.map +1 -0
  195. package/dist/src/ports/index.js +10 -0
  196. package/dist/src/ports/index.js.map +1 -0
  197. package/dist/src/ports/sync-validator.ports.d.ts +52 -0
  198. package/dist/src/ports/sync-validator.ports.d.ts.map +1 -0
  199. package/dist/src/ports/sync-validator.ports.js +4 -0
  200. package/dist/src/ports/sync-validator.ports.js.map +1 -0
  201. package/dist/src/ports/wu-helpers.ports.d.ts +157 -0
  202. package/dist/src/ports/wu-helpers.ports.d.ts.map +1 -0
  203. package/dist/src/ports/wu-helpers.ports.js +4 -0
  204. package/dist/src/ports/wu-helpers.ports.js.map +1 -0
  205. package/dist/src/ports/wu-state.ports.d.ts +209 -0
  206. package/dist/src/ports/wu-state.ports.d.ts.map +1 -0
  207. package/dist/src/ports/wu-state.ports.js +4 -0
  208. package/dist/src/ports/wu-state.ports.js.map +1 -0
  209. package/dist/src/primitives/index.d.ts +2 -0
  210. package/dist/src/primitives/index.d.ts.map +1 -0
  211. package/dist/src/primitives/index.js +5 -0
  212. package/dist/src/primitives/index.js.map +1 -0
  213. package/dist/src/runtime/index.d.ts +2 -0
  214. package/dist/src/runtime/index.d.ts.map +1 -0
  215. package/dist/src/runtime/index.js +6 -0
  216. package/dist/src/runtime/index.js.map +1 -0
  217. package/dist/src/runtime/work-classifier.d.ts +103 -0
  218. package/dist/src/runtime/work-classifier.d.ts.map +1 -0
  219. package/dist/src/runtime/work-classifier.js +427 -0
  220. package/dist/src/runtime/work-classifier.js.map +1 -0
  221. package/dist/src/sandbox/index.d.ts +6 -0
  222. package/dist/src/sandbox/index.d.ts.map +1 -0
  223. package/dist/src/sandbox/index.js +10 -0
  224. package/dist/src/sandbox/index.js.map +1 -0
  225. package/dist/src/sandbox/sandbox-allowlist.d.ts +16 -0
  226. package/dist/src/sandbox/sandbox-allowlist.d.ts.map +1 -0
  227. package/dist/src/sandbox/sandbox-allowlist.js +77 -0
  228. package/dist/src/sandbox/sandbox-allowlist.js.map +1 -0
  229. package/dist/src/sandbox/sandbox-backend-linux.d.ts +6 -0
  230. package/dist/src/sandbox/sandbox-backend-linux.d.ts.map +1 -0
  231. package/dist/src/sandbox/sandbox-backend-linux.js +67 -0
  232. package/dist/src/sandbox/sandbox-backend-linux.js.map +1 -0
  233. package/dist/src/sandbox/sandbox-backend-macos.d.ts +6 -0
  234. package/dist/src/sandbox/sandbox-backend-macos.d.ts.map +1 -0
  235. package/dist/src/sandbox/sandbox-backend-macos.js +112 -0
  236. package/dist/src/sandbox/sandbox-backend-macos.js.map +1 -0
  237. package/dist/src/sandbox/sandbox-backend-windows.d.ts +6 -0
  238. package/dist/src/sandbox/sandbox-backend-windows.d.ts.map +1 -0
  239. package/dist/src/sandbox/sandbox-backend-windows.js +30 -0
  240. package/dist/src/sandbox/sandbox-backend-windows.js.map +1 -0
  241. package/dist/src/sandbox/sandbox-profile.d.ts +58 -0
  242. package/dist/src/sandbox/sandbox-profile.d.ts.map +1 -0
  243. package/dist/src/sandbox/sandbox-profile.js +69 -0
  244. package/dist/src/sandbox/sandbox-profile.js.map +1 -0
  245. package/dist/src/schemas/index.d.ts +2 -0
  246. package/dist/src/schemas/index.d.ts.map +1 -0
  247. package/dist/src/schemas/index.js +5 -0
  248. package/dist/src/schemas/index.js.map +1 -0
  249. package/dist/src/state/date-utils.d.ts +66 -0
  250. package/dist/src/state/date-utils.d.ts.map +1 -0
  251. package/dist/src/state/date-utils.js +143 -0
  252. package/dist/src/state/date-utils.js.map +1 -0
  253. package/dist/src/state/index.d.ts +8 -0
  254. package/dist/src/state/index.d.ts.map +1 -0
  255. package/dist/src/state/index.js +15 -0
  256. package/dist/src/state/index.js.map +1 -0
  257. package/dist/src/state/state-machine.d.ts +14 -0
  258. package/dist/src/state/state-machine.d.ts.map +1 -0
  259. package/dist/src/state/state-machine.js +92 -0
  260. package/dist/src/state/state-machine.js.map +1 -0
  261. package/dist/src/state/wu-doc-types.d.ts +48 -0
  262. package/dist/src/state/wu-doc-types.d.ts.map +1 -0
  263. package/dist/src/state/wu-doc-types.js +4 -0
  264. package/dist/src/state/wu-doc-types.js.map +1 -0
  265. package/dist/src/state/wu-paths.d.ts +275 -0
  266. package/dist/src/state/wu-paths.d.ts.map +1 -0
  267. package/dist/src/state/wu-paths.js +335 -0
  268. package/dist/src/state/wu-paths.js.map +1 -0
  269. package/dist/src/state/wu-schema.d.ts +831 -0
  270. package/dist/src/state/wu-schema.d.ts.map +1 -0
  271. package/dist/src/state/wu-schema.js +934 -0
  272. package/dist/src/state/wu-schema.js.map +1 -0
  273. package/dist/src/state/wu-state-schema.d.ts +292 -0
  274. package/dist/src/state/wu-state-schema.d.ts.map +1 -0
  275. package/dist/src/state/wu-state-schema.js +215 -0
  276. package/dist/src/state/wu-state-schema.js.map +1 -0
  277. package/dist/src/state/wu-yaml.d.ts +113 -0
  278. package/dist/src/state/wu-yaml.d.ts.map +1 -0
  279. package/dist/src/state/wu-yaml.js +307 -0
  280. package/dist/src/state/wu-yaml.js.map +1 -0
  281. package/dist/tool-impl/wu-lifecycle-tools.d.ts +11 -0
  282. package/dist/tool-impl/wu-lifecycle-tools.d.ts.map +1 -1
  283. package/dist/tool-impl/wu-lifecycle-tools.js +17 -0
  284. package/dist/tool-impl/wu-lifecycle-tools.js.map +1 -1
  285. package/manifest.yaml +46 -0
  286. package/package.json +88 -3
@@ -0,0 +1,209 @@
1
+ /**
2
+ * WU Status Constants
3
+ *
4
+ * WU-1549: Extracted from wu-constants.ts for domain-specific modularity.
5
+ * Contains WU status values, groups, exposure types, claimed modes, and incident severity.
6
+ *
7
+ * @module wu-statuses
8
+ */
9
+ /**
10
+ * WU status values
11
+ *
12
+ * Centralized status strings to avoid magic strings in wu-* scripts.
13
+ * Includes both canonical statuses and legacy variants found in YAML files.
14
+ */
15
+ export declare const WU_STATUS: {
16
+ TODO: string;
17
+ READY: string;
18
+ BACKLOG: string;
19
+ IN_PROGRESS: string;
20
+ BLOCKED: string;
21
+ DONE: string;
22
+ COMPLETED: string;
23
+ CANCELLED: string;
24
+ ABANDONED: string;
25
+ DEFERRED: string;
26
+ CLOSED: string;
27
+ SUPERSEDED: string;
28
+ };
29
+ export type WUStatus = (typeof WU_STATUS)[keyof typeof WU_STATUS];
30
+ /**
31
+ * Display-only fallback labels for non-canonical status values.
32
+ */
33
+ export declare const WU_STATUS_FALLBACK: {
34
+ readonly UNKNOWN: "unknown";
35
+ };
36
+ export type WUStatusDisplay = WUStatus | (typeof WU_STATUS_FALLBACK)[keyof typeof WU_STATUS_FALLBACK];
37
+ /**
38
+ * Type guard for canonical WU statuses.
39
+ */
40
+ export declare function isWUStatus(value: unknown): value is WUStatus;
41
+ /**
42
+ * Resolve arbitrary status values to canonical WU statuses.
43
+ */
44
+ export declare function resolveWUStatus(value: unknown, fallback?: WUStatus): WUStatus;
45
+ /**
46
+ * Resolve status values for logs/UI where unknown is an allowed display state.
47
+ */
48
+ export declare function getWUStatusDisplay(value: unknown): WUStatusDisplay;
49
+ /**
50
+ * WU-1540: Protected WU statuses for cleanup and signal protection.
51
+ *
52
+ * WUs in these statuses should NOT have their signals, memory, or state
53
+ * cleaned up. Both in_progress and blocked WUs need protection because
54
+ * blocked WUs will resume work after the blocker is resolved.
55
+ *
56
+ * Used by: wu-done-auto-cleanup.ts, signal-cleanup.ts, state-cleanup.ts
57
+ */
58
+ export declare const PROTECTED_WU_STATUSES: readonly string[];
59
+ /**
60
+ * WU-1540: Progressable WU statuses for initiative advancement.
61
+ *
62
+ * Only WUs in these statuses indicate active work that should trigger
63
+ * initiative status progression (e.g., draft -> in_progress).
64
+ * Blocked WUs are explicitly excluded because a blocked WU does not
65
+ * represent forward progress on the initiative.
66
+ *
67
+ * Used by: initiative-validation.ts (shouldProgressInitiativeStatus)
68
+ */
69
+ export declare const PROGRESSABLE_WU_STATUSES: readonly string[];
70
+ /**
71
+ * WU status groups for state management (WU-1742)
72
+ *
73
+ * Used by state-bootstrap.ts to categorize YAML statuses.
74
+ */
75
+ export declare const WU_STATUS_GROUPS: {
76
+ /** Statuses representing unclaimed work (not tracked in state store) */
77
+ UNCLAIMED: string[];
78
+ /** Terminal statuses (all map to 'done' in state store) */
79
+ TERMINAL: string[];
80
+ };
81
+ /**
82
+ * WU claimed workspace modes
83
+ *
84
+ * Centralized workspace mode strings for wu:claim operations.
85
+ */
86
+ export declare const CLAIMED_MODES: {
87
+ /** Standard worktree mode (isolated worktree per WU) */
88
+ WORKTREE: string;
89
+ /** Branch-only mode (no worktree, direct branch work) */
90
+ BRANCH_ONLY: string;
91
+ /** Worktree PR mode (worktree with manual PR workflow) */
92
+ WORKTREE_PR: string;
93
+ /** Branch PR mode (no worktree, PR-based completion for cloud agents) */
94
+ BRANCH_PR: string;
95
+ };
96
+ /**
97
+ * Agent incident severity levels
98
+ *
99
+ * Centralized severity strings for agent incident reporting.
100
+ */
101
+ export declare const INCIDENT_SEVERITY: {
102
+ BLOCKER: string;
103
+ MAJOR: string;
104
+ MINOR: string;
105
+ INFO: string;
106
+ };
107
+ /**
108
+ * Canonical internal mapping for supported WU types.
109
+ *
110
+ * Exported consumers should import WU_TYPES/WU_TYPE_VALUES rather than relying
111
+ * on this internal literal object directly. Keeping this object literal-local
112
+ * lets us preserve the exact union for type derivation while widening the
113
+ * public WU_TYPES surface for backwards-compatible downstream consumers.
114
+ */
115
+ declare const WU_TYPE_VALUE_BY_KEY: {
116
+ readonly FEATURE: "feature";
117
+ readonly BUG: "bug";
118
+ readonly DOCUMENTATION: "documentation";
119
+ readonly PROCESS: "process";
120
+ readonly TOOLING: "tooling";
121
+ readonly CHORE: "chore";
122
+ readonly REFACTOR: "refactor";
123
+ };
124
+ export type WUType = (typeof WU_TYPE_VALUE_BY_KEY)[keyof typeof WU_TYPE_VALUE_BY_KEY];
125
+ export type WUTypeKey = keyof typeof WU_TYPE_VALUE_BY_KEY;
126
+ /**
127
+ * WU type values
128
+ *
129
+ * WU-1281: Centralized from hardcoded strings in validators.
130
+ * Exposed as a widened record so existing consumers can treat individual
131
+ * entries as generic WUType values instead of overly narrow literals.
132
+ */
133
+ export declare const WU_TYPES: Record<WUTypeKey, WUType>;
134
+ /**
135
+ * Canonical WU type values in their intended display/help order.
136
+ *
137
+ * Consumers should iterate this array instead of retyping WU types.
138
+ */
139
+ export declare const WU_TYPE_VALUES: readonly ["feature", "bug", "documentation", "process", "tooling", "chore", "refactor"];
140
+ /**
141
+ * Canonical WU type metadata for help surfaces and validation consumers.
142
+ */
143
+ export declare const WU_TYPE_DEFINITIONS: readonly [{
144
+ readonly key: "FEATURE";
145
+ readonly value: WUType;
146
+ readonly description: "Net-new user or system capability";
147
+ }, {
148
+ readonly key: "BUG";
149
+ readonly value: WUType;
150
+ readonly description: "Broken or regressed behavior fix";
151
+ }, {
152
+ readonly key: "DOCUMENTATION";
153
+ readonly value: WUType;
154
+ readonly description: "Documentation-only change";
155
+ }, {
156
+ readonly key: "PROCESS";
157
+ readonly value: WUType;
158
+ readonly description: "Workflow or operating-process maintenance";
159
+ }, {
160
+ readonly key: "TOOLING";
161
+ readonly value: WUType;
162
+ readonly description: "Tooling, automation, or developer-experience change";
163
+ }, {
164
+ readonly key: "CHORE";
165
+ readonly value: WUType;
166
+ readonly description: "Repository upkeep or housekeeping change";
167
+ }, {
168
+ readonly key: "REFACTOR";
169
+ readonly value: WUType;
170
+ readonly description: "Behavior-preserving code restructure";
171
+ }];
172
+ export type WUTypeDefinition = (typeof WU_TYPE_DEFINITIONS)[number];
173
+ /**
174
+ * WU exposure values (WU-1998)
175
+ *
176
+ * Defines how a WU exposes its functionality to users.
177
+ * Used to ensure backend features have corresponding UI coverage.
178
+ *
179
+ * @see {@link packages/@lumenflow/cli/src/lib/wu-schema.ts} - Schema validation
180
+ * @see {@link packages/linters/wu-schema-linter.ts} - Linter validation
181
+ */
182
+ export declare const WU_EXPOSURE: {
183
+ /** User-facing UI changes (pages, components, widgets) */
184
+ readonly UI: "ui";
185
+ /** API endpoints that are called by UI or external clients */
186
+ readonly API: "api";
187
+ /** Backend-only changes (no user visibility) */
188
+ readonly BACKEND_ONLY: "backend-only";
189
+ /** Documentation changes only */
190
+ readonly DOCUMENTATION: "documentation";
191
+ };
192
+ /**
193
+ * Array of valid exposure values for schema validation
194
+ * Note: Defined as tuple for Zod enum compatibility
195
+ */
196
+ export declare const WU_EXPOSURE_VALUES: readonly ["ui", "api", "backend-only", "documentation"];
197
+ /**
198
+ * Test type keys
199
+ *
200
+ * WU-1281: Centralized from hardcoded keys in validators
201
+ */
202
+ export declare const TEST_TYPES: {
203
+ UNIT: string;
204
+ E2E: string;
205
+ MANUAL: string;
206
+ INTEGRATION: string;
207
+ };
208
+ export {};
209
+ //# sourceMappingURL=wu-statuses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wu-statuses.d.ts","sourceRoot":"","sources":["../../../src/constants/wu-statuses.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;CAmBrB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,kBAAkB;;CAErB,CAAC;AAEX,MAAM,MAAM,eAAe,GACvB,QAAQ,GACR,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAIjE;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAE5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,GAAE,QAA0B,GAAG,QAAQ,CAE9F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAElE;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAGzC,CAAC;AAEX;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,EAAqC,CAAC;AAE5F;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;IAC3B,wEAAwE;;IAGxE,2DAA2D;;CAU5D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa;IACxB,wDAAwD;;IAGxD,yDAAyD;;IAGzD,0DAA0D;;IAG1D,yEAAyE;;CAE1E,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;;CAK7B,CAAC;AAEF;;;;;;;GAOG;AACH,QAAA,MAAM,oBAAoB;;;;;;;;CAQhB,CAAC;AAEX,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,OAAO,oBAAoB,CAAC,CAAC;AACtF,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,oBAAoB,CAAC;AAE1D;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAE9C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,yFAQW,CAAC;AAEvC;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwC7B,CAAC;AAEJ,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW;IACtB,0DAA0D;;IAG1D,8DAA8D;;IAG9D,gDAAgD;;IAGhD,iCAAiC;;CAEzB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,kBAAkB,yDAA0D,CAAC;AAE1F;;;;GAIG;AACH,eAAO,MAAM,UAAU;;;;;CAKtB,CAAC"}
@@ -0,0 +1,245 @@
1
+ // Copyright (c) 2026 Hellmai Ltd
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ /**
4
+ * WU Status Constants
5
+ *
6
+ * WU-1549: Extracted from wu-constants.ts for domain-specific modularity.
7
+ * Contains WU status values, groups, exposure types, claimed modes, and incident severity.
8
+ *
9
+ * @module wu-statuses
10
+ */
11
+ /**
12
+ * WU status values
13
+ *
14
+ * Centralized status strings to avoid magic strings in wu-* scripts.
15
+ * Includes both canonical statuses and legacy variants found in YAML files.
16
+ */
17
+ export const WU_STATUS = {
18
+ // Unclaimed statuses (not yet entered state machine)
19
+ // WU-1374: Legacy backlog status value
20
+ TODO: 'todo',
21
+ READY: 'ready', // Canonical unclaimed status
22
+ BACKLOG: 'backlog', // Legacy variant of ready
23
+ // Active statuses (in state machine)
24
+ IN_PROGRESS: 'in_progress',
25
+ BLOCKED: 'blocked',
26
+ // Terminal statuses (work finished, no further transitions)
27
+ DONE: 'done', // Canonical terminal status
28
+ COMPLETED: 'completed', // Legacy variant of done
29
+ CANCELLED: 'cancelled',
30
+ ABANDONED: 'abandoned',
31
+ DEFERRED: 'deferred',
32
+ CLOSED: 'closed',
33
+ SUPERSEDED: 'superseded',
34
+ };
35
+ /**
36
+ * Display-only fallback labels for non-canonical status values.
37
+ */
38
+ export const WU_STATUS_FALLBACK = {
39
+ UNKNOWN: 'unknown',
40
+ };
41
+ const WU_STATUS_SET = new Set(Object.values(WU_STATUS));
42
+ /**
43
+ * Type guard for canonical WU statuses.
44
+ */
45
+ export function isWUStatus(value) {
46
+ return typeof value === 'string' && WU_STATUS_SET.has(value);
47
+ }
48
+ /**
49
+ * Resolve arbitrary status values to canonical WU statuses.
50
+ */
51
+ export function resolveWUStatus(value, fallback = WU_STATUS.READY) {
52
+ return isWUStatus(value) ? value : fallback;
53
+ }
54
+ /**
55
+ * Resolve status values for logs/UI where unknown is an allowed display state.
56
+ */
57
+ export function getWUStatusDisplay(value) {
58
+ return isWUStatus(value) ? value : WU_STATUS_FALLBACK.UNKNOWN;
59
+ }
60
+ /**
61
+ * WU-1540: Protected WU statuses for cleanup and signal protection.
62
+ *
63
+ * WUs in these statuses should NOT have their signals, memory, or state
64
+ * cleaned up. Both in_progress and blocked WUs need protection because
65
+ * blocked WUs will resume work after the blocker is resolved.
66
+ *
67
+ * Used by: wu-done-auto-cleanup.ts, signal-cleanup.ts, state-cleanup.ts
68
+ */
69
+ export const PROTECTED_WU_STATUSES = [
70
+ WU_STATUS.IN_PROGRESS,
71
+ WU_STATUS.BLOCKED,
72
+ ];
73
+ /**
74
+ * WU-1540: Progressable WU statuses for initiative advancement.
75
+ *
76
+ * Only WUs in these statuses indicate active work that should trigger
77
+ * initiative status progression (e.g., draft -> in_progress).
78
+ * Blocked WUs are explicitly excluded because a blocked WU does not
79
+ * represent forward progress on the initiative.
80
+ *
81
+ * Used by: initiative-validation.ts (shouldProgressInitiativeStatus)
82
+ */
83
+ export const PROGRESSABLE_WU_STATUSES = [WU_STATUS.IN_PROGRESS];
84
+ /**
85
+ * WU status groups for state management (WU-1742)
86
+ *
87
+ * Used by state-bootstrap.ts to categorize YAML statuses.
88
+ */
89
+ export const WU_STATUS_GROUPS = {
90
+ /** Statuses representing unclaimed work (not tracked in state store) */
91
+ UNCLAIMED: [WU_STATUS.READY, WU_STATUS.TODO, WU_STATUS.BACKLOG],
92
+ /** Terminal statuses (all map to 'done' in state store) */
93
+ TERMINAL: [
94
+ WU_STATUS.DONE,
95
+ WU_STATUS.COMPLETED,
96
+ WU_STATUS.CANCELLED,
97
+ WU_STATUS.ABANDONED,
98
+ WU_STATUS.DEFERRED,
99
+ WU_STATUS.CLOSED,
100
+ WU_STATUS.SUPERSEDED,
101
+ ],
102
+ };
103
+ /**
104
+ * WU claimed workspace modes
105
+ *
106
+ * Centralized workspace mode strings for wu:claim operations.
107
+ */
108
+ export const CLAIMED_MODES = {
109
+ /** Standard worktree mode (isolated worktree per WU) */
110
+ WORKTREE: 'worktree',
111
+ /** Branch-only mode (no worktree, direct branch work) */
112
+ BRANCH_ONLY: 'branch-only',
113
+ /** Worktree PR mode (worktree with manual PR workflow) */
114
+ WORKTREE_PR: 'worktree-pr',
115
+ /** Branch PR mode (no worktree, PR-based completion for cloud agents) */
116
+ BRANCH_PR: 'branch-pr',
117
+ };
118
+ /**
119
+ * Agent incident severity levels
120
+ *
121
+ * Centralized severity strings for agent incident reporting.
122
+ */
123
+ export const INCIDENT_SEVERITY = {
124
+ BLOCKER: 'blocker',
125
+ MAJOR: 'major',
126
+ MINOR: 'minor',
127
+ INFO: 'info',
128
+ };
129
+ /**
130
+ * Canonical internal mapping for supported WU types.
131
+ *
132
+ * Exported consumers should import WU_TYPES/WU_TYPE_VALUES rather than relying
133
+ * on this internal literal object directly. Keeping this object literal-local
134
+ * lets us preserve the exact union for type derivation while widening the
135
+ * public WU_TYPES surface for backwards-compatible downstream consumers.
136
+ */
137
+ const WU_TYPE_VALUE_BY_KEY = {
138
+ FEATURE: 'feature',
139
+ BUG: 'bug',
140
+ DOCUMENTATION: 'documentation',
141
+ PROCESS: 'process',
142
+ TOOLING: 'tooling',
143
+ CHORE: 'chore',
144
+ REFACTOR: 'refactor',
145
+ };
146
+ /**
147
+ * WU type values
148
+ *
149
+ * WU-1281: Centralized from hardcoded strings in validators.
150
+ * Exposed as a widened record so existing consumers can treat individual
151
+ * entries as generic WUType values instead of overly narrow literals.
152
+ */
153
+ export const WU_TYPES = {
154
+ ...WU_TYPE_VALUE_BY_KEY,
155
+ };
156
+ /**
157
+ * Canonical WU type values in their intended display/help order.
158
+ *
159
+ * Consumers should iterate this array instead of retyping WU types.
160
+ */
161
+ export const WU_TYPE_VALUES = [
162
+ WU_TYPE_VALUE_BY_KEY.FEATURE,
163
+ WU_TYPE_VALUE_BY_KEY.BUG,
164
+ WU_TYPE_VALUE_BY_KEY.DOCUMENTATION,
165
+ WU_TYPE_VALUE_BY_KEY.PROCESS,
166
+ WU_TYPE_VALUE_BY_KEY.TOOLING,
167
+ WU_TYPE_VALUE_BY_KEY.CHORE,
168
+ WU_TYPE_VALUE_BY_KEY.REFACTOR,
169
+ ];
170
+ /**
171
+ * Canonical WU type metadata for help surfaces and validation consumers.
172
+ */
173
+ export const WU_TYPE_DEFINITIONS = [
174
+ {
175
+ key: 'FEATURE',
176
+ value: WU_TYPES.FEATURE,
177
+ description: 'Net-new user or system capability',
178
+ },
179
+ {
180
+ key: 'BUG',
181
+ value: WU_TYPES.BUG,
182
+ description: 'Broken or regressed behavior fix',
183
+ },
184
+ {
185
+ key: 'DOCUMENTATION',
186
+ value: WU_TYPES.DOCUMENTATION,
187
+ description: 'Documentation-only change',
188
+ },
189
+ {
190
+ key: 'PROCESS',
191
+ value: WU_TYPES.PROCESS,
192
+ description: 'Workflow or operating-process maintenance',
193
+ },
194
+ {
195
+ key: 'TOOLING',
196
+ value: WU_TYPES.TOOLING,
197
+ description: 'Tooling, automation, or developer-experience change',
198
+ },
199
+ {
200
+ key: 'CHORE',
201
+ value: WU_TYPES.CHORE,
202
+ description: 'Repository upkeep or housekeeping change',
203
+ },
204
+ {
205
+ key: 'REFACTOR',
206
+ value: WU_TYPES.REFACTOR,
207
+ description: 'Behavior-preserving code restructure',
208
+ },
209
+ ];
210
+ /**
211
+ * WU exposure values (WU-1998)
212
+ *
213
+ * Defines how a WU exposes its functionality to users.
214
+ * Used to ensure backend features have corresponding UI coverage.
215
+ *
216
+ * @see {@link packages/@lumenflow/cli/src/lib/wu-schema.ts} - Schema validation
217
+ * @see {@link packages/linters/wu-schema-linter.ts} - Linter validation
218
+ */
219
+ export const WU_EXPOSURE = {
220
+ /** User-facing UI changes (pages, components, widgets) */
221
+ UI: 'ui',
222
+ /** API endpoints that are called by UI or external clients */
223
+ API: 'api',
224
+ /** Backend-only changes (no user visibility) */
225
+ BACKEND_ONLY: 'backend-only',
226
+ /** Documentation changes only */
227
+ DOCUMENTATION: 'documentation',
228
+ };
229
+ /**
230
+ * Array of valid exposure values for schema validation
231
+ * Note: Defined as tuple for Zod enum compatibility
232
+ */
233
+ export const WU_EXPOSURE_VALUES = ['ui', 'api', 'backend-only', 'documentation'];
234
+ /**
235
+ * Test type keys
236
+ *
237
+ * WU-1281: Centralized from hardcoded keys in validators
238
+ */
239
+ export const TEST_TYPES = {
240
+ UNIT: 'unit',
241
+ E2E: 'e2e',
242
+ MANUAL: 'manual',
243
+ INTEGRATION: 'integration',
244
+ };
245
+ //# sourceMappingURL=wu-statuses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wu-statuses.js","sourceRoot":"","sources":["../../../src/constants/wu-statuses.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC;AAEzC;;;;;;;GAOG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,qDAAqD;IACrD,uCAAuC;IACvC,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO,EAAE,6BAA6B;IAC7C,OAAO,EAAE,SAAS,EAAE,0BAA0B;IAE9C,qCAAqC;IACrC,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,SAAS;IAElB,4DAA4D;IAC5D,IAAI,EAAE,MAAM,EAAE,4BAA4B;IAC1C,SAAS,EAAE,WAAW,EAAE,yBAAyB;IACjD,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,YAAY;CACzB,CAAC;AAIF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,OAAO,EAAE,SAAS;CACV,CAAC;AAMX,MAAM,aAAa,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AAEhE;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc,EAAE,WAAqB,SAAS,CAAC,KAAK;IAClF,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC;AAChE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAsB;IACtD,SAAS,CAAC,WAAW;IACrB,SAAS,CAAC,OAAO;CACT,CAAC;AAEX;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAsB,CAAC,SAAS,CAAC,WAAW,CAAU,CAAC;AAE5F;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,wEAAwE;IACxE,SAAS,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC;IAE/D,2DAA2D;IAC3D,QAAQ,EAAE;QACR,SAAS,CAAC,IAAI;QACd,SAAS,CAAC,SAAS;QACnB,SAAS,CAAC,SAAS;QACnB,SAAS,CAAC,SAAS;QACnB,SAAS,CAAC,QAAQ;QAClB,SAAS,CAAC,MAAM;QAChB,SAAS,CAAC,UAAU;KACrB;CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,wDAAwD;IACxD,QAAQ,EAAE,UAAU;IAEpB,yDAAyD;IACzD,WAAW,EAAE,aAAa;IAE1B,0DAA0D;IAC1D,WAAW,EAAE,aAAa;IAE1B,yEAAyE;IACzE,SAAS,EAAE,WAAW;CACvB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;CACb,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,oBAAoB,GAAG;IAC3B,OAAO,EAAE,SAAS;IAClB,GAAG,EAAE,KAAK;IACV,aAAa,EAAE,eAAe;IAC9B,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,UAAU;CACZ,CAAC;AAKX;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,QAAQ,GAA8B;IACjD,GAAG,oBAAoB;CACxB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,oBAAoB,CAAC,OAAO;IAC5B,oBAAoB,CAAC,GAAG;IACxB,oBAAoB,CAAC,aAAa;IAClC,oBAAoB,CAAC,OAAO;IAC5B,oBAAoB,CAAC,OAAO;IAC5B,oBAAoB,CAAC,KAAK;IAC1B,oBAAoB,CAAC,QAAQ;CACO,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC;QACE,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,QAAQ,CAAC,OAAO;QACvB,WAAW,EAAE,mCAAmC;KACjD;IACD;QACE,GAAG,EAAE,KAAK;QACV,KAAK,EAAE,QAAQ,CAAC,GAAG;QACnB,WAAW,EAAE,kCAAkC;KAChD;IACD;QACE,GAAG,EAAE,eAAe;QACpB,KAAK,EAAE,QAAQ,CAAC,aAAa;QAC7B,WAAW,EAAE,2BAA2B;KACzC;IACD;QACE,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,QAAQ,CAAC,OAAO;QACvB,WAAW,EAAE,2CAA2C;KACzD;IACD;QACE,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,QAAQ,CAAC,OAAO;QACvB,WAAW,EAAE,qDAAqD;KACnE;IACD;QACE,GAAG,EAAE,OAAO;QACZ,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,WAAW,EAAE,0CAA0C;KACxD;IACD;QACE,GAAG,EAAE,UAAU;QACf,KAAK,EAAE,QAAQ,CAAC,QAAQ;QACxB,WAAW,EAAE,sCAAsC;KACpD;CAKA,CAAC;AAIJ;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,0DAA0D;IAC1D,EAAE,EAAE,IAAI;IAER,8DAA8D;IAC9D,GAAG,EAAE,KAAK;IAEV,gDAAgD;IAChD,YAAY,EAAE,cAAc;IAE5B,iCAAiC;IACjC,aAAa,EAAE,eAAe;CACtB,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,eAAe,CAAU,CAAC;AAE1F;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,aAAa;CAC3B,CAAC"}
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * WU type/test helper predicates (WU-1444)
4
+ *
5
+ * Purpose: avoid duplicating policy via string literals across CLI/MCP.
6
+ */
7
+ import { type WUType } from './wu-statuses.js';
8
+ export declare function isWUType(type: unknown): type is WUType;
9
+ export declare function isDocumentationType(type: unknown): boolean;
10
+ export declare function isProcessType(type: unknown): boolean;
11
+ export declare function isDocsOrProcessType(type: unknown): boolean;
12
+ export type TestsLike = {
13
+ manual?: unknown;
14
+ unit?: unknown;
15
+ e2e?: unknown;
16
+ integration?: unknown;
17
+ } | undefined;
18
+ /**
19
+ * True when UnsafeAny supported test array has at least one item.
20
+ * Supports the canonical tests object shape from WU YAML.
21
+ */
22
+ export declare function hasAnyTests(tests: TestsLike): boolean;
23
+ /**
24
+ * True when tests.manual has at least one item.
25
+ * Used for early lifecycle enforcement where manual verification is mandatory.
26
+ */
27
+ export declare function hasManualTests(tests: TestsLike): boolean;
28
+ //# sourceMappingURL=wu-type-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wu-type-helpers.d.ts","sourceRoot":"","sources":["../../../src/constants/wu-type-helpers.ts"],"names":[],"mappings":";AAGA;;;;GAIG;AAEH,OAAO,EAAwC,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAQrF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,MAAM,CAEtD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAE1D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAEpD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAE1D;AAED,MAAM,MAAM,SAAS,GACjB;IACE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,GACD,SAAS,CAAC;AAEd;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAUrD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAIxD"}
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env node
2
+ // Copyright (c) 2026 Hellmai Ltd
3
+ // SPDX-License-Identifier: AGPL-3.0-only
4
+ /**
5
+ * WU type/test helper predicates (WU-1444)
6
+ *
7
+ * Purpose: avoid duplicating policy via string literals across CLI/MCP.
8
+ */
9
+ import { TEST_TYPES, WU_TYPES, WU_TYPE_VALUES } from './wu-statuses.js';
10
+ function isNonEmptyArray(value) {
11
+ return Array.isArray(value) && value.length > 0;
12
+ }
13
+ const WU_TYPE_SET = new Set(WU_TYPE_VALUES);
14
+ export function isWUType(type) {
15
+ return typeof type === 'string' && WU_TYPE_SET.has(type);
16
+ }
17
+ export function isDocumentationType(type) {
18
+ return typeof type === 'string' && type === WU_TYPES.DOCUMENTATION;
19
+ }
20
+ export function isProcessType(type) {
21
+ return typeof type === 'string' && type === WU_TYPES.PROCESS;
22
+ }
23
+ export function isDocsOrProcessType(type) {
24
+ return isDocumentationType(type) || isProcessType(type);
25
+ }
26
+ /**
27
+ * True when UnsafeAny supported test array has at least one item.
28
+ * Supports the canonical tests object shape from WU YAML.
29
+ */
30
+ export function hasAnyTests(tests) {
31
+ if (!tests || typeof tests !== 'object')
32
+ return false;
33
+ const t = tests;
34
+ return (isNonEmptyArray(t[TEST_TYPES.MANUAL]) ||
35
+ isNonEmptyArray(t[TEST_TYPES.UNIT]) ||
36
+ isNonEmptyArray(t[TEST_TYPES.E2E]) ||
37
+ isNonEmptyArray(t[TEST_TYPES.INTEGRATION]));
38
+ }
39
+ /**
40
+ * True when tests.manual has at least one item.
41
+ * Used for early lifecycle enforcement where manual verification is mandatory.
42
+ */
43
+ export function hasManualTests(tests) {
44
+ if (!tests || typeof tests !== 'object')
45
+ return false;
46
+ const t = tests;
47
+ return isNonEmptyArray(t[TEST_TYPES.MANUAL]);
48
+ }
49
+ //# sourceMappingURL=wu-type-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wu-type-helpers.js","sourceRoot":"","sources":["../../../src/constants/wu-type-helpers.ts"],"names":[],"mappings":";AACA,iCAAiC;AACjC,yCAAyC;AACzC;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAe,MAAM,kBAAkB,CAAC;AAErF,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,cAAc,CAAC,CAAC;AAEpD,MAAM,UAAU,QAAQ,CAAC,IAAa;IACpC,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAa;IAC/C,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,CAAC,aAAa,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAa;IACzC,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,CAAC,OAAO,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAa;IAC/C,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;AAC1D,CAAC;AAWD;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAgB;IAC1C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAEtD,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,OAAO,CACL,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACrC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACnC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAClC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAC3C,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAgB;IAC7C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,OAAO,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/C,CAAC"}