@lumenflow/core 2.2.2 → 2.3.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/active-wu-detector.d.ts +1 -1
- package/dist/active-wu-detector.js +1 -1
- package/dist/arg-parser.js +51 -18
- package/dist/backlog-generator.d.ts +4 -4
- package/dist/backlog-generator.js +4 -4
- package/dist/backlog-sync-validator.js +1 -1
- package/dist/cleanup-lock.d.ts +9 -2
- package/dist/cleanup-lock.js +17 -7
- package/dist/code-path-validator.d.ts +3 -3
- package/dist/code-path-validator.js +3 -3
- package/dist/compliance-parser.d.ts +1 -1
- package/dist/compliance-parser.js +1 -1
- package/dist/constants/backlog-patterns.d.ts +1 -1
- package/dist/constants/backlog-patterns.js +1 -1
- package/dist/constants/dora-constants.d.ts +1 -1
- package/dist/constants/dora-constants.js +1 -1
- package/dist/constants/gate-constants.d.ts +1 -1
- package/dist/constants/gate-constants.js +1 -1
- package/dist/constants/linter-constants.d.ts +1 -1
- package/dist/constants/linter-constants.js +1 -1
- package/dist/constants/tokenizer-constants.d.ts +1 -1
- package/dist/constants/tokenizer-constants.js +1 -1
- package/dist/context/location-resolver.js +2 -1
- package/dist/context-validation-integration.d.ts +1 -0
- package/dist/core/scope-checker.d.ts +3 -3
- package/dist/core/scope-checker.js +3 -3
- package/dist/core/tool-runner.d.ts +5 -5
- package/dist/core/tool-runner.js +5 -5
- package/dist/core/tool.constants.d.ts +1 -1
- package/dist/core/tool.constants.js +1 -1
- package/dist/core/tool.schemas.d.ts +2 -2
- package/dist/core/tool.schemas.js +1 -1
- package/dist/core/worktree-guard.d.ts +1 -1
- package/dist/core/worktree-guard.js +1 -1
- package/dist/coverage-gate.d.ts +12 -3
- package/dist/coverage-gate.js +15 -8
- package/dist/date-utils.d.ts +4 -4
- package/dist/date-utils.js +4 -4
- package/dist/dependency-graph.d.ts +6 -0
- package/dist/dependency-graph.js +43 -2
- package/dist/dependency-guard.d.ts +2 -2
- package/dist/dependency-guard.js +3 -3
- package/dist/dependency-validator.d.ts +4 -4
- package/dist/dependency-validator.js +4 -7
- package/dist/domain/orchestration.constants.d.ts +31 -10
- package/dist/domain/orchestration.constants.js +45 -16
- package/dist/domain/orchestration.schemas.d.ts +54 -28
- package/dist/domain/orchestration.schemas.js +2 -2
- package/dist/domain/orchestration.types.d.ts +2 -2
- package/dist/domain/orchestration.types.js +2 -2
- package/dist/error-handler.d.ts +10 -10
- package/dist/error-handler.js +10 -10
- package/dist/file-classifiers.d.ts +6 -6
- package/dist/file-classifiers.js +6 -6
- package/dist/gates-config.d.ts +74 -0
- package/dist/gates-config.js +209 -2
- package/dist/git-adapter.d.ts +11 -11
- package/dist/git-adapter.js +11 -11
- package/dist/git-context-extractor.d.ts +112 -0
- package/dist/git-context-extractor.js +559 -0
- package/dist/hardcoded-strings.d.ts +1 -1
- package/dist/hardcoded-strings.js +1 -1
- package/dist/incremental-lint.d.ts +1 -1
- package/dist/incremental-lint.js +2 -2
- package/dist/incremental-test.d.ts +1 -1
- package/dist/incremental-test.js +1 -1
- package/dist/index.d.ts +13 -0
- package/dist/index.js +25 -0
- package/dist/invariants/check-automated-tests.d.ts +2 -2
- package/dist/invariants/check-automated-tests.js +3 -3
- package/dist/lane-checker.d.ts +28 -7
- package/dist/lane-checker.js +316 -159
- package/dist/lane-suggest-prompt.d.ts +108 -0
- package/dist/lane-suggest-prompt.js +359 -0
- package/dist/lane-validator.d.ts +3 -3
- package/dist/lane-validator.js +3 -3
- package/dist/logs-lib.d.ts +1 -1
- package/dist/logs-lib.js +1 -1
- package/dist/lumenflow-config-schema.d.ts +162 -0
- package/dist/lumenflow-config-schema.js +180 -0
- package/dist/manual-test-validator.d.ts +2 -2
- package/dist/manual-test-validator.js +3 -3
- package/dist/merge-lock.d.ts +8 -1
- package/dist/merge-lock.js +16 -7
- package/dist/micro-worktree.d.ts +81 -13
- package/dist/micro-worktree.js +98 -17
- package/dist/migration-deployer.d.ts +1 -1
- package/dist/migration-deployer.js +1 -1
- package/dist/orchestration-advisory-loader.d.ts +2 -2
- package/dist/orchestration-advisory-loader.js +10 -6
- package/dist/orchestration-advisory.d.ts +3 -3
- package/dist/orchestration-advisory.js +4 -4
- package/dist/orchestration-di.d.ts +4 -4
- package/dist/orchestration-di.js +4 -4
- package/dist/orchestration-rules.d.ts +4 -4
- package/dist/orchestration-rules.js +18 -10
- package/dist/orphan-detector.d.ts +3 -3
- package/dist/orphan-detector.js +3 -3
- package/dist/patrol-loop.d.ts +170 -0
- package/dist/patrol-loop.js +186 -0
- package/dist/process-detector.d.ts +5 -5
- package/dist/process-detector.js +5 -5
- package/dist/rebase-artifact-cleanup.d.ts +3 -3
- package/dist/rebase-artifact-cleanup.js +3 -3
- package/dist/resolve-policy.d.ts +195 -0
- package/dist/resolve-policy.js +203 -0
- package/dist/risk-detector.d.ts +2 -2
- package/dist/risk-detector.js +2 -2
- package/dist/rollback-utils.d.ts +1 -1
- package/dist/rollback-utils.js +1 -1
- package/dist/section-headings.d.ts +1 -1
- package/dist/section-headings.js +1 -1
- package/dist/spawn-escalation.d.ts +4 -4
- package/dist/spawn-escalation.js +3 -3
- package/dist/spawn-monitor.d.ts +4 -4
- package/dist/spawn-monitor.js +4 -4
- package/dist/spawn-recovery.d.ts +3 -3
- package/dist/spawn-recovery.js +3 -3
- package/dist/spawn-registry-schema.d.ts +2 -2
- package/dist/spawn-registry-schema.js +2 -2
- package/dist/spawn-registry-store.d.ts +2 -2
- package/dist/spawn-registry-store.js +2 -2
- package/dist/spawn-strategy.d.ts +17 -11
- package/dist/spawn-strategy.js +47 -44
- package/dist/spawn-tree.d.ts +3 -3
- package/dist/spawn-tree.js +3 -3
- package/dist/state-cleanup-core.d.ts +205 -0
- package/dist/state-cleanup-core.js +240 -0
- package/dist/state-doctor-core.d.ts +168 -0
- package/dist/state-doctor-core.js +251 -0
- package/dist/stream-error-handler.d.ts +67 -0
- package/dist/stream-error-handler.js +94 -0
- package/dist/telemetry.d.ts +1 -1
- package/dist/telemetry.js +1 -1
- package/dist/template-loader.d.ts +162 -0
- package/dist/template-loader.js +372 -0
- package/dist/test-baseline.d.ts +176 -0
- package/dist/test-baseline.js +282 -0
- package/dist/usecases/get-suggestions.usecase.d.ts +1 -1
- package/dist/validation/command-registry.js +37 -0
- package/dist/validators/backlog-sync.js +4 -2
- package/dist/worktree-scanner.d.ts +1 -1
- package/dist/worktree-scanner.js +1 -1
- package/dist/worktree-symlink.d.ts +3 -3
- package/dist/worktree-symlink.js +3 -3
- package/dist/wu-backlog-updater.d.ts +1 -1
- package/dist/wu-backlog-updater.js +1 -1
- package/dist/wu-claim-helpers.d.ts +1 -1
- package/dist/wu-claim-helpers.js +1 -1
- package/dist/wu-claim-resume.d.ts +1 -1
- package/dist/wu-claim-resume.js +1 -1
- package/dist/wu-consistency-checker.d.ts +1 -1
- package/dist/wu-consistency-checker.js +17 -11
- package/dist/wu-constants.d.ts +73 -21
- package/dist/wu-constants.js +65 -22
- package/dist/wu-done-branch-only.d.ts +1 -1
- package/dist/wu-done-branch-only.js +1 -1
- package/dist/wu-done-docs-generate.d.ts +1 -1
- package/dist/wu-done-docs-generate.js +1 -1
- package/dist/wu-done-messages.d.ts +2 -2
- package/dist/wu-done-messages.js +2 -2
- package/dist/wu-done-metadata.d.ts +3 -3
- package/dist/wu-done-metadata.js +3 -3
- package/dist/wu-done-pr.d.ts +1 -1
- package/dist/wu-done-pr.js +4 -2
- package/dist/wu-done-preflight.d.ts +8 -0
- package/dist/wu-done-preflight.js +18 -2
- package/dist/wu-done-ui.d.ts +3 -3
- package/dist/wu-done-ui.js +3 -3
- package/dist/wu-done-validation.d.ts +30 -0
- package/dist/wu-done-validation.js +106 -1
- package/dist/wu-done-worktree.d.ts +1 -1
- package/dist/wu-done-worktree.js +11 -1
- package/dist/wu-events-cleanup.d.ts +148 -0
- package/dist/wu-events-cleanup.js +401 -0
- package/dist/wu-helpers.d.ts +2 -2
- package/dist/wu-helpers.js +2 -2
- package/dist/wu-id-generator.d.ts +58 -0
- package/dist/wu-id-generator.js +103 -0
- package/dist/wu-lint.js +1 -1
- package/dist/wu-preflight-validators.d.ts +13 -1
- package/dist/wu-preflight-validators.js +56 -1
- package/dist/wu-recovery.d.ts +2 -2
- package/dist/wu-recovery.js +4 -4
- package/dist/wu-repair-core.d.ts +5 -5
- package/dist/wu-repair-core.js +6 -6
- package/dist/wu-schema-normalization.d.ts +1 -1
- package/dist/wu-schema-normalization.js +1 -1
- package/dist/wu-schema.d.ts +7 -7
- package/dist/wu-schema.js +8 -8
- package/dist/wu-spawn-context.d.ts +87 -0
- package/dist/wu-spawn-context.js +175 -0
- package/dist/wu-spawn-helpers.d.ts +1 -1
- package/dist/wu-spawn-helpers.js +1 -1
- package/dist/wu-spawn.d.ts +177 -4
- package/dist/wu-spawn.js +694 -72
- package/dist/wu-state-schema.d.ts +1 -1
- package/dist/wu-state-schema.js +1 -1
- package/dist/wu-state-store.d.ts +3 -3
- package/dist/wu-state-store.js +3 -3
- package/dist/wu-status-transition.d.ts +1 -1
- package/dist/wu-status-transition.js +1 -1
- package/dist/wu-status-updater.d.ts +3 -3
- package/dist/wu-status-updater.js +3 -3
- package/dist/wu-validation-constants.d.ts +2 -2
- package/dist/wu-validation-constants.js +2 -2
- package/dist/wu-validation.d.ts +3 -3
- package/dist/wu-validation.js +3 -3
- package/dist/wu-yaml-fixer.d.ts +2 -2
- package/dist/wu-yaml-fixer.js +3 -3
- package/dist/wu-yaml.d.ts +23 -0
- package/dist/wu-yaml.js +76 -2
- package/package.json +5 -2
package/dist/coverage-gate.d.ts
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* - warn: Log failures but don't block (default)
|
|
10
10
|
* - block: Fail the gate if thresholds not met
|
|
11
11
|
*
|
|
12
|
-
* @see {@link
|
|
12
|
+
* @see {@link packages/@lumenflow/cli/src/gates.ts} - Integration point
|
|
13
13
|
* @see {@link vitest.config.ts} - Coverage thresholds
|
|
14
14
|
*/
|
|
15
15
|
/**
|
|
@@ -33,7 +33,9 @@ export declare const COVERAGE_GATE_MODES: Readonly<{
|
|
|
33
33
|
*/
|
|
34
34
|
export declare const HEX_CORE_PATTERNS: readonly string[];
|
|
35
35
|
/**
|
|
36
|
-
*
|
|
36
|
+
* Default coverage threshold for hex core files (percentage)
|
|
37
|
+
* WU-1262: This constant is kept for backwards compatibility.
|
|
38
|
+
* The actual threshold is now determined by resolveCoverageConfig() based on methodology.
|
|
37
39
|
* @constant {number}
|
|
38
40
|
*/
|
|
39
41
|
export declare const COVERAGE_THRESHOLD = 90;
|
|
@@ -66,9 +68,10 @@ export declare function parseCoverageJson(coveragePath: any): {
|
|
|
66
68
|
* Check if coverage meets thresholds for hex core files.
|
|
67
69
|
*
|
|
68
70
|
* @param {object|null} coverageData - Parsed coverage data
|
|
71
|
+
* @param {number} [threshold] - Coverage threshold to use (defaults to COVERAGE_THRESHOLD)
|
|
69
72
|
* @returns {{ pass: boolean, failures: Array<{ file: string, actual: number, threshold: number, metric: string }> }}
|
|
70
73
|
*/
|
|
71
|
-
export declare function checkCoverageThresholds(coverageData: any): {
|
|
74
|
+
export declare function checkCoverageThresholds(coverageData: any, threshold?: number): {
|
|
72
75
|
pass: boolean;
|
|
73
76
|
failures: any[];
|
|
74
77
|
};
|
|
@@ -95,6 +98,12 @@ export interface CoverageGateOptions {
|
|
|
95
98
|
coveragePath?: string;
|
|
96
99
|
/** Logger for output */
|
|
97
100
|
logger?: CoverageGateLogger;
|
|
101
|
+
/**
|
|
102
|
+
* WU-1262: Coverage threshold override (0-100).
|
|
103
|
+
* When provided, overrides the default COVERAGE_THRESHOLD constant.
|
|
104
|
+
* This is typically populated from resolveCoverageConfig().
|
|
105
|
+
*/
|
|
106
|
+
threshold?: number;
|
|
98
107
|
}
|
|
99
108
|
/**
|
|
100
109
|
* Run coverage gate.
|
package/dist/coverage-gate.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* - warn: Log failures but don't block (default)
|
|
10
10
|
* - block: Fail the gate if thresholds not met
|
|
11
11
|
*
|
|
12
|
-
* @see {@link
|
|
12
|
+
* @see {@link packages/@lumenflow/cli/src/gates.ts} - Integration point
|
|
13
13
|
* @see {@link vitest.config.ts} - Coverage thresholds
|
|
14
14
|
*/
|
|
15
15
|
/* eslint-disable security/detect-non-literal-fs-filename, security/detect-object-injection */
|
|
@@ -39,7 +39,9 @@ export const HEX_CORE_PATTERNS = Object.freeze([
|
|
|
39
39
|
'packages/@lumenflow/cli/',
|
|
40
40
|
]);
|
|
41
41
|
/**
|
|
42
|
-
*
|
|
42
|
+
* Default coverage threshold for hex core files (percentage)
|
|
43
|
+
* WU-1262: This constant is kept for backwards compatibility.
|
|
44
|
+
* The actual threshold is now determined by resolveCoverageConfig() based on methodology.
|
|
43
45
|
* @constant {number}
|
|
44
46
|
*/
|
|
45
47
|
export const COVERAGE_THRESHOLD = 90;
|
|
@@ -98,12 +100,15 @@ export function parseCoverageJson(coveragePath) {
|
|
|
98
100
|
* Check if coverage meets thresholds for hex core files.
|
|
99
101
|
*
|
|
100
102
|
* @param {object|null} coverageData - Parsed coverage data
|
|
103
|
+
* @param {number} [threshold] - Coverage threshold to use (defaults to COVERAGE_THRESHOLD)
|
|
101
104
|
* @returns {{ pass: boolean, failures: Array<{ file: string, actual: number, threshold: number, metric: string }> }}
|
|
102
105
|
*/
|
|
103
|
-
export function checkCoverageThresholds(coverageData) {
|
|
106
|
+
export function checkCoverageThresholds(coverageData, threshold) {
|
|
104
107
|
if (!coverageData || !coverageData.files) {
|
|
105
108
|
return { pass: true, failures: [] };
|
|
106
109
|
}
|
|
110
|
+
// WU-1262: Use provided threshold or fall back to constant
|
|
111
|
+
const effectiveThreshold = threshold ?? COVERAGE_THRESHOLD;
|
|
107
112
|
const failures = [];
|
|
108
113
|
for (const [file, metricsValue] of Object.entries(coverageData.files)) {
|
|
109
114
|
if (!isHexCoreFile(file)) {
|
|
@@ -112,11 +117,11 @@ export function checkCoverageThresholds(coverageData) {
|
|
|
112
117
|
// Check lines coverage (primary metric)
|
|
113
118
|
const metrics = metricsValue;
|
|
114
119
|
const linesCoverage = metrics.lines?.pct ?? 0;
|
|
115
|
-
if (linesCoverage <
|
|
120
|
+
if (linesCoverage < effectiveThreshold) {
|
|
116
121
|
failures.push({
|
|
117
122
|
file,
|
|
118
123
|
actual: linesCoverage,
|
|
119
|
-
threshold:
|
|
124
|
+
threshold: effectiveThreshold,
|
|
120
125
|
metric: 'lines',
|
|
121
126
|
});
|
|
122
127
|
}
|
|
@@ -164,6 +169,8 @@ export async function runCoverageGate(options = {}) {
|
|
|
164
169
|
const mode = options.mode || COVERAGE_GATE_MODES.WARN;
|
|
165
170
|
const coveragePath = options.coveragePath || DEFAULT_COVERAGE_PATH;
|
|
166
171
|
const logger = options.logger && typeof options.logger.log === 'function' ? options.logger : console;
|
|
172
|
+
// WU-1262: Use provided threshold or default constant
|
|
173
|
+
const threshold = options.threshold ?? COVERAGE_THRESHOLD;
|
|
167
174
|
// Parse coverage data
|
|
168
175
|
const coverageData = parseCoverageJson(coveragePath);
|
|
169
176
|
if (!coverageData) {
|
|
@@ -172,14 +179,14 @@ export async function runCoverageGate(options = {}) {
|
|
|
172
179
|
logger.log(' Run tests with coverage first: pnpm test:coverage\n');
|
|
173
180
|
return { ok: true, mode, duration, message: 'No coverage data' };
|
|
174
181
|
}
|
|
175
|
-
// Check thresholds
|
|
176
|
-
const { pass, failures } = checkCoverageThresholds(coverageData);
|
|
182
|
+
// Check thresholds (WU-1262: pass resolved threshold)
|
|
183
|
+
const { pass, failures } = checkCoverageThresholds(coverageData, threshold);
|
|
177
184
|
// Format and display
|
|
178
185
|
const output = formatCoverageDelta(coverageData);
|
|
179
186
|
logger.log(output);
|
|
180
187
|
const duration = Date.now() - start;
|
|
181
188
|
if (!pass) {
|
|
182
|
-
logger.log(`\n${EMOJI.FAILURE} Coverage below ${
|
|
189
|
+
logger.log(`\n${EMOJI.FAILURE} Coverage below ${threshold}% for hex core files:`);
|
|
183
190
|
for (const failure of failures) {
|
|
184
191
|
const shortFile = failure.file.replace('packages/@lumenflow/', '');
|
|
185
192
|
logger.log(` - ${shortFile}: ${failure.actual.toFixed(1)}% (requires ${failure.threshold}%)`);
|
package/dist/date-utils.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @file date-utils.
|
|
2
|
+
* @file date-utils.ts
|
|
3
3
|
* @description Date formatting utilities using date-fns library
|
|
4
4
|
* WU-1082: Extract shared utilities (eliminate date formatting duplication)
|
|
5
5
|
*
|
|
6
6
|
* Replaces manual date formatting in:
|
|
7
|
-
* - tools/wu-block.
|
|
8
|
-
* - tools/wu-unblock.
|
|
9
|
-
* - tools/wu-done.
|
|
7
|
+
* - tools/wu-block.ts (todayISO)
|
|
8
|
+
* - tools/wu-unblock.ts (todayISO)
|
|
9
|
+
* - tools/wu-done.ts (todayISO - already uses date-fns)
|
|
10
10
|
*/
|
|
11
11
|
/**
|
|
12
12
|
* Get current date in ISO format (YYYY-MM-DD)
|
package/dist/date-utils.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @file date-utils.
|
|
2
|
+
* @file date-utils.ts
|
|
3
3
|
* @description Date formatting utilities using date-fns library
|
|
4
4
|
* WU-1082: Extract shared utilities (eliminate date formatting duplication)
|
|
5
5
|
*
|
|
6
6
|
* Replaces manual date formatting in:
|
|
7
|
-
* - tools/wu-block.
|
|
8
|
-
* - tools/wu-unblock.
|
|
9
|
-
* - tools/wu-done.
|
|
7
|
+
* - tools/wu-block.ts (todayISO)
|
|
8
|
+
* - tools/wu-unblock.ts (todayISO)
|
|
9
|
+
* - tools/wu-done.ts (todayISO - already uses date-fns)
|
|
10
10
|
*/
|
|
11
11
|
import { format } from 'date-fns';
|
|
12
12
|
/**
|
|
@@ -24,6 +24,12 @@
|
|
|
24
24
|
* @returns {Map<string, {id: string, title: string, status: string, blocks: string[], blockedBy: string[]}>}
|
|
25
25
|
*/
|
|
26
26
|
export declare function buildDependencyGraph(): Map<any, any>;
|
|
27
|
+
/**
|
|
28
|
+
* Build a dependency graph from all WU YAML files asynchronously.
|
|
29
|
+
*
|
|
30
|
+
* @returns {Promise<Map<string, {id: string, title: string, status: string, blocks: string[], blockedBy: string[]}>>}
|
|
31
|
+
*/
|
|
32
|
+
export declare function buildDependencyGraphAsync(): Promise<Map<any, any>>;
|
|
27
33
|
/**
|
|
28
34
|
* Get all dependencies (upstream: blocked_by) for a WU.
|
|
29
35
|
*
|
package/dist/dependency-graph.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { existsSync, readdirSync } from 'node:fs';
|
|
1
|
+
import { existsSync, readdirSync, promises as fs } from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
import { readWU } from './wu-yaml.js';
|
|
3
|
+
import { readWU, readWUAsync } from './wu-yaml.js';
|
|
4
4
|
import { WU_PATHS } from './wu-paths.js';
|
|
5
5
|
import { STRING_LITERALS, WU_STATUS } from './wu-constants.js';
|
|
6
6
|
import { detectCycles } from './cycle-detector.js';
|
|
@@ -55,6 +55,47 @@ export function buildDependencyGraph() {
|
|
|
55
55
|
}
|
|
56
56
|
return graph;
|
|
57
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Build a dependency graph from all WU YAML files asynchronously.
|
|
60
|
+
*
|
|
61
|
+
* @returns {Promise<Map<string, {id: string, title: string, status: string, blocks: string[], blockedBy: string[]}>>}
|
|
62
|
+
*/
|
|
63
|
+
export async function buildDependencyGraphAsync() {
|
|
64
|
+
const wuDir = path.dirname(WU_PATHS.WU('dummy'));
|
|
65
|
+
const graph = new Map();
|
|
66
|
+
try {
|
|
67
|
+
const files = await fs.readdir(wuDir);
|
|
68
|
+
const yamlFiles = files.filter((f) => f.endsWith('.yaml') && f.startsWith('WU-'));
|
|
69
|
+
const promises = yamlFiles.map(async (f) => {
|
|
70
|
+
const filePath = path.join(wuDir, f);
|
|
71
|
+
const id = f.replace('.yaml', '');
|
|
72
|
+
try {
|
|
73
|
+
const doc = await readWUAsync(filePath, id);
|
|
74
|
+
return {
|
|
75
|
+
id,
|
|
76
|
+
title: doc.title || id,
|
|
77
|
+
status: doc.status || 'unknown',
|
|
78
|
+
blocks: Array.isArray(doc.blocks) ? doc.blocks : [],
|
|
79
|
+
blockedBy: Array.isArray(doc.blocked_by) ? doc.blocked_by : [],
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
// Skip invalid files
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
const results = await Promise.all(promises);
|
|
88
|
+
for (const result of results) {
|
|
89
|
+
if (result) {
|
|
90
|
+
graph.set(result.id, result);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// Return empty graph if dir doesn't exist or other error
|
|
96
|
+
}
|
|
97
|
+
return graph;
|
|
98
|
+
}
|
|
58
99
|
/**
|
|
59
100
|
* Get all dependencies (upstream: blocked_by) for a WU.
|
|
60
101
|
*
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* - deps:add and deps:remove wrapper commands
|
|
10
10
|
*
|
|
11
11
|
* @see {@link .claude/hooks/pre-tool-use-hook.sh} - PreToolUse hook
|
|
12
|
-
* @see {@link
|
|
13
|
-
* @see {@link
|
|
12
|
+
* @see {@link packages/@lumenflow/cli/src/deps-add.ts} - Safe wrapper for pnpm add
|
|
13
|
+
* @see {@link packages/@lumenflow/cli/src/deps-remove.ts} - Safe wrapper for pnpm remove
|
|
14
14
|
*/
|
|
15
15
|
/**
|
|
16
16
|
* pnpm subcommands that mutate dependencies.
|
package/dist/dependency-guard.js
CHANGED
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* - deps:add and deps:remove wrapper commands
|
|
10
10
|
*
|
|
11
11
|
* @see {@link .claude/hooks/pre-tool-use-hook.sh} - PreToolUse hook
|
|
12
|
-
* @see {@link
|
|
13
|
-
* @see {@link
|
|
12
|
+
* @see {@link packages/@lumenflow/cli/src/deps-add.ts} - Safe wrapper for pnpm add
|
|
13
|
+
* @see {@link packages/@lumenflow/cli/src/deps-remove.ts} - Safe wrapper for pnpm remove
|
|
14
14
|
*/
|
|
15
15
|
import { EMOJI } from './wu-constants.js';
|
|
16
16
|
/**
|
|
@@ -133,7 +133,7 @@ The safe wrapper (${wrapperCommand}) enforces worktree context
|
|
|
133
133
|
and runs the underlying pnpm command with proper isolation.
|
|
134
134
|
|
|
135
135
|
See: CLAUDE.md section 2 'Daily Operating Loop'
|
|
136
|
-
See:
|
|
136
|
+
See: https://lumenflow.dev/reference/lumenflow-complete/
|
|
137
137
|
`;
|
|
138
138
|
}
|
|
139
139
|
/**
|
|
@@ -48,7 +48,7 @@ export declare const TOOL_DEPENDENCIES: Readonly<{
|
|
|
48
48
|
*/
|
|
49
49
|
export declare function validateDependencies(packages: any): Promise<{
|
|
50
50
|
valid: boolean;
|
|
51
|
-
missing: any
|
|
51
|
+
missing: any;
|
|
52
52
|
}>;
|
|
53
53
|
/**
|
|
54
54
|
* Format an error message for missing dependencies.
|
|
@@ -72,7 +72,7 @@ export declare function formatDependencyError(toolName: any, missing: any): stri
|
|
|
72
72
|
*/
|
|
73
73
|
export declare function validateSpawnDependencies(): Promise<{
|
|
74
74
|
valid: boolean;
|
|
75
|
-
missing: any
|
|
75
|
+
missing: any;
|
|
76
76
|
}>;
|
|
77
77
|
/**
|
|
78
78
|
* Validate dependencies for mem:inbox.
|
|
@@ -83,7 +83,7 @@ export declare function validateSpawnDependencies(): Promise<{
|
|
|
83
83
|
*/
|
|
84
84
|
export declare function validateInboxDependencies(): Promise<{
|
|
85
85
|
valid: boolean;
|
|
86
|
-
missing: any
|
|
86
|
+
missing: any;
|
|
87
87
|
}>;
|
|
88
88
|
/**
|
|
89
89
|
* Validate dependencies for a specific tool.
|
|
@@ -101,5 +101,5 @@ export declare function validateInboxDependencies(): Promise<{
|
|
|
101
101
|
export declare function validateToolDependencies(toolName: any): Promise<{
|
|
102
102
|
toolName: any;
|
|
103
103
|
valid: boolean;
|
|
104
|
-
missing: any
|
|
104
|
+
missing: any;
|
|
105
105
|
}>;
|
|
@@ -69,13 +69,10 @@ export async function validateDependencies(packages) {
|
|
|
69
69
|
if (!packages || packages.length === 0) {
|
|
70
70
|
return { valid: true, missing: [] };
|
|
71
71
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
missing.push(pkg);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
72
|
+
// WU-1231: Validate packages in parallel using Promise.all
|
|
73
|
+
// Previously sequential (for...of await) caused 5+ minute delays
|
|
74
|
+
const results = await Promise.all(packages.map((pkg) => canImport(pkg)));
|
|
75
|
+
const missing = packages.filter((_, index) => !results[index]);
|
|
79
76
|
return {
|
|
80
77
|
valid: missing.length === 0,
|
|
81
78
|
missing,
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* Avoids magic numbers and hardcoded strings throughout the orchestration layer.
|
|
6
6
|
*
|
|
7
7
|
* @module orchestration.constants
|
|
8
|
-
* @see {@link ../ports/dashboard-renderer.port.
|
|
9
|
-
* @see {@link ../ports/metrics-collector.port.
|
|
8
|
+
* @see {@link ../ports/dashboard-renderer.port.ts} - Uses these constants
|
|
9
|
+
* @see {@link ../ports/metrics-collector.port.ts} - Uses these constants
|
|
10
10
|
*/
|
|
11
11
|
/**
|
|
12
12
|
* Total number of Definition of Done checkpoints.
|
|
@@ -16,15 +16,21 @@ export declare const DOD_TOTAL = 11;
|
|
|
16
16
|
/**
|
|
17
17
|
* Valid lane names in the LumenFlow system.
|
|
18
18
|
* Used for type-safe lane validation.
|
|
19
|
+
*
|
|
20
|
+
* Note: This should match the lanes defined in .lumenflow.config.yaml.
|
|
21
|
+
* These are LumenFlow framework lanes, not application-specific lanes.
|
|
19
22
|
*/
|
|
20
|
-
export declare const LANES: readonly ["
|
|
23
|
+
export declare const LANES: readonly ["Framework: Core", "Framework: CLI", "Framework: Memory", "Framework: Agent", "Framework: Metrics", "Framework: Initiatives", "Framework: Shims", "Operations: Infrastructure", "Operations: CI/CD", "Content: Documentation"];
|
|
21
24
|
/** Type for valid lane names */
|
|
22
25
|
export type Lane = (typeof LANES)[number];
|
|
23
26
|
/**
|
|
24
27
|
* Known agent names in the orchestration system.
|
|
25
28
|
* Includes both mandatory (Tier 1) and suggested (Tier 2) agents.
|
|
29
|
+
*
|
|
30
|
+
* Note: These are LumenFlow framework agents defined in .claude/agents/.
|
|
31
|
+
* Application-specific agents should be configured separately.
|
|
26
32
|
*/
|
|
27
|
-
export declare const AGENT_NAMES: readonly ["
|
|
33
|
+
export declare const AGENT_NAMES: readonly ["general-purpose", "lumenflow-pm", "test-engineer", "code-reviewer", "bug-triage", "lumenflow-enforcer", "lumenflow-doc-sync"];
|
|
28
34
|
/** Type for agent names */
|
|
29
35
|
export type AgentName = (typeof AGENT_NAMES)[number];
|
|
30
36
|
/**
|
|
@@ -70,21 +76,36 @@ export declare const USER_CHOICE_OPTIONS: readonly ["approve", "reject", "edit"]
|
|
|
70
76
|
export type UserChoiceOption = (typeof USER_CHOICE_OPTIONS)[number];
|
|
71
77
|
/**
|
|
72
78
|
* Mandatory agent names (subset of AGENT_NAMES)
|
|
79
|
+
*
|
|
80
|
+
* Note: For LumenFlow framework development, mandatory agents are not currently
|
|
81
|
+
* enforced since this is a workflow framework, not an application with PHI/auth concerns.
|
|
82
|
+
* Projects using LumenFlow can define their own mandatory agents in their config.
|
|
83
|
+
*
|
|
84
|
+
* The test-engineer and code-reviewer agents are suggested but not mandatory.
|
|
73
85
|
*/
|
|
74
|
-
export declare const MANDATORY_AGENT_NAMES: readonly [
|
|
86
|
+
export declare const MANDATORY_AGENT_NAMES: readonly [];
|
|
75
87
|
/** Type for mandatory agent names */
|
|
76
88
|
export type MandatoryAgentName = (typeof MANDATORY_AGENT_NAMES)[number];
|
|
77
89
|
/**
|
|
78
90
|
* Mandatory agent triggers - glob patterns that indicate when agents must be invoked.
|
|
79
91
|
* Uses minimatch patterns (NOT regex) for file path matching.
|
|
80
92
|
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
93
|
+
* Note: For LumenFlow framework development, this is empty since we don't have
|
|
94
|
+
* application-specific concerns like PHI, auth, or RLS. Projects using LumenFlow
|
|
95
|
+
* should configure their own triggers based on their domain requirements.
|
|
96
|
+
*
|
|
97
|
+
* Example application-specific triggers (configure in your project):
|
|
98
|
+
* - security-auditor: supabase/migrations/**, auth/**, rls/**
|
|
99
|
+
* - beacon-guardian: prompts/**, llm/**
|
|
100
|
+
*
|
|
101
|
+
* Usage:
|
|
102
|
+
* ```typescript
|
|
83
103
|
* import { minimatch } from 'minimatch';
|
|
84
|
-
* const triggers = MANDATORY_TRIGGERS['
|
|
85
|
-
* const shouldTrigger = triggers
|
|
104
|
+
* const triggers = MANDATORY_TRIGGERS['my-agent'];
|
|
105
|
+
* const shouldTrigger = triggers?.some(pattern => minimatch(filePath, pattern));
|
|
106
|
+
* ```
|
|
86
107
|
*/
|
|
87
|
-
export declare const MANDATORY_TRIGGERS: Record<
|
|
108
|
+
export declare const MANDATORY_TRIGGERS: Record<string, readonly string[]>;
|
|
88
109
|
/**
|
|
89
110
|
* File system paths for metrics collection.
|
|
90
111
|
* Used by FileSystemMetricsCollector to avoid hardcoded strings.
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* Avoids magic numbers and hardcoded strings throughout the orchestration layer.
|
|
6
6
|
*
|
|
7
7
|
* @module orchestration.constants
|
|
8
|
-
* @see {@link ../ports/dashboard-renderer.port.
|
|
9
|
-
* @see {@link ../ports/metrics-collector.port.
|
|
8
|
+
* @see {@link ../ports/dashboard-renderer.port.ts} - Uses these constants
|
|
9
|
+
* @see {@link ../ports/metrics-collector.port.ts} - Uses these constants
|
|
10
10
|
*/
|
|
11
11
|
/**
|
|
12
12
|
* Total number of Definition of Done checkpoints.
|
|
@@ -16,23 +16,37 @@ export const DOD_TOTAL = 11;
|
|
|
16
16
|
/**
|
|
17
17
|
* Valid lane names in the LumenFlow system.
|
|
18
18
|
* Used for type-safe lane validation.
|
|
19
|
+
*
|
|
20
|
+
* Note: This should match the lanes defined in .lumenflow.config.yaml.
|
|
21
|
+
* These are LumenFlow framework lanes, not application-specific lanes.
|
|
19
22
|
*/
|
|
20
23
|
export const LANES = [
|
|
21
|
-
'
|
|
22
|
-
'
|
|
23
|
-
'
|
|
24
|
-
'
|
|
25
|
-
'
|
|
24
|
+
'Framework: Core',
|
|
25
|
+
'Framework: CLI',
|
|
26
|
+
'Framework: Memory',
|
|
27
|
+
'Framework: Agent',
|
|
28
|
+
'Framework: Metrics',
|
|
29
|
+
'Framework: Initiatives',
|
|
30
|
+
'Framework: Shims',
|
|
31
|
+
'Operations: Infrastructure',
|
|
32
|
+
'Operations: CI/CD',
|
|
33
|
+
'Content: Documentation',
|
|
26
34
|
];
|
|
27
35
|
/**
|
|
28
36
|
* Known agent names in the orchestration system.
|
|
29
37
|
* Includes both mandatory (Tier 1) and suggested (Tier 2) agents.
|
|
38
|
+
*
|
|
39
|
+
* Note: These are LumenFlow framework agents defined in .claude/agents/.
|
|
40
|
+
* Application-specific agents should be configured separately.
|
|
30
41
|
*/
|
|
31
42
|
export const AGENT_NAMES = [
|
|
32
|
-
'
|
|
33
|
-
'
|
|
43
|
+
'general-purpose',
|
|
44
|
+
'lumenflow-pm',
|
|
34
45
|
'test-engineer',
|
|
35
46
|
'code-reviewer',
|
|
47
|
+
'bug-triage',
|
|
48
|
+
'lumenflow-enforcer',
|
|
49
|
+
'lumenflow-doc-sync',
|
|
36
50
|
];
|
|
37
51
|
/**
|
|
38
52
|
* Alert severity levels for dashboard display.
|
|
@@ -67,21 +81,36 @@ export const EVENT_SEVERITY_LEVELS = ['info', 'warning', 'error'];
|
|
|
67
81
|
export const USER_CHOICE_OPTIONS = ['approve', 'reject', 'edit'];
|
|
68
82
|
/**
|
|
69
83
|
* Mandatory agent names (subset of AGENT_NAMES)
|
|
84
|
+
*
|
|
85
|
+
* Note: For LumenFlow framework development, mandatory agents are not currently
|
|
86
|
+
* enforced since this is a workflow framework, not an application with PHI/auth concerns.
|
|
87
|
+
* Projects using LumenFlow can define their own mandatory agents in their config.
|
|
88
|
+
*
|
|
89
|
+
* The test-engineer and code-reviewer agents are suggested but not mandatory.
|
|
70
90
|
*/
|
|
71
|
-
export const MANDATORY_AGENT_NAMES = [
|
|
91
|
+
export const MANDATORY_AGENT_NAMES = [];
|
|
72
92
|
/**
|
|
73
93
|
* Mandatory agent triggers - glob patterns that indicate when agents must be invoked.
|
|
74
94
|
* Uses minimatch patterns (NOT regex) for file path matching.
|
|
75
95
|
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
96
|
+
* Note: For LumenFlow framework development, this is empty since we don't have
|
|
97
|
+
* application-specific concerns like PHI, auth, or RLS. Projects using LumenFlow
|
|
98
|
+
* should configure their own triggers based on their domain requirements.
|
|
99
|
+
*
|
|
100
|
+
* Example application-specific triggers (configure in your project):
|
|
101
|
+
* - security-auditor: supabase/migrations/**, auth/**, rls/**
|
|
102
|
+
* - beacon-guardian: prompts/**, llm/**
|
|
103
|
+
*
|
|
104
|
+
* Usage:
|
|
105
|
+
* ```typescript
|
|
78
106
|
* import { minimatch } from 'minimatch';
|
|
79
|
-
* const triggers = MANDATORY_TRIGGERS['
|
|
80
|
-
* const shouldTrigger = triggers
|
|
107
|
+
* const triggers = MANDATORY_TRIGGERS['my-agent'];
|
|
108
|
+
* const shouldTrigger = triggers?.some(pattern => minimatch(filePath, pattern));
|
|
109
|
+
* ```
|
|
81
110
|
*/
|
|
82
111
|
export const MANDATORY_TRIGGERS = {
|
|
83
|
-
|
|
84
|
-
|
|
112
|
+
// No mandatory triggers for LumenFlow framework development.
|
|
113
|
+
// Projects should configure their own triggers based on their domain.
|
|
85
114
|
};
|
|
86
115
|
/**
|
|
87
116
|
* File system paths for metrics collection.
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* Single source of truth - types are inferred from these schemas.
|
|
6
6
|
*
|
|
7
7
|
* @module orchestration.schemas
|
|
8
|
-
* @see {@link ./orchestration.types.
|
|
9
|
-
* @see {@link ./orchestration.constants.
|
|
8
|
+
* @see {@link ./orchestration.types.ts} - Types inferred from these schemas
|
|
9
|
+
* @see {@link ./orchestration.constants.ts} - Constants used in validation
|
|
10
10
|
*/
|
|
11
11
|
import { z } from 'zod';
|
|
12
12
|
/**
|
|
@@ -21,21 +21,29 @@ export declare const GlobalStatusSchema: z.ZodObject<{
|
|
|
21
21
|
longestRunning: z.ZodNullable<z.ZodObject<{
|
|
22
22
|
wuId: z.ZodString;
|
|
23
23
|
lane: z.ZodEnum<{
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
"
|
|
28
|
-
|
|
24
|
+
"Framework: Core": "Framework: Core";
|
|
25
|
+
"Framework: CLI": "Framework: CLI";
|
|
26
|
+
"Framework: Memory": "Framework: Memory";
|
|
27
|
+
"Framework: Agent": "Framework: Agent";
|
|
28
|
+
"Framework: Metrics": "Framework: Metrics";
|
|
29
|
+
"Framework: Initiatives": "Framework: Initiatives";
|
|
30
|
+
"Framework: Shims": "Framework: Shims";
|
|
31
|
+
"Operations: Infrastructure": "Operations: Infrastructure";
|
|
32
|
+
"Operations: CI/CD": "Operations: CI/CD";
|
|
33
|
+
"Content: Documentation": "Content: Documentation";
|
|
29
34
|
}>;
|
|
30
35
|
durationMs: z.ZodNumber;
|
|
31
36
|
}, z.core.$strip>>;
|
|
32
37
|
pendingMandatory: z.ZodArray<z.ZodObject<{
|
|
33
38
|
wuId: z.ZodString;
|
|
34
39
|
agent: z.ZodEnum<{
|
|
35
|
-
"
|
|
36
|
-
"
|
|
40
|
+
"general-purpose": "general-purpose";
|
|
41
|
+
"lumenflow-pm": "lumenflow-pm";
|
|
37
42
|
"test-engineer": "test-engineer";
|
|
38
43
|
"code-reviewer": "code-reviewer";
|
|
44
|
+
"bug-triage": "bug-triage";
|
|
45
|
+
"lumenflow-enforcer": "lumenflow-enforcer";
|
|
46
|
+
"lumenflow-doc-sync": "lumenflow-doc-sync";
|
|
39
47
|
}>;
|
|
40
48
|
}, z.core.$strip>>;
|
|
41
49
|
activeSession: z.ZodNullable<z.ZodObject<{
|
|
@@ -76,11 +84,16 @@ export declare const AgentMetricSchema: z.ZodObject<{
|
|
|
76
84
|
export declare const WUProgressSchema: z.ZodObject<{
|
|
77
85
|
wuId: z.ZodString;
|
|
78
86
|
lane: z.ZodEnum<{
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
"
|
|
83
|
-
|
|
87
|
+
"Framework: Core": "Framework: Core";
|
|
88
|
+
"Framework: CLI": "Framework: CLI";
|
|
89
|
+
"Framework: Memory": "Framework: Memory";
|
|
90
|
+
"Framework: Agent": "Framework: Agent";
|
|
91
|
+
"Framework: Metrics": "Framework: Metrics";
|
|
92
|
+
"Framework: Initiatives": "Framework: Initiatives";
|
|
93
|
+
"Framework: Shims": "Framework: Shims";
|
|
94
|
+
"Operations: Infrastructure": "Operations: Infrastructure";
|
|
95
|
+
"Operations: CI/CD": "Operations: CI/CD";
|
|
96
|
+
"Content: Documentation": "Content: Documentation";
|
|
84
97
|
}>;
|
|
85
98
|
title: z.ZodString;
|
|
86
99
|
dodProgress: z.ZodNumber;
|
|
@@ -102,8 +115,8 @@ export declare const TimelineEventSchema: z.ZodObject<{
|
|
|
102
115
|
event: z.ZodEnum<{
|
|
103
116
|
done: "done";
|
|
104
117
|
gates: "gates";
|
|
105
|
-
agent: "agent";
|
|
106
118
|
block: "block";
|
|
119
|
+
agent: "agent";
|
|
107
120
|
claim: "claim";
|
|
108
121
|
}>;
|
|
109
122
|
wuId: z.ZodString;
|
|
@@ -186,21 +199,29 @@ export declare const DashboardDataSchema: z.ZodObject<{
|
|
|
186
199
|
longestRunning: z.ZodNullable<z.ZodObject<{
|
|
187
200
|
wuId: z.ZodString;
|
|
188
201
|
lane: z.ZodEnum<{
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
"
|
|
193
|
-
|
|
202
|
+
"Framework: Core": "Framework: Core";
|
|
203
|
+
"Framework: CLI": "Framework: CLI";
|
|
204
|
+
"Framework: Memory": "Framework: Memory";
|
|
205
|
+
"Framework: Agent": "Framework: Agent";
|
|
206
|
+
"Framework: Metrics": "Framework: Metrics";
|
|
207
|
+
"Framework: Initiatives": "Framework: Initiatives";
|
|
208
|
+
"Framework: Shims": "Framework: Shims";
|
|
209
|
+
"Operations: Infrastructure": "Operations: Infrastructure";
|
|
210
|
+
"Operations: CI/CD": "Operations: CI/CD";
|
|
211
|
+
"Content: Documentation": "Content: Documentation";
|
|
194
212
|
}>;
|
|
195
213
|
durationMs: z.ZodNumber;
|
|
196
214
|
}, z.core.$strip>>;
|
|
197
215
|
pendingMandatory: z.ZodArray<z.ZodObject<{
|
|
198
216
|
wuId: z.ZodString;
|
|
199
217
|
agent: z.ZodEnum<{
|
|
200
|
-
"
|
|
201
|
-
"
|
|
218
|
+
"general-purpose": "general-purpose";
|
|
219
|
+
"lumenflow-pm": "lumenflow-pm";
|
|
202
220
|
"test-engineer": "test-engineer";
|
|
203
221
|
"code-reviewer": "code-reviewer";
|
|
222
|
+
"bug-triage": "bug-triage";
|
|
223
|
+
"lumenflow-enforcer": "lumenflow-enforcer";
|
|
224
|
+
"lumenflow-doc-sync": "lumenflow-doc-sync";
|
|
204
225
|
}>;
|
|
205
226
|
}, z.core.$strip>>;
|
|
206
227
|
activeSession: z.ZodNullable<z.ZodObject<{
|
|
@@ -233,11 +254,16 @@ export declare const DashboardDataSchema: z.ZodObject<{
|
|
|
233
254
|
wuProgress: z.ZodArray<z.ZodObject<{
|
|
234
255
|
wuId: z.ZodString;
|
|
235
256
|
lane: z.ZodEnum<{
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
"
|
|
240
|
-
|
|
257
|
+
"Framework: Core": "Framework: Core";
|
|
258
|
+
"Framework: CLI": "Framework: CLI";
|
|
259
|
+
"Framework: Memory": "Framework: Memory";
|
|
260
|
+
"Framework: Agent": "Framework: Agent";
|
|
261
|
+
"Framework: Metrics": "Framework: Metrics";
|
|
262
|
+
"Framework: Initiatives": "Framework: Initiatives";
|
|
263
|
+
"Framework: Shims": "Framework: Shims";
|
|
264
|
+
"Operations: Infrastructure": "Operations: Infrastructure";
|
|
265
|
+
"Operations: CI/CD": "Operations: CI/CD";
|
|
266
|
+
"Content: Documentation": "Content: Documentation";
|
|
241
267
|
}>;
|
|
242
268
|
title: z.ZodString;
|
|
243
269
|
dodProgress: z.ZodNumber;
|
|
@@ -255,8 +281,8 @@ export declare const DashboardDataSchema: z.ZodObject<{
|
|
|
255
281
|
event: z.ZodEnum<{
|
|
256
282
|
done: "done";
|
|
257
283
|
gates: "gates";
|
|
258
|
-
agent: "agent";
|
|
259
284
|
block: "block";
|
|
285
|
+
agent: "agent";
|
|
260
286
|
claim: "claim";
|
|
261
287
|
}>;
|
|
262
288
|
wuId: z.ZodString;
|