@ngocsangairvds/vsaf 4.0.16 → 4.1.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.
Files changed (111) hide show
  1. package/package.json +5 -3
  2. package/packages/cli/dist/commands/doctor.js +1 -1
  3. package/packages/cli/dist/commands/doctor.js.map +1 -1
  4. package/packages/cli/dist/commands/init.d.ts.map +1 -1
  5. package/packages/cli/dist/commands/init.js +37 -7
  6. package/packages/cli/dist/commands/init.js.map +1 -1
  7. package/packages/cli/dist/commands/list.js +8 -1
  8. package/packages/cli/dist/commands/list.js.map +1 -1
  9. package/packages/cli/dist/commands/run.d.ts.map +1 -1
  10. package/packages/cli/dist/commands/run.js +17 -4
  11. package/packages/cli/dist/commands/run.js.map +1 -1
  12. package/packages/cli/dist/commands/skill.d.ts.map +1 -1
  13. package/packages/cli/dist/commands/skill.js +14 -2
  14. package/packages/cli/dist/commands/skill.js.map +1 -1
  15. package/packages/cli/dist/mcp/server.d.ts +22 -0
  16. package/packages/cli/dist/mcp/server.d.ts.map +1 -1
  17. package/packages/cli/dist/mcp/server.js +311 -20
  18. package/packages/cli/dist/mcp/server.js.map +1 -1
  19. package/packages/cli/dist/server/routes/runs.d.ts.map +1 -1
  20. package/packages/cli/dist/server/routes/runs.js +7 -1
  21. package/packages/cli/dist/server/routes/runs.js.map +1 -1
  22. package/packages/cli/dist/server/routes/workflows.d.ts.map +1 -1
  23. package/packages/cli/dist/server/routes/workflows.js +3 -0
  24. package/packages/cli/dist/server/routes/workflows.js.map +1 -1
  25. package/packages/cli/dist/server/services/execution-manager.d.ts.map +1 -1
  26. package/packages/cli/dist/server/services/execution-manager.js +68 -41
  27. package/packages/cli/dist/server/services/execution-manager.js.map +1 -1
  28. package/packages/cli/dist/server/services/sse-manager.d.ts.map +1 -1
  29. package/packages/cli/dist/server/services/sse-manager.js +7 -2
  30. package/packages/cli/dist/server/services/sse-manager.js.map +1 -1
  31. package/packages/core/dist/commands/command-loader.d.ts.map +1 -1
  32. package/packages/core/dist/commands/command-loader.js +3 -0
  33. package/packages/core/dist/commands/command-loader.js.map +1 -1
  34. package/packages/core/dist/engine/condition-evaluator.js +3 -2
  35. package/packages/core/dist/engine/condition-evaluator.js.map +1 -1
  36. package/packages/core/dist/engine/dag-executor.d.ts +29 -1
  37. package/packages/core/dist/engine/dag-executor.d.ts.map +1 -1
  38. package/packages/core/dist/engine/dag-executor.js +279 -130
  39. package/packages/core/dist/engine/dag-executor.js.map +1 -1
  40. package/packages/core/dist/engine/dag-parser.d.ts.map +1 -1
  41. package/packages/core/dist/engine/dag-parser.js +3 -0
  42. package/packages/core/dist/engine/dag-parser.js.map +1 -1
  43. package/packages/core/dist/engine/node-runner.d.ts +1 -0
  44. package/packages/core/dist/engine/node-runner.d.ts.map +1 -1
  45. package/packages/core/dist/engine/node-runner.js +14 -2
  46. package/packages/core/dist/engine/node-runner.js.map +1 -1
  47. package/packages/core/dist/engine/variable-resolver.d.ts +1 -1
  48. package/packages/core/dist/engine/variable-resolver.d.ts.map +1 -1
  49. package/packages/core/dist/engine/variable-resolver.js +21 -11
  50. package/packages/core/dist/engine/variable-resolver.js.map +1 -1
  51. package/packages/core/dist/index.d.ts +5 -1
  52. package/packages/core/dist/index.d.ts.map +1 -1
  53. package/packages/core/dist/index.js +13 -3
  54. package/packages/core/dist/index.js.map +1 -1
  55. package/packages/core/dist/isolation/artifact-store.d.ts.map +1 -1
  56. package/packages/core/dist/isolation/artifact-store.js +30 -5
  57. package/packages/core/dist/isolation/artifact-store.js.map +1 -1
  58. package/packages/core/dist/isolation/workspace-manager.d.ts +2 -0
  59. package/packages/core/dist/isolation/workspace-manager.d.ts.map +1 -1
  60. package/packages/core/dist/isolation/workspace-manager.js +81 -7
  61. package/packages/core/dist/isolation/workspace-manager.js.map +1 -1
  62. package/packages/core/dist/schema/workflow-schema.d.ts +13 -0
  63. package/packages/core/dist/schema/workflow-schema.d.ts.map +1 -1
  64. package/packages/core/dist/schema/workflow-schema.js +6 -3
  65. package/packages/core/dist/schema/workflow-schema.js.map +1 -1
  66. package/packages/core/dist/skills/skill-loader.d.ts.map +1 -1
  67. package/packages/core/dist/skills/skill-loader.js +7 -0
  68. package/packages/core/dist/skills/skill-loader.js.map +1 -1
  69. package/packages/core/dist/store/atomic.d.ts +11 -0
  70. package/packages/core/dist/store/atomic.d.ts.map +1 -0
  71. package/packages/core/dist/store/atomic.js +51 -0
  72. package/packages/core/dist/store/atomic.js.map +1 -0
  73. package/packages/core/dist/store/recovery.d.ts +3 -0
  74. package/packages/core/dist/store/recovery.d.ts.map +1 -0
  75. package/packages/core/dist/store/recovery.js +206 -0
  76. package/packages/core/dist/store/recovery.js.map +1 -0
  77. package/packages/core/dist/store/run-lock.d.ts +9 -0
  78. package/packages/core/dist/store/run-lock.d.ts.map +1 -0
  79. package/packages/core/dist/store/run-lock.js +62 -0
  80. package/packages/core/dist/store/run-lock.js.map +1 -0
  81. package/packages/core/dist/store/run-store.d.ts +20 -7
  82. package/packages/core/dist/store/run-store.d.ts.map +1 -1
  83. package/packages/core/dist/store/run-store.js +175 -34
  84. package/packages/core/dist/store/run-store.js.map +1 -1
  85. package/packages/core/dist/store/snapshot.d.ts +4 -0
  86. package/packages/core/dist/store/snapshot.d.ts.map +1 -0
  87. package/packages/core/dist/store/snapshot.js +59 -0
  88. package/packages/core/dist/store/snapshot.js.map +1 -0
  89. package/packages/core/dist/store/types.d.ts +89 -4
  90. package/packages/core/dist/store/types.d.ts.map +1 -1
  91. package/packages/core/dist/store/types.js +14 -0
  92. package/packages/core/dist/store/types.js.map +1 -1
  93. package/packages/core/dist/store/wal.d.ts +39 -0
  94. package/packages/core/dist/store/wal.d.ts.map +1 -0
  95. package/packages/core/dist/store/wal.js +203 -0
  96. package/packages/core/dist/store/wal.js.map +1 -0
  97. package/packages/core/dist/types/dag.d.ts +3 -0
  98. package/packages/core/dist/types/dag.d.ts.map +1 -1
  99. package/packages/core/dist/types/workflow.d.ts +6 -3
  100. package/packages/core/dist/types/workflow.d.ts.map +1 -1
  101. package/skills/sdlc/workflows/hotfix-tdd.yaml +3 -0
  102. package/skills/sdlc/workflows/master-sdlc.yaml +10 -0
  103. package/skills/sdlc/workflows/onboarding.yaml +2 -0
  104. package/skills/sdlc/workflows/sdlc-build.yaml +2 -0
  105. package/skills/sdlc/workflows/sdlc-design.yaml +2 -0
  106. package/skills/sdlc/workflows/sdlc-qa.yaml +3 -0
  107. package/skills/sdlc/workflows/sdlc-testcase.yaml +1 -0
  108. package/packages/core/dist/store/event-log.d.ts +0 -8
  109. package/packages/core/dist/store/event-log.d.ts.map +0 -1
  110. package/packages/core/dist/store/event-log.js +0 -30
  111. package/packages/core/dist/store/event-log.js.map +0 -1
