dino-spec 16.2.0 → 17.2.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 (1604) hide show
  1. package/README.md +45 -10
  2. package/bin/dino-hud.js +0 -0
  3. package/bin/dino.js +3 -3
  4. package/dist/agents/context-distributor.d.ts +2 -2
  5. package/dist/agents/context-distributor.d.ts.map +1 -1
  6. package/dist/agents/context-distributor.js +19 -17
  7. package/dist/agents/context-distributor.js.map +1 -1
  8. package/dist/agents/index.d.ts +1 -1
  9. package/dist/agents/index.d.ts.map +1 -1
  10. package/dist/agents/index.js +379 -371
  11. package/dist/agents/index.js.map +1 -1
  12. package/dist/cli/index.d.ts +2 -2
  13. package/dist/cli/index.js +48 -40
  14. package/dist/cli/index.js.map +1 -1
  15. package/dist/cli/tui/index.d.ts +1 -1
  16. package/dist/cli/tui/index.d.ts.map +1 -1
  17. package/dist/cli/tui/index.js.map +1 -1
  18. package/dist/cli/tui/setup-wizard.d.ts.map +1 -1
  19. package/dist/cli/tui/setup-wizard.js +42 -38
  20. package/dist/cli/tui/setup-wizard.js.map +1 -1
  21. package/dist/commands/compact.d.ts.map +1 -1
  22. package/dist/commands/compact.js +9 -10
  23. package/dist/commands/compact.js.map +1 -1
  24. package/dist/commands/dashboard.d.ts.map +1 -1
  25. package/dist/commands/dashboard.js +6 -8
  26. package/dist/commands/dashboard.js.map +1 -1
  27. package/dist/commands/debug.d.ts +1 -1
  28. package/dist/commands/debug.d.ts.map +1 -1
  29. package/dist/commands/debug.js +31 -32
  30. package/dist/commands/debug.js.map +1 -1
  31. package/dist/commands/hooks/index.d.ts +4 -4
  32. package/dist/commands/hooks/index.d.ts.map +1 -1
  33. package/dist/commands/hooks/index.js +25 -30
  34. package/dist/commands/hooks/index.js.map +1 -1
  35. package/dist/commands/hooks/registry.d.ts +1 -1
  36. package/dist/commands/hooks/registry.d.ts.map +1 -1
  37. package/dist/commands/hooks/registry.js +18 -5
  38. package/dist/commands/hooks/registry.js.map +1 -1
  39. package/dist/commands/hooks/types.d.ts +1 -1
  40. package/dist/commands/hooks/types.d.ts.map +1 -1
  41. package/dist/commands/hooks/utils.d.ts +2 -1
  42. package/dist/commands/hooks/utils.d.ts.map +1 -1
  43. package/dist/commands/hooks/utils.js +8 -7
  44. package/dist/commands/hooks/utils.js.map +1 -1
  45. package/dist/commands/hud.d.ts.map +1 -1
  46. package/dist/commands/hud.js +24 -26
  47. package/dist/commands/hud.js.map +1 -1
  48. package/dist/commands/init.d.ts +15 -2
  49. package/dist/commands/init.d.ts.map +1 -1
  50. package/dist/commands/init.js +291 -38
  51. package/dist/commands/init.js.map +1 -1
  52. package/dist/commands/mcp-serve.d.ts +1 -1
  53. package/dist/commands/mcp-serve.d.ts.map +1 -1
  54. package/dist/commands/mcp-serve.js +1 -1
  55. package/dist/commands/mcp-serve.js.map +1 -1
  56. package/dist/commands/mcp.d.ts +1 -1
  57. package/dist/commands/mcp.d.ts.map +1 -1
  58. package/dist/commands/mcp.js +12 -5
  59. package/dist/commands/mcp.js.map +1 -1
  60. package/dist/commands/memory/consolidate.d.ts.map +1 -1
  61. package/dist/commands/memory/consolidate.js +2 -1
  62. package/dist/commands/memory/consolidate.js.map +1 -1
  63. package/dist/commands/memory/decay.d.ts.map +1 -1
  64. package/dist/commands/memory/decay.js +1 -1
  65. package/dist/commands/memory/decay.js.map +1 -1
  66. package/dist/commands/memory/index.d.ts +8 -8
  67. package/dist/commands/memory/index.d.ts.map +1 -1
  68. package/dist/commands/memory/index.js +4 -4
  69. package/dist/commands/memory/index.js.map +1 -1
  70. package/dist/commands/memory/list.d.ts.map +1 -1
  71. package/dist/commands/memory/list.js +6 -5
  72. package/dist/commands/memory/list.js.map +1 -1
  73. package/dist/commands/memory/prune.d.ts.map +1 -1
  74. package/dist/commands/memory/prune.js +2 -1
  75. package/dist/commands/memory/prune.js.map +1 -1
  76. package/dist/commands/memory/recall.d.ts.map +1 -1
  77. package/dist/commands/memory/recall.js +2 -2
  78. package/dist/commands/memory/recall.js.map +1 -1
  79. package/dist/commands/memory/reflect.d.ts.map +1 -1
  80. package/dist/commands/memory/reflect.js +7 -6
  81. package/dist/commands/memory/reflect.js.map +1 -1
  82. package/dist/commands/memory/search.d.ts.map +1 -1
  83. package/dist/commands/memory/search.js +20 -16
  84. package/dist/commands/memory/search.js.map +1 -1
  85. package/dist/commands/memory/stats.d.ts.map +1 -1
  86. package/dist/commands/memory/stats.js +15 -10
  87. package/dist/commands/memory/stats.js.map +1 -1
  88. package/dist/commands/profile.d.ts.map +1 -1
  89. package/dist/commands/profile.js +7 -9
  90. package/dist/commands/profile.js.map +1 -1
  91. package/dist/commands/provider.d.ts.map +1 -1
  92. package/dist/commands/provider.js +18 -16
  93. package/dist/commands/provider.js.map +1 -1
  94. package/dist/commands/recommendations.d.ts.map +1 -1
  95. package/dist/commands/recommendations.js +13 -12
  96. package/dist/commands/recommendations.js.map +1 -1
  97. package/dist/commands/refresh.d.ts.map +1 -1
  98. package/dist/commands/refresh.js +8 -10
  99. package/dist/commands/refresh.js.map +1 -1
  100. package/dist/commands/session-sync.d.ts.map +1 -1
  101. package/dist/commands/session-sync.js +3 -4
  102. package/dist/commands/session-sync.js.map +1 -1
  103. package/dist/commands/session.d.ts.map +1 -1
  104. package/dist/commands/session.js +14 -16
  105. package/dist/commands/session.js.map +1 -1
  106. package/dist/commands/setup.d.ts.map +1 -1
  107. package/dist/commands/setup.js +8 -8
  108. package/dist/commands/setup.js.map +1 -1
  109. package/dist/commands/status.d.ts.map +1 -1
  110. package/dist/commands/status.js +22 -15
  111. package/dist/commands/status.js.map +1 -1
  112. package/dist/commands/store/index.d.ts +4 -4
  113. package/dist/commands/store/index.d.ts.map +1 -1
  114. package/dist/commands/store/index.js +2 -2
  115. package/dist/commands/store/index.js.map +1 -1
  116. package/dist/commands/store/install.d.ts.map +1 -1
  117. package/dist/commands/store/install.js +1 -1
  118. package/dist/commands/store/install.js.map +1 -1
  119. package/dist/commands/store/list.d.ts.map +1 -1
  120. package/dist/commands/store/list.js +5 -5
  121. package/dist/commands/store/list.js.map +1 -1
  122. package/dist/commands/store/remove.d.ts.map +1 -1
  123. package/dist/commands/store/remove.js.map +1 -1
  124. package/dist/commands/store/search.d.ts.map +1 -1
  125. package/dist/commands/store/search.js +8 -11
  126. package/dist/commands/store/search.js.map +1 -1
  127. package/dist/commands/store/sync.js.map +1 -1
  128. package/dist/commands/update.d.ts +2 -2
  129. package/dist/commands/update.d.ts.map +1 -1
  130. package/dist/commands/update.js +10 -12
  131. package/dist/commands/update.js.map +1 -1
  132. package/dist/core/agents/__tests__/action-mask.test.js +7 -7
  133. package/dist/core/agents/__tests__/action-mask.test.js.map +1 -1
  134. package/dist/core/agents/__tests__/budgets.test.js +11 -6
  135. package/dist/core/agents/__tests__/budgets.test.js.map +1 -1
  136. package/dist/core/agents/__tests__/communication.test.js +8 -5
  137. package/dist/core/agents/__tests__/communication.test.js.map +1 -1
  138. package/dist/core/agents/__tests__/orchestrator.test.js +36 -23
  139. package/dist/core/agents/__tests__/orchestrator.test.js.map +1 -1
  140. package/dist/core/agents/action-mask.d.ts +2 -2
  141. package/dist/core/agents/action-mask.d.ts.map +1 -1
  142. package/dist/core/agents/action-mask.js.map +1 -1
  143. package/dist/core/agents/ambiguity-resolver.d.ts.map +1 -1
  144. package/dist/core/agents/ambiguity-resolver.js +1 -2
  145. package/dist/core/agents/ambiguity-resolver.js.map +1 -1
  146. package/dist/core/agents/blackboard.d.ts.map +1 -1
  147. package/dist/core/agents/blackboard.js +4 -4
  148. package/dist/core/agents/blackboard.js.map +1 -1
  149. package/dist/core/agents/budgets.d.ts +1 -1
  150. package/dist/core/agents/budgets.d.ts.map +1 -1
  151. package/dist/core/agents/budgets.js +3 -2
  152. package/dist/core/agents/budgets.js.map +1 -1
  153. package/dist/core/agents/circuit-breaker.d.ts.map +1 -1
  154. package/dist/core/agents/circuit-breaker.js +3 -1
  155. package/dist/core/agents/circuit-breaker.js.map +1 -1
  156. package/dist/core/agents/circuit-registry.d.ts +1 -1
  157. package/dist/core/agents/circuit-registry.d.ts.map +1 -1
  158. package/dist/core/agents/circuit-registry.js.map +1 -1
  159. package/dist/core/agents/confidence-gate.d.ts.map +1 -1
  160. package/dist/core/agents/confidence-gate.js +2 -6
  161. package/dist/core/agents/confidence-gate.js.map +1 -1
  162. package/dist/core/agents/context-isolation.d.ts.map +1 -1
  163. package/dist/core/agents/context-isolation.js +40 -57
  164. package/dist/core/agents/context-isolation.js.map +1 -1
  165. package/dist/core/agents/feedback-collector.d.ts.map +1 -1
  166. package/dist/core/agents/feedback-collector.js +1 -1
  167. package/dist/core/agents/feedback-collector.js.map +1 -1
  168. package/dist/core/agents/index.d.ts +11 -11
  169. package/dist/core/agents/index.d.ts.map +1 -1
  170. package/dist/core/agents/index.js +37 -37
  171. package/dist/core/agents/index.js.map +1 -1
  172. package/dist/core/agents/initializer.d.ts.map +1 -1
  173. package/dist/core/agents/initializer.js +14 -14
  174. package/dist/core/agents/initializer.js.map +1 -1
  175. package/dist/core/agents/message-protocol.d.ts.map +1 -1
  176. package/dist/core/agents/message-protocol.js +2 -2
  177. package/dist/core/agents/message-protocol.js.map +1 -1
  178. package/dist/core/agents/orchestrator.d.ts +3 -3
  179. package/dist/core/agents/orchestrator.d.ts.map +1 -1
  180. package/dist/core/agents/orchestrator.js +17 -15
  181. package/dist/core/agents/orchestrator.js.map +1 -1
  182. package/dist/core/agents/parallel-reviewer.d.ts +1 -1
  183. package/dist/core/agents/parallel-reviewer.d.ts.map +1 -1
  184. package/dist/core/agents/parallel-reviewer.js +33 -37
  185. package/dist/core/agents/parallel-reviewer.js.map +1 -1
  186. package/dist/core/agents/programmatic/context-delegate.d.ts.map +1 -1
  187. package/dist/core/agents/programmatic/context-delegate.js +10 -10
  188. package/dist/core/agents/programmatic/context-delegate.js.map +1 -1
  189. package/dist/core/agents/programmatic/index.d.ts +3 -3
  190. package/dist/core/agents/programmatic/index.d.ts.map +1 -1
  191. package/dist/core/agents/programmatic/index.js +4 -4
  192. package/dist/core/agents/programmatic/index.js.map +1 -1
  193. package/dist/core/agents/programmatic/result-collector.d.ts +2 -2
  194. package/dist/core/agents/programmatic/result-collector.d.ts.map +1 -1
  195. package/dist/core/agents/programmatic/result-collector.js +18 -16
  196. package/dist/core/agents/programmatic/result-collector.js.map +1 -1
  197. package/dist/core/agents/programmatic/script-executor.d.ts +1 -1
  198. package/dist/core/agents/programmatic/script-executor.d.ts.map +1 -1
  199. package/dist/core/agents/programmatic/script-executor.js +149 -152
  200. package/dist/core/agents/programmatic/script-executor.js.map +1 -1
  201. package/dist/core/agents/recursive/aggregator.d.ts +1 -1
  202. package/dist/core/agents/recursive/aggregator.d.ts.map +1 -1
  203. package/dist/core/agents/recursive/aggregator.js +13 -17
  204. package/dist/core/agents/recursive/aggregator.js.map +1 -1
  205. package/dist/core/agents/recursive/budget-allocator.d.ts +1 -1
  206. package/dist/core/agents/recursive/budget-allocator.d.ts.map +1 -1
  207. package/dist/core/agents/recursive/budget-allocator.js +8 -9
  208. package/dist/core/agents/recursive/budget-allocator.js.map +1 -1
  209. package/dist/core/agents/recursive/checkpoint-chain.d.ts +4 -4
  210. package/dist/core/agents/recursive/checkpoint-chain.d.ts.map +1 -1
  211. package/dist/core/agents/recursive/checkpoint-chain.js +11 -18
  212. package/dist/core/agents/recursive/checkpoint-chain.js.map +1 -1
  213. package/dist/core/agents/recursive/complexity-analyzer.d.ts.map +1 -1
  214. package/dist/core/agents/recursive/complexity-analyzer.js +59 -29
  215. package/dist/core/agents/recursive/complexity-analyzer.js.map +1 -1
  216. package/dist/core/agents/recursive/index.d.ts +6 -6
  217. package/dist/core/agents/recursive/index.d.ts.map +1 -1
  218. package/dist/core/agents/recursive/index.js +11 -11
  219. package/dist/core/agents/recursive/index.js.map +1 -1
  220. package/dist/core/agents/recursive/orchestrator.d.ts +2 -2
  221. package/dist/core/agents/recursive/orchestrator.d.ts.map +1 -1
  222. package/dist/core/agents/recursive/orchestrator.js +60 -19
  223. package/dist/core/agents/recursive/orchestrator.js.map +1 -1
  224. package/dist/core/agents/recursive/spawn-controller.d.ts +3 -3
  225. package/dist/core/agents/recursive/spawn-controller.d.ts.map +1 -1
  226. package/dist/core/agents/recursive/spawn-controller.js +10 -10
  227. package/dist/core/agents/recursive/spawn-controller.js.map +1 -1
  228. package/dist/core/agents/recursive/types.d.ts +2 -2
  229. package/dist/core/agents/recursive/types.d.ts.map +1 -1
  230. package/dist/core/agents/recursive/types.js +2 -2
  231. package/dist/core/agents/recursive/types.js.map +1 -1
  232. package/dist/core/agents/reviewer-loop.d.ts.map +1 -1
  233. package/dist/core/agents/reviewer-loop.js +2 -6
  234. package/dist/core/agents/reviewer-loop.js.map +1 -1
  235. package/dist/core/agents/skill-auditor.d.ts.map +1 -1
  236. package/dist/core/agents/skill-auditor.js +8 -14
  237. package/dist/core/agents/skill-auditor.js.map +1 -1
  238. package/dist/core/agents/types.d.ts +1 -1
  239. package/dist/core/agents/types.d.ts.map +1 -1
  240. package/dist/core/analyzer/change-intent.d.ts +1 -1
  241. package/dist/core/analyzer/change-intent.d.ts.map +1 -1
  242. package/dist/core/analyzer/change-intent.js +6 -5
  243. package/dist/core/analyzer/change-intent.js.map +1 -1
  244. package/dist/core/analyzer/command-extractor.d.ts.map +1 -1
  245. package/dist/core/analyzer/command-extractor.js +2 -4
  246. package/dist/core/analyzer/command-extractor.js.map +1 -1
  247. package/dist/core/analyzer/dependency-graph.d.ts.map +1 -1
  248. package/dist/core/analyzer/dependency-graph.js +379 -74
  249. package/dist/core/analyzer/dependency-graph.js.map +1 -1
  250. package/dist/core/analyzer/focus-detector.d.ts.map +1 -1
  251. package/dist/core/analyzer/focus-detector.js +25 -25
  252. package/dist/core/analyzer/focus-detector.js.map +1 -1
  253. package/dist/core/analyzer/index.d.ts +8 -8
  254. package/dist/core/analyzer/index.d.ts.map +1 -1
  255. package/dist/core/analyzer/index.js +18 -18
  256. package/dist/core/analyzer/index.js.map +1 -1
  257. package/dist/core/analyzer/multi-lang/index.d.ts +2 -2
  258. package/dist/core/analyzer/multi-lang/index.d.ts.map +1 -1
  259. package/dist/core/analyzer/multi-lang/index.js +36 -38
  260. package/dist/core/analyzer/multi-lang/index.js.map +1 -1
  261. package/dist/core/analyzer/multi-lang/language-detector.d.ts +1 -1
  262. package/dist/core/analyzer/multi-lang/language-detector.d.ts.map +1 -1
  263. package/dist/core/analyzer/multi-lang/language-detector.js +27 -14
  264. package/dist/core/analyzer/multi-lang/language-detector.js.map +1 -1
  265. package/dist/core/analyzer/multi-lang/pattern-extractor.d.ts +1 -1
  266. package/dist/core/analyzer/multi-lang/pattern-extractor.d.ts.map +1 -1
  267. package/dist/core/analyzer/multi-lang/pattern-extractor.js +21 -10
  268. package/dist/core/analyzer/multi-lang/pattern-extractor.js.map +1 -1
  269. package/dist/core/analyzer/multi-lang/types.d.ts.map +1 -1
  270. package/dist/core/analyzer/pattern-detector.d.ts.map +1 -1
  271. package/dist/core/analyzer/pattern-detector.js +2 -2
  272. package/dist/core/analyzer/pattern-detector.js.map +1 -1
  273. package/dist/core/analyzer/project-detector.d.ts.map +1 -1
  274. package/dist/core/analyzer/project-detector.js +13 -8
  275. package/dist/core/analyzer/project-detector.js.map +1 -1
  276. package/dist/core/analyzer/semantic-diff.d.ts.map +1 -1
  277. package/dist/core/analyzer/semantic-diff.js +23 -8
  278. package/dist/core/analyzer/semantic-diff.js.map +1 -1
  279. package/dist/core/analyzer/structure-mapper.d.ts +2 -2
  280. package/dist/core/analyzer/structure-mapper.d.ts.map +1 -1
  281. package/dist/core/analyzer/structure-mapper.js +3 -3
  282. package/dist/core/analyzer/structure-mapper.js.map +1 -1
  283. package/dist/core/analyzer/types.d.ts.map +1 -1
  284. package/dist/core/budget/cross-section-dedup.d.ts.map +1 -1
  285. package/dist/core/budget/cross-section-dedup.js +24 -21
  286. package/dist/core/budget/cross-section-dedup.js.map +1 -1
  287. package/dist/core/budget/entropy-budget.d.ts.map +1 -1
  288. package/dist/core/budget/entropy-budget.js +16 -21
  289. package/dist/core/budget/entropy-budget.js.map +1 -1
  290. package/dist/core/budget/index.d.ts +2 -2
  291. package/dist/core/budget/index.d.ts.map +1 -1
  292. package/dist/core/budget/index.js +3 -3
  293. package/dist/core/budget/index.js.map +1 -1
  294. package/dist/core/budget/language-entropy-profiles.d.ts.map +1 -1
  295. package/dist/core/budget/language-entropy-profiles.js +59 -7
  296. package/dist/core/budget/language-entropy-profiles.js.map +1 -1
  297. package/dist/core/budget/token-estimator.d.ts.map +1 -1
  298. package/dist/core/budget/token-estimator.js.map +1 -1
  299. package/dist/core/cache/cache-analyzer.d.ts.map +1 -1
  300. package/dist/core/cache/cache-analyzer.js +23 -25
  301. package/dist/core/cache/cache-analyzer.js.map +1 -1
  302. package/dist/core/cache/cache-metrics.d.ts +1 -1
  303. package/dist/core/cache/cache-metrics.d.ts.map +1 -1
  304. package/dist/core/cache/cache-metrics.js +7 -12
  305. package/dist/core/cache/cache-metrics.js.map +1 -1
  306. package/dist/core/cache/file-cache.d.ts.map +1 -1
  307. package/dist/core/cache/file-cache.js +4 -5
  308. package/dist/core/cache/file-cache.js.map +1 -1
  309. package/dist/core/cache/index.d.ts +3 -3
  310. package/dist/core/cache/index.d.ts.map +1 -1
  311. package/dist/core/cache/index.js +3 -3
  312. package/dist/core/cache/index.js.map +1 -1
  313. package/dist/core/checkpoints/category-compressor.d.ts +1 -1
  314. package/dist/core/checkpoints/category-compressor.d.ts.map +1 -1
  315. package/dist/core/checkpoints/category-compressor.js +6 -7
  316. package/dist/core/checkpoints/category-compressor.js.map +1 -1
  317. package/dist/core/checkpoints/checkpoint-store.d.ts.map +1 -1
  318. package/dist/core/checkpoints/checkpoint-store.js +2 -2
  319. package/dist/core/checkpoints/checkpoint-store.js.map +1 -1
  320. package/dist/core/checkpoints/checkpoint.d.ts +2 -2
  321. package/dist/core/checkpoints/checkpoint.d.ts.map +1 -1
  322. package/dist/core/checkpoints/checkpoint.js +19 -18
  323. package/dist/core/checkpoints/checkpoint.js.map +1 -1
  324. package/dist/core/checkpoints/compression-templates.d.ts +1 -1
  325. package/dist/core/checkpoints/compression-templates.d.ts.map +1 -1
  326. package/dist/core/checkpoints/compression-templates.js +2 -4
  327. package/dist/core/checkpoints/compression-templates.js.map +1 -1
  328. package/dist/core/checkpoints/compression-verifier.d.ts.map +1 -1
  329. package/dist/core/checkpoints/compression-verifier.js +1 -0
  330. package/dist/core/checkpoints/compression-verifier.js.map +1 -1
  331. package/dist/core/checkpoints/context-serializer.d.ts.map +1 -1
  332. package/dist/core/checkpoints/context-serializer.js +9 -15
  333. package/dist/core/checkpoints/context-serializer.js.map +1 -1
  334. package/dist/core/checkpoints/git-recovery.d.ts.map +1 -1
  335. package/dist/core/checkpoints/git-recovery.js +2 -3
  336. package/dist/core/checkpoints/git-recovery.js.map +1 -1
  337. package/dist/core/checkpoints/handoff-schema.d.ts +1 -1
  338. package/dist/core/checkpoints/handoff-schema.d.ts.map +1 -1
  339. package/dist/core/checkpoints/handoff-schema.js +28 -18
  340. package/dist/core/checkpoints/handoff-schema.js.map +1 -1
  341. package/dist/core/checkpoints/handoff.d.ts +1 -1
  342. package/dist/core/checkpoints/handoff.d.ts.map +1 -1
  343. package/dist/core/checkpoints/handoff.js +4 -6
  344. package/dist/core/checkpoints/handoff.js.map +1 -1
  345. package/dist/core/checkpoints/index.d.ts +4 -4
  346. package/dist/core/checkpoints/index.d.ts.map +1 -1
  347. package/dist/core/checkpoints/index.js +4 -4
  348. package/dist/core/checkpoints/index.js.map +1 -1
  349. package/dist/core/checkpoints/session-recovery.d.ts.map +1 -1
  350. package/dist/core/checkpoints/session-recovery.js +6 -4
  351. package/dist/core/checkpoints/session-recovery.js.map +1 -1
  352. package/dist/core/chunking/index.d.ts +2 -2
  353. package/dist/core/chunking/index.d.ts.map +1 -1
  354. package/dist/core/chunking/index.js +9 -11
  355. package/dist/core/chunking/index.js.map +1 -1
  356. package/dist/core/chunking/types.d.ts.map +1 -1
  357. package/dist/core/chunking/types.js.map +1 -1
  358. package/dist/core/chunking/typescript-chunker.d.ts +1 -1
  359. package/dist/core/chunking/typescript-chunker.d.ts.map +1 -1
  360. package/dist/core/chunking/typescript-chunker.js +16 -12
  361. package/dist/core/chunking/typescript-chunker.js.map +1 -1
  362. package/dist/core/chunking/utils.d.ts.map +1 -1
  363. package/dist/core/chunking/utils.js +14 -14
  364. package/dist/core/chunking/utils.js.map +1 -1
  365. package/dist/core/config/constants.d.ts +1 -1
  366. package/dist/core/config/constants.d.ts.map +1 -1
  367. package/dist/core/config/constants.js +2 -2
  368. package/dist/core/config/constants.js.map +1 -1
  369. package/dist/core/config/feature-flags.d.ts +1 -1
  370. package/dist/core/config/feature-flags.d.ts.map +1 -1
  371. package/dist/core/config/feature-flags.js +2 -2
  372. package/dist/core/config/feature-flags.js.map +1 -1
  373. package/dist/core/config/generated-files.d.ts.map +1 -1
  374. package/dist/core/config/generated-files.js.map +1 -1
  375. package/dist/core/config/index.d.ts +2 -2
  376. package/dist/core/config/index.d.ts.map +1 -1
  377. package/dist/core/config/index.js +2 -2
  378. package/dist/core/config/index.js.map +1 -1
  379. package/dist/core/config/markers.d.ts.map +1 -1
  380. package/dist/core/config/markers.js.map +1 -1
  381. package/dist/core/config/optional-commands.d.ts.map +1 -1
  382. package/dist/core/config/optional-commands.js +1 -1
  383. package/dist/core/config/optional-commands.js.map +1 -1
  384. package/dist/core/config/paths.d.ts.map +1 -1
  385. package/dist/core/config/paths.js.map +1 -1
  386. package/dist/core/config-repair.d.ts +91 -0
  387. package/dist/core/config-repair.d.ts.map +1 -0
  388. package/dist/core/config-repair.js +409 -0
  389. package/dist/core/config-repair.js.map +1 -0
  390. package/dist/core/config.d.ts +1 -1
  391. package/dist/core/config.d.ts.map +1 -1
  392. package/dist/core/config.js +1 -1
  393. package/dist/core/config.js.map +1 -1
  394. package/dist/core/context/__tests__/budget-thresholds.test.js +14 -14
  395. package/dist/core/context/__tests__/budget-thresholds.test.js.map +1 -1
  396. package/dist/core/context/__tests__/compaction-engine.test.js +57 -39
  397. package/dist/core/context/__tests__/compaction-engine.test.js.map +1 -1
  398. package/dist/core/context/__tests__/feedback-loop-engine.test.js +68 -40
  399. package/dist/core/context/__tests__/feedback-loop-engine.test.js.map +1 -1
  400. package/dist/core/context/__tests__/output-persistence.test.js +5 -4
  401. package/dist/core/context/__tests__/output-persistence.test.js.map +1 -1
  402. package/dist/core/context/access-tracker.d.ts.map +1 -1
  403. package/dist/core/context/access-tracker.js +9 -11
  404. package/dist/core/context/access-tracker.js.map +1 -1
  405. package/dist/core/context/adaptation-strategy.d.ts.map +1 -1
  406. package/dist/core/context/adaptation-strategy.js +7 -7
  407. package/dist/core/context/adaptation-strategy.js.map +1 -1
  408. package/dist/core/context/auto-injection-engine.d.ts +1 -1
  409. package/dist/core/context/auto-injection-engine.d.ts.map +1 -1
  410. package/dist/core/context/auto-injection-engine.js +15 -14
  411. package/dist/core/context/auto-injection-engine.js.map +1 -1
  412. package/dist/core/context/auto-unload-engine.d.ts.map +1 -1
  413. package/dist/core/context/auto-unload-engine.js +7 -7
  414. package/dist/core/context/auto-unload-engine.js.map +1 -1
  415. package/dist/core/context/budget-thresholds.d.ts.map +1 -1
  416. package/dist/core/context/budget-thresholds.js +22 -12
  417. package/dist/core/context/budget-thresholds.js.map +1 -1
  418. package/dist/core/context/compaction-engine.d.ts.map +1 -1
  419. package/dist/core/context/compaction-engine.js +10 -8
  420. package/dist/core/context/compaction-engine.js.map +1 -1
  421. package/dist/core/context/context-auditor.d.ts.map +1 -1
  422. package/dist/core/context/context-auditor.js +20 -23
  423. package/dist/core/context/context-auditor.js.map +1 -1
  424. package/dist/core/context/context-health.d.ts +1 -1
  425. package/dist/core/context/context-health.d.ts.map +1 -1
  426. package/dist/core/context/context-health.js +18 -21
  427. package/dist/core/context/context-health.js.map +1 -1
  428. package/dist/core/context/context-manifest.d.ts.map +1 -1
  429. package/dist/core/context/context-manifest.js +9 -13
  430. package/dist/core/context/context-manifest.js.map +1 -1
  431. package/dist/core/context/demand-detector.d.ts +4 -4
  432. package/dist/core/context/demand-detector.d.ts.map +1 -1
  433. package/dist/core/context/demand-detector.js +17 -23
  434. package/dist/core/context/demand-detector.js.map +1 -1
  435. package/dist/core/context/demand-signal-patterns.d.ts.map +1 -1
  436. package/dist/core/context/demand-signal-patterns.js +20 -4
  437. package/dist/core/context/demand-signal-patterns.js.map +1 -1
  438. package/dist/core/context/feedback-loop-engine.d.ts +1 -1
  439. package/dist/core/context/feedback-loop-engine.d.ts.map +1 -1
  440. package/dist/core/context/feedback-loop-engine.js +29 -6
  441. package/dist/core/context/feedback-loop-engine.js.map +1 -1
  442. package/dist/core/context/focus-resource-loader.d.ts.map +1 -1
  443. package/dist/core/context/focus-resource-loader.js +17 -10
  444. package/dist/core/context/focus-resource-loader.js.map +1 -1
  445. package/dist/core/context/index.d.ts +20 -21
  446. package/dist/core/context/index.d.ts.map +1 -1
  447. package/dist/core/context/index.js +156 -159
  448. package/dist/core/context/index.js.map +1 -1
  449. package/dist/core/context/lazy-loader.d.ts +1 -1
  450. package/dist/core/context/lazy-loader.d.ts.map +1 -1
  451. package/dist/core/context/lazy-loader.js +13 -13
  452. package/dist/core/context/lazy-loader.js.map +1 -1
  453. package/dist/core/context/memory-decay.d.ts.map +1 -1
  454. package/dist/core/context/memory-decay.js +10 -12
  455. package/dist/core/context/memory-decay.js.map +1 -1
  456. package/dist/core/context/output-persistence.d.ts.map +1 -1
  457. package/dist/core/context/output-persistence.js +6 -10
  458. package/dist/core/context/output-persistence.js.map +1 -1
  459. package/dist/core/context/positional-optimizer.d.ts.map +1 -1
  460. package/dist/core/context/positional-optimizer.js +15 -16
  461. package/dist/core/context/positional-optimizer.js.map +1 -1
  462. package/dist/core/context/prefetch-learner.d.ts.map +1 -1
  463. package/dist/core/context/prefetch-learner.js +7 -5
  464. package/dist/core/context/prefetch-learner.js.map +1 -1
  465. package/dist/core/context/prefetch-optimizer.d.ts.map +1 -1
  466. package/dist/core/context/prefetch-optimizer.js +10 -9
  467. package/dist/core/context/prefetch-optimizer.js.map +1 -1
  468. package/dist/core/context/semantic-signal-detector.d.ts +1 -1
  469. package/dist/core/context/semantic-signal-detector.d.ts.map +1 -1
  470. package/dist/core/context/semantic-signal-detector.js +11 -13
  471. package/dist/core/context/semantic-signal-detector.js.map +1 -1
  472. package/dist/core/context/smart-prefetch-engine.d.ts.map +1 -1
  473. package/dist/core/context/smart-prefetch-engine.js +6 -4
  474. package/dist/core/context/smart-prefetch-engine.js.map +1 -1
  475. package/dist/core/context/token-tracker.d.ts.map +1 -1
  476. package/dist/core/context/token-tracker.js +32 -24
  477. package/dist/core/context/token-tracker.js.map +1 -1
  478. package/dist/core/context/tool-clearing.d.ts +1 -1
  479. package/dist/core/context/tool-clearing.d.ts.map +1 -1
  480. package/dist/core/context/tool-clearing.js +25 -20
  481. package/dist/core/context/tool-clearing.js.map +1 -1
  482. package/dist/core/context/tool-protection.d.ts.map +1 -1
  483. package/dist/core/context/tool-protection.js +1 -3
  484. package/dist/core/context/tool-protection.js.map +1 -1
  485. package/dist/core/context/tool-summarization.d.ts.map +1 -1
  486. package/dist/core/context/tool-summarization.js +24 -19
  487. package/dist/core/context/tool-summarization.js.map +1 -1
  488. package/dist/core/context/window-boundary.d.ts.map +1 -1
  489. package/dist/core/context/window-boundary.js +4 -6
  490. package/dist/core/context/window-boundary.js.map +1 -1
  491. package/dist/core/context-repl/__tests__/condensation.test.js +4 -3
  492. package/dist/core/context-repl/__tests__/condensation.test.js.map +1 -1
  493. package/dist/core/context-repl/__tests__/query-executor.test.js +28 -8
  494. package/dist/core/context-repl/__tests__/query-executor.test.js.map +1 -1
  495. package/dist/core/context-repl/__tests__/query-parser.test.js +6 -5
  496. package/dist/core/context-repl/__tests__/query-parser.test.js.map +1 -1
  497. package/dist/core/context-repl/__tests__/repl-environment.test.js +6 -6
  498. package/dist/core/context-repl/__tests__/repl-environment.test.js.map +1 -1
  499. package/dist/core/context-repl/condensation.d.ts +1 -1
  500. package/dist/core/context-repl/condensation.d.ts.map +1 -1
  501. package/dist/core/context-repl/condensation.js +15 -9
  502. package/dist/core/context-repl/condensation.js.map +1 -1
  503. package/dist/core/context-repl/confidence-scorer.d.ts.map +1 -1
  504. package/dist/core/context-repl/confidence-scorer.js +5 -5
  505. package/dist/core/context-repl/confidence-scorer.js.map +1 -1
  506. package/dist/core/context-repl/context-window-monitor.d.ts +1 -1
  507. package/dist/core/context-repl/context-window-monitor.d.ts.map +1 -1
  508. package/dist/core/context-repl/context-window-monitor.js +5 -8
  509. package/dist/core/context-repl/context-window-monitor.js.map +1 -1
  510. package/dist/core/context-repl/index.d.ts +15 -16
  511. package/dist/core/context-repl/index.d.ts.map +1 -1
  512. package/dist/core/context-repl/index.js +23 -23
  513. package/dist/core/context-repl/index.js.map +1 -1
  514. package/dist/core/context-repl/partitioning/__tests__/by-dependency.test.js +7 -20
  515. package/dist/core/context-repl/partitioning/__tests__/by-dependency.test.js.map +1 -1
  516. package/dist/core/context-repl/partitioning/__tests__/by-directory.test.js +10 -18
  517. package/dist/core/context-repl/partitioning/__tests__/by-directory.test.js.map +1 -1
  518. package/dist/core/context-repl/partitioning/__tests__/by-feature.test.js +22 -31
  519. package/dist/core/context-repl/partitioning/__tests__/by-feature.test.js.map +1 -1
  520. package/dist/core/context-repl/partitioning/__tests__/by-time.test.js +14 -19
  521. package/dist/core/context-repl/partitioning/__tests__/by-time.test.js.map +1 -1
  522. package/dist/core/context-repl/partitioning/__tests__/index.test.js +6 -13
  523. package/dist/core/context-repl/partitioning/__tests__/index.test.js.map +1 -1
  524. package/dist/core/context-repl/partitioning/index.d.ts +5 -5
  525. package/dist/core/context-repl/partitioning/index.d.ts.map +1 -1
  526. package/dist/core/context-repl/partitioning/index.js +20 -20
  527. package/dist/core/context-repl/partitioning/index.js.map +1 -1
  528. package/dist/core/context-repl/partitioning/partition-cache.d.ts +1 -1
  529. package/dist/core/context-repl/partitioning/partition-cache.d.ts.map +1 -1
  530. package/dist/core/context-repl/partitioning/partition-cache.js +2 -2
  531. package/dist/core/context-repl/partitioning/partition-cache.js.map +1 -1
  532. package/dist/core/context-repl/partitioning/strategies/by-dependency.d.ts +1 -1
  533. package/dist/core/context-repl/partitioning/strategies/by-dependency.d.ts.map +1 -1
  534. package/dist/core/context-repl/partitioning/strategies/by-dependency.js +25 -18
  535. package/dist/core/context-repl/partitioning/strategies/by-dependency.js.map +1 -1
  536. package/dist/core/context-repl/partitioning/strategies/by-directory.d.ts +1 -1
  537. package/dist/core/context-repl/partitioning/strategies/by-directory.d.ts.map +1 -1
  538. package/dist/core/context-repl/partitioning/strategies/by-directory.js +8 -6
  539. package/dist/core/context-repl/partitioning/strategies/by-directory.js.map +1 -1
  540. package/dist/core/context-repl/partitioning/strategies/by-feature.d.ts +1 -1
  541. package/dist/core/context-repl/partitioning/strategies/by-feature.d.ts.map +1 -1
  542. package/dist/core/context-repl/partitioning/strategies/by-feature.js +19 -38
  543. package/dist/core/context-repl/partitioning/strategies/by-feature.js.map +1 -1
  544. package/dist/core/context-repl/partitioning/strategies/by-time.d.ts +1 -1
  545. package/dist/core/context-repl/partitioning/strategies/by-time.d.ts.map +1 -1
  546. package/dist/core/context-repl/partitioning/strategies/by-time.js +12 -11
  547. package/dist/core/context-repl/partitioning/strategies/by-time.js.map +1 -1
  548. package/dist/core/context-repl/partitioning/strategies/index.d.ts +4 -4
  549. package/dist/core/context-repl/partitioning/strategies/index.d.ts.map +1 -1
  550. package/dist/core/context-repl/partitioning/strategies/index.js +8 -8
  551. package/dist/core/context-repl/partitioning/strategies/index.js.map +1 -1
  552. package/dist/core/context-repl/partitioning/types.d.ts.map +1 -1
  553. package/dist/core/context-repl/partitioning/types.js.map +1 -1
  554. package/dist/core/context-repl/query-executor.d.ts +1 -1
  555. package/dist/core/context-repl/query-executor.d.ts.map +1 -1
  556. package/dist/core/context-repl/query-executor.js +43 -22
  557. package/dist/core/context-repl/query-executor.js.map +1 -1
  558. package/dist/core/context-repl/query-parser.d.ts +1 -1
  559. package/dist/core/context-repl/query-parser.d.ts.map +1 -1
  560. package/dist/core/context-repl/query-parser.js +39 -40
  561. package/dist/core/context-repl/query-parser.js.map +1 -1
  562. package/dist/core/context-repl/reconnaissance-engine.d.ts +1 -1
  563. package/dist/core/context-repl/reconnaissance-engine.d.ts.map +1 -1
  564. package/dist/core/context-repl/reconnaissance-engine.js +9 -14
  565. package/dist/core/context-repl/reconnaissance-engine.js.map +1 -1
  566. package/dist/core/context-repl/recursive/__tests__/budget.test.js +7 -4
  567. package/dist/core/context-repl/recursive/__tests__/budget.test.js.map +1 -1
  568. package/dist/core/context-repl/recursive/__tests__/decomposer.test.js +6 -6
  569. package/dist/core/context-repl/recursive/__tests__/decomposer.test.js.map +1 -1
  570. package/dist/core/context-repl/recursive/__tests__/integration.test.js +12 -8
  571. package/dist/core/context-repl/recursive/__tests__/integration.test.js.map +1 -1
  572. package/dist/core/context-repl/recursive/__tests__/quality.test.js +10 -29
  573. package/dist/core/context-repl/recursive/__tests__/quality.test.js.map +1 -1
  574. package/dist/core/context-repl/recursive/__tests__/synthesizer.test.js +27 -13
  575. package/dist/core/context-repl/recursive/__tests__/synthesizer.test.js.map +1 -1
  576. package/dist/core/context-repl/recursive/budget.d.ts +1 -1
  577. package/dist/core/context-repl/recursive/budget.d.ts.map +1 -1
  578. package/dist/core/context-repl/recursive/budget.js +2 -2
  579. package/dist/core/context-repl/recursive/budget.js.map +1 -1
  580. package/dist/core/context-repl/recursive/decomposer.d.ts +4 -4
  581. package/dist/core/context-repl/recursive/decomposer.d.ts.map +1 -1
  582. package/dist/core/context-repl/recursive/decomposer.js +52 -35
  583. package/dist/core/context-repl/recursive/decomposer.js.map +1 -1
  584. package/dist/core/context-repl/recursive/index.d.ts +7 -7
  585. package/dist/core/context-repl/recursive/index.d.ts.map +1 -1
  586. package/dist/core/context-repl/recursive/index.js +33 -29
  587. package/dist/core/context-repl/recursive/index.js.map +1 -1
  588. package/dist/core/context-repl/recursive/quality.d.ts +1 -1
  589. package/dist/core/context-repl/recursive/quality.d.ts.map +1 -1
  590. package/dist/core/context-repl/recursive/quality.js +14 -13
  591. package/dist/core/context-repl/recursive/quality.js.map +1 -1
  592. package/dist/core/context-repl/recursive/synthesizer.d.ts +2 -2
  593. package/dist/core/context-repl/recursive/synthesizer.d.ts.map +1 -1
  594. package/dist/core/context-repl/recursive/synthesizer.js +9 -9
  595. package/dist/core/context-repl/recursive/synthesizer.js.map +1 -1
  596. package/dist/core/context-repl/recursive/trajectory.d.ts +1 -1
  597. package/dist/core/context-repl/recursive/trajectory.d.ts.map +1 -1
  598. package/dist/core/context-repl/recursive/trajectory.js +16 -16
  599. package/dist/core/context-repl/recursive/trajectory.js.map +1 -1
  600. package/dist/core/context-repl/recursive/types.d.ts.map +1 -1
  601. package/dist/core/context-repl/recursive/types.js.map +1 -1
  602. package/dist/core/context-repl/repl-environment.d.ts +1 -1
  603. package/dist/core/context-repl/repl-environment.d.ts.map +1 -1
  604. package/dist/core/context-repl/repl-environment.js +20 -18
  605. package/dist/core/context-repl/repl-environment.js.map +1 -1
  606. package/dist/core/context-repl/types.d.ts +2 -2
  607. package/dist/core/context-repl/types.d.ts.map +1 -1
  608. package/dist/core/context-repl/types.js +16 -5
  609. package/dist/core/context-repl/types.js.map +1 -1
  610. package/dist/core/context-repl/variable-loader.d.ts +2 -2
  611. package/dist/core/context-repl/variable-loader.d.ts.map +1 -1
  612. package/dist/core/context-repl/variable-loader.js +12 -14
  613. package/dist/core/context-repl/variable-loader.js.map +1 -1
  614. package/dist/core/conversations/conversation-manager.d.ts.map +1 -1
  615. package/dist/core/conversations/conversation-manager.js +5 -2
  616. package/dist/core/conversations/conversation-manager.js.map +1 -1
  617. package/dist/core/conversations/index.d.ts.map +1 -1
  618. package/dist/core/conversations/index.js.map +1 -1
  619. package/dist/core/dashboard/dashboard-formatter.d.ts +1 -1
  620. package/dist/core/dashboard/dashboard-formatter.d.ts.map +1 -1
  621. package/dist/core/dashboard/dashboard-formatter.js +25 -9
  622. package/dist/core/dashboard/dashboard-formatter.js.map +1 -1
  623. package/dist/core/dashboard/health-metrics-aggregator.d.ts.map +1 -1
  624. package/dist/core/dashboard/health-metrics-aggregator.js +16 -14
  625. package/dist/core/dashboard/health-metrics-aggregator.js.map +1 -1
  626. package/dist/core/debug/context-decision-logger.d.ts +1 -1
  627. package/dist/core/debug/context-decision-logger.d.ts.map +1 -1
  628. package/dist/core/debug/context-decision-logger.js +6 -49
  629. package/dist/core/debug/context-decision-logger.js.map +1 -1
  630. package/dist/core/debug/debug-config.d.ts.map +1 -1
  631. package/dist/core/debug/debug-config.js +4 -4
  632. package/dist/core/debug/debug-config.js.map +1 -1
  633. package/dist/core/debug/debug-logger.d.ts +1 -1
  634. package/dist/core/debug/debug-logger.d.ts.map +1 -1
  635. package/dist/core/debug/debug-logger.js +21 -15
  636. package/dist/core/debug/debug-logger.js.map +1 -1
  637. package/dist/core/debug/index.d.ts +3 -3
  638. package/dist/core/debug/index.d.ts.map +1 -1
  639. package/dist/core/debug/index.js +4 -4
  640. package/dist/core/debug/index.js.map +1 -1
  641. package/dist/core/embeddings/adapters/index.d.ts +4 -4
  642. package/dist/core/embeddings/adapters/index.d.ts.map +1 -1
  643. package/dist/core/embeddings/adapters/index.js +5 -7
  644. package/dist/core/embeddings/adapters/index.js.map +1 -1
  645. package/dist/core/embeddings/adapters/local.d.ts +2 -2
  646. package/dist/core/embeddings/adapters/local.d.ts.map +1 -1
  647. package/dist/core/embeddings/adapters/local.js +8 -9
  648. package/dist/core/embeddings/adapters/local.js.map +1 -1
  649. package/dist/core/embeddings/adapters/qdrant.d.ts +1 -1
  650. package/dist/core/embeddings/adapters/qdrant.d.ts.map +1 -1
  651. package/dist/core/embeddings/adapters/qdrant.js +4 -9
  652. package/dist/core/embeddings/adapters/qdrant.js.map +1 -1
  653. package/dist/core/embeddings/adapters/types.d.ts +1 -1
  654. package/dist/core/embeddings/adapters/types.d.ts.map +1 -1
  655. package/dist/core/embeddings/adapters/types.js.map +1 -1
  656. package/dist/core/embeddings/backends/index.d.ts.map +1 -1
  657. package/dist/core/embeddings/backends/index.js +2 -2
  658. package/dist/core/embeddings/backends/index.js.map +1 -1
  659. package/dist/core/embeddings/backends/local.d.ts.map +1 -1
  660. package/dist/core/embeddings/backends/local.js +43 -15
  661. package/dist/core/embeddings/backends/local.js.map +1 -1
  662. package/dist/core/embeddings/content-indexer.d.ts +1 -1
  663. package/dist/core/embeddings/content-indexer.d.ts.map +1 -1
  664. package/dist/core/embeddings/content-indexer.js +7 -7
  665. package/dist/core/embeddings/content-indexer.js.map +1 -1
  666. package/dist/core/embeddings/index.d.ts +11 -11
  667. package/dist/core/embeddings/index.d.ts.map +1 -1
  668. package/dist/core/embeddings/index.js +12 -9
  669. package/dist/core/embeddings/index.js.map +1 -1
  670. package/dist/core/embeddings/query-cache.d.ts.map +1 -1
  671. package/dist/core/embeddings/query-cache.js +1 -1
  672. package/dist/core/embeddings/query-cache.js.map +1 -1
  673. package/dist/core/embeddings/semantic-cache.d.ts.map +1 -1
  674. package/dist/core/embeddings/semantic-cache.js +1 -1
  675. package/dist/core/embeddings/semantic-cache.js.map +1 -1
  676. package/dist/core/embeddings/types.d.ts.map +1 -1
  677. package/dist/core/embeddings/types.js.map +1 -1
  678. package/dist/core/embeddings/vector-store.d.ts +1 -1
  679. package/dist/core/embeddings/vector-store.d.ts.map +1 -1
  680. package/dist/core/embeddings/vector-store.js +20 -21
  681. package/dist/core/embeddings/vector-store.js.map +1 -1
  682. package/dist/core/embeddings/vector-utils.d.ts.map +1 -1
  683. package/dist/core/embeddings/vector-utils.js +4 -4
  684. package/dist/core/embeddings/vector-utils.js.map +1 -1
  685. package/dist/core/environment/__tests__/pre-verify.test.js +23 -19
  686. package/dist/core/environment/__tests__/pre-verify.test.js.map +1 -1
  687. package/dist/core/environment/index.d.ts +1 -1
  688. package/dist/core/environment/index.d.ts.map +1 -1
  689. package/dist/core/environment/index.js +1 -1
  690. package/dist/core/environment/index.js.map +1 -1
  691. package/dist/core/environment/pre-verify.d.ts.map +1 -1
  692. package/dist/core/environment/pre-verify.js +3 -3
  693. package/dist/core/environment/pre-verify.js.map +1 -1
  694. package/dist/core/environment/types.d.ts.map +1 -1
  695. package/dist/core/errors/index.d.ts +2 -2
  696. package/dist/core/errors/index.d.ts.map +1 -1
  697. package/dist/core/errors/index.js +6 -11
  698. package/dist/core/errors/index.js.map +1 -1
  699. package/dist/core/errors.d.ts +3 -3
  700. package/dist/core/errors.d.ts.map +1 -1
  701. package/dist/core/errors.js +4 -4
  702. package/dist/core/errors.js.map +1 -1
  703. package/dist/core/examples/index.d.ts +1 -1
  704. package/dist/core/examples/index.d.ts.map +1 -1
  705. package/dist/core/examples/index.js +1 -1
  706. package/dist/core/examples/index.js.map +1 -1
  707. package/dist/core/examples/tool-examples.d.ts.map +1 -1
  708. package/dist/core/examples/tool-examples.js +6 -15
  709. package/dist/core/examples/tool-examples.js.map +1 -1
  710. package/dist/core/experiments/assignment-engine.d.ts +88 -0
  711. package/dist/core/experiments/assignment-engine.d.ts.map +1 -0
  712. package/dist/core/experiments/assignment-engine.js +162 -0
  713. package/dist/core/experiments/assignment-engine.js.map +1 -0
  714. package/dist/core/experiments/experiment-schema.d.ts +126 -0
  715. package/dist/core/experiments/experiment-schema.d.ts.map +1 -0
  716. package/dist/core/experiments/experiment-schema.js +238 -0
  717. package/dist/core/experiments/experiment-schema.js.map +1 -0
  718. package/dist/core/experiments/experiment-store.d.ts +94 -0
  719. package/dist/core/experiments/experiment-store.d.ts.map +1 -0
  720. package/dist/core/experiments/experiment-store.js +271 -0
  721. package/dist/core/experiments/experiment-store.js.map +1 -0
  722. package/dist/core/experiments/index.d.ts +18 -0
  723. package/dist/core/experiments/index.d.ts.map +1 -0
  724. package/dist/core/experiments/index.js +14 -0
  725. package/dist/core/experiments/index.js.map +1 -0
  726. package/dist/core/experiments/metrics-segmenter.d.ts +99 -0
  727. package/dist/core/experiments/metrics-segmenter.d.ts.map +1 -0
  728. package/dist/core/experiments/metrics-segmenter.js +171 -0
  729. package/dist/core/experiments/metrics-segmenter.js.map +1 -0
  730. package/dist/core/experiments/statistical-analyzer.d.ts +71 -0
  731. package/dist/core/experiments/statistical-analyzer.d.ts.map +1 -0
  732. package/dist/core/experiments/statistical-analyzer.js +357 -0
  733. package/dist/core/experiments/statistical-analyzer.js.map +1 -0
  734. package/dist/core/features/index.d.ts +1 -1
  735. package/dist/core/features/index.d.ts.map +1 -1
  736. package/dist/core/features/index.js +3 -7
  737. package/dist/core/features/index.js.map +1 -1
  738. package/dist/core/features/types.d.ts.map +1 -1
  739. package/dist/core/generator/claude-md.d.ts.map +1 -1
  740. package/dist/core/generator/claude-md.js +35 -40
  741. package/dist/core/generator/claude-md.js.map +1 -1
  742. package/dist/core/generator/index.d.ts +2 -2
  743. package/dist/core/generator/index.d.ts.map +1 -1
  744. package/dist/core/generator/index.js +2 -2
  745. package/dist/core/generator/index.js.map +1 -1
  746. package/dist/core/generator/session-md.d.ts +8 -2
  747. package/dist/core/generator/session-md.d.ts.map +1 -1
  748. package/dist/core/generator/session-md.js +197 -72
  749. package/dist/core/generator/session-md.js.map +1 -1
  750. package/dist/core/handoff/index.d.ts +2 -2
  751. package/dist/core/handoff/index.d.ts.map +1 -1
  752. package/dist/core/handoff/index.js +1 -1
  753. package/dist/core/handoff/index.js.map +1 -1
  754. package/dist/core/handoff/writer.d.ts.map +1 -1
  755. package/dist/core/handoff/writer.js +1 -1
  756. package/dist/core/handoff/writer.js.map +1 -1
  757. package/dist/core/intelligence/adaptive-compaction.d.ts +1 -1
  758. package/dist/core/intelligence/adaptive-compaction.d.ts.map +1 -1
  759. package/dist/core/intelligence/adaptive-compaction.js +27 -30
  760. package/dist/core/intelligence/adaptive-compaction.js.map +1 -1
  761. package/dist/core/intelligence/budget-forecast.d.ts +1 -1
  762. package/dist/core/intelligence/budget-forecast.d.ts.map +1 -1
  763. package/dist/core/intelligence/budget-forecast.js +8 -9
  764. package/dist/core/intelligence/budget-forecast.js.map +1 -1
  765. package/dist/core/intelligence/context-budget.d.ts +2 -2
  766. package/dist/core/intelligence/context-budget.d.ts.map +1 -1
  767. package/dist/core/intelligence/context-budget.js +30 -30
  768. package/dist/core/intelligence/context-budget.js.map +1 -1
  769. package/dist/core/intelligence/effort-advisor.d.ts.map +1 -1
  770. package/dist/core/intelligence/effort-advisor.js +5 -7
  771. package/dist/core/intelligence/effort-advisor.js.map +1 -1
  772. package/dist/core/intelligence/index.d.ts +8 -8
  773. package/dist/core/intelligence/index.d.ts.map +1 -1
  774. package/dist/core/intelligence/index.js +46 -46
  775. package/dist/core/intelligence/index.js.map +1 -1
  776. package/dist/core/intelligence/playbook/evolution-engine.d.ts +1 -1
  777. package/dist/core/intelligence/playbook/evolution-engine.d.ts.map +1 -1
  778. package/dist/core/intelligence/playbook/evolution-engine.js +26 -27
  779. package/dist/core/intelligence/playbook/evolution-engine.js.map +1 -1
  780. package/dist/core/intelligence/playbook/feedback-collector.d.ts +2 -2
  781. package/dist/core/intelligence/playbook/feedback-collector.d.ts.map +1 -1
  782. package/dist/core/intelligence/playbook/feedback-collector.js +19 -19
  783. package/dist/core/intelligence/playbook/feedback-collector.js.map +1 -1
  784. package/dist/core/intelligence/playbook/index.d.ts +7 -7
  785. package/dist/core/intelligence/playbook/index.d.ts.map +1 -1
  786. package/dist/core/intelligence/playbook/index.js +20 -22
  787. package/dist/core/intelligence/playbook/index.js.map +1 -1
  788. package/dist/core/intelligence/playbook/playbook-store.d.ts +2 -2
  789. package/dist/core/intelligence/playbook/playbook-store.d.ts.map +1 -1
  790. package/dist/core/intelligence/playbook/playbook-store.js +18 -16
  791. package/dist/core/intelligence/playbook/playbook-store.js.map +1 -1
  792. package/dist/core/intelligence/playbook/strategy-extractor.d.ts +2 -2
  793. package/dist/core/intelligence/playbook/strategy-extractor.d.ts.map +1 -1
  794. package/dist/core/intelligence/playbook/strategy-extractor.js +41 -43
  795. package/dist/core/intelligence/playbook/strategy-extractor.js.map +1 -1
  796. package/dist/core/intelligence/playbook/tool-sequence.d.ts +1 -1
  797. package/dist/core/intelligence/playbook/tool-sequence.d.ts.map +1 -1
  798. package/dist/core/intelligence/playbook/tool-sequence.js +3 -4
  799. package/dist/core/intelligence/playbook/tool-sequence.js.map +1 -1
  800. package/dist/core/intelligence/playbook/types.d.ts +1 -1
  801. package/dist/core/intelligence/playbook/types.d.ts.map +1 -1
  802. package/dist/core/intelligence/progress-tracker.d.ts +1 -1
  803. package/dist/core/intelligence/progress-tracker.d.ts.map +1 -1
  804. package/dist/core/intelligence/progress-tracker.js.map +1 -1
  805. package/dist/core/intelligence/session-compactor.d.ts.map +1 -1
  806. package/dist/core/intelligence/session-compactor.js +28 -42
  807. package/dist/core/intelligence/session-compactor.js.map +1 -1
  808. package/dist/core/intelligence/trajectory.d.ts +1 -1
  809. package/dist/core/intelligence/trajectory.d.ts.map +1 -1
  810. package/dist/core/intelligence/trajectory.js +37 -27
  811. package/dist/core/intelligence/trajectory.js.map +1 -1
  812. package/dist/core/knowledge-graph/entity-extractor.d.ts +1 -1
  813. package/dist/core/knowledge-graph/entity-extractor.d.ts.map +1 -1
  814. package/dist/core/knowledge-graph/entity-extractor.js +15 -15
  815. package/dist/core/knowledge-graph/entity-extractor.js.map +1 -1
  816. package/dist/core/knowledge-graph/graph.d.ts +1 -1
  817. package/dist/core/knowledge-graph/graph.d.ts.map +1 -1
  818. package/dist/core/knowledge-graph/graph.js +60 -65
  819. package/dist/core/knowledge-graph/graph.js.map +1 -1
  820. package/dist/core/knowledge-graph/index.d.ts +3 -3
  821. package/dist/core/knowledge-graph/index.d.ts.map +1 -1
  822. package/dist/core/knowledge-graph/index.js +13 -13
  823. package/dist/core/knowledge-graph/index.js.map +1 -1
  824. package/dist/core/knowledge-graph/types.d.ts.map +1 -1
  825. package/dist/core/knowledge-graph/types.js.map +1 -1
  826. package/dist/core/memory/access-heatmap.d.ts.map +1 -1
  827. package/dist/core/memory/access-heatmap.js +6 -8
  828. package/dist/core/memory/access-heatmap.js.map +1 -1
  829. package/dist/core/memory/adaptive-strategy.d.ts +1 -1
  830. package/dist/core/memory/adaptive-strategy.d.ts.map +1 -1
  831. package/dist/core/memory/adaptive-strategy.js +12 -16
  832. package/dist/core/memory/adaptive-strategy.js.map +1 -1
  833. package/dist/core/memory/consolidation.d.ts +2 -2
  834. package/dist/core/memory/consolidation.d.ts.map +1 -1
  835. package/dist/core/memory/consolidation.js +45 -58
  836. package/dist/core/memory/consolidation.js.map +1 -1
  837. package/dist/core/memory/cross-linker.d.ts +1 -1
  838. package/dist/core/memory/cross-linker.d.ts.map +1 -1
  839. package/dist/core/memory/cross-linker.js +11 -13
  840. package/dist/core/memory/cross-linker.js.map +1 -1
  841. package/dist/core/memory/distillation.d.ts +1 -1
  842. package/dist/core/memory/distillation.d.ts.map +1 -1
  843. package/dist/core/memory/distillation.js +83 -23
  844. package/dist/core/memory/distillation.js.map +1 -1
  845. package/dist/core/memory/failure-registry.d.ts.map +1 -1
  846. package/dist/core/memory/failure-registry.js +10 -9
  847. package/dist/core/memory/failure-registry.js.map +1 -1
  848. package/dist/core/memory/formatters.d.ts +1 -1
  849. package/dist/core/memory/formatters.d.ts.map +1 -1
  850. package/dist/core/memory/formatters.js +3 -3
  851. package/dist/core/memory/formatters.js.map +1 -1
  852. package/dist/core/memory/global-memory.d.ts +1 -1
  853. package/dist/core/memory/global-memory.d.ts.map +1 -1
  854. package/dist/core/memory/global-memory.js +23 -18
  855. package/dist/core/memory/global-memory.js.map +1 -1
  856. package/dist/core/memory/graph.d.ts.map +1 -1
  857. package/dist/core/memory/graph.js +34 -23
  858. package/dist/core/memory/graph.js.map +1 -1
  859. package/dist/core/memory/hybrid-retrieval.d.ts +1 -1
  860. package/dist/core/memory/hybrid-retrieval.d.ts.map +1 -1
  861. package/dist/core/memory/hybrid-retrieval.js +13 -11
  862. package/dist/core/memory/hybrid-retrieval.js.map +1 -1
  863. package/dist/core/memory/index.d.ts +30 -36
  864. package/dist/core/memory/index.d.ts.map +1 -1
  865. package/dist/core/memory/index.js +220 -224
  866. package/dist/core/memory/index.js.map +1 -1
  867. package/dist/core/memory/memory-capture-agent.d.ts +1 -1
  868. package/dist/core/memory/memory-capture-agent.d.ts.map +1 -1
  869. package/dist/core/memory/memory-capture-agent.js +109 -18
  870. package/dist/core/memory/memory-capture-agent.js.map +1 -1
  871. package/dist/core/memory/memory-decay.d.ts +1 -1
  872. package/dist/core/memory/memory-decay.d.ts.map +1 -1
  873. package/dist/core/memory/memory-decay.js +7 -9
  874. package/dist/core/memory/memory-decay.js.map +1 -1
  875. package/dist/core/memory/memory-rehearsal-agent.d.ts +2 -2
  876. package/dist/core/memory/memory-rehearsal-agent.d.ts.map +1 -1
  877. package/dist/core/memory/memory-rehearsal-agent.js +8 -9
  878. package/dist/core/memory/memory-rehearsal-agent.js.map +1 -1
  879. package/dist/core/memory/memory-retrieval-agent.d.ts +1 -1
  880. package/dist/core/memory/memory-retrieval-agent.d.ts.map +1 -1
  881. package/dist/core/memory/memory-retrieval-agent.js +12 -12
  882. package/dist/core/memory/memory-retrieval-agent.js.map +1 -1
  883. package/dist/core/memory/memory-staging.d.ts +1 -1
  884. package/dist/core/memory/memory-staging.d.ts.map +1 -1
  885. package/dist/core/memory/memory-staging.js +8 -8
  886. package/dist/core/memory/memory-staging.js.map +1 -1
  887. package/dist/core/memory/memory-store.d.ts +2 -2
  888. package/dist/core/memory/memory-store.d.ts.map +1 -1
  889. package/dist/core/memory/memory-store.js +13 -13
  890. package/dist/core/memory/memory-store.js.map +1 -1
  891. package/dist/core/memory/pattern-feedback.d.ts +1 -1
  892. package/dist/core/memory/pattern-feedback.d.ts.map +1 -1
  893. package/dist/core/memory/pattern-feedback.js +3 -5
  894. package/dist/core/memory/pattern-feedback.js.map +1 -1
  895. package/dist/core/memory/pattern-learner.d.ts.map +1 -1
  896. package/dist/core/memory/pattern-learner.js +13 -13
  897. package/dist/core/memory/pattern-learner.js.map +1 -1
  898. package/dist/core/memory/proactive-extractor.d.ts.map +1 -1
  899. package/dist/core/memory/proactive-extractor.js +3 -5
  900. package/dist/core/memory/proactive-extractor.js.map +1 -1
  901. package/dist/core/memory/recitation.d.ts.map +1 -1
  902. package/dist/core/memory/recitation.js +6 -16
  903. package/dist/core/memory/recitation.js.map +1 -1
  904. package/dist/core/memory/retrieval-optimizer.d.ts.map +1 -1
  905. package/dist/core/memory/retrieval-optimizer.js +16 -19
  906. package/dist/core/memory/retrieval-optimizer.js.map +1 -1
  907. package/dist/core/memory/retrieval.d.ts +1 -1
  908. package/dist/core/memory/retrieval.d.ts.map +1 -1
  909. package/dist/core/memory/retrieval.js +4 -5
  910. package/dist/core/memory/retrieval.js.map +1 -1
  911. package/dist/core/memory/semantic-recall.d.ts +2 -2
  912. package/dist/core/memory/semantic-recall.d.ts.map +1 -1
  913. package/dist/core/memory/semantic-recall.js +7 -9
  914. package/dist/core/memory/semantic-recall.js.map +1 -1
  915. package/dist/core/memory/semantic-validation.d.ts.map +1 -1
  916. package/dist/core/memory/semantic-validation.js +22 -21
  917. package/dist/core/memory/semantic-validation.js.map +1 -1
  918. package/dist/core/memory/similarity-utils.d.ts +1 -1
  919. package/dist/core/memory/similarity-utils.d.ts.map +1 -1
  920. package/dist/core/memory/similarity-utils.js +2 -3
  921. package/dist/core/memory/similarity-utils.js.map +1 -1
  922. package/dist/core/memory/spaced-repetition.d.ts.map +1 -1
  923. package/dist/core/memory/spaced-repetition.js +10 -9
  924. package/dist/core/memory/spaced-repetition.js.map +1 -1
  925. package/dist/core/memory/store.d.ts +1 -1
  926. package/dist/core/memory/store.d.ts.map +1 -1
  927. package/dist/core/memory/store.js +4 -4
  928. package/dist/core/memory/store.js.map +1 -1
  929. package/dist/core/memory/types.d.ts.map +1 -1
  930. package/dist/core/memory/types.js +4 -4
  931. package/dist/core/memory/types.js.map +1 -1
  932. package/dist/core/memory/virtual-memory.d.ts +1 -1
  933. package/dist/core/memory/virtual-memory.d.ts.map +1 -1
  934. package/dist/core/memory/virtual-memory.js +23 -35
  935. package/dist/core/memory/virtual-memory.js.map +1 -1
  936. package/dist/core/memory/xml-utils.d.ts +1 -1
  937. package/dist/core/memory/xml-utils.d.ts.map +1 -1
  938. package/dist/core/memory/xml-utils.js +7 -8
  939. package/dist/core/memory/xml-utils.js.map +1 -1
  940. package/dist/core/metrics/__tests__/metrics-collector.test.js +8 -8
  941. package/dist/core/metrics/__tests__/metrics-collector.test.js.map +1 -1
  942. package/dist/core/metrics/index.d.ts +2 -2
  943. package/dist/core/metrics/index.d.ts.map +1 -1
  944. package/dist/core/metrics/index.js +17 -17
  945. package/dist/core/metrics/index.js.map +1 -1
  946. package/dist/core/metrics/metrics-collector.d.ts +5 -1
  947. package/dist/core/metrics/metrics-collector.d.ts.map +1 -1
  948. package/dist/core/metrics/metrics-collector.js +20 -18
  949. package/dist/core/metrics/metrics-collector.js.map +1 -1
  950. package/dist/core/metrics/metrics-schema.d.ts +5 -1
  951. package/dist/core/metrics/metrics-schema.d.ts.map +1 -1
  952. package/dist/core/metrics/metrics-schema.js +3 -2
  953. package/dist/core/metrics/metrics-schema.js.map +1 -1
  954. package/dist/core/plans/index.d.ts.map +1 -1
  955. package/dist/core/plans/index.js.map +1 -1
  956. package/dist/core/plans/plan-manager.d.ts.map +1 -1
  957. package/dist/core/plans/plan-manager.js +15 -8
  958. package/dist/core/plans/plan-manager.js.map +1 -1
  959. package/dist/core/profiling/index.d.ts.map +1 -1
  960. package/dist/core/profiling/index.js.map +1 -1
  961. package/dist/core/profiling/operation-profiler.d.ts.map +1 -1
  962. package/dist/core/profiling/operation-profiler.js +8 -9
  963. package/dist/core/profiling/operation-profiler.js.map +1 -1
  964. package/dist/core/profiling/perf-report-generator.d.ts.map +1 -1
  965. package/dist/core/profiling/perf-report-generator.js +0 -2
  966. package/dist/core/profiling/perf-report-generator.js.map +1 -1
  967. package/dist/core/provider/index.d.ts.map +1 -1
  968. package/dist/core/provider/index.js.map +1 -1
  969. package/dist/core/provider/storage.d.ts.map +1 -1
  970. package/dist/core/provider/storage.js +15 -15
  971. package/dist/core/provider/storage.js.map +1 -1
  972. package/dist/core/ralph/git-integration.d.ts +56 -0
  973. package/dist/core/ralph/git-integration.d.ts.map +1 -1
  974. package/dist/core/ralph/git-integration.js +182 -5
  975. package/dist/core/ralph/git-integration.js.map +1 -1
  976. package/dist/core/ralph/index.d.ts +15 -13
  977. package/dist/core/ralph/index.d.ts.map +1 -1
  978. package/dist/core/ralph/index.js +14 -11
  979. package/dist/core/ralph/index.js.map +1 -1
  980. package/dist/core/ralph/learning-consolidator.d.ts +1 -1
  981. package/dist/core/ralph/learning-consolidator.d.ts.map +1 -1
  982. package/dist/core/ralph/learning-consolidator.js +141 -33
  983. package/dist/core/ralph/learning-consolidator.js.map +1 -1
  984. package/dist/core/ralph/metrics.d.ts +1 -1
  985. package/dist/core/ralph/metrics.d.ts.map +1 -1
  986. package/dist/core/ralph/metrics.js +14 -22
  987. package/dist/core/ralph/metrics.js.map +1 -1
  988. package/dist/core/ralph/prd-generator.d.ts +1 -1
  989. package/dist/core/ralph/prd-generator.d.ts.map +1 -1
  990. package/dist/core/ralph/prd-generator.js +21 -21
  991. package/dist/core/ralph/prd-generator.js.map +1 -1
  992. package/dist/core/ralph/progress-tracker.d.ts +1 -1
  993. package/dist/core/ralph/progress-tracker.d.ts.map +1 -1
  994. package/dist/core/ralph/progress-tracker.js +27 -28
  995. package/dist/core/ralph/progress-tracker.js.map +1 -1
  996. package/dist/core/ralph/state-handler.d.ts +141 -0
  997. package/dist/core/ralph/state-handler.d.ts.map +1 -0
  998. package/dist/core/ralph/state-handler.js +465 -0
  999. package/dist/core/ralph/state-handler.js.map +1 -0
  1000. package/dist/core/ralph/sub-agent-spawner.d.ts +1 -1
  1001. package/dist/core/ralph/sub-agent-spawner.d.ts.map +1 -1
  1002. package/dist/core/ralph/sub-agent-spawner.js +14 -16
  1003. package/dist/core/ralph/sub-agent-spawner.js.map +1 -1
  1004. package/dist/core/ralph/task-integration.d.ts +1 -1
  1005. package/dist/core/ralph/task-integration.d.ts.map +1 -1
  1006. package/dist/core/ralph/task-integration.js +13 -16
  1007. package/dist/core/ralph/task-integration.js.map +1 -1
  1008. package/dist/core/ralph/types.d.ts +6 -0
  1009. package/dist/core/ralph/types.d.ts.map +1 -1
  1010. package/dist/core/ralph/types.js +8 -2
  1011. package/dist/core/ralph/types.js.map +1 -1
  1012. package/dist/core/recommendations/heuristics.d.ts.map +1 -1
  1013. package/dist/core/recommendations/heuristics.js +9 -5
  1014. package/dist/core/recommendations/heuristics.js.map +1 -1
  1015. package/dist/core/recommendations/priority-scorer.d.ts.map +1 -1
  1016. package/dist/core/recommendations/priority-scorer.js +3 -5
  1017. package/dist/core/recommendations/priority-scorer.js.map +1 -1
  1018. package/dist/core/recommendations/recommendation-engine.d.ts.map +1 -1
  1019. package/dist/core/recommendations/recommendation-engine.js +23 -23
  1020. package/dist/core/recommendations/recommendation-engine.js.map +1 -1
  1021. package/dist/core/retrieval/hybrid.d.ts +2 -2
  1022. package/dist/core/retrieval/hybrid.d.ts.map +1 -1
  1023. package/dist/core/retrieval/hybrid.js +3 -3
  1024. package/dist/core/retrieval/hybrid.js.map +1 -1
  1025. package/dist/core/retrieval/index.d.ts +5 -5
  1026. package/dist/core/retrieval/index.d.ts.map +1 -1
  1027. package/dist/core/retrieval/index.js +3 -3
  1028. package/dist/core/retrieval/index.js.map +1 -1
  1029. package/dist/core/retrieval/ranker.d.ts.map +1 -1
  1030. package/dist/core/retrieval/ranker.js +17 -15
  1031. package/dist/core/retrieval/ranker.js.map +1 -1
  1032. package/dist/core/retrieval/stages.d.ts +5 -5
  1033. package/dist/core/retrieval/stages.d.ts.map +1 -1
  1034. package/dist/core/retrieval/stages.js +15 -16
  1035. package/dist/core/retrieval/stages.js.map +1 -1
  1036. package/dist/core/retrieval/types.d.ts.map +1 -1
  1037. package/dist/core/retrieval/types.js.map +1 -1
  1038. package/dist/core/session/index.d.ts +1 -1
  1039. package/dist/core/session/index.d.ts.map +1 -1
  1040. package/dist/core/session/index.js +1 -1
  1041. package/dist/core/session/index.js.map +1 -1
  1042. package/dist/core/session/roadmap-sync.d.ts.map +1 -1
  1043. package/dist/core/session/roadmap-sync.js +13 -13
  1044. package/dist/core/session/roadmap-sync.js.map +1 -1
  1045. package/dist/core/settings-validator.d.ts +68 -0
  1046. package/dist/core/settings-validator.d.ts.map +1 -0
  1047. package/dist/core/settings-validator.js +406 -0
  1048. package/dist/core/settings-validator.js.map +1 -0
  1049. package/dist/core/spec-analyzer/feedback.d.ts +1 -1
  1050. package/dist/core/spec-analyzer/feedback.d.ts.map +1 -1
  1051. package/dist/core/spec-analyzer/feedback.js +8 -4
  1052. package/dist/core/spec-analyzer/feedback.js.map +1 -1
  1053. package/dist/core/spec-analyzer/index.d.ts +3 -3
  1054. package/dist/core/spec-analyzer/index.d.ts.map +1 -1
  1055. package/dist/core/spec-analyzer/index.js +4 -4
  1056. package/dist/core/spec-analyzer/index.js.map +1 -1
  1057. package/dist/core/spec-analyzer/learning-engine.d.ts +1 -1
  1058. package/dist/core/spec-analyzer/learning-engine.d.ts.map +1 -1
  1059. package/dist/core/spec-analyzer/learning-engine.js +6 -4
  1060. package/dist/core/spec-analyzer/learning-engine.js.map +1 -1
  1061. package/dist/core/spec-analyzer/outcome-store.d.ts +1 -1
  1062. package/dist/core/spec-analyzer/outcome-store.d.ts.map +1 -1
  1063. package/dist/core/spec-analyzer/outcome-store.js +11 -25
  1064. package/dist/core/spec-analyzer/outcome-store.js.map +1 -1
  1065. package/dist/core/spec-analyzer/question-context.d.ts.map +1 -1
  1066. package/dist/core/spec-analyzer/question-context.js +8 -15
  1067. package/dist/core/spec-analyzer/question-context.js.map +1 -1
  1068. package/dist/core/spec-analyzer/question-generator.d.ts.map +1 -1
  1069. package/dist/core/spec-analyzer/question-generator.js +7 -8
  1070. package/dist/core/spec-analyzer/question-generator.js.map +1 -1
  1071. package/dist/core/spec-analyzer/question-templates.d.ts.map +1 -1
  1072. package/dist/core/spec-analyzer/question-templates.js +5 -18
  1073. package/dist/core/spec-analyzer/question-templates.js.map +1 -1
  1074. package/dist/core/spec-analyzer/question-types.d.ts.map +1 -1
  1075. package/dist/core/spec-analyzer/question-types.js.map +1 -1
  1076. package/dist/core/spec-analyzer/types.d.ts.map +1 -1
  1077. package/dist/core/spec-analyzer/types.js.map +1 -1
  1078. package/dist/core/tasks/index.d.ts +2 -2
  1079. package/dist/core/tasks/index.d.ts.map +1 -1
  1080. package/dist/core/tasks/index.js +7 -7
  1081. package/dist/core/tasks/index.js.map +1 -1
  1082. package/dist/core/tasks/registry.d.ts +1 -1
  1083. package/dist/core/tasks/registry.d.ts.map +1 -1
  1084. package/dist/core/tasks/registry.js +2 -4
  1085. package/dist/core/tasks/registry.js.map +1 -1
  1086. package/dist/core/tasks/todo-sync.d.ts +1 -1
  1087. package/dist/core/tasks/todo-sync.d.ts.map +1 -1
  1088. package/dist/core/tasks/todo-sync.js +2 -2
  1089. package/dist/core/tasks/todo-sync.js.map +1 -1
  1090. package/dist/core/tasks/types.d.ts.map +1 -1
  1091. package/dist/core/tasks/types.js.map +1 -1
  1092. package/dist/core/test-optimization/file-test-mapper.d.ts +1 -1
  1093. package/dist/core/test-optimization/file-test-mapper.d.ts.map +1 -1
  1094. package/dist/core/test-optimization/file-test-mapper.js +3 -5
  1095. package/dist/core/test-optimization/file-test-mapper.js.map +1 -1
  1096. package/dist/core/test-optimization/impact-analyzer.d.ts.map +1 -1
  1097. package/dist/core/test-optimization/impact-analyzer.js +5 -5
  1098. package/dist/core/test-optimization/impact-analyzer.js.map +1 -1
  1099. package/dist/core/test-optimization/index.d.ts +6 -6
  1100. package/dist/core/test-optimization/index.d.ts.map +1 -1
  1101. package/dist/core/test-optimization/index.js +6 -6
  1102. package/dist/core/test-optimization/index.js.map +1 -1
  1103. package/dist/core/test-optimization/scope-analyzer.d.ts +1 -1
  1104. package/dist/core/test-optimization/scope-analyzer.d.ts.map +1 -1
  1105. package/dist/core/test-optimization/scope-analyzer.js +33 -14
  1106. package/dist/core/test-optimization/scope-analyzer.js.map +1 -1
  1107. package/dist/core/test-optimization/test-state-manager.d.ts +13 -1
  1108. package/dist/core/test-optimization/test-state-manager.d.ts.map +1 -1
  1109. package/dist/core/test-optimization/test-state-manager.js +25 -2
  1110. package/dist/core/test-optimization/test-state-manager.js.map +1 -1
  1111. package/dist/core/test-optimization/types.d.ts +8 -0
  1112. package/dist/core/test-optimization/types.d.ts.map +1 -1
  1113. package/dist/core/traces/context-transitions.d.ts +1 -1
  1114. package/dist/core/traces/context-transitions.d.ts.map +1 -1
  1115. package/dist/core/traces/context-transitions.js +6 -8
  1116. package/dist/core/traces/context-transitions.js.map +1 -1
  1117. package/dist/core/traces/execution-tree.d.ts +1 -1
  1118. package/dist/core/traces/execution-tree.d.ts.map +1 -1
  1119. package/dist/core/traces/execution-tree.js +16 -10
  1120. package/dist/core/traces/execution-tree.js.map +1 -1
  1121. package/dist/core/traces/index.d.ts +7 -7
  1122. package/dist/core/traces/index.d.ts.map +1 -1
  1123. package/dist/core/traces/index.js +17 -17
  1124. package/dist/core/traces/index.js.map +1 -1
  1125. package/dist/core/traces/memory-access-log.d.ts +1 -1
  1126. package/dist/core/traces/memory-access-log.d.ts.map +1 -1
  1127. package/dist/core/traces/memory-access-log.js +3 -3
  1128. package/dist/core/traces/memory-access-log.js.map +1 -1
  1129. package/dist/core/traces/trace-exporter.d.ts +1 -1
  1130. package/dist/core/traces/trace-exporter.d.ts.map +1 -1
  1131. package/dist/core/traces/trace-exporter.js +533 -522
  1132. package/dist/core/traces/trace-exporter.js.map +1 -1
  1133. package/dist/core/traces/types.d.ts.map +1 -1
  1134. package/dist/core/traces/types.js.map +1 -1
  1135. package/dist/core/updater/deprecated-files.d.ts.map +1 -1
  1136. package/dist/core/updater/deprecated-files.js +1 -1
  1137. package/dist/core/updater/deprecated-files.js.map +1 -1
  1138. package/dist/core/updater/index.d.ts +6 -6
  1139. package/dist/core/updater/index.d.ts.map +1 -1
  1140. package/dist/core/updater/index.js +6 -6
  1141. package/dist/core/updater/index.js.map +1 -1
  1142. package/dist/core/updater/types.d.ts +2 -2
  1143. package/dist/core/updater/types.d.ts.map +1 -1
  1144. package/dist/core/updater/types.js +2 -2
  1145. package/dist/core/updater/types.js.map +1 -1
  1146. package/dist/core/updater/update-executor.d.ts +1 -1
  1147. package/dist/core/updater/update-executor.d.ts.map +1 -1
  1148. package/dist/core/updater/update-executor.js +7 -10
  1149. package/dist/core/updater/update-executor.js.map +1 -1
  1150. package/dist/core/updater/version-checker.d.ts +1 -1
  1151. package/dist/core/updater/version-checker.d.ts.map +1 -1
  1152. package/dist/core/updater/version-checker.js +8 -8
  1153. package/dist/core/updater/version-checker.js.map +1 -1
  1154. package/dist/core/validation/ambiguity-detector.d.ts +1 -1
  1155. package/dist/core/validation/ambiguity-detector.d.ts.map +1 -1
  1156. package/dist/core/validation/ambiguity-detector.js +1 -1
  1157. package/dist/core/validation/ambiguity-detector.js.map +1 -1
  1158. package/dist/core/validation/confidence-display.d.ts.map +1 -1
  1159. package/dist/core/validation/confidence-display.js +1 -1
  1160. package/dist/core/validation/confidence-display.js.map +1 -1
  1161. package/dist/core/validation/confidence-scorer.d.ts +1 -1
  1162. package/dist/core/validation/confidence-scorer.d.ts.map +1 -1
  1163. package/dist/core/validation/confidence-scorer.js +2 -3
  1164. package/dist/core/validation/confidence-scorer.js.map +1 -1
  1165. package/dist/core/validation/edge-case-analyzer.d.ts +1 -1
  1166. package/dist/core/validation/edge-case-analyzer.d.ts.map +1 -1
  1167. package/dist/core/validation/edge-case-analyzer.js +1 -1
  1168. package/dist/core/validation/edge-case-analyzer.js.map +1 -1
  1169. package/dist/core/validation/engine.d.ts +2 -2
  1170. package/dist/core/validation/engine.d.ts.map +1 -1
  1171. package/dist/core/validation/engine.js +4 -4
  1172. package/dist/core/validation/engine.js.map +1 -1
  1173. package/dist/core/validation/impact-assessor.d.ts +1 -1
  1174. package/dist/core/validation/impact-assessor.d.ts.map +1 -1
  1175. package/dist/core/validation/impact-assessor.js +5 -1
  1176. package/dist/core/validation/impact-assessor.js.map +1 -1
  1177. package/dist/core/validation/index.d.ts +11 -11
  1178. package/dist/core/validation/index.d.ts.map +1 -1
  1179. package/dist/core/validation/index.js +11 -11
  1180. package/dist/core/validation/index.js.map +1 -1
  1181. package/dist/core/validation/pattern-trust.d.ts.map +1 -1
  1182. package/dist/core/validation/pattern-trust.js +3 -3
  1183. package/dist/core/validation/pattern-trust.js.map +1 -1
  1184. package/dist/core/validation/question-generator.d.ts +1 -1
  1185. package/dist/core/validation/question-generator.d.ts.map +1 -1
  1186. package/dist/core/validation/question-generator.js +10 -6
  1187. package/dist/core/validation/question-generator.js.map +1 -1
  1188. package/dist/core/validation/rules.d.ts +1 -1
  1189. package/dist/core/validation/rules.d.ts.map +1 -1
  1190. package/dist/core/validation/rules.js +2 -2
  1191. package/dist/core/validation/rules.js.map +1 -1
  1192. package/dist/core/validation/types.d.ts.map +1 -1
  1193. package/dist/hooks/index.d.ts +3 -5
  1194. package/dist/hooks/index.d.ts.map +1 -1
  1195. package/dist/hooks/index.js +4 -6
  1196. package/dist/hooks/index.js.map +1 -1
  1197. package/dist/hooks/post-edit.d.ts.map +1 -1
  1198. package/dist/hooks/post-edit.js +699 -699
  1199. package/dist/hooks/post-edit.js.map +1 -1
  1200. package/dist/hooks/post-execution.d.ts.map +1 -1
  1201. package/dist/hooks/post-execution.js +615 -615
  1202. package/dist/hooks/post-execution.js.map +1 -1
  1203. package/dist/hooks/post-typecheck.d.ts +21 -0
  1204. package/dist/hooks/post-typecheck.d.ts.map +1 -0
  1205. package/dist/hooks/post-typecheck.js +349 -0
  1206. package/dist/hooks/post-typecheck.js.map +1 -0
  1207. package/dist/hooks/pre-compact.d.ts.map +1 -1
  1208. package/dist/hooks/pre-compact.js +415 -415
  1209. package/dist/hooks/pre-compact.js.map +1 -1
  1210. package/dist/hooks/pre-tool-use.d.ts.map +1 -1
  1211. package/dist/hooks/pre-tool-use.js +309 -309
  1212. package/dist/hooks/pre-tool-use.js.map +1 -1
  1213. package/dist/hooks/pre-validate.d.ts.map +1 -1
  1214. package/dist/hooks/pre-validate.js +542 -542
  1215. package/dist/hooks/pre-validate.js.map +1 -1
  1216. package/dist/hooks/session-end.d.ts.map +1 -1
  1217. package/dist/hooks/session-end.js +157 -157
  1218. package/dist/hooks/session-end.js.map +1 -1
  1219. package/dist/hooks/session-start-verify.d.ts.map +1 -1
  1220. package/dist/hooks/session-start-verify.js +10 -11
  1221. package/dist/hooks/session-start-verify.js.map +1 -1
  1222. package/dist/hooks/session-start.d.ts +7 -1
  1223. package/dist/hooks/session-start.d.ts.map +1 -1
  1224. package/dist/hooks/session-start.js +897 -734
  1225. package/dist/hooks/session-start.js.map +1 -1
  1226. package/dist/hooks/shared/index.d.ts +1 -1
  1227. package/dist/hooks/shared/index.d.ts.map +1 -1
  1228. package/dist/hooks/shared/index.js +39 -46
  1229. package/dist/hooks/shared/index.js.map +1 -1
  1230. package/dist/hooks/shared/paths.d.ts.map +1 -1
  1231. package/dist/hooks/shared/paths.js +27 -27
  1232. package/dist/hooks/shared/paths.js.map +1 -1
  1233. package/dist/hooks/shared/session.d.ts +4 -0
  1234. package/dist/hooks/shared/session.d.ts.map +1 -1
  1235. package/dist/hooks/shared/session.js +68 -59
  1236. package/dist/hooks/shared/session.js.map +1 -1
  1237. package/dist/hooks/shared/utils.d.ts +1 -1
  1238. package/dist/hooks/shared/utils.d.ts.map +1 -1
  1239. package/dist/hooks/shared/utils.js +43 -43
  1240. package/dist/hooks/shared/utils.js.map +1 -1
  1241. package/dist/hooks/subagent-start.d.ts.map +1 -1
  1242. package/dist/hooks/subagent-start.js.map +1 -1
  1243. package/dist/hooks/subagent-stop.d.ts.map +1 -1
  1244. package/dist/hooks/subagent-stop.js +222 -222
  1245. package/dist/hooks/subagent-stop.js.map +1 -1
  1246. package/dist/hooks/types.d.ts +14 -0
  1247. package/dist/hooks/types.d.ts.map +1 -1
  1248. package/dist/hooks/types.js.map +1 -1
  1249. package/dist/hooks/user-prompt-submit.d.ts.map +1 -1
  1250. package/dist/hooks/user-prompt-submit.js +951 -951
  1251. package/dist/hooks/user-prompt-submit.js.map +1 -1
  1252. package/dist/hud/config-counter.d.ts.map +1 -1
  1253. package/dist/hud/config-counter.js +3 -6
  1254. package/dist/hud/config-counter.js.map +1 -1
  1255. package/dist/hud/config.d.ts.map +1 -1
  1256. package/dist/hud/config.js +2 -2
  1257. package/dist/hud/config.js.map +1 -1
  1258. package/dist/hud/context-tracker.d.ts.map +1 -1
  1259. package/dist/hud/context-tracker.js +2 -2
  1260. package/dist/hud/context-tracker.js.map +1 -1
  1261. package/dist/hud/index.d.ts +10 -10
  1262. package/dist/hud/index.d.ts.map +1 -1
  1263. package/dist/hud/index.js +22 -22
  1264. package/dist/hud/index.js.map +1 -1
  1265. package/dist/hud/mcp-status.d.ts.map +1 -1
  1266. package/dist/hud/mcp-status.js +3 -3
  1267. package/dist/hud/mcp-status.js.map +1 -1
  1268. package/dist/hud/plan-detector.d.ts.map +1 -1
  1269. package/dist/hud/plan-detector.js +2 -2
  1270. package/dist/hud/plan-detector.js.map +1 -1
  1271. package/dist/hud/render/agent-status.d.ts.map +1 -1
  1272. package/dist/hud/render/agent-status.js +4 -8
  1273. package/dist/hud/render/agent-status.js.map +1 -1
  1274. package/dist/hud/render/blockers-badge.d.ts +1 -1
  1275. package/dist/hud/render/blockers-badge.d.ts.map +1 -1
  1276. package/dist/hud/render/blockers-badge.js.map +1 -1
  1277. package/dist/hud/render/budget-bar.d.ts +1 -1
  1278. package/dist/hud/render/budget-bar.d.ts.map +1 -1
  1279. package/dist/hud/render/budget-bar.js +0 -1
  1280. package/dist/hud/render/budget-bar.js.map +1 -1
  1281. package/dist/hud/render/budget-pressure.d.ts +1 -1
  1282. package/dist/hud/render/budget-pressure.d.ts.map +1 -1
  1283. package/dist/hud/render/budget-pressure.js.map +1 -1
  1284. package/dist/hud/render/cache-stats.d.ts +1 -1
  1285. package/dist/hud/render/cache-stats.d.ts.map +1 -1
  1286. package/dist/hud/render/cache-stats.js.map +1 -1
  1287. package/dist/hud/render/circuit.d.ts +1 -1
  1288. package/dist/hud/render/circuit.d.ts.map +1 -1
  1289. package/dist/hud/render/circuit.js +2 -6
  1290. package/dist/hud/render/circuit.js.map +1 -1
  1291. package/dist/hud/render/config-counts.d.ts.map +1 -1
  1292. package/dist/hud/render/config-counts.js.map +1 -1
  1293. package/dist/hud/render/context-health.d.ts +1 -1
  1294. package/dist/hud/render/context-health.d.ts.map +1 -1
  1295. package/dist/hud/render/context-health.js.map +1 -1
  1296. package/dist/hud/render/cost-display.d.ts +1 -1
  1297. package/dist/hud/render/cost-display.d.ts.map +1 -1
  1298. package/dist/hud/render/cost-display.js.map +1 -1
  1299. package/dist/hud/render/deferred-status.d.ts +1 -1
  1300. package/dist/hud/render/deferred-status.d.ts.map +1 -1
  1301. package/dist/hud/render/deferred-status.js.map +1 -1
  1302. package/dist/hud/render/focus-display.d.ts +1 -1
  1303. package/dist/hud/render/focus-display.d.ts.map +1 -1
  1304. package/dist/hud/render/focus-display.js +2 -2
  1305. package/dist/hud/render/focus-display.js.map +1 -1
  1306. package/dist/hud/render/git-status.d.ts +1 -1
  1307. package/dist/hud/render/git-status.d.ts.map +1 -1
  1308. package/dist/hud/render/git-status.js +1 -1
  1309. package/dist/hud/render/git-status.js.map +1 -1
  1310. package/dist/hud/render/index.d.ts +19 -19
  1311. package/dist/hud/render/index.d.ts.map +1 -1
  1312. package/dist/hud/render/index.js +29 -29
  1313. package/dist/hud/render/index.js.map +1 -1
  1314. package/dist/hud/render/layouts.d.ts +1 -1
  1315. package/dist/hud/render/layouts.d.ts.map +1 -1
  1316. package/dist/hud/render/layouts.js +20 -18
  1317. package/dist/hud/render/layouts.js.map +1 -1
  1318. package/dist/hud/render/model-plan.d.ts.map +1 -1
  1319. package/dist/hud/render/model-plan.js.map +1 -1
  1320. package/dist/hud/render/phase-indicator.d.ts.map +1 -1
  1321. package/dist/hud/render/phase-indicator.js.map +1 -1
  1322. package/dist/hud/render/session-limit.d.ts +1 -1
  1323. package/dist/hud/render/session-limit.d.ts.map +1 -1
  1324. package/dist/hud/render/session-limit.js +0 -1
  1325. package/dist/hud/render/session-limit.js.map +1 -1
  1326. package/dist/hud/render/session-timer.d.ts.map +1 -1
  1327. package/dist/hud/render/session-timer.js.map +1 -1
  1328. package/dist/hud/render/status-icons.d.ts +1 -1
  1329. package/dist/hud/render/status-icons.d.ts.map +1 -1
  1330. package/dist/hud/render/status-icons.js +1 -3
  1331. package/dist/hud/render/status-icons.js.map +1 -1
  1332. package/dist/hud/render/todo-progress.d.ts +1 -1
  1333. package/dist/hud/render/todo-progress.d.ts.map +1 -1
  1334. package/dist/hud/render/todo-progress.js +10 -14
  1335. package/dist/hud/render/todo-progress.js.map +1 -1
  1336. package/dist/hud/render/tool-usage.d.ts +1 -1
  1337. package/dist/hud/render/tool-usage.d.ts.map +1 -1
  1338. package/dist/hud/render/tool-usage.js +4 -8
  1339. package/dist/hud/render/tool-usage.js.map +1 -1
  1340. package/dist/hud/render/tools.d.ts.map +1 -1
  1341. package/dist/hud/render/tools.js +3 -7
  1342. package/dist/hud/render/tools.js.map +1 -1
  1343. package/dist/hud/render/weekly-usage.d.ts +1 -1
  1344. package/dist/hud/render/weekly-usage.d.ts.map +1 -1
  1345. package/dist/hud/render/weekly-usage.js +0 -1
  1346. package/dist/hud/render/weekly-usage.js.map +1 -1
  1347. package/dist/hud/session-reader.d.ts +1 -1
  1348. package/dist/hud/session-reader.d.ts.map +1 -1
  1349. package/dist/hud/session-reader.js +6 -6
  1350. package/dist/hud/session-reader.js.map +1 -1
  1351. package/dist/hud/stdin.d.ts.map +1 -1
  1352. package/dist/hud/stdin.js +8 -6
  1353. package/dist/hud/stdin.js.map +1 -1
  1354. package/dist/hud/transcript-reader.d.ts +1 -1
  1355. package/dist/hud/transcript-reader.d.ts.map +1 -1
  1356. package/dist/hud/transcript-reader.js +37 -18
  1357. package/dist/hud/transcript-reader.js.map +1 -1
  1358. package/dist/hud/types.d.ts +1 -1
  1359. package/dist/hud/types.d.ts.map +1 -1
  1360. package/dist/hud/usage-api.d.ts.map +1 -1
  1361. package/dist/hud/usage-api.js +6 -6
  1362. package/dist/hud/usage-api.js.map +1 -1
  1363. package/dist/hud/usage-rotation.d.ts.map +1 -1
  1364. package/dist/hud/usage-rotation.js +3 -3
  1365. package/dist/hud/usage-rotation.js.map +1 -1
  1366. package/dist/hud/usage-tracker.d.ts +1 -1
  1367. package/dist/hud/usage-tracker.d.ts.map +1 -1
  1368. package/dist/hud/usage-tracker.js +7 -8
  1369. package/dist/hud/usage-tracker.js.map +1 -1
  1370. package/dist/index.d.ts +2 -2
  1371. package/dist/index.d.ts.map +1 -1
  1372. package/dist/index.js +2 -2
  1373. package/dist/index.js.map +1 -1
  1374. package/dist/mcp/__tests__/dynamic-updates.test.js +22 -13
  1375. package/dist/mcp/__tests__/dynamic-updates.test.js.map +1 -1
  1376. package/dist/mcp/cache.d.ts.map +1 -1
  1377. package/dist/mcp/cache.js.map +1 -1
  1378. package/dist/mcp/dynamic-updates.d.ts.map +1 -1
  1379. package/dist/mcp/dynamic-updates.js +2 -2
  1380. package/dist/mcp/dynamic-updates.js.map +1 -1
  1381. package/dist/mcp/focus-filter.d.ts.map +1 -1
  1382. package/dist/mcp/focus-filter.js +78 -78
  1383. package/dist/mcp/focus-filter.js.map +1 -1
  1384. package/dist/mcp/focus-tag-learner.d.ts +5 -1
  1385. package/dist/mcp/focus-tag-learner.d.ts.map +1 -1
  1386. package/dist/mcp/focus-tag-learner.js +15 -9
  1387. package/dist/mcp/focus-tag-learner.js.map +1 -1
  1388. package/dist/mcp/index.d.ts +4 -4
  1389. package/dist/mcp/index.d.ts.map +1 -1
  1390. package/dist/mcp/index.js +11 -11
  1391. package/dist/mcp/index.js.map +1 -1
  1392. package/dist/mcp/proximity-tags.d.ts.map +1 -1
  1393. package/dist/mcp/proximity-tags.js +3 -3
  1394. package/dist/mcp/proximity-tags.js.map +1 -1
  1395. package/dist/mcp/registry.d.ts +4 -4
  1396. package/dist/mcp/registry.d.ts.map +1 -1
  1397. package/dist/mcp/registry.js +8 -10
  1398. package/dist/mcp/registry.js.map +1 -1
  1399. package/dist/mcp/resources/index.d.ts +1 -1
  1400. package/dist/mcp/resources/index.d.ts.map +1 -1
  1401. package/dist/mcp/resources/index.js +22 -15
  1402. package/dist/mcp/resources/index.js.map +1 -1
  1403. package/dist/mcp/server.d.ts +2 -2
  1404. package/dist/mcp/server.d.ts.map +1 -1
  1405. package/dist/mcp/server.js +19 -13
  1406. package/dist/mcp/server.js.map +1 -1
  1407. package/dist/mcp/setup.d.ts +1 -1
  1408. package/dist/mcp/setup.d.ts.map +1 -1
  1409. package/dist/mcp/setup.js +19 -16
  1410. package/dist/mcp/setup.js.map +1 -1
  1411. package/dist/mcp/tool-catalog.d.ts.map +1 -1
  1412. package/dist/mcp/tool-catalog.js +44 -16
  1413. package/dist/mcp/tool-catalog.js.map +1 -1
  1414. package/dist/mcp/tool-loader.d.ts +2 -2
  1415. package/dist/mcp/tool-loader.d.ts.map +1 -1
  1416. package/dist/mcp/tool-loader.js +1 -1
  1417. package/dist/mcp/tool-loader.js.map +1 -1
  1418. package/dist/mcp/tool-recommender.d.ts +1 -1
  1419. package/dist/mcp/tool-recommender.d.ts.map +1 -1
  1420. package/dist/mcp/tool-recommender.js +103 -28
  1421. package/dist/mcp/tool-recommender.js.map +1 -1
  1422. package/dist/mcp/tool-tiers.d.ts.map +1 -1
  1423. package/dist/mcp/tool-tiers.js.map +1 -1
  1424. package/dist/mcp/tools/__tests__/environment.test.js +6 -6
  1425. package/dist/mcp/tools/__tests__/environment.test.js.map +1 -1
  1426. package/dist/mcp/tools/agents.d.ts +4 -0
  1427. package/dist/mcp/tools/agents.d.ts.map +1 -1
  1428. package/dist/mcp/tools/agents.js +215 -60
  1429. package/dist/mcp/tools/agents.js.map +1 -1
  1430. package/dist/mcp/tools/auto-inject.d.ts.map +1 -1
  1431. package/dist/mcp/tools/auto-inject.js +3 -3
  1432. package/dist/mcp/tools/auto-inject.js.map +1 -1
  1433. package/dist/mcp/tools/auto-unload.d.ts.map +1 -1
  1434. package/dist/mcp/tools/auto-unload.js +8 -11
  1435. package/dist/mcp/tools/auto-unload.js.map +1 -1
  1436. package/dist/mcp/tools/chunking.d.ts.map +1 -1
  1437. package/dist/mcp/tools/chunking.js +8 -12
  1438. package/dist/mcp/tools/chunking.js.map +1 -1
  1439. package/dist/mcp/tools/config-validate.d.ts +27 -0
  1440. package/dist/mcp/tools/config-validate.d.ts.map +1 -0
  1441. package/dist/mcp/tools/config-validate.js +139 -0
  1442. package/dist/mcp/tools/config-validate.js.map +1 -0
  1443. package/dist/mcp/tools/context-repl.d.ts +2 -2
  1444. package/dist/mcp/tools/context-repl.d.ts.map +1 -1
  1445. package/dist/mcp/tools/context-repl.js +7 -7
  1446. package/dist/mcp/tools/context-repl.js.map +1 -1
  1447. package/dist/mcp/tools/effort.d.ts.map +1 -1
  1448. package/dist/mcp/tools/effort.js +9 -8
  1449. package/dist/mcp/tools/effort.js.map +1 -1
  1450. package/dist/mcp/tools/embeddings.d.ts.map +1 -1
  1451. package/dist/mcp/tools/embeddings.js +3 -3
  1452. package/dist/mcp/tools/embeddings.js.map +1 -1
  1453. package/dist/mcp/tools/environment.d.ts.map +1 -1
  1454. package/dist/mcp/tools/environment.js +10 -10
  1455. package/dist/mcp/tools/environment.js.map +1 -1
  1456. package/dist/mcp/tools/experiments.d.ts +34 -0
  1457. package/dist/mcp/tools/experiments.d.ts.map +1 -0
  1458. package/dist/mcp/tools/experiments.js +212 -0
  1459. package/dist/mcp/tools/experiments.js.map +1 -0
  1460. package/dist/mcp/tools/feedback.d.ts +1 -1
  1461. package/dist/mcp/tools/feedback.d.ts.map +1 -1
  1462. package/dist/mcp/tools/feedback.js +4 -4
  1463. package/dist/mcp/tools/feedback.js.map +1 -1
  1464. package/dist/mcp/tools/health.d.ts.map +1 -1
  1465. package/dist/mcp/tools/health.js +10 -13
  1466. package/dist/mcp/tools/health.js.map +1 -1
  1467. package/dist/mcp/tools/index.d.ts +27 -25
  1468. package/dist/mcp/tools/index.d.ts.map +1 -1
  1469. package/dist/mcp/tools/index.js +48 -32
  1470. package/dist/mcp/tools/index.js.map +1 -1
  1471. package/dist/mcp/tools/knowledge-graph.d.ts +1 -1
  1472. package/dist/mcp/tools/knowledge-graph.d.ts.map +1 -1
  1473. package/dist/mcp/tools/knowledge-graph.js +31 -16
  1474. package/dist/mcp/tools/knowledge-graph.js.map +1 -1
  1475. package/dist/mcp/tools/lazy-context.d.ts +1 -1
  1476. package/dist/mcp/tools/lazy-context.d.ts.map +1 -1
  1477. package/dist/mcp/tools/lazy-context.js +19 -18
  1478. package/dist/mcp/tools/lazy-context.js.map +1 -1
  1479. package/dist/mcp/tools/memory-decay.d.ts.map +1 -1
  1480. package/dist/mcp/tools/memory-decay.js +2 -4
  1481. package/dist/mcp/tools/memory-decay.js.map +1 -1
  1482. package/dist/mcp/tools/memory.d.ts.map +1 -1
  1483. package/dist/mcp/tools/memory.js +6 -6
  1484. package/dist/mcp/tools/memory.js.map +1 -1
  1485. package/dist/mcp/tools/observability.d.ts.map +1 -1
  1486. package/dist/mcp/tools/observability.js +48 -44
  1487. package/dist/mcp/tools/observability.js.map +1 -1
  1488. package/dist/mcp/tools/output-persistence.d.ts.map +1 -1
  1489. package/dist/mcp/tools/output-persistence.js +3 -3
  1490. package/dist/mcp/tools/output-persistence.js.map +1 -1
  1491. package/dist/mcp/tools/plans.d.ts.map +1 -1
  1492. package/dist/mcp/tools/plans.js +3 -7
  1493. package/dist/mcp/tools/plans.js.map +1 -1
  1494. package/dist/mcp/tools/prefetch.d.ts.map +1 -1
  1495. package/dist/mcp/tools/prefetch.js +7 -7
  1496. package/dist/mcp/tools/prefetch.js.map +1 -1
  1497. package/dist/mcp/tools/ralph.d.ts +10 -2
  1498. package/dist/mcp/tools/ralph.d.ts.map +1 -1
  1499. package/dist/mcp/tools/ralph.js +260 -54
  1500. package/dist/mcp/tools/ralph.js.map +1 -1
  1501. package/dist/mcp/tools/recommendations.d.ts.map +1 -1
  1502. package/dist/mcp/tools/recommendations.js +12 -15
  1503. package/dist/mcp/tools/recommendations.js.map +1 -1
  1504. package/dist/mcp/tools/retrieval.d.ts.map +1 -1
  1505. package/dist/mcp/tools/retrieval.js +11 -15
  1506. package/dist/mcp/tools/retrieval.js.map +1 -1
  1507. package/dist/mcp/tools/scripts.d.ts.map +1 -1
  1508. package/dist/mcp/tools/scripts.js +42 -42
  1509. package/dist/mcp/tools/scripts.js.map +1 -1
  1510. package/dist/mcp/tools/session.d.ts +7 -1
  1511. package/dist/mcp/tools/session.d.ts.map +1 -1
  1512. package/dist/mcp/tools/session.js +125 -77
  1513. package/dist/mcp/tools/session.js.map +1 -1
  1514. package/dist/mcp/tools/spec-feedback.d.ts.map +1 -1
  1515. package/dist/mcp/tools/spec-feedback.js +10 -11
  1516. package/dist/mcp/tools/spec-feedback.js.map +1 -1
  1517. package/dist/mcp/tools/tasks.d.ts.map +1 -1
  1518. package/dist/mcp/tools/tasks.js +11 -7
  1519. package/dist/mcp/tools/tasks.js.map +1 -1
  1520. package/dist/mcp/tools/tool-clearing.d.ts.map +1 -1
  1521. package/dist/mcp/tools/tool-clearing.js +9 -12
  1522. package/dist/mcp/tools/tool-clearing.js.map +1 -1
  1523. package/dist/mcp/types.d.ts.map +1 -1
  1524. package/dist/mcp/types.js.map +1 -1
  1525. package/dist/mcp/utils/format-helpers.d.ts.map +1 -1
  1526. package/dist/mcp/utils/format-helpers.js +10 -8
  1527. package/dist/mcp/utils/format-helpers.js.map +1 -1
  1528. package/dist/mcp/utils/index.d.ts +4 -4
  1529. package/dist/mcp/utils/index.d.ts.map +1 -1
  1530. package/dist/mcp/utils/index.js +14 -14
  1531. package/dist/mcp/utils/index.js.map +1 -1
  1532. package/dist/mcp/utils/response-builder.d.ts +1 -1
  1533. package/dist/mcp/utils/response-builder.d.ts.map +1 -1
  1534. package/dist/mcp/utils/response-builder.js +2 -6
  1535. package/dist/mcp/utils/response-builder.js.map +1 -1
  1536. package/dist/mcp/utils/response-helpers.d.ts.map +1 -1
  1537. package/dist/mcp/utils/response-helpers.js.map +1 -1
  1538. package/dist/mcp/utils/session-helpers.d.ts +1 -1
  1539. package/dist/mcp/utils/session-helpers.d.ts.map +1 -1
  1540. package/dist/mcp/utils/session-helpers.js +13 -17
  1541. package/dist/mcp/utils/session-helpers.js.map +1 -1
  1542. package/dist/mcp-server.d.ts +1 -1
  1543. package/dist/mcp-server.d.ts.map +1 -1
  1544. package/dist/mcp-server.js +15 -15
  1545. package/dist/mcp-server.js.map +1 -1
  1546. package/dist/plugin/index.d.ts +1 -1
  1547. package/dist/plugin/index.d.ts.map +1 -1
  1548. package/dist/plugin/index.js +12 -22
  1549. package/dist/plugin/index.js.map +1 -1
  1550. package/dist/plugin/loader.d.ts +1 -1
  1551. package/dist/plugin/loader.d.ts.map +1 -1
  1552. package/dist/plugin/loader.js +2 -2
  1553. package/dist/plugin/loader.js.map +1 -1
  1554. package/dist/rules/index.d.ts.map +1 -1
  1555. package/dist/rules/index.js +801 -801
  1556. package/dist/rules/index.js.map +1 -1
  1557. package/dist/skills/index.d.ts.map +1 -1
  1558. package/dist/skills/index.js +985 -955
  1559. package/dist/skills/index.js.map +1 -1
  1560. package/dist/statusline/budget-tracker.d.ts.map +1 -1
  1561. package/dist/statusline/budget-tracker.js +5 -8
  1562. package/dist/statusline/budget-tracker.js.map +1 -1
  1563. package/dist/statusline/index.d.ts +1 -1
  1564. package/dist/statusline/index.d.ts.map +1 -1
  1565. package/dist/statusline/index.js +60 -60
  1566. package/dist/statusline/index.js.map +1 -1
  1567. package/dist/store/index.d.ts +4 -4
  1568. package/dist/store/index.d.ts.map +1 -1
  1569. package/dist/store/index.js +5 -5
  1570. package/dist/store/index.js.map +1 -1
  1571. package/dist/store/installer.d.ts +1 -1
  1572. package/dist/store/installer.d.ts.map +1 -1
  1573. package/dist/store/installer.js +21 -14
  1574. package/dist/store/installer.js.map +1 -1
  1575. package/dist/store/registry.d.ts +1 -1
  1576. package/dist/store/registry.d.ts.map +1 -1
  1577. package/dist/store/registry.js +3 -3
  1578. package/dist/store/registry.js.map +1 -1
  1579. package/dist/store/remote.d.ts +1 -1
  1580. package/dist/store/remote.d.ts.map +1 -1
  1581. package/dist/store/remote.js +15 -13
  1582. package/dist/store/remote.js.map +1 -1
  1583. package/dist/store/types.d.ts.map +1 -1
  1584. package/dist/store/types.js +2 -2
  1585. package/dist/store/types.js.map +1 -1
  1586. package/dist/utils/ascii-art.d.ts.map +1 -1
  1587. package/dist/utils/ascii-art.js +11 -11
  1588. package/dist/utils/ascii-art.js.map +1 -1
  1589. package/dist/utils/exec.d.ts.map +1 -1
  1590. package/dist/utils/exec.js +3 -1
  1591. package/dist/utils/exec.js.map +1 -1
  1592. package/dist/utils/file-system.d.ts +1 -1
  1593. package/dist/utils/file-system.d.ts.map +1 -1
  1594. package/dist/utils/file-system.js +18 -17
  1595. package/dist/utils/file-system.js.map +1 -1
  1596. package/dist/utils/gitignore.d.ts +3 -3
  1597. package/dist/utils/gitignore.d.ts.map +1 -1
  1598. package/dist/utils/gitignore.js +45 -45
  1599. package/dist/utils/gitignore.js.map +1 -1
  1600. package/dist/utils/validation.d.ts +4 -4
  1601. package/dist/utils/validation.d.ts.map +1 -1
  1602. package/dist/utils/validation.js +10 -10
  1603. package/dist/utils/validation.js.map +1 -1
  1604. package/package.json +79 -76
