dino-spec 17.4.3 → 17.6.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 (277) hide show
  1. package/README.md +16 -1
  2. package/dist/commands/init.d.ts.map +1 -1
  3. package/dist/commands/init.js +10 -0
  4. package/dist/commands/init.js.map +1 -1
  5. package/dist/core/agents/__tests__/confidence-gate.test.d.ts +5 -0
  6. package/dist/core/agents/__tests__/confidence-gate.test.d.ts.map +1 -0
  7. package/dist/core/agents/__tests__/confidence-gate.test.js +329 -0
  8. package/dist/core/agents/__tests__/confidence-gate.test.js.map +1 -0
  9. package/dist/core/agents/__tests__/gap-detector.test.d.ts +5 -0
  10. package/dist/core/agents/__tests__/gap-detector.test.d.ts.map +1 -0
  11. package/dist/core/agents/__tests__/gap-detector.test.js +609 -0
  12. package/dist/core/agents/__tests__/gap-detector.test.js.map +1 -0
  13. package/dist/core/agents/__tests__/learning-loop.test.d.ts +5 -0
  14. package/dist/core/agents/__tests__/learning-loop.test.d.ts.map +1 -0
  15. package/dist/core/agents/__tests__/learning-loop.test.js +663 -0
  16. package/dist/core/agents/__tests__/learning-loop.test.js.map +1 -0
  17. package/dist/core/agents/__tests__/parallel-executor.test.d.ts +5 -0
  18. package/dist/core/agents/__tests__/parallel-executor.test.d.ts.map +1 -0
  19. package/dist/core/agents/__tests__/parallel-executor.test.js +610 -0
  20. package/dist/core/agents/__tests__/parallel-executor.test.js.map +1 -0
  21. package/dist/core/agents/__tests__/research-validator.test.js +5 -5
  22. package/dist/core/agents/__tests__/research-validator.test.js.map +1 -1
  23. package/dist/core/agents/__tests__/skill-creator.test.d.ts +5 -0
  24. package/dist/core/agents/__tests__/skill-creator.test.d.ts.map +1 -0
  25. package/dist/core/agents/__tests__/skill-creator.test.js +443 -0
  26. package/dist/core/agents/__tests__/skill-creator.test.js.map +1 -0
  27. package/dist/core/agents/__tests__/state-persistence.test.d.ts +2 -0
  28. package/dist/core/agents/__tests__/state-persistence.test.d.ts.map +1 -0
  29. package/dist/core/agents/__tests__/state-persistence.test.js +270 -0
  30. package/dist/core/agents/__tests__/state-persistence.test.js.map +1 -0
  31. package/dist/core/agents/__tests__/validation-cache.test.d.ts +2 -0
  32. package/dist/core/agents/__tests__/validation-cache.test.d.ts.map +1 -0
  33. package/dist/core/agents/__tests__/validation-cache.test.js +181 -0
  34. package/dist/core/agents/__tests__/validation-cache.test.js.map +1 -0
  35. package/dist/core/agents/ambiguity-resolver.d.ts +14 -1
  36. package/dist/core/agents/ambiguity-resolver.d.ts.map +1 -1
  37. package/dist/core/agents/ambiguity-resolver.js +24 -2
  38. package/dist/core/agents/ambiguity-resolver.js.map +1 -1
  39. package/dist/core/agents/blackboard.d.ts +22 -3
  40. package/dist/core/agents/blackboard.d.ts.map +1 -1
  41. package/dist/core/agents/blackboard.js +52 -2
  42. package/dist/core/agents/blackboard.js.map +1 -1
  43. package/dist/core/agents/circuit-breaker.d.ts +79 -1
  44. package/dist/core/agents/circuit-breaker.d.ts.map +1 -1
  45. package/dist/core/agents/circuit-breaker.js +175 -1
  46. package/dist/core/agents/circuit-breaker.js.map +1 -1
  47. package/dist/core/agents/clarification-phase.d.ts +128 -0
  48. package/dist/core/agents/clarification-phase.d.ts.map +1 -0
  49. package/dist/core/agents/clarification-phase.js +375 -0
  50. package/dist/core/agents/clarification-phase.js.map +1 -0
  51. package/dist/core/agents/confidence-gate.d.ts +133 -4
  52. package/dist/core/agents/confidence-gate.d.ts.map +1 -1
  53. package/dist/core/agents/confidence-gate.js +376 -9
  54. package/dist/core/agents/confidence-gate.js.map +1 -1
  55. package/dist/core/agents/correction-tracker.d.ts +197 -0
  56. package/dist/core/agents/correction-tracker.d.ts.map +1 -0
  57. package/dist/core/agents/correction-tracker.js +366 -0
  58. package/dist/core/agents/correction-tracker.js.map +1 -0
  59. package/dist/core/agents/dependency-graph.d.ts +193 -0
  60. package/dist/core/agents/dependency-graph.d.ts.map +1 -0
  61. package/dist/core/agents/dependency-graph.js +462 -0
  62. package/dist/core/agents/dependency-graph.js.map +1 -0
  63. package/dist/core/agents/gap-detector.d.ts +277 -0
  64. package/dist/core/agents/gap-detector.d.ts.map +1 -0
  65. package/dist/core/agents/gap-detector.js +540 -0
  66. package/dist/core/agents/gap-detector.js.map +1 -0
  67. package/dist/core/agents/index.d.ts +14 -1
  68. package/dist/core/agents/index.d.ts.map +1 -1
  69. package/dist/core/agents/index.js +26 -1
  70. package/dist/core/agents/index.js.map +1 -1
  71. package/dist/core/agents/message-protocol.d.ts +13 -2
  72. package/dist/core/agents/message-protocol.d.ts.map +1 -1
  73. package/dist/core/agents/message-protocol.js +20 -1
  74. package/dist/core/agents/message-protocol.js.map +1 -1
  75. package/dist/core/agents/parallel-executor.d.ts +182 -0
  76. package/dist/core/agents/parallel-executor.d.ts.map +1 -0
  77. package/dist/core/agents/parallel-executor.js +474 -0
  78. package/dist/core/agents/parallel-executor.js.map +1 -0
  79. package/dist/core/agents/pattern-detector.d.ts +157 -0
  80. package/dist/core/agents/pattern-detector.d.ts.map +1 -0
  81. package/dist/core/agents/pattern-detector.js +370 -0
  82. package/dist/core/agents/pattern-detector.js.map +1 -0
  83. package/dist/core/agents/registry-client.d.ts +6 -0
  84. package/dist/core/agents/registry-client.d.ts.map +1 -1
  85. package/dist/core/agents/registry-client.js +3 -0
  86. package/dist/core/agents/registry-client.js.map +1 -1
  87. package/dist/core/agents/research-phase.d.ts +114 -0
  88. package/dist/core/agents/research-phase.d.ts.map +1 -0
  89. package/dist/core/agents/research-phase.js +355 -0
  90. package/dist/core/agents/research-phase.js.map +1 -0
  91. package/dist/core/agents/research-validator.d.ts +13 -2
  92. package/dist/core/agents/research-validator.d.ts.map +1 -1
  93. package/dist/core/agents/research-validator.js +63 -31
  94. package/dist/core/agents/research-validator.js.map +1 -1
  95. package/dist/core/agents/skill-creator.d.ts +174 -0
  96. package/dist/core/agents/skill-creator.d.ts.map +1 -0
  97. package/dist/core/agents/skill-creator.js +570 -0
  98. package/dist/core/agents/skill-creator.js.map +1 -0
  99. package/dist/core/agents/state-persistence.d.ts +184 -0
  100. package/dist/core/agents/state-persistence.d.ts.map +1 -0
  101. package/dist/core/agents/state-persistence.js +394 -0
  102. package/dist/core/agents/state-persistence.js.map +1 -0
  103. package/dist/core/agents/validation-cache.d.ts +122 -0
  104. package/dist/core/agents/validation-cache.d.ts.map +1 -0
  105. package/dist/core/agents/validation-cache.js +280 -0
  106. package/dist/core/agents/validation-cache.js.map +1 -0
  107. package/dist/core/agents/validators/__tests__/validators.test.d.ts +5 -0
  108. package/dist/core/agents/validators/__tests__/validators.test.d.ts.map +1 -0
  109. package/dist/core/agents/validators/__tests__/validators.test.js +321 -0
  110. package/dist/core/agents/validators/__tests__/validators.test.js.map +1 -0
  111. package/dist/core/agents/validators/base-validator.d.ts +191 -0
  112. package/dist/core/agents/validators/base-validator.d.ts.map +1 -0
  113. package/dist/core/agents/validators/base-validator.js +192 -0
  114. package/dist/core/agents/validators/base-validator.js.map +1 -0
  115. package/dist/core/agents/validators/index.d.ts +7 -0
  116. package/dist/core/agents/validators/index.d.ts.map +1 -0
  117. package/dist/core/agents/validators/index.js +7 -0
  118. package/dist/core/agents/validators/index.js.map +1 -0
  119. package/dist/core/agents/validators/npm-validator.d.ts +50 -0
  120. package/dist/core/agents/validators/npm-validator.d.ts.map +1 -0
  121. package/dist/core/agents/validators/npm-validator.js +211 -0
  122. package/dist/core/agents/validators/npm-validator.js.map +1 -0
  123. package/dist/core/agents/validators/pip-validator.d.ts +49 -0
  124. package/dist/core/agents/validators/pip-validator.d.ts.map +1 -0
  125. package/dist/core/agents/validators/pip-validator.js +191 -0
  126. package/dist/core/agents/validators/pip-validator.js.map +1 -0
  127. package/dist/core/agents/validators/validator-registry.d.ts +122 -0
  128. package/dist/core/agents/validators/validator-registry.d.ts.map +1 -0
  129. package/dist/core/agents/validators/validator-registry.js +321 -0
  130. package/dist/core/agents/validators/validator-registry.js.map +1 -0
  131. package/dist/core/context/auto-injection-engine.d.ts +7 -1
  132. package/dist/core/context/auto-injection-engine.d.ts.map +1 -1
  133. package/dist/core/context/auto-injection-engine.js +46 -1
  134. package/dist/core/context/auto-injection-engine.js.map +1 -1
  135. package/dist/core/context-repl/types.d.ts +4 -4
  136. package/dist/core/memory/index.d.ts +1 -0
  137. package/dist/core/memory/index.d.ts.map +1 -1
  138. package/dist/core/memory/index.js +2 -0
  139. package/dist/core/memory/index.js.map +1 -1
  140. package/dist/core/memory/learning-store.d.ts +222 -0
  141. package/dist/core/memory/learning-store.d.ts.map +1 -0
  142. package/dist/core/memory/learning-store.js +477 -0
  143. package/dist/core/memory/learning-store.js.map +1 -0
  144. package/dist/core/ralph/__tests__/prd-generator-session-context.test.d.ts +7 -0
  145. package/dist/core/ralph/__tests__/prd-generator-session-context.test.d.ts.map +1 -0
  146. package/dist/core/ralph/__tests__/prd-generator-session-context.test.js +143 -0
  147. package/dist/core/ralph/__tests__/prd-generator-session-context.test.js.map +1 -0
  148. package/dist/core/ralph/index.d.ts +3 -3
  149. package/dist/core/ralph/index.d.ts.map +1 -1
  150. package/dist/core/ralph/index.js +2 -2
  151. package/dist/core/ralph/index.js.map +1 -1
  152. package/dist/core/ralph/prd-generator.d.ts +18 -3
  153. package/dist/core/ralph/prd-generator.d.ts.map +1 -1
  154. package/dist/core/ralph/prd-generator.js +33 -11
  155. package/dist/core/ralph/prd-generator.js.map +1 -1
  156. package/dist/core/ralph/progress-tracker.d.ts.map +1 -1
  157. package/dist/core/ralph/progress-tracker.js +2 -1
  158. package/dist/core/ralph/progress-tracker.js.map +1 -1
  159. package/dist/core/ralph/sub-agent-spawner.d.ts +4 -2
  160. package/dist/core/ralph/sub-agent-spawner.d.ts.map +1 -1
  161. package/dist/core/ralph/sub-agent-spawner.js +48 -3
  162. package/dist/core/ralph/sub-agent-spawner.js.map +1 -1
  163. package/dist/core/ralph/task-integration.d.ts.map +1 -1
  164. package/dist/core/ralph/task-integration.js +6 -3
  165. package/dist/core/ralph/task-integration.js.map +1 -1
  166. package/dist/core/ralph/types.d.ts +62 -3
  167. package/dist/core/ralph/types.d.ts.map +1 -1
  168. package/dist/core/ralph/types.js.map +1 -1
  169. package/dist/core/recommendations/recommendation-engine.d.ts +6 -0
  170. package/dist/core/recommendations/recommendation-engine.d.ts.map +1 -1
  171. package/dist/core/recommendations/recommendation-engine.js.map +1 -1
  172. package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.d.ts +5 -0
  173. package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.d.ts.map +1 -0
  174. package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.js +401 -0
  175. package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.js.map +1 -0
  176. package/dist/core/spec-analyzer/ambiguity-detector.d.ts +99 -0
  177. package/dist/core/spec-analyzer/ambiguity-detector.d.ts.map +1 -0
  178. package/dist/core/spec-analyzer/ambiguity-detector.js +250 -0
  179. package/dist/core/spec-analyzer/ambiguity-detector.js.map +1 -0
  180. package/dist/core/spec-analyzer/clarification-generator.d.ts +76 -0
  181. package/dist/core/spec-analyzer/clarification-generator.d.ts.map +1 -0
  182. package/dist/core/spec-analyzer/clarification-generator.js +257 -0
  183. package/dist/core/spec-analyzer/clarification-generator.js.map +1 -0
  184. package/dist/core/spec-analyzer/index.d.ts +22 -2
  185. package/dist/core/spec-analyzer/index.d.ts.map +1 -1
  186. package/dist/core/spec-analyzer/index.js +21 -3
  187. package/dist/core/spec-analyzer/index.js.map +1 -1
  188. package/dist/core/spec-analyzer/patterns.d.ts +73 -0
  189. package/dist/core/spec-analyzer/patterns.d.ts.map +1 -0
  190. package/dist/core/spec-analyzer/patterns.js +412 -0
  191. package/dist/core/spec-analyzer/patterns.js.map +1 -0
  192. package/dist/hooks/__tests__/dynamic-generator.test.d.ts +5 -0
  193. package/dist/hooks/__tests__/dynamic-generator.test.d.ts.map +1 -0
  194. package/dist/hooks/__tests__/dynamic-generator.test.js +425 -0
  195. package/dist/hooks/__tests__/dynamic-generator.test.js.map +1 -0
  196. package/dist/hooks/__tests__/hook-agent-bridge.test.d.ts +5 -0
  197. package/dist/hooks/__tests__/hook-agent-bridge.test.d.ts.map +1 -0
  198. package/dist/hooks/__tests__/hook-agent-bridge.test.js +315 -0
  199. package/dist/hooks/__tests__/hook-agent-bridge.test.js.map +1 -0
  200. package/dist/hooks/dynamic-generator.d.ts +158 -0
  201. package/dist/hooks/dynamic-generator.d.ts.map +1 -0
  202. package/dist/hooks/dynamic-generator.js +448 -0
  203. package/dist/hooks/dynamic-generator.js.map +1 -0
  204. package/dist/hooks/hook-agent-bridge.d.ts +252 -0
  205. package/dist/hooks/hook-agent-bridge.d.ts.map +1 -0
  206. package/dist/hooks/hook-agent-bridge.js +489 -0
  207. package/dist/hooks/hook-agent-bridge.js.map +1 -0
  208. package/dist/hooks/index.d.ts +3 -1
  209. package/dist/hooks/index.d.ts.map +1 -1
  210. package/dist/hooks/index.js +5 -1
  211. package/dist/hooks/index.js.map +1 -1
  212. package/dist/mcp/tool-catalog.d.ts.map +1 -1
  213. package/dist/mcp/tool-catalog.js +47 -0
  214. package/dist/mcp/tool-catalog.js.map +1 -1
  215. package/dist/mcp/tool-tiers.d.ts.map +1 -1
  216. package/dist/mcp/tool-tiers.js +4 -0
  217. package/dist/mcp/tool-tiers.js.map +1 -1
  218. package/dist/mcp/tools/auto-inject.d.ts +4 -0
  219. package/dist/mcp/tools/auto-inject.d.ts.map +1 -1
  220. package/dist/mcp/tools/auto-inject.js +13 -4
  221. package/dist/mcp/tools/auto-inject.js.map +1 -1
  222. package/dist/mcp/tools/chunking.d.ts +3 -0
  223. package/dist/mcp/tools/chunking.d.ts.map +1 -1
  224. package/dist/mcp/tools/chunking.js +10 -4
  225. package/dist/mcp/tools/chunking.js.map +1 -1
  226. package/dist/mcp/tools/embeddings.d.ts +4 -0
  227. package/dist/mcp/tools/embeddings.d.ts.map +1 -1
  228. package/dist/mcp/tools/embeddings.js +16 -6
  229. package/dist/mcp/tools/embeddings.js.map +1 -1
  230. package/dist/mcp/tools/index.d.ts +2 -1
  231. package/dist/mcp/tools/index.d.ts.map +1 -1
  232. package/dist/mcp/tools/index.js +15 -1
  233. package/dist/mcp/tools/index.js.map +1 -1
  234. package/dist/mcp/tools/knowledge-graph.d.ts +3 -0
  235. package/dist/mcp/tools/knowledge-graph.d.ts.map +1 -1
  236. package/dist/mcp/tools/knowledge-graph.js +19 -8
  237. package/dist/mcp/tools/knowledge-graph.js.map +1 -1
  238. package/dist/mcp/tools/lazy-context.d.ts +2 -0
  239. package/dist/mcp/tools/lazy-context.d.ts.map +1 -1
  240. package/dist/mcp/tools/lazy-context.js +10 -4
  241. package/dist/mcp/tools/lazy-context.js.map +1 -1
  242. package/dist/mcp/tools/learning-store.d.ts +30 -0
  243. package/dist/mcp/tools/learning-store.d.ts.map +1 -0
  244. package/dist/mcp/tools/learning-store.js +286 -0
  245. package/dist/mcp/tools/learning-store.js.map +1 -0
  246. package/dist/mcp/tools/memory-decay.d.ts.map +1 -1
  247. package/dist/mcp/tools/memory-decay.js +4 -2
  248. package/dist/mcp/tools/memory-decay.js.map +1 -1
  249. package/dist/mcp/tools/prefetch.d.ts +4 -1
  250. package/dist/mcp/tools/prefetch.d.ts.map +1 -1
  251. package/dist/mcp/tools/prefetch.js +18 -7
  252. package/dist/mcp/tools/prefetch.js.map +1 -1
  253. package/dist/mcp/tools/ralph.d.ts +2 -0
  254. package/dist/mcp/tools/ralph.d.ts.map +1 -1
  255. package/dist/mcp/tools/ralph.js +96 -6
  256. package/dist/mcp/tools/ralph.js.map +1 -1
  257. package/dist/mcp/tools/recommendations.d.ts +2 -0
  258. package/dist/mcp/tools/recommendations.d.ts.map +1 -1
  259. package/dist/mcp/tools/recommendations.js +13 -4
  260. package/dist/mcp/tools/recommendations.js.map +1 -1
  261. package/dist/mcp/tools/retrieval.d.ts +4 -0
  262. package/dist/mcp/tools/retrieval.d.ts.map +1 -1
  263. package/dist/mcp/tools/retrieval.js +25 -10
  264. package/dist/mcp/tools/retrieval.js.map +1 -1
  265. package/dist/mcp/tools/spec-feedback.d.ts +2 -0
  266. package/dist/mcp/tools/spec-feedback.d.ts.map +1 -1
  267. package/dist/mcp/tools/spec-feedback.js +33 -16
  268. package/dist/mcp/tools/spec-feedback.js.map +1 -1
  269. package/dist/mcp/utils/index.d.ts +1 -0
  270. package/dist/mcp/utils/index.d.ts.map +1 -1
  271. package/dist/mcp/utils/index.js +2 -0
  272. package/dist/mcp/utils/index.js.map +1 -1
  273. package/dist/mcp/utils/session-context.d.ts +108 -0
  274. package/dist/mcp/utils/session-context.d.ts.map +1 -0
  275. package/dist/mcp/utils/session-context.js +157 -0
  276. package/dist/mcp/utils/session-context.js.map +1 -0
  277. package/package.json +1 -1
