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,609 @@
1
+ /**
2
+ * Tests for gap-detector module (v17.5.0)
3
+ */
4
+ import { beforeEach, describe, expect, it } from 'vitest';
5
+ import { createGraphFromTasks, DependencyGraph, formatDependencyAnalysis, formatDependencyGaps, } from '../dependency-graph.js';
6
+ import { createGapDetector, DEFAULT_GAP_DETECTOR_CONFIG, formatGapReport, GapDetector, hasBlockingIssues, hasCriticalIssues, } from '../gap-detector.js';
7
+ describe('DependencyGraph', () => {
8
+ let graph;
9
+ beforeEach(() => {
10
+ graph = new DependencyGraph();
11
+ });
12
+ describe('addNode', () => {
13
+ it('should add a node to the graph', () => {
14
+ graph.addNode({
15
+ id: 'task-1',
16
+ name: 'Task 1',
17
+ type: 'task',
18
+ status: 'pending',
19
+ dependencies: [],
20
+ metadata: {},
21
+ });
22
+ const node = graph.getNode('task-1');
23
+ expect(node).toBeDefined();
24
+ expect(node?.name).toBe('Task 1');
25
+ expect(node?.status).toBe('pending');
26
+ });
27
+ it('should create edges for dependencies', () => {
28
+ graph.addNode({
29
+ id: 'task-1',
30
+ name: 'Task 1',
31
+ type: 'task',
32
+ status: 'completed',
33
+ dependencies: [],
34
+ metadata: {},
35
+ });
36
+ graph.addNode({
37
+ id: 'task-2',
38
+ name: 'Task 2',
39
+ type: 'task',
40
+ status: 'pending',
41
+ dependencies: ['task-1'],
42
+ metadata: {},
43
+ });
44
+ const edges = graph.getAllEdges();
45
+ expect(edges).toHaveLength(1);
46
+ expect(edges[0].from).toBe('task-1');
47
+ expect(edges[0].to).toBe('task-2');
48
+ });
49
+ });
50
+ describe('updateStatus', () => {
51
+ it('should update node status', () => {
52
+ graph.addNode({
53
+ id: 'task-1',
54
+ name: 'Task 1',
55
+ type: 'task',
56
+ status: 'pending',
57
+ dependencies: [],
58
+ metadata: {},
59
+ });
60
+ graph.updateStatus('task-1', 'completed');
61
+ const node = graph.getNode('task-1');
62
+ expect(node?.status).toBe('completed');
63
+ });
64
+ it('should mark edges as satisfied when node completes', () => {
65
+ graph.addNode({
66
+ id: 'task-1',
67
+ name: 'Task 1',
68
+ type: 'task',
69
+ status: 'pending',
70
+ dependencies: [],
71
+ metadata: {},
72
+ });
73
+ graph.addNode({
74
+ id: 'task-2',
75
+ name: 'Task 2',
76
+ type: 'task',
77
+ status: 'pending',
78
+ dependencies: ['task-1'],
79
+ metadata: {},
80
+ });
81
+ graph.updateStatus('task-1', 'completed');
82
+ const edges = graph.getAllEdges();
83
+ expect(edges[0].satisfied).toBe(true);
84
+ });
85
+ });
86
+ describe('areDependenciesSatisfied', () => {
87
+ it('should return true when no dependencies', () => {
88
+ graph.addNode({
89
+ id: 'task-1',
90
+ name: 'Task 1',
91
+ type: 'task',
92
+ status: 'pending',
93
+ dependencies: [],
94
+ metadata: {},
95
+ });
96
+ expect(graph.areDependenciesSatisfied('task-1')).toBe(true);
97
+ });
98
+ it('should return false when dependencies not completed', () => {
99
+ graph.addNode({
100
+ id: 'task-1',
101
+ name: 'Task 1',
102
+ type: 'task',
103
+ status: 'pending',
104
+ dependencies: [],
105
+ metadata: {},
106
+ });
107
+ graph.addNode({
108
+ id: 'task-2',
109
+ name: 'Task 2',
110
+ type: 'task',
111
+ status: 'pending',
112
+ dependencies: ['task-1'],
113
+ metadata: {},
114
+ });
115
+ expect(graph.areDependenciesSatisfied('task-2')).toBe(false);
116
+ });
117
+ it('should return true when all dependencies completed', () => {
118
+ graph.addNode({
119
+ id: 'task-1',
120
+ name: 'Task 1',
121
+ type: 'task',
122
+ status: 'completed',
123
+ dependencies: [],
124
+ metadata: {},
125
+ });
126
+ graph.addNode({
127
+ id: 'task-2',
128
+ name: 'Task 2',
129
+ type: 'task',
130
+ status: 'pending',
131
+ dependencies: ['task-1'],
132
+ metadata: {},
133
+ });
134
+ expect(graph.areDependenciesSatisfied('task-2')).toBe(true);
135
+ });
136
+ });
137
+ describe('getReadyNodes', () => {
138
+ it('should return nodes with all dependencies satisfied', () => {
139
+ graph.addNode({
140
+ id: 'task-1',
141
+ name: 'Task 1',
142
+ type: 'task',
143
+ status: 'completed',
144
+ dependencies: [],
145
+ metadata: {},
146
+ });
147
+ graph.addNode({
148
+ id: 'task-2',
149
+ name: 'Task 2',
150
+ type: 'task',
151
+ status: 'pending',
152
+ dependencies: ['task-1'],
153
+ metadata: {},
154
+ });
155
+ graph.addNode({
156
+ id: 'task-3',
157
+ name: 'Task 3',
158
+ type: 'task',
159
+ status: 'pending',
160
+ dependencies: ['task-2'],
161
+ metadata: {},
162
+ });
163
+ const ready = graph.getReadyNodes();
164
+ expect(ready).toHaveLength(1);
165
+ expect(ready[0].id).toBe('task-2');
166
+ });
167
+ });
168
+ describe('detectCircularDependencies', () => {
169
+ it('should return empty for no cycles', () => {
170
+ graph.addNode({
171
+ id: 'task-1',
172
+ name: 'Task 1',
173
+ type: 'task',
174
+ status: 'pending',
175
+ dependencies: [],
176
+ metadata: {},
177
+ });
178
+ graph.addNode({
179
+ id: 'task-2',
180
+ name: 'Task 2',
181
+ type: 'task',
182
+ status: 'pending',
183
+ dependencies: ['task-1'],
184
+ metadata: {},
185
+ });
186
+ const cycles = graph.detectCircularDependencies();
187
+ expect(cycles).toHaveLength(0);
188
+ });
189
+ });
190
+ describe('findOrphanedNodes', () => {
191
+ it('should find nodes with missing dependencies', () => {
192
+ graph.addNode({
193
+ id: 'task-1',
194
+ name: 'Task 1',
195
+ type: 'task',
196
+ status: 'pending',
197
+ dependencies: ['missing-task'],
198
+ metadata: {},
199
+ });
200
+ const orphaned = graph.findOrphanedNodes();
201
+ expect(orphaned).toContain('task-1');
202
+ });
203
+ });
204
+ describe('analyze', () => {
205
+ it('should return complete analysis', () => {
206
+ graph.addNode({
207
+ id: 'task-1',
208
+ name: 'Task 1',
209
+ type: 'task',
210
+ status: 'completed',
211
+ dependencies: [],
212
+ metadata: {},
213
+ });
214
+ graph.addNode({
215
+ id: 'task-2',
216
+ name: 'Task 2',
217
+ type: 'task',
218
+ status: 'pending',
219
+ dependencies: ['task-1'],
220
+ metadata: {},
221
+ });
222
+ const analysis = graph.analyze();
223
+ expect(analysis.nodes).toHaveLength(2);
224
+ expect(analysis.edges).toHaveLength(1);
225
+ expect(analysis.completionPercent).toBe(50);
226
+ expect(analysis.readyNodes).toContain('task-2');
227
+ });
228
+ });
229
+ describe('identifyGaps', () => {
230
+ it('should identify missing dependencies', () => {
231
+ graph.addNode({
232
+ id: 'task-1',
233
+ name: 'Task 1',
234
+ type: 'task',
235
+ status: 'pending',
236
+ dependencies: ['missing'],
237
+ metadata: {},
238
+ });
239
+ const gaps = graph.identifyGaps();
240
+ expect(gaps.some((g) => g.type === 'missing_dependency')).toBe(true);
241
+ });
242
+ it('should identify failed dependencies', () => {
243
+ graph.addNode({
244
+ id: 'task-1',
245
+ name: 'Task 1',
246
+ type: 'task',
247
+ status: 'failed',
248
+ dependencies: [],
249
+ metadata: {},
250
+ });
251
+ graph.addNode({
252
+ id: 'task-2',
253
+ name: 'Task 2',
254
+ type: 'task',
255
+ status: 'pending',
256
+ dependencies: ['task-1'],
257
+ metadata: {},
258
+ });
259
+ const gaps = graph.identifyGaps();
260
+ expect(gaps.some((g) => g.type === 'failed_dependency')).toBe(true);
261
+ });
262
+ });
263
+ describe('serialization', () => {
264
+ it('should serialize and deserialize', () => {
265
+ graph.addNode({
266
+ id: 'task-1',
267
+ name: 'Task 1',
268
+ type: 'task',
269
+ status: 'completed',
270
+ dependencies: [],
271
+ metadata: { key: 'value' },
272
+ });
273
+ const json = graph.toJSON();
274
+ const restored = DependencyGraph.fromJSON(json);
275
+ expect(restored.getNode('task-1')?.name).toBe('Task 1');
276
+ expect(restored.getNode('task-1')?.metadata).toEqual({ key: 'value' });
277
+ });
278
+ });
279
+ });
280
+ describe('createGraphFromTasks', () => {
281
+ it('should create graph from task array', () => {
282
+ const tasks = [
283
+ { id: 'task-1', title: 'Task 1', status: 'completed', dependencies: [] },
284
+ { id: 'task-2', title: 'Task 2', status: 'pending', dependencies: ['task-1'] },
285
+ ];
286
+ const graph = createGraphFromTasks(tasks);
287
+ expect(graph.getAllNodes()).toHaveLength(2);
288
+ expect(graph.getAllEdges()).toHaveLength(1);
289
+ });
290
+ });
291
+ describe('GapDetector', () => {
292
+ let detector;
293
+ beforeEach(() => {
294
+ detector = new GapDetector();
295
+ });
296
+ describe('configuration', () => {
297
+ it('should use default configuration', () => {
298
+ expect(DEFAULT_GAP_DETECTOR_CONFIG.stuckThresholdMs).toBe(5 * 60 * 1000);
299
+ expect(DEFAULT_GAP_DETECTOR_CONFIG.enableAutoRecovery).toBe(true);
300
+ expect(DEFAULT_GAP_DETECTOR_CONFIG.maxRecoveryAttempts).toBe(3);
301
+ });
302
+ it('should accept custom configuration', () => {
303
+ const custom = createGapDetector({ stuckThresholdMs: 1000 });
304
+ expect(custom).toBeDefined();
305
+ });
306
+ });
307
+ describe('output specification', () => {
308
+ it('should register and check outputs', () => {
309
+ detector.registerOutput({
310
+ id: 'output-1',
311
+ description: 'Test output',
312
+ type: 'file',
313
+ target: '/path/to/file',
314
+ });
315
+ const result = detector.checkOutputMatch('output-1');
316
+ expect(result.matches).toBe(false);
317
+ expect(result.gaps).toContain('Output "Test output" not delivered');
318
+ });
319
+ it('should mark output as delivered', () => {
320
+ detector.registerOutput({
321
+ id: 'output-1',
322
+ description: 'Test output',
323
+ type: 'file',
324
+ target: '/path/to/file',
325
+ });
326
+ detector.markOutputDelivered('output-1', 'content');
327
+ const result = detector.checkOutputMatch('output-1');
328
+ expect(result.matches).toBe(true);
329
+ });
330
+ it('should validate output patterns', () => {
331
+ detector.registerOutput({
332
+ id: 'output-1',
333
+ description: 'Test output',
334
+ type: 'file',
335
+ target: '/path/to/file',
336
+ validation: {
337
+ pattern: '^test',
338
+ required: true,
339
+ },
340
+ });
341
+ detector.markOutputDelivered('output-1', 'notmatching');
342
+ const result = detector.checkOutputMatch('output-1');
343
+ expect(result.matches).toBe(false);
344
+ expect(result.gaps.some((g) => g.includes('pattern'))).toBe(true);
345
+ });
346
+ });
347
+ describe('acceptance criteria', () => {
348
+ it('should register and track criteria', () => {
349
+ detector.registerCriteria([
350
+ { id: 'crit-1', description: 'Test passes', met: false, priority: 'required' },
351
+ { id: 'crit-2', description: 'Docs updated', met: true, priority: 'optional' },
352
+ ]);
353
+ const status = detector.getCriteriaStatus();
354
+ expect(status.total).toBe(2);
355
+ expect(status.met).toBe(1);
356
+ expect(status.percentComplete).toBe(50);
357
+ });
358
+ it('should mark criteria as met', () => {
359
+ detector.registerCriteria([
360
+ { id: 'crit-1', description: 'Test passes', met: false, priority: 'required' },
361
+ ]);
362
+ detector.markCriterionMet('crit-1', 'Tests pass');
363
+ const status = detector.getCriteriaStatus();
364
+ expect(status.met).toBe(1);
365
+ });
366
+ it('should track required vs optional', () => {
367
+ detector.registerCriteria([
368
+ { id: 'crit-1', description: 'Required 1', met: true, priority: 'required' },
369
+ { id: 'crit-2', description: 'Required 2', met: false, priority: 'required' },
370
+ { id: 'crit-3', description: 'Optional 1', met: true, priority: 'optional' },
371
+ ]);
372
+ const status = detector.getCriteriaStatus();
373
+ expect(status.required.met).toBe(1);
374
+ expect(status.required.total).toBe(2);
375
+ expect(status.optional.met).toBe(1);
376
+ expect(status.optional.total).toBe(1);
377
+ });
378
+ });
379
+ describe('agent health', () => {
380
+ it('should track agent health', () => {
381
+ detector.updateAgentHealth('agent-1', {
382
+ status: 'healthy',
383
+ lastHeartbeat: new Date(),
384
+ idleTime: 0,
385
+ errorCount: 0,
386
+ circuitState: 'closed',
387
+ });
388
+ const health = detector.getAllAgentHealth();
389
+ expect(health).toHaveLength(1);
390
+ expect(health[0].status).toBe('healthy');
391
+ });
392
+ it('should record heartbeats', () => {
393
+ detector.recordHeartbeat('agent-1');
394
+ const health = detector.getAllAgentHealth();
395
+ expect(health[0].status).toBe('healthy');
396
+ });
397
+ it('should record errors and mark unhealthy', () => {
398
+ detector.recordAgentError('agent-1');
399
+ detector.recordAgentError('agent-1');
400
+ detector.recordAgentError('agent-1');
401
+ const health = detector.getAllAgentHealth();
402
+ expect(health[0].status).toBe('unhealthy');
403
+ expect(health[0].errorCount).toBe(3);
404
+ });
405
+ it('should detect stuck agents', () => {
406
+ const pastTime = new Date(Date.now() - 10 * 60 * 1000); // 10 minutes ago
407
+ detector.updateAgentHealth('agent-1', {
408
+ status: 'healthy',
409
+ lastHeartbeat: pastTime,
410
+ idleTime: 0,
411
+ errorCount: 0,
412
+ circuitState: 'closed',
413
+ });
414
+ const stuck = detector.checkStuckAgents();
415
+ expect(stuck).toHaveLength(1);
416
+ expect(stuck[0].agentId).toBe('agent-1');
417
+ expect(stuck[0].status).toBe('stuck');
418
+ });
419
+ });
420
+ describe('re-routing', () => {
421
+ it('should recommend re-routing for stuck agents', () => {
422
+ const pastTime = new Date(Date.now() - 10 * 60 * 1000);
423
+ detector.updateAgentHealth('agent-1', {
424
+ status: 'stuck',
425
+ lastHeartbeat: pastTime,
426
+ idleTime: 10 * 60 * 1000,
427
+ errorCount: 0,
428
+ circuitState: 'closed',
429
+ });
430
+ detector.updateAgentHealth('agent-2', {
431
+ status: 'healthy',
432
+ lastHeartbeat: new Date(),
433
+ idleTime: 0,
434
+ errorCount: 0,
435
+ circuitState: 'closed',
436
+ });
437
+ const decision = detector.shouldReroute('task-1', 'agent-1', ['agent-2']);
438
+ expect(decision.shouldReroute).toBe(true);
439
+ expect(decision.toAgent).toBe('agent-2');
440
+ });
441
+ it('should not re-route healthy agents', () => {
442
+ detector.updateAgentHealth('agent-1', {
443
+ status: 'healthy',
444
+ lastHeartbeat: new Date(),
445
+ idleTime: 0,
446
+ errorCount: 0,
447
+ circuitState: 'closed',
448
+ });
449
+ const decision = detector.shouldReroute('task-1', 'agent-1', ['agent-2']);
450
+ expect(decision.shouldReroute).toBe(false);
451
+ });
452
+ it('should re-route when circuit is open', () => {
453
+ detector.updateAgentHealth('agent-1', {
454
+ status: 'healthy',
455
+ lastHeartbeat: new Date(),
456
+ idleTime: 0,
457
+ errorCount: 0,
458
+ circuitState: 'open',
459
+ });
460
+ detector.updateAgentHealth('agent-2', {
461
+ status: 'healthy',
462
+ lastHeartbeat: new Date(),
463
+ idleTime: 0,
464
+ errorCount: 0,
465
+ circuitState: 'closed',
466
+ });
467
+ const decision = detector.shouldReroute('task-1', 'agent-1', ['agent-2']);
468
+ expect(decision.shouldReroute).toBe(true);
469
+ expect(decision.reason).toContain('circuit is open');
470
+ });
471
+ });
472
+ describe('gap report', () => {
473
+ it('should generate comprehensive report', () => {
474
+ // Add some outputs
475
+ detector.registerOutput({
476
+ id: 'output-1',
477
+ description: 'Missing output',
478
+ type: 'file',
479
+ target: '/path',
480
+ });
481
+ // Add some criteria
482
+ detector.registerCriteria([
483
+ { id: 'crit-1', description: 'Unmet', met: false, priority: 'required' },
484
+ ]);
485
+ // Add agent health
486
+ detector.recordHeartbeat('agent-1');
487
+ const report = detector.generateReport();
488
+ expect(report.summary.totalGaps).toBeGreaterThan(0);
489
+ expect(report.criteriaStatus.unmet).toBe(1);
490
+ expect(report.agentHealth).toHaveLength(1);
491
+ });
492
+ it('should include recommendations', () => {
493
+ detector.registerCriteria([
494
+ { id: 'crit-1', description: 'Unmet', met: false, priority: 'required' },
495
+ ]);
496
+ const report = detector.generateReport();
497
+ expect(report.recommendations.length).toBeGreaterThan(0);
498
+ expect(report.recommendations.some((r) => r.includes('criteria'))).toBe(true);
499
+ });
500
+ });
501
+ describe('reset', () => {
502
+ it('should clear all state', () => {
503
+ detector.registerOutput({
504
+ id: 'output-1',
505
+ description: 'Test',
506
+ type: 'file',
507
+ target: '/path',
508
+ });
509
+ detector.registerCriteria([
510
+ { id: 'crit-1', description: 'Test', met: false, priority: 'required' },
511
+ ]);
512
+ detector.recordHeartbeat('agent-1');
513
+ detector.reset();
514
+ const report = detector.generateReport();
515
+ expect(report.summary.totalGaps).toBe(0);
516
+ expect(report.agentHealth).toHaveLength(0);
517
+ });
518
+ });
519
+ });
520
+ describe('formatGapReport', () => {
521
+ it('should format report as markdown', () => {
522
+ const detector = createGapDetector();
523
+ detector.registerOutput({
524
+ id: 'output-1',
525
+ description: 'Missing output',
526
+ type: 'file',
527
+ target: '/path',
528
+ });
529
+ const report = detector.generateReport();
530
+ const markdown = formatGapReport(report);
531
+ expect(markdown).toContain('# Gap Detection Report');
532
+ expect(markdown).toContain('## Summary');
533
+ expect(markdown).toContain('## Acceptance Criteria');
534
+ });
535
+ });
536
+ describe('formatDependencyAnalysis', () => {
537
+ it('should format analysis as markdown', () => {
538
+ const graph = new DependencyGraph();
539
+ graph.addNode({
540
+ id: 'task-1',
541
+ name: 'Task 1',
542
+ type: 'task',
543
+ status: 'completed',
544
+ dependencies: [],
545
+ metadata: {},
546
+ });
547
+ const analysis = graph.analyze();
548
+ const markdown = formatDependencyAnalysis(analysis);
549
+ expect(markdown).toContain('## Dependency Analysis');
550
+ expect(markdown).toContain('**Completion:**');
551
+ });
552
+ });
553
+ describe('formatDependencyGaps', () => {
554
+ it('should format gaps as markdown', () => {
555
+ const graph = new DependencyGraph();
556
+ graph.addNode({
557
+ id: 'task-1',
558
+ name: 'Task 1',
559
+ type: 'task',
560
+ status: 'pending',
561
+ dependencies: ['missing'],
562
+ metadata: {},
563
+ });
564
+ const gaps = graph.identifyGaps();
565
+ const markdown = formatDependencyGaps(gaps);
566
+ expect(markdown).toContain('## Dependency Gaps');
567
+ expect(markdown).toContain('CRITICAL');
568
+ });
569
+ });
570
+ describe('hasCriticalIssues', () => {
571
+ it('should return true when critical gaps exist', () => {
572
+ const detector = createGapDetector();
573
+ // Create a scenario with critical issues (open circuit)
574
+ detector.updateAgentHealth('agent-1', {
575
+ status: 'healthy',
576
+ lastHeartbeat: new Date(),
577
+ idleTime: 0,
578
+ errorCount: 0,
579
+ circuitState: 'open',
580
+ });
581
+ const report = detector.generateReport();
582
+ expect(hasCriticalIssues(report)).toBe(true);
583
+ });
584
+ it('should return false when no critical gaps', () => {
585
+ const detector = createGapDetector();
586
+ detector.recordHeartbeat('agent-1');
587
+ const report = detector.generateReport();
588
+ expect(hasCriticalIssues(report)).toBe(false);
589
+ });
590
+ });
591
+ describe('hasBlockingIssues', () => {
592
+ it('should return true for unmet required criteria', () => {
593
+ const detector = createGapDetector();
594
+ detector.registerCriteria([
595
+ { id: 'crit-1', description: 'Required', met: false, priority: 'required' },
596
+ ]);
597
+ const report = detector.generateReport();
598
+ expect(hasBlockingIssues(report)).toBe(true);
599
+ });
600
+ it('should return false for only optional unmet criteria', () => {
601
+ const detector = createGapDetector();
602
+ detector.registerCriteria([
603
+ { id: 'crit-1', description: 'Optional', met: false, priority: 'optional' },
604
+ ]);
605
+ const report = detector.generateReport();
606
+ expect(hasBlockingIssues(report)).toBe(false);
607
+ });
608
+ });
609
+ //# sourceMappingURL=gap-detector.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gap-detector.test.js","sourceRoot":"","sources":["../../../../src/core/agents/__tests__/gap-detector.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for Learning Loop from Corrections (MAC-9)
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=learning-loop.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learning-loop.test.d.ts","sourceRoot":"","sources":["../../../../src/core/agents/__tests__/learning-loop.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}