dino-spec 17.4.3 → 17.5.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 (189) hide show
  1. package/dist/commands/init.d.ts.map +1 -1
  2. package/dist/commands/init.js +10 -0
  3. package/dist/commands/init.js.map +1 -1
  4. package/dist/core/agents/__tests__/confidence-gate.test.d.ts +5 -0
  5. package/dist/core/agents/__tests__/confidence-gate.test.d.ts.map +1 -0
  6. package/dist/core/agents/__tests__/confidence-gate.test.js +329 -0
  7. package/dist/core/agents/__tests__/confidence-gate.test.js.map +1 -0
  8. package/dist/core/agents/__tests__/gap-detector.test.d.ts +5 -0
  9. package/dist/core/agents/__tests__/gap-detector.test.d.ts.map +1 -0
  10. package/dist/core/agents/__tests__/gap-detector.test.js +609 -0
  11. package/dist/core/agents/__tests__/gap-detector.test.js.map +1 -0
  12. package/dist/core/agents/__tests__/learning-loop.test.d.ts +5 -0
  13. package/dist/core/agents/__tests__/learning-loop.test.d.ts.map +1 -0
  14. package/dist/core/agents/__tests__/learning-loop.test.js +663 -0
  15. package/dist/core/agents/__tests__/learning-loop.test.js.map +1 -0
  16. package/dist/core/agents/__tests__/parallel-executor.test.d.ts +5 -0
  17. package/dist/core/agents/__tests__/parallel-executor.test.d.ts.map +1 -0
  18. package/dist/core/agents/__tests__/parallel-executor.test.js +610 -0
  19. package/dist/core/agents/__tests__/parallel-executor.test.js.map +1 -0
  20. package/dist/core/agents/__tests__/research-validator.test.js +5 -5
  21. package/dist/core/agents/__tests__/research-validator.test.js.map +1 -1
  22. package/dist/core/agents/__tests__/skill-creator.test.d.ts +5 -0
  23. package/dist/core/agents/__tests__/skill-creator.test.d.ts.map +1 -0
  24. package/dist/core/agents/__tests__/skill-creator.test.js +443 -0
  25. package/dist/core/agents/__tests__/skill-creator.test.js.map +1 -0
  26. package/dist/core/agents/__tests__/state-persistence.test.d.ts +2 -0
  27. package/dist/core/agents/__tests__/state-persistence.test.d.ts.map +1 -0
  28. package/dist/core/agents/__tests__/state-persistence.test.js +270 -0
  29. package/dist/core/agents/__tests__/state-persistence.test.js.map +1 -0
  30. package/dist/core/agents/__tests__/validation-cache.test.d.ts +2 -0
  31. package/dist/core/agents/__tests__/validation-cache.test.d.ts.map +1 -0
  32. package/dist/core/agents/__tests__/validation-cache.test.js +181 -0
  33. package/dist/core/agents/__tests__/validation-cache.test.js.map +1 -0
  34. package/dist/core/agents/blackboard.d.ts +22 -3
  35. package/dist/core/agents/blackboard.d.ts.map +1 -1
  36. package/dist/core/agents/blackboard.js +52 -2
  37. package/dist/core/agents/blackboard.js.map +1 -1
  38. package/dist/core/agents/circuit-breaker.d.ts +79 -1
  39. package/dist/core/agents/circuit-breaker.d.ts.map +1 -1
  40. package/dist/core/agents/circuit-breaker.js +175 -1
  41. package/dist/core/agents/circuit-breaker.js.map +1 -1
  42. package/dist/core/agents/clarification-phase.d.ts +128 -0
  43. package/dist/core/agents/clarification-phase.d.ts.map +1 -0
  44. package/dist/core/agents/clarification-phase.js +375 -0
  45. package/dist/core/agents/clarification-phase.js.map +1 -0
  46. package/dist/core/agents/confidence-gate.d.ts +116 -3
  47. package/dist/core/agents/confidence-gate.d.ts.map +1 -1
  48. package/dist/core/agents/confidence-gate.js +363 -3
  49. package/dist/core/agents/confidence-gate.js.map +1 -1
  50. package/dist/core/agents/correction-tracker.d.ts +197 -0
  51. package/dist/core/agents/correction-tracker.d.ts.map +1 -0
  52. package/dist/core/agents/correction-tracker.js +366 -0
  53. package/dist/core/agents/correction-tracker.js.map +1 -0
  54. package/dist/core/agents/dependency-graph.d.ts +193 -0
  55. package/dist/core/agents/dependency-graph.d.ts.map +1 -0
  56. package/dist/core/agents/dependency-graph.js +462 -0
  57. package/dist/core/agents/dependency-graph.js.map +1 -0
  58. package/dist/core/agents/gap-detector.d.ts +277 -0
  59. package/dist/core/agents/gap-detector.d.ts.map +1 -0
  60. package/dist/core/agents/gap-detector.js +540 -0
  61. package/dist/core/agents/gap-detector.js.map +1 -0
  62. package/dist/core/agents/index.d.ts +14 -1
  63. package/dist/core/agents/index.d.ts.map +1 -1
  64. package/dist/core/agents/index.js +26 -1
  65. package/dist/core/agents/index.js.map +1 -1
  66. package/dist/core/agents/message-protocol.d.ts +13 -2
  67. package/dist/core/agents/message-protocol.d.ts.map +1 -1
  68. package/dist/core/agents/message-protocol.js +20 -1
  69. package/dist/core/agents/message-protocol.js.map +1 -1
  70. package/dist/core/agents/parallel-executor.d.ts +182 -0
  71. package/dist/core/agents/parallel-executor.d.ts.map +1 -0
  72. package/dist/core/agents/parallel-executor.js +474 -0
  73. package/dist/core/agents/parallel-executor.js.map +1 -0
  74. package/dist/core/agents/pattern-detector.d.ts +157 -0
  75. package/dist/core/agents/pattern-detector.d.ts.map +1 -0
  76. package/dist/core/agents/pattern-detector.js +370 -0
  77. package/dist/core/agents/pattern-detector.js.map +1 -0
  78. package/dist/core/agents/registry-client.d.ts +6 -0
  79. package/dist/core/agents/registry-client.d.ts.map +1 -1
  80. package/dist/core/agents/registry-client.js +3 -0
  81. package/dist/core/agents/registry-client.js.map +1 -1
  82. package/dist/core/agents/research-phase.d.ts +114 -0
  83. package/dist/core/agents/research-phase.d.ts.map +1 -0
  84. package/dist/core/agents/research-phase.js +355 -0
  85. package/dist/core/agents/research-phase.js.map +1 -0
  86. package/dist/core/agents/research-validator.d.ts +13 -2
  87. package/dist/core/agents/research-validator.d.ts.map +1 -1
  88. package/dist/core/agents/research-validator.js +63 -31
  89. package/dist/core/agents/research-validator.js.map +1 -1
  90. package/dist/core/agents/skill-creator.d.ts +174 -0
  91. package/dist/core/agents/skill-creator.d.ts.map +1 -0
  92. package/dist/core/agents/skill-creator.js +570 -0
  93. package/dist/core/agents/skill-creator.js.map +1 -0
  94. package/dist/core/agents/state-persistence.d.ts +184 -0
  95. package/dist/core/agents/state-persistence.d.ts.map +1 -0
  96. package/dist/core/agents/state-persistence.js +394 -0
  97. package/dist/core/agents/state-persistence.js.map +1 -0
  98. package/dist/core/agents/validation-cache.d.ts +122 -0
  99. package/dist/core/agents/validation-cache.d.ts.map +1 -0
  100. package/dist/core/agents/validation-cache.js +280 -0
  101. package/dist/core/agents/validation-cache.js.map +1 -0
  102. package/dist/core/agents/validators/__tests__/validators.test.d.ts +5 -0
  103. package/dist/core/agents/validators/__tests__/validators.test.d.ts.map +1 -0
  104. package/dist/core/agents/validators/__tests__/validators.test.js +321 -0
  105. package/dist/core/agents/validators/__tests__/validators.test.js.map +1 -0
  106. package/dist/core/agents/validators/base-validator.d.ts +191 -0
  107. package/dist/core/agents/validators/base-validator.d.ts.map +1 -0
  108. package/dist/core/agents/validators/base-validator.js +192 -0
  109. package/dist/core/agents/validators/base-validator.js.map +1 -0
  110. package/dist/core/agents/validators/index.d.ts +7 -0
  111. package/dist/core/agents/validators/index.d.ts.map +1 -0
  112. package/dist/core/agents/validators/index.js +7 -0
  113. package/dist/core/agents/validators/index.js.map +1 -0
  114. package/dist/core/agents/validators/npm-validator.d.ts +50 -0
  115. package/dist/core/agents/validators/npm-validator.d.ts.map +1 -0
  116. package/dist/core/agents/validators/npm-validator.js +211 -0
  117. package/dist/core/agents/validators/npm-validator.js.map +1 -0
  118. package/dist/core/agents/validators/pip-validator.d.ts +49 -0
  119. package/dist/core/agents/validators/pip-validator.d.ts.map +1 -0
  120. package/dist/core/agents/validators/pip-validator.js +191 -0
  121. package/dist/core/agents/validators/pip-validator.js.map +1 -0
  122. package/dist/core/agents/validators/validator-registry.d.ts +122 -0
  123. package/dist/core/agents/validators/validator-registry.d.ts.map +1 -0
  124. package/dist/core/agents/validators/validator-registry.js +321 -0
  125. package/dist/core/agents/validators/validator-registry.js.map +1 -0
  126. package/dist/core/context-repl/types.d.ts +4 -4
  127. package/dist/core/memory/index.d.ts +1 -0
  128. package/dist/core/memory/index.d.ts.map +1 -1
  129. package/dist/core/memory/index.js +2 -0
  130. package/dist/core/memory/index.js.map +1 -1
  131. package/dist/core/memory/learning-store.d.ts +222 -0
  132. package/dist/core/memory/learning-store.d.ts.map +1 -0
  133. package/dist/core/memory/learning-store.js +477 -0
  134. package/dist/core/memory/learning-store.js.map +1 -0
  135. package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.d.ts +5 -0
  136. package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.d.ts.map +1 -0
  137. package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.js +401 -0
  138. package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.js.map +1 -0
  139. package/dist/core/spec-analyzer/ambiguity-detector.d.ts +99 -0
  140. package/dist/core/spec-analyzer/ambiguity-detector.d.ts.map +1 -0
  141. package/dist/core/spec-analyzer/ambiguity-detector.js +250 -0
  142. package/dist/core/spec-analyzer/ambiguity-detector.js.map +1 -0
  143. package/dist/core/spec-analyzer/clarification-generator.d.ts +76 -0
  144. package/dist/core/spec-analyzer/clarification-generator.d.ts.map +1 -0
  145. package/dist/core/spec-analyzer/clarification-generator.js +257 -0
  146. package/dist/core/spec-analyzer/clarification-generator.js.map +1 -0
  147. package/dist/core/spec-analyzer/index.d.ts +10 -1
  148. package/dist/core/spec-analyzer/index.d.ts.map +1 -1
  149. package/dist/core/spec-analyzer/index.js +13 -1
  150. package/dist/core/spec-analyzer/index.js.map +1 -1
  151. package/dist/core/spec-analyzer/patterns.d.ts +73 -0
  152. package/dist/core/spec-analyzer/patterns.d.ts.map +1 -0
  153. package/dist/core/spec-analyzer/patterns.js +412 -0
  154. package/dist/core/spec-analyzer/patterns.js.map +1 -0
  155. package/dist/hooks/__tests__/dynamic-generator.test.d.ts +5 -0
  156. package/dist/hooks/__tests__/dynamic-generator.test.d.ts.map +1 -0
  157. package/dist/hooks/__tests__/dynamic-generator.test.js +425 -0
  158. package/dist/hooks/__tests__/dynamic-generator.test.js.map +1 -0
  159. package/dist/hooks/__tests__/hook-agent-bridge.test.d.ts +5 -0
  160. package/dist/hooks/__tests__/hook-agent-bridge.test.d.ts.map +1 -0
  161. package/dist/hooks/__tests__/hook-agent-bridge.test.js +315 -0
  162. package/dist/hooks/__tests__/hook-agent-bridge.test.js.map +1 -0
  163. package/dist/hooks/dynamic-generator.d.ts +158 -0
  164. package/dist/hooks/dynamic-generator.d.ts.map +1 -0
  165. package/dist/hooks/dynamic-generator.js +448 -0
  166. package/dist/hooks/dynamic-generator.js.map +1 -0
  167. package/dist/hooks/hook-agent-bridge.d.ts +252 -0
  168. package/dist/hooks/hook-agent-bridge.d.ts.map +1 -0
  169. package/dist/hooks/hook-agent-bridge.js +489 -0
  170. package/dist/hooks/hook-agent-bridge.js.map +1 -0
  171. package/dist/hooks/index.d.ts +3 -1
  172. package/dist/hooks/index.d.ts.map +1 -1
  173. package/dist/hooks/index.js +5 -1
  174. package/dist/hooks/index.js.map +1 -1
  175. package/dist/mcp/tool-catalog.d.ts.map +1 -1
  176. package/dist/mcp/tool-catalog.js +47 -0
  177. package/dist/mcp/tool-catalog.js.map +1 -1
  178. package/dist/mcp/tool-tiers.d.ts.map +1 -1
  179. package/dist/mcp/tool-tiers.js +4 -0
  180. package/dist/mcp/tool-tiers.js.map +1 -1
  181. package/dist/mcp/tools/index.d.ts +2 -1
  182. package/dist/mcp/tools/index.d.ts.map +1 -1
  183. package/dist/mcp/tools/index.js +15 -1
  184. package/dist/mcp/tools/index.js.map +1 -1
  185. package/dist/mcp/tools/learning-store.d.ts +30 -0
  186. package/dist/mcp/tools/learning-store.d.ts.map +1 -0
  187. package/dist/mcp/tools/learning-store.js +286 -0
  188. package/dist/mcp/tools/learning-store.js.map +1 -0
  189. package/package.json +1 -1
