@lumenflow/cli 3.1.3 → 3.2.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 (267) hide show
  1. package/dist/agent-issues-query.js.map +1 -0
  2. package/dist/agent-log-issue.js.map +1 -0
  3. package/dist/agent-session-end.js.map +1 -0
  4. package/dist/agent-session.js.map +1 -0
  5. package/dist/backlog-prune.js.map +1 -0
  6. package/dist/cli-entry-point.js +139 -0
  7. package/dist/cli-entry-point.js.map +1 -0
  8. package/dist/commands/integrate.js.map +1 -0
  9. package/dist/commands.js.map +1 -0
  10. package/dist/config-get.js.map +1 -0
  11. package/dist/config-set.js.map +1 -0
  12. package/dist/constants.js +98 -0
  13. package/dist/constants.js.map +1 -0
  14. package/dist/delegation-list.js.map +1 -0
  15. package/dist/deps-add.js +259 -0
  16. package/dist/deps-add.js.map +1 -0
  17. package/dist/deps-remove.js +105 -0
  18. package/dist/deps-remove.js.map +1 -0
  19. package/dist/docs-sync.js.map +1 -0
  20. package/dist/doctor.js.map +1 -0
  21. package/dist/file-delete.js.map +1 -0
  22. package/dist/file-edit.js.map +1 -0
  23. package/dist/file-read.js.map +1 -0
  24. package/dist/file-write.js.map +1 -0
  25. package/dist/flow-bottlenecks.js.map +1 -0
  26. package/dist/flow-report.js.map +1 -0
  27. package/dist/formatters.js +151 -0
  28. package/dist/formatters.js.map +1 -0
  29. package/dist/gate-defaults.js +137 -0
  30. package/dist/gate-defaults.js.map +1 -0
  31. package/dist/gate-registry.js +73 -0
  32. package/dist/gate-registry.js.map +1 -0
  33. package/dist/gates-graceful-degradation.js +153 -0
  34. package/dist/gates-graceful-degradation.js.map +1 -0
  35. package/dist/gates-plan-resolvers.js +190 -0
  36. package/dist/gates-plan-resolvers.js.map +1 -0
  37. package/dist/gates-runners.js +545 -0
  38. package/dist/gates-runners.js.map +1 -0
  39. package/dist/gates-types.js +4 -0
  40. package/dist/gates-types.js.map +1 -0
  41. package/dist/gates-utils.js +333 -0
  42. package/dist/gates-utils.js.map +1 -0
  43. package/dist/gates.js.map +1 -0
  44. package/dist/git-branch.js.map +1 -0
  45. package/dist/git-diff.js.map +1 -0
  46. package/dist/git-log.js.map +1 -0
  47. package/dist/git-status.js.map +1 -0
  48. package/dist/guard-locked.js +172 -0
  49. package/dist/guard-locked.js.map +1 -0
  50. package/dist/guard-main-branch.js +217 -0
  51. package/dist/guard-main-branch.js.map +1 -0
  52. package/dist/guard-worktree-commit.js +163 -0
  53. package/dist/guard-worktree-commit.js.map +1 -0
  54. package/dist/hooks/auto-checkpoint-utils.js +54 -0
  55. package/dist/hooks/auto-checkpoint-utils.js.map +1 -0
  56. package/dist/hooks/enforcement-checks.js +399 -0
  57. package/dist/hooks/enforcement-checks.js.map +1 -0
  58. package/dist/hooks/enforcement-generator.js +139 -0
  59. package/dist/hooks/enforcement-generator.js.map +1 -0
  60. package/dist/hooks/enforcement-sync.js +380 -0
  61. package/dist/hooks/enforcement-sync.js.map +1 -0
  62. package/dist/hooks/generators/auto-checkpoint.js +125 -0
  63. package/dist/hooks/generators/auto-checkpoint.js.map +1 -0
  64. package/dist/hooks/generators/enforce-worktree.js +190 -0
  65. package/dist/hooks/generators/enforce-worktree.js.map +1 -0
  66. package/dist/hooks/generators/index.js +18 -0
  67. package/dist/hooks/generators/index.js.map +1 -0
  68. package/dist/hooks/generators/pre-compact-checkpoint.js +136 -0
  69. package/dist/hooks/generators/pre-compact-checkpoint.js.map +1 -0
  70. package/dist/hooks/generators/require-wu.js +117 -0
  71. package/dist/hooks/generators/require-wu.js.map +1 -0
  72. package/dist/hooks/generators/session-start-recovery.js +103 -0
  73. package/dist/hooks/generators/session-start-recovery.js.map +1 -0
  74. package/dist/hooks/generators/signal-utils.js +54 -0
  75. package/dist/hooks/generators/signal-utils.js.map +1 -0
  76. package/dist/hooks/generators/warn-incomplete.js +67 -0
  77. package/dist/hooks/generators/warn-incomplete.js.map +1 -0
  78. package/dist/hooks/index.js +10 -0
  79. package/dist/hooks/index.js.map +1 -0
  80. package/dist/index.js.map +1 -0
  81. package/dist/init-detection.js +232 -0
  82. package/dist/init-detection.js.map +1 -0
  83. package/dist/init-lane-validation.js +147 -0
  84. package/dist/init-lane-validation.js.map +1 -0
  85. package/dist/init-scaffolding.js +158 -0
  86. package/dist/init-scaffolding.js.map +1 -0
  87. package/dist/init-templates.js +1983 -0
  88. package/dist/init-templates.js.map +1 -0
  89. package/dist/init.js.map +1 -0
  90. package/dist/initiative-add-wu.js.map +1 -0
  91. package/dist/initiative-bulk-assign-wus.js.map +1 -0
  92. package/dist/initiative-create.js.map +1 -0
  93. package/dist/initiative-edit.js.map +1 -0
  94. package/dist/initiative-list.js.map +1 -0
  95. package/dist/initiative-plan.js.map +1 -0
  96. package/dist/initiative-remove-wu.js.map +1 -0
  97. package/dist/initiative-status.js.map +1 -0
  98. package/dist/lane-edit.js.map +1 -0
  99. package/dist/lane-health.js.map +1 -0
  100. package/dist/lane-lifecycle-process.js +381 -0
  101. package/dist/lane-lifecycle-process.js.map +1 -0
  102. package/dist/lane-lock.js.map +1 -0
  103. package/dist/lane-setup.js.map +1 -0
  104. package/dist/lane-status.js.map +1 -0
  105. package/dist/lane-suggest.js.map +1 -0
  106. package/dist/lane-validate.js.map +1 -0
  107. package/dist/lifecycle-regression-harness.js +181 -0
  108. package/dist/lifecycle-regression-harness.js.map +1 -0
  109. package/dist/lumenflow-upgrade.js +18 -10
  110. package/dist/lumenflow-upgrade.js.map +1 -0
  111. package/dist/mem-checkpoint.js.map +1 -0
  112. package/dist/mem-cleanup.js.map +1 -0
  113. package/dist/mem-context.js.map +1 -0
  114. package/dist/mem-create.js.map +1 -0
  115. package/dist/mem-delete.js.map +1 -0
  116. package/dist/mem-export.js.map +1 -0
  117. package/dist/mem-inbox.js.map +1 -0
  118. package/dist/mem-index.js +214 -0
  119. package/dist/mem-index.js.map +1 -0
  120. package/dist/mem-init.js.map +1 -0
  121. package/dist/mem-profile.js +210 -0
  122. package/dist/mem-profile.js.map +1 -0
  123. package/dist/mem-promote.js +257 -0
  124. package/dist/mem-promote.js.map +1 -0
  125. package/dist/mem-ready.js.map +1 -0
  126. package/dist/mem-recover.js.map +1 -0
  127. package/dist/mem-signal.js.map +1 -0
  128. package/dist/mem-start.js.map +1 -0
  129. package/dist/mem-summarize.js.map +1 -0
  130. package/dist/mem-triage.js.map +1 -0
  131. package/dist/merge-block.js +225 -0
  132. package/dist/merge-block.js.map +1 -0
  133. package/dist/metrics-cli.js.map +1 -0
  134. package/dist/metrics-snapshot.js.map +1 -0
  135. package/dist/object-guards.js +9 -0
  136. package/dist/object-guards.js.map +1 -0
  137. package/dist/onboard.js.map +1 -0
  138. package/dist/onboarding-smoke-test.js +432 -0
  139. package/dist/onboarding-smoke-test.js.map +1 -0
  140. package/dist/orchestrate-init-status.js.map +1 -0
  141. package/dist/orchestrate-initiative.js.map +1 -0
  142. package/dist/orchestrate-monitor.js.map +1 -0
  143. package/dist/pack-author.js.map +1 -0
  144. package/dist/pack-hash.js.map +1 -0
  145. package/dist/pack-install.js.map +1 -0
  146. package/dist/pack-publish.js.map +1 -0
  147. package/dist/pack-scaffold.js.map +1 -0
  148. package/dist/pack-search.js.map +1 -0
  149. package/dist/pack-validate.js.map +1 -0
  150. package/dist/plan-create.js.map +1 -0
  151. package/dist/plan-edit.js.map +1 -0
  152. package/dist/plan-link.js.map +1 -0
  153. package/dist/plan-promote.js.map +1 -0
  154. package/dist/public-manifest.js +931 -0
  155. package/dist/public-manifest.js.map +1 -0
  156. package/dist/release.js +664 -116
  157. package/dist/release.js.map +1 -0
  158. package/dist/rotate-progress.js +253 -0
  159. package/dist/rotate-progress.js.map +1 -0
  160. package/dist/session-coordinator.js +303 -0
  161. package/dist/session-coordinator.js.map +1 -0
  162. package/dist/shared-validators.js +81 -0
  163. package/dist/shared-validators.js.map +1 -0
  164. package/dist/signal-cleanup.js.map +1 -0
  165. package/dist/state-bootstrap.js.map +1 -0
  166. package/dist/state-cleanup.js.map +1 -0
  167. package/dist/state-doctor-fix.js +226 -0
  168. package/dist/state-doctor-fix.js.map +1 -0
  169. package/dist/state-doctor-stamps.js +23 -0
  170. package/dist/state-doctor-stamps.js.map +1 -0
  171. package/dist/state-doctor.js.map +1 -0
  172. package/dist/strict-progress.js +255 -0
  173. package/dist/strict-progress.js.map +1 -0
  174. package/dist/sync-templates.js.map +1 -0
  175. package/dist/task-claim.js.map +1 -0
  176. package/dist/trace-gen.js +401 -0
  177. package/dist/trace-gen.js.map +1 -0
  178. package/dist/validate-agent-skills.js +224 -0
  179. package/dist/validate-agent-skills.js.map +1 -0
  180. package/dist/validate-agent-sync.js +152 -0
  181. package/dist/validate-agent-sync.js.map +1 -0
  182. package/dist/validate-backlog-sync.js +77 -0
  183. package/dist/validate-backlog-sync.js.map +1 -0
  184. package/dist/validate-skills-spec.js +211 -0
  185. package/dist/validate-skills-spec.js.map +1 -0
  186. package/dist/validate.js.map +1 -0
  187. package/dist/validator-defaults.js +107 -0
  188. package/dist/validator-defaults.js.map +1 -0
  189. package/dist/validator-registry.js +71 -0
  190. package/dist/validator-registry.js.map +1 -0
  191. package/dist/workspace-init.js.map +1 -0
  192. package/dist/wu-block.js.map +1 -0
  193. package/dist/wu-brief.js.map +1 -0
  194. package/dist/wu-claim-branch.js +123 -0
  195. package/dist/wu-claim-branch.js.map +1 -0
  196. package/dist/wu-claim-cloud.js +79 -0
  197. package/dist/wu-claim-cloud.js.map +1 -0
  198. package/dist/wu-claim-mode.js +82 -0
  199. package/dist/wu-claim-mode.js.map +1 -0
  200. package/dist/wu-claim-output.js +85 -0
  201. package/dist/wu-claim-output.js.map +1 -0
  202. package/dist/wu-claim-repair-guidance.js +12 -0
  203. package/dist/wu-claim-repair-guidance.js.map +1 -0
  204. package/dist/wu-claim-resume-handler.js +87 -0
  205. package/dist/wu-claim-resume-handler.js.map +1 -0
  206. package/dist/wu-claim-state.js +581 -0
  207. package/dist/wu-claim-state.js.map +1 -0
  208. package/dist/wu-claim-validation.js +458 -0
  209. package/dist/wu-claim-validation.js.map +1 -0
  210. package/dist/wu-claim-worktree.js +238 -0
  211. package/dist/wu-claim-worktree.js.map +1 -0
  212. package/dist/wu-claim.js.map +1 -0
  213. package/dist/wu-cleanup-cloud.js +78 -0
  214. package/dist/wu-cleanup-cloud.js.map +1 -0
  215. package/dist/wu-cleanup.js.map +1 -0
  216. package/dist/wu-code-path-coverage.js +83 -0
  217. package/dist/wu-code-path-coverage.js.map +1 -0
  218. package/dist/wu-create-cloud.js +30 -0
  219. package/dist/wu-create-cloud.js.map +1 -0
  220. package/dist/wu-create-content.js +264 -0
  221. package/dist/wu-create-content.js.map +1 -0
  222. package/dist/wu-create-readiness.js +59 -0
  223. package/dist/wu-create-readiness.js.map +1 -0
  224. package/dist/wu-create-validation.js +128 -0
  225. package/dist/wu-create-validation.js.map +1 -0
  226. package/dist/wu-create.js.map +1 -0
  227. package/dist/wu-delegate.js.map +1 -0
  228. package/dist/wu-delete.js.map +1 -0
  229. package/dist/wu-deps.js.map +1 -0
  230. package/dist/wu-done-auto-cleanup.js +194 -0
  231. package/dist/wu-done-auto-cleanup.js.map +1 -0
  232. package/dist/wu-done-check.js +38 -0
  233. package/dist/wu-done-check.js.map +1 -0
  234. package/dist/wu-done-cloud.js +48 -0
  235. package/dist/wu-done-cloud.js.map +1 -0
  236. package/dist/wu-done-decay.js +83 -0
  237. package/dist/wu-done-decay.js.map +1 -0
  238. package/dist/wu-done.js.map +1 -0
  239. package/dist/wu-edit-operations.js +399 -0
  240. package/dist/wu-edit-operations.js.map +1 -0
  241. package/dist/wu-edit-validators.js +282 -0
  242. package/dist/wu-edit-validators.js.map +1 -0
  243. package/dist/wu-edit.js.map +1 -0
  244. package/dist/wu-infer-lane.js.map +1 -0
  245. package/dist/wu-preflight.js.map +1 -0
  246. package/dist/wu-prep.js.map +1 -0
  247. package/dist/wu-proto.js.map +1 -0
  248. package/dist/wu-prune.js.map +1 -0
  249. package/dist/wu-recover.js.map +1 -0
  250. package/dist/wu-release.js.map +1 -0
  251. package/dist/wu-repair.js.map +1 -0
  252. package/dist/wu-sandbox.js.map +1 -0
  253. package/dist/wu-spawn-completion.js +58 -0
  254. package/dist/wu-spawn-completion.js.map +1 -0
  255. package/dist/wu-spawn-prompt-builders.js +1190 -0
  256. package/dist/wu-spawn-prompt-builders.js.map +1 -0
  257. package/dist/wu-spawn-strategy-resolver.js +322 -0
  258. package/dist/wu-spawn-strategy-resolver.js.map +1 -0
  259. package/dist/wu-spawn.js +59 -0
  260. package/dist/wu-spawn.js.map +1 -0
  261. package/dist/wu-state-cloud.js +41 -0
  262. package/dist/wu-state-cloud.js.map +1 -0
  263. package/dist/wu-status.js.map +1 -0
  264. package/dist/wu-unblock.js.map +1 -0
  265. package/dist/wu-unlock-lane.js.map +1 -0
  266. package/dist/wu-validate.js.map +1 -0
  267. package/package.json +8 -10