@@ -0,0 +1,193 @@
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
+ * A node in the dependency graph
15
+ */
16
+ export interface DependencyNode {
17
+ /** Unique identifier for the node */
18
+ id: string;
19
+ /** Display name */
20
+ name: string;
21
+ /** Node type */
22
+ type: 'task' | 'agent' | 'resource' | 'output';
23
+ /** Current status */
24
+ status: 'pending' | 'in_progress' | 'completed' | 'failed' | 'blocked';
25
+ /** IDs of nodes this node depends on */
26
+ dependencies: string[];
27
+ /** IDs of nodes that depend on this node */
28
+ dependents: string[];
29
+ /** Metadata about the node */
30
+ metadata: Record<string, unknown>;
31
+ /** Timestamp when status last changed */
32
+ lastUpdated: Date;
33
+ }
34
+ /**
35
+ * An edge in the dependency graph
36
+ */
37
+ export interface DependencyEdge {
38
+ /** Source node ID (the dependency) */
39
+ from: string;
40
+ /** Target node ID (the dependent) */
41
+ to: string;
42
+ /** Type of dependency */
43
+ type: 'requires' | 'produces' | 'blocks' | 'optional';
44
+ /** Whether this edge represents a satisfied dependency */
45
+ satisfied: boolean;
46
+ }
47
+ /**
48
+ * Result of dependency analysis
49
+ */
50
+ export interface DependencyAnalysis {
51
+ /** All nodes in the graph */
52
+ nodes: DependencyNode[];
53
+ /** All edges in the graph */
54
+ edges: DependencyEdge[];
55
+ /** Nodes with missing dependencies */
56
+ orphanedNodes: string[];
57
+ /** Detected circular dependency chains */
58
+ circularDependencies: string[][];
59
+ /** Nodes that are blocking progress */
60
+ blockingNodes: string[];
61
+ /** Nodes ready to execute (all deps satisfied) */
62
+ readyNodes: string[];
63
+ /** Critical path (longest dependency chain) */
64
+ criticalPath: string[];
65
+ /** Overall completion percentage */
66
+ completionPercent: number;
67
+ }
68
+ /**
69
+ * Gap between expected and actual outputs
70
+ */
71
+ export interface DependencyGap {
72
+ /** Node with the gap */
73
+ nodeId: string;
74
+ /** Type of gap */
75
+ type: 'missing_dependency' | 'failed_dependency' | 'orphaned' | 'circular' | 'stalled';
76
+ /** Description of the gap */
77
+ description: string;
78
+ /** Suggested resolution */
79
+ resolution: string;
80
+ /** Severity */
81
+ severity: 'critical' | 'high' | 'medium' | 'low';
82
+ }
83
+ /**
84
+ * Dependency graph for tracking task relationships
85
+ */
86
+ export declare class DependencyGraph {
87
+ private nodes;
88
+ private edges;
89
+ /**
90
+ * Add a node to the graph
91
+ */
92
+ addNode(node: Omit<DependencyNode, 'dependents' | 'lastUpdated'>): void;
93
+ /**
94
+ * Add an edge to the graph
95
+ */
96
+ addEdge(from: string, to: string, type?: DependencyEdge['type']): void;
97
+ /**
98
+ * Update node status
99
+ */
100
+ updateStatus(nodeId: string, status: DependencyNode['status']): void;
101
+ /**
102
+ * Get a node by ID
103
+ */
104
+ getNode(nodeId: string): DependencyNode | undefined;
105
+ /**
106
+ * Get all nodes
107
+ */
108
+ getAllNodes(): DependencyNode[];
109
+ /**
110
+ * Get all edges
111
+ */
112
+ getAllEdges(): DependencyEdge[];
113
+ /**
114
+ * Get dependencies of a node
115
+ */
116
+ getDependencies(nodeId: string): DependencyNode[];
117
+ /**
118
+ * Get dependents of a node
119
+ */
120
+ getDependents(nodeId: string): DependencyNode[];
121
+ /**
122
+ * Check if all dependencies of a node are satisfied
123
+ */
124
+ areDependenciesSatisfied(nodeId: string): boolean;
125
+ /**
126
+ * Get nodes ready for execution
127
+ */
128
+ getReadyNodes(): DependencyNode[];
129
+ /**
130
+ * Get nodes that are blocked
131
+ */
132
+ getBlockedNodes(): DependencyNode[];
133
+ /**
134
+ * Detect circular dependencies using DFS
135
+ */
136
+ detectCircularDependencies(): string[][];
137
+ /**
138
+ * Find orphaned nodes (nodes with missing dependencies)
139
+ */
140
+ findOrphanedNodes(): string[];
141
+ /**
142
+ * Find the critical path (longest dependency chain)
143
+ */
144
+ findCriticalPath(): string[];
145
+ /**
146
+ * Calculate completion percentage
147
+ */
148
+ calculateCompletionPercent(): number;
149
+ /**
150
+ * Analyze the dependency graph
151
+ */
152
+ analyze(): DependencyAnalysis;
153
+ /**
154
+ * Identify gaps in the dependency graph
155
+ */
156
+ identifyGaps(): DependencyGap[];
157
+ /**
158
+ * Clear the graph
159
+ */
160
+ clear(): void;
161
+ /**
162
+ * Serialize to JSON
163
+ */
164
+ toJSON(): {
165
+ nodes: DependencyNode[];
166
+ edges: DependencyEdge[];
167
+ };
168
+ /**
169
+ * Load from JSON
170
+ */
171
+ static fromJSON(data: {
172
+ nodes: DependencyNode[];
173
+ edges: DependencyEdge[];
174
+ }): DependencyGraph;
175
+ }
176
+ /**
177
+ * Create a dependency graph from tasks
178
+ */
179
+ export declare function createGraphFromTasks(tasks: Array<{
180
+ id: string;
181
+ title: string;
182
+ status: string;
183
+ dependencies: string[];
184
+ }>): DependencyGraph;
185
+ /**
186
+ * Format dependency analysis for display
187
+ */
188
+ export declare function formatDependencyAnalysis(analysis: DependencyAnalysis): string;
189
+ /**
190
+ * Format gaps for display
191
+ */
192
+ export declare function formatDependencyGaps(gaps: DependencyGap[]): string;
193
+ //# sourceMappingURL=dependency-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-graph.d.ts","sourceRoot":"","sources":["../../../src/core/agents/dependency-graph.ts"],"names":[],"mappings":"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"}
@@ -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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"}