@@ -0,0 +1,462 @@
1
+ /**
2
+ * Dependency Graph - v17.5.0
3
+ *
4
+ * Tracks dependencies between tasks and agents for gap detection.
5
+ * Enables identification of:
6
+ * - Prerequisites that must complete before a task starts
7
+ * - Orphaned dependencies (missing or failed prerequisites)
8
+ * - Circular dependencies
9
+ * - Dependency chains and critical paths
10
+ *
11
+ * @module dependency-graph
12
+ */
13
+ // =============================================================================
14
+ // Dependency Graph Class
15
+ // =============================================================================
16
+ /**
17
+ * Dependency graph for tracking task relationships
18
+ */
19
+ export class DependencyGraph {
20
+ nodes = new Map();
21
+ edges = [];
22
+ /**
23
+ * Add a node to the graph
24
+ */
25
+ addNode(node) {
26
+ const existingNode = this.nodes.get(node.id);
27
+ const dependents = existingNode?.dependents || [];
28
+ this.nodes.set(node.id, {
29
+ ...node,
30
+ dependents,
31
+ lastUpdated: new Date(),
32
+ });
33
+ // Create edges for dependencies
34
+ for (const depId of node.dependencies) {
35
+ this.addEdge(depId, node.id, 'requires');
36
+ }
37
+ }
38
+ /**
39
+ * Add an edge to the graph
40
+ */
41
+ addEdge(from, to, type = 'requires') {
42
+ // Avoid duplicate edges
43
+ const exists = this.edges.some((e) => e.from === from && e.to === to);
44
+ if (exists)
45
+ return;
46
+ this.edges.push({
47
+ from,
48
+ to,
49
+ type,
50
+ satisfied: false,
51
+ });
52
+ // Update dependents list on source node
53
+ const sourceNode = this.nodes.get(from);
54
+ if (sourceNode && !sourceNode.dependents.includes(to)) {
55
+ sourceNode.dependents.push(to);
56
+ }
57
+ }
58
+ /**
59
+ * Update node status
60
+ */
61
+ updateStatus(nodeId, status) {
62
+ const node = this.nodes.get(nodeId);
63
+ if (node) {
64
+ node.status = status;
65
+ node.lastUpdated = new Date();
66
+ // Update edge satisfaction
67
+ if (status === 'completed') {
68
+ for (const edge of this.edges) {
69
+ if (edge.from === nodeId) {
70
+ edge.satisfied = true;
71
+ }
72
+ }
73
+ }
74
+ }
75
+ }
76
+ /**
77
+ * Get a node by ID
78
+ */
79
+ getNode(nodeId) {
80
+ return this.nodes.get(nodeId);
81
+ }
82
+ /**
83
+ * Get all nodes
84
+ */
85
+ getAllNodes() {
86
+ return Array.from(this.nodes.values());
87
+ }
88
+ /**
89
+ * Get all edges
90
+ */
91
+ getAllEdges() {
92
+ return [...this.edges];
93
+ }
94
+ /**
95
+ * Get dependencies of a node
96
+ */
97
+ getDependencies(nodeId) {
98
+ const node = this.nodes.get(nodeId);
99
+ if (!node)
100
+ return [];
101
+ return node.dependencies
102
+ .map((id) => this.nodes.get(id))
103
+ .filter((n) => n !== undefined);
104
+ }
105
+ /**
106
+ * Get dependents of a node
107
+ */
108
+ getDependents(nodeId) {
109
+ const node = this.nodes.get(nodeId);
110
+ if (!node)
111
+ return [];
112
+ return node.dependents
113
+ .map((id) => this.nodes.get(id))
114
+ .filter((n) => n !== undefined);
115
+ }
116
+ /**
117
+ * Check if all dependencies of a node are satisfied
118
+ */
119
+ areDependenciesSatisfied(nodeId) {
120
+ const node = this.nodes.get(nodeId);
121
+ if (!node)
122
+ return false;
123
+ for (const depId of node.dependencies) {
124
+ const dep = this.nodes.get(depId);
125
+ if (!dep || dep.status !== 'completed') {
126
+ return false;
127
+ }
128
+ }
129
+ return true;
130
+ }
131
+ /**
132
+ * Get nodes ready for execution
133
+ */
134
+ getReadyNodes() {
135
+ return this.getAllNodes().filter((node) => node.status === 'pending' && this.areDependenciesSatisfied(node.id));
136
+ }
137
+ /**
138
+ * Get nodes that are blocked
139
+ */
140
+ getBlockedNodes() {
141
+ return this.getAllNodes().filter((node) => node.status === 'pending' && !this.areDependenciesSatisfied(node.id));
142
+ }
143
+ /**
144
+ * Detect circular dependencies using DFS
145
+ */
146
+ detectCircularDependencies() {
147
+ const cycles = [];
148
+ const visited = new Set();
149
+ const recursionStack = new Set();
150
+ const dfs = (nodeId, path) => {
151
+ visited.add(nodeId);
152
+ recursionStack.add(nodeId);
153
+ const node = this.nodes.get(nodeId);
154
+ if (!node)
155
+ return;
156
+ for (const depId of node.dependencies) {
157
+ if (!visited.has(depId)) {
158
+ dfs(depId, [...path, nodeId]);
159
+ }
160
+ else if (recursionStack.has(depId)) {
161
+ // Found a cycle
162
+ const cycleStart = path.indexOf(depId);
163
+ if (cycleStart !== -1) {
164
+ cycles.push([...path.slice(cycleStart), nodeId, depId]);
165
+ }
166
+ else {
167
+ cycles.push([...path, nodeId, depId]);
168
+ }
169
+ }
170
+ }
171
+ recursionStack.delete(nodeId);
172
+ };
173
+ for (const node of this.nodes.values()) {
174
+ if (!visited.has(node.id)) {
175
+ dfs(node.id, []);
176
+ }
177
+ }
178
+ return cycles;
179
+ }
180
+ /**
181
+ * Find orphaned nodes (nodes with missing dependencies)
182
+ */
183
+ findOrphanedNodes() {
184
+ const orphaned = [];
185
+ for (const node of this.nodes.values()) {
186
+ for (const depId of node.dependencies) {
187
+ if (!this.nodes.has(depId)) {
188
+ orphaned.push(node.id);
189
+ break;
190
+ }
191
+ }
192
+ }
193
+ return orphaned;
194
+ }
195
+ /**
196
+ * Find the critical path (longest dependency chain)
197
+ */
198
+ findCriticalPath() {
199
+ const memo = new Map();
200
+ const findLongestPath = (nodeId) => {
201
+ if (memo.has(nodeId)) {
202
+ return memo.get(nodeId);
203
+ }
204
+ const node = this.nodes.get(nodeId);
205
+ if (!node || node.dependencies.length === 0) {
206
+ const path = [nodeId];
207
+ memo.set(nodeId, path);
208
+ return path;
209
+ }
210
+ let longestDep = [];
211
+ for (const depId of node.dependencies) {
212
+ const depPath = findLongestPath(depId);
213
+ if (depPath.length > longestDep.length) {
214
+ longestDep = depPath;
215
+ }
216
+ }
217
+ const path = [...longestDep, nodeId];
218
+ memo.set(nodeId, path);
219
+ return path;
220
+ };
221
+ let criticalPath = [];
222
+ for (const node of this.nodes.values()) {
223
+ const path = findLongestPath(node.id);
224
+ if (path.length > criticalPath.length) {
225
+ criticalPath = path;
226
+ }
227
+ }
228
+ return criticalPath;
229
+ }
230
+ /**
231
+ * Calculate completion percentage
232
+ */
233
+ calculateCompletionPercent() {
234
+ const allNodes = this.getAllNodes();
235
+ if (allNodes.length === 0)
236
+ return 100;
237
+ const completed = allNodes.filter((n) => n.status === 'completed').length;
238
+ return Math.round((completed / allNodes.length) * 100);
239
+ }
240
+ /**
241
+ * Analyze the dependency graph
242
+ */
243
+ analyze() {
244
+ const allNodes = this.getAllNodes();
245
+ const circularDeps = this.detectCircularDependencies();
246
+ const orphaned = this.findOrphanedNodes();
247
+ const criticalPath = this.findCriticalPath();
248
+ // Find blocking nodes (in_progress or failed nodes that have dependents)
249
+ const blockingNodes = allNodes
250
+ .filter((n) => (n.status === 'in_progress' || n.status === 'failed') && n.dependents.length > 0)
251
+ .map((n) => n.id);
252
+ return {
253
+ nodes: allNodes,
254
+ edges: this.getAllEdges(),
255
+ orphanedNodes: orphaned,
256
+ circularDependencies: circularDeps,
257
+ blockingNodes,
258
+ readyNodes: this.getReadyNodes().map((n) => n.id),
259
+ criticalPath,
260
+ completionPercent: this.calculateCompletionPercent(),
261
+ };
262
+ }
263
+ /**
264
+ * Identify gaps in the dependency graph
265
+ */
266
+ identifyGaps() {
267
+ const gaps = [];
268
+ const analysis = this.analyze();
269
+ // Missing dependencies
270
+ for (const nodeId of analysis.orphanedNodes) {
271
+ const node = this.nodes.get(nodeId);
272
+ if (node) {
273
+ const missingDeps = node.dependencies.filter((d) => !this.nodes.has(d));
274
+ gaps.push({
275
+ nodeId,
276
+ type: 'missing_dependency',
277
+ description: `Node "${node.name}" has missing dependencies: ${missingDeps.join(', ')}`,
278
+ resolution: 'Add the missing dependency nodes or remove the dependency',
279
+ severity: 'critical',
280
+ });
281
+ }
282
+ }
283
+ // Failed dependencies
284
+ for (const node of this.nodes.values()) {
285
+ for (const depId of node.dependencies) {
286
+ const dep = this.nodes.get(depId);
287
+ if (dep && dep.status === 'failed') {
288
+ gaps.push({
289
+ nodeId: node.id,
290
+ type: 'failed_dependency',
291
+ description: `Node "${node.name}" depends on failed node "${dep.name}"`,
292
+ resolution: 'Retry or fix the failed dependency, or provide alternative path',
293
+ severity: 'high',
294
+ });
295
+ }
296
+ }
297
+ }
298
+ // Circular dependencies
299
+ for (const cycle of analysis.circularDependencies) {
300
+ gaps.push({
301
+ nodeId: cycle[0],
302
+ type: 'circular',
303
+ description: `Circular dependency detected: ${cycle.join(' -> ')}`,
304
+ resolution: 'Break the cycle by removing one of the dependencies',
305
+ severity: 'critical',
306
+ });
307
+ }
308
+ // Stalled nodes (in_progress for too long)
309
+ const stalledThreshold = 5 * 60 * 1000; // 5 minutes
310
+ const now = Date.now();
311
+ for (const node of this.nodes.values()) {
312
+ if (node.status === 'in_progress') {
313
+ const elapsed = now - node.lastUpdated.getTime();
314
+ if (elapsed > stalledThreshold) {
315
+ gaps.push({
316
+ nodeId: node.id,
317
+ type: 'stalled',
318
+ description: `Node "${node.name}" has been in_progress for ${Math.round(elapsed / 60000)} minutes`,
319
+ resolution: 'Check agent health and consider re-routing to another agent',
320
+ severity: 'high',
321
+ });
322
+ }
323
+ }
324
+ }
325
+ return gaps;
326
+ }
327
+ /**
328
+ * Clear the graph
329
+ */
330
+ clear() {
331
+ this.nodes.clear();
332
+ this.edges = [];
333
+ }
334
+ /**
335
+ * Serialize to JSON
336
+ */
337
+ toJSON() {
338
+ return {
339
+ nodes: this.getAllNodes(),
340
+ edges: this.getAllEdges(),
341
+ };
342
+ }
343
+ /**
344
+ * Load from JSON
345
+ */
346
+ static fromJSON(data) {
347
+ const graph = new DependencyGraph();
348
+ for (const node of data.nodes) {
349
+ graph.nodes.set(node.id, {
350
+ ...node,
351
+ lastUpdated: new Date(node.lastUpdated),
352
+ });
353
+ }
354
+ graph.edges = data.edges;
355
+ return graph;
356
+ }
357
+ }
358
+ // =============================================================================
359
+ // Helper Functions
360
+ // =============================================================================
361
+ /**
362
+ * Create a dependency graph from tasks
363
+ */
364
+ export function createGraphFromTasks(tasks) {
365
+ const graph = new DependencyGraph();
366
+ for (const task of tasks) {
367
+ graph.addNode({
368
+ id: task.id,
369
+ name: task.title,
370
+ type: 'task',
371
+ status: task.status,
372
+ dependencies: task.dependencies,
373
+ metadata: {},
374
+ });
375
+ }
376
+ return graph;
377
+ }
378
+ /**
379
+ * Format dependency analysis for display
380
+ */
381
+ export function formatDependencyAnalysis(analysis) {
382
+ const lines = [];
383
+ lines.push('## Dependency Analysis');
384
+ lines.push('');
385
+ lines.push(`**Nodes:** ${analysis.nodes.length}`);
386
+ lines.push(`**Edges:** ${analysis.edges.length}`);
387
+ lines.push(`**Completion:** ${analysis.completionPercent}%`);
388
+ lines.push('');
389
+ if (analysis.readyNodes.length > 0) {
390
+ lines.push('### Ready to Execute');
391
+ for (const nodeId of analysis.readyNodes) {
392
+ lines.push(`- ${nodeId}`);
393
+ }
394
+ lines.push('');
395
+ }
396
+ if (analysis.blockingNodes.length > 0) {
397
+ lines.push('### Blocking Nodes');
398
+ for (const nodeId of analysis.blockingNodes) {
399
+ lines.push(`- ${nodeId}`);
400
+ }
401
+ lines.push('');
402
+ }
403
+ if (analysis.orphanedNodes.length > 0) {
404
+ lines.push('### Orphaned Nodes');
405
+ for (const nodeId of analysis.orphanedNodes) {
406
+ lines.push(`- ${nodeId}`);
407
+ }
408
+ lines.push('');
409
+ }
410
+ if (analysis.circularDependencies.length > 0) {
411
+ lines.push('### Circular Dependencies');
412
+ for (const cycle of analysis.circularDependencies) {
413
+ lines.push(`- ${cycle.join(' -> ')}`);
414
+ }
415
+ lines.push('');
416
+ }
417
+ if (analysis.criticalPath.length > 0) {
418
+ lines.push('### Critical Path');
419
+ lines.push(analysis.criticalPath.join(' -> '));
420
+ lines.push('');
421
+ }
422
+ return lines.join('\n');
423
+ }
424
+ /**
425
+ * Format gaps for display
426
+ */
427
+ export function formatDependencyGaps(gaps) {
428
+ const lines = [];
429
+ lines.push('## Dependency Gaps');
430
+ lines.push('');
431
+ if (gaps.length === 0) {
432
+ lines.push('No gaps detected.');
433
+ return lines.join('\n');
434
+ }
435
+ const bySeverity = {
436
+ critical: gaps.filter((g) => g.severity === 'critical'),
437
+ high: gaps.filter((g) => g.severity === 'high'),
438
+ medium: gaps.filter((g) => g.severity === 'medium'),
439
+ low: gaps.filter((g) => g.severity === 'low'),
440
+ };
441
+ for (const [severity, severityGaps] of Object.entries(bySeverity)) {
442
+ if (severityGaps.length === 0)
443
+ continue;
444
+ const emoji = severity === 'critical'
445
+ ? '🔴'
446
+ : severity === 'high'
447
+ ? '🟠'
448
+ : severity === 'medium'
449
+ ? '🟡'
450
+ : '🟢';
451
+ lines.push(`### ${emoji} ${severity.toUpperCase()} (${severityGaps.length})`);
452
+ lines.push('');
453
+ for (const gap of severityGaps) {
454
+ lines.push(`**${gap.type}** - ${gap.nodeId}`);
455
+ lines.push(` ${gap.description}`);
456
+ lines.push(` _Resolution:_ ${gap.resolution}`);
457
+ lines.push('');
458
+ }
459
+ }
460
+ return lines.join('\n');
461
+ }
462
+ //# sourceMappingURL=dependency-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-graph.js","sourceRoot":"","sources":["../../../src/core/agents/dependency-graph.ts"],"names":[],"mappings":"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"}