@dewtech/dare-cli 2.2.0 → 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/README.md +46 -27
- package/dist/__tests__/dag-runner/graph-ingest.test.d.ts +2 -0
- package/dist/__tests__/dag-runner/graph-ingest.test.d.ts.map +1 -0
- package/dist/__tests__/dag-runner/graph-ingest.test.js +116 -0
- package/dist/__tests__/dag-runner/graph-ingest.test.js.map +1 -0
- package/dist/__tests__/dag-runner/orchestrator.test.d.ts +2 -0
- package/dist/__tests__/dag-runner/orchestrator.test.d.ts.map +1 -0
- package/dist/__tests__/dag-runner/orchestrator.test.js +107 -0
- package/dist/__tests__/dag-runner/orchestrator.test.js.map +1 -0
- package/dist/__tests__/dag-runner/utils.test.js +0 -28
- package/dist/__tests__/dag-runner/utils.test.js.map +1 -1
- package/dist/__tests__/graphrag/json-graph.test.d.ts +2 -0
- package/dist/__tests__/graphrag/json-graph.test.d.ts.map +1 -0
- package/dist/__tests__/graphrag/json-graph.test.js +57 -0
- package/dist/__tests__/graphrag/json-graph.test.js.map +1 -0
- package/dist/bin/dare.js +2 -0
- package/dist/bin/dare.js.map +1 -1
- package/dist/commands/execute.d.ts.map +1 -1
- package/dist/commands/execute.js +175 -46
- package/dist/commands/execute.js.map +1 -1
- package/dist/commands/graph.d.ts +9 -0
- package/dist/commands/graph.d.ts.map +1 -0
- package/dist/commands/graph.js +177 -0
- package/dist/commands/graph.js.map +1 -0
- package/dist/dag-runner/graph-ingest.d.ts +17 -0
- package/dist/dag-runner/graph-ingest.d.ts.map +1 -0
- package/dist/dag-runner/graph-ingest.js +149 -0
- package/dist/dag-runner/graph-ingest.js.map +1 -0
- package/dist/dag-runner/run_dag.d.ts +47 -30
- package/dist/dag-runner/run_dag.d.ts.map +1 -1
- package/dist/dag-runner/run_dag.js +145 -166
- package/dist/dag-runner/run_dag.js.map +1 -1
- package/dist/dag-runner/state-store.d.ts +13 -0
- package/dist/dag-runner/state-store.d.ts.map +1 -0
- package/dist/dag-runner/state-store.js +69 -0
- package/dist/dag-runner/state-store.js.map +1 -0
- package/dist/dag-runner/utils/cap-output.d.ts.map +1 -1
- package/dist/dag-runner/utils/cap-output.js +5 -2
- package/dist/dag-runner/utils/cap-output.js.map +1 -1
- package/dist/graphrag/factory.d.ts +25 -0
- package/dist/graphrag/factory.d.ts.map +1 -0
- package/dist/graphrag/factory.js +66 -0
- package/dist/graphrag/factory.js.map +1 -0
- package/dist/graphrag/index.d.ts +4 -0
- package/dist/graphrag/index.d.ts.map +1 -1
- package/dist/graphrag/index.js +2 -0
- package/dist/graphrag/index.js.map +1 -1
- package/dist/graphrag/json-graph.d.ts +28 -0
- package/dist/graphrag/json-graph.d.ts.map +1 -0
- package/dist/graphrag/json-graph.js +168 -0
- package/dist/graphrag/json-graph.js.map +1 -0
- package/dist/graphrag/knowledge-graph.d.ts +33 -0
- package/dist/graphrag/knowledge-graph.d.ts.map +1 -0
- package/dist/graphrag/knowledge-graph.js +2 -0
- package/dist/graphrag/knowledge-graph.js.map +1 -0
- package/dist/index.d.ts +13 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -4
- package/templates/ide/antigravity/.agents/skills/dare-dag-runner/SKILL.md +99 -96
- package/templates/ide/claude/.claude/commands/dare-dag-run.md +68 -69
- package/templates/ide/cursor/.cursor/commands/run-dag.md +67 -44
- package/templates/ide/cursor/.cursor/rules/skill-dag-runner.mdc +97 -87
|
@@ -1,161 +1,168 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* DARE
|
|
2
|
+
* DARE DAG Task Runner — orchestration only.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* The DAG runner is **not** an executor. The agent inside the user's IDE
|
|
5
|
+
* (Cursor / Antigravity / Claude Code) executes each task using its native
|
|
6
|
+
* runtime — the IDE is already authenticated and the user already pays for
|
|
7
|
+
* inference there. This CLI is responsible for:
|
|
8
|
+
*
|
|
9
|
+
* 1. ordering tasks (Kahn's algorithm) and surfacing what to execute next
|
|
10
|
+
* 2. computing the prompt the agent should run, with parent-output context
|
|
11
|
+
* 3. recording status transitions (PENDING → RUNNING → DONE / FAILED / SKIPPED)
|
|
12
|
+
* 4. cascading-skip when a parent fails
|
|
13
|
+
* 5. rendering the live canvas at DARE/.canvas.md
|
|
14
|
+
* 6. (optionally) ingesting finished tasks into the knowledge graph
|
|
15
|
+
*
|
|
16
|
+
* The actual task execution loop lives outside this file: see `dare execute`
|
|
17
|
+
* (`--next` / `--complete` / `--fail`).
|
|
7
18
|
*/
|
|
8
19
|
import fs from 'fs-extra';
|
|
9
20
|
import path from 'path';
|
|
10
|
-
import chalk from 'chalk';
|
|
11
|
-
import { getAdapter, MissingApiKeyError } from './adapters/index.js';
|
|
12
21
|
import { capOutput } from './utils/cap-output.js';
|
|
13
22
|
import { composePrompt } from './utils/stitch-context.js';
|
|
14
|
-
import {
|
|
15
|
-
/** Defaults used when a YAML omits the `limits` block. */
|
|
23
|
+
import { ingestTask } from './graph-ingest.js';
|
|
16
24
|
export const DEFAULT_DAG_LIMITS = {
|
|
17
25
|
parent_context_chars: 2000,
|
|
18
26
|
task_output_chars: 4000,
|
|
19
27
|
timeout_seconds: 600,
|
|
20
28
|
};
|
|
21
29
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
22
|
-
//
|
|
30
|
+
// Topological ranking
|
|
23
31
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
24
32
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
33
|
+
* Compute execution ranks for tasks based on dependencies. Tasks in the same
|
|
34
|
+
* rank can run in parallel (logical parallelism: the IDE agent decides
|
|
35
|
+
* whether to literally fan them out or run them back-to-back).
|
|
27
36
|
*/
|
|
28
|
-
export
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (!models) {
|
|
37
|
-
throw new Error(`dare-dag.yaml has no \`models.${runner}\` block. Define HIGH/MED/LOW for the chosen runner.`);
|
|
38
|
-
}
|
|
39
|
-
// Reset status only for tasks we plan to execute.
|
|
40
|
-
for (const task of dag.tasks) {
|
|
41
|
-
if (resume && (task.status === 'DONE' || task.status === 'SKIPPED'))
|
|
42
|
-
continue;
|
|
43
|
-
task.status = 'PENDING';
|
|
44
|
-
task.error = undefined;
|
|
45
|
-
}
|
|
46
|
-
// Honor SIGINT / SIGTERM — abort all in-flight tasks.
|
|
47
|
-
const cancellation = new AbortController();
|
|
48
|
-
const onSignal = (sig) => {
|
|
49
|
-
console.log(chalk.yellow(`\n ⚠ Received ${sig}. Cancelling in-flight tasks…`));
|
|
50
|
-
cancellation.abort('signal');
|
|
51
|
-
};
|
|
52
|
-
process.once('SIGINT', () => onSignal('SIGINT'));
|
|
53
|
-
process.once('SIGTERM', () => onSignal('SIGTERM'));
|
|
54
|
-
await renderCanvas(dag, canvasPath);
|
|
55
|
-
try {
|
|
56
|
-
if (onlyTaskId) {
|
|
57
|
-
const task = dag.tasks.find((t) => t.id === onlyTaskId);
|
|
58
|
-
if (!task)
|
|
59
|
-
throw new Error(`Task "${onlyTaskId}" not found in DAG.`);
|
|
60
|
-
await executeOne(task, dag, adapter, models, limits, cancellation.signal, canvasPath);
|
|
61
|
-
}
|
|
62
|
-
else if (parallel) {
|
|
63
|
-
await executeParallel(dag, adapter, models, limits, cancellation.signal, canvasPath);
|
|
37
|
+
export function computeRanks(tasks) {
|
|
38
|
+
const ranks = new Map();
|
|
39
|
+
const taskMap = new Map(tasks.map((t) => [t.id, t]));
|
|
40
|
+
function getRank(taskId, visited = new Set()) {
|
|
41
|
+
if (ranks.has(taskId))
|
|
42
|
+
return ranks.get(taskId);
|
|
43
|
+
if (visited.has(taskId)) {
|
|
44
|
+
throw new Error(`Circular dependency detected: ${taskId}`);
|
|
64
45
|
}
|
|
65
|
-
|
|
66
|
-
|
|
46
|
+
visited.add(taskId);
|
|
47
|
+
const task = taskMap.get(taskId);
|
|
48
|
+
if (!task)
|
|
49
|
+
throw new Error(`Task not found: ${taskId}`);
|
|
50
|
+
if (task.depends_on.length === 0) {
|
|
51
|
+
ranks.set(taskId, 0);
|
|
52
|
+
return 0;
|
|
67
53
|
}
|
|
54
|
+
const maxDepRank = Math.max(...task.depends_on.map((dep) => getRank(dep, new Set(visited))));
|
|
55
|
+
const rank = maxDepRank + 1;
|
|
56
|
+
ranks.set(taskId, rank);
|
|
57
|
+
return rank;
|
|
68
58
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
59
|
+
for (const t of tasks)
|
|
60
|
+
getRank(t.id);
|
|
61
|
+
return ranks;
|
|
73
62
|
}
|
|
74
63
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
75
|
-
//
|
|
64
|
+
// Status queries
|
|
76
65
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
66
|
+
/**
|
|
67
|
+
* Return the next batch of tasks the agent should execute now: PENDING tasks
|
|
68
|
+
* whose every parent is DONE. These can be executed in parallel by the agent.
|
|
69
|
+
*
|
|
70
|
+
* If `currentRankOnly` is true (default), restrict to the lowest rank that
|
|
71
|
+
* still has executable tasks — gives a clean "rank-by-rank" cadence.
|
|
72
|
+
*/
|
|
73
|
+
export function nextExecutableTasks(dag, currentRankOnly = true) {
|
|
74
|
+
const byId = new Map(dag.tasks.map((t) => [t.id, t]));
|
|
75
|
+
const ready = dag.tasks.filter((t) => {
|
|
76
|
+
if (t.status === 'DONE' || t.status === 'SKIPPED')
|
|
77
|
+
return false;
|
|
78
|
+
if (t.status === 'RUNNING')
|
|
79
|
+
return false; // already picked up
|
|
80
|
+
return t.depends_on.every((d) => byId.get(d)?.status === 'DONE');
|
|
81
|
+
});
|
|
82
|
+
if (!currentRankOnly || ready.length === 0)
|
|
83
|
+
return ready;
|
|
85
84
|
const ranks = computeRanks(dag.tasks);
|
|
86
|
-
const
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
85
|
+
const minRank = Math.min(...ready.map((t) => ranks.get(t.id) ?? 0));
|
|
86
|
+
return ready.filter((t) => (ranks.get(t.id) ?? 0) === minRank);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Cascade: any PENDING task whose dependency is FAILED/SKIPPED becomes SKIPPED.
|
|
90
|
+
* Returns the list of newly-skipped tasks (caller can ingest them).
|
|
91
|
+
*/
|
|
92
|
+
export function applyCascadingSkip(dag) {
|
|
93
|
+
const byId = new Map(dag.tasks.map((t) => [t.id, t]));
|
|
94
|
+
const newlySkipped = [];
|
|
95
|
+
let changed = true;
|
|
96
|
+
while (changed) {
|
|
97
|
+
changed = false;
|
|
98
|
+
for (const task of dag.tasks) {
|
|
99
|
+
if (task.status !== 'PENDING')
|
|
100
|
+
continue;
|
|
101
|
+
const blocked = task.depends_on.some((d) => {
|
|
102
|
+
const parent = byId.get(d);
|
|
103
|
+
return parent?.status === 'FAILED' || parent?.status === 'SKIPPED';
|
|
104
|
+
});
|
|
105
|
+
if (blocked) {
|
|
106
|
+
task.status = 'SKIPPED';
|
|
107
|
+
newlySkipped.push(task);
|
|
108
|
+
changed = true;
|
|
109
|
+
}
|
|
105
110
|
}
|
|
106
|
-
await Promise.all(executable.map((task) => executeOne(task, dag, adapter, models, limits, externalSignal, canvasPath)));
|
|
107
111
|
}
|
|
112
|
+
return newlySkipped;
|
|
108
113
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
114
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
115
|
+
// Prompt composition (what the agent should literally execute)
|
|
116
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
117
|
+
/**
|
|
118
|
+
* Compose the prompt for a given task: the task's `subtask_prompt` plus an
|
|
119
|
+
* "Upstream context" block with capped snippets of each parent's output.
|
|
120
|
+
*/
|
|
121
|
+
export function buildTaskPrompt(dag, task) {
|
|
122
|
+
const limits = dag.limits ?? DEFAULT_DAG_LIMITS;
|
|
115
123
|
const parents = task.depends_on
|
|
116
124
|
.map((id) => dag.tasks.find((t) => t.id === id))
|
|
117
125
|
.filter((t) => Boolean(t));
|
|
118
|
-
|
|
126
|
+
return composePrompt({
|
|
119
127
|
task,
|
|
120
128
|
parents,
|
|
121
129
|
parentContextChars: limits.parent_context_chars,
|
|
122
130
|
});
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
}
|
|
131
|
+
}
|
|
132
|
+
export function markRunning(dag, taskId) {
|
|
133
|
+
const task = requireTask(dag, taskId);
|
|
134
|
+
task.status = 'RUNNING';
|
|
135
|
+
task.error = undefined;
|
|
136
|
+
return task;
|
|
137
|
+
}
|
|
138
|
+
export function markDone(dag, taskId, opts = {}) {
|
|
139
|
+
const task = requireTask(dag, taskId);
|
|
140
|
+
const limits = dag.limits ?? DEFAULT_DAG_LIMITS;
|
|
141
|
+
task.status = 'DONE';
|
|
142
|
+
task.output = opts.output ? capOutput(opts.output, limits.task_output_chars) : task.output;
|
|
143
|
+
task.tokens = opts.tokens ?? task.tokens;
|
|
144
|
+
task.duration = opts.durationMs ?? task.duration;
|
|
145
|
+
task.error = undefined;
|
|
146
|
+
if (opts.graph)
|
|
147
|
+
safeIngest(opts.graph, task, dag);
|
|
148
|
+
return task;
|
|
149
|
+
}
|
|
150
|
+
export function markFailed(dag, taskId, opts = {}) {
|
|
151
|
+
const task = requireTask(dag, taskId);
|
|
152
|
+
task.status = 'FAILED';
|
|
153
|
+
task.error = opts.error ?? task.error ?? 'unknown';
|
|
154
|
+
task.duration = opts.durationMs ?? task.duration;
|
|
155
|
+
if (opts.graph)
|
|
156
|
+
safeIngest(opts.graph, task, dag);
|
|
157
|
+
// Cascade-skip downstream tasks
|
|
158
|
+
const skipped = applyCascadingSkip(dag);
|
|
159
|
+
if (opts.graph)
|
|
160
|
+
for (const t of skipped)
|
|
161
|
+
safeIngest(opts.graph, t, dag);
|
|
162
|
+
return task;
|
|
156
163
|
}
|
|
157
164
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
158
|
-
// Canvas
|
|
165
|
+
// Canvas rendering
|
|
159
166
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
160
167
|
const STATUS_ICON = {
|
|
161
168
|
PENDING: '⏳',
|
|
@@ -164,7 +171,7 @@ const STATUS_ICON = {
|
|
|
164
171
|
FAILED: '❌',
|
|
165
172
|
SKIPPED: '⏭️',
|
|
166
173
|
};
|
|
167
|
-
async function renderCanvas(dag, canvasPath) {
|
|
174
|
+
export async function renderCanvas(dag, canvasPath) {
|
|
168
175
|
const lines = [
|
|
169
176
|
`# DARE DAG Execution — ${dag.title}`,
|
|
170
177
|
``,
|
|
@@ -193,49 +200,21 @@ async function renderCanvas(dag, canvasPath) {
|
|
|
193
200
|
await fs.ensureDir(path.dirname(canvasPath));
|
|
194
201
|
await fs.writeFile(canvasPath, lines.join('\n'));
|
|
195
202
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
203
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
204
|
+
// Helpers
|
|
205
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
206
|
+
function requireTask(dag, taskId) {
|
|
207
|
+
const task = dag.tasks.find((t) => t.id === taskId);
|
|
208
|
+
if (!task)
|
|
209
|
+
throw new Error(`Task "${taskId}" not found in DAG`);
|
|
210
|
+
return task;
|
|
202
211
|
}
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
const taskMap = new Map(tasks.map((t) => [t.id, t]));
|
|
210
|
-
function getRank(taskId, visited = new Set()) {
|
|
211
|
-
if (ranks.has(taskId))
|
|
212
|
-
return ranks.get(taskId);
|
|
213
|
-
if (visited.has(taskId)) {
|
|
214
|
-
throw new Error(`Circular dependency detected: ${taskId}`);
|
|
215
|
-
}
|
|
216
|
-
visited.add(taskId);
|
|
217
|
-
const task = taskMap.get(taskId);
|
|
218
|
-
if (!task)
|
|
219
|
-
throw new Error(`Task not found: ${taskId}`);
|
|
220
|
-
if (task.depends_on.length === 0) {
|
|
221
|
-
ranks.set(taskId, 0);
|
|
222
|
-
return 0;
|
|
223
|
-
}
|
|
224
|
-
const maxDepRank = Math.max(...task.depends_on.map((dep) => getRank(dep, new Set(visited))));
|
|
225
|
-
const rank = maxDepRank + 1;
|
|
226
|
-
ranks.set(taskId, rank);
|
|
227
|
-
return rank;
|
|
212
|
+
function safeIngest(graph, task, dag) {
|
|
213
|
+
try {
|
|
214
|
+
ingestTask(graph, task, dag);
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
// Best-effort. Ingestion failures must not break the orchestrator.
|
|
228
218
|
}
|
|
229
|
-
for (const t of tasks)
|
|
230
|
-
getRank(t.id);
|
|
231
|
-
return ranks;
|
|
232
|
-
}
|
|
233
|
-
function isKnownRunner(runner) {
|
|
234
|
-
return runner === 'cursor' || runner === 'claude' || runner === 'antigravity';
|
|
235
|
-
}
|
|
236
|
-
function formatError(err) {
|
|
237
|
-
if (err instanceof Error)
|
|
238
|
-
return err.message;
|
|
239
|
-
return String(err);
|
|
240
219
|
}
|
|
241
220
|
//# sourceMappingURL=run_dag.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run_dag.js","sourceRoot":"","sources":["../../src/dag-runner/run_dag.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAsB,MAAM,qBAAqB,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAkD5B,0DAA0D;AAC1D,MAAM,CAAC,MAAM,kBAAkB,GAAc;IAC3C,oBAAoB,EAAE,IAAI;IAC1B,iBAAiB,EAAE,IAAI;IACvB,eAAe,EAAE,GAAG;CACrB,CAAC;AAYF,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,GAAQ,EAAE,OAAsB;IAC3D,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAE7E,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,mBAAmB,MAAM,oDAAoD,CAC9E,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,kBAAkB,CAAC;IAChD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,iCAAiC,MAAM,sDAAsD,CAC9F,CAAC;IACJ,CAAC;IAED,kDAAkD;IAClD,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC;YAAE,SAAS;QAC9E,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IACzB,CAAC;IAED,sDAAsD;IACtD,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,CAAC,GAAmB,EAAQ,EAAE;QAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,GAAG,+BAA+B,CAAC,CAAC,CAAC;QACjF,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAEnD,MAAM,YAAY,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAEpC,IAAI,CAAC;QACH,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;YACxD,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,SAAS,UAAU,qBAAqB,CAAC,CAAC;YACrE,MAAM,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACxF,CAAC;aAAM,IAAI,QAAQ,EAAE,CAAC;YACpB,MAAM,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACvF,CAAC;aAAM,CAAC;YACN,MAAM,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,YAAY,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACpC,YAAY,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF,KAAK,UAAU,iBAAiB,CAC9B,GAAQ,EACR,OAAsB,EACtB,MAAmB,EACnB,MAAiB,EACjB,cAA2B,EAC3B,UAAkB;IAElB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,SAAS;QAClE,MAAM,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,GAAQ,EACR,OAAsB,EACtB,MAAmB,EACnB,MAAiB,EACjB,cAA2B,EAC3B,UAAkB;IAElB,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAE/C,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAC1D,CAAC;QACF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAErC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,eAAe,IAAI,KAAK,SAAS,CAAC,MAAM,sBAAsB,CAAC,CAC7E,CAAC;QAEF,iEAAiE;QACjE,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACvC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACxB,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;YACnD,OAAO,MAAM,EAAE,MAAM,KAAK,QAAQ,IAAI,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC;QACrE,CAAC,CAAC,CACH,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC;QACxE,CAAC;QAED,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;QACnE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,YAAY,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YACpC,SAAS;QACX,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CACf,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACtB,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,CAAC,CAC3E,CACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,IAAa,EACb,GAAQ,EACR,OAAsB,EACtB,MAAmB,EACnB,MAAiB,EACjB,cAA2B,EAC3B,UAAkB;IAElB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IACxB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IACvB,MAAM,YAAY,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAEpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAE5D,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU;SAC5B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;SAC/C,MAAM,CAAC,CAAC,CAAC,EAAgB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3C,MAAM,MAAM,GAAG,aAAa,CAAC;QAC3B,IAAI;QACJ,OAAO;QACP,kBAAkB,EAAE,MAAM,CAAC,oBAAoB;KAChD,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,CAC1C,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CACb,OAAO,CAAC,IAAI,CAAC;YACX,MAAM;YACN,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,MAAM;YACN,MAAM;SACP,CAAC,EACJ,EAAE,cAAc,EAAE,MAAM,CAAC,eAAe,EAAE,cAAc,EAAE,CAC3D,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,SAAS,IAAI,CAAC,EAAE,UAAU,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,CAClF,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,GAAG,YAAY,kBAAkB,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,EAAE,YAAY,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACpE,CAAC;aAAM,IAAI,GAAG,YAAY,gBAAgB,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,EAAE,oBAAoB,GAAG,CAAC,cAAc,GAAG,CAAC,CACrE,CAAC;QACJ,CAAC;aAAM,IAAI,GAAG,YAAY,gBAAgB,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,EAAE,aAAa,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACzE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,EAAE,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,YAAY,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,MAAM,WAAW,GAA+B;IAC9C,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,GAAG;IACX,OAAO,EAAE,IAAI;CACd,CAAC;AAEF,KAAK,UAAU,YAAY,CAAC,GAAQ,EAAE,UAAkB;IACtD,MAAM,KAAK,GAAa;QACtB,0BAA0B,GAAG,CAAC,KAAK,EAAE;QACrC,EAAE;QACF,gBAAgB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;QAC1C,EAAE;QACF,UAAU;QACV,EAAE;QACF,6CAA6C;QAC7C,6CAA6C;KAC9C,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC;QACxC,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QACpD,KAAK,CAAC,IAAI,CACR,KAAK,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,KAAK,MAAM,IAAI,IAAI,MAAM,MAAM,QAAQ,MAAM,MAAM,IAAI,CAC/E,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;IAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IACjE,MAAM,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAEnC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,KAAK,WAAW,GAAG,IAAI,CAAC,CAAC;IAC5D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;IAEtE,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7C,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,YAAY,CAAC,GAAQ,EAAE,UAAkB;IAChD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IACjE,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IACrE,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IACvE,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,UAAU,MAAM,YAAY,OAAO,UAAU,CAAC,CACjF,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,UAAU,IAAI,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAgB;IAC3C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAErD,SAAS,OAAO,CAAC,MAAc,EAAE,UAAU,IAAI,GAAG,EAAU;QAC1D,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;QACjD,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,iCAAiC,MAAM,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;QAExD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACrB,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CACzB,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAChE,CAAC;QACF,MAAM,IAAI,GAAG,UAAU,GAAG,CAAC,CAAC;QAC5B,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACrC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,MAAc;IACnC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,aAAa,CAAC;AAChF,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAC/B,IAAI,GAAG,YAAY,KAAK;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IAC7C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC"}
|
|
1
|
+
{"version":3,"file":"run_dag.js","sourceRoot":"","sources":["../../src/dag-runner/run_dag.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Dag, DagTask } from './run_dag.js';
|
|
2
|
+
export declare const DEFAULT_STATE_PATH: string;
|
|
3
|
+
/**
|
|
4
|
+
* Read state from disk and merge it into `dag.tasks`. Missing tasks default
|
|
5
|
+
* to PENDING.
|
|
6
|
+
*/
|
|
7
|
+
export declare function loadAndApplyState(dag: Dag, stateFile: string): Promise<void>;
|
|
8
|
+
/**
|
|
9
|
+
* Write the current `dag` runtime state to disk.
|
|
10
|
+
*/
|
|
11
|
+
export declare function saveState(dag: Dag, stateFile: string): Promise<void>;
|
|
12
|
+
export type { DagTask };
|
|
13
|
+
//# sourceMappingURL=state-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-store.d.ts","sourceRoot":"","sources":["../../src/dag-runner/state-store.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAc,MAAM,cAAc,CAAC;AAgB7D,eAAO,MAAM,kBAAkB,QAAmC,CAAC;AAEnE;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBlF;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB1E;AAWD,YAAY,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime state store for the DAG.
|
|
3
|
+
*
|
|
4
|
+
* `dare-dag.yaml` stays the canonical spec (id / depends_on / complexity /
|
|
5
|
+
* subtask_prompt / spec_file). Per-task runtime fields — status, output,
|
|
6
|
+
* error, tokens, duration — live in a separate JSON file so that:
|
|
7
|
+
* - the YAML stays diff-friendly and reviewable
|
|
8
|
+
* - the state file can be gitignored (`.dare/`)
|
|
9
|
+
* - CLI invocations can rehydrate the in-memory DAG between commands
|
|
10
|
+
*/
|
|
11
|
+
import path from 'path';
|
|
12
|
+
import fs from 'fs-extra';
|
|
13
|
+
export const DEFAULT_STATE_PATH = path.join('.dare', 'state.json');
|
|
14
|
+
/**
|
|
15
|
+
* Read state from disk and merge it into `dag.tasks`. Missing tasks default
|
|
16
|
+
* to PENDING.
|
|
17
|
+
*/
|
|
18
|
+
export async function loadAndApplyState(dag, stateFile) {
|
|
19
|
+
const exists = await fs.pathExists(stateFile);
|
|
20
|
+
if (!exists) {
|
|
21
|
+
for (const task of dag.tasks)
|
|
22
|
+
task.status = task.status ?? 'PENDING';
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const raw = (await fs.readJson(stateFile));
|
|
26
|
+
const data = isPersistedState(raw) ? raw : null;
|
|
27
|
+
for (const task of dag.tasks) {
|
|
28
|
+
const persisted = data?.tasks?.[task.id];
|
|
29
|
+
if (persisted) {
|
|
30
|
+
task.status = persisted.status;
|
|
31
|
+
task.output = persisted.output;
|
|
32
|
+
task.error = persisted.error;
|
|
33
|
+
task.tokens = persisted.tokens;
|
|
34
|
+
task.duration = persisted.duration;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
task.status = task.status ?? 'PENDING';
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Write the current `dag` runtime state to disk.
|
|
43
|
+
*/
|
|
44
|
+
export async function saveState(dag, stateFile) {
|
|
45
|
+
const tasks = {};
|
|
46
|
+
for (const t of dag.tasks) {
|
|
47
|
+
tasks[t.id] = {
|
|
48
|
+
status: t.status ?? 'PENDING',
|
|
49
|
+
output: t.output,
|
|
50
|
+
error: t.error,
|
|
51
|
+
tokens: t.tokens,
|
|
52
|
+
duration: t.duration,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
const payload = {
|
|
56
|
+
version: 1,
|
|
57
|
+
updatedAt: new Date().toISOString(),
|
|
58
|
+
tasks,
|
|
59
|
+
};
|
|
60
|
+
await fs.ensureDir(path.dirname(stateFile));
|
|
61
|
+
await fs.writeJson(stateFile, payload, { spaces: 2 });
|
|
62
|
+
}
|
|
63
|
+
function isPersistedState(value) {
|
|
64
|
+
return (typeof value === 'object' &&
|
|
65
|
+
value !== null &&
|
|
66
|
+
'tasks' in value &&
|
|
67
|
+
typeof value.tasks === 'object');
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=state-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-store.js","sourceRoot":"","sources":["../../src/dag-runner/state-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAiB1B,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAEnE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAQ,EAAE,SAAiB;IACjE,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC;QACrE,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAA6B,CAAC;IACvE,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAChD,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;YAC/B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;YAC/B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;YAC7B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;YAC/B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC;QACzC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAQ,EAAE,SAAiB;IACzD,MAAM,KAAK,GAAuC,EAAE,CAAC;IACrD,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QAC1B,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;YACZ,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,SAAS;YAC7B,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;SACrB,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAmB;QAC9B,OAAO,EAAE,CAAC;QACV,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,KAAK;KACN,CAAC;IACF,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5C,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAO,IAAI,KAAK;QAChB,OAAQ,KAA4B,CAAC,KAAK,KAAK,QAAQ,CACxD,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cap-output.d.ts","sourceRoot":"","sources":["../../../src/dag-runner/utils/cap-output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"cap-output.d.ts","sourceRoot":"","sources":["../../../src/dag-runner/utils/cap-output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAShE"}
|
|
@@ -16,7 +16,10 @@ export function capOutput(text, maxChars) {
|
|
|
16
16
|
return '';
|
|
17
17
|
if (text.length <= maxChars)
|
|
18
18
|
return text;
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
// If the cap is too small to fit even the notice, do a hard slice.
|
|
20
|
+
if (maxChars <= TRUNCATION_NOTICE.length) {
|
|
21
|
+
return text.slice(0, maxChars);
|
|
22
|
+
}
|
|
23
|
+
return text.slice(0, maxChars - TRUNCATION_NOTICE.length) + TRUNCATION_NOTICE;
|
|
21
24
|
}
|
|
22
25
|
//# sourceMappingURL=cap-output.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cap-output.js","sourceRoot":"","sources":["../../../src/dag-runner/utils/cap-output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,iBAAiB,GAAG,2CAA2C,CAAC;AAEtE,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,QAAgB;IACtD,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAC7B,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC;IAEzC,
|
|
1
|
+
{"version":3,"file":"cap-output.js","sourceRoot":"","sources":["../../../src/dag-runner/utils/cap-output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,iBAAiB,GAAG,2CAA2C,CAAC;AAEtE,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,QAAgB;IACtD,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAC7B,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC;IAEzC,mEAAmE;IACnE,IAAI,QAAQ,IAAI,iBAAiB,CAAC,MAAM,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,GAAG,iBAAiB,CAAC;AAChF,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { KnowledgeGraph } from './knowledge-graph.js';
|
|
2
|
+
export type GraphBackend = 'sqlite' | 'json' | 'neo4j';
|
|
3
|
+
export interface GraphConfig {
|
|
4
|
+
backend: GraphBackend;
|
|
5
|
+
/** Path to the persistence target, relative to the project root. */
|
|
6
|
+
path?: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Resolve graph config:
|
|
10
|
+
* - if `explicit` is given, use it;
|
|
11
|
+
* - otherwise read `dare-graph.yml` from cwd (or `cwd` if provided);
|
|
12
|
+
* - if no file exists, fall back to sqlite at `.dare/graph.db`.
|
|
13
|
+
*/
|
|
14
|
+
export declare function loadGraphConfig(opts?: {
|
|
15
|
+
cwd?: string;
|
|
16
|
+
explicit?: GraphConfig;
|
|
17
|
+
}): Promise<GraphConfig>;
|
|
18
|
+
/**
|
|
19
|
+
* Build the backend instance and call `init()`. Caller owns the lifecycle and
|
|
20
|
+
* must call `.close()` when done.
|
|
21
|
+
*/
|
|
22
|
+
export declare function createGraph(config: GraphConfig, opts?: {
|
|
23
|
+
cwd?: string;
|
|
24
|
+
}): Promise<KnowledgeGraph>;
|
|
25
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/graphrag/factory.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,YAAY,CAAC;IACtB,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAQD;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,IAAI,GAAE;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,WAAW,CAAC;CACnB,GAAG,OAAO,CAAC,WAAW,CAAC,CAoB5B;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,WAAW,EACnB,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1B,OAAO,CAAC,cAAc,CAAC,CAqBzB"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `createGraph()` — read `dare-graph.yml` (or take an explicit config) and
|
|
3
|
+
* return the matching backend instance.
|
|
4
|
+
*
|
|
5
|
+
* Supported backends:
|
|
6
|
+
* - `sqlite` → `GraphRAG` (sql.js)
|
|
7
|
+
* - `json` → `JsonGraph` (single JSON file, no native deps)
|
|
8
|
+
* - `neo4j` → not yet implemented (throws with guidance)
|
|
9
|
+
*/
|
|
10
|
+
import path from 'path';
|
|
11
|
+
import fs from 'fs-extra';
|
|
12
|
+
import { parse as parseYaml } from 'yaml';
|
|
13
|
+
import { GraphRAG } from './graph-rag.js';
|
|
14
|
+
import { JsonGraph } from './json-graph.js';
|
|
15
|
+
const DEFAULTS = {
|
|
16
|
+
sqlite: '.dare/graph.db',
|
|
17
|
+
json: '.dare/graph.json',
|
|
18
|
+
neo4j: undefined,
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Resolve graph config:
|
|
22
|
+
* - if `explicit` is given, use it;
|
|
23
|
+
* - otherwise read `dare-graph.yml` from cwd (or `cwd` if provided);
|
|
24
|
+
* - if no file exists, fall back to sqlite at `.dare/graph.db`.
|
|
25
|
+
*/
|
|
26
|
+
export async function loadGraphConfig(opts = {}) {
|
|
27
|
+
if (opts.explicit) {
|
|
28
|
+
return normalize(opts.explicit);
|
|
29
|
+
}
|
|
30
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
31
|
+
const ymlPath = path.join(cwd, 'dare-graph.yml');
|
|
32
|
+
if (!(await fs.pathExists(ymlPath))) {
|
|
33
|
+
return { backend: 'sqlite', path: DEFAULTS.sqlite };
|
|
34
|
+
}
|
|
35
|
+
const raw = (await fs.readFile(ymlPath, 'utf-8')).toString();
|
|
36
|
+
const parsed = (parseYaml(raw) ?? {});
|
|
37
|
+
const backend = parsed.backend ?? 'sqlite';
|
|
38
|
+
const subBlock = parsed[backend] ?? {};
|
|
39
|
+
const filePath = typeof subBlock.path === 'string' ? subBlock.path : DEFAULTS[backend];
|
|
40
|
+
return normalize({ backend, path: filePath });
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Build the backend instance and call `init()`. Caller owns the lifecycle and
|
|
44
|
+
* must call `.close()` when done.
|
|
45
|
+
*/
|
|
46
|
+
export async function createGraph(config, opts = {}) {
|
|
47
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
48
|
+
const cfg = normalize(config);
|
|
49
|
+
if (cfg.backend === 'neo4j') {
|
|
50
|
+
throw new Error('Neo4j backend is not yet implemented in @dewtech/dare-cli. Use `backend: sqlite` or `backend: json` in dare-graph.yml. (PRs welcome.)');
|
|
51
|
+
}
|
|
52
|
+
if (!cfg.path) {
|
|
53
|
+
throw new Error(`dare-graph.yml is missing the storage path for backend=${cfg.backend}.`);
|
|
54
|
+
}
|
|
55
|
+
const absPath = path.isAbsolute(cfg.path) ? cfg.path : path.resolve(cwd, cfg.path);
|
|
56
|
+
const graph = cfg.backend === 'sqlite' ? new GraphRAG(absPath) : new JsonGraph(absPath);
|
|
57
|
+
await graph.init();
|
|
58
|
+
return graph;
|
|
59
|
+
}
|
|
60
|
+
function normalize(cfg) {
|
|
61
|
+
return {
|
|
62
|
+
backend: cfg.backend,
|
|
63
|
+
path: cfg.path ?? DEFAULTS[cfg.backend],
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/graphrag/factory.ts"],"names":[],"mappings":"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"}
|