@@ -0,0 +1,381 @@
1
+ // Copyright (c) 2026 Hellmai Ltd
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ /**
4
+ * @file lane-lifecycle-process.ts
5
+ * WU-1748: Process-owned deferred lane lifecycle
6
+ *
7
+ * Lane design is an explicit lifecycle:
8
+ * unconfigured -> draft -> locked
9
+ *
10
+ * `init` should bootstrap tooling only. Lane artifacts are created/validated/
11
+ * finalized through dedicated lane lifecycle commands.
12
+ */
13
+ import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
14
+ import path from 'node:path';
15
+ import YAML from 'yaml';
16
+ import { WORKSPACE_CONFIG_FILE_NAME } from '@lumenflow/core/config';
17
+ import { WORKSPACE_V2_KEYS } from '@lumenflow/core/config-schema';
18
+ import { CONFIG_FILES, FILE_SYSTEM, LUMENFLOW_PATHS } from '@lumenflow/core/wu-constants';
19
+ import { DEFAULT_LANE_DEFINITIONS, LANE_INFERENCE_TEMPLATE } from './init-templates.js';
20
+ import { extractConfigLanes, extractInferenceParents, validateLaneConfigAgainstInference, } from './init-lane-validation.js';
21
+ const LANE_CONFIG_KEY = 'lanes';
22
+ const LANE_DEFINITIONS_KEY = 'definitions';
23
+ const LANE_LIFECYCLE_KEY = 'lifecycle';
24
+ const LANE_LIFECYCLE_STATUS_KEY = 'status';
25
+ const LANE_LIFECYCLE_UPDATED_AT_KEY = 'updated_at';
26
+ const LANE_LIFECYCLE_MIGRATED_AT_KEY = 'migrated_at';
27
+ const LANE_LIFECYCLE_MIGRATION_REASON_KEY = 'migration_reason';
28
+ const EMPTY_OBJECT = '{}';
29
+ const NEWLINE = '\n';
30
+ const EMPTY_STRING = '';
31
+ const WU_CREATE_PREFIX = '[wu:create]';
32
+ const INITIATIVE_CREATE_PREFIX = '[initiative:create]';
33
+ const INIT_PREFIX = '[lumenflow init]';
34
+ const LANE_SETUP_COMMAND = 'pnpm lane:setup';
35
+ const LANE_LOCK_COMMAND = 'pnpm lane:lock';
36
+ const LANE_READY_SENTINEL = 'lanes ready';
37
+ const DEFAULT_FRAMEWORK_LANES_TOKEN = '{{FRAMEWORK_LANES}}';
38
+ const SOFTWARE_DELIVERY_KEY = WORKSPACE_V2_KEYS.SOFTWARE_DELIVERY;
39
+ export const LANE_LIFECYCLE_STATUS = {
40
+ UNCONFIGURED: 'unconfigured',
41
+ DRAFT: 'draft',
42
+ LOCKED: 'locked',
43
+ };
44
+ function asRecord(value) {
45
+ return value && typeof value === 'object' && !Array.isArray(value)
46
+ ? value
47
+ : null;
48
+ }
49
+ function toIsoTimestamp() {
50
+ return new Date().toISOString();
51
+ }
52
+ function isLaneLifecycleStatus(value) {
53
+ return (value === LANE_LIFECYCLE_STATUS.UNCONFIGURED ||
54
+ value === LANE_LIFECYCLE_STATUS.DRAFT ||
55
+ value === LANE_LIFECYCLE_STATUS.LOCKED);
56
+ }
57
+ function getConfigPath(projectRoot) {
58
+ return path.join(projectRoot, WORKSPACE_CONFIG_FILE_NAME);
59
+ }
60
+ function getLaneInferencePath(projectRoot) {
61
+ return path.join(projectRoot, CONFIG_FILES.LANE_INFERENCE);
62
+ }
63
+ function readWorkspaceDoc(projectRoot) {
64
+ const configPath = getConfigPath(projectRoot);
65
+ if (!existsSync(configPath)) {
66
+ return {};
67
+ }
68
+ try {
69
+ const content = readFileSync(configPath, FILE_SYSTEM.UTF8);
70
+ const parsed = asRecord(YAML.parse(content));
71
+ return parsed ?? {};
72
+ }
73
+ catch {
74
+ return {};
75
+ }
76
+ }
77
+ function readConfigDoc(projectRoot) {
78
+ const workspace = readWorkspaceDoc(projectRoot);
79
+ const softwareDelivery = asRecord(workspace[SOFTWARE_DELIVERY_KEY]);
80
+ return softwareDelivery ?? {};
81
+ }
82
+ function writeConfigDoc(projectRoot, config) {
83
+ const configPath = getConfigPath(projectRoot);
84
+ const workspace = readWorkspaceDoc(projectRoot);
85
+ workspace[SOFTWARE_DELIVERY_KEY] = config;
86
+ const nextContent = YAML.stringify(workspace);
87
+ writeFileSync(configPath, nextContent || EMPTY_OBJECT + NEWLINE, FILE_SYSTEM.UTF8);
88
+ }
89
+ function getLifecycleStatusFromDoc(config) {
90
+ const status = config?.lanes?.lifecycle?.status;
91
+ return isLaneLifecycleStatus(status) ? status : null;
92
+ }
93
+ function ensureLanesDoc(config) {
94
+ if (!config[LANE_CONFIG_KEY] || typeof config[LANE_CONFIG_KEY] !== 'object') {
95
+ config[LANE_CONFIG_KEY] = {};
96
+ }
97
+ return config[LANE_CONFIG_KEY];
98
+ }
99
+ function setLifecycleStatusInDoc(config, status, migrationReason) {
100
+ const lanes = ensureLanesDoc(config);
101
+ const existingLifecycle = lanes[LANE_LIFECYCLE_KEY] && typeof lanes[LANE_LIFECYCLE_KEY] === 'object'
102
+ ? lanes[LANE_LIFECYCLE_KEY]
103
+ : {};
104
+ const now = toIsoTimestamp();
105
+ const lifecycle = {
106
+ ...existingLifecycle,
107
+ [LANE_LIFECYCLE_STATUS_KEY]: status,
108
+ [LANE_LIFECYCLE_UPDATED_AT_KEY]: now,
109
+ };
110
+ if (migrationReason) {
111
+ lifecycle[LANE_LIFECYCLE_MIGRATED_AT_KEY] = now;
112
+ lifecycle[LANE_LIFECYCLE_MIGRATION_REASON_KEY] = migrationReason;
113
+ }
114
+ lanes[LANE_LIFECYCLE_KEY] = lifecycle;
115
+ }
116
+ function hasLaneDefinitions(config) {
117
+ const definitions = config?.lanes?.definitions;
118
+ return Array.isArray(definitions) && definitions.length > 0;
119
+ }
120
+ function hasLaneInferenceFile(projectRoot) {
121
+ return existsSync(getLaneInferencePath(projectRoot));
122
+ }
123
+ function deepCloneDefaultLaneDefinitions() {
124
+ return JSON.parse(JSON.stringify(DEFAULT_LANE_DEFINITIONS));
125
+ }
126
+ function buildDefaultLaneInferenceTemplate() {
127
+ return LANE_INFERENCE_TEMPLATE.replace(DEFAULT_FRAMEWORK_LANES_TOKEN, EMPTY_STRING);
128
+ }
129
+ /**
130
+ * Classify lifecycle status for projects that do not yet have explicit
131
+ * lanes.lifecycle.status in config.
132
+ */
133
+ export function classifyLaneLifecycleForProject(projectRoot) {
134
+ const config = readConfigDoc(projectRoot);
135
+ const configuredStatus = getLifecycleStatusFromDoc(config);
136
+ if (configuredStatus) {
137
+ return {
138
+ status: configuredStatus,
139
+ source: 'config',
140
+ migrationReason: null,
141
+ persisted: false,
142
+ };
143
+ }
144
+ const definitionsPresent = hasLaneDefinitions(config);
145
+ const inferencePresent = hasLaneInferenceFile(projectRoot);
146
+ if (!definitionsPresent && !inferencePresent) {
147
+ return {
148
+ status: LANE_LIFECYCLE_STATUS.UNCONFIGURED,
149
+ source: 'migration',
150
+ migrationReason: 'no lane artifacts',
151
+ persisted: false,
152
+ };
153
+ }
154
+ if (definitionsPresent && inferencePresent) {
155
+ const validation = validateLaneArtifacts(projectRoot);
156
+ if (validation.invalidLanes.length === 0 && validation.warnings.length === 0) {
157
+ return {
158
+ status: LANE_LIFECYCLE_STATUS.LOCKED,
159
+ source: 'migration',
160
+ migrationReason: 'lane artifacts detected and valid',
161
+ persisted: false,
162
+ };
163
+ }
164
+ return {
165
+ status: LANE_LIFECYCLE_STATUS.DRAFT,
166
+ source: 'migration',
167
+ migrationReason: 'lane artifacts detected but validation failed',
168
+ persisted: false,
169
+ };
170
+ }
171
+ return {
172
+ status: LANE_LIFECYCLE_STATUS.DRAFT,
173
+ source: 'migration',
174
+ migrationReason: 'partial lane artifacts detected',
175
+ persisted: false,
176
+ };
177
+ }
178
+ /**
179
+ * Ensure lifecycle status exists in config.
180
+ *
181
+ * Existing repositories are migrated deterministically from current artifacts:
182
+ * - valid artifacts => locked
183
+ * - invalid/partial artifacts => draft
184
+ * - no artifacts => unconfigured
185
+ */
186
+ export function ensureLaneLifecycleForProject(projectRoot, options = {}) {
187
+ const persist = options.persist ?? true;
188
+ const classification = classifyLaneLifecycleForProject(projectRoot);
189
+ if (!persist || classification.source === 'config') {
190
+ return classification;
191
+ }
192
+ const config = readConfigDoc(projectRoot);
193
+ setLifecycleStatusInDoc(config, classification.status, classification.migrationReason ?? undefined);
194
+ writeConfigDoc(projectRoot, config);
195
+ return {
196
+ ...classification,
197
+ persisted: true,
198
+ };
199
+ }
200
+ export function setLaneLifecycleStatus(projectRoot, status) {
201
+ const config = readConfigDoc(projectRoot);
202
+ setLifecycleStatusInDoc(config, status);
203
+ writeConfigDoc(projectRoot, config);
204
+ }
205
+ export function recommendLaneLifecycleNextStep(status) {
206
+ if (status === LANE_LIFECYCLE_STATUS.UNCONFIGURED) {
207
+ return LANE_SETUP_COMMAND;
208
+ }
209
+ if (status === LANE_LIFECYCLE_STATUS.DRAFT) {
210
+ return LANE_LOCK_COMMAND;
211
+ }
212
+ return LANE_READY_SENTINEL;
213
+ }
214
+ export function buildWuCreateLaneLifecycleMessage(status) {
215
+ return [
216
+ `${WU_CREATE_PREFIX} Lane lifecycle status: ${status}`,
217
+ 'Cannot create delivery WU until lanes are locked.',
218
+ `Next step: ${recommendLaneLifecycleNextStep(status)}`,
219
+ ].join(NEWLINE);
220
+ }
221
+ export function buildInitiativeCreateLaneLifecycleMessage(status) {
222
+ return [
223
+ `${INITIATIVE_CREATE_PREFIX} Lane lifecycle: ${status}`,
224
+ 'Initiative creation is allowed before lane setup.',
225
+ `When ready for delivery WUs, run: ${recommendLaneLifecycleNextStep(status)}`,
226
+ ].join(NEWLINE);
227
+ }
228
+ export function buildInitLaneLifecycleMessage(status) {
229
+ return [
230
+ `${INIT_PREFIX} Lane lifecycle: ${status}`,
231
+ 'Lanes are configured after project context is defined (plan/architecture).',
232
+ `Next step: ${recommendLaneLifecycleNextStep(status)}`,
233
+ ].join(NEWLINE);
234
+ }
235
+ /**
236
+ * WU-1755: Detect workspace structure and generate project-specific lane definitions.
237
+ * Scans pnpm-workspace.yaml or package.json workspaces to build lanes from actual project layout.
238
+ * Falls back to DEFAULT_LANE_DEFINITIONS if no workspace config is found.
239
+ */
240
+ function detectWorkspaceLanes(projectRoot) {
241
+ const lanes = [];
242
+ // Try pnpm-workspace.yaml first
243
+ const pnpmWorkspacePath = path.join(projectRoot, 'pnpm-workspace.yaml');
244
+ let workspacePatterns = [];
245
+ if (existsSync(pnpmWorkspacePath)) {
246
+ try {
247
+ const content = readFileSync(pnpmWorkspacePath, FILE_SYSTEM.ENCODING);
248
+ const parsed = YAML.parse(content);
249
+ workspacePatterns = parsed?.packages ?? [];
250
+ }
251
+ catch {
252
+ // Fall through to package.json check
253
+ }
254
+ }
255
+ // Fall back to package.json workspaces
256
+ if (workspacePatterns.length === 0) {
257
+ const pkgJsonPath = path.join(projectRoot, 'package.json');
258
+ if (existsSync(pkgJsonPath)) {
259
+ try {
260
+ const content = readFileSync(pkgJsonPath, FILE_SYSTEM.ENCODING);
261
+ const parsed = JSON.parse(content);
262
+ if (Array.isArray(parsed?.workspaces)) {
263
+ workspacePatterns = parsed.workspaces;
264
+ }
265
+ else if (parsed?.workspaces?.packages) {
266
+ workspacePatterns = parsed.workspaces.packages;
267
+ }
268
+ }
269
+ catch {
270
+ // Fall through to defaults
271
+ }
272
+ }
273
+ }
274
+ if (workspacePatterns.length === 0) {
275
+ return deepCloneDefaultLaneDefinitions();
276
+ }
277
+ // Scan workspace patterns for actual directories
278
+ for (const pattern of workspacePatterns) {
279
+ const baseDir = pattern.replace(/\/?\*$/, '');
280
+ const fullPath = path.join(projectRoot, baseDir);
281
+ if (!existsSync(fullPath))
282
+ continue;
283
+ try {
284
+ const entries = readdirSync(fullPath, { withFileTypes: true });
285
+ for (const entry of entries) {
286
+ if (!entry.isDirectory())
287
+ continue;
288
+ const pkgPath = path.join(fullPath, entry.name, 'package.json');
289
+ if (!existsSync(pkgPath))
290
+ continue;
291
+ // Determine lane category from directory structure
292
+ const isApp = baseDir.includes('app');
293
+ const category = isApp ? 'Experience' : 'Framework';
294
+ const displayName = entry.name.replace(/^@[^/]+\//, '');
295
+ lanes.push({
296
+ name: `${category}: ${displayName.charAt(0).toUpperCase() + displayName.slice(1)}`,
297
+ wip_limit: 1,
298
+ code_paths: [`${baseDir}/${entry.name}/**`],
299
+ });
300
+ }
301
+ }
302
+ catch {
303
+ // Skip unreadable directories
304
+ }
305
+ }
306
+ // Always include Content: Documentation if docs/ exists
307
+ if (existsSync(path.join(projectRoot, 'docs'))) {
308
+ lanes.push({
309
+ name: 'Content: Documentation',
310
+ wip_limit: 1,
311
+ code_paths: ['docs/**', '*.md'],
312
+ });
313
+ }
314
+ // Always include Operations: CI/CD if .github/ exists
315
+ if (existsSync(path.join(projectRoot, '.github'))) {
316
+ lanes.push({
317
+ name: 'Operations: CI/CD',
318
+ wip_limit: 1,
319
+ code_paths: ['.github/workflows/**', '.github/actions/**'],
320
+ });
321
+ }
322
+ return lanes.length > 0 ? lanes : deepCloneDefaultLaneDefinitions();
323
+ }
324
+ export function ensureDraftLaneArtifacts(projectRoot) {
325
+ const config = readConfigDoc(projectRoot);
326
+ const lanes = ensureLanesDoc(config);
327
+ let createdDefinitions = false;
328
+ if (!hasLaneDefinitions(config)) {
329
+ // WU-1755: Detect workspace structure for project-specific lanes
330
+ lanes[LANE_DEFINITIONS_KEY] = detectWorkspaceLanes(projectRoot);
331
+ createdDefinitions = true;
332
+ }
333
+ const laneInferencePath = getLaneInferencePath(projectRoot);
334
+ let createdInference = false;
335
+ if (!existsSync(laneInferencePath)) {
336
+ const inferenceDir = path.dirname(laneInferencePath);
337
+ if (!existsSync(inferenceDir)) {
338
+ mkdirSync(inferenceDir, { recursive: true });
339
+ }
340
+ writeFileSync(laneInferencePath, buildDefaultLaneInferenceTemplate(), FILE_SYSTEM.ENCODING);
341
+ createdInference = true;
342
+ }
343
+ setLifecycleStatusInDoc(config, LANE_LIFECYCLE_STATUS.DRAFT);
344
+ writeConfigDoc(projectRoot, config);
345
+ return {
346
+ createdDefinitions,
347
+ createdInference,
348
+ status: LANE_LIFECYCLE_STATUS.DRAFT,
349
+ };
350
+ }
351
+ export function validateLaneArtifacts(projectRoot) {
352
+ const configPath = getConfigPath(projectRoot);
353
+ const inferencePath = getLaneInferencePath(projectRoot);
354
+ const configLanes = extractConfigLanes(configPath);
355
+ const inferenceParents = extractInferenceParents(inferencePath);
356
+ const missingDefinitions = configLanes.length === 0;
357
+ const missingInference = inferenceParents.length === 0;
358
+ const warnings = [];
359
+ const invalidLanes = [];
360
+ if (missingDefinitions) {
361
+ warnings.push(`No lane definitions found in ${WORKSPACE_CONFIG_FILE_NAME} (${SOFTWARE_DELIVERY_KEY}.lanes). Run: ${LANE_SETUP_COMMAND}`);
362
+ }
363
+ if (missingInference) {
364
+ warnings.push(`Missing or invalid ${CONFIG_FILES.LANE_INFERENCE}. Run: ${LANE_SETUP_COMMAND}`);
365
+ }
366
+ if (!missingDefinitions && !missingInference) {
367
+ const laneValidation = validateLaneConfigAgainstInference(configLanes, inferenceParents);
368
+ warnings.push(...laneValidation.warnings);
369
+ invalidLanes.push(...laneValidation.invalidLanes);
370
+ }
371
+ return {
372
+ warnings,
373
+ invalidLanes,
374
+ missingDefinitions,
375
+ missingInference,
376
+ };
377
+ }
378
+ export function getLaneLifecycleStatusPath() {
379
+ return path.join(LUMENFLOW_PATHS.STATE_DIR, 'lane-lifecycle.json');
380
+ }
381
+ //# sourceMappingURL=lane-lifecycle-process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lane-lifecycle-process.js","sourceRoot":"","sources":["../src/lane-lifecycle-process.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC;AAEzC;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC1F,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC1F,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,kCAAkC,GAEnC,MAAM,2BAA2B,CAAC;AAEnC,MAAM,eAAe,GAAG,OAAO,CAAC;AAChC,MAAM,oBAAoB,GAAG,aAAa,CAAC;AAC3C,MAAM,kBAAkB,GAAG,WAAW,CAAC;AACvC,MAAM,yBAAyB,GAAG,QAAQ,CAAC;AAC3C,MAAM,6BAA6B,GAAG,YAAY,CAAC;AACnD,MAAM,8BAA8B,GAAG,aAAa,CAAC;AACrD,MAAM,mCAAmC,GAAG,kBAAkB,CAAC;AAC/D,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB,MAAM,gBAAgB,GAAG,aAAa,CAAC;AACvC,MAAM,wBAAwB,GAAG,qBAAqB,CAAC;AACvD,MAAM,WAAW,GAAG,kBAAkB,CAAC;AAEvC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;AAC7C,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAC3C,MAAM,mBAAmB,GAAG,aAAa,CAAC;AAE1C,MAAM,6BAA6B,GAAG,qBAAqB,CAAC;AAC5D,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,iBAAiB,CAAC;AAElE,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,YAAY,EAAE,cAAc;IAC5B,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;CACR,CAAC;AAwCX,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAChE,CAAC,CAAE,KAAiC;QACpC,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,OAAO,CACL,KAAK,KAAK,qBAAqB,CAAC,YAAY;QAC5C,KAAK,KAAK,qBAAqB,CAAC,KAAK;QACrC,KAAK,KAAK,qBAAqB,CAAC,MAAM,CACvC,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,WAAmB;IACxC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,0BAA0B,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,oBAAoB,CAAC,WAAmB;IAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,gBAAgB,CAAC,WAAmB;IAC3C,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,WAAW,CAAC,IAAsB,CAAC,CAAC;QAC7E,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAwB,CAAC;QACpE,OAAO,MAAM,IAAI,EAAE,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,WAAmB;IACxC,MAAM,SAAS,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC;IACpE,OAAQ,gBAAqC,IAAI,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,cAAc,CAAC,WAAmB,EAAE,MAAiB;IAC5D,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAChD,SAAS,CAAC,qBAAqB,CAAC,GAAG,MAAM,CAAC;IAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC9C,aAAa,CACX,UAAU,EACV,WAAW,IAAI,YAAY,GAAG,OAAO,EACrC,WAAW,CAAC,IAAsB,CACnC,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAiB;IAClD,MAAM,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC;IAChD,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC;AAED,SAAS,cAAc,CAAC,MAAiB;IACvC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,OAAO,MAAM,CAAC,eAAe,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC5E,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC,eAAe,CAAa,CAAC;AAC7C,CAAC;AAED,SAAS,uBAAuB,CAC9B,MAAiB,EACjB,MAA2B,EAC3B,eAAwB;IAExB,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,iBAAiB,GACrB,KAAK,CAAC,kBAAkB,CAAC,IAAI,OAAO,KAAK,CAAC,kBAAkB,CAAC,KAAK,QAAQ;QACxE,CAAC,CAAE,KAAK,CAAC,kBAAkB,CAAsB;QACjD,CAAC,CAAC,EAAE,CAAC;IAET,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAqB;QAClC,GAAG,iBAAiB;QACpB,CAAC,yBAAyB,CAAC,EAAE,MAAM;QACnC,CAAC,6BAA6B,CAAC,EAAE,GAAG;KACrC,CAAC;IAEF,IAAI,eAAe,EAAE,CAAC;QACpB,SAAS,CAAC,8BAA8B,CAAC,GAAG,GAAG,CAAC;QAChD,SAAS,CAAC,mCAAmC,CAAC,GAAG,eAAe,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,GAAG,SAAS,CAAC;AACxC,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAiB;IAC3C,MAAM,WAAW,GAAG,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC;IAC/C,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,oBAAoB,CAAC,WAAmB;IAC/C,OAAO,UAAU,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,+BAA+B;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAc,CAAC;AAC3E,CAAC;AAED,SAAS,iCAAiC;IACxC,OAAO,uBAAuB,CAAC,OAAO,CAAC,6BAA6B,EAAE,YAAY,CAAC,CAAC;AACtF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,+BAA+B,CAAC,WAAmB;IACjE,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAC3D,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO;YACL,MAAM,EAAE,gBAAgB;YACxB,MAAM,EAAE,QAAQ;YAChB,eAAe,EAAE,IAAI;YACrB,SAAS,EAAE,KAAK;SACjB,CAAC;IACJ,CAAC;IAED,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAE3D,IAAI,CAAC,kBAAkB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC7C,OAAO;YACL,MAAM,EAAE,qBAAqB,CAAC,YAAY;YAC1C,MAAM,EAAE,WAAW;YACnB,eAAe,EAAE,mBAAmB;YACpC,SAAS,EAAE,KAAK;SACjB,CAAC;IACJ,CAAC;IAED,IAAI,kBAAkB,IAAI,gBAAgB,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,UAAU,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7E,OAAO;gBACL,MAAM,EAAE,qBAAqB,CAAC,MAAM;gBACpC,MAAM,EAAE,WAAW;gBACnB,eAAe,EAAE,mCAAmC;gBACpD,SAAS,EAAE,KAAK;aACjB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,qBAAqB,CAAC,KAAK;YACnC,MAAM,EAAE,WAAW;YACnB,eAAe,EAAE,+CAA+C;YAChE,SAAS,EAAE,KAAK;SACjB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,qBAAqB,CAAC,KAAK;QACnC,MAAM,EAAE,WAAW;QACnB,eAAe,EAAE,iCAAiC;QAClD,SAAS,EAAE,KAAK;KACjB,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,6BAA6B,CAC3C,WAAmB,EACnB,UAAiC,EAAE;IAEnC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;IACxC,MAAM,cAAc,GAAG,+BAA+B,CAAC,WAAW,CAAC,CAAC;IACpE,IAAI,CAAC,OAAO,IAAI,cAAc,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACnD,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAC1C,uBAAuB,CACrB,MAAM,EACN,cAAc,CAAC,MAAM,EACrB,cAAc,CAAC,eAAe,IAAI,SAAS,CAC5C,CAAC;IACF,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAEpC,OAAO;QACL,GAAG,cAAc;QACjB,SAAS,EAAE,IAAI;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,WAAmB,EAAE,MAA2B;IACrF,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAC1C,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,MAA2B;IACxE,IAAI,MAAM,KAAK,qBAAqB,CAAC,YAAY,EAAE,CAAC;QAClD,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IACD,IAAI,MAAM,KAAK,qBAAqB,CAAC,KAAK,EAAE,CAAC;QAC3C,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,MAA2B;IAC3E,OAAO;QACL,GAAG,gBAAgB,2BAA2B,MAAM,EAAE;QACtD,mDAAmD;QACnD,cAAc,8BAA8B,CAAC,MAAM,CAAC,EAAE;KACvD,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,yCAAyC,CAAC,MAA2B;IACnF,OAAO;QACL,GAAG,wBAAwB,oBAAoB,MAAM,EAAE;QACvD,mDAAmD;QACnD,qCAAqC,8BAA8B,CAAC,MAAM,CAAC,EAAE;KAC9E,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,MAA2B;IACvE,OAAO;QACL,GAAG,WAAW,oBAAoB,MAAM,EAAE;QAC1C,4EAA4E;QAC5E,cAAc,8BAA8B,CAAC,MAAM,CAAC,EAAE;KACvD,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAC3B,WAAmB;IAEnB,MAAM,KAAK,GAAgE,EAAE,CAAC;IAE9E,gCAAgC;IAChC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;IACxE,IAAI,iBAAiB,GAAa,EAAE,CAAC;IAErC,IAAI,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,iBAAiB,EAAE,WAAW,CAAC,QAA0B,CAAC,CAAC;YACxF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;YAC9D,iBAAiB,GAAG,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,qCAAqC;QACvC,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAC3D,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,QAA0B,CAAC,CAAC;gBAClF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAwD,CAAC;gBAC1F,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC;oBACtC,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC;gBACxC,CAAC;qBAAM,IAAI,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;oBACxC,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;gBACjD,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,2BAA2B;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,+BAA+B,EAAkB,CAAC;IAC3D,CAAC;IAED,iDAAiD;IACjD,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,SAAS;QAEpC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;oBAAE,SAAS;gBACnC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;gBAChE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;oBAAE,SAAS;gBAEnC,mDAAmD;gBACnD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;gBACpD,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;gBACxD,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,GAAG,QAAQ,KAAK,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;oBAClF,SAAS,EAAE,CAAC;oBACZ,UAAU,EAAE,CAAC,GAAG,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;iBAC5C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,8BAA8B;QAChC,CAAC;IACH,CAAC;IAED,wDAAwD;IACxD,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,wBAAwB;YAC9B,SAAS,EAAE,CAAC;YACZ,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;IAED,sDAAsD;IACtD,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,mBAAmB;YACzB,SAAS,EAAE,CAAC;YACZ,UAAU,EAAE,CAAC,sBAAsB,EAAE,oBAAoB,CAAC;SAC3D,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,+BAA+B,EAAmB,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,WAAmB;IAK1D,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAErC,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAC/B,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,iEAAiE;QACjE,KAAK,CAAC,oBAAoB,CAAC,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;QAChE,kBAAkB,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC5D,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACnC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,aAAa,CACX,iBAAiB,EACjB,iCAAiC,EAAE,EACnC,WAAW,CAAC,QAA0B,CACvC,CAAC;QACF,gBAAgB,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,uBAAuB,CAAC,MAAM,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC7D,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAEpC,OAAO;QACL,kBAAkB;QAClB,gBAAgB;QAChB,MAAM,EAAE,qBAAqB,CAAC,KAAK;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,WAAmB;IACvD,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAExD,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAC;IAEhE,MAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC;IACpD,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,KAAK,CAAC,CAAC;IAEvD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,IAAI,kBAAkB,EAAE,CAAC;QACvB,QAAQ,CAAC,IAAI,CACX,gCAAgC,0BAA0B,KAAK,qBAAqB,iBAAiB,kBAAkB,EAAE,CAC1H,CAAC;IACJ,CAAC;IACD,IAAI,gBAAgB,EAAE,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC,sBAAsB,YAAY,CAAC,cAAc,UAAU,kBAAkB,EAAE,CAAC,CAAC;IACjG,CAAC;IAED,IAAI,CAAC,kBAAkB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC7C,MAAM,cAAc,GAAG,kCAAkC,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;QACzF,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC1C,YAAY,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;IACpD,CAAC;IAED,OAAO;QACL,QAAQ;QACR,YAAY;QACZ,kBAAkB;QAClB,gBAAgB;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;AACrE,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lane-lock.js","sourceRoot":"","sources":["../src/lane-lock.ts"],"names":[],"mappings":";AACA,iCAAiC;AACjC,yCAAyC;AAEzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAC;AACpD,OAAO,EACL,qBAAqB,EACrB,8BAA8B,EAC9B,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,MAAM,UAAU,GAAG,aAAa,CAAC;AAEjC,SAAS,mBAAmB,CAAC,WAAmB;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,0BAA0B,CAAC,CAAC;IACtE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,GAAG,CACD,GAAG,UAAU,YAAY,0BAA0B,OAAO;YACxD,uEAAuE,CAC1E,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;IACtC,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAEjC,MAAM,UAAU,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC;IAExF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,wDAAwD,CAAC,CAAC;QACnF,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC;QAChC,CAAC;QACD,KAAK,MAAM,WAAW,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,6BAA6B,WAAW,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,gCAAgC,CAAC,CAAC;QAC3D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,sBAAsB,CAAC,WAAW,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,2BAA2B,qBAAqB,CAAC,MAAM,EAAE,CAAC,CAAC;IACpF,OAAO,CAAC,GAAG,CACT,GAAG,UAAU,eAAe,8BAA8B,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAC3F,CAAC;AACJ,CAAC;AAED,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lane-setup.js","sourceRoot":"","sources":["../src/lane-setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lane-status.js","sourceRoot":"","sources":["../src/lane-status.ts"],"names":[],"mappings":";AACA,iCAAiC;AACjC,yCAAyC;AAEzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAC;AACpD,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,GAC/B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,MAAM,UAAU,GAAG,eAAe,CAAC;AAEnC,SAAS,mBAAmB,CAAC,WAAmB;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,0BAA0B,CAAC,CAAC;IACtE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,GAAG,CACD,GAAG,UAAU,YAAY,0BAA0B,OAAO;YACxD,6EAA6E,CAChF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAAC,WAAmB;IAC/D,OAAO,6BAA6B,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACxE,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;IACtC,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAEjC,MAAM,cAAc,GAAG,6BAA6B,CAAC,WAAW,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,8BAA8B,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAEvE,IAAI,cAAc,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,qCAAqC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC;QACnF,OAAO,CAAC,GAAG,CAAC,mCAAmC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,0BAA0B,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lane-suggest.js","sourceRoot":"","sources":["../src/lane-suggest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lane-validate.js","sourceRoot":"","sources":["../src/lane-validate.ts"],"names":[],"mappings":";AACA,iCAAiC;AACjC,yCAAyC;AAEzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAC;AACpD,OAAO,EACL,qBAAqB,EACrB,8BAA8B,EAC9B,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,MAAM,UAAU,GAAG,iBAAiB,CAAC;AACrC,MAAM,aAAa,GAAG,mCAAmC,CAAC;AAE1D,SAAS,mBAAmB,CAAC,WAAmB;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,0BAA0B,CAAC,CAAC;IACtE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,GAAG,CACD,GAAG,UAAU,YAAY,0BAA0B,OAAO;YACxD,uEAAuE,CAC1E,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;IACtC,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAEjC,MAAM,UAAU,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC;IAExF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,qBAAqB,CAAC,CAAC;QAChD,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC;QAChC,CAAC;QACD,KAAK,MAAM,WAAW,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,6BAA6B,WAAW,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,CAAC,GAAG,CACT,GAAG,UAAU,eAAe,8BAA8B,CAAC,qBAAqB,CAAC,YAAY,CAAC,EAAE,CACjG,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,sBAAsB,CAAC,WAAW,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,IAAI,aAAa,EAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,2BAA2B,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CACT,GAAG,UAAU,eAAe,8BAA8B,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAC1F,CAAC;AACJ,CAAC;AAED,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC"}
@@ -0,0 +1,181 @@
1
+ // Copyright (c) 2026 Hellmai Ltd
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ import { existsSync } from 'node:fs';
4
+ import { mkdir, readdir, readFile, unlink, writeFile } from 'node:fs/promises';
5
+ import { join } from 'node:path';
6
+ import { diagnoseState, } from '@lumenflow/core/state-doctor-core';
7
+ import { generateBacklog, generateStatus } from '@lumenflow/core/backlog-generator';
8
+ import { WU_STATUS } from '@lumenflow/core/wu-constants';
9
+ import { WUStateStore, WU_EVENTS_FILE_NAME } from '@lumenflow/core/wu-state-store';
10
+ import { parseYAML, stringifyYAML } from '@lumenflow/core/wu-yaml';
11
+ const PATHS = {
12
+ wuDir: join('docs', '04-operations', 'tasks', 'wu'),
13
+ stateDir: join('.lumenflow', 'state'),
14
+ stampsDir: join('.lumenflow', 'stamps'),
15
+ };
16
+ export class LifecycleHarnessError extends Error {
17
+ stage;
18
+ constructor(stage, message, cause) {
19
+ super(`[${stage}] ${message}`);
20
+ this.name = 'LifecycleHarnessError';
21
+ this.stage = stage;
22
+ if (cause) {
23
+ this.cause = cause;
24
+ }
25
+ }
26
+ }
27
+ async function withStage(stage, fn) {
28
+ try {
29
+ return await fn();
30
+ }
31
+ catch (error) {
32
+ if (error instanceof LifecycleHarnessError) {
33
+ throw error;
34
+ }
35
+ throw new LifecycleHarnessError(stage, error instanceof Error ? error.message : String(error), error);
36
+ }
37
+ }
38
+ function assertStage(condition, stage, message) {
39
+ if (!condition) {
40
+ throw new LifecycleHarnessError(stage, message);
41
+ }
42
+ }
43
+ function wuPath(projectDir, wuId) {
44
+ return join(projectDir, PATHS.wuDir, `${wuId}.yaml`);
45
+ }
46
+ function eventsPath(projectDir) {
47
+ return join(projectDir, PATHS.stateDir, WU_EVENTS_FILE_NAME);
48
+ }
49
+ async function readEvents(projectDir) {
50
+ const eventFile = eventsPath(projectDir);
51
+ if (!existsSync(eventFile))
52
+ return [];
53
+ const lines = (await readFile(eventFile, 'utf8'))
54
+ .split('\n')
55
+ .filter((line) => line.trim().length > 0);
56
+ return lines.map((line) => JSON.parse(line));
57
+ }
58
+ async function writeEvents(projectDir, events) {
59
+ const eventFile = eventsPath(projectDir);
60
+ const payload = events.map((event) => JSON.stringify(event)).join('\n');
61
+ await writeFile(eventFile, payload.length > 0 ? `${payload}\n` : '', 'utf8');
62
+ }
63
+ async function createDoctorDeps(projectDir) {
64
+ return {
65
+ listWUs: async () => {
66
+ const dir = join(projectDir, PATHS.wuDir);
67
+ if (!existsSync(dir))
68
+ return [];
69
+ const entries = await readdir(dir);
70
+ const docs = [];
71
+ for (const file of entries) {
72
+ if (!file.endsWith('.yaml'))
73
+ continue;
74
+ const parsed = parseYAML(await readFile(join(dir, file), 'utf8'));
75
+ docs.push({
76
+ id: String(parsed.id),
77
+ status: String(parsed.status),
78
+ lane: parsed.lane ? String(parsed.lane) : undefined,
79
+ title: parsed.title ? String(parsed.title) : undefined,
80
+ });
81
+ }
82
+ return docs;
83
+ },
84
+ listStamps: async () => {
85
+ const dir = join(projectDir, PATHS.stampsDir);
86
+ if (!existsSync(dir))
87
+ return [];
88
+ const entries = await readdir(dir);
89
+ return entries
90
+ .filter((file) => file.endsWith('.done'))
91
+ .map((file) => file.replace('.done', ''));
92
+ },
93
+ listSignals: async () => [],
94
+ listEvents: async () => {
95
+ const events = await readEvents(projectDir);
96
+ return events.map((event) => ({
97
+ wuId: String(event.wuId ?? event.wu_id ?? ''),
98
+ type: String(event.type ?? ''),
99
+ timestamp: event.timestamp ? String(event.timestamp) : undefined,
100
+ lane: event.lane ? String(event.lane) : undefined,
101
+ title: event.title ? String(event.title) : undefined,
102
+ reason: event.reason ? String(event.reason) : undefined,
103
+ }));
104
+ },
105
+ removeEvent: async (wuId) => {
106
+ const events = await readEvents(projectDir);
107
+ const filtered = events.filter((event) => String(event.wuId ?? event.wu_id ?? '') !== wuId);
108
+ await writeEvents(projectDir, filtered);
109
+ },
110
+ };
111
+ }
112
+ export async function runLifecycleRegressionHarness(options) {
113
+ const { projectDir, wuId, lane, title, skipDoctorFix = false } = options;
114
+ const stageOrder = [];
115
+ const stateDir = join(projectDir, PATHS.stateDir);
116
+ const wuDir = join(projectDir, PATHS.wuDir);
117
+ await mkdir(wuDir, { recursive: true });
118
+ await mkdir(stateDir, { recursive: true });
119
+ await mkdir(join(projectDir, PATHS.stampsDir), { recursive: true });
120
+ await withStage('create', async () => {
121
+ stageOrder.push('create');
122
+ const doc = {
123
+ id: wuId,
124
+ title,
125
+ lane,
126
+ type: 'refactor',
127
+ status: WU_STATUS.READY,
128
+ priority: 'P2',
129
+ created: '2026-02-07',
130
+ description: 'Lifecycle harness test WU',
131
+ acceptance: ['Create, claim, complete, delete, doctor'],
132
+ code_paths: ['packages/@lumenflow/cli/src/lifecycle-regression-harness.ts'],
133
+ tests: { manual: ['Run lifecycle harness test'], unit: [], e2e: [] },
134
+ exposure: 'backend-only',
135
+ };
136
+ await writeFile(wuPath(projectDir, wuId), stringifyYAML(doc), 'utf8');
137
+ assertStage(existsSync(wuPath(projectDir, wuId)), 'create', `expected ${wuId}.yaml to exist`);
138
+ });
139
+ const store = new WUStateStore(stateDir);
140
+ await store.load();
141
+ await withStage('claim', async () => {
142
+ stageOrder.push('claim');
143
+ await store.claim(wuId, lane, title);
144
+ const current = store.getWUState(wuId);
145
+ assertStage(current?.status === WU_STATUS.IN_PROGRESS, 'claim', `expected ${wuId} status to be in_progress after claim`);
146
+ });
147
+ await withStage('done', async () => {
148
+ stageOrder.push('done');
149
+ await store.complete(wuId);
150
+ const current = store.getWUState(wuId);
151
+ assertStage(current?.status === WU_STATUS.DONE, 'done', `expected ${wuId} status to be done`);
152
+ });
153
+ await withStage('delete', async () => {
154
+ stageOrder.push('delete');
155
+ await unlink(wuPath(projectDir, wuId));
156
+ assertStage(!existsSync(wuPath(projectDir, wuId)), 'delete', `expected ${wuId}.yaml to be deleted`);
157
+ });
158
+ const diagnosis = await withStage('doctor', async () => {
159
+ stageOrder.push('doctor');
160
+ const deps = await createDoctorDeps(projectDir);
161
+ const result = await diagnoseState(projectDir, deps, { fix: !skipDoctorFix });
162
+ const verification = skipDoctorFix
163
+ ? result
164
+ : await diagnoseState(projectDir, await createDoctorDeps(projectDir), { fix: false });
165
+ assertStage(verification.summary.brokenEvents === 0, 'doctor', `expected no Broken Event issues after doctor (found ${verification.summary.brokenEvents})`);
166
+ return verification;
167
+ });
168
+ const cleanStore = new WUStateStore(stateDir);
169
+ await cleanStore.load();
170
+ const backlogProjection = await generateBacklog(cleanStore, { projectRoot: projectDir, wuDir });
171
+ const statusProjection = await generateStatus(cleanStore);
172
+ assertStage(!backlogProjection.includes(wuId), 'doctor', `expected backlog projection to exclude deleted ${wuId}`);
173
+ assertStage(!statusProjection.includes(wuId), 'doctor', `expected status projection to exclude deleted ${wuId}`);
174
+ return {
175
+ stageOrder,
176
+ diagnosis,
177
+ backlogProjection,
178
+ statusProjection,
179
+ };
180
+ }
181
+ //# sourceMappingURL=lifecycle-regression-harness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle-regression-harness.js","sourceRoot":"","sources":["../src/lifecycle-regression-harness.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,aAAa,GAGd,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAEnE,MAAM,KAAK,GAAG;IACZ,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,CAAC;IACnD,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC;IACrC,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC;CACxC,CAAC;AAmBF,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,KAAK,CAAiB;IAEtB,YAAY,KAAqB,EAAE,OAAe,EAAE,KAAe;QACjE,KAAK,CAAC,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,CAAC;IACH,CAAC;CACF;AAED,KAAK,UAAU,SAAS,CAAI,KAAqB,EAAE,EAAoB;IACrE,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;YAC3C,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,IAAI,qBAAqB,CAC7B,KAAK,EACL,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACtD,KAAK,CACN,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,SAAkB,EAAE,KAAqB,EAAE,OAAe;IAC7E,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CAAC,UAAkB,EAAE,IAAY;IAC9C,OAAO,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,UAAU,CAAC,UAAkB;IACpC,OAAO,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AAC/D,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,UAAkB;IAC1C,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACzC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;SAC9C,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC5C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC,CAAC;AAC1E,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,UAAkB,EAClB,MAAsC;IAEtC,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxE,MAAM,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC/E,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,UAAkB;IAChD,OAAO;QACL,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAAE,SAAS;gBACtC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAG/D,CAAC;gBACF,IAAI,CAAC,IAAI,CAAC;oBACR,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBACrB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;oBAC7B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;oBACnD,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;iBACvD,CAAC,CAAC;YACL,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,UAAU,EAAE,KAAK,IAAI,EAAE;YACrB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;YACnC,OAAO,OAAO;iBACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;iBACxC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QAC9C,CAAC;QACD,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE;QAC3B,UAAU,EAAE,KAAK,IAAI,EAAE;YACrB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;YAC5C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC5B,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC7C,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC9B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;gBAChE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;gBACjD,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;gBACpD,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;aACxD,CAAC,CAAC,CAAC;QACN,CAAC;QACD,WAAW,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;YAClC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC;YAC5F,MAAM,WAAW,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,OAAgC;IAEhC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IACzE,MAAM,UAAU,GAAqB,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAE5C,MAAM,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEpE,MAAM,SAAS,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QACnC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,MAAM,GAAG,GAAG;YACV,EAAE,EAAE,IAAI;YACR,KAAK;YACL,IAAI;YACJ,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,SAAS,CAAC,KAAK;YACvB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,YAAY;YACrB,WAAW,EAAE,2BAA2B;YACxC,UAAU,EAAE,CAAC,yCAAyC,CAAC;YACvD,UAAU,EAAE,CAAC,6DAA6D,CAAC;YAC3E,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,4BAA4B,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;YACpE,QAAQ,EAAE,cAAc;SACzB,CAAC;QACF,MAAM,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QACtE,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,IAAI,gBAAgB,CAAC,CAAC;IAChG,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IAEnB,MAAM,SAAS,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;QAClC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvC,WAAW,CACT,OAAO,EAAE,MAAM,KAAK,SAAS,CAAC,WAAW,EACzC,OAAO,EACP,YAAY,IAAI,uCAAuC,CACxD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;QACjC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxB,MAAM,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvC,WAAW,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,IAAI,oBAAoB,CAAC,CAAC;IAChG,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QACnC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,MAAM,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;QACvC,WAAW,CACT,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,EACrC,QAAQ,EACR,YAAY,IAAI,qBAAqB,CACtC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QACrD,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC;QAC9E,MAAM,YAAY,GAAG,aAAa;YAChC,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,MAAM,aAAa,CAAC,UAAU,EAAE,MAAM,gBAAgB,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QACxF,WAAW,CACT,YAAY,CAAC,OAAO,CAAC,YAAY,KAAK,CAAC,EACvC,QAAQ,EACR,uDAAuD,YAAY,CAAC,OAAO,CAAC,YAAY,GAAG,CAC5F,CAAC;QACF,OAAO,YAAY,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;IACxB,MAAM,iBAAiB,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IAChG,MAAM,gBAAgB,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,CAAC;IAE1D,WAAW,CACT,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,EACjC,QAAQ,EACR,kDAAkD,IAAI,EAAE,CACzD,CAAC;IACF,WAAW,CACT,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAChC,QAAQ,EACR,iDAAiD,IAAI,EAAE,CACxD,CAAC;IAEF,OAAO;QACL,UAAU;QACV,SAAS;QACT,iBAAiB;QACjB,gBAAgB;KACjB,CAAC;AACJ,CAAC"}