@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 State Ports (WU-2013)
3
+ *
4
+ * Focused interfaces for the decomposed WU state store services.
5
+ * Each interface defines a single responsibility boundary.
6
+ *
7
+ * Error Contract (WU-2128):
8
+ * Port methods THROW on failure (boundary contracts). Specifically:
9
+ * - State transition methods (claim, complete, block, etc.) throw if the
10
+ * WU is in an invalid state for the requested transition.
11
+ * - Lock methods (acquireLock) throw if the lock cannot be acquired.
12
+ * - Query methods (getWUState, getByStatus) return undefined/empty set for
13
+ * "not found" conditions -- absence of data is not an error.
14
+ *
15
+ * @module ports/wu-state
16
+ */
17
+ import type { WUEvent } from '../state/wu-state-schema.js';
18
+ /**
19
+ * WU state entry in the in-memory store
20
+ */
21
+ export interface WUStateEntry {
22
+ status: string;
23
+ lane: string;
24
+ title: string;
25
+ completedAt?: string;
26
+ lastCheckpoint?: string;
27
+ lastCheckpointNote?: string;
28
+ }
29
+ /**
30
+ * Checkpoint options for recording WU progress
31
+ */
32
+ export interface CheckpointOptions {
33
+ sessionId?: string;
34
+ progress?: string;
35
+ nextSteps?: string;
36
+ }
37
+ /**
38
+ * Lock file data structure
39
+ */
40
+ export interface LockData {
41
+ pid: number;
42
+ timestamp: number;
43
+ hostname: string;
44
+ }
45
+ /**
46
+ * Repair result from corruption recovery
47
+ */
48
+ export interface RepairResult {
49
+ success: boolean;
50
+ linesKept: number;
51
+ linesRemoved: number;
52
+ backupPath: string | null;
53
+ warnings: string[];
54
+ }
55
+ /**
56
+ * Event log interface for loading, replaying, and appending WU events.
57
+ *
58
+ * Responsible for:
59
+ * - Loading events from JSONL storage
60
+ * - Replaying events to rebuild in-memory state
61
+ * - Appending new validated events
62
+ */
63
+ export interface IWuEventLog {
64
+ /**
65
+ * Load and replay events from storage into in-memory state.
66
+ * Resets all state before replaying.
67
+ */
68
+ load(): Promise<void>;
69
+ /**
70
+ * Append a validated event to persistent storage and apply to in-memory state.
71
+ */
72
+ appendAndApply(event: WUEvent): Promise<void>;
73
+ /**
74
+ * Apply a validated event to in-memory state without persisting.
75
+ */
76
+ applyEvent(event: WUEvent): void;
77
+ }
78
+ /**
79
+ * Lock manager interface for file-level locking with stale detection.
80
+ *
81
+ * Responsible for:
82
+ * - Acquiring file locks with retry logic
83
+ * - Releasing file locks
84
+ * - Detecting stale locks (expired or dead process)
85
+ */
86
+ export interface IWuLockManager {
87
+ /**
88
+ * Acquire a file lock at the given path.
89
+ * Retries with stale lock detection.
90
+ *
91
+ * @throws Error if lock cannot be acquired after retries
92
+ */
93
+ acquireLock(lockPath: string): Promise<void>;
94
+ /**
95
+ * Release a file lock at the given path.
96
+ * Silently ignores errors if lock file doesn't exist.
97
+ */
98
+ releaseLock(lockPath: string): void;
99
+ /**
100
+ * Check if a lock is stale (expired timeout or dead process).
101
+ */
102
+ isLockStale(lockData: LockData): boolean;
103
+ }
104
+ /**
105
+ * State query interface for O(1) lookups into WU state.
106
+ *
107
+ * Responsible for:
108
+ * - Querying WU state by ID
109
+ * - Querying WU IDs by status (O(1))
110
+ * - Querying WU IDs by lane (O(1))
111
+ * - Querying child WU IDs by parent (O(1))
112
+ */
113
+ export interface IWuStateQuery {
114
+ /**
115
+ * Get current in-memory state for a WU.
116
+ */
117
+ getWUState(wuId: string): WUStateEntry | undefined;
118
+ /**
119
+ * Get WU IDs by status (O(1) lookup).
120
+ */
121
+ getByStatus(status: string): Set<string>;
122
+ /**
123
+ * Get WU IDs by lane (O(1) lookup).
124
+ */
125
+ getByLane(lane: string): Set<string>;
126
+ /**
127
+ * Get child WU IDs delegated from a parent WU (O(1) lookup).
128
+ */
129
+ getChildWUs(parentWuId: string): Set<string>;
130
+ /**
131
+ * WU-2552: Resolve a (possibly stale) WU id to its current canonical
132
+ * id after any observed wu_renamed events. Returns the input unchanged
133
+ * if no rename chain applies.
134
+ */
135
+ resolveRenamedWuId(wuId: string): string;
136
+ }
137
+ /**
138
+ * WU State Store interface for dependency injection in command handlers.
139
+ *
140
+ * Combines event log and state query capabilities into a single injectable
141
+ * interface. Command handlers should depend on this interface rather than
142
+ * importing and instantiating WUStateStore directly.
143
+ *
144
+ * WU-2020: DIP compliance - high-level modules depend on abstraction,
145
+ * not on the concrete WUStateStore class.
146
+ *
147
+ * @example
148
+ * ```typescript
149
+ * // Command handler accepts interface, not concrete class
150
+ * async function completeWU(store: IWuStateStore, wuId: string) {
151
+ * await store.load();
152
+ * await store.complete(wuId);
153
+ * }
154
+ * ```
155
+ */
156
+ export interface IWuStateStore extends IWuEventLog, IWuStateQuery {
157
+ /**
158
+ * Claim a WU, transitioning it to in_progress status.
159
+ * @throws Error if WU is already in_progress
160
+ */
161
+ claim(wuId: string, lane: string, title: string): Promise<void>;
162
+ /**
163
+ * Complete a WU, transitioning it to done status.
164
+ * @throws Error if WU is not in_progress
165
+ */
166
+ complete(wuId: string): Promise<void>;
167
+ /**
168
+ * Block a WU with a reason.
169
+ * @throws Error if WU is not in_progress
170
+ */
171
+ block(wuId: string, reason: string): Promise<void>;
172
+ /**
173
+ * Unblock a WU, transitioning it back to in_progress.
174
+ * @throws Error if WU is not blocked
175
+ */
176
+ unblock(wuId: string): Promise<void>;
177
+ /**
178
+ * Record a checkpoint for a WU without changing its status.
179
+ */
180
+ checkpoint(wuId: string, note: string, options?: CheckpointOptions): Promise<void>;
181
+ /**
182
+ * Record a parent-child delegation relationship.
183
+ */
184
+ delegate(childWuId: string, parentWuId: string, delegationId: string): Promise<void>;
185
+ /**
186
+ * Release a WU, transitioning it from in_progress to ready.
187
+ * @throws Error if WU is not in_progress
188
+ */
189
+ release(wuId: string, reason: string): Promise<void>;
190
+ /**
191
+ * WU-2552: Append a wu_renamed event mapping `from` to `to`. Historical
192
+ * events are not rewritten; the in-memory rename map is updated so
193
+ * subsequent events and queries resolve `from` -> `to`.
194
+ */
195
+ renameWu(from: string, to: string, reason?: string): Promise<void>;
196
+ /**
197
+ * Create a complete event without persisting it.
198
+ * Useful for transactional flows.
199
+ * @throws Error if WU is not in_progress
200
+ */
201
+ createCompleteEvent(wuId: string, timestamp?: string): WUEvent;
202
+ /**
203
+ * Create a release event without persisting it.
204
+ * Useful for transactional flows.
205
+ * @throws Error if WU is not in_progress
206
+ */
207
+ createReleaseEvent(wuId: string, reason: string, timestamp?: string): WUEvent;
208
+ }
209
+ //# sourceMappingURL=wu-state.ports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wu-state.ports.d.ts","sourceRoot":"","sources":["../../../src/ports/wu-state.ports.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CAClC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7C;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpC;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;CAC1C;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;IAEnD;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IAEzC;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IAErC;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IAE7C;;;;OAIG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1C;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,aAAc,SAAQ,WAAW,EAAE,aAAa;IAC/D;;;OAGG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC;;;OAGG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnF;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErF;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnE;;;;OAIG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAE/D;;;;OAIG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC/E"}
@@ -0,0 +1,4 @@
1
+ // Copyright (c) 2026 Hellmai Ltd
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ export {};
4
+ //# sourceMappingURL=wu-state.ports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wu-state.ports.js","sourceRoot":"","sources":["../../../src/ports/wu-state.ports.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/primitives/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC"}
@@ -0,0 +1,5 @@
1
+ // Copyright (c) 2026 Hellmai Ltd
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ // Barrel for pack-local primitives. Populated by Layers 2-4 of INIT-058.
4
+ export {};
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/primitives/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC;AAEzC,yEAAyE;AACzE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './work-classifier.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/index.ts"],"names":[],"mappings":"AAKA,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,6 @@
1
+ // Copyright (c) 2026 Hellmai Ltd
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ // Barrel for pack-runtime-helpers. Populated by Layer 4 of INIT-058.
4
+ // WU-2698: added work-classifier (L4-prep narrow — pure leaf from @lumenflow/core).
5
+ export * from './work-classifier.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC;AAEzC,qEAAqE;AACrE,oFAAoF;AACpF,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Work domain enum-style constants
3
+ */
4
+ export declare const WORK_DOMAINS: {
5
+ readonly UI: "ui";
6
+ readonly BACKEND: "backend";
7
+ readonly DOCS: "docs";
8
+ readonly INFRA: "infra";
9
+ readonly MIXED: "mixed";
10
+ };
11
+ export type WorkDomain = (typeof WORK_DOMAINS)[keyof typeof WORK_DOMAINS];
12
+ /**
13
+ * Classifier-produced methodology hints consumed by prompt guidance builders.
14
+ */
15
+ export declare const TEST_METHODOLOGY_HINTS: {
16
+ readonly SMOKE_TEST: "smoke-test";
17
+ readonly STRUCTURED_CONTENT: "structured-content";
18
+ };
19
+ export type TestMethodologyHint = (typeof TEST_METHODOLOGY_HINTS)[keyof typeof TEST_METHODOLOGY_HINTS];
20
+ /**
21
+ * Signal weights for each source type.
22
+ * Confidence = max(matched_signal_weights), not sum.
23
+ */
24
+ export declare const SIGNAL_WEIGHTS: {
25
+ readonly CODE_PATHS: 1;
26
+ readonly LANE: 0.6;
27
+ readonly TYPE: 0.3;
28
+ readonly DESCRIPTION: 0.2;
29
+ };
30
+ /**
31
+ * Built-in default UI code path patterns (minimatch glob patterns).
32
+ * CSS/SCSS/LESS, components/pages directories, app page/layout files,
33
+ * module CSS, styled components.
34
+ */
35
+ export declare const DEFAULT_UI_CODE_PATH_PATTERNS: readonly string[];
36
+ /**
37
+ * Built-in default UI lane hints.
38
+ * Matched against the lane parent (part before the colon).
39
+ */
40
+ export declare const DEFAULT_UI_LANE_HINTS: readonly string[];
41
+ /**
42
+ * A signal that contributed to the classification.
43
+ */
44
+ export interface WorkSignal {
45
+ /** Signal source: 'code_paths' | 'lane' | 'type' | 'description' */
46
+ source: string;
47
+ /** The domain this signal points to */
48
+ domain: WorkDomain;
49
+ /** The weight of this signal */
50
+ weight: number;
51
+ /** What matched (e.g., the pattern or keyword) */
52
+ match: string;
53
+ }
54
+ /**
55
+ * Result of classifyWork.
56
+ */
57
+ export interface WorkClassification {
58
+ /** Detected work domain */
59
+ domain: WorkDomain;
60
+ /** Confidence score (max signal weight, 0 if no match) */
61
+ confidence: number;
62
+ /** Individual signals that contributed */
63
+ signals: WorkSignal[];
64
+ /** Abstract capability tags (NOT client skill names) */
65
+ capabilities: string[];
66
+ /** Test methodology hint, e.g. smoke-test (UI) or structured-content (non-code content) */
67
+ testMethodologyHint?: TestMethodologyHint;
68
+ }
69
+ /**
70
+ * Optional configuration to extend defaults.
71
+ * Maps to methodology.work_classification in workspace.yaml.
72
+ */
73
+ export interface WorkClassificationConfig {
74
+ ui?: {
75
+ /** Additional code_path_patterns (extend defaults) */
76
+ code_path_patterns?: string[];
77
+ /** Additional lane_hints (extend defaults) */
78
+ lane_hints?: string[];
79
+ };
80
+ }
81
+ /**
82
+ * Classify work domain from multiple weighted signals.
83
+ *
84
+ * Signal weights:
85
+ * - code_paths patterns: 1.0
86
+ * - lane hints: 0.6
87
+ * - WU type: 0.3
88
+ * - description keywords: 0.2
89
+ *
90
+ * Confidence = max(matched signal weights for winning domain).
91
+ * Domain only assigned when confidence >= 0.3.
92
+ *
93
+ * @param doc - WU document (code_paths, lane, type, description)
94
+ * @param config - Optional config to extend default patterns
95
+ * @returns WorkClassification with domain, confidence, signals, capabilities, testMethodologyHint
96
+ */
97
+ export declare function classifyWork(doc: {
98
+ code_paths?: string[];
99
+ lane?: string;
100
+ type?: string;
101
+ description?: string;
102
+ }, config?: WorkClassificationConfig): WorkClassification;
103
+ //# sourceMappingURL=work-classifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work-classifier.d.ts","sourceRoot":"","sources":["../../../src/runtime/work-classifier.ts"],"names":[],"mappings":"AAqBA;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;CAMf,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAE1E;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;CAGzB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAC7B,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,OAAO,sBAAsB,CAAC,CAAC;AAEvE;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AA8BX;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,EAAE,SAAS,MAAM,EAezD,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAKjD,CAAC;AA0FH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,MAAM,EAAE,UAAU,CAAC;IACnB,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,2BAA2B;IAC3B,MAAM,EAAE,UAAU,CAAC;IACnB,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,wDAAwD;IACxD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,2FAA2F;IAC3F,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC3C;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,EAAE,CAAC,EAAE;QACH,sDAAsD;QACtD,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC9B,8CAA8C;QAC9C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;CACH;AA0GD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,EACD,MAAM,CAAC,EAAE,wBAAwB,GAChC,kBAAkB,CAwLpB"}