@@ -22,7 +22,7 @@
22
22
  * v12.2.0: Migrated to shared hook utilities
23
23
  */
24
24
  import { VERSION } from '../core/config.js';
25
- import { paths, utils, generateAlertInit } from './shared/index.js';
25
+ import { generateAlertInit, paths, utils } from './shared/index.js';
26
26
  /**
27
27
  * Generate the UserPromptSubmit hook script
28
28
  */
@@ -34,961 +34,961 @@ export function generateUserPromptSubmitScript(options) {
34
34
  }
35
35
  function generatePowerShellScript() {
36
36
  const platform = 'win32';
37
- return `${utils.scriptHeader(platform, VERSION, 'user-prompt-submit hook')}
38
-
39
- # Get prompt from environment
40
- $userPrompt = $env:USER_PROMPT
41
- if (-not $userPrompt) { exit 0 }
42
-
43
- # v6.0.0: Get conversation ID for session tracking
44
- $conversationId = $env:CLAUDE_CONVERSATION_ID
45
-
46
- # Find .dino directory
47
- ${paths.getDinoDir(platform)}
48
- ${paths.checkDinoDirExists(platform)}
49
-
50
- # v6.0.0: Track conversation ID if available
51
- if ($conversationId) {
52
- $conversationPath = Join-Path $dinoDir "conversation-id"
53
- Set-Content -Path $conversationPath -Value $conversationId -NoNewline 2>$null
54
- }
55
-
56
- ${paths.getSessionPath(platform)}
57
- $promptLower = $userPrompt.ToLower()
58
- $suggestions = @()
59
- ${generateAlertInit(platform)}
60
- $contextInjections = @()
61
-
62
- # Intent detection: suggest relevant MCP resources
63
- # Structure/architecture queries
64
- if ($promptLower -match "where|structure|architect|layout|folder|director") {
65
- $suggestions += "@dino://structure"
66
- }
67
-
68
- # Command/run queries
69
- if ($promptLower -match "how.*(build|test|run|start|lint)|command|script") {
70
- $suggestions += "@dino://commands"
71
- }
72
-
73
- # Resume/continue queries
74
- if ($promptLower -match "continue|resume|what.*(doing|left|next)|status") {
75
- $suggestions += "@dino://session"
76
- }
77
-
78
- # v11.3.0: Roadmap queries - auto-load and suggest skill
79
- if ($promptLower -match "roadmap|next.?phase|phase.?(progress|status)") {
80
- $roadmapsDir = Join-Path $dinoDir "roadmaps"
81
- if (Test-Path $roadmapsDir) {
82
- $roadmapFiles = Get-ChildItem -Path $roadmapsDir -Filter "*.md" 2>$null
83
- if ($roadmapFiles.Count -gt 0) {
84
- $roadmapNames = ($roadmapFiles | ForEach-Object { $_.BaseName }) -join ", "
85
- $contextInjections += "Active roadmaps: $roadmapNames"
86
- $skillSuggestion = "Try /dino.roadmap to check progress and continue"
87
- }
88
- }
89
- }
90
-
91
- # Pattern/convention queries
92
- if ($promptLower -match "pattern|convention|style|how.*(usually|normally)|best.practice") {
93
- $suggestions += "@dino://patterns"
94
- }
95
-
96
- # v6.4.0: Memory/decision queries
97
- # v13.3.0: Enhanced with auto-execute memory recall on intent keywords with feature flag
98
- $memoryKeywords = @("decided", "decision", "choice", "why", "previous", "before", "remember")
99
- $memoryQuery = ""
100
- foreach ($kw in $memoryKeywords) {
101
- if ($promptLower -match "\\b$kw\\b") {
102
- $memoryQuery = $kw
103
- break
104
- }
105
- }
106
-
107
- if ($memoryQuery) {
108
- # Check if autoMemoryRecall feature is enabled
109
- $configPath = Join-Path $dinoDir "config.json"
110
- $autoRecallEnabled = $true
111
- if (Test-Path $configPath) {
112
- try {
113
- $config = Get-Content $configPath -Raw | ConvertFrom-Json
114
- if ($config.features.PSObject.Properties['autoMemoryRecall']) {
115
- $autoRecallEnabled = $config.features.autoMemoryRecall
116
- }
117
- } catch {}
118
- }
119
-
120
- if ($autoRecallEnabled) {
121
- # v13.3.0: Execute memory recall and inject results (with minRelevance for confidence)
122
- try {
123
- $recallResult = & bun dino mcp call dino_memory_recall --query "$memoryQuery" --limit 3 --minRelevance 0.3 2>$null
124
- if ($recallResult) {
125
- # Parse and summarize results (first 200 chars)
126
- $summary = ($recallResult | Select-Object -First 3) -join "; "
127
- if ($summary.Length -gt 200) {
128
- $summary = $summary.Substring(0, 197) + "..."
129
- }
130
- if ($summary) {
131
- $contextInjections += "Recalled: $summary"
132
- }
133
- }
134
- } catch {}
135
- }
136
- # Always suggest the resource for manual access
137
- $suggestions += "@dino://memories/summary"
138
- }
139
-
140
- # v13.5.0: Auto-context injection based on prompt demand signals
141
- $autoInjectConfigPath = Join-Path $dinoDir "config.json"
142
- $autoInjectEnabled = $true
143
- if (Test-Path $autoInjectConfigPath) {
144
- try {
145
- $config = Get-Content $autoInjectConfigPath -Raw | ConvertFrom-Json
146
- if ($config.features.PSObject.Properties['autoContextInjection']) {
147
- $autoInjectEnabled = $config.features.autoContextInjection
148
- }
149
- } catch {}
150
- }
151
-
152
- if ($autoInjectEnabled) {
153
- # Check for demand signals in prompt (questions about past decisions, patterns, failures)
154
- $hasDemand = $false
155
- if ($promptLower -match "\\b(what|why|how)\\b.*\\b(decide|chose|previous|before|earlier|did we)\\b") {
156
- $hasDemand = $true
157
- }
158
- if ($promptLower -match "\\b(usually|normally|pattern|convention|prefer)\\b") {
159
- $hasDemand = $true
160
- }
161
- if ($promptLower -match "\\b(fail|broke|error|issue)\\b.*\\b(earlier|before|last time)\\b") {
162
- $hasDemand = $true
163
- }
164
-
165
- if ($hasDemand) {
166
- try {
167
- # Get current budget percentage (approximate)
168
- $budgetPercent = 50
169
- $sessionState = Join-Path $dinoDir "session.md"
170
- if (Test-Path $sessionState) {
171
- $sessionContent = Get-Content $sessionState -Raw
172
- if ($sessionContent -match "Budget.*?(\d+)%") {
173
- $budgetPercent = [int]$matches[1]
174
- }
175
- }
176
-
177
- # Only inject if budget has headroom
178
- if ($budgetPercent -lt 90) {
179
- $injectResult = & bun dino mcp call dino_auto_inject --prompt "$userPrompt" --budgetPercentage $budgetPercent 2>$null
180
- if ($injectResult -and $injectResult -match "executed.*true") {
181
- # Extract tokens injected
182
- if ($injectResult -match "~(\d+) tokens") {
183
- $tokensInjected = $matches[1]
184
- $contextInjections += "Auto-injected ~$tokensInjected tokens of relevant context"
185
- }
186
- }
187
- }
188
- } catch {}
189
- }
190
- }
191
-
192
- # Only check session state if we have alerts to give
193
- if (Test-Path $sessionPath) {
194
- $content = Get-Content $sessionPath -Raw
195
-
196
- # Check for critical issues (minimal alerts)
197
- if ($promptLower -match "fix|bug|error|issue|debug") {
198
- # Check for failing tests when debugging
199
- if ($content -match "## Test Status[^#]*\\*\\*Status:\\*\\*\\s*failing") {
200
- $alerts += "Tests are failing"
201
- }
202
- # Check for failing build
203
- if ($content -match "## Build Status[^#]*\\*\\*Status:\\*\\*\\s*failing") {
204
- $alerts += "Build is failing"
205
- }
206
- }
207
-
208
- # Check for blockers on any task-related prompt
209
- if ($promptLower -match "implement|add|create|build|fix|change|update") {
210
- if ($content -match "## Blockers\\s*\\n([^#]+)") {
211
- $blockerContent = $matches[1]
212
- if ($blockerContent -notmatch "^_") {
213
- $blockerCount = ($blockerContent | Select-String "^- " -AllMatches).Matches.Count
214
- if ($blockerCount -gt 0) {
215
- $alerts += "$blockerCount active blocker(s)"
216
- }
217
- }
218
- }
219
- }
220
-
221
- # Suggest plan mode for complex tasks
222
- if ($promptLower -match "implement|design|architect|refactor|overhaul") {
223
- if (-not ($promptLower -match "simple|quick|small|minor")) {
224
- $suggestions += "Consider plan mode for complex tasks"
225
- }
226
- }
227
- }
228
-
229
- # v5.1.0: Context-aware skill recommendations
230
- $skillSuggestion = $null
231
-
232
- # Check session state for skill recommendations
233
- if (Test-Path $sessionPath) {
234
- $content = Get-Content $sessionPath -Raw
235
-
236
- # High priority: failing tests or build
237
- if ($content -match "## Test Status[^#]*\\*\\*Status:\\*\\*\\s*failing") {
238
- $skillSuggestion = "Try /dino.aging to verify, or /dino.hunt to fix tests"
239
- }
240
- elseif ($content -match "## Build Status[^#]*\\*\\*Status:\\*\\*\\s*failing") {
241
- $skillSuggestion = "Try /dino.hunt to fix build errors"
242
- }
243
- # Medium priority: blockers
244
- elseif ($content -match "## Blockers\\s*\\n[^_]") {
245
- $skillSuggestion = "Try /dino.sniff to clarify blockers"
246
- }
247
- # Based on prompt intent
248
- elseif ($promptLower -match "understand|learn|explore|what.*(is|does)") {
249
- $skillSuggestion = "Try /dino.discover or /dino.scout"
250
- }
251
- elseif ($promptLower -match "plan|design|architect") {
252
- $skillSuggestion = "Try /dino.nest to plan approach"
253
- }
254
- elseif ($promptLower -match "implement|build|create|add|fix") {
255
- $skillSuggestion = "Try /dino.hunt to execute tasks"
256
- }
257
- elseif ($promptLower -match "test|verify|check") {
258
- $skillSuggestion = "Try /dino.aging to verify implementation"
259
- }
260
- elseif ($promptLower -match "finish|complete|done|wrap") {
261
- $skillSuggestion = "Try /dino.fossil to archive work"
262
- }
263
- }
264
-
265
- # Auto-delegation detection for complex multi-step tasks
266
- $delegationSuggestion = $null
267
- $tasksDir = Join-Path $dinoDir "tasks"
268
-
269
- # Check if task system is available
270
- if (Test-Path $tasksDir) {
271
- # Detect complex tasks that could benefit from delegation
272
- $complexPatterns = @{
273
- "explore|investigate|understand|research|analyze" = "explorer"
274
- "design|architect|plan|structure" = "planner"
275
- "implement|build|create|add|develop" = "implementer"
276
- "test|verify|validate|check" = "tester"
277
- "review|audit|inspect" = "reviewer"
278
- }
279
-
280
- $detectedRoles = @()
281
- foreach ($pattern in $complexPatterns.Keys) {
282
- if ($promptLower -match $pattern) {
283
- $detectedRoles += $complexPatterns[$pattern]
284
- }
285
- }
286
-
287
- # If multiple phases detected, suggest task breakdown
288
- if ($detectedRoles.Count -gt 1) {
289
- $roleList = ($detectedRoles | Select-Object -Unique) -join " -> "
290
- $delegationSuggestion = "Multi-step task detected. Suggested delegation: $roleList"
291
- }
292
- # Single complex role for substantial tasks
293
- elseif ($detectedRoles.Count -eq 1) {
294
- # Count words to detect substantial requests
295
- $wordCount = ($userPrompt -split '\s+').Count
296
- if ($wordCount -gt 10) {
297
- $role = $detectedRoles[0]
298
- $agentMap = @{
299
- "explorer" = "@dino-analyst"
300
- "planner" = "@dino-architect"
301
- "implementer" = "@dino-implementer"
302
- "tester" = "@dino-tester"
303
- "reviewer" = "@dino-reviewer"
304
- }
305
- $delegationSuggestion = "Consider delegating to $($agentMap[$role])"
306
- }
307
- }
308
- }
309
-
310
- # v6.0.0: Smart context injection based on session state
311
- if (Test-Path $sessionPath) {
312
- $content = Get-Content $sessionPath -Raw
313
-
314
- # Pattern: fix/debug + tests failing -> inject test details
315
- if ($promptLower -match "fix|debug|error|failing") {
316
- if ($content -match "## Test Status[^#]*\\*\\*Status:\\*\\*\\s*failing") {
317
- $contextInjections += "Failing tests detected - see @dino://session for details"
318
- }
319
- if ($content -match "## Build Status[^#]*\\*\\*Status:\\*\\*\\s*failing") {
320
- $contextInjections += "Build errors present - see @dino://session for details"
321
- }
322
- }
323
-
324
- # Pattern: architecture/design -> inject structure
325
- if ($promptLower -match "architect|design|refactor|structure|layout") {
326
- $contextInjections += "@dino://structure for project architecture"
327
- }
328
-
329
- # Pattern: focus area keywords -> inject focus context
330
- if ($content -match "## Focus\\s*\\n([^_\\n][^\\n]+)") {
331
- $focusArea = $matches[1].Trim()
332
- if ($promptLower -match $focusArea.ToLower().Split('/')[0]) {
333
- $contextInjections += "Working in focus area: $focusArea"
334
- }
335
- }
336
- }
337
-
338
- # Output context injections first (auto-injected), then suggestions, then alerts
339
- # Note: Memory/failure lookups removed in v9.2.1 for performance
340
- # Use @dino://memories/summary MCP resource for memory context
341
- $output = @()
342
-
343
- # v6.0.0: Smart context injection output
344
- if ($contextInjections.Count -gt 0) {
345
- $output += "[dino] Context: " + ($contextInjections -join "; ")
346
- }
347
-
348
- if ($delegationSuggestion) {
349
- $output += "[dino] $delegationSuggestion"
350
- }
351
-
352
- # Skill recommendations (only if no delegation suggestion)
353
- if (-not $delegationSuggestion -and $skillSuggestion) {
354
- $output += "[dino] $skillSuggestion"
355
- }
356
-
357
- if ($suggestions.Count -gt 0) {
358
- $output += "[dino] Tip: " + ($suggestions -join "; ")
359
- }
360
-
361
- if ($alerts.Count -gt 0) {
362
- $output += "[dino] Note: " + ($alerts -join ", ")
363
- }
364
-
365
- # v13.2.0: Enhanced ambiguity detection with /dino.sniff auto-trigger
366
- $ambiguityCount = 0
367
-
368
- # Count vague terms in the prompt
369
- if ($userPrompt -match '\\b(maybe|might|could|possibly|perhaps)\\b') { $ambiguityCount += 1 }
370
- if ($userPrompt -match '\\b(some|something|somehow|somewhere)\\b') { $ambiguityCount += 1 }
371
- if ($userPrompt -match '\\b(certain|various|several|few)\\b') { $ambiguityCount += 1 }
372
- if ($userPrompt -match '\\b(improve|enhance|better|good)\\b') { $ambiguityCount += 1 }
373
- if ($userPrompt -match '\\b(handle|process|deal with)\\s+(it|them|this|that)\\b') { $ambiguityCount += 1 }
374
- if ($userPrompt -match '\\b(make\\s+it|do\\s+it)\\s+(work|better|right)\\b') { $ambiguityCount += 1 }
375
-
376
- # v13.2.0: Auto-trigger /dino.sniff when ambiguity count > 2
377
- $sniffHint = $null
378
- if ($ambiguityCount -gt 2) {
379
- $sniffHint = "Clarification needed ($ambiguityCount vague terms): /dino.sniff"
380
- }
381
-
382
- # v13.2.0: Auto-trigger /dino.scout for complex tasks without research
383
- $scoutHint = $null
384
- $researchDir = Join-Path $dinoDir "research"
385
- $hasResearch = (Test-Path $researchDir) -and ((Get-ChildItem $researchDir -Filter "*.md" 2>$null).Count -gt 0)
386
-
387
- # v10.5.0: Enhanced complexity/ambiguity detection with /dino.spec suggestion
388
- $specHint = $null
389
- $complexitySignals = 0
390
-
391
- # Implementation requests that need analysis
392
- if ($promptLower -match '\\b(implement|add|create|build|develop|make)\\b') {
393
- # Check for vague verbs (high ambiguity)
394
- if ($userPrompt -match '\\b(improve|enhance|fix|optimize|refactor|clean)\\b') {
395
- $complexitySignals += 2
396
- }
397
-
398
- # Check for multi-part requests
399
- if ($userPrompt -match '\\b(and also|as well as|plus|then|additionally)\\b') {
400
- $complexitySignals += 2
401
- }
402
- if ($userPrompt -match '^\\s*\\d+[.)\\s]') {
403
- $complexitySignals += 2
404
- }
405
-
406
- # Check for security/data terms (high risk)
407
- if ($promptLower -match '\\b(auth|password|token|encrypt|security|credential)\\b') {
408
- $complexitySignals += 2
409
- }
410
- if ($promptLower -match '\\b(database|migration|schema|delete|drop)\\b') {
411
- $complexitySignals += 2
412
- }
413
-
414
- # Check for vague pronouns (missing specifics)
415
- if ($userPrompt -match '\\b(some|something|somehow|somewhere|certain|various)\\b') {
416
- $complexitySignals += 1
417
- }
418
-
419
- # Check for exploratory language
420
- if ($promptLower -match '\\b(some kind of|maybe|could|might want|sort of|like a)\\b') {
421
- $complexitySignals += 2
422
- }
423
-
424
- # v13.2.0: Check for /dino.scout trigger (complexity > 40% signals, no research)
425
- if ($complexitySignals -ge 4 -and -not $hasResearch) {
426
- $scoutHint = "Research recommended (no prior research found): /dino.scout"
427
- }
428
-
429
- # Suggest /dino.spec for complex prompts (threshold: 3+ signals)
430
- if ($complexitySignals -ge 3) {
431
- $specHint = "Complex request detected - try /dino.spec for thorough analysis"
432
- }
433
- elseif ($complexitySignals -ge 2) {
434
- $specHint = "Ambiguous request - try /dino.spec to clarify before implementing"
435
- }
436
- }
437
-
438
- # v13.2.0: Knowledge graph auto-query for dependency analysis
439
- $graphHint = $null
440
- if ($promptLower -match '\\b(depends on|uses|imports|calls|extends|implements)\\b') {
441
- $graphHint = "Dependency analysis: @dino://graph/dependencies"
442
- }
443
-
444
- # v11.6.0: Ralph Loop eligibility detection
445
- $ralphSignals = 0
446
- $ralphHint = $null
447
-
448
- # Multi-part with 3+ numbered items
449
- $numberedItems = [regex]::Matches($userPrompt, '(?m)^\\s*\\d+[.)\\s]').Count
450
- if ($numberedItems -ge 3) {
451
- $ralphSignals += 3
452
- }
453
-
454
- # System-wide scope keywords
455
- if ($promptLower -match '\\b(entire|throughout|codebase|system.?wide|project.?wide)\\b') {
456
- $ralphSignals += 2
457
- }
458
-
459
- # Breaking/large change terms
460
- if ($promptLower -match '\\b(migrate|overhaul|restructure|rewrite|breaking)\\b') {
461
- $ralphSignals += 2
462
- }
463
-
464
- # Many files mentioned (10+)
465
- if ($promptLower -match '\\b(\\d{2,})\\s*(files?|components?|modules?)') {
466
- $ralphSignals += 2
467
- }
468
-
469
- # Suggest ralph for qualifying tasks
470
- if ($complexitySignals -ge 3 -and $ralphSignals -ge 2) {
471
- $ralphHint = "Large-scale task - try /dino.ralph for iterative execution"
472
- } elseif ($ralphSignals -ge 4) {
473
- $ralphHint = "Multi-story task - try /dino.ralph for fresh-context iterations"
474
- }
475
-
476
- # Check for active Ralph Loop
477
- $ralphProgressPath = Join-Path $dinoDir "ralph-progress.md"
478
- $ralphStatus = $null
479
- if (Test-Path $ralphProgressPath) {
480
- $ralphContent = Get-Content $ralphProgressPath -Raw
481
- if ($ralphContent -match '\\*\\*Iteration:\\*\\*\\s*(\\d+)/(\\d+)') {
482
- $ralphStatus = "Ralph Loop active: iteration $($matches[1])/$($matches[2])"
483
- }
484
- }
485
-
486
- # Fallback: Original v9.16.0 ambiguity detection for simpler cases
487
- if (-not $specHint -and -not $sniffHint) {
488
- if ($userPrompt -match '\\b(maybe|might|could|possibly|perhaps|some|several)\\b') {
489
- $specHint = "Vague terms detected - try /dino.sniff to clarify"
490
- }
491
- elseif ($userPrompt -match '\\b(handle|process|deal with)\\s+(it|them|this|that)\\b') {
492
- $specHint = "Missing specifics - try /dino.sniff to clarify requirements"
493
- }
494
- elseif ($userPrompt -match '\\b(make\\s+it|do\\s+it)\\s+(work|better|right)\\b') {
495
- $specHint = "Unclear acceptance criteria - try /dino.sniff before implementation"
496
- }
497
- }
498
-
499
- # v11.6.0: Ralph status first (highest priority if active loop)
500
- if ($ralphStatus) {
501
- $output += "[dino] $ralphStatus"
502
- }
503
-
504
- # v11.6.0: Ralph suggestion before spec suggestion
505
- if (-not $ralphStatus -and $ralphHint) {
506
- $output += "[dino] $ralphHint"
507
- }
508
-
509
- # v13.2.0: Auto-trigger hints (sniff > scout > spec > graph)
510
- if ($sniffHint) {
511
- $output += "[dino] $sniffHint"
512
- }
513
-
514
- if ($scoutHint) {
515
- $output += "[dino] $scoutHint"
516
- }
517
-
518
- if ($specHint) {
519
- $output += "[dino] $specHint"
520
- }
521
-
522
- if ($graphHint) {
523
- $output += "[dino] $graphHint"
524
- }
525
-
526
- # Only output if we have something useful
527
- foreach ($line in $output) {
528
- Write-Output $line
529
- }
37
+ return `${utils.scriptHeader(platform, VERSION, 'user-prompt-submit hook')}
38
+
39
+ # Get prompt from environment
40
+ $userPrompt = $env:USER_PROMPT
41
+ if (-not $userPrompt) { exit 0 }
42
+
43
+ # v6.0.0: Get conversation ID for session tracking
44
+ $conversationId = $env:CLAUDE_CONVERSATION_ID
45
+
46
+ # Find .dino directory
47
+ ${paths.getDinoDir(platform)}
48
+ ${paths.checkDinoDirExists(platform)}
49
+
50
+ # v6.0.0: Track conversation ID if available
51
+ if ($conversationId) {
52
+ $conversationPath = Join-Path $dinoDir "conversation-id"
53
+ Set-Content -Path $conversationPath -Value $conversationId -NoNewline 2>$null
54
+ }
55
+
56
+ ${paths.getSessionPath(platform)}
57
+ $promptLower = $userPrompt.ToLower()
58
+ $suggestions = @()
59
+ ${generateAlertInit(platform)}
60
+ $contextInjections = @()
61
+
62
+ # Intent detection: suggest relevant MCP resources
63
+ # Structure/architecture queries
64
+ if ($promptLower -match "where|structure|architect|layout|folder|director") {
65
+ $suggestions += "@dino://structure"
66
+ }
67
+
68
+ # Command/run queries
69
+ if ($promptLower -match "how.*(build|test|run|start|lint)|command|script") {
70
+ $suggestions += "@dino://commands"
71
+ }
72
+
73
+ # Resume/continue queries
74
+ if ($promptLower -match "continue|resume|what.*(doing|left|next)|status") {
75
+ $suggestions += "@dino://session"
76
+ }
77
+
78
+ # v11.3.0: Roadmap queries - auto-load and suggest skill
79
+ if ($promptLower -match "roadmap|next.?phase|phase.?(progress|status)") {
80
+ $roadmapsDir = Join-Path $dinoDir "roadmaps"
81
+ if (Test-Path $roadmapsDir) {
82
+ $roadmapFiles = Get-ChildItem -Path $roadmapsDir -Filter "*.md" 2>$null
83
+ if ($roadmapFiles.Count -gt 0) {
84
+ $roadmapNames = ($roadmapFiles | ForEach-Object { $_.BaseName }) -join ", "
85
+ $contextInjections += "Active roadmaps: $roadmapNames"
86
+ $skillSuggestion = "Try /dino.roadmap to check progress and continue"
87
+ }
88
+ }
89
+ }
90
+
91
+ # Pattern/convention queries
92
+ if ($promptLower -match "pattern|convention|style|how.*(usually|normally)|best.practice") {
93
+ $suggestions += "@dino://patterns"
94
+ }
95
+
96
+ # v6.4.0: Memory/decision queries
97
+ # v13.3.0: Enhanced with auto-execute memory recall on intent keywords with feature flag
98
+ $memoryKeywords = @("decided", "decision", "choice", "why", "previous", "before", "remember")
99
+ $memoryQuery = ""
100
+ foreach ($kw in $memoryKeywords) {
101
+ if ($promptLower -match "\\b$kw\\b") {
102
+ $memoryQuery = $kw
103
+ break
104
+ }
105
+ }
106
+
107
+ if ($memoryQuery) {
108
+ # Check if autoMemoryRecall feature is enabled
109
+ $configPath = Join-Path $dinoDir "config.json"
110
+ $autoRecallEnabled = $true
111
+ if (Test-Path $configPath) {
112
+ try {
113
+ $config = Get-Content $configPath -Raw | ConvertFrom-Json
114
+ if ($config.features.PSObject.Properties['autoMemoryRecall']) {
115
+ $autoRecallEnabled = $config.features.autoMemoryRecall
116
+ }
117
+ } catch {}
118
+ }
119
+
120
+ if ($autoRecallEnabled) {
121
+ # v13.3.0: Execute memory recall and inject results (with minRelevance for confidence)
122
+ try {
123
+ $recallResult = & bun dino mcp call dino_memory_recall --query "$memoryQuery" --limit 3 --minRelevance 0.3 2>$null
124
+ if ($recallResult) {
125
+ # Parse and summarize results (first 200 chars)
126
+ $summary = ($recallResult | Select-Object -First 3) -join "; "
127
+ if ($summary.Length -gt 200) {
128
+ $summary = $summary.Substring(0, 197) + "..."
129
+ }
130
+ if ($summary) {
131
+ $contextInjections += "Recalled: $summary"
132
+ }
133
+ }
134
+ } catch {}
135
+ }
136
+ # Always suggest the resource for manual access
137
+ $suggestions += "@dino://memories/summary"
138
+ }
139
+
140
+ # v13.5.0: Auto-context injection based on prompt demand signals
141
+ $autoInjectConfigPath = Join-Path $dinoDir "config.json"
142
+ $autoInjectEnabled = $true
143
+ if (Test-Path $autoInjectConfigPath) {
144
+ try {
145
+ $config = Get-Content $autoInjectConfigPath -Raw | ConvertFrom-Json
146
+ if ($config.features.PSObject.Properties['autoContextInjection']) {
147
+ $autoInjectEnabled = $config.features.autoContextInjection
148
+ }
149
+ } catch {}
150
+ }
151
+
152
+ if ($autoInjectEnabled) {
153
+ # Check for demand signals in prompt (questions about past decisions, patterns, failures)
154
+ $hasDemand = $false
155
+ if ($promptLower -match "\\b(what|why|how)\\b.*\\b(decide|chose|previous|before|earlier|did we)\\b") {
156
+ $hasDemand = $true
157
+ }
158
+ if ($promptLower -match "\\b(usually|normally|pattern|convention|prefer)\\b") {
159
+ $hasDemand = $true
160
+ }
161
+ if ($promptLower -match "\\b(fail|broke|error|issue)\\b.*\\b(earlier|before|last time)\\b") {
162
+ $hasDemand = $true
163
+ }
164
+
165
+ if ($hasDemand) {
166
+ try {
167
+ # Get current budget percentage (approximate)
168
+ $budgetPercent = 50
169
+ $sessionState = Join-Path $dinoDir "session.md"
170
+ if (Test-Path $sessionState) {
171
+ $sessionContent = Get-Content $sessionState -Raw
172
+ if ($sessionContent -match "Budget.*?(d+)%") {
173
+ $budgetPercent = [int]$matches[1]
174
+ }
175
+ }
176
+
177
+ # Only inject if budget has headroom
178
+ if ($budgetPercent -lt 90) {
179
+ $injectResult = & bun dino mcp call dino_auto_inject --prompt "$userPrompt" --budgetPercentage $budgetPercent 2>$null
180
+ if ($injectResult -and $injectResult -match "executed.*true") {
181
+ # Extract tokens injected
182
+ if ($injectResult -match "~(d+) tokens") {
183
+ $tokensInjected = $matches[1]
184
+ $contextInjections += "Auto-injected ~$tokensInjected tokens of relevant context"
185
+ }
186
+ }
187
+ }
188
+ } catch {}
189
+ }
190
+ }
191
+
192
+ # Only check session state if we have alerts to give
193
+ if (Test-Path $sessionPath) {
194
+ $content = Get-Content $sessionPath -Raw
195
+
196
+ # Check for critical issues (minimal alerts)
197
+ if ($promptLower -match "fix|bug|error|issue|debug") {
198
+ # Check for failing tests when debugging
199
+ if ($content -match "## Test Status[^#]*\\*\\*Status:\\*\\*\\s*failing") {
200
+ $alerts += "Tests are failing"
201
+ }
202
+ # Check for failing build
203
+ if ($content -match "## Build Status[^#]*\\*\\*Status:\\*\\*\\s*failing") {
204
+ $alerts += "Build is failing"
205
+ }
206
+ }
207
+
208
+ # Check for blockers on any task-related prompt
209
+ if ($promptLower -match "implement|add|create|build|fix|change|update") {
210
+ if ($content -match "## Blockers\\s*\\n([^#]+)") {
211
+ $blockerContent = $matches[1]
212
+ if ($blockerContent -notmatch "^_") {
213
+ $blockerCount = ($blockerContent | Select-String "^- " -AllMatches).Matches.Count
214
+ if ($blockerCount -gt 0) {
215
+ $alerts += "$blockerCount active blocker(s)"
216
+ }
217
+ }
218
+ }
219
+ }
220
+
221
+ # Suggest plan mode for complex tasks
222
+ if ($promptLower -match "implement|design|architect|refactor|overhaul") {
223
+ if (-not ($promptLower -match "simple|quick|small|minor")) {
224
+ $suggestions += "Consider plan mode for complex tasks"
225
+ }
226
+ }
227
+ }
228
+
229
+ # v5.1.0: Context-aware skill recommendations
230
+ $skillSuggestion = $null
231
+
232
+ # Check session state for skill recommendations
233
+ if (Test-Path $sessionPath) {
234
+ $content = Get-Content $sessionPath -Raw
235
+
236
+ # High priority: failing tests or build
237
+ if ($content -match "## Test Status[^#]*\\*\\*Status:\\*\\*\\s*failing") {
238
+ $skillSuggestion = "Try /dino.aging to verify, or /dino.hunt to fix tests"
239
+ }
240
+ elseif ($content -match "## Build Status[^#]*\\*\\*Status:\\*\\*\\s*failing") {
241
+ $skillSuggestion = "Try /dino.hunt to fix build errors"
242
+ }
243
+ # Medium priority: blockers
244
+ elseif ($content -match "## Blockers\\s*\\n[^_]") {
245
+ $skillSuggestion = "Try /dino.sniff to clarify blockers"
246
+ }
247
+ # Based on prompt intent
248
+ elseif ($promptLower -match "understand|learn|explore|what.*(is|does)") {
249
+ $skillSuggestion = "Try /dino.discover or /dino.scout"
250
+ }
251
+ elseif ($promptLower -match "plan|design|architect") {
252
+ $skillSuggestion = "Try /dino.nest to plan approach"
253
+ }
254
+ elseif ($promptLower -match "implement|build|create|add|fix") {
255
+ $skillSuggestion = "Try /dino.hunt to execute tasks"
256
+ }
257
+ elseif ($promptLower -match "test|verify|check") {
258
+ $skillSuggestion = "Try /dino.aging to verify implementation"
259
+ }
260
+ elseif ($promptLower -match "finish|complete|done|wrap") {
261
+ $skillSuggestion = "Try /dino.fossil to archive work"
262
+ }
263
+ }
264
+
265
+ # Auto-delegation detection for complex multi-step tasks
266
+ $delegationSuggestion = $null
267
+ $tasksDir = Join-Path $dinoDir "tasks"
268
+
269
+ # Check if task system is available
270
+ if (Test-Path $tasksDir) {
271
+ # Detect complex tasks that could benefit from delegation
272
+ $complexPatterns = @{
273
+ "explore|investigate|understand|research|analyze" = "explorer"
274
+ "design|architect|plan|structure" = "planner"
275
+ "implement|build|create|add|develop" = "implementer"
276
+ "test|verify|validate|check" = "tester"
277
+ "review|audit|inspect" = "reviewer"
278
+ }
279
+
280
+ $detectedRoles = @()
281
+ foreach ($pattern in $complexPatterns.Keys) {
282
+ if ($promptLower -match $pattern) {
283
+ $detectedRoles += $complexPatterns[$pattern]
284
+ }
285
+ }
286
+
287
+ # If multiple phases detected, suggest task breakdown
288
+ if ($detectedRoles.Count -gt 1) {
289
+ $roleList = ($detectedRoles | Select-Object -Unique) -join " -> "
290
+ $delegationSuggestion = "Multi-step task detected. Suggested delegation: $roleList"
291
+ }
292
+ # Single complex role for substantial tasks
293
+ elseif ($detectedRoles.Count -eq 1) {
294
+ # Count words to detect substantial requests
295
+ $wordCount = ($userPrompt -split 's+').Count
296
+ if ($wordCount -gt 10) {
297
+ $role = $detectedRoles[0]
298
+ $agentMap = @{
299
+ "explorer" = "@dino-analyst"
300
+ "planner" = "@dino-architect"
301
+ "implementer" = "@dino-implementer"
302
+ "tester" = "@dino-tester"
303
+ "reviewer" = "@dino-reviewer"
304
+ }
305
+ $delegationSuggestion = "Consider delegating to $($agentMap[$role])"
306
+ }
307
+ }
308
+ }
309
+
310
+ # v6.0.0: Smart context injection based on session state
311
+ if (Test-Path $sessionPath) {
312
+ $content = Get-Content $sessionPath -Raw
313
+
314
+ # Pattern: fix/debug + tests failing -> inject test details
315
+ if ($promptLower -match "fix|debug|error|failing") {
316
+ if ($content -match "## Test Status[^#]*\\*\\*Status:\\*\\*\\s*failing") {
317
+ $contextInjections += "Failing tests detected - see @dino://session for details"
318
+ }
319
+ if ($content -match "## Build Status[^#]*\\*\\*Status:\\*\\*\\s*failing") {
320
+ $contextInjections += "Build errors present - see @dino://session for details"
321
+ }
322
+ }
323
+
324
+ # Pattern: architecture/design -> inject structure
325
+ if ($promptLower -match "architect|design|refactor|structure|layout") {
326
+ $contextInjections += "@dino://structure for project architecture"
327
+ }
328
+
329
+ # Pattern: focus area keywords -> inject focus context
330
+ if ($content -match "## Focus\\s*\\n([^_\\n][^\\n]+)") {
331
+ $focusArea = $matches[1].Trim()
332
+ if ($promptLower -match $focusArea.ToLower().Split('/')[0]) {
333
+ $contextInjections += "Working in focus area: $focusArea"
334
+ }
335
+ }
336
+ }
337
+
338
+ # Output context injections first (auto-injected), then suggestions, then alerts
339
+ # Note: Memory/failure lookups removed in v9.2.1 for performance
340
+ # Use @dino://memories/summary MCP resource for memory context
341
+ $output = @()
342
+
343
+ # v6.0.0: Smart context injection output
344
+ if ($contextInjections.Count -gt 0) {
345
+ $output += "[dino] Context: " + ($contextInjections -join "; ")
346
+ }
347
+
348
+ if ($delegationSuggestion) {
349
+ $output += "[dino] $delegationSuggestion"
350
+ }
351
+
352
+ # Skill recommendations (only if no delegation suggestion)
353
+ if (-not $delegationSuggestion -and $skillSuggestion) {
354
+ $output += "[dino] $skillSuggestion"
355
+ }
356
+
357
+ if ($suggestions.Count -gt 0) {
358
+ $output += "[dino] Tip: " + ($suggestions -join "; ")
359
+ }
360
+
361
+ if ($alerts.Count -gt 0) {
362
+ $output += "[dino] Note: " + ($alerts -join ", ")
363
+ }
364
+
365
+ # v13.2.0: Enhanced ambiguity detection with /dino.sniff auto-trigger
366
+ $ambiguityCount = 0
367
+
368
+ # Count vague terms in the prompt
369
+ if ($userPrompt -match '\\b(maybe|might|could|possibly|perhaps)\\b') { $ambiguityCount += 1 }
370
+ if ($userPrompt -match '\\b(some|something|somehow|somewhere)\\b') { $ambiguityCount += 1 }
371
+ if ($userPrompt -match '\\b(certain|various|several|few)\\b') { $ambiguityCount += 1 }
372
+ if ($userPrompt -match '\\b(improve|enhance|better|good)\\b') { $ambiguityCount += 1 }
373
+ if ($userPrompt -match '\\b(handle|process|deal with)\\s+(it|them|this|that)\\b') { $ambiguityCount += 1 }
374
+ if ($userPrompt -match '\\b(make\\s+it|do\\s+it)\\s+(work|better|right)\\b') { $ambiguityCount += 1 }
375
+
376
+ # v13.2.0: Auto-trigger /dino.sniff when ambiguity count > 2
377
+ $sniffHint = $null
378
+ if ($ambiguityCount -gt 2) {
379
+ $sniffHint = "Clarification needed ($ambiguityCount vague terms): /dino.sniff"
380
+ }
381
+
382
+ # v13.2.0: Auto-trigger /dino.scout for complex tasks without research
383
+ $scoutHint = $null
384
+ $researchDir = Join-Path $dinoDir "research"
385
+ $hasResearch = (Test-Path $researchDir) -and ((Get-ChildItem $researchDir -Filter "*.md" 2>$null).Count -gt 0)
386
+
387
+ # v10.5.0: Enhanced complexity/ambiguity detection with /dino.spec suggestion
388
+ $specHint = $null
389
+ $complexitySignals = 0
390
+
391
+ # Implementation requests that need analysis
392
+ if ($promptLower -match '\\b(implement|add|create|build|develop|make)\\b') {
393
+ # Check for vague verbs (high ambiguity)
394
+ if ($userPrompt -match '\\b(improve|enhance|fix|optimize|refactor|clean)\\b') {
395
+ $complexitySignals += 2
396
+ }
397
+
398
+ # Check for multi-part requests
399
+ if ($userPrompt -match '\\b(and also|as well as|plus|then|additionally)\\b') {
400
+ $complexitySignals += 2
401
+ }
402
+ if ($userPrompt -match '^\\s*\\d+[.)\\s]') {
403
+ $complexitySignals += 2
404
+ }
405
+
406
+ # Check for security/data terms (high risk)
407
+ if ($promptLower -match '\\b(auth|password|token|encrypt|security|credential)\\b') {
408
+ $complexitySignals += 2
409
+ }
410
+ if ($promptLower -match '\\b(database|migration|schema|delete|drop)\\b') {
411
+ $complexitySignals += 2
412
+ }
413
+
414
+ # Check for vague pronouns (missing specifics)
415
+ if ($userPrompt -match '\\b(some|something|somehow|somewhere|certain|various)\\b') {
416
+ $complexitySignals += 1
417
+ }
418
+
419
+ # Check for exploratory language
420
+ if ($promptLower -match '\\b(some kind of|maybe|could|might want|sort of|like a)\\b') {
421
+ $complexitySignals += 2
422
+ }
423
+
424
+ # v13.2.0: Check for /dino.scout trigger (complexity > 40% signals, no research)
425
+ if ($complexitySignals -ge 4 -and -not $hasResearch) {
426
+ $scoutHint = "Research recommended (no prior research found): /dino.scout"
427
+ }
428
+
429
+ # Suggest /dino.spec for complex prompts (threshold: 3+ signals)
430
+ if ($complexitySignals -ge 3) {
431
+ $specHint = "Complex request detected - try /dino.spec for thorough analysis"
432
+ }
433
+ elseif ($complexitySignals -ge 2) {
434
+ $specHint = "Ambiguous request - try /dino.spec to clarify before implementing"
435
+ }
436
+ }
437
+
438
+ # v13.2.0: Knowledge graph auto-query for dependency analysis
439
+ $graphHint = $null
440
+ if ($promptLower -match '\\b(depends on|uses|imports|calls|extends|implements)\\b') {
441
+ $graphHint = "Dependency analysis: @dino://graph/dependencies"
442
+ }
443
+
444
+ # v11.6.0: Ralph Loop eligibility detection
445
+ $ralphSignals = 0
446
+ $ralphHint = $null
447
+
448
+ # Multi-part with 3+ numbered items
449
+ $numberedItems = [regex]::Matches($userPrompt, '(?m)^\\s*\\d+[.)\\s]').Count
450
+ if ($numberedItems -ge 3) {
451
+ $ralphSignals += 3
452
+ }
453
+
454
+ # System-wide scope keywords
455
+ if ($promptLower -match '\\b(entire|throughout|codebase|system.?wide|project.?wide)\\b') {
456
+ $ralphSignals += 2
457
+ }
458
+
459
+ # Breaking/large change terms
460
+ if ($promptLower -match '\\b(migrate|overhaul|restructure|rewrite|breaking)\\b') {
461
+ $ralphSignals += 2
462
+ }
463
+
464
+ # Many files mentioned (10+)
465
+ if ($promptLower -match '\\b(\\d{2,})\\s*(files?|components?|modules?)') {
466
+ $ralphSignals += 2
467
+ }
468
+
469
+ # Suggest ralph for qualifying tasks
470
+ if ($complexitySignals -ge 3 -and $ralphSignals -ge 2) {
471
+ $ralphHint = "Large-scale task - try /dino.ralph for iterative execution"
472
+ } elseif ($ralphSignals -ge 4) {
473
+ $ralphHint = "Multi-story task - try /dino.ralph for fresh-context iterations"
474
+ }
475
+
476
+ # Check for active Ralph Loop
477
+ $ralphProgressPath = Join-Path $dinoDir "ralph-progress.md"
478
+ $ralphStatus = $null
479
+ if (Test-Path $ralphProgressPath) {
480
+ $ralphContent = Get-Content $ralphProgressPath -Raw
481
+ if ($ralphContent -match '\\*\\*Iteration:\\*\\*\\s*(\\d+)/(\\d+)') {
482
+ $ralphStatus = "Ralph Loop active: iteration $($matches[1])/$($matches[2])"
483
+ }
484
+ }
485
+
486
+ # Fallback: Original v9.16.0 ambiguity detection for simpler cases
487
+ if (-not $specHint -and -not $sniffHint) {
488
+ if ($userPrompt -match '\\b(maybe|might|could|possibly|perhaps|some|several)\\b') {
489
+ $specHint = "Vague terms detected - try /dino.sniff to clarify"
490
+ }
491
+ elseif ($userPrompt -match '\\b(handle|process|deal with)\\s+(it|them|this|that)\\b') {
492
+ $specHint = "Missing specifics - try /dino.sniff to clarify requirements"
493
+ }
494
+ elseif ($userPrompt -match '\\b(make\\s+it|do\\s+it)\\s+(work|better|right)\\b') {
495
+ $specHint = "Unclear acceptance criteria - try /dino.sniff before implementation"
496
+ }
497
+ }
498
+
499
+ # v11.6.0: Ralph status first (highest priority if active loop)
500
+ if ($ralphStatus) {
501
+ $output += "[dino] $ralphStatus"
502
+ }
503
+
504
+ # v11.6.0: Ralph suggestion before spec suggestion
505
+ if (-not $ralphStatus -and $ralphHint) {
506
+ $output += "[dino] $ralphHint"
507
+ }
508
+
509
+ # v13.2.0: Auto-trigger hints (sniff > scout > spec > graph)
510
+ if ($sniffHint) {
511
+ $output += "[dino] $sniffHint"
512
+ }
513
+
514
+ if ($scoutHint) {
515
+ $output += "[dino] $scoutHint"
516
+ }
517
+
518
+ if ($specHint) {
519
+ $output += "[dino] $specHint"
520
+ }
521
+
522
+ if ($graphHint) {
523
+ $output += "[dino] $graphHint"
524
+ }
525
+
526
+ # Only output if we have something useful
527
+ foreach ($line in $output) {
528
+ Write-Output $line
529
+ }
530
530
  `;
531
531
  }
532
532
  function generateBashScript() {
533
533
  const platform = 'linux';
534
534
  // Note: This hook doesn't use set -e because grep returns non-zero when no match found
535
- return `#!/bin/bash
536
- # dino-spec user-prompt-submit hook v${VERSION}
537
- # Note: No 'set -e' - grep returns non-zero when no match found (expected)
538
-
539
- # Get prompt from environment
540
- USER_PROMPT="\${USER_PROMPT:-}"
541
- if [ -z "\$USER_PROMPT" ]; then exit 0; fi
542
-
543
- # v6.0.0: Get conversation ID for session tracking
544
- CONVERSATION_ID="\${CLAUDE_CONVERSATION_ID:-}"
545
-
546
- # Find .dino directory
547
- ${paths.getDinoDir(platform)}
548
- ${paths.checkDinoDirExists(platform)}
549
-
550
- # v6.0.0: Track conversation ID if available
551
- if [ -n "\$CONVERSATION_ID" ]; then
552
- echo -n "\$CONVERSATION_ID" > "\$DINO_DIR/conversation-id" 2>/dev/null || true
553
- fi
554
-
555
- ${paths.getSessionPath(platform)}
556
- PROMPT_LOWER=\$(echo "\$USER_PROMPT" | tr '[:upper:]' '[:lower:]')
557
- SUGGESTIONS=""
558
- ${generateAlertInit(platform)}
559
- CONTEXT_INJECTIONS=""
560
-
561
- # Intent detection: suggest relevant MCP resources
562
-
563
- # Structure/architecture queries
564
- if echo "\$PROMPT_LOWER" | grep -qE "where|structure|architect|layout|folder|director"; then
565
- SUGGESTIONS="@dino://structure"
566
- fi
567
-
568
- # Command/run queries
569
- if echo "\$PROMPT_LOWER" | grep -qE "how.*(build|test|run|start|lint)|command|script"; then
570
- if [ -n "\$SUGGESTIONS" ]; then
571
- SUGGESTIONS="\$SUGGESTIONS; "
572
- fi
573
- SUGGESTIONS="\${SUGGESTIONS}@dino://commands"
574
- fi
575
-
576
- # Resume/continue queries
577
- if echo "\$PROMPT_LOWER" | grep -qE "continue|resume|what.*(doing|left|next)|status"; then
578
- if [ -n "\$SUGGESTIONS" ]; then
579
- SUGGESTIONS="\$SUGGESTIONS; "
580
- fi
581
- SUGGESTIONS="\${SUGGESTIONS}@dino://session"
582
- fi
583
-
584
- # v11.3.0: Roadmap queries - auto-load and suggest skill
585
- if echo "\$PROMPT_LOWER" | grep -qE "roadmap|next.?phase|phase.?(progress|status)"; then
586
- ROADMAPS_DIR="\$DINO_DIR/roadmaps"
587
- if [ -d "\$ROADMAPS_DIR" ]; then
588
- ROADMAP_FILES=\$(ls "\$ROADMAPS_DIR"/*.md 2>/dev/null | xargs -I{} basename {} .md | tr '\\n' ', ' | sed 's/, $//')
589
- if [ -n "\$ROADMAP_FILES" ]; then
590
- if [ -n "\$CONTEXT_INJECTIONS" ]; then
591
- CONTEXT_INJECTIONS="\$CONTEXT_INJECTIONS; "
592
- fi
593
- CONTEXT_INJECTIONS="\${CONTEXT_INJECTIONS}Active roadmaps: \$ROADMAP_FILES"
594
- SKILL_SUGGESTION="Try /dino.roadmap to check progress and continue"
595
- fi
596
- fi
597
- fi
598
-
599
- # Pattern/convention queries
600
- if echo "\$PROMPT_LOWER" | grep -qE "pattern|convention|style|how.*(usually|normally)|best.practice"; then
601
- if [ -n "\$SUGGESTIONS" ]; then
602
- SUGGESTIONS="\$SUGGESTIONS; "
603
- fi
604
- SUGGESTIONS="\${SUGGESTIONS}@dino://patterns"
605
- fi
606
-
607
- # v6.4.0: Memory/decision queries
608
- # v13.3.0: Enhanced with auto-execute memory recall on intent keywords with feature flag
609
- MEMORY_QUERY=""
610
- for kw in decided decision choice why previous before remember; do
611
- if echo "\$PROMPT_LOWER" | grep -qE "\\b\$kw\\b"; then
612
- MEMORY_QUERY="\$kw"
613
- break
614
- fi
615
- done
616
-
617
- if [ -n "\$MEMORY_QUERY" ]; then
618
- # Check if autoMemoryRecall feature is enabled
619
- CONFIG_PATH="\$DINO_DIR/config.json"
620
- AUTO_RECALL_ENABLED="true"
621
- if [ -f "\$CONFIG_PATH" ]; then
622
- # Check if autoMemoryRecall is explicitly set to false
623
- if grep -q '"autoMemoryRecall"[[:space:]]*:[[:space:]]*false' "\$CONFIG_PATH" 2>/dev/null; then
624
- AUTO_RECALL_ENABLED="false"
625
- fi
626
- fi
627
-
628
- if [ "\$AUTO_RECALL_ENABLED" = "true" ]; then
629
- # v13.3.0: Execute memory recall and inject results (with minRelevance for confidence)
630
- RECALL_RESULT=\$(bun dino mcp call dino_memory_recall --query "\$MEMORY_QUERY" --limit 3 --minRelevance 0.3 2>/dev/null | head -3)
631
- if [ -n "\$RECALL_RESULT" ]; then
632
- # Summarize results (first 200 chars)
633
- SUMMARY=\$(echo "\$RECALL_RESULT" | tr '\\n' '; ' | cut -c1-200)
634
- if [ -n "\$SUMMARY" ]; then
635
- if [ -n "\$CONTEXT_INJECTIONS" ]; then
636
- CONTEXT_INJECTIONS="\$CONTEXT_INJECTIONS; "
637
- fi
638
- CONTEXT_INJECTIONS="\${CONTEXT_INJECTIONS}Recalled: \$SUMMARY"
639
- fi
640
- fi
641
- fi
642
- # Always suggest the resource for manual access
643
- if [ -n "\$SUGGESTIONS" ]; then
644
- SUGGESTIONS="\$SUGGESTIONS; "
645
- fi
646
- SUGGESTIONS="\${SUGGESTIONS}@dino://memories/summary"
647
- fi
648
-
649
- # v13.5.0: Auto-context injection based on prompt demand signals
650
- AUTO_INJECT_ENABLED="true"
651
- CONFIG_PATH="\$DINO_DIR/config.json"
652
- if [ -f "\$CONFIG_PATH" ]; then
653
- if grep -q '"autoContextInjection"[[:space:]]*:[[:space:]]*false' "\$CONFIG_PATH" 2>/dev/null; then
654
- AUTO_INJECT_ENABLED="false"
655
- fi
656
- fi
657
-
658
- if [ "\$AUTO_INJECT_ENABLED" = "true" ]; then
659
- # Check for demand signals in prompt
660
- HAS_DEMAND="false"
661
- if echo "\$PROMPT_LOWER" | grep -qE "(what|why|how).*(decide|chose|previous|before|earlier|did we)"; then
662
- HAS_DEMAND="true"
663
- fi
664
- if echo "\$PROMPT_LOWER" | grep -qE "(usually|normally|pattern|convention|prefer)"; then
665
- HAS_DEMAND="true"
666
- fi
667
- if echo "\$PROMPT_LOWER" | grep -qE "(fail|broke|error|issue).*(earlier|before|last time)"; then
668
- HAS_DEMAND="true"
669
- fi
670
-
671
- if [ "\$HAS_DEMAND" = "true" ]; then
672
- # Get current budget percentage (approximate)
673
- BUDGET_PERCENT=50
674
- if [ -f "\$SESSION_PATH" ]; then
675
- BUDGET_MATCH=\$(grep -oE "Budget.*[0-9]+%" "\$SESSION_PATH" 2>/dev/null | grep -oE "[0-9]+" | head -1)
676
- if [ -n "\$BUDGET_MATCH" ]; then
677
- BUDGET_PERCENT="\$BUDGET_MATCH"
678
- fi
679
- fi
680
-
681
- # Only inject if budget has headroom
682
- if [ "\$BUDGET_PERCENT" -lt 90 ]; then
683
- INJECT_RESULT=\$(bun dino mcp call dino_auto_inject --prompt "\$USER_PROMPT" --budgetPercentage "\$BUDGET_PERCENT" 2>/dev/null)
684
- if echo "\$INJECT_RESULT" | grep -q "executed.*true"; then
685
- TOKENS_MATCH=\$(echo "\$INJECT_RESULT" | grep -oE "~[0-9]+ tokens" | grep -oE "[0-9]+")
686
- if [ -n "\$TOKENS_MATCH" ]; then
687
- if [ -n "\$CONTEXT_INJECTIONS" ]; then
688
- CONTEXT_INJECTIONS="\$CONTEXT_INJECTIONS; "
689
- fi
690
- CONTEXT_INJECTIONS="\${CONTEXT_INJECTIONS}Auto-injected ~\$TOKENS_MATCH tokens of relevant context"
691
- fi
692
- fi
693
- fi
694
- fi
695
- fi
696
-
697
- # Only check session state if we have alerts to give
698
- if [ -f "\$SESSION_PATH" ]; then
699
- CONTENT=\$(cat "\$SESSION_PATH")
700
-
701
- # Check for critical issues when debugging
702
- if echo "\$PROMPT_LOWER" | grep -qE "fix|bug|error|issue|debug"; then
703
- if echo "\$CONTENT" | grep -q "## Test Status" && echo "\$CONTENT" | grep -qi "Status:\\*\\* failing"; then
704
- ALERTS="Tests are failing"
705
- fi
706
- if echo "\$CONTENT" | grep -q "## Build Status" && echo "\$CONTENT" | grep -qi "Status:\\*\\* failing"; then
707
- if [ -n "\$ALERTS" ]; then
708
- ALERTS="\$ALERTS, "
709
- fi
710
- ALERTS="\${ALERTS}Build is failing"
711
- fi
712
- fi
713
-
714
- # Check for blockers on task-related prompts
715
- if echo "\$PROMPT_LOWER" | grep -qE "implement|add|create|build|fix|change|update"; then
716
- if echo "\$CONTENT" | grep -q "## Blockers"; then
717
- BLOCKER_COUNT=\$(echo "\$CONTENT" | sed -n '/## Blockers/,/## /p' | grep -c "^- " 2>/dev/null || echo "0")
718
- if [ "\$BLOCKER_COUNT" -gt 0 ]; then
719
- if [ -n "\$ALERTS" ]; then
720
- ALERTS="\$ALERTS, "
721
- fi
722
- ALERTS="\${ALERTS}\$BLOCKER_COUNT active blocker(s)"
723
- fi
724
- fi
725
- fi
726
-
727
- # Suggest plan mode for complex tasks
728
- if echo "\$PROMPT_LOWER" | grep -qE "implement|design|architect|refactor|overhaul"; then
729
- if ! echo "\$PROMPT_LOWER" | grep -qE "simple|quick|small|minor"; then
730
- if [ -n "\$SUGGESTIONS" ]; then
731
- SUGGESTIONS="\$SUGGESTIONS; "
732
- fi
733
- SUGGESTIONS="\${SUGGESTIONS}Consider plan mode for complex tasks"
734
- fi
735
- fi
736
- fi
737
-
738
- # v5.1.0: Context-aware skill recommendations
739
- SKILL_SUGGESTION=""
740
-
741
- if [ -f "\$SESSION_PATH" ]; then
742
- CONTENT=\$(cat "\$SESSION_PATH")
743
-
744
- # High priority: failing tests or build
745
- if echo "\$CONTENT" | grep -q "## Test Status" && echo "\$CONTENT" | grep -qi "Status:\\*\\* failing"; then
746
- SKILL_SUGGESTION="Try /dino.aging to verify, or /dino.hunt to fix tests"
747
- elif echo "\$CONTENT" | grep -q "## Build Status" && echo "\$CONTENT" | grep -qi "Status:\\*\\* failing"; then
748
- SKILL_SUGGESTION="Try /dino.hunt to fix build errors"
749
- # Medium priority: blockers
750
- elif echo "\$CONTENT" | grep -q "## Blockers" && ! echo "\$CONTENT" | sed -n '/## Blockers/,/## /p' | head -2 | tail -1 | grep -q "^_"; then
751
- SKILL_SUGGESTION="Try /dino.sniff to clarify blockers"
752
- # Based on prompt intent
753
- elif echo "\$PROMPT_LOWER" | grep -qE "understand|learn|explore|what.*(is|does)"; then
754
- SKILL_SUGGESTION="Try /dino.discover or /dino.scout"
755
- elif echo "\$PROMPT_LOWER" | grep -qE "plan|design|architect"; then
756
- SKILL_SUGGESTION="Try /dino.nest to plan approach"
757
- elif echo "\$PROMPT_LOWER" | grep -qE "implement|build|create|add|fix"; then
758
- SKILL_SUGGESTION="Try /dino.hunt to execute tasks"
759
- elif echo "\$PROMPT_LOWER" | grep -qE "test|verify|check"; then
760
- SKILL_SUGGESTION="Try /dino.aging to verify implementation"
761
- elif echo "\$PROMPT_LOWER" | grep -qE "finish|complete|done|wrap"; then
762
- SKILL_SUGGESTION="Try /dino.fossil to archive work"
763
- fi
764
- fi
765
-
766
- # Auto-delegation detection for complex multi-step tasks
767
- DELEGATION_SUGGESTION=""
768
- TASKS_DIR="\$DINO_DIR/tasks"
769
-
770
- if [ -d "\$TASKS_DIR" ]; then
771
- DETECTED_ROLES=""
772
-
773
- # Detect roles from prompt
774
- if echo "\$PROMPT_LOWER" | grep -qE "explore|investigate|understand|research|analyze"; then
775
- DETECTED_ROLES="\$DETECTED_ROLES explorer"
776
- fi
777
- if echo "\$PROMPT_LOWER" | grep -qE "design|architect|plan|structure"; then
778
- DETECTED_ROLES="\$DETECTED_ROLES planner"
779
- fi
780
- if echo "\$PROMPT_LOWER" | grep -qE "implement|build|create|add|develop"; then
781
- DETECTED_ROLES="\$DETECTED_ROLES implementer"
782
- fi
783
- if echo "\$PROMPT_LOWER" | grep -qE "test|verify|validate|check"; then
784
- DETECTED_ROLES="\$DETECTED_ROLES tester"
785
- fi
786
- if echo "\$PROMPT_LOWER" | grep -qE "review|audit|inspect"; then
787
- DETECTED_ROLES="\$DETECTED_ROLES reviewer"
788
- fi
789
-
790
- # Count unique roles
791
- ROLE_COUNT=\$(echo "\$DETECTED_ROLES" | tr ' ' '\\n' | grep -v '^$' | sort -u | wc -l)
792
-
793
- if [ "\$ROLE_COUNT" -gt 1 ]; then
794
- ROLE_LIST=\$(echo "\$DETECTED_ROLES" | tr ' ' '\\n' | grep -v '^$' | sort -u | tr '\\n' ' -> ' | sed 's/ -> $//')
795
- DELEGATION_SUGGESTION="Multi-step task detected. Suggested delegation: \$ROLE_LIST"
796
- elif [ "\$ROLE_COUNT" -eq 1 ]; then
797
- # Count words for substantial requests
798
- WORD_COUNT=\$(echo "\$USER_PROMPT" | wc -w)
799
- if [ "\$WORD_COUNT" -gt 10 ]; then
800
- ROLE=\$(echo "\$DETECTED_ROLES" | tr ' ' '\\n' | grep -v '^$' | head -1)
801
- case "\$ROLE" in
802
- explorer) AGENT="@dino-analyst" ;;
803
- planner) AGENT="@dino-architect" ;;
804
- implementer) AGENT="@dino-implementer" ;;
805
- tester) AGENT="@dino-tester" ;;
806
- reviewer) AGENT="@dino-reviewer" ;;
807
- esac
808
- if [ -n "\$AGENT" ]; then
809
- DELEGATION_SUGGESTION="Consider delegating to \$AGENT"
810
- fi
811
- fi
812
- fi
813
- fi
814
-
815
- # v6.0.0: Smart context injection based on session state
816
- if [ -f "\$SESSION_PATH" ]; then
817
- CONTENT=\$(cat "\$SESSION_PATH")
818
-
819
- # Pattern: fix/debug + tests failing -> inject test details
820
- if echo "\$PROMPT_LOWER" | grep -qE "fix|debug|error|failing"; then
821
- if echo "\$CONTENT" | grep -q "## Test Status" && echo "\$CONTENT" | grep -qi "Status:\\*\\* failing"; then
822
- if [ -n "\$CONTEXT_INJECTIONS" ]; then
823
- CONTEXT_INJECTIONS="\$CONTEXT_INJECTIONS; "
824
- fi
825
- CONTEXT_INJECTIONS="\${CONTEXT_INJECTIONS}Failing tests detected - see @dino://session for details"
826
- fi
827
- if echo "\$CONTENT" | grep -q "## Build Status" && echo "\$CONTENT" | grep -qi "Status:\\*\\* failing"; then
828
- if [ -n "\$CONTEXT_INJECTIONS" ]; then
829
- CONTEXT_INJECTIONS="\$CONTEXT_INJECTIONS; "
830
- fi
831
- CONTEXT_INJECTIONS="\${CONTEXT_INJECTIONS}Build errors present - see @dino://session for details"
832
- fi
833
- fi
834
-
835
- # Pattern: architecture/design -> inject structure
836
- if echo "\$PROMPT_LOWER" | grep -qE "architect|design|refactor|structure|layout"; then
837
- if [ -n "\$CONTEXT_INJECTIONS" ]; then
838
- CONTEXT_INJECTIONS="\$CONTEXT_INJECTIONS; "
839
- fi
840
- CONTEXT_INJECTIONS="\${CONTEXT_INJECTIONS}@dino://structure for project architecture"
841
- fi
842
-
843
- # Pattern: focus area keywords -> inject focus context
844
- FOCUS_AREA=\$(echo "\$CONTENT" | sed -n '/^## Focus/,/^##/p' | head -2 | tail -1 | grep -v "^_" | head -1)
845
- if [ -n "\$FOCUS_AREA" ]; then
846
- FOCUS_LOWER=\$(echo "\$FOCUS_AREA" | tr '[:upper:]' '[:lower:]' | cut -d'/' -f1)
847
- if echo "\$PROMPT_LOWER" | grep -q "\$FOCUS_LOWER"; then
848
- if [ -n "\$CONTEXT_INJECTIONS" ]; then
849
- CONTEXT_INJECTIONS="\$CONTEXT_INJECTIONS; "
850
- fi
851
- CONTEXT_INJECTIONS="\${CONTEXT_INJECTIONS}Working in focus area: \$FOCUS_AREA"
852
- fi
853
- fi
854
- fi
855
-
856
- # Note: Memory/failure lookups removed in v9.2.1 for performance
857
- # Use @dino://memories/summary MCP resource for memory context
858
-
859
- # v6.0.0: Output context injections first, then delegation, then skill, then tips, then alerts
860
- if [ -n "\$CONTEXT_INJECTIONS" ]; then
861
- echo "[dino] Context: \$CONTEXT_INJECTIONS"
862
- fi
863
-
864
- if [ -n "\$DELEGATION_SUGGESTION" ]; then
865
- echo "[dino] \$DELEGATION_SUGGESTION"
866
- fi
867
-
868
- # Skill recommendations (only if no delegation suggestion)
869
- if [ -z "\$DELEGATION_SUGGESTION" ] && [ -n "\$SKILL_SUGGESTION" ]; then
870
- echo "[dino] \$SKILL_SUGGESTION"
871
- fi
872
-
873
- if [ -n "\$SUGGESTIONS" ]; then
874
- echo "[dino] Tip: \$SUGGESTIONS"
875
- fi
876
-
877
- if [ -n "\$ALERTS" ]; then
878
- echo "[dino] Note: \$ALERTS"
879
- fi
880
-
881
- # v10.5.0: Enhanced complexity/ambiguity detection with /dino.spec suggestion
882
- SPEC_HINT=""
883
- COMPLEXITY_SIGNALS=0
884
-
885
- # Implementation requests that need analysis
886
- if echo "\$PROMPT_LOWER" | grep -qE "\\b(implement|add|create|build|develop|make)\\b"; then
887
- # Check for vague verbs (high ambiguity)
888
- if echo "\$USER_PROMPT" | grep -qiE "\\b(improve|enhance|fix|optimize|refactor|clean)\\b"; then
889
- COMPLEXITY_SIGNALS=\$((COMPLEXITY_SIGNALS + 2))
890
- fi
891
-
892
- # Check for multi-part requests
893
- if echo "\$USER_PROMPT" | grep -qiE "\\b(and also|as well as|plus|then|additionally)\\b"; then
894
- COMPLEXITY_SIGNALS=\$((COMPLEXITY_SIGNALS + 2))
895
- fi
896
- if echo "\$USER_PROMPT" | grep -qE "^[[:space:]]*[0-9]+[.)[:space:]]"; then
897
- COMPLEXITY_SIGNALS=\$((COMPLEXITY_SIGNALS + 2))
898
- fi
899
-
900
- # Check for security/data terms (high risk)
901
- if echo "\$PROMPT_LOWER" | grep -qE "\\b(auth|password|token|encrypt|security|credential)\\b"; then
902
- COMPLEXITY_SIGNALS=\$((COMPLEXITY_SIGNALS + 2))
903
- fi
904
- if echo "\$PROMPT_LOWER" | grep -qE "\\b(database|migration|schema|delete|drop)\\b"; then
905
- COMPLEXITY_SIGNALS=\$((COMPLEXITY_SIGNALS + 2))
906
- fi
907
-
908
- # Check for vague pronouns (missing specifics)
909
- if echo "\$USER_PROMPT" | grep -qiE "\\b(some|something|somehow|somewhere|certain|various)\\b"; then
910
- COMPLEXITY_SIGNALS=\$((COMPLEXITY_SIGNALS + 1))
911
- fi
912
-
913
- # Check for exploratory language
914
- if echo "\$PROMPT_LOWER" | grep -qE "\\b(some kind of|maybe|could|might want|sort of|like a)\\b"; then
915
- COMPLEXITY_SIGNALS=\$((COMPLEXITY_SIGNALS + 2))
916
- fi
917
-
918
- # Suggest /dino.spec for complex prompts (threshold: 3+ signals)
919
- if [ "\$COMPLEXITY_SIGNALS" -ge 3 ]; then
920
- SPEC_HINT="Complex request detected - try /dino.spec for thorough analysis"
921
- elif [ "\$COMPLEXITY_SIGNALS" -ge 2 ]; then
922
- SPEC_HINT="Ambiguous request - try /dino.spec to clarify before implementing"
923
- fi
924
- fi
925
-
926
- # v11.6.0: Ralph Loop eligibility detection
927
- RALPH_SIGNALS=0
928
- RALPH_HINT=""
929
-
930
- # Multi-part with 3+ numbered items
931
- NUMBERED_ITEMS=\$(echo "\$USER_PROMPT" | grep -cE '^[[:space:]]*[0-9]+[.)[:space:]]' || echo "0")
932
- if [ "\$NUMBERED_ITEMS" -ge 3 ]; then
933
- RALPH_SIGNALS=\$((RALPH_SIGNALS + 3))
934
- fi
935
-
936
- # System-wide scope keywords
937
- if echo "\$PROMPT_LOWER" | grep -qE "\\b(entire|throughout|codebase|system.?wide|project.?wide)\\b"; then
938
- RALPH_SIGNALS=\$((RALPH_SIGNALS + 2))
939
- fi
940
-
941
- # Breaking/large change terms
942
- if echo "\$PROMPT_LOWER" | grep -qE "\\b(migrate|overhaul|restructure|rewrite|breaking)\\b"; then
943
- RALPH_SIGNALS=\$((RALPH_SIGNALS + 2))
944
- fi
945
-
946
- # Many files mentioned (10+)
947
- if echo "\$PROMPT_LOWER" | grep -qE "\\b[0-9]{2,}[[:space:]]*(files?|components?|modules?)"; then
948
- RALPH_SIGNALS=\$((RALPH_SIGNALS + 2))
949
- fi
950
-
951
- # Suggest ralph for qualifying tasks
952
- if [ "\$COMPLEXITY_SIGNALS" -ge 3 ] && [ "\$RALPH_SIGNALS" -ge 2 ]; then
953
- RALPH_HINT="Large-scale task - try /dino.ralph for iterative execution"
954
- elif [ "\$RALPH_SIGNALS" -ge 4 ]; then
955
- RALPH_HINT="Multi-story task - try /dino.ralph for fresh-context iterations"
956
- fi
957
-
958
- # Check for active Ralph Loop
959
- RALPH_PROGRESS_PATH="\$DINO_DIR/ralph-progress.md"
960
- RALPH_STATUS=""
961
- if [ -f "\$RALPH_PROGRESS_PATH" ]; then
962
- RALPH_ITERATION=\$(grep -oE '\\*\\*Iteration:\\*\\*[[:space:]]*[0-9]+/[0-9]+' "\$RALPH_PROGRESS_PATH" | grep -oE '[0-9]+/[0-9]+' || echo "")
963
- if [ -n "\$RALPH_ITERATION" ]; then
964
- RALPH_STATUS="Ralph Loop active: iteration \$RALPH_ITERATION"
965
- fi
966
- fi
967
-
968
- # Fallback: Original v9.16.0 ambiguity detection for simpler cases
969
- if [ -z "\$SPEC_HINT" ]; then
970
- if echo "\$USER_PROMPT" | grep -qiE "\\b(maybe|might|could|possibly|perhaps|some|several)\\b"; then
971
- SPEC_HINT="Vague terms detected - try /dino.sniff to clarify"
972
- elif echo "\$USER_PROMPT" | grep -qiE "\\b(handle|process|deal with)[[:space:]]+(it|them|this|that)\\b"; then
973
- SPEC_HINT="Missing specifics - try /dino.sniff to clarify requirements"
974
- elif echo "\$USER_PROMPT" | grep -qiE "\\b(make[[:space:]]+it|do[[:space:]]+it)[[:space:]]+(work|better|right)\\b"; then
975
- SPEC_HINT="Unclear acceptance criteria - try /dino.sniff before implementation"
976
- fi
977
- fi
978
-
979
- # v11.6.0: Ralph status first (highest priority if active loop)
980
- if [ -n "\$RALPH_STATUS" ]; then
981
- echo "[dino] \$RALPH_STATUS"
982
- fi
983
-
984
- # v11.6.0: Ralph suggestion before spec suggestion
985
- if [ -z "\$RALPH_STATUS" ] && [ -n "\$RALPH_HINT" ]; then
986
- echo "[dino] \$RALPH_HINT"
987
- fi
988
-
989
- if [ -n "\$SPEC_HINT" ]; then
990
- echo "[dino] \$SPEC_HINT"
991
- fi
535
+ return `#!/bin/bash
536
+ # dino user-prompt-submit hook v${VERSION}
537
+ # Note: No 'set -e' - grep returns non-zero when no match found (expected)
538
+
539
+ # Get prompt from environment
540
+ USER_PROMPT="\${USER_PROMPT:-}"
541
+ if [ -z "$USER_PROMPT" ]; then exit 0; fi
542
+
543
+ # v6.0.0: Get conversation ID for session tracking
544
+ CONVERSATION_ID="\${CLAUDE_CONVERSATION_ID:-}"
545
+
546
+ # Find .dino directory
547
+ ${paths.getDinoDir(platform)}
548
+ ${paths.checkDinoDirExists(platform)}
549
+
550
+ # v6.0.0: Track conversation ID if available
551
+ if [ -n "$CONVERSATION_ID" ]; then
552
+ echo -n "$CONVERSATION_ID" > "$DINO_DIR/conversation-id" 2>/dev/null || true
553
+ fi
554
+
555
+ ${paths.getSessionPath(platform)}
556
+ PROMPT_LOWER=$(echo "$USER_PROMPT" | tr '[:upper:]' '[:lower:]')
557
+ SUGGESTIONS=""
558
+ ${generateAlertInit(platform)}
559
+ CONTEXT_INJECTIONS=""
560
+
561
+ # Intent detection: suggest relevant MCP resources
562
+
563
+ # Structure/architecture queries
564
+ if echo "$PROMPT_LOWER" | grep -qE "where|structure|architect|layout|folder|director"; then
565
+ SUGGESTIONS="@dino://structure"
566
+ fi
567
+
568
+ # Command/run queries
569
+ if echo "$PROMPT_LOWER" | grep -qE "how.*(build|test|run|start|lint)|command|script"; then
570
+ if [ -n "$SUGGESTIONS" ]; then
571
+ SUGGESTIONS="$SUGGESTIONS; "
572
+ fi
573
+ SUGGESTIONS="\${SUGGESTIONS}@dino://commands"
574
+ fi
575
+
576
+ # Resume/continue queries
577
+ if echo "$PROMPT_LOWER" | grep -qE "continue|resume|what.*(doing|left|next)|status"; then
578
+ if [ -n "$SUGGESTIONS" ]; then
579
+ SUGGESTIONS="$SUGGESTIONS; "
580
+ fi
581
+ SUGGESTIONS="\${SUGGESTIONS}@dino://session"
582
+ fi
583
+
584
+ # v11.3.0: Roadmap queries - auto-load and suggest skill
585
+ if echo "$PROMPT_LOWER" | grep -qE "roadmap|next.?phase|phase.?(progress|status)"; then
586
+ ROADMAPS_DIR="$DINO_DIR/roadmaps"
587
+ if [ -d "$ROADMAPS_DIR" ]; then
588
+ ROADMAP_FILES=$(ls "$ROADMAPS_DIR"/*.md 2>/dev/null | xargs -I{} basename {} .md | tr '\\n' ', ' | sed 's/, $//')
589
+ if [ -n "$ROADMAP_FILES" ]; then
590
+ if [ -n "$CONTEXT_INJECTIONS" ]; then
591
+ CONTEXT_INJECTIONS="$CONTEXT_INJECTIONS; "
592
+ fi
593
+ CONTEXT_INJECTIONS="\${CONTEXT_INJECTIONS}Active roadmaps: $ROADMAP_FILES"
594
+ SKILL_SUGGESTION="Try /dino.roadmap to check progress and continue"
595
+ fi
596
+ fi
597
+ fi
598
+
599
+ # Pattern/convention queries
600
+ if echo "$PROMPT_LOWER" | grep -qE "pattern|convention|style|how.*(usually|normally)|best.practice"; then
601
+ if [ -n "$SUGGESTIONS" ]; then
602
+ SUGGESTIONS="$SUGGESTIONS; "
603
+ fi
604
+ SUGGESTIONS="\${SUGGESTIONS}@dino://patterns"
605
+ fi
606
+
607
+ # v6.4.0: Memory/decision queries
608
+ # v13.3.0: Enhanced with auto-execute memory recall on intent keywords with feature flag
609
+ MEMORY_QUERY=""
610
+ for kw in decided decision choice why previous before remember; do
611
+ if echo "$PROMPT_LOWER" | grep -qE "\\b$kw\\b"; then
612
+ MEMORY_QUERY="$kw"
613
+ break
614
+ fi
615
+ done
616
+
617
+ if [ -n "$MEMORY_QUERY" ]; then
618
+ # Check if autoMemoryRecall feature is enabled
619
+ CONFIG_PATH="$DINO_DIR/config.json"
620
+ AUTO_RECALL_ENABLED="true"
621
+ if [ -f "$CONFIG_PATH" ]; then
622
+ # Check if autoMemoryRecall is explicitly set to false
623
+ if grep -q '"autoMemoryRecall"[[:space:]]*:[[:space:]]*false' "$CONFIG_PATH" 2>/dev/null; then
624
+ AUTO_RECALL_ENABLED="false"
625
+ fi
626
+ fi
627
+
628
+ if [ "$AUTO_RECALL_ENABLED" = "true" ]; then
629
+ # v13.3.0: Execute memory recall and inject results (with minRelevance for confidence)
630
+ RECALL_RESULT=$(bun dino mcp call dino_memory_recall --query "$MEMORY_QUERY" --limit 3 --minRelevance 0.3 2>/dev/null | head -3)
631
+ if [ -n "$RECALL_RESULT" ]; then
632
+ # Summarize results (first 200 chars)
633
+ SUMMARY=$(echo "$RECALL_RESULT" | tr '\\n' '; ' | cut -c1-200)
634
+ if [ -n "$SUMMARY" ]; then
635
+ if [ -n "$CONTEXT_INJECTIONS" ]; then
636
+ CONTEXT_INJECTIONS="$CONTEXT_INJECTIONS; "
637
+ fi
638
+ CONTEXT_INJECTIONS="\${CONTEXT_INJECTIONS}Recalled: $SUMMARY"
639
+ fi
640
+ fi
641
+ fi
642
+ # Always suggest the resource for manual access
643
+ if [ -n "$SUGGESTIONS" ]; then
644
+ SUGGESTIONS="$SUGGESTIONS; "
645
+ fi
646
+ SUGGESTIONS="\${SUGGESTIONS}@dino://memories/summary"
647
+ fi
648
+
649
+ # v13.5.0: Auto-context injection based on prompt demand signals
650
+ AUTO_INJECT_ENABLED="true"
651
+ CONFIG_PATH="$DINO_DIR/config.json"
652
+ if [ -f "$CONFIG_PATH" ]; then
653
+ if grep -q '"autoContextInjection"[[:space:]]*:[[:space:]]*false' "$CONFIG_PATH" 2>/dev/null; then
654
+ AUTO_INJECT_ENABLED="false"
655
+ fi
656
+ fi
657
+
658
+ if [ "$AUTO_INJECT_ENABLED" = "true" ]; then
659
+ # Check for demand signals in prompt
660
+ HAS_DEMAND="false"
661
+ if echo "$PROMPT_LOWER" | grep -qE "(what|why|how).*(decide|chose|previous|before|earlier|did we)"; then
662
+ HAS_DEMAND="true"
663
+ fi
664
+ if echo "$PROMPT_LOWER" | grep -qE "(usually|normally|pattern|convention|prefer)"; then
665
+ HAS_DEMAND="true"
666
+ fi
667
+ if echo "$PROMPT_LOWER" | grep -qE "(fail|broke|error|issue).*(earlier|before|last time)"; then
668
+ HAS_DEMAND="true"
669
+ fi
670
+
671
+ if [ "$HAS_DEMAND" = "true" ]; then
672
+ # Get current budget percentage (approximate)
673
+ BUDGET_PERCENT=50
674
+ if [ -f "$SESSION_PATH" ]; then
675
+ BUDGET_MATCH=$(grep -oE "Budget.*[0-9]+%" "$SESSION_PATH" 2>/dev/null | grep -oE "[0-9]+" | head -1)
676
+ if [ -n "$BUDGET_MATCH" ]; then
677
+ BUDGET_PERCENT="$BUDGET_MATCH"
678
+ fi
679
+ fi
680
+
681
+ # Only inject if budget has headroom
682
+ if [ "$BUDGET_PERCENT" -lt 90 ]; then
683
+ INJECT_RESULT=$(bun dino mcp call dino_auto_inject --prompt "$USER_PROMPT" --budgetPercentage "$BUDGET_PERCENT" 2>/dev/null)
684
+ if echo "$INJECT_RESULT" | grep -q "executed.*true"; then
685
+ TOKENS_MATCH=$(echo "$INJECT_RESULT" | grep -oE "~[0-9]+ tokens" | grep -oE "[0-9]+")
686
+ if [ -n "$TOKENS_MATCH" ]; then
687
+ if [ -n "$CONTEXT_INJECTIONS" ]; then
688
+ CONTEXT_INJECTIONS="$CONTEXT_INJECTIONS; "
689
+ fi
690
+ CONTEXT_INJECTIONS="\${CONTEXT_INJECTIONS}Auto-injected ~$TOKENS_MATCH tokens of relevant context"
691
+ fi
692
+ fi
693
+ fi
694
+ fi
695
+ fi
696
+
697
+ # Only check session state if we have alerts to give
698
+ if [ -f "$SESSION_PATH" ]; then
699
+ CONTENT=$(cat "$SESSION_PATH")
700
+
701
+ # Check for critical issues when debugging
702
+ if echo "$PROMPT_LOWER" | grep -qE "fix|bug|error|issue|debug"; then
703
+ if echo "$CONTENT" | grep -q "## Test Status" && echo "$CONTENT" | grep -qi "Status:\\*\\* failing"; then
704
+ ALERTS="Tests are failing"
705
+ fi
706
+ if echo "$CONTENT" | grep -q "## Build Status" && echo "$CONTENT" | grep -qi "Status:\\*\\* failing"; then
707
+ if [ -n "$ALERTS" ]; then
708
+ ALERTS="$ALERTS, "
709
+ fi
710
+ ALERTS="\${ALERTS}Build is failing"
711
+ fi
712
+ fi
713
+
714
+ # Check for blockers on task-related prompts
715
+ if echo "$PROMPT_LOWER" | grep -qE "implement|add|create|build|fix|change|update"; then
716
+ if echo "$CONTENT" | grep -q "## Blockers"; then
717
+ BLOCKER_COUNT=$(echo "$CONTENT" | sed -n '/## Blockers/,/## /p' | grep -c "^- " 2>/dev/null || echo "0")
718
+ if [ "$BLOCKER_COUNT" -gt 0 ]; then
719
+ if [ -n "$ALERTS" ]; then
720
+ ALERTS="$ALERTS, "
721
+ fi
722
+ ALERTS="\${ALERTS}$BLOCKER_COUNT active blocker(s)"
723
+ fi
724
+ fi
725
+ fi
726
+
727
+ # Suggest plan mode for complex tasks
728
+ if echo "$PROMPT_LOWER" | grep -qE "implement|design|architect|refactor|overhaul"; then
729
+ if ! echo "$PROMPT_LOWER" | grep -qE "simple|quick|small|minor"; then
730
+ if [ -n "$SUGGESTIONS" ]; then
731
+ SUGGESTIONS="$SUGGESTIONS; "
732
+ fi
733
+ SUGGESTIONS="\${SUGGESTIONS}Consider plan mode for complex tasks"
734
+ fi
735
+ fi
736
+ fi
737
+
738
+ # v5.1.0: Context-aware skill recommendations
739
+ SKILL_SUGGESTION=""
740
+
741
+ if [ -f "$SESSION_PATH" ]; then
742
+ CONTENT=$(cat "$SESSION_PATH")
743
+
744
+ # High priority: failing tests or build
745
+ if echo "$CONTENT" | grep -q "## Test Status" && echo "$CONTENT" | grep -qi "Status:\\*\\* failing"; then
746
+ SKILL_SUGGESTION="Try /dino.aging to verify, or /dino.hunt to fix tests"
747
+ elif echo "$CONTENT" | grep -q "## Build Status" && echo "$CONTENT" | grep -qi "Status:\\*\\* failing"; then
748
+ SKILL_SUGGESTION="Try /dino.hunt to fix build errors"
749
+ # Medium priority: blockers
750
+ elif echo "$CONTENT" | grep -q "## Blockers" && ! echo "$CONTENT" | sed -n '/## Blockers/,/## /p' | head -2 | tail -1 | grep -q "^_"; then
751
+ SKILL_SUGGESTION="Try /dino.sniff to clarify blockers"
752
+ # Based on prompt intent
753
+ elif echo "$PROMPT_LOWER" | grep -qE "understand|learn|explore|what.*(is|does)"; then
754
+ SKILL_SUGGESTION="Try /dino.discover or /dino.scout"
755
+ elif echo "$PROMPT_LOWER" | grep -qE "plan|design|architect"; then
756
+ SKILL_SUGGESTION="Try /dino.nest to plan approach"
757
+ elif echo "$PROMPT_LOWER" | grep -qE "implement|build|create|add|fix"; then
758
+ SKILL_SUGGESTION="Try /dino.hunt to execute tasks"
759
+ elif echo "$PROMPT_LOWER" | grep -qE "test|verify|check"; then
760
+ SKILL_SUGGESTION="Try /dino.aging to verify implementation"
761
+ elif echo "$PROMPT_LOWER" | grep -qE "finish|complete|done|wrap"; then
762
+ SKILL_SUGGESTION="Try /dino.fossil to archive work"
763
+ fi
764
+ fi
765
+
766
+ # Auto-delegation detection for complex multi-step tasks
767
+ DELEGATION_SUGGESTION=""
768
+ TASKS_DIR="$DINO_DIR/tasks"
769
+
770
+ if [ -d "$TASKS_DIR" ]; then
771
+ DETECTED_ROLES=""
772
+
773
+ # Detect roles from prompt
774
+ if echo "$PROMPT_LOWER" | grep -qE "explore|investigate|understand|research|analyze"; then
775
+ DETECTED_ROLES="$DETECTED_ROLES explorer"
776
+ fi
777
+ if echo "$PROMPT_LOWER" | grep -qE "design|architect|plan|structure"; then
778
+ DETECTED_ROLES="$DETECTED_ROLES planner"
779
+ fi
780
+ if echo "$PROMPT_LOWER" | grep -qE "implement|build|create|add|develop"; then
781
+ DETECTED_ROLES="$DETECTED_ROLES implementer"
782
+ fi
783
+ if echo "$PROMPT_LOWER" | grep -qE "test|verify|validate|check"; then
784
+ DETECTED_ROLES="$DETECTED_ROLES tester"
785
+ fi
786
+ if echo "$PROMPT_LOWER" | grep -qE "review|audit|inspect"; then
787
+ DETECTED_ROLES="$DETECTED_ROLES reviewer"
788
+ fi
789
+
790
+ # Count unique roles
791
+ ROLE_COUNT=$(echo "$DETECTED_ROLES" | tr ' ' '\\n' | grep -v '^$' | sort -u | wc -l)
792
+
793
+ if [ "$ROLE_COUNT" -gt 1 ]; then
794
+ ROLE_LIST=$(echo "$DETECTED_ROLES" | tr ' ' '\\n' | grep -v '^$' | sort -u | tr '\\n' ' -> ' | sed 's/ -> $//')
795
+ DELEGATION_SUGGESTION="Multi-step task detected. Suggested delegation: $ROLE_LIST"
796
+ elif [ "$ROLE_COUNT" -eq 1 ]; then
797
+ # Count words for substantial requests
798
+ WORD_COUNT=$(echo "$USER_PROMPT" | wc -w)
799
+ if [ "$WORD_COUNT" -gt 10 ]; then
800
+ ROLE=$(echo "$DETECTED_ROLES" | tr ' ' '\\n' | grep -v '^$' | head -1)
801
+ case "$ROLE" in
802
+ explorer) AGENT="@dino-analyst" ;;
803
+ planner) AGENT="@dino-architect" ;;
804
+ implementer) AGENT="@dino-implementer" ;;
805
+ tester) AGENT="@dino-tester" ;;
806
+ reviewer) AGENT="@dino-reviewer" ;;
807
+ esac
808
+ if [ -n "$AGENT" ]; then
809
+ DELEGATION_SUGGESTION="Consider delegating to $AGENT"
810
+ fi
811
+ fi
812
+ fi
813
+ fi
814
+
815
+ # v6.0.0: Smart context injection based on session state
816
+ if [ -f "$SESSION_PATH" ]; then
817
+ CONTENT=$(cat "$SESSION_PATH")
818
+
819
+ # Pattern: fix/debug + tests failing -> inject test details
820
+ if echo "$PROMPT_LOWER" | grep -qE "fix|debug|error|failing"; then
821
+ if echo "$CONTENT" | grep -q "## Test Status" && echo "$CONTENT" | grep -qi "Status:\\*\\* failing"; then
822
+ if [ -n "$CONTEXT_INJECTIONS" ]; then
823
+ CONTEXT_INJECTIONS="$CONTEXT_INJECTIONS; "
824
+ fi
825
+ CONTEXT_INJECTIONS="\${CONTEXT_INJECTIONS}Failing tests detected - see @dino://session for details"
826
+ fi
827
+ if echo "$CONTENT" | grep -q "## Build Status" && echo "$CONTENT" | grep -qi "Status:\\*\\* failing"; then
828
+ if [ -n "$CONTEXT_INJECTIONS" ]; then
829
+ CONTEXT_INJECTIONS="$CONTEXT_INJECTIONS; "
830
+ fi
831
+ CONTEXT_INJECTIONS="\${CONTEXT_INJECTIONS}Build errors present - see @dino://session for details"
832
+ fi
833
+ fi
834
+
835
+ # Pattern: architecture/design -> inject structure
836
+ if echo "$PROMPT_LOWER" | grep -qE "architect|design|refactor|structure|layout"; then
837
+ if [ -n "$CONTEXT_INJECTIONS" ]; then
838
+ CONTEXT_INJECTIONS="$CONTEXT_INJECTIONS; "
839
+ fi
840
+ CONTEXT_INJECTIONS="\${CONTEXT_INJECTIONS}@dino://structure for project architecture"
841
+ fi
842
+
843
+ # Pattern: focus area keywords -> inject focus context
844
+ FOCUS_AREA=$(echo "$CONTENT" | sed -n '/^## Focus/,/^##/p' | head -2 | tail -1 | grep -v "^_" | head -1)
845
+ if [ -n "$FOCUS_AREA" ]; then
846
+ FOCUS_LOWER=$(echo "$FOCUS_AREA" | tr '[:upper:]' '[:lower:]' | cut -d'/' -f1)
847
+ if echo "$PROMPT_LOWER" | grep -q "$FOCUS_LOWER"; then
848
+ if [ -n "$CONTEXT_INJECTIONS" ]; then
849
+ CONTEXT_INJECTIONS="$CONTEXT_INJECTIONS; "
850
+ fi
851
+ CONTEXT_INJECTIONS="\${CONTEXT_INJECTIONS}Working in focus area: $FOCUS_AREA"
852
+ fi
853
+ fi
854
+ fi
855
+
856
+ # Note: Memory/failure lookups removed in v9.2.1 for performance
857
+ # Use @dino://memories/summary MCP resource for memory context
858
+
859
+ # v6.0.0: Output context injections first, then delegation, then skill, then tips, then alerts
860
+ if [ -n "$CONTEXT_INJECTIONS" ]; then
861
+ echo "[dino] Context: $CONTEXT_INJECTIONS"
862
+ fi
863
+
864
+ if [ -n "$DELEGATION_SUGGESTION" ]; then
865
+ echo "[dino] $DELEGATION_SUGGESTION"
866
+ fi
867
+
868
+ # Skill recommendations (only if no delegation suggestion)
869
+ if [ -z "$DELEGATION_SUGGESTION" ] && [ -n "$SKILL_SUGGESTION" ]; then
870
+ echo "[dino] $SKILL_SUGGESTION"
871
+ fi
872
+
873
+ if [ -n "$SUGGESTIONS" ]; then
874
+ echo "[dino] Tip: $SUGGESTIONS"
875
+ fi
876
+
877
+ if [ -n "$ALERTS" ]; then
878
+ echo "[dino] Note: $ALERTS"
879
+ fi
880
+
881
+ # v10.5.0: Enhanced complexity/ambiguity detection with /dino.spec suggestion
882
+ SPEC_HINT=""
883
+ COMPLEXITY_SIGNALS=0
884
+
885
+ # Implementation requests that need analysis
886
+ if echo "$PROMPT_LOWER" | grep -qE "\\b(implement|add|create|build|develop|make)\\b"; then
887
+ # Check for vague verbs (high ambiguity)
888
+ if echo "$USER_PROMPT" | grep -qiE "\\b(improve|enhance|fix|optimize|refactor|clean)\\b"; then
889
+ COMPLEXITY_SIGNALS=$((COMPLEXITY_SIGNALS + 2))
890
+ fi
891
+
892
+ # Check for multi-part requests
893
+ if echo "$USER_PROMPT" | grep -qiE "\\b(and also|as well as|plus|then|additionally)\\b"; then
894
+ COMPLEXITY_SIGNALS=$((COMPLEXITY_SIGNALS + 2))
895
+ fi
896
+ if echo "$USER_PROMPT" | grep -qE "^[[:space:]]*[0-9]+[.)[:space:]]"; then
897
+ COMPLEXITY_SIGNALS=$((COMPLEXITY_SIGNALS + 2))
898
+ fi
899
+
900
+ # Check for security/data terms (high risk)
901
+ if echo "$PROMPT_LOWER" | grep -qE "\\b(auth|password|token|encrypt|security|credential)\\b"; then
902
+ COMPLEXITY_SIGNALS=$((COMPLEXITY_SIGNALS + 2))
903
+ fi
904
+ if echo "$PROMPT_LOWER" | grep -qE "\\b(database|migration|schema|delete|drop)\\b"; then
905
+ COMPLEXITY_SIGNALS=$((COMPLEXITY_SIGNALS + 2))
906
+ fi
907
+
908
+ # Check for vague pronouns (missing specifics)
909
+ if echo "$USER_PROMPT" | grep -qiE "\\b(some|something|somehow|somewhere|certain|various)\\b"; then
910
+ COMPLEXITY_SIGNALS=$((COMPLEXITY_SIGNALS + 1))
911
+ fi
912
+
913
+ # Check for exploratory language
914
+ if echo "$PROMPT_LOWER" | grep -qE "\\b(some kind of|maybe|could|might want|sort of|like a)\\b"; then
915
+ COMPLEXITY_SIGNALS=$((COMPLEXITY_SIGNALS + 2))
916
+ fi
917
+
918
+ # Suggest /dino.spec for complex prompts (threshold: 3+ signals)
919
+ if [ "$COMPLEXITY_SIGNALS" -ge 3 ]; then
920
+ SPEC_HINT="Complex request detected - try /dino.spec for thorough analysis"
921
+ elif [ "$COMPLEXITY_SIGNALS" -ge 2 ]; then
922
+ SPEC_HINT="Ambiguous request - try /dino.spec to clarify before implementing"
923
+ fi
924
+ fi
925
+
926
+ # v11.6.0: Ralph Loop eligibility detection
927
+ RALPH_SIGNALS=0
928
+ RALPH_HINT=""
929
+
930
+ # Multi-part with 3+ numbered items
931
+ NUMBERED_ITEMS=$(echo "$USER_PROMPT" | grep -cE '^[[:space:]]*[0-9]+[.)[:space:]]' || echo "0")
932
+ if [ "$NUMBERED_ITEMS" -ge 3 ]; then
933
+ RALPH_SIGNALS=$((RALPH_SIGNALS + 3))
934
+ fi
935
+
936
+ # System-wide scope keywords
937
+ if echo "$PROMPT_LOWER" | grep -qE "\\b(entire|throughout|codebase|system.?wide|project.?wide)\\b"; then
938
+ RALPH_SIGNALS=$((RALPH_SIGNALS + 2))
939
+ fi
940
+
941
+ # Breaking/large change terms
942
+ if echo "$PROMPT_LOWER" | grep -qE "\\b(migrate|overhaul|restructure|rewrite|breaking)\\b"; then
943
+ RALPH_SIGNALS=$((RALPH_SIGNALS + 2))
944
+ fi
945
+
946
+ # Many files mentioned (10+)
947
+ if echo "$PROMPT_LOWER" | grep -qE "\\b[0-9]{2,}[[:space:]]*(files?|components?|modules?)"; then
948
+ RALPH_SIGNALS=$((RALPH_SIGNALS + 2))
949
+ fi
950
+
951
+ # Suggest ralph for qualifying tasks
952
+ if [ "$COMPLEXITY_SIGNALS" -ge 3 ] && [ "$RALPH_SIGNALS" -ge 2 ]; then
953
+ RALPH_HINT="Large-scale task - try /dino.ralph for iterative execution"
954
+ elif [ "$RALPH_SIGNALS" -ge 4 ]; then
955
+ RALPH_HINT="Multi-story task - try /dino.ralph for fresh-context iterations"
956
+ fi
957
+
958
+ # Check for active Ralph Loop
959
+ RALPH_PROGRESS_PATH="$DINO_DIR/ralph-progress.md"
960
+ RALPH_STATUS=""
961
+ if [ -f "$RALPH_PROGRESS_PATH" ]; then
962
+ RALPH_ITERATION=$(grep -oE '\\*\\*Iteration:\\*\\*[[:space:]]*[0-9]+/[0-9]+' "$RALPH_PROGRESS_PATH" | grep -oE '[0-9]+/[0-9]+' || echo "")
963
+ if [ -n "$RALPH_ITERATION" ]; then
964
+ RALPH_STATUS="Ralph Loop active: iteration $RALPH_ITERATION"
965
+ fi
966
+ fi
967
+
968
+ # Fallback: Original v9.16.0 ambiguity detection for simpler cases
969
+ if [ -z "$SPEC_HINT" ]; then
970
+ if echo "$USER_PROMPT" | grep -qiE "\\b(maybe|might|could|possibly|perhaps|some|several)\\b"; then
971
+ SPEC_HINT="Vague terms detected - try /dino.sniff to clarify"
972
+ elif echo "$USER_PROMPT" | grep -qiE "\\b(handle|process|deal with)[[:space:]]+(it|them|this|that)\\b"; then
973
+ SPEC_HINT="Missing specifics - try /dino.sniff to clarify requirements"
974
+ elif echo "$USER_PROMPT" | grep -qiE "\\b(make[[:space:]]+it|do[[:space:]]+it)[[:space:]]+(work|better|right)\\b"; then
975
+ SPEC_HINT="Unclear acceptance criteria - try /dino.sniff before implementation"
976
+ fi
977
+ fi
978
+
979
+ # v11.6.0: Ralph status first (highest priority if active loop)
980
+ if [ -n "$RALPH_STATUS" ]; then
981
+ echo "[dino] $RALPH_STATUS"
982
+ fi
983
+
984
+ # v11.6.0: Ralph suggestion before spec suggestion
985
+ if [ -z "$RALPH_STATUS" ] && [ -n "$RALPH_HINT" ]; then
986
+ echo "[dino] $RALPH_HINT"
987
+ fi
988
+
989
+ if [ -n "$SPEC_HINT" ]; then
990
+ echo "[dino] $SPEC_HINT"
991
+ fi
992
992
  `;
993
993
  }
994
994
  //# sourceMappingURL=user-prompt-submit.js.map