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,315 @@
1
+ /**
2
+ * Tests for hook-agent-bridge module (v17.5.0)
3
+ */
4
+ import { beforeEach, describe, expect, it } from 'vitest';
5
+ import { DEFAULT_BRIDGE_CONFIG, decideHandler, formatAssessment, HookAgentBridge, shouldEscalate, } from '../hook-agent-bridge.js';
6
+ describe('HookAgentBridge', () => {
7
+ let bridge;
8
+ beforeEach(() => {
9
+ bridge = new HookAgentBridge();
10
+ });
11
+ describe('configuration', () => {
12
+ it('should use default configuration', () => {
13
+ expect(DEFAULT_BRIDGE_CONFIG.escalationThreshold).toBe(50);
14
+ expect(DEFAULT_BRIDGE_CONFIG.maxHookTimeMs).toBe(100);
15
+ expect(DEFAULT_BRIDGE_CONFIG.maxAgentTimeMs).toBe(30000);
16
+ expect(DEFAULT_BRIDGE_CONFIG.enableSharedCache).toBe(true);
17
+ });
18
+ it('should accept custom configuration', () => {
19
+ const custom = new HookAgentBridge({ escalationThreshold: 75 });
20
+ expect(custom).toBeDefined();
21
+ });
22
+ });
23
+ describe('assessComplexity', () => {
24
+ it('should return low score for simple operations', () => {
25
+ const assessment = bridge.assessComplexity('read', {});
26
+ expect(assessment.score).toBeLessThan(50);
27
+ expect(assessment.handler).toBe('hook');
28
+ });
29
+ it('should detect multi-file complexity', () => {
30
+ const assessment = bridge.assessComplexity('edit', {
31
+ files: ['file1.ts', 'file2.ts', 'file3.ts'],
32
+ });
33
+ expect(assessment.factors.some((f) => f.name === 'multiFile')).toBe(true);
34
+ });
35
+ it('should detect reasoning requirements', () => {
36
+ const assessment = bridge.assessComplexity('analyze', {
37
+ text: 'Complex code analysis needed',
38
+ });
39
+ expect(assessment.factors.some((f) => f.name === 'reasoning')).toBe(true);
40
+ });
41
+ it('should detect external API calls', () => {
42
+ const assessment = bridge.assessComplexity('fetch', {
43
+ urls: ['https://api.example.com'],
44
+ });
45
+ expect(assessment.factors.some((f) => f.name === 'external')).toBe(true);
46
+ });
47
+ it('should detect security-sensitive operations', () => {
48
+ const assessment = bridge.assessComplexity('auth', {
49
+ files: ['.env', 'credentials.json'],
50
+ });
51
+ expect(assessment.factors.some((f) => f.name === 'security')).toBe(true);
52
+ expect(assessment.handler).toBe('agent');
53
+ });
54
+ it('should detect async operations', () => {
55
+ const assessment = bridge.assessComplexity('install', {});
56
+ expect(assessment.factors.some((f) => f.name === 'async')).toBe(true);
57
+ });
58
+ it('should provide reason for decision', () => {
59
+ const assessment = bridge.assessComplexity('read', {});
60
+ expect(assessment.reason).toBeDefined();
61
+ expect(assessment.reason.length).toBeGreaterThan(0);
62
+ });
63
+ it('should estimate processing time', () => {
64
+ const hookAssessment = bridge.assessComplexity('read', {});
65
+ expect(hookAssessment.estimatedTimeMs).toBeLessThan(100);
66
+ const agentAssessment = bridge.assessComplexity('analyze', {
67
+ text: 'maybe unclear perhaps',
68
+ });
69
+ expect(agentAssessment.estimatedTimeMs).toBeGreaterThan(1000);
70
+ });
71
+ });
72
+ describe('handler decision', () => {
73
+ it('should return hook for simple operations', () => {
74
+ const assessment = bridge.assessComplexity('read', {});
75
+ expect(assessment.handler).toBe('hook');
76
+ });
77
+ it('should return agent for complex operations', () => {
78
+ const assessment = bridge.assessComplexity('analyze-security-credentials', {
79
+ files: ['auth.ts', '.env'],
80
+ });
81
+ expect(assessment.handler).toBe('agent');
82
+ });
83
+ it('should return both for moderate complexity with reasoning', () => {
84
+ const assessment = bridge.assessComplexity('validate', {
85
+ text: 'maybe some issue',
86
+ });
87
+ // May be 'both' or 'agent' depending on score
88
+ expect(['agent', 'both', 'hook']).toContain(assessment.handler);
89
+ });
90
+ });
91
+ describe('temporary hooks', () => {
92
+ it('should register temporary hook', () => {
93
+ const hookId = bridge.registerTemporaryHook({
94
+ agentId: 'test-agent',
95
+ event: 'PostToolUse',
96
+ handler: async () => ({ proceed: true }),
97
+ blocking: false,
98
+ priority: 10,
99
+ });
100
+ expect(hookId).toBeDefined();
101
+ expect(hookId).toContain('temp-hook');
102
+ });
103
+ it('should get hooks for event', () => {
104
+ bridge.registerTemporaryHook({
105
+ agentId: 'test-agent',
106
+ event: 'PostToolUse',
107
+ handler: async () => ({ proceed: true }),
108
+ blocking: false,
109
+ priority: 10,
110
+ });
111
+ bridge.registerTemporaryHook({
112
+ agentId: 'test-agent',
113
+ event: 'PreToolUse',
114
+ handler: async () => ({ proceed: true }),
115
+ blocking: false,
116
+ priority: 5,
117
+ });
118
+ const postHooks = bridge.getTemporaryHooksForEvent('PostToolUse');
119
+ expect(postHooks).toHaveLength(1);
120
+ const preHooks = bridge.getTemporaryHooksForEvent('PreToolUse');
121
+ expect(preHooks).toHaveLength(1);
122
+ });
123
+ it('should sort hooks by priority', () => {
124
+ bridge.registerTemporaryHook({
125
+ agentId: 'agent-1',
126
+ event: 'PostToolUse',
127
+ handler: async () => ({ proceed: true }),
128
+ blocking: false,
129
+ priority: 5,
130
+ });
131
+ bridge.registerTemporaryHook({
132
+ agentId: 'agent-2',
133
+ event: 'PostToolUse',
134
+ handler: async () => ({ proceed: true }),
135
+ blocking: false,
136
+ priority: 10,
137
+ });
138
+ const hooks = bridge.getTemporaryHooksForEvent('PostToolUse');
139
+ expect(hooks[0].priority).toBe(10);
140
+ expect(hooks[1].priority).toBe(5);
141
+ });
142
+ it('should unregister hook', () => {
143
+ const hookId = bridge.registerTemporaryHook({
144
+ agentId: 'test-agent',
145
+ event: 'PostToolUse',
146
+ handler: async () => ({ proceed: true }),
147
+ blocking: false,
148
+ priority: 10,
149
+ });
150
+ expect(bridge.unregisterTemporaryHook(hookId)).toBe(true);
151
+ expect(bridge.getTemporaryHooksForEvent('PostToolUse')).toHaveLength(0);
152
+ });
153
+ it('should execute temporary hooks', async () => {
154
+ let executed = false;
155
+ bridge.registerTemporaryHook({
156
+ agentId: 'test-agent',
157
+ event: 'PostToolUse',
158
+ handler: async () => {
159
+ executed = true;
160
+ return { proceed: true };
161
+ },
162
+ blocking: false,
163
+ priority: 10,
164
+ });
165
+ const result = await bridge.executeTemporaryHooks('PostToolUse', {});
166
+ expect(executed).toBe(true);
167
+ expect(result.proceed).toBe(true);
168
+ });
169
+ it('should stop on blocking hook that returns false', async () => {
170
+ bridge.registerTemporaryHook({
171
+ agentId: 'blocker',
172
+ event: 'PreToolUse',
173
+ handler: async () => ({ proceed: false, message: 'Blocked!' }),
174
+ blocking: true,
175
+ priority: 10,
176
+ });
177
+ const result = await bridge.executeTemporaryHooks('PreToolUse', {});
178
+ expect(result.proceed).toBe(false);
179
+ expect(result.message).toBe('Blocked!');
180
+ });
181
+ it('should apply matcher pattern', async () => {
182
+ let editExecuted = false;
183
+ let bashExecuted = false;
184
+ bridge.registerTemporaryHook({
185
+ agentId: 'edit-hook',
186
+ event: 'PostToolUse',
187
+ matcher: 'Edit|Write',
188
+ handler: async () => {
189
+ editExecuted = true;
190
+ return { proceed: true };
191
+ },
192
+ blocking: false,
193
+ priority: 10,
194
+ });
195
+ bridge.registerTemporaryHook({
196
+ agentId: 'bash-hook',
197
+ event: 'PostToolUse',
198
+ matcher: 'Bash',
199
+ handler: async () => {
200
+ bashExecuted = true;
201
+ return { proceed: true };
202
+ },
203
+ blocking: false,
204
+ priority: 5,
205
+ });
206
+ await bridge.executeTemporaryHooks('PostToolUse', { tool: 'Edit' });
207
+ expect(editExecuted).toBe(true);
208
+ expect(bashExecuted).toBe(false);
209
+ });
210
+ });
211
+ describe('shared cache', () => {
212
+ it('should provide shared cache access', () => {
213
+ const cache = bridge.getSharedCache();
214
+ expect(cache).toBeDefined();
215
+ });
216
+ it('should set and get cached values', () => {
217
+ bridge.setCached('test-key', { value: 42 });
218
+ const cached = bridge.getCached('test-key');
219
+ expect(cached?.value).toBe(42);
220
+ });
221
+ });
222
+ describe('statistics', () => {
223
+ it('should return stats', () => {
224
+ bridge.registerTemporaryHook({
225
+ agentId: 'test',
226
+ event: 'PostToolUse',
227
+ handler: async () => ({ proceed: true }),
228
+ blocking: false,
229
+ priority: 1,
230
+ });
231
+ const stats = bridge.getStats();
232
+ expect(stats.activeTemporaryHooks).toBe(1);
233
+ expect(stats.pendingEscalations).toBe(0);
234
+ expect(stats.cacheStats).toBeDefined();
235
+ });
236
+ });
237
+ describe('clear', () => {
238
+ it('should clear all state', () => {
239
+ bridge.registerTemporaryHook({
240
+ agentId: 'test',
241
+ event: 'PostToolUse',
242
+ handler: async () => ({ proceed: true }),
243
+ blocking: false,
244
+ priority: 1,
245
+ });
246
+ bridge.setCached('key', 'value');
247
+ bridge.clear();
248
+ const stats = bridge.getStats();
249
+ expect(stats.activeTemporaryHooks).toBe(0);
250
+ });
251
+ });
252
+ });
253
+ describe('decideHandler', () => {
254
+ it('should return hook for simple operations', () => {
255
+ expect(decideHandler('read', {})).toBe('hook');
256
+ });
257
+ it('should return agent for security operations', () => {
258
+ expect(decideHandler('auth-check', { files: ['.env'] })).toBe('agent');
259
+ });
260
+ });
261
+ describe('shouldEscalate', () => {
262
+ it('should return false for simple operations', () => {
263
+ expect(shouldEscalate('read', {})).toBe(false);
264
+ });
265
+ it('should return true for complex operations', () => {
266
+ expect(shouldEscalate('analyze-security', { files: ['auth.ts'] })).toBe(true);
267
+ });
268
+ });
269
+ describe('formatAssessment', () => {
270
+ it('should format assessment as markdown', () => {
271
+ const bridge = new HookAgentBridge();
272
+ const assessment = bridge.assessComplexity('analyze', {
273
+ files: ['file1.ts', 'file2.ts'],
274
+ });
275
+ const markdown = formatAssessment(assessment);
276
+ expect(markdown).toContain('## Complexity Assessment');
277
+ expect(markdown).toContain('**Score:**');
278
+ expect(markdown).toContain('**Handler:**');
279
+ });
280
+ });
281
+ describe('Integration: Hook and Agent Decision Matrix', () => {
282
+ it('should follow decision matrix for deterministic operations (<2s)', () => {
283
+ const bridge = new HookAgentBridge();
284
+ // Simple read - hook
285
+ const read = bridge.assessComplexity('read', {});
286
+ expect(read.handler).toBe('hook');
287
+ expect(read.estimatedTimeMs).toBeLessThan(2000);
288
+ // Simple write - hook
289
+ const write = bridge.assessComplexity('write', { files: ['single.ts'] });
290
+ expect(write.estimatedTimeMs).toBeLessThan(2000);
291
+ });
292
+ it('should follow decision matrix for reasoning operations (>2s)', () => {
293
+ const bridge = new HookAgentBridge();
294
+ // Complex analysis - agent
295
+ const analyze = bridge.assessComplexity('analyze-architecture', {
296
+ files: ['src/core/a.ts', 'src/core/b.ts', 'src/core/c.ts'],
297
+ text: 'Review and suggest improvements',
298
+ });
299
+ // Should escalate to agent
300
+ expect(['agent', 'both']).toContain(analyze.handler);
301
+ });
302
+ it('should meet performance targets', () => {
303
+ const bridge = new HookAgentBridge();
304
+ // Hook operations should be <100ms estimated
305
+ const hook = bridge.assessComplexity('read', {});
306
+ expect(hook.estimatedTimeMs).toBeLessThanOrEqual(100);
307
+ // Agent operations should be 2-30s estimated
308
+ const agent = bridge.assessComplexity('security-review', {
309
+ files: ['.env', 'credentials.json'],
310
+ });
311
+ expect(agent.estimatedTimeMs).toBeGreaterThanOrEqual(2000);
312
+ expect(agent.estimatedTimeMs).toBeLessThanOrEqual(30000);
313
+ });
314
+ });
315
+ //# sourceMappingURL=hook-agent-bridge.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook-agent-bridge.test.js","sourceRoot":"","sources":["../../../src/hooks/__tests__/hook-agent-bridge.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Dynamic Hook Generator - v17.5.0
3
+ *
4
+ * Generates hooks dynamically based on:
5
+ * - Project type detection (TypeScript, Python, Rust, etc.)
6
+ * - Learned patterns from corrections
7
+ * - Custom rules and preferences
8
+ * - Plugin-based hook registration
9
+ *
10
+ * Features:
11
+ * - Project-aware hook generation
12
+ * - Pattern-based hook templates
13
+ * - Runtime hook configuration
14
+ * - Integration with learning store
15
+ *
16
+ * @module dynamic-generator
17
+ */
18
+ import type { LearnedPattern } from '../core/memory/learning-store.js';
19
+ /**
20
+ * Supported project types
21
+ */
22
+ export type ProjectType = 'typescript' | 'javascript' | 'python' | 'rust' | 'go' | 'java' | 'dotnet' | 'ruby' | 'unknown';
23
+ /**
24
+ * Hook event types
25
+ */
26
+ export type HookEvent = 'SessionStart' | 'SessionEnd' | 'PostToolUse' | 'PreToolUse' | 'PreCompact' | 'SubagentStart' | 'SubagentStop' | 'UserPromptSubmit';
27
+ /**
28
+ * Tool matcher for PostToolUse/PreToolUse hooks
29
+ */
30
+ export type ToolMatcher = 'Edit' | 'Write' | 'Bash' | 'Edit|Write' | 'Edit|Write|Bash' | string;
31
+ /**
32
+ * A hook definition
33
+ */
34
+ export interface HookDefinition {
35
+ id: string;
36
+ event: HookEvent;
37
+ matcher?: ToolMatcher;
38
+ command: string;
39
+ description: string;
40
+ priority: number;
41
+ enabled: boolean;
42
+ source: 'builtin' | 'project' | 'learned' | 'custom';
43
+ }
44
+ /**
45
+ * Hook template for common patterns
46
+ */
47
+ export interface HookTemplate {
48
+ id: string;
49
+ name: string;
50
+ description: string;
51
+ event: HookEvent;
52
+ matcher?: ToolMatcher;
53
+ commandTemplate: string;
54
+ variables: string[];
55
+ projectTypes: ProjectType[];
56
+ }
57
+ /**
58
+ * Dynamic generator configuration
59
+ */
60
+ export interface DynamicGeneratorConfig {
61
+ /** Project root directory */
62
+ projectDir: string;
63
+ /** Platform (win32, linux, darwin) */
64
+ platform: 'win32' | 'linux' | 'darwin';
65
+ /** Whether to include learned patterns */
66
+ includeLearnedPatterns: boolean;
67
+ /** Custom hooks to add */
68
+ customHooks: HookDefinition[];
69
+ /** Disabled hook IDs */
70
+ disabledHooks: string[];
71
+ }
72
+ /**
73
+ * Generated hooks result
74
+ */
75
+ export interface GeneratedHooks {
76
+ projectType: ProjectType;
77
+ hooks: HookDefinition[];
78
+ settingsJson: object;
79
+ }
80
+ export declare const DEFAULT_GENERATOR_CONFIG: DynamicGeneratorConfig;
81
+ /**
82
+ * Built-in hook templates
83
+ */
84
+ export declare const HOOK_TEMPLATES: HookTemplate[];
85
+ /**
86
+ * Generates hooks dynamically based on project context
87
+ */
88
+ export declare class DynamicHookGenerator {
89
+ private config;
90
+ private registeredHooks;
91
+ private templates;
92
+ constructor(config?: Partial<DynamicGeneratorConfig>);
93
+ /**
94
+ * Detect project type from file indicators
95
+ */
96
+ detectProjectType(): ProjectType;
97
+ /**
98
+ * Detect package manager
99
+ */
100
+ detectPackageManager(): string;
101
+ /**
102
+ * Register a custom hook
103
+ */
104
+ registerHook(hook: HookDefinition): void;
105
+ /**
106
+ * Unregister a hook
107
+ */
108
+ unregisterHook(hookId: string): boolean;
109
+ /**
110
+ * Register a custom template
111
+ */
112
+ registerTemplate(template: HookTemplate): void;
113
+ /**
114
+ * Generate hooks for the current project
115
+ */
116
+ generate(learnedPatterns?: LearnedPattern[]): GeneratedHooks;
117
+ /**
118
+ * Generate hooks from learned patterns
119
+ */
120
+ private generateFromPatterns;
121
+ /**
122
+ * Instantiate a template with variables
123
+ */
124
+ private instantiateTemplate;
125
+ /**
126
+ * Generate Claude Code settings.json hook structure
127
+ */
128
+ private generateSettingsJson;
129
+ /**
130
+ * Get available templates
131
+ */
132
+ getTemplates(): HookTemplate[];
133
+ /**
134
+ * Get templates for a project type
135
+ */
136
+ getTemplatesForProject(projectType: ProjectType): HookTemplate[];
137
+ }
138
+ /**
139
+ * Get the default generator instance
140
+ */
141
+ export declare function getHookGenerator(config?: Partial<DynamicGeneratorConfig>): DynamicHookGenerator;
142
+ /**
143
+ * Generate hooks for a project
144
+ */
145
+ export declare function generateHooksForProject(projectDir: string, learnedPatterns?: LearnedPattern[]): GeneratedHooks;
146
+ /**
147
+ * Format hooks for display
148
+ */
149
+ export declare function formatHooks(hooks: HookDefinition[]): string;
150
+ /**
151
+ * Format generated result
152
+ */
153
+ export declare function formatGeneratedResult(result: GeneratedHooks): string;
154
+ /**
155
+ * Merge generated hooks with existing settings
156
+ */
157
+ export declare function mergeWithExistingSettings(existingSettings: object, generatedHooks: object): object;
158
+ //# sourceMappingURL=dynamic-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic-generator.d.ts","sourceRoot":"","sources":["../../src/hooks/dynamic-generator.ts"],"names":[],"mappings":"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"}