@@ -4,89 +4,189 @@ exports.RunStore = void 0;
4
4
  const fs_1 = require("fs");
5
5
  const path_1 = require("path");
6
6
  const crypto_1 = require("crypto");
7
- const event_log_js_1 = require("./event-log.js");
7
+ const wal_js_1 = require("./wal.js");
8
+ const snapshot_js_1 = require("./snapshot.js");
9
+ const recovery_js_1 = require("./recovery.js");
10
+ const SNAPSHOT_INTERVAL = 25;
8
11
  class RunStore {
9
12
  baseDir;
13
+ wals = new Map();
10
14
  runs = new Map();
11
- logs = new Map();
15
+ appendCount = new Map();
16
+ retryCounts = new Map();
12
17
  constructor(baseDir) {
13
18
  this.baseDir = baseDir;
14
19
  (0, fs_1.mkdirSync)(baseDir, { recursive: true });
15
20
  }
16
- create(workflow, args, workspacePath, artifactsPath, projectPath) {
21
+ create(workflow, args, workspacePath, artifactsPath, projectPath, workflowYaml, branchName) {
17
22
  const runId = `run-${(0, crypto_1.randomBytes)(6).toString('hex')}`;
18
23
  const run = {
19
- runId, workflow, status: 'running', args,
20
- workspacePath, artifactsPath, projectPath,
24
+ runId, workflow, workflowYaml, status: 'running', args,
25
+ workspacePath, artifactsPath, projectPath, branchName,
21
26
  startedAt: new Date().toISOString(), nodes: {},
22
27
  };
23
28
  this.runs.set(runId, run);
24
- this.persist(run);
25
- this.getLog(runId).append({ type: 'run:create', data: { workflow, args } });
29
+ const wal = this.getWAL(runId);
30
+ wal.append({
31
+ type: 'run:create',
32
+ data: { workflow, args, workflowYaml, workspacePath, artifactsPath, projectPath, branchName },
33
+ });
26
34
  return run;
27
35
  }
28
- updateNode(runId, nodeId, result) {
36
+ updateNode(runId, nodeId, result, opts) {
29
37
  const run = this.getRun(runId);
30
38
  run.nodes[nodeId] = { ...run.nodes[nodeId], ...result };
31
39
  if (result.status) {
40
+ const wal = this.getWAL(runId);
32
41
  const eventType = this.statusToEventType(result.status);
33
42
  if (eventType) {
34
- this.getLog(runId).append({
35
- type: eventType,
36
- nodeId,
37
- data: result.error ? { error: result.error } : undefined,
38
- });
43
+ const data = {};
44
+ if (result.output != null) {
45
+ data.output = wal.persistOutput(nodeId, result.output);
46
+ }
47
+ if (result.structuredOutput != null) {
48
+ data.structuredOutput = wal.persistStructuredOutput(nodeId, result.structuredOutput);
49
+ }
50
+ if (result.error != null)
51
+ data.error = result.error;
52
+ if (result.startedAt)
53
+ data.startedAt = result.startedAt;
54
+ if (result.completedAt)
55
+ data.completedAt = result.completedAt;
56
+ if (result.durationMs !== undefined)
57
+ data.durationMs = result.durationMs;
58
+ if (opts?.retryCount !== undefined) {
59
+ data.retryCount = opts.retryCount;
60
+ this.retryCounts.set(`${runId}:${nodeId}`, opts.retryCount);
61
+ }
62
+ wal.append({ type: eventType, nodeId, data: Object.keys(data).length > 0 ? data : undefined });
63
+ this.maybeSnapshot(runId);
39
64
  }
40
65
  }
41
66
  }
42
- save(runId) { this.persist(this.getRun(runId)); }
67
+ save(runId) {
68
+ // In WAL-based store, save is a no-op — state is persisted via WAL append
69
+ // Kept for API compatibility
70
+ }
43
71
  complete(runId) {
44
72
  const run = this.getRun(runId);
45
73
  run.status = 'completed';
46
74
  run.completedAt = new Date().toISOString();
47
- this.persist(run);
48
- this.getLog(runId).append({ type: 'run:complete' });
75
+ const wal = this.getWAL(runId);
76
+ wal.append({ type: 'run:complete' });
77
+ this.writeSnapshotNow(runId);
49
78
  }
50
79
  fail(runId) {
51
80
  const run = this.getRun(runId);
52
81
  run.status = 'failed';
53
82
  run.completedAt = new Date().toISOString();
54
- this.persist(run);
55
- this.getLog(runId).append({ type: 'run:fail' });
83
+ const wal = this.getWAL(runId);
84
+ wal.append({ type: 'run:fail' });
85
+ this.writeSnapshotNow(runId);
86
+ }
87
+ resetNode(runId, nodeId) {
88
+ const run = this.getRun(runId);
89
+ delete run.nodes[nodeId];
90
+ const wal = this.getWAL(runId);
91
+ wal.append({ type: 'node:reset', nodeId });
56
92
  }
57
93
  load(runId) {
58
94
  if (this.runs.has(runId))
59
95
  return this.runs.get(runId);
60
- const filePath = (0, path_1.join)(this.baseDir, runId, 'state.json');
61
- if (!(0, fs_1.existsSync)(filePath))
96
+ // Try to recover from WAL
97
+ const runDir = (0, path_1.join)(this.baseDir, runId);
98
+ if (!(0, fs_1.existsSync)(runDir))
99
+ return undefined;
100
+ const state = (0, recovery_js_1.recoverState)(runDir);
101
+ if (!state)
62
102
  return undefined;
63
- const run = JSON.parse((0, fs_1.readFileSync)(filePath, 'utf-8'));
103
+ const run = {
104
+ runId: state.runId || runId,
105
+ workflow: state.workflow,
106
+ workflowYaml: state.workflowYaml,
107
+ status: state.runStatus ?? 'running',
108
+ args: state.args,
109
+ workspacePath: state.workspacePath,
110
+ artifactsPath: state.artifactsPath,
111
+ projectPath: state.projectPath,
112
+ branchName: state.branchName,
113
+ startedAt: state.startedAt,
114
+ completedAt: state.completedAt,
115
+ nodes: state.nodeResults,
116
+ };
64
117
  this.runs.set(runId, run);
65
118
  return run;
66
119
  }
120
+ recover(runId) {
121
+ const runDir = (0, path_1.join)(this.baseDir, runId);
122
+ return (0, recovery_js_1.recoverState)(runDir);
123
+ }
67
124
  listAll() {
68
125
  const runs = [];
69
126
  if (!(0, fs_1.existsSync)(this.baseDir))
70
127
  return runs;
71
128
  for (const dir of (0, fs_1.readdirSync)(this.baseDir)) {
129
+ if (!dir.startsWith('run-'))
130
+ continue;
72
131
  const run = this.load(dir);
73
132
  if (run)
74
133
  runs.push(run);
75
134
  }
76
135
  return runs;
77
136
  }
78
- getEvents(runId) {
79
- return this.getLog(runId).readAll();
137
+ listResumable() {
138
+ const results = [];
139
+ if (!(0, fs_1.existsSync)(this.baseDir))
140
+ return results;
141
+ for (const dir of (0, fs_1.readdirSync)(this.baseDir)) {
142
+ if (!dir.startsWith('run-'))
143
+ continue;
144
+ const runDir = (0, path_1.join)(this.baseDir, dir);
145
+ // Try snapshot first (fast path)
146
+ const snap = (0, snapshot_js_1.loadSnapshot)(runDir);
147
+ if (snap) {
148
+ if (snap.status !== 'running') {
149
+ continue; // Terminal status in snapshot — skip
150
+ }
151
+ // Check WAL for terminal events after this snapshot
152
+ if (wal_js_1.WAL.hasTerminalAfter(runDir, snap.walSeq)) {
153
+ continue; // Run finished after snapshot — skip
154
+ }
155
+ results.push({
156
+ runId: snap.runId,
157
+ workflow: snap.workflow,
158
+ status: snap.status,
159
+ startedAt: snap.startedAt,
160
+ });
161
+ continue;
162
+ }
163
+ // Fall back to WAL replay for runs without snapshots
164
+ if ((0, fs_1.existsSync)((0, path_1.join)(runDir, 'wal.jsonl'))) {
165
+ const state = (0, recovery_js_1.recoverState)(runDir);
166
+ if (state && (!state.runStatus || state.runStatus === 'running')) {
167
+ results.push({
168
+ runId: state.runId || dir,
169
+ workflow: state.workflow,
170
+ status: 'running',
171
+ startedAt: state.startedAt,
172
+ });
173
+ }
174
+ }
175
+ }
176
+ return results;
177
+ }
178
+ snapshotSync(runId) {
179
+ this.writeSnapshotNow(runId);
80
180
  }
81
- getLog(runId) {
82
- let log = this.logs.get(runId);
83
- if (!log) {
181
+ getWAL(runId) {
182
+ let wal = this.wals.get(runId);
183
+ if (!wal) {
84
184
  const runDir = (0, path_1.join)(this.baseDir, runId);
85
185
  (0, fs_1.mkdirSync)(runDir, { recursive: true });
86
- log = new event_log_js_1.EventLog(runDir);
87
- this.logs.set(runId, log);
186
+ wal = new wal_js_1.WAL(runDir);
187
+ this.wals.set(runId, wal);
88
188
  }
89
- return log;
189
+ return wal;
90
190
  }
91
191
  getRun(runId) {
92
192
  const run = this.runs.get(runId);
@@ -94,11 +194,6 @@ class RunStore {
94
194
  throw new Error(`Run not found: ${runId}`);
95
195
  return run;
96
196
  }
97
- persist(run) {
98
- const runDir = (0, path_1.join)(this.baseDir, run.runId);
99
- (0, fs_1.mkdirSync)(runDir, { recursive: true });
100
- (0, fs_1.writeFileSync)((0, path_1.join)(runDir, 'state.json'), JSON.stringify(run, null, 2), 'utf-8');
101
- }
102
197
  statusToEventType(status) {
103
198
  switch (status) {
104
199
  case 'running': return 'node:start';
@@ -108,6 +203,52 @@ class RunStore {
108
203
  default: return null;
109
204
  }
110
205
  }
206
+ maybeSnapshot(runId) {
207
+ const count = (this.appendCount.get(runId) ?? 0) + 1;
208
+ this.appendCount.set(runId, count);
209
+ if (count >= SNAPSHOT_INTERVAL) {
210
+ this.writeSnapshotNow(runId);
211
+ this.appendCount.set(runId, 0);
212
+ }
213
+ }
214
+ writeSnapshotNow(runId) {
215
+ const run = this.runs.get(runId);
216
+ if (!run)
217
+ return;
218
+ const wal = this.wals.get(runId);
219
+ if (!wal)
220
+ return;
221
+ const snapshot = {
222
+ runId: run.runId,
223
+ workflow: run.workflow,
224
+ workflowYaml: run.workflowYaml,
225
+ status: run.status,
226
+ walSeq: wal.currentSeq,
227
+ args: run.args,
228
+ workspacePath: run.workspacePath,
229
+ artifactsPath: run.artifactsPath,
230
+ projectPath: run.projectPath,
231
+ branchName: run.branchName,
232
+ startedAt: run.startedAt,
233
+ completedAt: run.completedAt,
234
+ nodes: {},
235
+ };
236
+ for (const [nodeId, result] of Object.entries(run.nodes)) {
237
+ const retryCount = this.retryCounts.get(`${runId}:${nodeId}`);
238
+ snapshot.nodes[nodeId] = {
239
+ status: result.status,
240
+ outputRef: result.output != null ? wal.getOutputRef(nodeId, result.output) : undefined,
241
+ structuredOutputRef: result.structuredOutput != null
242
+ ? wal.getStructuredOutputRef(nodeId, result.structuredOutput)
243
+ : undefined,
244
+ startedAt: result.startedAt,
245
+ completedAt: result.completedAt,
246
+ error: result.error,
247
+ retryCount,
248
+ };
249
+ }
250
+ (0, snapshot_js_1.writeSnapshot)((0, path_1.join)(this.baseDir, runId), snapshot);
251
+ }
111
252
  }
112
253
  exports.RunStore = RunStore;
113
254
  //# sourceMappingURL=run-store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-store.js","sourceRoot":"","sources":["../../src/store/run-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-store.js","sourceRoot":"","sources":["../../src/store/run-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { CompactSnapshot } from './types.js';
2
+ export declare function writeSnapshot(runDir: string, snapshot: CompactSnapshot): void;
3
+ export declare function loadSnapshot(runDir: string): CompactSnapshot | null;
4
+ //# sourceMappingURL=snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/store/snapshot.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI,CAU7E;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAoCnE"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.writeSnapshot = writeSnapshot;
4
+ exports.loadSnapshot = loadSnapshot;
5
+ const crypto_1 = require("crypto");
6
+ const fs_1 = require("fs");
7
+ const path_1 = require("path");
8
+ const atomic_js_1 = require("./atomic.js");
9
+ function writeSnapshot(runDir, snapshot) {
10
+ try {
11
+ // Compute checksum of snapshot content (without checksum field)
12
+ const body = JSON.stringify(snapshot);
13
+ const checksum = (0, crypto_1.createHash)('sha256').update(body).digest('hex');
14
+ const withChecksum = JSON.stringify({ ...snapshot, _checksum: checksum });
15
+ (0, atomic_js_1.atomicWriteSync)((0, path_1.join)(runDir, 'snapshot.json'), withChecksum);
16
+ }
17
+ catch {
18
+ console.error('[snapshot] Warning: failed to write snapshot');
19
+ }
20
+ }
21
+ function loadSnapshot(runDir) {
22
+ const snapPath = (0, path_1.join)(runDir, 'snapshot.json');
23
+ if (!(0, fs_1.existsSync)(snapPath))
24
+ return null;
25
+ const snapContent = (0, atomic_js_1.safeReadSync)(snapPath);
26
+ if (snapContent instanceof Error)
27
+ return null;
28
+ try {
29
+ const parsed = JSON.parse(snapContent);
30
+ // New format: embedded _checksum
31
+ if (parsed._checksum) {
32
+ const { _checksum, ...rest } = parsed;
33
+ const expectedBody = JSON.stringify(rest);
34
+ const actualChecksum = (0, crypto_1.createHash)('sha256').update(expectedBody).digest('hex');
35
+ if (actualChecksum !== _checksum) {
36
+ console.error('[snapshot] Warning: checksum mismatch — will rebuild from WAL');
37
+ return null;
38
+ }
39
+ return rest;
40
+ }
41
+ // Legacy format: external checksum file
42
+ const checksumPath = (0, path_1.join)(runDir, 'snapshot.checksum');
43
+ if (!(0, fs_1.existsSync)(checksumPath))
44
+ return null;
45
+ const expectedChecksum = (0, atomic_js_1.safeReadSync)(checksumPath);
46
+ if (expectedChecksum instanceof Error)
47
+ return null;
48
+ const actualChecksum = (0, crypto_1.createHash)('sha256').update(snapContent).digest('hex');
49
+ if (actualChecksum !== expectedChecksum.toString().trim()) {
50
+ console.error('[snapshot] Warning: checksum mismatch — will rebuild from WAL');
51
+ return null;
52
+ }
53
+ return parsed;
54
+ }
55
+ catch {
56
+ return null;
57
+ }
58
+ }
59
+ //# sourceMappingURL=snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/store/snapshot.ts"],"names":[],"mappings":";;AAMA,sCAUC;AAED,oCAoCC;AAtDD,mCAAoC;AACpC,2BAAgC;AAChC,+BAA4B;AAC5B,2CAA4D;AAG5D,SAAgB,aAAa,CAAC,MAAc,EAAE,QAAyB;IACrE,IAAI,CAAC;QACH,gEAAgE;QAChE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjE,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1E,IAAA,2BAAe,EAAC,IAAA,WAAI,EAAC,MAAM,EAAE,eAAe,CAAC,EAAE,YAAY,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED,SAAgB,YAAY,CAAC,MAAc;IACzC,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC/C,IAAI,CAAC,IAAA,eAAU,EAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,MAAM,WAAW,GAAG,IAAA,wBAAY,EAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,WAAW,YAAY,KAAK;QAAE,OAAO,IAAI,CAAC;IAE9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAEvC,iCAAiC;QACjC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;YACtC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,cAAc,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/E,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;gBAC/E,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,IAAuB,CAAC;QACjC,CAAC;QAED,wCAAwC;QACxC,MAAM,YAAY,GAAG,IAAA,WAAI,EAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QACvD,IAAI,CAAC,IAAA,eAAU,EAAC,YAAY,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3C,MAAM,gBAAgB,GAAG,IAAA,wBAAY,EAAC,YAAY,CAAC,CAAC;QACpD,IAAI,gBAAgB,YAAY,KAAK;YAAE,OAAO,IAAI,CAAC;QACnD,MAAM,cAAc,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9E,IAAI,cAAc,KAAK,gBAAgB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1D,OAAO,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;YAC/E,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,MAAyB,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -12,19 +12,104 @@ export interface NodeResult {
12
12
  export interface WorkflowRun {
13
13
  runId: string;
14
14
  workflow: string;
15
+ workflowYaml?: string;
15
16
  status: RunStatus;
16
17
  args: string;
17
18
  workspacePath: string;
18
19
  artifactsPath: string;
19
20
  projectPath: string;
21
+ branchName?: string;
20
22
  startedAt: string;
21
23
  completedAt?: string;
22
24
  nodes: Record<string, NodeResult>;
23
25
  }
24
- export interface WorkflowEvent {
25
- timestamp: string;
26
- type: 'run:create' | 'node:start' | 'node:complete' | 'node:skip' | 'node:fail' | 'run:complete' | 'run:fail';
26
+ export type WALEventType = 'run:create' | 'node:start' | 'node:complete' | 'node:fail' | 'node:skip' | 'node:reset' | 'run:complete' | 'run:fail';
27
+ export interface WALEvent {
28
+ seq: number;
29
+ ts: string;
30
+ type: WALEventType;
27
31
  nodeId?: string;
28
- data?: Record<string, unknown>;
32
+ data?: {
33
+ output?: string | {
34
+ __vsaf_ref: string;
35
+ } | {
36
+ ref: string;
37
+ };
38
+ structuredOutput?: Record<string, unknown> | {
39
+ __vsaf_ref: string;
40
+ } | {
41
+ ref: string;
42
+ };
43
+ error?: string;
44
+ status?: NodeStatus;
45
+ retryCount?: number;
46
+ args?: string;
47
+ workflow?: string;
48
+ workflowYaml?: string;
49
+ workspacePath?: string;
50
+ artifactsPath?: string;
51
+ projectPath?: string;
52
+ branchName?: string;
53
+ startedAt?: string;
54
+ completedAt?: string;
55
+ durationMs?: number;
56
+ };
57
+ }
58
+ export interface CompactSnapshot {
59
+ runId: string;
60
+ workflow: string;
61
+ workflowYaml?: string;
62
+ status: RunStatus;
63
+ walSeq: number;
64
+ args: string;
65
+ workspacePath: string;
66
+ artifactsPath: string;
67
+ projectPath: string;
68
+ branchName?: string;
69
+ startedAt: string;
70
+ completedAt?: string;
71
+ nodes: Record<string, {
72
+ status: NodeStatus;
73
+ outputRef?: string | {
74
+ __vsaf_ref: string;
75
+ } | {
76
+ ref: string;
77
+ };
78
+ structuredOutputRef?: Record<string, unknown> | {
79
+ __vsaf_ref: string;
80
+ } | {
81
+ ref: string;
82
+ };
83
+ startedAt?: string;
84
+ completedAt?: string;
85
+ error?: string;
86
+ retryCount?: number;
87
+ }>;
88
+ }
89
+ export declare class StorageError extends Error {
90
+ readonly code: 'CORRUPT' | 'DISK_FULL' | 'PERMISSION' | 'NOT_FOUND';
91
+ readonly path: string;
92
+ readonly cause?: Error | undefined;
93
+ constructor(message: string, code: 'CORRUPT' | 'DISK_FULL' | 'PERMISSION' | 'NOT_FOUND', path: string, cause?: Error | undefined);
94
+ }
95
+ export interface RecoveredState {
96
+ runId: string;
97
+ workflow: string;
98
+ workflowYaml: string;
99
+ args: string;
100
+ workspacePath: string;
101
+ artifactsPath: string;
102
+ projectPath: string;
103
+ branchName?: string;
104
+ startedAt: string;
105
+ completedAt?: string;
106
+ runStatus?: RunStatus;
107
+ pending: Set<string>;
108
+ completed: Set<string>;
109
+ failed: Set<string>;
110
+ skipped: Set<string>;
111
+ nodeResults: Record<string, NodeResult>;
112
+ retryCounts: Map<string, number>;
113
+ walSeq: number;
29
114
  }
30
115
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEtE,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,eAAe,GAAG,WAAW,GAAG,WAAW,GAAG,cAAc,GAAG,UAAU,CAAC;IAC9G,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StorageError = void 0;
4
+ class StorageError extends Error {
5
+ code;
6
+ path;
7
+ cause;
8
+ constructor(message, code, path, cause) {
9
+ super(message);
10
+ this.code = code;
11
+ this.path = path;
12
+ this.cause = cause;
13
+ this.name = 'StorageError';
14
+ }
15
+ }
16
+ exports.StorageError = StorageError;
3
17
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":";;;AA2FA,MAAa,YAAa,SAAQ,KAAK;IAGnB;IACA;IACA;IAJlB,YACE,OAAe,EACC,IAA0D,EAC1D,IAAY,EACZ,KAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,SAAI,GAAJ,IAAI,CAAsD;QAC1D,SAAI,GAAJ,IAAI,CAAQ;QACZ,UAAK,GAAL,KAAK,CAAQ;QAG7B,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAVD,oCAUC"}
@@ -0,0 +1,39 @@
1
+ import type { WALEvent } from './types.js';
2
+ export declare class WAL {
3
+ private readonly walPath;
4
+ private readonly runDir;
5
+ private seq;
6
+ private outputDirCreated;
7
+ private cachedContent;
8
+ constructor(runDir: string);
9
+ get currentSeq(): number;
10
+ append(partial: Omit<WALEvent, 'seq' | 'ts'>): WALEvent;
11
+ private ensureOutputDir;
12
+ private readWALContent;
13
+ replay(afterSeq?: number): WALEvent[];
14
+ persistOutput(nodeId: string, output: string): string | {
15
+ __vsaf_ref: string;
16
+ };
17
+ persistStructuredOutput(nodeId: string, data: Record<string, unknown>): Record<string, unknown> | {
18
+ __vsaf_ref: string;
19
+ };
20
+ getOutputRef(nodeId: string, output: string): string | {
21
+ __vsaf_ref: string;
22
+ };
23
+ getStructuredOutputRef(nodeId: string, data: Record<string, unknown>): Record<string, unknown> | {
24
+ __vsaf_ref: string;
25
+ };
26
+ resolveOutput(stored: string | {
27
+ __vsaf_ref: string;
28
+ } | {
29
+ ref: string;
30
+ }): string;
31
+ resolveStructuredOutput(stored: Record<string, unknown> | {
32
+ __vsaf_ref: string;
33
+ } | {
34
+ ref: string;
35
+ }): Record<string, unknown>;
36
+ private loadLastSeq;
37
+ static hasTerminalAfter(runDir: string, afterSeq: number): boolean;
38
+ }
39
+ //# sourceMappingURL=wal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wal.d.ts","sourceRoot":"","sources":["../../src/store/wal.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,qBAAa,GAAG;IACd,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,aAAa,CAAuB;gBAEhC,MAAM,EAAE,MAAM;IAO1B,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,QAAQ;IAsBvD,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,cAAc;IAOtB,MAAM,CAAC,QAAQ,SAAI,GAAG,QAAQ,EAAE;IAqBhC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE;IAQ9E,uBAAuB,CACrB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE;IASnD,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE;IAK7E,sBAAsB,CACpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE;IAMnD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAWhF,uBAAuB,CACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GACzE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAqC1B,OAAO,CAAC,WAAW;IAkBnB,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;CAgBnE"}