@lumenflow/initiatives 4.21.0 → 4.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/initiative-orchestrator.d.ts +3 -1
- package/dist/initiative-orchestrator.d.ts.map +1 -1
- package/dist/initiative-orchestrator.js +4 -0
- package/dist/initiative-orchestrator.js.map +1 -1
- package/dist/orchestrator/artifacts.d.ts +18 -0
- package/dist/orchestrator/artifacts.d.ts.map +1 -0
- package/dist/orchestrator/artifacts.js +234 -0
- package/dist/orchestrator/artifacts.js.map +1 -0
- package/dist/orchestrator/checkpoint.d.ts +8 -0
- package/dist/orchestrator/checkpoint.d.ts.map +1 -1
- package/dist/orchestrator/checkpoint.js +147 -105
- package/dist/orchestrator/checkpoint.js.map +1 -1
- package/dist/orchestrator/formatting.d.ts.map +1 -1
- package/dist/orchestrator/formatting.js +57 -39
- package/dist/orchestrator/formatting.js.map +1 -1
- package/dist/orchestrator/reconciliation.d.ts +4 -0
- package/dist/orchestrator/reconciliation.d.ts.map +1 -0
- package/dist/orchestrator/reconciliation.js +245 -0
- package/dist/orchestrator/reconciliation.js.map +1 -0
- package/dist/orchestrator/shared.d.ts +4 -0
- package/dist/orchestrator/shared.d.ts.map +1 -1
- package/dist/orchestrator/shared.js +4 -0
- package/dist/orchestrator/shared.js.map +1 -1
- package/dist/orchestrator/types.d.ts +109 -15
- package/dist/orchestrator/types.d.ts.map +1 -1
- package/dist/orchestrator/types.js +15 -1
- package/dist/orchestrator/types.js.map +1 -1
- package/package.json +3 -2
|
@@ -17,13 +17,15 @@
|
|
|
17
17
|
* @see {@link packages/@lumenflow/cli/src/lib/initiative-yaml.ts} - Initiative loading
|
|
18
18
|
* @see {@link packages/@lumenflow/cli/src/lib/dependency-graph.ts} - Dependency graph utilities
|
|
19
19
|
*/
|
|
20
|
-
export type { CheckpointOptions, CheckpointModeResult, AutoCheckpointResult, SkippedWUEntry, DeferredWUEntry, ExecutionPlan, ProgressStats, BottleneckWU,
|
|
20
|
+
export type { CheckpointOptions, CheckpointModeResult, AutoCheckpointResult, SkippedWUEntry, DeferredWUEntry, ExecutionPlan, ProgressStats, BottleneckWU, CheckpointWaveResult, DependencyFilterResult, LockPolicy, LaneConfig, LockPolicyOptions, LaneAvailabilityResult, HandoffFormat, HandoffReceipt, OrchestrationArtifactBundle, OrchestrationExecutionState, OrchestrationActionType, WuExecutionEvidence, OrchestrationNextAction, ReconciledInitiativeWU, InitiativeExecutionSummary, } from './orchestrator/types.js';
|
|
21
21
|
export { LOG_PREFIX } from './orchestrator/shared.js';
|
|
22
22
|
export { buildExecutionPlan, buildExecutionPlanAsync, buildExecutionPlanWithLockPolicy, } from './orchestrator/execution-planning.js';
|
|
23
23
|
export { CHECKPOINT_AUTO_THRESHOLDS, filterByDependencyStamps, shouldAutoEnableCheckpoint, shouldAutoEnableCheckpointAsync, resolveCheckpointMode, resolveCheckpointModeAsync, validateCheckpointFlags, buildCheckpointWave, } from './orchestrator/checkpoint.js';
|
|
24
|
+
export { isXmlCapableClient, renderHandoffArtifact, writeCheckpointArtifacts, writeExecutionPlanArtifacts, } from './orchestrator/artifacts.js';
|
|
24
25
|
export { formatExecutionPlan, generateSpawnCommands, calculateProgress, formatProgress, getBottleneckWUs, formatCheckpointOutput, generateEmbeddedSpawnPrompt, formatTaskInvocationWithEmbeddedSpawn, formatExecutionPlanWithEmbeddedSpawns, } from './orchestrator/formatting.js';
|
|
25
26
|
export { getManifestWUStatus, isWUActuallySpawned, getSpawnCandidatesWithYAMLCheck, } from './orchestrator/spawn-status.js';
|
|
26
27
|
export { getLockPolicyForLane, getLaneAvailability } from './orchestrator/lane-policy.js';
|
|
28
|
+
export { reconcileInitiativeExecution } from './orchestrator/reconciliation.js';
|
|
27
29
|
export { loadInitiativeWUs, loadMultipleInitiatives } from './orchestrator/initiative-loading.js';
|
|
28
30
|
export { analyseScopeShape, formatScopeAdvisory, SCOPE_ADVISORY_THRESHOLDS, type ScopeAdvisory, type ScopeAdvisoryResult, type ScopeAdvisoryType, type ScopeAdvisorySeverity, } from './orchestrator/scope-advisory.js';
|
|
29
31
|
//# sourceMappingURL=initiative-orchestrator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initiative-orchestrator.d.ts","sourceRoot":"","sources":["../src/initiative-orchestrator.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,YAAY,EACV,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,aAAa,EACb,aAAa,EACb,YAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"initiative-orchestrator.d.ts","sourceRoot":"","sources":["../src/initiative-orchestrator.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,YAAY,EACV,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,aAAa,EACb,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,EACtB,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,cAAc,EACd,2BAA2B,EAC3B,2BAA2B,EAC3B,uBAAuB,EACvB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGtD,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,gCAAgC,GACjC,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,0BAA0B,EAC1B,+BAA+B,EAC/B,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,2BAA2B,EAC3B,qCAAqC,EACrC,qCAAqC,GACtC,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,+BAA+B,GAChC,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAG1F,OAAO,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAGhF,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAGlG,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,kCAAkC,CAAC"}
|
|
@@ -6,12 +6,16 @@ export { LOG_PREFIX } from './orchestrator/shared.js';
|
|
|
6
6
|
export { buildExecutionPlan, buildExecutionPlanAsync, buildExecutionPlanWithLockPolicy, } from './orchestrator/execution-planning.js';
|
|
7
7
|
// ── Checkpoint ────────────────────────────────────────────────────────────────
|
|
8
8
|
export { CHECKPOINT_AUTO_THRESHOLDS, filterByDependencyStamps, shouldAutoEnableCheckpoint, shouldAutoEnableCheckpointAsync, resolveCheckpointMode, resolveCheckpointModeAsync, validateCheckpointFlags, buildCheckpointWave, } from './orchestrator/checkpoint.js';
|
|
9
|
+
// ── Durable artifacts ────────────────────────────────────────────────────────
|
|
10
|
+
export { isXmlCapableClient, renderHandoffArtifact, writeCheckpointArtifacts, writeExecutionPlanArtifacts, } from './orchestrator/artifacts.js';
|
|
9
11
|
// ── Formatting ────────────────────────────────────────────────────────────────
|
|
10
12
|
export { formatExecutionPlan, generateSpawnCommands, calculateProgress, formatProgress, getBottleneckWUs, formatCheckpointOutput, generateEmbeddedSpawnPrompt, formatTaskInvocationWithEmbeddedSpawn, formatExecutionPlanWithEmbeddedSpawns, } from './orchestrator/formatting.js';
|
|
11
13
|
// ── Spawn status ──────────────────────────────────────────────────────────────
|
|
12
14
|
export { getManifestWUStatus, isWUActuallySpawned, getSpawnCandidatesWithYAMLCheck, } from './orchestrator/spawn-status.js';
|
|
13
15
|
// ── Lane policy ───────────────────────────────────────────────────────────────
|
|
14
16
|
export { getLockPolicyForLane, getLaneAvailability } from './orchestrator/lane-policy.js';
|
|
17
|
+
// ── Reconciliation / advancement ─────────────────────────────────────────────
|
|
18
|
+
export { reconcileInitiativeExecution } from './orchestrator/reconciliation.js';
|
|
15
19
|
// ── Initiative loading ────────────────────────────────────────────────────────
|
|
16
20
|
export { loadInitiativeWUs, loadMultipleInitiatives } from './orchestrator/initiative-loading.js';
|
|
17
21
|
// ── Scope advisory (WU-2142/WU-2155) ────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initiative-orchestrator.js","sourceRoot":"","sources":["../src/initiative-orchestrator.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC;
|
|
1
|
+
{"version":3,"file":"initiative-orchestrator.js","sourceRoot":"","sources":["../src/initiative-orchestrator.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC;AAiDzC,iFAAiF;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,iFAAiF;AACjF,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,gCAAgC,GACjC,MAAM,sCAAsC,CAAC;AAE9C,iFAAiF;AACjF,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,0BAA0B,EAC1B,+BAA+B,EAC/B,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,8BAA8B,CAAC;AAEtC,gFAAgF;AAChF,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AAErC,iFAAiF;AACjF,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,2BAA2B,EAC3B,qCAAqC,EACrC,qCAAqC,GACtC,MAAM,8BAA8B,CAAC;AAEtC,iFAAiF;AACjF,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,+BAA+B,GAChC,MAAM,gCAAgC,CAAC;AAExC,iFAAiF;AACjF,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAE1F,gFAAgF;AAChF,OAAO,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAEhF,iFAAiF;AACjF,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAElG,+EAA+E;AAC/E,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,GAK1B,MAAM,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type OrchestrationHandoffFormat } from '@lumenflow/control-plane-sdk';
|
|
2
|
+
import type { WUEntry } from '../initiative-yaml.js';
|
|
3
|
+
import type { CheckpointOptions, ExecutionPlan, OrchestrationArtifactBundle } from './types.js';
|
|
4
|
+
interface RenderedHandoffArtifact {
|
|
5
|
+
content: string;
|
|
6
|
+
extension: string;
|
|
7
|
+
format: OrchestrationHandoffFormat;
|
|
8
|
+
}
|
|
9
|
+
interface HandoffWU {
|
|
10
|
+
id: string;
|
|
11
|
+
doc: WUEntry['doc'];
|
|
12
|
+
}
|
|
13
|
+
export declare function isXmlCapableClient(clientName?: string): boolean;
|
|
14
|
+
export declare function renderHandoffArtifact(wu: HandoffWU, clientName?: string): RenderedHandoffArtifact;
|
|
15
|
+
export declare function writeExecutionPlanArtifacts(initId: string, allWUs: WUEntry[], plan: ExecutionPlan, options?: CheckpointOptions): OrchestrationArtifactBundle;
|
|
16
|
+
export declare function writeCheckpointArtifacts(initId: string, allWUs: WUEntry[], selectedWUs: WUEntry[], options?: CheckpointOptions): OrchestrationArtifactBundle;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=artifacts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../../src/orchestrator/artifacts.ts"],"names":[],"mappings":"AAcA,OAAO,EAEL,KAAK,0BAA0B,EAEhC,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAgBhG,UAAU,uBAAuB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,0BAA0B,CAAC;CACpC;AAOD,UAAU,SAAS;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;CACrB;AAQD,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,uBAAuB,CAiBjG;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,EAAE,EACjB,IAAI,EAAE,aAAa,EACnB,OAAO,GAAE,iBAAsB,GAC9B,2BAA2B,CAG7B;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,EAAE,EACjB,WAAW,EAAE,OAAO,EAAE,EACtB,OAAO,GAAE,iBAAsB,GAC9B,2BAA2B,CAO7B"}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
// Copyright (c) 2026 Hellmai Ltd
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* Durable artifact writing for initiative orchestration.
|
|
5
|
+
*
|
|
6
|
+
* WU-2617: Persist plan/launch/status artifacts and per-WU handoff receipts so
|
|
7
|
+
* orchestration can distinguish dependency waves from repeated launch attempts.
|
|
8
|
+
*
|
|
9
|
+
* @module orchestrator/artifacts
|
|
10
|
+
*/
|
|
11
|
+
import { existsSync, mkdirSync, readdirSync, writeFileSync } from 'node:fs';
|
|
12
|
+
import { join } from 'node:path';
|
|
13
|
+
import { ORCHESTRATION_STATUS_VALUES, } from '@lumenflow/control-plane-sdk';
|
|
14
|
+
import { getAllDependencies, ORCHESTRATION_ARTIFACT_DIR } from './shared.js';
|
|
15
|
+
import { generateCodexPrompt, generateTaskInvocation } from '@lumenflow/core/wu-spawn';
|
|
16
|
+
import { SpawnStrategyFactory } from '@lumenflow/core/spawn-strategy';
|
|
17
|
+
const XML_CAPABLE_CLIENTS = new Set(['claude-code', 'claude']);
|
|
18
|
+
const ATTEMPT_PREFIX = 'attempt-';
|
|
19
|
+
const HANDOFFS_DIRNAME = 'handoffs';
|
|
20
|
+
const PLAN_FILENAME = 'plan.json';
|
|
21
|
+
const LAUNCH_FILENAME = 'launch.json';
|
|
22
|
+
const STATUS_FILENAME = 'status.json';
|
|
23
|
+
const MARKDOWN_EXTENSION = 'md';
|
|
24
|
+
const XML_EXTENSION = 'xml';
|
|
25
|
+
const FALLBACK_LOGICAL_WAVE = 0;
|
|
26
|
+
const FALLBACK_ATTEMPT = -1;
|
|
27
|
+
export function isXmlCapableClient(clientName) {
|
|
28
|
+
return clientName !== undefined && XML_CAPABLE_CLIENTS.has(clientName.toLowerCase());
|
|
29
|
+
}
|
|
30
|
+
export function renderHandoffArtifact(wu, clientName) {
|
|
31
|
+
const resolvedClient = clientName || 'generic';
|
|
32
|
+
const strategy = SpawnStrategyFactory.create(resolvedClient);
|
|
33
|
+
if (isXmlCapableClient(resolvedClient)) {
|
|
34
|
+
return {
|
|
35
|
+
content: generateTaskInvocation(wu.doc, wu.id, strategy),
|
|
36
|
+
extension: XML_EXTENSION,
|
|
37
|
+
format: 'xml',
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
content: generateCodexPrompt(wu.doc, wu.id, strategy),
|
|
42
|
+
extension: MARKDOWN_EXTENSION,
|
|
43
|
+
format: 'markdown',
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export function writeExecutionPlanArtifacts(initId, allWUs, plan, options = {}) {
|
|
47
|
+
const waveGroups = plan.waves.map((wus, plannedWave) => ({ plannedWave, wus }));
|
|
48
|
+
return writeOrchestrationAttemptArtifacts(initId, allWUs, waveGroups, options);
|
|
49
|
+
}
|
|
50
|
+
export function writeCheckpointArtifacts(initId, allWUs, selectedWUs, options = {}) {
|
|
51
|
+
return writeOrchestrationAttemptArtifacts(initId, allWUs, [{ plannedWave: 0, wus: selectedWUs }], options);
|
|
52
|
+
}
|
|
53
|
+
function writeOrchestrationAttemptArtifacts(initId, allWUs, waveGroups, options = {}) {
|
|
54
|
+
const { clientName, dryRun = false } = options;
|
|
55
|
+
const executionSummary = options.executionSummary;
|
|
56
|
+
const launchAttempt = getNextLaunchAttempt(initId);
|
|
57
|
+
const artifactDir = join(ORCHESTRATION_ARTIFACT_DIR, initId, `${ATTEMPT_PREFIX}${launchAttempt}`);
|
|
58
|
+
const planPath = join(artifactDir, PLAN_FILENAME);
|
|
59
|
+
const launchPath = join(artifactDir, LAUNCH_FILENAME);
|
|
60
|
+
const statusPath = join(artifactDir, STATUS_FILENAME);
|
|
61
|
+
const handoffDir = join(artifactDir, HANDOFFS_DIRNAME);
|
|
62
|
+
const createdAt = new Date().toISOString();
|
|
63
|
+
const logicalWaveMap = calculateLogicalWaveMap(allWUs);
|
|
64
|
+
const launchableWUs = flattenWaveGroups(waveGroups, logicalWaveMap);
|
|
65
|
+
const logicalWaves = Array.from(new Set(launchableWUs.map((entry) => entry.logicalWave))).sort((left, right) => left - right);
|
|
66
|
+
const handoffReceipts = launchableWUs.map((entry) => createHandoffReceipt(entry, launchAttempt, handoffDir, clientName, createdAt, dryRun));
|
|
67
|
+
if (!dryRun) {
|
|
68
|
+
mkdirSync(handoffDir, { recursive: true });
|
|
69
|
+
for (let index = 0; index < handoffReceipts.length; index++) {
|
|
70
|
+
const receipt = handoffReceipts[index];
|
|
71
|
+
const launchableWU = launchableWUs[index];
|
|
72
|
+
if (!receipt.handoff_artifact_path) {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
const rendered = renderHandoffArtifact(launchableWU.wu, clientName);
|
|
76
|
+
writeFileSync(receipt.handoff_artifact_path, rendered.content, 'utf8');
|
|
77
|
+
}
|
|
78
|
+
const planData = {
|
|
79
|
+
initiative: initId,
|
|
80
|
+
created_at: createdAt,
|
|
81
|
+
launch_attempt: launchAttempt,
|
|
82
|
+
logical_waves: logicalWaves,
|
|
83
|
+
waves: waveGroups.map((group) => {
|
|
84
|
+
const groupEntries = launchableWUs.filter((entry) => entry.plannedWave === group.plannedWave);
|
|
85
|
+
const groupLogicalWaves = Array.from(new Set(groupEntries.map((entry) => entry.logicalWave))).sort((left, right) => left - right);
|
|
86
|
+
return {
|
|
87
|
+
planned_wave: group.plannedWave,
|
|
88
|
+
logical_wave: groupLogicalWaves[0] ?? FALLBACK_LOGICAL_WAVE,
|
|
89
|
+
logical_waves: groupLogicalWaves,
|
|
90
|
+
wus: groupEntries.map((entry) => ({
|
|
91
|
+
id: entry.wu.id,
|
|
92
|
+
lane: entry.wu.doc.lane,
|
|
93
|
+
logical_wave: entry.logicalWave,
|
|
94
|
+
})),
|
|
95
|
+
};
|
|
96
|
+
}),
|
|
97
|
+
};
|
|
98
|
+
const launchData = {
|
|
99
|
+
initiative: initId,
|
|
100
|
+
created_at: createdAt,
|
|
101
|
+
launch_attempt: launchAttempt,
|
|
102
|
+
logical_waves: logicalWaves,
|
|
103
|
+
handoffs: handoffReceipts,
|
|
104
|
+
};
|
|
105
|
+
const statusData = {
|
|
106
|
+
initiative: initId,
|
|
107
|
+
created_at: createdAt,
|
|
108
|
+
launch_attempt: launchAttempt,
|
|
109
|
+
logical_waves: logicalWaves,
|
|
110
|
+
available_capacity: executionSummary?.availableCapacity ?? null,
|
|
111
|
+
max_active_workers: executionSummary?.maxActiveWorkers ?? null,
|
|
112
|
+
blocked_by_integrity: executionSummary?.blockedByIntegrity ?? false,
|
|
113
|
+
next_safe_actions: executionSummary?.nextSafeActions ?? [],
|
|
114
|
+
wus: allWUs.map((wu) => {
|
|
115
|
+
const summaryEntry = executionSummary?.wus.find((entry) => entry.wuId === wu.id);
|
|
116
|
+
const launchableEntry = launchableWUs.find((entry) => entry.wu.id === wu.id);
|
|
117
|
+
const handoffState = handoffReceipts.find((receipt) => receipt.wu_id === wu.id);
|
|
118
|
+
return {
|
|
119
|
+
wu_id: wu.id,
|
|
120
|
+
lane: wu.doc.lane,
|
|
121
|
+
logical_wave: summaryEntry?.logicalWave ?? launchableEntry?.logicalWave ?? FALLBACK_LOGICAL_WAVE,
|
|
122
|
+
orchestration_state: launchableEntry || handoffState
|
|
123
|
+
? ORCHESTRATION_STATUS_VALUES.HANDOFF_EMITTED
|
|
124
|
+
: (summaryEntry?.state ?? ORCHESTRATION_STATUS_VALUES.ELIGIBLE),
|
|
125
|
+
yaml_status: wu.doc.status ?? 'unknown',
|
|
126
|
+
};
|
|
127
|
+
}),
|
|
128
|
+
};
|
|
129
|
+
writeFileSync(planPath, JSON.stringify(planData, null, 2), 'utf8');
|
|
130
|
+
writeFileSync(launchPath, JSON.stringify(launchData, null, 2), 'utf8');
|
|
131
|
+
writeFileSync(statusPath, JSON.stringify(statusData, null, 2), 'utf8');
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
artifactDir,
|
|
135
|
+
planPath,
|
|
136
|
+
launchPath,
|
|
137
|
+
statusPath,
|
|
138
|
+
logicalWaves,
|
|
139
|
+
launchAttempt,
|
|
140
|
+
handoffReceipts,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
function flattenWaveGroups(waveGroups, logicalWaveMap) {
|
|
144
|
+
return waveGroups.flatMap((group) => group.wus.map((wu) => ({
|
|
145
|
+
logicalWave: logicalWaveMap.get(wu.id) ?? FALLBACK_LOGICAL_WAVE,
|
|
146
|
+
plannedWave: group.plannedWave,
|
|
147
|
+
wu,
|
|
148
|
+
})));
|
|
149
|
+
}
|
|
150
|
+
function createHandoffReceipt(entry, launchAttempt, handoffDir, clientName, emittedAt, dryRun) {
|
|
151
|
+
const rendered = renderHandoffArtifact(entry.wu, clientName);
|
|
152
|
+
const handoffArtifactPath = join(handoffDir, `${entry.wu.id}.${rendered.extension}`);
|
|
153
|
+
if (!dryRun && !existsSync(handoffDir)) {
|
|
154
|
+
mkdirSync(handoffDir, { recursive: true });
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
wu_id: entry.wu.id,
|
|
158
|
+
lane: entry.wu.doc.lane,
|
|
159
|
+
logical_wave: entry.logicalWave,
|
|
160
|
+
launch_attempt: launchAttempt,
|
|
161
|
+
handoff_artifact_path: handoffArtifactPath,
|
|
162
|
+
handoff_format: rendered.format,
|
|
163
|
+
orchestration_state: ORCHESTRATION_STATUS_VALUES.HANDOFF_EMITTED,
|
|
164
|
+
emitted_at: emittedAt,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
function calculateLogicalWaveMap(wus) {
|
|
168
|
+
const logicalWaveMap = new Map();
|
|
169
|
+
const allWuIds = new Set(wus.map((wu) => wu.id));
|
|
170
|
+
const adjacency = new Map();
|
|
171
|
+
const inDegree = new Map();
|
|
172
|
+
for (const wu of wus) {
|
|
173
|
+
adjacency.set(wu.id, []);
|
|
174
|
+
inDegree.set(wu.id, 0);
|
|
175
|
+
}
|
|
176
|
+
for (const wu of wus) {
|
|
177
|
+
const internalDeps = getAllDependencies(wu.doc).filter((depId) => allWuIds.has(depId));
|
|
178
|
+
inDegree.set(wu.id, internalDeps.length);
|
|
179
|
+
for (const depId of internalDeps) {
|
|
180
|
+
const dependants = adjacency.get(depId);
|
|
181
|
+
if (dependants) {
|
|
182
|
+
dependants.push(wu.id);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
const queue = Array.from(inDegree.entries())
|
|
187
|
+
.filter(([, degree]) => degree === 0)
|
|
188
|
+
.map(([wuId]) => wuId)
|
|
189
|
+
.sort();
|
|
190
|
+
for (const wuId of queue) {
|
|
191
|
+
logicalWaveMap.set(wuId, FALLBACK_LOGICAL_WAVE);
|
|
192
|
+
}
|
|
193
|
+
while (queue.length > 0) {
|
|
194
|
+
const currentId = queue.shift();
|
|
195
|
+
if (!currentId) {
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
const currentWave = logicalWaveMap.get(currentId) ?? FALLBACK_LOGICAL_WAVE;
|
|
199
|
+
const dependants = adjacency.get(currentId) ?? [];
|
|
200
|
+
for (const dependantId of dependants) {
|
|
201
|
+
const nextWave = currentWave + 1;
|
|
202
|
+
logicalWaveMap.set(dependantId, Math.max(logicalWaveMap.get(dependantId) ?? 0, nextWave));
|
|
203
|
+
const remainingDegree = (inDegree.get(dependantId) ?? 1) - 1;
|
|
204
|
+
inDegree.set(dependantId, remainingDegree);
|
|
205
|
+
if (remainingDegree === 0) {
|
|
206
|
+
queue.push(dependantId);
|
|
207
|
+
queue.sort();
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
for (const wu of wus) {
|
|
212
|
+
if (!logicalWaveMap.has(wu.id)) {
|
|
213
|
+
logicalWaveMap.set(wu.id, FALLBACK_LOGICAL_WAVE);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return logicalWaveMap;
|
|
217
|
+
}
|
|
218
|
+
function getNextLaunchAttempt(initId) {
|
|
219
|
+
const attemptDirsPath = join(ORCHESTRATION_ARTIFACT_DIR, initId);
|
|
220
|
+
let maxAttempt = FALLBACK_ATTEMPT;
|
|
221
|
+
if (existsSync(attemptDirsPath)) {
|
|
222
|
+
for (const entry of readdirSync(attemptDirsPath, { withFileTypes: true })) {
|
|
223
|
+
if (!entry.isDirectory() || !entry.name.startsWith(ATTEMPT_PREFIX)) {
|
|
224
|
+
continue;
|
|
225
|
+
}
|
|
226
|
+
const parsed = Number.parseInt(entry.name.slice(ATTEMPT_PREFIX.length), 10);
|
|
227
|
+
if (!Number.isNaN(parsed)) {
|
|
228
|
+
maxAttempt = Math.max(maxAttempt, parsed);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return maxAttempt + 1;
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=artifacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../src/orchestrator/artifacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Checkpoint mode management for initiative orchestration.
|
|
3
|
+
*
|
|
4
|
+
* WU-1821: Implements checkpoint-per-wave pattern for context management.
|
|
5
|
+
* Handles wave manifest creation, auto-detection thresholds, and mode resolution.
|
|
6
|
+
*
|
|
7
|
+
* @module orchestrator/checkpoint
|
|
8
|
+
*/
|
|
1
9
|
import type { WUEntry } from '../initiative-yaml.js';
|
|
2
10
|
import type { CheckpointOptions, CheckpointModeResult, AutoCheckpointResult, CheckpointWaveResult, DependencyFilterResult } from './types.js';
|
|
3
11
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../src/orchestrator/checkpoint.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../src/orchestrator/checkpoint.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAMrD,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAUpB;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B;IACrC,6EAA6E;;IAE7E,uEAAuE;;CAExE,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,sBAAsB,CAqCtF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,oBAAoB,CA6C/E;AAED;;;;;GAKG;AACH,wBAAsB,+BAA+B,CACnD,GAAG,EAAE,OAAO,EAAE,GACb,OAAO,CAAC,oBAAoB,CAAC,CA6C/B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,OAAO,EAAE,GACb,oBAAoB,CAqCtB;AAED;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,OAAO,EAAE,GACb,OAAO,CAAC,oBAAoB,CAAC,CAqC/B;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAmBxE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,iBAAsB,GAC9B,oBAAoB,GAAG,IAAI,CA4N7B"}
|