@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.
- package/dist/agent-issues-query.js.map +1 -0
- package/dist/agent-log-issue.js.map +1 -0
- package/dist/agent-session-end.js.map +1 -0
- package/dist/agent-session.js.map +1 -0
- package/dist/backlog-prune.js.map +1 -0
- package/dist/cli-entry-point.js +139 -0
- package/dist/cli-entry-point.js.map +1 -0
- package/dist/commands/integrate.js.map +1 -0
- package/dist/commands.js.map +1 -0
- package/dist/config-get.js.map +1 -0
- package/dist/config-set.js.map +1 -0
- package/dist/constants.js +98 -0
- package/dist/constants.js.map +1 -0
- package/dist/delegation-list.js.map +1 -0
- package/dist/deps-add.js +259 -0
- package/dist/deps-add.js.map +1 -0
- package/dist/deps-remove.js +105 -0
- package/dist/deps-remove.js.map +1 -0
- package/dist/docs-sync.js.map +1 -0
- package/dist/doctor.js.map +1 -0
- package/dist/file-delete.js.map +1 -0
- package/dist/file-edit.js.map +1 -0
- package/dist/file-read.js.map +1 -0
- package/dist/file-write.js.map +1 -0
- package/dist/flow-bottlenecks.js.map +1 -0
- package/dist/flow-report.js.map +1 -0
- package/dist/formatters.js +151 -0
- package/dist/formatters.js.map +1 -0
- package/dist/gate-defaults.js +137 -0
- package/dist/gate-defaults.js.map +1 -0
- package/dist/gate-registry.js +73 -0
- package/dist/gate-registry.js.map +1 -0
- package/dist/gates-graceful-degradation.js +153 -0
- package/dist/gates-graceful-degradation.js.map +1 -0
- package/dist/gates-plan-resolvers.js +190 -0
- package/dist/gates-plan-resolvers.js.map +1 -0
- package/dist/gates-runners.js +545 -0
- package/dist/gates-runners.js.map +1 -0
- package/dist/gates-types.js +4 -0
- package/dist/gates-types.js.map +1 -0
- package/dist/gates-utils.js +333 -0
- package/dist/gates-utils.js.map +1 -0
- package/dist/gates.js.map +1 -0
- package/dist/git-branch.js.map +1 -0
- package/dist/git-diff.js.map +1 -0
- package/dist/git-log.js.map +1 -0
- package/dist/git-status.js.map +1 -0
- package/dist/guard-locked.js +172 -0
- package/dist/guard-locked.js.map +1 -0
- package/dist/guard-main-branch.js +217 -0
- package/dist/guard-main-branch.js.map +1 -0
- package/dist/guard-worktree-commit.js +163 -0
- package/dist/guard-worktree-commit.js.map +1 -0
- package/dist/hooks/auto-checkpoint-utils.js +54 -0
- package/dist/hooks/auto-checkpoint-utils.js.map +1 -0
- package/dist/hooks/enforcement-checks.js +399 -0
- package/dist/hooks/enforcement-checks.js.map +1 -0
- package/dist/hooks/enforcement-generator.js +139 -0
- package/dist/hooks/enforcement-generator.js.map +1 -0
- package/dist/hooks/enforcement-sync.js +380 -0
- package/dist/hooks/enforcement-sync.js.map +1 -0
- package/dist/hooks/generators/auto-checkpoint.js +125 -0
- package/dist/hooks/generators/auto-checkpoint.js.map +1 -0
- package/dist/hooks/generators/enforce-worktree.js +190 -0
- package/dist/hooks/generators/enforce-worktree.js.map +1 -0
- package/dist/hooks/generators/index.js +18 -0
- package/dist/hooks/generators/index.js.map +1 -0
- package/dist/hooks/generators/pre-compact-checkpoint.js +136 -0
- package/dist/hooks/generators/pre-compact-checkpoint.js.map +1 -0
- package/dist/hooks/generators/require-wu.js +117 -0
- package/dist/hooks/generators/require-wu.js.map +1 -0
- package/dist/hooks/generators/session-start-recovery.js +103 -0
- package/dist/hooks/generators/session-start-recovery.js.map +1 -0
- package/dist/hooks/generators/signal-utils.js +54 -0
- package/dist/hooks/generators/signal-utils.js.map +1 -0
- package/dist/hooks/generators/warn-incomplete.js +67 -0
- package/dist/hooks/generators/warn-incomplete.js.map +1 -0
- package/dist/hooks/index.js +10 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/index.js.map +1 -0
- package/dist/init-detection.js +232 -0
- package/dist/init-detection.js.map +1 -0
- package/dist/init-lane-validation.js +147 -0
- package/dist/init-lane-validation.js.map +1 -0
- package/dist/init-scaffolding.js +158 -0
- package/dist/init-scaffolding.js.map +1 -0
- package/dist/init-templates.js +1983 -0
- package/dist/init-templates.js.map +1 -0
- package/dist/init.js.map +1 -0
- package/dist/initiative-add-wu.js.map +1 -0
- package/dist/initiative-bulk-assign-wus.js.map +1 -0
- package/dist/initiative-create.js.map +1 -0
- package/dist/initiative-edit.js.map +1 -0
- package/dist/initiative-list.js.map +1 -0
- package/dist/initiative-plan.js.map +1 -0
- package/dist/initiative-remove-wu.js.map +1 -0
- package/dist/initiative-status.js.map +1 -0
- package/dist/lane-edit.js.map +1 -0
- package/dist/lane-health.js.map +1 -0
- package/dist/lane-lifecycle-process.js +381 -0
- package/dist/lane-lifecycle-process.js.map +1 -0
- package/dist/lane-lock.js.map +1 -0
- package/dist/lane-setup.js.map +1 -0
- package/dist/lane-status.js.map +1 -0
- package/dist/lane-suggest.js.map +1 -0
- package/dist/lane-validate.js.map +1 -0
- package/dist/lifecycle-regression-harness.js +181 -0
- package/dist/lifecycle-regression-harness.js.map +1 -0
- package/dist/lumenflow-upgrade.js +18 -10
- package/dist/lumenflow-upgrade.js.map +1 -0
- package/dist/mem-checkpoint.js.map +1 -0
- package/dist/mem-cleanup.js.map +1 -0
- package/dist/mem-context.js.map +1 -0
- package/dist/mem-create.js.map +1 -0
- package/dist/mem-delete.js.map +1 -0
- package/dist/mem-export.js.map +1 -0
- package/dist/mem-inbox.js.map +1 -0
- package/dist/mem-index.js +214 -0
- package/dist/mem-index.js.map +1 -0
- package/dist/mem-init.js.map +1 -0
- package/dist/mem-profile.js +210 -0
- package/dist/mem-profile.js.map +1 -0
- package/dist/mem-promote.js +257 -0
- package/dist/mem-promote.js.map +1 -0
- package/dist/mem-ready.js.map +1 -0
- package/dist/mem-recover.js.map +1 -0
- package/dist/mem-signal.js.map +1 -0
- package/dist/mem-start.js.map +1 -0
- package/dist/mem-summarize.js.map +1 -0
- package/dist/mem-triage.js.map +1 -0
- package/dist/merge-block.js +225 -0
- package/dist/merge-block.js.map +1 -0
- package/dist/metrics-cli.js.map +1 -0
- package/dist/metrics-snapshot.js.map +1 -0
- package/dist/object-guards.js +9 -0
- package/dist/object-guards.js.map +1 -0
- package/dist/onboard.js.map +1 -0
- package/dist/onboarding-smoke-test.js +432 -0
- package/dist/onboarding-smoke-test.js.map +1 -0
- package/dist/orchestrate-init-status.js.map +1 -0
- package/dist/orchestrate-initiative.js.map +1 -0
- package/dist/orchestrate-monitor.js.map +1 -0
- package/dist/pack-author.js.map +1 -0
- package/dist/pack-hash.js.map +1 -0
- package/dist/pack-install.js.map +1 -0
- package/dist/pack-publish.js.map +1 -0
- package/dist/pack-scaffold.js.map +1 -0
- package/dist/pack-search.js.map +1 -0
- package/dist/pack-validate.js.map +1 -0
- package/dist/plan-create.js.map +1 -0
- package/dist/plan-edit.js.map +1 -0
- package/dist/plan-link.js.map +1 -0
- package/dist/plan-promote.js.map +1 -0
- package/dist/public-manifest.js +931 -0
- package/dist/public-manifest.js.map +1 -0
- package/dist/release.js +664 -116
- package/dist/release.js.map +1 -0
- package/dist/rotate-progress.js +253 -0
- package/dist/rotate-progress.js.map +1 -0
- package/dist/session-coordinator.js +303 -0
- package/dist/session-coordinator.js.map +1 -0
- package/dist/shared-validators.js +81 -0
- package/dist/shared-validators.js.map +1 -0
- package/dist/signal-cleanup.js.map +1 -0
- package/dist/state-bootstrap.js.map +1 -0
- package/dist/state-cleanup.js.map +1 -0
- package/dist/state-doctor-fix.js +226 -0
- package/dist/state-doctor-fix.js.map +1 -0
- package/dist/state-doctor-stamps.js +23 -0
- package/dist/state-doctor-stamps.js.map +1 -0
- package/dist/state-doctor.js.map +1 -0
- package/dist/strict-progress.js +255 -0
- package/dist/strict-progress.js.map +1 -0
- package/dist/sync-templates.js.map +1 -0
- package/dist/task-claim.js.map +1 -0
- package/dist/trace-gen.js +401 -0
- package/dist/trace-gen.js.map +1 -0
- package/dist/validate-agent-skills.js +224 -0
- package/dist/validate-agent-skills.js.map +1 -0
- package/dist/validate-agent-sync.js +152 -0
- package/dist/validate-agent-sync.js.map +1 -0
- package/dist/validate-backlog-sync.js +77 -0
- package/dist/validate-backlog-sync.js.map +1 -0
- package/dist/validate-skills-spec.js +211 -0
- package/dist/validate-skills-spec.js.map +1 -0
- package/dist/validate.js.map +1 -0
- package/dist/validator-defaults.js +107 -0
- package/dist/validator-defaults.js.map +1 -0
- package/dist/validator-registry.js +71 -0
- package/dist/validator-registry.js.map +1 -0
- package/dist/workspace-init.js.map +1 -0
- package/dist/wu-block.js.map +1 -0
- package/dist/wu-brief.js.map +1 -0
- package/dist/wu-claim-branch.js +123 -0
- package/dist/wu-claim-branch.js.map +1 -0
- package/dist/wu-claim-cloud.js +79 -0
- package/dist/wu-claim-cloud.js.map +1 -0
- package/dist/wu-claim-mode.js +82 -0
- package/dist/wu-claim-mode.js.map +1 -0
- package/dist/wu-claim-output.js +85 -0
- package/dist/wu-claim-output.js.map +1 -0
- package/dist/wu-claim-repair-guidance.js +12 -0
- package/dist/wu-claim-repair-guidance.js.map +1 -0
- package/dist/wu-claim-resume-handler.js +87 -0
- package/dist/wu-claim-resume-handler.js.map +1 -0
- package/dist/wu-claim-state.js +581 -0
- package/dist/wu-claim-state.js.map +1 -0
- package/dist/wu-claim-validation.js +458 -0
- package/dist/wu-claim-validation.js.map +1 -0
- package/dist/wu-claim-worktree.js +238 -0
- package/dist/wu-claim-worktree.js.map +1 -0
- package/dist/wu-claim.js.map +1 -0
- package/dist/wu-cleanup-cloud.js +78 -0
- package/dist/wu-cleanup-cloud.js.map +1 -0
- package/dist/wu-cleanup.js.map +1 -0
- package/dist/wu-code-path-coverage.js +83 -0
- package/dist/wu-code-path-coverage.js.map +1 -0
- package/dist/wu-create-cloud.js +30 -0
- package/dist/wu-create-cloud.js.map +1 -0
- package/dist/wu-create-content.js +264 -0
- package/dist/wu-create-content.js.map +1 -0
- package/dist/wu-create-readiness.js +59 -0
- package/dist/wu-create-readiness.js.map +1 -0
- package/dist/wu-create-validation.js +128 -0
- package/dist/wu-create-validation.js.map +1 -0
- package/dist/wu-create.js.map +1 -0
- package/dist/wu-delegate.js.map +1 -0
- package/dist/wu-delete.js.map +1 -0
- package/dist/wu-deps.js.map +1 -0
- package/dist/wu-done-auto-cleanup.js +194 -0
- package/dist/wu-done-auto-cleanup.js.map +1 -0
- package/dist/wu-done-check.js +38 -0
- package/dist/wu-done-check.js.map +1 -0
- package/dist/wu-done-cloud.js +48 -0
- package/dist/wu-done-cloud.js.map +1 -0
- package/dist/wu-done-decay.js +83 -0
- package/dist/wu-done-decay.js.map +1 -0
- package/dist/wu-done.js.map +1 -0
- package/dist/wu-edit-operations.js +399 -0
- package/dist/wu-edit-operations.js.map +1 -0
- package/dist/wu-edit-validators.js +282 -0
- package/dist/wu-edit-validators.js.map +1 -0
- package/dist/wu-edit.js.map +1 -0
- package/dist/wu-infer-lane.js.map +1 -0
- package/dist/wu-preflight.js.map +1 -0
- package/dist/wu-prep.js.map +1 -0
- package/dist/wu-proto.js.map +1 -0
- package/dist/wu-prune.js.map +1 -0
- package/dist/wu-recover.js.map +1 -0
- package/dist/wu-release.js.map +1 -0
- package/dist/wu-repair.js.map +1 -0
- package/dist/wu-sandbox.js.map +1 -0
- package/dist/wu-spawn-completion.js +58 -0
- package/dist/wu-spawn-completion.js.map +1 -0
- package/dist/wu-spawn-prompt-builders.js +1190 -0
- package/dist/wu-spawn-prompt-builders.js.map +1 -0
- package/dist/wu-spawn-strategy-resolver.js +322 -0
- package/dist/wu-spawn-strategy-resolver.js.map +1 -0
- package/dist/wu-spawn.js +59 -0
- package/dist/wu-spawn.js.map +1 -0
- package/dist/wu-state-cloud.js +41 -0
- package/dist/wu-state-cloud.js.map +1 -0
- package/dist/wu-status.js.map +1 -0
- package/dist/wu-unblock.js.map +1 -0
- package/dist/wu-unlock-lane.js.map +1 -0
- package/dist/wu-validate.js.map +1 -0
- 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":"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"}
|
|
@@ -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":";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,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,8BAA8B,EAC9B,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,MAAM,UAAU,GAAG,cAAc,CAAC;AAClC,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAEnD,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,uCAAuC;IACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEjD,MAAM,MAAM,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC;IAErD,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,2BAA2B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAErE,IAAI,MAAM,CAAC,kBAAkB,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,4BAA4B,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CACT,OAAO,0BAA0B,KAAK,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,gCAAgC,EAAE,CAC1I,CAAC;QACF,OAAO,CAAC,GAAG,CACT,OAAO,YAAY,CAAC,cAAc,KAAK,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,6BAA6B,EAAE,CAC5H,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CACT,GAAG,UAAU,uEAAuE,CACrF,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,UAAU,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;gBAC1C,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,QAAQ,OAAO,EAAE,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,IAAI,UAAU,CAAC,kBAAkB,IAAI,UAAU,CAAC,gBAAgB,EAAE,CAAC;YACjE,GAAG,CAAC,GAAG,UAAU,kEAAkE,CAAC,CAAC;QACvF,CAAC;QACD,sBAAsB,CAAC,WAAW,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,kDAAkD,CAAC,CAAC;QAC7E,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,8BAA8B,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,oBAAoB,qBAAqB,EAAE,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,oBAAoB,QAAQ,EAAE,CAAC,CAAC;AAC3D,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-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":"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"}
|