@lumenflow/packs-software-delivery 4.24.0 → 5.0.1

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 +210 -230
  286. package/package.json +88 -3
@@ -0,0 +1,182 @@
1
+ // Copyright (c) 2026 Hellmai Ltd
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ /**
4
+ * Pack-local LumenFlow configuration schema (WU-2694).
5
+ *
6
+ * Mirrors the shape of `@lumenflow/core/lumenflow-config-schema` using
7
+ * hand-maintained TypeScript interfaces plus default-value constants. The pack
8
+ * side deliberately avoids a full Zod composition to keep the invariant
9
+ * "pack src/ MUST stay core-free": the authoritative Zod composition in core
10
+ * transitively depends on `delivery-review-contract`, per-section schemas, and
11
+ * other core-only modules that have not yet been migrated (INIT-058 Layer 4).
12
+ *
13
+ * Consumers that need a typed view of `workspace.yaml`'s `software_delivery`
14
+ * block can import from this file without crossing the package boundary.
15
+ * Drift against core's composition is enforced by
16
+ * `integration-tests/tests/config-parity.test.ts` — any field added to core's
17
+ * `LumenFlowConfig` must either be added here or explicitly waived in the
18
+ * drift-guard.
19
+ *
20
+ * @module config/schemas/lumenflow-config-schema
21
+ */
22
+ import { DURATION_MS } from '@lumenflow/kernel/primitives/duration-utils';
23
+ import { LUMENFLOW_CLIENT_IDS } from '../../constants/client-ids.js';
24
+ import { DOCS_LAYOUT_PRESETS } from '../../constants/docs-layout-presets.js';
25
+ import { DEFAULT_MAX_ESLINT_WARNINGS, DEFAULT_MIN_COVERAGE, } from '../../constants/gate-constants.js';
26
+ const DEFAULT_LAYOUT = DOCS_LAYOUT_PRESETS.simple;
27
+ export const DIRECTORIES_DEFAULTS = {
28
+ appsWeb: '',
29
+ worktrees: 'worktrees/',
30
+ ai: 'ai/',
31
+ claude: '.claude/',
32
+ docs: 'docs/',
33
+ packages: 'packages/',
34
+ tools: 'tools/',
35
+ memoryBank: 'memory-bank/',
36
+ wuDir: `${DEFAULT_LAYOUT.tasks}/wu`,
37
+ initiativesDir: `${DEFAULT_LAYOUT.tasks}/initiatives`,
38
+ backlogPath: `${DEFAULT_LAYOUT.tasks}/backlog.md`,
39
+ statusPath: `${DEFAULT_LAYOUT.tasks}/status.md`,
40
+ skillsDir: '.claude/skills',
41
+ agentsDir: '.claude/agents',
42
+ adrDir: DEFAULT_LAYOUT.adrDir,
43
+ plansDir: `${DEFAULT_LAYOUT.operations}/plans`,
44
+ templatesDir: '.lumenflow/templates',
45
+ onboardingDir: DEFAULT_LAYOUT.onboarding,
46
+ completeGuidePath: DEFAULT_LAYOUT.completeGuidePath,
47
+ quickRefPath: DEFAULT_LAYOUT.quickRefPath,
48
+ startingPromptPath: DEFAULT_LAYOUT.startingPromptPath,
49
+ sizingGuidePath: DEFAULT_LAYOUT.sizingGuidePath,
50
+ governancePath: DEFAULT_LAYOUT.governancePath,
51
+ safeGitPath: 'scripts/safe-git',
52
+ };
53
+ export const STATE_PATHS_DEFAULTS = {
54
+ base: '.lumenflow',
55
+ stateDir: '.lumenflow/state',
56
+ archiveDir: '.lumenflow/archive',
57
+ stampsDir: '.lumenflow/stamps',
58
+ mergeLock: '.lumenflow/merge.lock',
59
+ telemetry: '.lumenflow/telemetry',
60
+ flowLog: '.lumenflow/flow.log',
61
+ sessions: '.lumenflow/sessions',
62
+ incidents: '.lumenflow/incidents',
63
+ commandsLog: '.lumenflow/commands.log',
64
+ eventArchival: {
65
+ archiveAfter: DURATION_MS.NINETY_DAYS,
66
+ keepArchives: true,
67
+ },
68
+ };
69
+ export const GIT_DEFAULTS = {
70
+ mainBranch: 'main',
71
+ defaultRemote: 'origin',
72
+ laneBranchPrefix: 'lane/',
73
+ tempBranchPrefix: 'tmp/',
74
+ realGitPath: '/usr/bin/git',
75
+ maxBranchDrift: 20,
76
+ branchDriftWarning: 15,
77
+ branchDriftInfo: 10,
78
+ requireRemote: true,
79
+ agentBranchPatterns: [],
80
+ disableAgentPatternRegistry: false,
81
+ push_retry: {
82
+ enabled: true,
83
+ retries: 3,
84
+ min_delay_ms: 100,
85
+ max_delay_ms: 1000,
86
+ jitter: true,
87
+ },
88
+ };
89
+ export const WU_DEFAULTS = {
90
+ idPattern: '^WU-\\d+$',
91
+ minDescriptionLength: 50,
92
+ maxCommitSubject: 100,
93
+ defaultPriority: 'P2',
94
+ defaultStatus: 'ready',
95
+ defaultType: 'feature',
96
+ brief: {
97
+ policyMode: 'auto',
98
+ freshnessMinutes: 1440,
99
+ },
100
+ };
101
+ export const WU_ID_DEFAULTS = {
102
+ width: 4,
103
+ strict: true,
104
+ prefix: 'WU-',
105
+ };
106
+ export const INITIATIVE_ID_DEFAULTS = {
107
+ width: 3,
108
+ strict: true,
109
+ prefix: 'INIT-',
110
+ };
111
+ export const GATES_DEFAULTS = {
112
+ maxEslintWarnings: DEFAULT_MAX_ESLINT_WARNINGS,
113
+ enableCoverage: true,
114
+ minCoverage: DEFAULT_MIN_COVERAGE,
115
+ };
116
+ export const UI_DEFAULTS = {
117
+ errorBoxWidth: 70,
118
+ statusPreviewLines: 5,
119
+ readinessBoxWidth: 50,
120
+ };
121
+ export const YAML_DEFAULTS = {
122
+ lineWidth: 100,
123
+ };
124
+ export const EXPERIMENTAL_DEFAULTS = {
125
+ context_validation: true,
126
+ validation_mode: 'warn',
127
+ show_next_steps: true,
128
+ recovery_command: true,
129
+ };
130
+ export const CLEANUP_DEFAULTS = {
131
+ trigger: 'on_done',
132
+ commit_message: 'chore: lumenflow state cleanup [skip ci]',
133
+ };
134
+ export const TELEMETRY_DEFAULTS = {
135
+ methodology: { enabled: false },
136
+ };
137
+ export const ESCALATION_DEFAULTS = {
138
+ email: 'escalation@example.com',
139
+ };
140
+ export const MEMORY_DEFAULTS = {
141
+ directory: 'memory-bank/',
142
+ sessionTtl: DURATION_MS.SEVEN_DAYS,
143
+ checkpointTtl: DURATION_MS.THIRTY_DAYS,
144
+ enableAutoCleanup: true,
145
+ delegation_context_max_size: 4096,
146
+ };
147
+ export const AGENTS_DEFAULTS = {
148
+ defaultClient: LUMENFLOW_CLIENT_IDS.CLAUDE_CODE,
149
+ };
150
+ export const CLOUD_DEFAULTS = {
151
+ auto_detect: false,
152
+ env_signals: [],
153
+ };
154
+ /**
155
+ * Top-level defaults for `LumenflowConfig`. Matches the `.parse({})` output of
156
+ * `core`'s `LumenFlowConfigSchema` for every field exposed here. The drift-guard
157
+ * in `integration-tests/tests/config-parity.test.ts` walks these keys and
158
+ * asserts field-for-field parity with core's output.
159
+ */
160
+ export const LUMENFLOW_CONFIG_DEFAULTS = {
161
+ version: '1.0.0',
162
+ directories: DIRECTORIES_DEFAULTS,
163
+ state: STATE_PATHS_DEFAULTS,
164
+ git: GIT_DEFAULTS,
165
+ wu: WU_DEFAULTS,
166
+ wuId: WU_ID_DEFAULTS,
167
+ initiativeId: INITIATIVE_ID_DEFAULTS,
168
+ gates: GATES_DEFAULTS,
169
+ memory: MEMORY_DEFAULTS,
170
+ ui: UI_DEFAULTS,
171
+ yaml: YAML_DEFAULTS,
172
+ agents: AGENTS_DEFAULTS,
173
+ experimental: EXPERIMENTAL_DEFAULTS,
174
+ cleanup: CLEANUP_DEFAULTS,
175
+ telemetry: TELEMETRY_DEFAULTS,
176
+ cloud: CLOUD_DEFAULTS,
177
+ escalation: ESCALATION_DEFAULTS,
178
+ package_manager: 'pnpm',
179
+ test_runner: 'vitest',
180
+ build_command: 'pnpm build',
181
+ };
182
+ //# sourceMappingURL=lumenflow-config-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lumenflow-config-schema.js","sourceRoot":"","sources":["../../../../src/config/schemas/lumenflow-config-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import { type DirectoriesConfig, type EventArchivalConfig, type LumenflowConfig, type StatePathsConfig } from './schemas/lumenflow-config-schema-types.js';
2
+ export type SoftwareDeliveryConfig = Record<string, unknown>;
3
+ /**
4
+ * Read `workspace.yaml` relative to the given `cwd`'s project root and return
5
+ * the `software_delivery` section (or an empty object if absent/empty).
6
+ *
7
+ * @throws If the project root cannot be located or the YAML is malformed.
8
+ */
9
+ export declare function readSoftwareDeliveryConfig(cwd: string): SoftwareDeliveryConfig;
10
+ /**
11
+ * Re-export pack-local directory/state-path type aliases. These mirror
12
+ * `@lumenflow/core/schemas/directories-config`; drift is enforced by the
13
+ * integration-tests parity tests.
14
+ */
15
+ export type WorkspaceDirectories = DirectoriesConfig;
16
+ export type WorkspaceStatePaths = StatePathsConfig;
17
+ export type WorkspaceEventArchivalConfig = EventArchivalConfig;
18
+ /**
19
+ * Return the typed directory map for the workspace rooted at `cwd`.
20
+ *
21
+ * User-provided values in `software_delivery.directories` are merged over the
22
+ * built-in defaults. Unknown keys in the user's YAML are ignored by the return
23
+ * type but pass through the spread — the authoritative schema validation still
24
+ * lives in core's `getConfig()` pathway.
25
+ */
26
+ export declare function getDirectories(cwd: string): WorkspaceDirectories;
27
+ /**
28
+ * Return the typed state-paths map for the workspace rooted at `cwd`.
29
+ *
30
+ * User-provided values in `software_delivery.state` are merged over the
31
+ * built-in defaults. `eventArchival` is merged as a nested object so a partial
32
+ * override (e.g. only `archiveAfter`) preserves the remaining defaults.
33
+ */
34
+ export declare function getStatePaths(cwd: string): WorkspaceStatePaths;
35
+ /**
36
+ * Return the fully-typed pack-local `LumenflowConfig` for the workspace rooted
37
+ * at `cwd`.
38
+ *
39
+ * Mirrors the shape produced by `@lumenflow/core`'s
40
+ * `getConfig({ projectRoot: cwd }).parse({})` for every field exposed on
41
+ * `LumenflowConfig`. Drift from core is enforced by
42
+ * `integration-tests/tests/config-parity.test.ts`.
43
+ *
44
+ * Behaviour parity with core:
45
+ * - Reads `workspace.yaml` relative to `cwd`'s project root via the kernel
46
+ * `findProjectRoot` primitive.
47
+ * - Returns defaults when `workspace.yaml` is absent or lacks a
48
+ * `software_delivery` block (graceful fallback, matches core's
49
+ * non-`strictWorkspace` mode).
50
+ * - User-provided values are spread over defaults at the section level, with
51
+ * nested merges for sections that have nested objects (state.eventArchival,
52
+ * git.push_retry, wu.brief, telemetry.methodology).
53
+ */
54
+ export declare function getConfig(cwd: string): LumenflowConfig;
55
+ export type { AgentsConfig, CleanupConfig, CloudConfig, DirectoriesConfig, EscalationConfig, EventArchivalConfig, ExperimentalConfig, GatesConfig, GitConfig, IdFormatConfig, LumenflowConfig, MemoryConfig, PackageManager, PushRetryConfig, StatePathsConfig, TelemetryConfig, TestRunner, UiConfig, WuConfig, YamlConfig, } from './schemas/lumenflow-config-schema-types.js';
56
+ //# sourceMappingURL=workspace-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-reader.d.ts","sourceRoot":"","sources":["../../../src/config/workspace-reader.ts"],"names":[],"mappings":"AAmBA,OAAO,EAqBL,KAAK,iBAAiB,EAEtB,KAAK,mBAAmB,EAKxB,KAAK,eAAe,EAIpB,KAAK,gBAAgB,EAMtB,MAAM,4CAA4C,CAAC;AAEpD,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE7D;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAS9E;AAED;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AACrD,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AACnD,MAAM,MAAM,4BAA4B,GAAG,mBAAmB,CAAC;AAW/D;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,CAGhE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAe9D;AA4DD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAiDtD;AA6BD,YAAY,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,SAAS,EACT,cAAc,EACd,eAAe,EACf,YAAY,EACZ,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,UAAU,GACX,MAAM,4CAA4C,CAAC"}
@@ -0,0 +1,209 @@
1
+ // Copyright (c) 2026 Hellmai Ltd
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ /**
4
+ * Pack-side workspace.yaml reader.
5
+ *
6
+ * Locates the project root (via kernel primitive) and returns the
7
+ * `software_delivery` section of `workspace.yaml`. Loose typing on purpose —
8
+ * the authoritative schema lives in `@lumenflow/core`; this helper exists to
9
+ * keep the pack core-free for Option 1b prep work (INIT-058).
10
+ */
11
+ import { readFileSync } from 'node:fs';
12
+ import { join } from 'node:path';
13
+ import { findProjectRoot } from '@lumenflow/kernel/primitives/project-root';
14
+ import { WORKSPACE_CONFIG_FILE_NAME } from '@lumenflow/kernel/primitives/workspace-constants';
15
+ import { parse as parseYaml } from 'yaml';
16
+ import { AGENTS_DEFAULTS, CLEANUP_DEFAULTS, CLOUD_DEFAULTS, DIRECTORIES_DEFAULTS, ESCALATION_DEFAULTS, EXPERIMENTAL_DEFAULTS, GATES_DEFAULTS, GIT_DEFAULTS, INITIATIVE_ID_DEFAULTS, LUMENFLOW_CONFIG_DEFAULTS, MEMORY_DEFAULTS, STATE_PATHS_DEFAULTS, TELEMETRY_DEFAULTS, UI_DEFAULTS, WU_DEFAULTS, WU_ID_DEFAULTS, YAML_DEFAULTS, } from './schemas/lumenflow-config-schema-types.js';
17
+ /**
18
+ * Read `workspace.yaml` relative to the given `cwd`'s project root and return
19
+ * the `software_delivery` section (or an empty object if absent/empty).
20
+ *
21
+ * @throws If the project root cannot be located or the YAML is malformed.
22
+ */
23
+ export function readSoftwareDeliveryConfig(cwd) {
24
+ const root = findProjectRoot(cwd);
25
+ const raw = readFileSync(join(root, WORKSPACE_CONFIG_FILE_NAME), 'utf8');
26
+ const doc = parseYaml(raw);
27
+ const section = doc?.['software_delivery'];
28
+ if (section && typeof section === 'object' && !Array.isArray(section)) {
29
+ return section;
30
+ }
31
+ return {};
32
+ }
33
+ function readObjectRecord(cwd, key) {
34
+ const section = readSoftwareDeliveryConfig(cwd);
35
+ const value = section[key];
36
+ if (value && typeof value === 'object' && !Array.isArray(value)) {
37
+ return value;
38
+ }
39
+ return {};
40
+ }
41
+ /**
42
+ * Return the typed directory map for the workspace rooted at `cwd`.
43
+ *
44
+ * User-provided values in `software_delivery.directories` are merged over the
45
+ * built-in defaults. Unknown keys in the user's YAML are ignored by the return
46
+ * type but pass through the spread — the authoritative schema validation still
47
+ * lives in core's `getConfig()` pathway.
48
+ */
49
+ export function getDirectories(cwd) {
50
+ const overrides = readObjectRecord(cwd, 'directories');
51
+ return { ...DIRECTORIES_DEFAULTS, ...overrides };
52
+ }
53
+ /**
54
+ * Return the typed state-paths map for the workspace rooted at `cwd`.
55
+ *
56
+ * User-provided values in `software_delivery.state` are merged over the
57
+ * built-in defaults. `eventArchival` is merged as a nested object so a partial
58
+ * override (e.g. only `archiveAfter`) preserves the remaining defaults.
59
+ */
60
+ export function getStatePaths(cwd) {
61
+ const overrides = readObjectRecord(cwd, 'state');
62
+ const { eventArchival: overrideArchival, ...flatOverrides } = overrides;
63
+ const eventArchivalOverrides = overrideArchival && typeof overrideArchival === 'object' && !Array.isArray(overrideArchival)
64
+ ? overrideArchival
65
+ : {};
66
+ return {
67
+ ...STATE_PATHS_DEFAULTS,
68
+ ...flatOverrides,
69
+ eventArchival: {
70
+ ...STATE_PATHS_DEFAULTS.eventArchival,
71
+ ...eventArchivalOverrides,
72
+ },
73
+ };
74
+ }
75
+ function mergeGit(overrides) {
76
+ if (!overrides)
77
+ return { ...GIT_DEFAULTS, push_retry: { ...GIT_DEFAULTS.push_retry } };
78
+ const { push_retry: overridePushRetry, ...flatOverrides } = overrides;
79
+ const pushRetryOverrides = overridePushRetry && typeof overridePushRetry === 'object' && !Array.isArray(overridePushRetry)
80
+ ? overridePushRetry
81
+ : {};
82
+ return {
83
+ ...GIT_DEFAULTS,
84
+ ...flatOverrides,
85
+ push_retry: {
86
+ ...GIT_DEFAULTS.push_retry,
87
+ ...pushRetryOverrides,
88
+ },
89
+ };
90
+ }
91
+ function mergeWu(overrides) {
92
+ if (!overrides)
93
+ return { ...WU_DEFAULTS, brief: { ...WU_DEFAULTS.brief } };
94
+ const { brief: overrideBrief, ...flatOverrides } = overrides;
95
+ const briefOverrides = overrideBrief && typeof overrideBrief === 'object' && !Array.isArray(overrideBrief)
96
+ ? overrideBrief
97
+ : {};
98
+ return {
99
+ ...WU_DEFAULTS,
100
+ ...flatOverrides,
101
+ brief: {
102
+ ...WU_DEFAULTS.brief,
103
+ ...briefOverrides,
104
+ },
105
+ };
106
+ }
107
+ function mergeSimple(defaults, overrides) {
108
+ if (overrides && typeof overrides === 'object' && !Array.isArray(overrides)) {
109
+ return { ...defaults, ...overrides };
110
+ }
111
+ return { ...defaults };
112
+ }
113
+ function mergeTelemetry(overrides) {
114
+ if (!overrides) {
115
+ return { methodology: { ...TELEMETRY_DEFAULTS.methodology } };
116
+ }
117
+ const methodology = overrides.methodology && typeof overrides.methodology === 'object'
118
+ ? { ...TELEMETRY_DEFAULTS.methodology, ...overrides.methodology }
119
+ : { ...TELEMETRY_DEFAULTS.methodology };
120
+ return { methodology };
121
+ }
122
+ function pickEnum(value, allowed, fallback) {
123
+ return typeof value === 'string' && allowed.includes(value)
124
+ ? value
125
+ : fallback;
126
+ }
127
+ /**
128
+ * Return the fully-typed pack-local `LumenflowConfig` for the workspace rooted
129
+ * at `cwd`.
130
+ *
131
+ * Mirrors the shape produced by `@lumenflow/core`'s
132
+ * `getConfig({ projectRoot: cwd }).parse({})` for every field exposed on
133
+ * `LumenflowConfig`. Drift from core is enforced by
134
+ * `integration-tests/tests/config-parity.test.ts`.
135
+ *
136
+ * Behaviour parity with core:
137
+ * - Reads `workspace.yaml` relative to `cwd`'s project root via the kernel
138
+ * `findProjectRoot` primitive.
139
+ * - Returns defaults when `workspace.yaml` is absent or lacks a
140
+ * `software_delivery` block (graceful fallback, matches core's
141
+ * non-`strictWorkspace` mode).
142
+ * - User-provided values are spread over defaults at the section level, with
143
+ * nested merges for sections that have nested objects (state.eventArchival,
144
+ * git.push_retry, wu.brief, telemetry.methodology).
145
+ */
146
+ export function getConfig(cwd) {
147
+ let section;
148
+ try {
149
+ section = readSoftwareDeliveryConfig(cwd);
150
+ }
151
+ catch {
152
+ // Graceful fallback — matches core's non-strictWorkspace behaviour when
153
+ // workspace.yaml is absent or unreadable.
154
+ return cloneDefaults();
155
+ }
156
+ return {
157
+ version: typeof section['version'] === 'string' ? section['version'] : '1.0.0',
158
+ directories: getDirectories(cwd),
159
+ state: getStatePaths(cwd),
160
+ git: mergeGit(section['git']),
161
+ wu: mergeWu(section['wu']),
162
+ wuId: mergeSimple(WU_ID_DEFAULTS, section['wuId']),
163
+ initiativeId: mergeSimple(INITIATIVE_ID_DEFAULTS, section['initiativeId']),
164
+ gates: mergeSimple(GATES_DEFAULTS, section['gates']),
165
+ memory: mergeSimple(MEMORY_DEFAULTS, section['memory']),
166
+ ui: mergeSimple(UI_DEFAULTS, section['ui']),
167
+ yaml: mergeSimple(YAML_DEFAULTS, section['yaml']),
168
+ agents: mergeSimple(AGENTS_DEFAULTS, section['agents']),
169
+ experimental: mergeSimple(EXPERIMENTAL_DEFAULTS, section['experimental']),
170
+ cleanup: mergeSimple(CLEANUP_DEFAULTS, section['cleanup']),
171
+ telemetry: mergeTelemetry(section['telemetry']),
172
+ methodology: section['methodology'] && typeof section['methodology'] === 'object'
173
+ ? section['methodology']
174
+ : undefined,
175
+ cloud: mergeSimple(CLOUD_DEFAULTS, section['cloud']),
176
+ lanes: section['lanes'] && typeof section['lanes'] === 'object'
177
+ ? section['lanes']
178
+ : undefined,
179
+ escalation: mergeSimple(ESCALATION_DEFAULTS, section['escalation']),
180
+ package_manager: pickEnum(section['package_manager'], ['pnpm', 'npm', 'yarn', 'bun'], 'pnpm'),
181
+ test_runner: pickEnum(section['test_runner'], ['vitest', 'jest', 'mocha'], 'vitest'),
182
+ build_command: typeof section['build_command'] === 'string' ? section['build_command'] : 'pnpm build',
183
+ };
184
+ }
185
+ function cloneDefaults() {
186
+ return {
187
+ ...LUMENFLOW_CONFIG_DEFAULTS,
188
+ directories: { ...DIRECTORIES_DEFAULTS },
189
+ state: {
190
+ ...STATE_PATHS_DEFAULTS,
191
+ eventArchival: { ...STATE_PATHS_DEFAULTS.eventArchival },
192
+ },
193
+ git: { ...GIT_DEFAULTS, push_retry: { ...GIT_DEFAULTS.push_retry } },
194
+ wu: { ...WU_DEFAULTS, brief: { ...WU_DEFAULTS.brief } },
195
+ wuId: { ...WU_ID_DEFAULTS },
196
+ initiativeId: { ...INITIATIVE_ID_DEFAULTS },
197
+ gates: { ...GATES_DEFAULTS },
198
+ memory: { ...MEMORY_DEFAULTS },
199
+ ui: { ...UI_DEFAULTS },
200
+ yaml: { ...YAML_DEFAULTS },
201
+ agents: { ...AGENTS_DEFAULTS },
202
+ experimental: { ...EXPERIMENTAL_DEFAULTS },
203
+ cleanup: { ...CLEANUP_DEFAULTS },
204
+ telemetry: { methodology: { ...TELEMETRY_DEFAULTS.methodology } },
205
+ cloud: { ...CLOUD_DEFAULTS, env_signals: [...CLOUD_DEFAULTS.env_signals] },
206
+ escalation: { ...ESCALATION_DEFAULTS },
207
+ };
208
+ }
209
+ //# sourceMappingURL=workspace-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-reader.js","sourceRoot":"","sources":["../../../src/config/workspace-reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Backlog Parsing Patterns
3
+ *
4
+ * Centralizes patterns for parsing status.md and backlog.md files.
5
+ * Used by lane-checker.ts and related backlog utilities.
6
+ */
7
+ /** Markdown section header patterns for In Progress section */
8
+ export declare const IN_PROGRESS_HEADERS: string[];
9
+ /**
10
+ * Pattern for extracting WU ID from backlog links.
11
+ * Matches: [WU-123 — Title text](path/to/file.yaml)
12
+ * Captures: WU ID (e.g., "WU-123")
13
+ */
14
+ export declare const WU_LINK_PATTERN: RegExp;
15
+ /**
16
+ * Check if a line matches an In Progress section header.
17
+ * @param {string} line - Line to check (will be trimmed and lowercased)
18
+ * @returns {boolean} True if line is an In Progress header
19
+ */
20
+ export declare function isInProgressHeader(line: string): boolean;
21
+ //# sourceMappingURL=backlog-patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backlog-patterns.d.ts","sourceRoot":"","sources":["../../../src/constants/backlog-patterns.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,UAA0C,CAAC;AAE3E;;;;GAIG;AACH,eAAO,MAAM,eAAe,QAA6C,CAAC;AAE1E;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,WAK9C"}
@@ -0,0 +1,26 @@
1
+ // Copyright (c) 2026 Hellmai Ltd
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ /**
4
+ * Backlog Parsing Patterns
5
+ *
6
+ * Centralizes patterns for parsing status.md and backlog.md files.
7
+ * Used by lane-checker.ts and related backlog utilities.
8
+ */
9
+ /** Markdown section header patterns for In Progress section */
10
+ export const IN_PROGRESS_HEADERS = ['## in progress', '## 🔧 in progress'];
11
+ /**
12
+ * Pattern for extracting WU ID from backlog links.
13
+ * Matches: [WU-123 — Title text](path/to/file.yaml)
14
+ * Captures: WU ID (e.g., "WU-123")
15
+ */
16
+ export const WU_LINK_PATTERN = /\[([A-Z]+-\d+)\s*—\s*[^\]]+\]\([^)]+\)/gi;
17
+ /**
18
+ * Check if a line matches an In Progress section header.
19
+ * @param {string} line - Line to check (will be trimmed and lowercased)
20
+ * @returns {boolean} True if line is an In Progress header
21
+ */
22
+ export function isInProgressHeader(line) {
23
+ const normalized = line.trim().toLowerCase();
24
+ return IN_PROGRESS_HEADERS.some((header) => normalized === header || normalized.startsWith(header));
25
+ }
26
+ //# sourceMappingURL=backlog-patterns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backlog-patterns.js","sourceRoot":"","sources":["../../../src/constants/backlog-patterns.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC;AAEzC;;;;;GAKG;AAEH,+DAA+D;AAC/D,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,0CAA0C,CAAC;AAE1E;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7C,OAAO,mBAAmB,CAAC,IAAI,CAC7B,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,KAAK,MAAM,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CACnE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Canonical client IDs for client-specific integrations and config keys.
3
+ *
4
+ * Kept in a standalone module so config schema can depend on these
5
+ * constants without importing context/hook modules.
6
+ */
7
+ export declare const LUMENFLOW_CLIENT_IDS: {
8
+ readonly CLAUDE_CODE: "claude-code";
9
+ readonly CODEX_CLI: "codex-cli";
10
+ readonly CURSOR: "cursor";
11
+ readonly GEMINI_CLI: "gemini-cli";
12
+ readonly WINDSURF: "windsurf";
13
+ };
14
+ /** Type for supported client IDs with integration support */
15
+ export type LumenflowClientId = (typeof LUMENFLOW_CLIENT_IDS)[keyof typeof LUMENFLOW_CLIENT_IDS];
16
+ //# sourceMappingURL=client-ids.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-ids.d.ts","sourceRoot":"","sources":["../../../src/constants/client-ids.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB;;;;;;CAMvB,CAAC;AAEX,6DAA6D;AAC7D,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,OAAO,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ // Copyright (c) 2026 Hellmai Ltd
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ /**
4
+ * Canonical client IDs for client-specific integrations and config keys.
5
+ *
6
+ * Kept in a standalone module so config schema can depend on these
7
+ * constants without importing context/hook modules.
8
+ */
9
+ export const LUMENFLOW_CLIENT_IDS = {
10
+ CLAUDE_CODE: 'claude-code',
11
+ CODEX_CLI: 'codex-cli',
12
+ CURSOR: 'cursor',
13
+ GEMINI_CLI: 'gemini-cli',
14
+ WINDSURF: 'windsurf',
15
+ };
16
+ //# sourceMappingURL=client-ids.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-ids.js","sourceRoot":"","sources":["../../../src/constants/client-ids.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC;AAEzC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,WAAW,EAAE,aAAa;IAC1B,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,YAAY;IACxB,QAAQ,EAAE,UAAU;CACZ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from '@lumenflow/kernel/primitives/workspace-constants';
2
+ //# sourceMappingURL=config-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-contract.d.ts","sourceRoot":"","sources":["../../../src/constants/config-contract.ts"],"names":[],"mappings":"AAMA,cAAc,kDAAkD,CAAC"}
@@ -0,0 +1,7 @@
1
+ // Copyright (c) 2026 Hellmai Ltd
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ // WU-2681 (INIT-058 L2e): Shim — real module lives in @lumenflow/kernel/primitives/workspace-constants.
4
+ // Re-export preserves the `@lumenflow/packs-software-delivery/constants/config-contract` subpath
5
+ // for existing consumers (including core shims) until Layer 7 removes the shim.
6
+ export * from '@lumenflow/kernel/primitives/workspace-constants';
7
+ //# sourceMappingURL=config-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-contract.js","sourceRoot":"","sources":["../../../src/constants/config-contract.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC;AAEzC,wGAAwG;AACxG,iGAAiG;AACjG,gFAAgF;AAChF,cAAc,kDAAkD,CAAC"}
@@ -0,0 +1,31 @@
1
+ export declare const DOCS_LAYOUT_PRESETS: {
2
+ readonly simple: {
3
+ readonly operations: string;
4
+ readonly tasks: string;
5
+ readonly adrDir: string;
6
+ readonly onboarding: string;
7
+ readonly quickRefLink: `${string}/quick-ref-commands.md`;
8
+ readonly completeGuidePath: `${string}/lumenflow-complete.md`;
9
+ readonly quickRefPath: `${string}/quick-ref-commands.md`;
10
+ readonly startingPromptPath: `${string}/starting-prompt.md`;
11
+ readonly sizingGuidePath: `${string}/wu-sizing-guide.md`;
12
+ readonly governancePath: `${string}/governance/project-governance.md`;
13
+ };
14
+ readonly arc42: {
15
+ readonly operations: string;
16
+ readonly tasks: string;
17
+ readonly adrDir: string;
18
+ readonly onboarding: string;
19
+ readonly quickRefLink: `${string}/quick-ref-commands.md`;
20
+ readonly completeGuidePath: `${string}/lumenflow-complete.md`;
21
+ readonly quickRefPath: `${string}/quick-ref-commands.md`;
22
+ readonly startingPromptPath: `${string}/starting-prompt.md`;
23
+ readonly sizingGuidePath: `${string}/wu-sizing-guide.md`;
24
+ readonly governancePath: `${string}/governance/project-governance.md`;
25
+ };
26
+ };
27
+ export type DocsLayoutType = keyof typeof DOCS_LAYOUT_PRESETS;
28
+ export type DocsLayoutPreset = (typeof DOCS_LAYOUT_PRESETS)[DocsLayoutType];
29
+ export declare const DEFAULT_DOCS_LAYOUT: DocsLayoutType;
30
+ export declare function getDocsLayoutPreset(layout: DocsLayoutType): DocsLayoutPreset;
31
+ //# sourceMappingURL=docs-layout-presets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-layout-presets.d.ts","sourceRoot":"","sources":["../../../src/constants/docs-layout-presets.ts"],"names":[],"mappings":"AAqCA,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;CAGtB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,mBAAmB,CAAC;AAC9D,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,cAAc,CAAC,CAAC;AAE5E,eAAO,MAAM,mBAAmB,EAAE,cAAyB,CAAC;AAE5D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB,CAE5E"}