dino-spec 13.6.1 → 14.0.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 (1277) hide show
  1. package/README.md +63 -3
  2. package/dist/agents/context-distributor.d.ts +1 -1
  3. package/dist/agents/context-distributor.d.ts.map +1 -1
  4. package/dist/agents/context-distributor.js +16 -15
  5. package/dist/agents/context-distributor.js.map +1 -1
  6. package/dist/agents/index.d.ts +1 -1
  7. package/dist/agents/index.d.ts.map +1 -1
  8. package/dist/agents/index.js +378 -370
  9. package/dist/agents/index.js.map +1 -1
  10. package/dist/cli/index.js +14 -14
  11. package/dist/cli/index.js.map +1 -1
  12. package/dist/cli/tui/index.d.ts +1 -1
  13. package/dist/cli/tui/index.d.ts.map +1 -1
  14. package/dist/cli/tui/index.js.map +1 -1
  15. package/dist/cli/tui/setup-wizard.d.ts.map +1 -1
  16. package/dist/cli/tui/setup-wizard.js +27 -24
  17. package/dist/cli/tui/setup-wizard.js.map +1 -1
  18. package/dist/commands/compact.d.ts.map +1 -1
  19. package/dist/commands/compact.js +2 -2
  20. package/dist/commands/compact.js.map +1 -1
  21. package/dist/commands/hooks/index.d.ts +3 -3
  22. package/dist/commands/hooks/index.d.ts.map +1 -1
  23. package/dist/commands/hooks/index.js +6 -6
  24. package/dist/commands/hooks/index.js.map +1 -1
  25. package/dist/commands/hooks/registry.d.ts +1 -1
  26. package/dist/commands/hooks/registry.d.ts.map +1 -1
  27. package/dist/commands/hooks/registry.js +6 -6
  28. package/dist/commands/hooks/registry.js.map +1 -1
  29. package/dist/commands/hooks/types.d.ts.map +1 -1
  30. package/dist/commands/hooks/utils.d.ts +1 -1
  31. package/dist/commands/hooks/utils.d.ts.map +1 -1
  32. package/dist/commands/hooks/utils.js +2 -2
  33. package/dist/commands/hooks/utils.js.map +1 -1
  34. package/dist/commands/hud.d.ts +1 -8
  35. package/dist/commands/hud.d.ts.map +1 -1
  36. package/dist/commands/hud.js +25 -42
  37. package/dist/commands/hud.js.map +1 -1
  38. package/dist/commands/init.d.ts.map +1 -1
  39. package/dist/commands/init.js +21 -20
  40. package/dist/commands/init.js.map +1 -1
  41. package/dist/commands/mcp-serve.js.map +1 -1
  42. package/dist/commands/mcp.d.ts.map +1 -1
  43. package/dist/commands/mcp.js +10 -4
  44. package/dist/commands/mcp.js.map +1 -1
  45. package/dist/commands/memory/consolidate.d.ts.map +1 -1
  46. package/dist/commands/memory/consolidate.js +1 -1
  47. package/dist/commands/memory/consolidate.js.map +1 -1
  48. package/dist/commands/memory/decay.d.ts.map +1 -1
  49. package/dist/commands/memory/decay.js +1 -1
  50. package/dist/commands/memory/decay.js.map +1 -1
  51. package/dist/commands/memory/index.d.ts +8 -8
  52. package/dist/commands/memory/index.d.ts.map +1 -1
  53. package/dist/commands/memory/index.js +4 -4
  54. package/dist/commands/memory/index.js.map +1 -1
  55. package/dist/commands/memory/list.d.ts.map +1 -1
  56. package/dist/commands/memory/list.js +5 -5
  57. package/dist/commands/memory/list.js.map +1 -1
  58. package/dist/commands/memory/prune.d.ts.map +1 -1
  59. package/dist/commands/memory/prune.js +1 -1
  60. package/dist/commands/memory/prune.js.map +1 -1
  61. package/dist/commands/memory/recall.d.ts.map +1 -1
  62. package/dist/commands/memory/recall.js +2 -2
  63. package/dist/commands/memory/recall.js.map +1 -1
  64. package/dist/commands/memory/reflect.d.ts.map +1 -1
  65. package/dist/commands/memory/reflect.js +5 -5
  66. package/dist/commands/memory/reflect.js.map +1 -1
  67. package/dist/commands/memory/search.d.ts.map +1 -1
  68. package/dist/commands/memory/search.js +16 -16
  69. package/dist/commands/memory/search.js.map +1 -1
  70. package/dist/commands/memory/stats.d.ts.map +1 -1
  71. package/dist/commands/memory/stats.js +15 -10
  72. package/dist/commands/memory/stats.js.map +1 -1
  73. package/dist/commands/provider.d.ts.map +1 -1
  74. package/dist/commands/provider.js +3 -3
  75. package/dist/commands/provider.js.map +1 -1
  76. package/dist/commands/refresh.d.ts.map +1 -1
  77. package/dist/commands/refresh.js +4 -6
  78. package/dist/commands/refresh.js.map +1 -1
  79. package/dist/commands/session-sync.d.ts.map +1 -1
  80. package/dist/commands/session-sync.js +2 -2
  81. package/dist/commands/session-sync.js.map +1 -1
  82. package/dist/commands/session.d.ts.map +1 -1
  83. package/dist/commands/session.js +9 -9
  84. package/dist/commands/session.js.map +1 -1
  85. package/dist/commands/setup.d.ts.map +1 -1
  86. package/dist/commands/setup.js +7 -5
  87. package/dist/commands/setup.js.map +1 -1
  88. package/dist/commands/status.d.ts.map +1 -1
  89. package/dist/commands/status.js +19 -13
  90. package/dist/commands/status.js.map +1 -1
  91. package/dist/commands/store/index.d.ts +4 -4
  92. package/dist/commands/store/index.d.ts.map +1 -1
  93. package/dist/commands/store/index.js +2 -2
  94. package/dist/commands/store/index.js.map +1 -1
  95. package/dist/commands/store/install.d.ts.map +1 -1
  96. package/dist/commands/store/install.js +1 -1
  97. package/dist/commands/store/install.js.map +1 -1
  98. package/dist/commands/store/list.d.ts.map +1 -1
  99. package/dist/commands/store/list.js +5 -5
  100. package/dist/commands/store/list.js.map +1 -1
  101. package/dist/commands/store/remove.d.ts.map +1 -1
  102. package/dist/commands/store/remove.js.map +1 -1
  103. package/dist/commands/store/search.d.ts.map +1 -1
  104. package/dist/commands/store/search.js +4 -6
  105. package/dist/commands/store/search.js.map +1 -1
  106. package/dist/commands/store/sync.js.map +1 -1
  107. package/dist/commands/update.d.ts +1 -1
  108. package/dist/commands/update.d.ts.map +1 -1
  109. package/dist/commands/update.js +5 -8
  110. package/dist/commands/update.js.map +1 -1
  111. package/dist/core/agents/__tests__/action-mask.test.js +12 -8
  112. package/dist/core/agents/__tests__/action-mask.test.js.map +1 -1
  113. package/dist/core/agents/__tests__/budgets.test.js +17 -7
  114. package/dist/core/agents/__tests__/budgets.test.js.map +1 -1
  115. package/dist/core/agents/__tests__/communication.test.js +3 -3
  116. package/dist/core/agents/__tests__/communication.test.js.map +1 -1
  117. package/dist/core/agents/__tests__/orchestrator.test.js +36 -23
  118. package/dist/core/agents/__tests__/orchestrator.test.js.map +1 -1
  119. package/dist/core/agents/action-mask.d.ts +2 -2
  120. package/dist/core/agents/action-mask.d.ts.map +1 -1
  121. package/dist/core/agents/action-mask.js.map +1 -1
  122. package/dist/core/agents/blackboard.d.ts.map +1 -1
  123. package/dist/core/agents/blackboard.js +2 -2
  124. package/dist/core/agents/blackboard.js.map +1 -1
  125. package/dist/core/agents/budgets.d.ts +1 -1
  126. package/dist/core/agents/budgets.d.ts.map +1 -1
  127. package/dist/core/agents/budgets.js +3 -2
  128. package/dist/core/agents/budgets.js.map +1 -1
  129. package/dist/core/agents/circuit-breaker.d.ts.map +1 -1
  130. package/dist/core/agents/circuit-breaker.js.map +1 -1
  131. package/dist/core/agents/circuit-registry.d.ts +1 -1
  132. package/dist/core/agents/circuit-registry.d.ts.map +1 -1
  133. package/dist/core/agents/circuit-registry.js.map +1 -1
  134. package/dist/core/agents/context-isolation.d.ts.map +1 -1
  135. package/dist/core/agents/context-isolation.js +39 -43
  136. package/dist/core/agents/context-isolation.js.map +1 -1
  137. package/dist/core/agents/index.d.ts +11 -11
  138. package/dist/core/agents/index.d.ts.map +1 -1
  139. package/dist/core/agents/index.js +37 -37
  140. package/dist/core/agents/index.js.map +1 -1
  141. package/dist/core/agents/initializer.d.ts.map +1 -1
  142. package/dist/core/agents/initializer.js +12 -12
  143. package/dist/core/agents/initializer.js.map +1 -1
  144. package/dist/core/agents/message-protocol.d.ts.map +1 -1
  145. package/dist/core/agents/message-protocol.js.map +1 -1
  146. package/dist/core/agents/orchestrator.d.ts +3 -3
  147. package/dist/core/agents/orchestrator.d.ts.map +1 -1
  148. package/dist/core/agents/orchestrator.js +7 -10
  149. package/dist/core/agents/orchestrator.js.map +1 -1
  150. package/dist/core/agents/programmatic/context-delegate.d.ts.map +1 -1
  151. package/dist/core/agents/programmatic/context-delegate.js +10 -10
  152. package/dist/core/agents/programmatic/context-delegate.js.map +1 -1
  153. package/dist/core/agents/programmatic/index.d.ts +3 -3
  154. package/dist/core/agents/programmatic/index.d.ts.map +1 -1
  155. package/dist/core/agents/programmatic/index.js +4 -4
  156. package/dist/core/agents/programmatic/index.js.map +1 -1
  157. package/dist/core/agents/programmatic/result-collector.d.ts +2 -2
  158. package/dist/core/agents/programmatic/result-collector.d.ts.map +1 -1
  159. package/dist/core/agents/programmatic/result-collector.js +16 -16
  160. package/dist/core/agents/programmatic/result-collector.js.map +1 -1
  161. package/dist/core/agents/programmatic/script-executor.d.ts.map +1 -1
  162. package/dist/core/agents/programmatic/script-executor.js +152 -149
  163. package/dist/core/agents/programmatic/script-executor.js.map +1 -1
  164. package/dist/core/agents/recursive/aggregator.d.ts +1 -1
  165. package/dist/core/agents/recursive/aggregator.d.ts.map +1 -1
  166. package/dist/core/agents/recursive/aggregator.js +12 -17
  167. package/dist/core/agents/recursive/aggregator.js.map +1 -1
  168. package/dist/core/agents/recursive/budget-allocator.d.ts +1 -1
  169. package/dist/core/agents/recursive/budget-allocator.d.ts.map +1 -1
  170. package/dist/core/agents/recursive/budget-allocator.js +7 -9
  171. package/dist/core/agents/recursive/budget-allocator.js.map +1 -1
  172. package/dist/core/agents/recursive/checkpoint-chain.d.ts +4 -4
  173. package/dist/core/agents/recursive/checkpoint-chain.d.ts.map +1 -1
  174. package/dist/core/agents/recursive/checkpoint-chain.js +12 -15
  175. package/dist/core/agents/recursive/checkpoint-chain.js.map +1 -1
  176. package/dist/core/agents/recursive/complexity-analyzer.d.ts.map +1 -1
  177. package/dist/core/agents/recursive/complexity-analyzer.js +52 -20
  178. package/dist/core/agents/recursive/complexity-analyzer.js.map +1 -1
  179. package/dist/core/agents/recursive/index.d.ts +6 -6
  180. package/dist/core/agents/recursive/index.d.ts.map +1 -1
  181. package/dist/core/agents/recursive/index.js +11 -11
  182. package/dist/core/agents/recursive/index.js.map +1 -1
  183. package/dist/core/agents/recursive/orchestrator.d.ts +2 -2
  184. package/dist/core/agents/recursive/orchestrator.d.ts.map +1 -1
  185. package/dist/core/agents/recursive/orchestrator.js +60 -20
  186. package/dist/core/agents/recursive/orchestrator.js.map +1 -1
  187. package/dist/core/agents/recursive/spawn-controller.d.ts +3 -3
  188. package/dist/core/agents/recursive/spawn-controller.d.ts.map +1 -1
  189. package/dist/core/agents/recursive/spawn-controller.js +10 -10
  190. package/dist/core/agents/recursive/spawn-controller.js.map +1 -1
  191. package/dist/core/agents/recursive/types.d.ts +2 -2
  192. package/dist/core/agents/recursive/types.d.ts.map +1 -1
  193. package/dist/core/agents/recursive/types.js +2 -2
  194. package/dist/core/agents/recursive/types.js.map +1 -1
  195. package/dist/core/agents/types.d.ts +1 -1
  196. package/dist/core/agents/types.d.ts.map +1 -1
  197. package/dist/core/analyzer/change-intent.d.ts +1 -1
  198. package/dist/core/analyzer/change-intent.d.ts.map +1 -1
  199. package/dist/core/analyzer/change-intent.js +6 -5
  200. package/dist/core/analyzer/change-intent.js.map +1 -1
  201. package/dist/core/analyzer/command-extractor.d.ts.map +1 -1
  202. package/dist/core/analyzer/command-extractor.js +1 -3
  203. package/dist/core/analyzer/command-extractor.js.map +1 -1
  204. package/dist/core/analyzer/dependency-graph.d.ts.map +1 -1
  205. package/dist/core/analyzer/dependency-graph.js +364 -74
  206. package/dist/core/analyzer/dependency-graph.js.map +1 -1
  207. package/dist/core/analyzer/focus-detector.d.ts.map +1 -1
  208. package/dist/core/analyzer/focus-detector.js +21 -24
  209. package/dist/core/analyzer/focus-detector.js.map +1 -1
  210. package/dist/core/analyzer/index.d.ts +8 -8
  211. package/dist/core/analyzer/index.d.ts.map +1 -1
  212. package/dist/core/analyzer/index.js +17 -17
  213. package/dist/core/analyzer/index.js.map +1 -1
  214. package/dist/core/analyzer/multi-lang/index.d.ts +2 -2
  215. package/dist/core/analyzer/multi-lang/index.d.ts.map +1 -1
  216. package/dist/core/analyzer/multi-lang/index.js +36 -38
  217. package/dist/core/analyzer/multi-lang/index.js.map +1 -1
  218. package/dist/core/analyzer/multi-lang/language-detector.d.ts +1 -1
  219. package/dist/core/analyzer/multi-lang/language-detector.d.ts.map +1 -1
  220. package/dist/core/analyzer/multi-lang/language-detector.js +24 -13
  221. package/dist/core/analyzer/multi-lang/language-detector.js.map +1 -1
  222. package/dist/core/analyzer/multi-lang/pattern-extractor.d.ts +1 -1
  223. package/dist/core/analyzer/multi-lang/pattern-extractor.d.ts.map +1 -1
  224. package/dist/core/analyzer/multi-lang/pattern-extractor.js +20 -7
  225. package/dist/core/analyzer/multi-lang/pattern-extractor.js.map +1 -1
  226. package/dist/core/analyzer/multi-lang/types.d.ts.map +1 -1
  227. package/dist/core/analyzer/pattern-detector.d.ts.map +1 -1
  228. package/dist/core/analyzer/pattern-detector.js.map +1 -1
  229. package/dist/core/analyzer/project-detector.d.ts.map +1 -1
  230. package/dist/core/analyzer/project-detector.js +11 -8
  231. package/dist/core/analyzer/project-detector.js.map +1 -1
  232. package/dist/core/analyzer/semantic-diff.d.ts.map +1 -1
  233. package/dist/core/analyzer/semantic-diff.js +17 -8
  234. package/dist/core/analyzer/semantic-diff.js.map +1 -1
  235. package/dist/core/analyzer/structure-mapper.d.ts +2 -2
  236. package/dist/core/analyzer/structure-mapper.d.ts.map +1 -1
  237. package/dist/core/analyzer/structure-mapper.js +2 -2
  238. package/dist/core/analyzer/structure-mapper.js.map +1 -1
  239. package/dist/core/analyzer/types.d.ts.map +1 -1
  240. package/dist/core/budget/cross-section-dedup.d.ts.map +1 -1
  241. package/dist/core/budget/cross-section-dedup.js +20 -17
  242. package/dist/core/budget/cross-section-dedup.js.map +1 -1
  243. package/dist/core/budget/entropy-budget.d.ts.map +1 -1
  244. package/dist/core/budget/entropy-budget.js +16 -22
  245. package/dist/core/budget/entropy-budget.js.map +1 -1
  246. package/dist/core/budget/index.d.ts +2 -2
  247. package/dist/core/budget/index.d.ts.map +1 -1
  248. package/dist/core/budget/index.js +3 -3
  249. package/dist/core/budget/index.js.map +1 -1
  250. package/dist/core/budget/language-entropy-profiles.d.ts.map +1 -1
  251. package/dist/core/budget/language-entropy-profiles.js +60 -7
  252. package/dist/core/budget/language-entropy-profiles.js.map +1 -1
  253. package/dist/core/budget/token-estimator.d.ts.map +1 -1
  254. package/dist/core/budget/token-estimator.js.map +1 -1
  255. package/dist/core/cache/cache-analyzer.d.ts.map +1 -1
  256. package/dist/core/cache/cache-analyzer.js +21 -24
  257. package/dist/core/cache/cache-analyzer.js.map +1 -1
  258. package/dist/core/cache/cache-metrics.d.ts +1 -1
  259. package/dist/core/cache/cache-metrics.d.ts.map +1 -1
  260. package/dist/core/cache/cache-metrics.js +6 -11
  261. package/dist/core/cache/cache-metrics.js.map +1 -1
  262. package/dist/core/cache/file-cache.d.ts.map +1 -1
  263. package/dist/core/cache/file-cache.js +3 -4
  264. package/dist/core/cache/file-cache.js.map +1 -1
  265. package/dist/core/cache/index.d.ts +3 -3
  266. package/dist/core/cache/index.d.ts.map +1 -1
  267. package/dist/core/cache/index.js +3 -3
  268. package/dist/core/cache/index.js.map +1 -1
  269. package/dist/core/checkpoints/category-compressor.d.ts +1 -1
  270. package/dist/core/checkpoints/category-compressor.d.ts.map +1 -1
  271. package/dist/core/checkpoints/category-compressor.js +4 -5
  272. package/dist/core/checkpoints/category-compressor.js.map +1 -1
  273. package/dist/core/checkpoints/checkpoint-store.d.ts.map +1 -1
  274. package/dist/core/checkpoints/checkpoint-store.js +1 -1
  275. package/dist/core/checkpoints/checkpoint-store.js.map +1 -1
  276. package/dist/core/checkpoints/checkpoint.d.ts +2 -2
  277. package/dist/core/checkpoints/checkpoint.d.ts.map +1 -1
  278. package/dist/core/checkpoints/checkpoint.js +17 -14
  279. package/dist/core/checkpoints/checkpoint.js.map +1 -1
  280. package/dist/core/checkpoints/compression-templates.d.ts +1 -1
  281. package/dist/core/checkpoints/compression-templates.d.ts.map +1 -1
  282. package/dist/core/checkpoints/compression-templates.js +2 -4
  283. package/dist/core/checkpoints/compression-templates.js.map +1 -1
  284. package/dist/core/checkpoints/compression-verifier.d.ts.map +1 -1
  285. package/dist/core/checkpoints/compression-verifier.js.map +1 -1
  286. package/dist/core/checkpoints/context-serializer.d.ts.map +1 -1
  287. package/dist/core/checkpoints/context-serializer.js +4 -10
  288. package/dist/core/checkpoints/context-serializer.js.map +1 -1
  289. package/dist/core/checkpoints/git-recovery.d.ts.map +1 -1
  290. package/dist/core/checkpoints/git-recovery.js +1 -2
  291. package/dist/core/checkpoints/git-recovery.js.map +1 -1
  292. package/dist/core/checkpoints/handoff-schema.d.ts.map +1 -1
  293. package/dist/core/checkpoints/handoff-schema.js +24 -16
  294. package/dist/core/checkpoints/handoff-schema.js.map +1 -1
  295. package/dist/core/checkpoints/handoff.d.ts +1 -1
  296. package/dist/core/checkpoints/handoff.d.ts.map +1 -1
  297. package/dist/core/checkpoints/handoff.js +3 -3
  298. package/dist/core/checkpoints/handoff.js.map +1 -1
  299. package/dist/core/checkpoints/index.d.ts +4 -4
  300. package/dist/core/checkpoints/index.d.ts.map +1 -1
  301. package/dist/core/checkpoints/index.js +4 -4
  302. package/dist/core/checkpoints/index.js.map +1 -1
  303. package/dist/core/chunking/index.d.ts +2 -2
  304. package/dist/core/chunking/index.d.ts.map +1 -1
  305. package/dist/core/chunking/index.js +8 -10
  306. package/dist/core/chunking/index.js.map +1 -1
  307. package/dist/core/chunking/types.d.ts.map +1 -1
  308. package/dist/core/chunking/types.js.map +1 -1
  309. package/dist/core/chunking/typescript-chunker.d.ts +1 -1
  310. package/dist/core/chunking/typescript-chunker.d.ts.map +1 -1
  311. package/dist/core/chunking/typescript-chunker.js +15 -10
  312. package/dist/core/chunking/typescript-chunker.js.map +1 -1
  313. package/dist/core/chunking/utils.d.ts.map +1 -1
  314. package/dist/core/chunking/utils.js +13 -13
  315. package/dist/core/chunking/utils.js.map +1 -1
  316. package/dist/core/config/constants.js.map +1 -1
  317. package/dist/core/config/feature-flags.d.ts +15 -0
  318. package/dist/core/config/feature-flags.d.ts.map +1 -1
  319. package/dist/core/config/feature-flags.js +3 -0
  320. package/dist/core/config/feature-flags.js.map +1 -1
  321. package/dist/core/config/generated-files.d.ts.map +1 -1
  322. package/dist/core/config/generated-files.js.map +1 -1
  323. package/dist/core/config/index.d.ts +2 -2
  324. package/dist/core/config/index.d.ts.map +1 -1
  325. package/dist/core/config/index.js +2 -2
  326. package/dist/core/config/index.js.map +1 -1
  327. package/dist/core/config/markers.js.map +1 -1
  328. package/dist/core/config/optional-commands.d.ts.map +1 -1
  329. package/dist/core/config/optional-commands.js.map +1 -1
  330. package/dist/core/config/paths.js.map +1 -1
  331. package/dist/core/context/access-tracker.d.ts.map +1 -1
  332. package/dist/core/context/access-tracker.js +10 -11
  333. package/dist/core/context/access-tracker.js.map +1 -1
  334. package/dist/core/context/auto-injection-engine.d.ts.map +1 -1
  335. package/dist/core/context/auto-injection-engine.js +12 -9
  336. package/dist/core/context/auto-injection-engine.js.map +1 -1
  337. package/dist/core/context/auto-unload-engine.d.ts.map +1 -1
  338. package/dist/core/context/auto-unload-engine.js +5 -5
  339. package/dist/core/context/auto-unload-engine.js.map +1 -1
  340. package/dist/core/context/context-auditor.d.ts.map +1 -1
  341. package/dist/core/context/context-auditor.js +19 -22
  342. package/dist/core/context/context-auditor.js.map +1 -1
  343. package/dist/core/context/context-health.d.ts +28 -3
  344. package/dist/core/context/context-health.d.ts.map +1 -1
  345. package/dist/core/context/context-health.js +105 -22
  346. package/dist/core/context/context-health.js.map +1 -1
  347. package/dist/core/context/context-manifest.d.ts.map +1 -1
  348. package/dist/core/context/context-manifest.js +8 -12
  349. package/dist/core/context/context-manifest.js.map +1 -1
  350. package/dist/core/context/demand-detector.d.ts +3 -3
  351. package/dist/core/context/demand-detector.d.ts.map +1 -1
  352. package/dist/core/context/demand-detector.js +13 -16
  353. package/dist/core/context/demand-detector.js.map +1 -1
  354. package/dist/core/context/focus-resource-loader.d.ts +143 -0
  355. package/dist/core/context/focus-resource-loader.d.ts.map +1 -0
  356. package/dist/core/context/focus-resource-loader.js +311 -0
  357. package/dist/core/context/focus-resource-loader.js.map +1 -0
  358. package/dist/core/context/index.d.ts +15 -15
  359. package/dist/core/context/index.d.ts.map +1 -1
  360. package/dist/core/context/index.js +122 -109
  361. package/dist/core/context/index.js.map +1 -1
  362. package/dist/core/context/lazy-loader.d.ts +45 -2
  363. package/dist/core/context/lazy-loader.d.ts.map +1 -1
  364. package/dist/core/context/lazy-loader.js +75 -13
  365. package/dist/core/context/lazy-loader.js.map +1 -1
  366. package/dist/core/context/positional-optimizer.d.ts.map +1 -1
  367. package/dist/core/context/positional-optimizer.js +15 -16
  368. package/dist/core/context/positional-optimizer.js.map +1 -1
  369. package/dist/core/context/prefetch-optimizer.d.ts.map +1 -1
  370. package/dist/core/context/prefetch-optimizer.js +8 -8
  371. package/dist/core/context/prefetch-optimizer.js.map +1 -1
  372. package/dist/core/context/token-tracker.d.ts.map +1 -1
  373. package/dist/core/context/token-tracker.js +30 -22
  374. package/dist/core/context/token-tracker.js.map +1 -1
  375. package/dist/core/context/tool-clearing.d.ts +1 -1
  376. package/dist/core/context/tool-clearing.d.ts.map +1 -1
  377. package/dist/core/context/tool-clearing.js +21 -18
  378. package/dist/core/context/tool-clearing.js.map +1 -1
  379. package/dist/core/context/tool-protection.d.ts.map +1 -1
  380. package/dist/core/context/tool-protection.js +1 -3
  381. package/dist/core/context/tool-protection.js.map +1 -1
  382. package/dist/core/context/tool-summarization.d.ts.map +1 -1
  383. package/dist/core/context/tool-summarization.js +24 -19
  384. package/dist/core/context/tool-summarization.js.map +1 -1
  385. package/dist/core/context-repl/__tests__/condensation.test.js +3 -3
  386. package/dist/core/context-repl/__tests__/condensation.test.js.map +1 -1
  387. package/dist/core/context-repl/__tests__/query-executor.test.js +16 -6
  388. package/dist/core/context-repl/__tests__/query-executor.test.js.map +1 -1
  389. package/dist/core/context-repl/__tests__/query-parser.test.js +5 -5
  390. package/dist/core/context-repl/__tests__/query-parser.test.js.map +1 -1
  391. package/dist/core/context-repl/condensation.d.ts +1 -1
  392. package/dist/core/context-repl/condensation.d.ts.map +1 -1
  393. package/dist/core/context-repl/condensation.js +15 -9
  394. package/dist/core/context-repl/condensation.js.map +1 -1
  395. package/dist/core/context-repl/index.d.ts +11 -11
  396. package/dist/core/context-repl/index.d.ts.map +1 -1
  397. package/dist/core/context-repl/index.js +15 -15
  398. package/dist/core/context-repl/index.js.map +1 -1
  399. package/dist/core/context-repl/partitioning/__tests__/by-dependency.test.js +7 -20
  400. package/dist/core/context-repl/partitioning/__tests__/by-dependency.test.js.map +1 -1
  401. package/dist/core/context-repl/partitioning/__tests__/by-directory.test.js +10 -18
  402. package/dist/core/context-repl/partitioning/__tests__/by-directory.test.js.map +1 -1
  403. package/dist/core/context-repl/partitioning/__tests__/by-feature.test.js +22 -31
  404. package/dist/core/context-repl/partitioning/__tests__/by-feature.test.js.map +1 -1
  405. package/dist/core/context-repl/partitioning/__tests__/by-time.test.js +14 -19
  406. package/dist/core/context-repl/partitioning/__tests__/by-time.test.js.map +1 -1
  407. package/dist/core/context-repl/partitioning/__tests__/index.test.js +4 -12
  408. package/dist/core/context-repl/partitioning/__tests__/index.test.js.map +1 -1
  409. package/dist/core/context-repl/partitioning/index.d.ts +5 -5
  410. package/dist/core/context-repl/partitioning/index.d.ts.map +1 -1
  411. package/dist/core/context-repl/partitioning/index.js +17 -18
  412. package/dist/core/context-repl/partitioning/index.js.map +1 -1
  413. package/dist/core/context-repl/partitioning/partition-cache.d.ts +1 -1
  414. package/dist/core/context-repl/partitioning/partition-cache.d.ts.map +1 -1
  415. package/dist/core/context-repl/partitioning/partition-cache.js +1 -1
  416. package/dist/core/context-repl/partitioning/partition-cache.js.map +1 -1
  417. package/dist/core/context-repl/partitioning/strategies/by-dependency.d.ts +1 -1
  418. package/dist/core/context-repl/partitioning/strategies/by-dependency.d.ts.map +1 -1
  419. package/dist/core/context-repl/partitioning/strategies/by-dependency.js +20 -17
  420. package/dist/core/context-repl/partitioning/strategies/by-dependency.js.map +1 -1
  421. package/dist/core/context-repl/partitioning/strategies/by-directory.d.ts +1 -1
  422. package/dist/core/context-repl/partitioning/strategies/by-directory.d.ts.map +1 -1
  423. package/dist/core/context-repl/partitioning/strategies/by-directory.js +5 -5
  424. package/dist/core/context-repl/partitioning/strategies/by-directory.js.map +1 -1
  425. package/dist/core/context-repl/partitioning/strategies/by-feature.d.ts +1 -1
  426. package/dist/core/context-repl/partitioning/strategies/by-feature.d.ts.map +1 -1
  427. package/dist/core/context-repl/partitioning/strategies/by-feature.js +18 -38
  428. package/dist/core/context-repl/partitioning/strategies/by-feature.js.map +1 -1
  429. package/dist/core/context-repl/partitioning/strategies/by-time.d.ts +1 -1
  430. package/dist/core/context-repl/partitioning/strategies/by-time.d.ts.map +1 -1
  431. package/dist/core/context-repl/partitioning/strategies/by-time.js +8 -8
  432. package/dist/core/context-repl/partitioning/strategies/by-time.js.map +1 -1
  433. package/dist/core/context-repl/partitioning/strategies/index.d.ts +4 -4
  434. package/dist/core/context-repl/partitioning/strategies/index.d.ts.map +1 -1
  435. package/dist/core/context-repl/partitioning/strategies/index.js +8 -8
  436. package/dist/core/context-repl/partitioning/strategies/index.js.map +1 -1
  437. package/dist/core/context-repl/partitioning/types.d.ts.map +1 -1
  438. package/dist/core/context-repl/partitioning/types.js.map +1 -1
  439. package/dist/core/context-repl/query-executor.d.ts +1 -1
  440. package/dist/core/context-repl/query-executor.d.ts.map +1 -1
  441. package/dist/core/context-repl/query-executor.js +42 -20
  442. package/dist/core/context-repl/query-executor.js.map +1 -1
  443. package/dist/core/context-repl/query-parser.d.ts +1 -1
  444. package/dist/core/context-repl/query-parser.d.ts.map +1 -1
  445. package/dist/core/context-repl/query-parser.js +36 -38
  446. package/dist/core/context-repl/query-parser.js.map +1 -1
  447. package/dist/core/context-repl/recursive/__tests__/budget.test.js +4 -4
  448. package/dist/core/context-repl/recursive/__tests__/budget.test.js.map +1 -1
  449. package/dist/core/context-repl/recursive/__tests__/decomposer.test.js +6 -6
  450. package/dist/core/context-repl/recursive/__tests__/decomposer.test.js.map +1 -1
  451. package/dist/core/context-repl/recursive/__tests__/integration.test.js +9 -6
  452. package/dist/core/context-repl/recursive/__tests__/integration.test.js.map +1 -1
  453. package/dist/core/context-repl/recursive/__tests__/quality.test.js +9 -29
  454. package/dist/core/context-repl/recursive/__tests__/quality.test.js.map +1 -1
  455. package/dist/core/context-repl/recursive/__tests__/synthesizer.test.js +26 -10
  456. package/dist/core/context-repl/recursive/__tests__/synthesizer.test.js.map +1 -1
  457. package/dist/core/context-repl/recursive/budget.d.ts +1 -1
  458. package/dist/core/context-repl/recursive/budget.d.ts.map +1 -1
  459. package/dist/core/context-repl/recursive/budget.js +2 -2
  460. package/dist/core/context-repl/recursive/budget.js.map +1 -1
  461. package/dist/core/context-repl/recursive/decomposer.d.ts +4 -4
  462. package/dist/core/context-repl/recursive/decomposer.d.ts.map +1 -1
  463. package/dist/core/context-repl/recursive/decomposer.js +52 -35
  464. package/dist/core/context-repl/recursive/decomposer.js.map +1 -1
  465. package/dist/core/context-repl/recursive/index.d.ts +7 -7
  466. package/dist/core/context-repl/recursive/index.d.ts.map +1 -1
  467. package/dist/core/context-repl/recursive/index.js +31 -27
  468. package/dist/core/context-repl/recursive/index.js.map +1 -1
  469. package/dist/core/context-repl/recursive/quality.d.ts +1 -1
  470. package/dist/core/context-repl/recursive/quality.d.ts.map +1 -1
  471. package/dist/core/context-repl/recursive/quality.js +15 -5
  472. package/dist/core/context-repl/recursive/quality.js.map +1 -1
  473. package/dist/core/context-repl/recursive/synthesizer.d.ts +2 -2
  474. package/dist/core/context-repl/recursive/synthesizer.d.ts.map +1 -1
  475. package/dist/core/context-repl/recursive/synthesizer.js +11 -11
  476. package/dist/core/context-repl/recursive/synthesizer.js.map +1 -1
  477. package/dist/core/context-repl/recursive/trajectory.d.ts +1 -1
  478. package/dist/core/context-repl/recursive/trajectory.d.ts.map +1 -1
  479. package/dist/core/context-repl/recursive/trajectory.js +18 -16
  480. package/dist/core/context-repl/recursive/trajectory.js.map +1 -1
  481. package/dist/core/context-repl/recursive/types.d.ts.map +1 -1
  482. package/dist/core/context-repl/recursive/types.js.map +1 -1
  483. package/dist/core/context-repl/types.d.ts +2 -2
  484. package/dist/core/context-repl/types.d.ts.map +1 -1
  485. package/dist/core/context-repl/types.js +16 -5
  486. package/dist/core/context-repl/types.js.map +1 -1
  487. package/dist/core/context-repl/variable-loader.d.ts +1 -1
  488. package/dist/core/context-repl/variable-loader.d.ts.map +1 -1
  489. package/dist/core/context-repl/variable-loader.js +7 -9
  490. package/dist/core/context-repl/variable-loader.js.map +1 -1
  491. package/dist/core/conversations/conversation-manager.d.ts.map +1 -1
  492. package/dist/core/conversations/conversation-manager.js.map +1 -1
  493. package/dist/core/embeddings/adapters/index.d.ts +4 -4
  494. package/dist/core/embeddings/adapters/index.d.ts.map +1 -1
  495. package/dist/core/embeddings/adapters/index.js +3 -3
  496. package/dist/core/embeddings/adapters/index.js.map +1 -1
  497. package/dist/core/embeddings/adapters/local.d.ts +2 -2
  498. package/dist/core/embeddings/adapters/local.d.ts.map +1 -1
  499. package/dist/core/embeddings/adapters/local.js +4 -4
  500. package/dist/core/embeddings/adapters/local.js.map +1 -1
  501. package/dist/core/embeddings/adapters/qdrant.d.ts +1 -1
  502. package/dist/core/embeddings/adapters/qdrant.d.ts.map +1 -1
  503. package/dist/core/embeddings/adapters/qdrant.js +2 -2
  504. package/dist/core/embeddings/adapters/qdrant.js.map +1 -1
  505. package/dist/core/embeddings/adapters/types.d.ts +1 -1
  506. package/dist/core/embeddings/adapters/types.d.ts.map +1 -1
  507. package/dist/core/embeddings/adapters/types.js.map +1 -1
  508. package/dist/core/embeddings/backends/index.d.ts.map +1 -1
  509. package/dist/core/embeddings/backends/index.js.map +1 -1
  510. package/dist/core/embeddings/backends/local.d.ts.map +1 -1
  511. package/dist/core/embeddings/backends/local.js +41 -13
  512. package/dist/core/embeddings/backends/local.js.map +1 -1
  513. package/dist/core/embeddings/index.d.ts +9 -9
  514. package/dist/core/embeddings/index.d.ts.map +1 -1
  515. package/dist/core/embeddings/index.js +9 -6
  516. package/dist/core/embeddings/index.js.map +1 -1
  517. package/dist/core/embeddings/query-cache.d.ts.map +1 -1
  518. package/dist/core/embeddings/query-cache.js.map +1 -1
  519. package/dist/core/embeddings/types.d.ts.map +1 -1
  520. package/dist/core/embeddings/types.js.map +1 -1
  521. package/dist/core/embeddings/vector-store.d.ts.map +1 -1
  522. package/dist/core/embeddings/vector-store.js +17 -16
  523. package/dist/core/embeddings/vector-store.js.map +1 -1
  524. package/dist/core/embeddings/vector-utils.d.ts.map +1 -1
  525. package/dist/core/embeddings/vector-utils.js +4 -4
  526. package/dist/core/embeddings/vector-utils.js.map +1 -1
  527. package/dist/core/errors/index.d.ts.map +1 -1
  528. package/dist/core/errors/index.js.map +1 -1
  529. package/dist/core/errors.d.ts.map +1 -1
  530. package/dist/core/errors.js.map +1 -1
  531. package/dist/core/examples/index.d.ts +1 -1
  532. package/dist/core/examples/index.d.ts.map +1 -1
  533. package/dist/core/examples/index.js +1 -1
  534. package/dist/core/examples/index.js.map +1 -1
  535. package/dist/core/examples/tool-examples.d.ts.map +1 -1
  536. package/dist/core/examples/tool-examples.js +6 -15
  537. package/dist/core/examples/tool-examples.js.map +1 -1
  538. package/dist/core/features/index.d.ts +1 -1
  539. package/dist/core/features/index.d.ts.map +1 -1
  540. package/dist/core/features/index.js +2 -6
  541. package/dist/core/features/index.js.map +1 -1
  542. package/dist/core/features/types.d.ts.map +1 -1
  543. package/dist/core/generator/claude-md.d.ts.map +1 -1
  544. package/dist/core/generator/claude-md.js +36 -41
  545. package/dist/core/generator/claude-md.js.map +1 -1
  546. package/dist/core/generator/index.d.ts +2 -2
  547. package/dist/core/generator/index.d.ts.map +1 -1
  548. package/dist/core/generator/index.js +2 -2
  549. package/dist/core/generator/index.js.map +1 -1
  550. package/dist/core/generator/session-md.d.ts +1 -1
  551. package/dist/core/generator/session-md.d.ts.map +1 -1
  552. package/dist/core/generator/session-md.js +35 -28
  553. package/dist/core/generator/session-md.js.map +1 -1
  554. package/dist/core/handoff/index.d.ts +2 -2
  555. package/dist/core/handoff/index.d.ts.map +1 -1
  556. package/dist/core/handoff/index.js +1 -1
  557. package/dist/core/handoff/index.js.map +1 -1
  558. package/dist/core/handoff/writer.d.ts.map +1 -1
  559. package/dist/core/handoff/writer.js.map +1 -1
  560. package/dist/core/intelligence/adaptive-compaction.d.ts.map +1 -1
  561. package/dist/core/intelligence/adaptive-compaction.js +25 -23
  562. package/dist/core/intelligence/adaptive-compaction.js.map +1 -1
  563. package/dist/core/intelligence/budget-forecast.d.ts +1 -1
  564. package/dist/core/intelligence/budget-forecast.d.ts.map +1 -1
  565. package/dist/core/intelligence/budget-forecast.js +8 -9
  566. package/dist/core/intelligence/budget-forecast.js.map +1 -1
  567. package/dist/core/intelligence/context-budget.d.ts +1 -1
  568. package/dist/core/intelligence/context-budget.d.ts.map +1 -1
  569. package/dist/core/intelligence/context-budget.js +30 -30
  570. package/dist/core/intelligence/context-budget.js.map +1 -1
  571. package/dist/core/intelligence/effort-advisor.d.ts.map +1 -1
  572. package/dist/core/intelligence/effort-advisor.js +5 -7
  573. package/dist/core/intelligence/effort-advisor.js.map +1 -1
  574. package/dist/core/intelligence/index.d.ts +8 -8
  575. package/dist/core/intelligence/index.d.ts.map +1 -1
  576. package/dist/core/intelligence/index.js +46 -46
  577. package/dist/core/intelligence/index.js.map +1 -1
  578. package/dist/core/intelligence/playbook/evolution-engine.d.ts +1 -1
  579. package/dist/core/intelligence/playbook/evolution-engine.d.ts.map +1 -1
  580. package/dist/core/intelligence/playbook/evolution-engine.js +29 -27
  581. package/dist/core/intelligence/playbook/evolution-engine.js.map +1 -1
  582. package/dist/core/intelligence/playbook/feedback-collector.d.ts +2 -2
  583. package/dist/core/intelligence/playbook/feedback-collector.d.ts.map +1 -1
  584. package/dist/core/intelligence/playbook/feedback-collector.js +20 -19
  585. package/dist/core/intelligence/playbook/feedback-collector.js.map +1 -1
  586. package/dist/core/intelligence/playbook/index.d.ts +7 -7
  587. package/dist/core/intelligence/playbook/index.d.ts.map +1 -1
  588. package/dist/core/intelligence/playbook/index.js +20 -22
  589. package/dist/core/intelligence/playbook/index.js.map +1 -1
  590. package/dist/core/intelligence/playbook/playbook-store.d.ts +1 -1
  591. package/dist/core/intelligence/playbook/playbook-store.d.ts.map +1 -1
  592. package/dist/core/intelligence/playbook/playbook-store.js +16 -14
  593. package/dist/core/intelligence/playbook/playbook-store.js.map +1 -1
  594. package/dist/core/intelligence/playbook/strategy-extractor.d.ts +2 -2
  595. package/dist/core/intelligence/playbook/strategy-extractor.d.ts.map +1 -1
  596. package/dist/core/intelligence/playbook/strategy-extractor.js +41 -43
  597. package/dist/core/intelligence/playbook/strategy-extractor.js.map +1 -1
  598. package/dist/core/intelligence/playbook/tool-sequence.d.ts.map +1 -1
  599. package/dist/core/intelligence/playbook/tool-sequence.js +1 -2
  600. package/dist/core/intelligence/playbook/tool-sequence.js.map +1 -1
  601. package/dist/core/intelligence/playbook/types.d.ts.map +1 -1
  602. package/dist/core/intelligence/progress-tracker.d.ts +1 -1
  603. package/dist/core/intelligence/progress-tracker.d.ts.map +1 -1
  604. package/dist/core/intelligence/progress-tracker.js.map +1 -1
  605. package/dist/core/intelligence/session-compactor.d.ts.map +1 -1
  606. package/dist/core/intelligence/session-compactor.js +23 -27
  607. package/dist/core/intelligence/session-compactor.js.map +1 -1
  608. package/dist/core/intelligence/trajectory.d.ts.map +1 -1
  609. package/dist/core/intelligence/trajectory.js +37 -26
  610. package/dist/core/intelligence/trajectory.js.map +1 -1
  611. package/dist/core/knowledge-graph/entity-extractor.d.ts +1 -1
  612. package/dist/core/knowledge-graph/entity-extractor.d.ts.map +1 -1
  613. package/dist/core/knowledge-graph/entity-extractor.js +13 -13
  614. package/dist/core/knowledge-graph/entity-extractor.js.map +1 -1
  615. package/dist/core/knowledge-graph/graph.d.ts +1 -1
  616. package/dist/core/knowledge-graph/graph.d.ts.map +1 -1
  617. package/dist/core/knowledge-graph/graph.js +59 -64
  618. package/dist/core/knowledge-graph/graph.js.map +1 -1
  619. package/dist/core/knowledge-graph/index.d.ts +3 -3
  620. package/dist/core/knowledge-graph/index.d.ts.map +1 -1
  621. package/dist/core/knowledge-graph/index.js +13 -13
  622. package/dist/core/knowledge-graph/index.js.map +1 -1
  623. package/dist/core/knowledge-graph/types.d.ts.map +1 -1
  624. package/dist/core/knowledge-graph/types.js.map +1 -1
  625. package/dist/core/memory/access-heatmap.d.ts.map +1 -1
  626. package/dist/core/memory/access-heatmap.js +5 -7
  627. package/dist/core/memory/access-heatmap.js.map +1 -1
  628. package/dist/core/memory/adaptive-strategy.d.ts +1 -1
  629. package/dist/core/memory/adaptive-strategy.d.ts.map +1 -1
  630. package/dist/core/memory/adaptive-strategy.js +11 -15
  631. package/dist/core/memory/adaptive-strategy.js.map +1 -1
  632. package/dist/core/memory/consolidation.d.ts +2 -2
  633. package/dist/core/memory/consolidation.d.ts.map +1 -1
  634. package/dist/core/memory/consolidation.js +49 -54
  635. package/dist/core/memory/consolidation.js.map +1 -1
  636. package/dist/core/memory/cross-linker.d.ts +1 -1
  637. package/dist/core/memory/cross-linker.d.ts.map +1 -1
  638. package/dist/core/memory/cross-linker.js +10 -12
  639. package/dist/core/memory/cross-linker.js.map +1 -1
  640. package/dist/core/memory/distillation.d.ts +1 -1
  641. package/dist/core/memory/distillation.d.ts.map +1 -1
  642. package/dist/core/memory/distillation.js +82 -22
  643. package/dist/core/memory/distillation.js.map +1 -1
  644. package/dist/core/memory/failure-registry.d.ts.map +1 -1
  645. package/dist/core/memory/failure-registry.js +9 -8
  646. package/dist/core/memory/failure-registry.js.map +1 -1
  647. package/dist/core/memory/formatters.d.ts +1 -1
  648. package/dist/core/memory/formatters.d.ts.map +1 -1
  649. package/dist/core/memory/formatters.js +3 -3
  650. package/dist/core/memory/formatters.js.map +1 -1
  651. package/dist/core/memory/global-memory.d.ts +1 -1
  652. package/dist/core/memory/global-memory.d.ts.map +1 -1
  653. package/dist/core/memory/global-memory.js +21 -16
  654. package/dist/core/memory/global-memory.js.map +1 -1
  655. package/dist/core/memory/graph.d.ts.map +1 -1
  656. package/dist/core/memory/graph.js +34 -22
  657. package/dist/core/memory/graph.js.map +1 -1
  658. package/dist/core/memory/hybrid-retrieval.d.ts +1 -1
  659. package/dist/core/memory/hybrid-retrieval.d.ts.map +1 -1
  660. package/dist/core/memory/hybrid-retrieval.js +12 -10
  661. package/dist/core/memory/hybrid-retrieval.js.map +1 -1
  662. package/dist/core/memory/index.d.ts +29 -35
  663. package/dist/core/memory/index.d.ts.map +1 -1
  664. package/dist/core/memory/index.js +219 -223
  665. package/dist/core/memory/index.js.map +1 -1
  666. package/dist/core/memory/memory-capture-agent.d.ts +1 -1
  667. package/dist/core/memory/memory-capture-agent.d.ts.map +1 -1
  668. package/dist/core/memory/memory-capture-agent.js +108 -17
  669. package/dist/core/memory/memory-capture-agent.js.map +1 -1
  670. package/dist/core/memory/memory-decay.d.ts +1 -1
  671. package/dist/core/memory/memory-decay.d.ts.map +1 -1
  672. package/dist/core/memory/memory-decay.js +7 -9
  673. package/dist/core/memory/memory-decay.js.map +1 -1
  674. package/dist/core/memory/memory-rehearsal-agent.d.ts +2 -2
  675. package/dist/core/memory/memory-rehearsal-agent.d.ts.map +1 -1
  676. package/dist/core/memory/memory-rehearsal-agent.js +9 -11
  677. package/dist/core/memory/memory-rehearsal-agent.js.map +1 -1
  678. package/dist/core/memory/memory-retrieval-agent.d.ts +1 -1
  679. package/dist/core/memory/memory-retrieval-agent.d.ts.map +1 -1
  680. package/dist/core/memory/memory-retrieval-agent.js +11 -11
  681. package/dist/core/memory/memory-retrieval-agent.js.map +1 -1
  682. package/dist/core/memory/memory-staging.d.ts +1 -1
  683. package/dist/core/memory/memory-staging.d.ts.map +1 -1
  684. package/dist/core/memory/memory-staging.js +7 -7
  685. package/dist/core/memory/memory-staging.js.map +1 -1
  686. package/dist/core/memory/memory-store.d.ts +2 -2
  687. package/dist/core/memory/memory-store.d.ts.map +1 -1
  688. package/dist/core/memory/memory-store.js +13 -13
  689. package/dist/core/memory/memory-store.js.map +1 -1
  690. package/dist/core/memory/pattern-feedback.d.ts +1 -1
  691. package/dist/core/memory/pattern-feedback.d.ts.map +1 -1
  692. package/dist/core/memory/pattern-feedback.js +3 -5
  693. package/dist/core/memory/pattern-feedback.js.map +1 -1
  694. package/dist/core/memory/pattern-learner.d.ts.map +1 -1
  695. package/dist/core/memory/pattern-learner.js +13 -13
  696. package/dist/core/memory/pattern-learner.js.map +1 -1
  697. package/dist/core/memory/proactive-extractor.d.ts.map +1 -1
  698. package/dist/core/memory/proactive-extractor.js +3 -5
  699. package/dist/core/memory/proactive-extractor.js.map +1 -1
  700. package/dist/core/memory/recitation.d.ts.map +1 -1
  701. package/dist/core/memory/recitation.js +5 -9
  702. package/dist/core/memory/recitation.js.map +1 -1
  703. package/dist/core/memory/retrieval-optimizer.d.ts.map +1 -1
  704. package/dist/core/memory/retrieval-optimizer.js +13 -16
  705. package/dist/core/memory/retrieval-optimizer.js.map +1 -1
  706. package/dist/core/memory/retrieval.d.ts +1 -1
  707. package/dist/core/memory/retrieval.d.ts.map +1 -1
  708. package/dist/core/memory/retrieval.js +4 -5
  709. package/dist/core/memory/retrieval.js.map +1 -1
  710. package/dist/core/memory/semantic-recall.d.ts +2 -2
  711. package/dist/core/memory/semantic-recall.d.ts.map +1 -1
  712. package/dist/core/memory/semantic-recall.js +6 -8
  713. package/dist/core/memory/semantic-recall.js.map +1 -1
  714. package/dist/core/memory/semantic-validation.d.ts.map +1 -1
  715. package/dist/core/memory/semantic-validation.js +22 -21
  716. package/dist/core/memory/semantic-validation.js.map +1 -1
  717. package/dist/core/memory/similarity-utils.d.ts +1 -1
  718. package/dist/core/memory/similarity-utils.d.ts.map +1 -1
  719. package/dist/core/memory/similarity-utils.js +2 -3
  720. package/dist/core/memory/similarity-utils.js.map +1 -1
  721. package/dist/core/memory/spaced-repetition.d.ts.map +1 -1
  722. package/dist/core/memory/spaced-repetition.js +9 -8
  723. package/dist/core/memory/spaced-repetition.js.map +1 -1
  724. package/dist/core/memory/store.d.ts +1 -1
  725. package/dist/core/memory/store.d.ts.map +1 -1
  726. package/dist/core/memory/store.js +3 -3
  727. package/dist/core/memory/store.js.map +1 -1
  728. package/dist/core/memory/types.d.ts.map +1 -1
  729. package/dist/core/memory/types.js +4 -4
  730. package/dist/core/memory/types.js.map +1 -1
  731. package/dist/core/memory/virtual-memory.d.ts +1 -1
  732. package/dist/core/memory/virtual-memory.d.ts.map +1 -1
  733. package/dist/core/memory/virtual-memory.js +23 -35
  734. package/dist/core/memory/virtual-memory.js.map +1 -1
  735. package/dist/core/memory/xml-utils.d.ts +1 -1
  736. package/dist/core/memory/xml-utils.d.ts.map +1 -1
  737. package/dist/core/memory/xml-utils.js +5 -6
  738. package/dist/core/memory/xml-utils.js.map +1 -1
  739. package/dist/core/plans/plan-manager.d.ts.map +1 -1
  740. package/dist/core/plans/plan-manager.js +15 -7
  741. package/dist/core/plans/plan-manager.js.map +1 -1
  742. package/dist/core/provider/storage.d.ts.map +1 -1
  743. package/dist/core/provider/storage.js +14 -15
  744. package/dist/core/provider/storage.js.map +1 -1
  745. package/dist/core/ralph/git-integration.d.ts.map +1 -1
  746. package/dist/core/ralph/git-integration.js +2 -4
  747. package/dist/core/ralph/git-integration.js.map +1 -1
  748. package/dist/core/ralph/index.d.ts +13 -13
  749. package/dist/core/ralph/index.d.ts.map +1 -1
  750. package/dist/core/ralph/index.js +11 -11
  751. package/dist/core/ralph/index.js.map +1 -1
  752. package/dist/core/ralph/learning-consolidator.d.ts +1 -1
  753. package/dist/core/ralph/learning-consolidator.d.ts.map +1 -1
  754. package/dist/core/ralph/learning-consolidator.js +141 -33
  755. package/dist/core/ralph/learning-consolidator.js.map +1 -1
  756. package/dist/core/ralph/metrics.d.ts +1 -1
  757. package/dist/core/ralph/metrics.d.ts.map +1 -1
  758. package/dist/core/ralph/metrics.js +14 -22
  759. package/dist/core/ralph/metrics.js.map +1 -1
  760. package/dist/core/ralph/prd-generator.d.ts +1 -1
  761. package/dist/core/ralph/prd-generator.d.ts.map +1 -1
  762. package/dist/core/ralph/prd-generator.js +20 -20
  763. package/dist/core/ralph/prd-generator.js.map +1 -1
  764. package/dist/core/ralph/progress-tracker.d.ts +1 -1
  765. package/dist/core/ralph/progress-tracker.d.ts.map +1 -1
  766. package/dist/core/ralph/progress-tracker.js +26 -27
  767. package/dist/core/ralph/progress-tracker.js.map +1 -1
  768. package/dist/core/ralph/sub-agent-spawner.d.ts +1 -1
  769. package/dist/core/ralph/sub-agent-spawner.d.ts.map +1 -1
  770. package/dist/core/ralph/sub-agent-spawner.js +14 -16
  771. package/dist/core/ralph/sub-agent-spawner.js.map +1 -1
  772. package/dist/core/ralph/task-integration.d.ts +1 -1
  773. package/dist/core/ralph/task-integration.d.ts.map +1 -1
  774. package/dist/core/ralph/task-integration.js +13 -16
  775. package/dist/core/ralph/task-integration.js.map +1 -1
  776. package/dist/core/ralph/types.d.ts.map +1 -1
  777. package/dist/core/ralph/types.js.map +1 -1
  778. package/dist/core/retrieval/hybrid.d.ts +2 -2
  779. package/dist/core/retrieval/hybrid.d.ts.map +1 -1
  780. package/dist/core/retrieval/hybrid.js +3 -3
  781. package/dist/core/retrieval/hybrid.js.map +1 -1
  782. package/dist/core/retrieval/index.d.ts +5 -5
  783. package/dist/core/retrieval/index.d.ts.map +1 -1
  784. package/dist/core/retrieval/index.js +3 -3
  785. package/dist/core/retrieval/index.js.map +1 -1
  786. package/dist/core/retrieval/ranker.d.ts.map +1 -1
  787. package/dist/core/retrieval/ranker.js +17 -15
  788. package/dist/core/retrieval/ranker.js.map +1 -1
  789. package/dist/core/retrieval/stages.d.ts +5 -5
  790. package/dist/core/retrieval/stages.d.ts.map +1 -1
  791. package/dist/core/retrieval/stages.js +14 -15
  792. package/dist/core/retrieval/stages.js.map +1 -1
  793. package/dist/core/retrieval/types.d.ts.map +1 -1
  794. package/dist/core/retrieval/types.js.map +1 -1
  795. package/dist/core/session/index.d.ts +1 -1
  796. package/dist/core/session/index.d.ts.map +1 -1
  797. package/dist/core/session/index.js +1 -1
  798. package/dist/core/session/index.js.map +1 -1
  799. package/dist/core/session/roadmap-sync.d.ts.map +1 -1
  800. package/dist/core/session/roadmap-sync.js +10 -10
  801. package/dist/core/session/roadmap-sync.js.map +1 -1
  802. package/dist/core/spec-analyzer/feedback.d.ts +1 -1
  803. package/dist/core/spec-analyzer/feedback.d.ts.map +1 -1
  804. package/dist/core/spec-analyzer/feedback.js +8 -4
  805. package/dist/core/spec-analyzer/feedback.js.map +1 -1
  806. package/dist/core/spec-analyzer/index.d.ts +3 -3
  807. package/dist/core/spec-analyzer/index.d.ts.map +1 -1
  808. package/dist/core/spec-analyzer/index.js +4 -4
  809. package/dist/core/spec-analyzer/index.js.map +1 -1
  810. package/dist/core/spec-analyzer/learning-engine.d.ts +1 -1
  811. package/dist/core/spec-analyzer/learning-engine.d.ts.map +1 -1
  812. package/dist/core/spec-analyzer/learning-engine.js +6 -4
  813. package/dist/core/spec-analyzer/learning-engine.js.map +1 -1
  814. package/dist/core/spec-analyzer/outcome-store.d.ts +1 -1
  815. package/dist/core/spec-analyzer/outcome-store.d.ts.map +1 -1
  816. package/dist/core/spec-analyzer/outcome-store.js +11 -17
  817. package/dist/core/spec-analyzer/outcome-store.js.map +1 -1
  818. package/dist/core/spec-analyzer/question-context.d.ts.map +1 -1
  819. package/dist/core/spec-analyzer/question-context.js +6 -13
  820. package/dist/core/spec-analyzer/question-context.js.map +1 -1
  821. package/dist/core/spec-analyzer/question-generator.d.ts.map +1 -1
  822. package/dist/core/spec-analyzer/question-generator.js +7 -8
  823. package/dist/core/spec-analyzer/question-generator.js.map +1 -1
  824. package/dist/core/spec-analyzer/question-templates.d.ts.map +1 -1
  825. package/dist/core/spec-analyzer/question-templates.js +6 -12
  826. package/dist/core/spec-analyzer/question-templates.js.map +1 -1
  827. package/dist/core/spec-analyzer/question-types.d.ts.map +1 -1
  828. package/dist/core/spec-analyzer/question-types.js.map +1 -1
  829. package/dist/core/spec-analyzer/types.d.ts.map +1 -1
  830. package/dist/core/spec-analyzer/types.js.map +1 -1
  831. package/dist/core/tasks/index.d.ts +2 -2
  832. package/dist/core/tasks/index.d.ts.map +1 -1
  833. package/dist/core/tasks/index.js +7 -7
  834. package/dist/core/tasks/index.js.map +1 -1
  835. package/dist/core/tasks/registry.d.ts +1 -1
  836. package/dist/core/tasks/registry.d.ts.map +1 -1
  837. package/dist/core/tasks/registry.js.map +1 -1
  838. package/dist/core/tasks/todo-sync.d.ts +1 -1
  839. package/dist/core/tasks/todo-sync.d.ts.map +1 -1
  840. package/dist/core/tasks/todo-sync.js +2 -2
  841. package/dist/core/tasks/todo-sync.js.map +1 -1
  842. package/dist/core/tasks/types.d.ts.map +1 -1
  843. package/dist/core/tasks/types.js.map +1 -1
  844. package/dist/core/test-optimization/file-test-mapper.d.ts +1 -1
  845. package/dist/core/test-optimization/file-test-mapper.d.ts.map +1 -1
  846. package/dist/core/test-optimization/file-test-mapper.js +2 -2
  847. package/dist/core/test-optimization/file-test-mapper.js.map +1 -1
  848. package/dist/core/test-optimization/impact-analyzer.d.ts.map +1 -1
  849. package/dist/core/test-optimization/impact-analyzer.js +4 -4
  850. package/dist/core/test-optimization/impact-analyzer.js.map +1 -1
  851. package/dist/core/test-optimization/index.d.ts +6 -6
  852. package/dist/core/test-optimization/index.d.ts.map +1 -1
  853. package/dist/core/test-optimization/index.js +6 -6
  854. package/dist/core/test-optimization/index.js.map +1 -1
  855. package/dist/core/test-optimization/scope-analyzer.d.ts +1 -1
  856. package/dist/core/test-optimization/scope-analyzer.d.ts.map +1 -1
  857. package/dist/core/test-optimization/scope-analyzer.js +14 -14
  858. package/dist/core/test-optimization/scope-analyzer.js.map +1 -1
  859. package/dist/core/test-optimization/test-state-manager.d.ts +1 -1
  860. package/dist/core/test-optimization/test-state-manager.d.ts.map +1 -1
  861. package/dist/core/test-optimization/test-state-manager.js.map +1 -1
  862. package/dist/core/test-optimization/types.d.ts.map +1 -1
  863. package/dist/core/traces/context-transitions.d.ts +1 -1
  864. package/dist/core/traces/context-transitions.d.ts.map +1 -1
  865. package/dist/core/traces/context-transitions.js +5 -7
  866. package/dist/core/traces/context-transitions.js.map +1 -1
  867. package/dist/core/traces/execution-tree.d.ts +1 -1
  868. package/dist/core/traces/execution-tree.d.ts.map +1 -1
  869. package/dist/core/traces/execution-tree.js +16 -10
  870. package/dist/core/traces/execution-tree.js.map +1 -1
  871. package/dist/core/traces/index.d.ts +6 -6
  872. package/dist/core/traces/index.d.ts.map +1 -1
  873. package/dist/core/traces/index.js +16 -16
  874. package/dist/core/traces/index.js.map +1 -1
  875. package/dist/core/traces/memory-access-log.d.ts +1 -1
  876. package/dist/core/traces/memory-access-log.d.ts.map +1 -1
  877. package/dist/core/traces/memory-access-log.js +21 -15
  878. package/dist/core/traces/memory-access-log.js.map +1 -1
  879. package/dist/core/traces/trace-exporter.d.ts +1 -1
  880. package/dist/core/traces/trace-exporter.d.ts.map +1 -1
  881. package/dist/core/traces/trace-exporter.js +533 -522
  882. package/dist/core/traces/trace-exporter.js.map +1 -1
  883. package/dist/core/traces/types.d.ts.map +1 -1
  884. package/dist/core/traces/types.js.map +1 -1
  885. package/dist/core/updater/index.d.ts +3 -3
  886. package/dist/core/updater/index.d.ts.map +1 -1
  887. package/dist/core/updater/index.js +3 -3
  888. package/dist/core/updater/index.js.map +1 -1
  889. package/dist/core/updater/types.d.ts.map +1 -1
  890. package/dist/core/updater/types.js.map +1 -1
  891. package/dist/core/updater/update-executor.d.ts +1 -1
  892. package/dist/core/updater/update-executor.d.ts.map +1 -1
  893. package/dist/core/updater/update-executor.js +5 -5
  894. package/dist/core/updater/update-executor.js.map +1 -1
  895. package/dist/core/updater/version-checker.d.ts +1 -1
  896. package/dist/core/updater/version-checker.d.ts.map +1 -1
  897. package/dist/core/updater/version-checker.js +2 -2
  898. package/dist/core/updater/version-checker.js.map +1 -1
  899. package/dist/core/validation/ambiguity-detector.d.ts +1 -1
  900. package/dist/core/validation/ambiguity-detector.d.ts.map +1 -1
  901. package/dist/core/validation/ambiguity-detector.js +1 -1
  902. package/dist/core/validation/ambiguity-detector.js.map +1 -1
  903. package/dist/core/validation/confidence-display.d.ts.map +1 -1
  904. package/dist/core/validation/confidence-display.js +1 -1
  905. package/dist/core/validation/confidence-display.js.map +1 -1
  906. package/dist/core/validation/confidence-scorer.d.ts +1 -1
  907. package/dist/core/validation/confidence-scorer.d.ts.map +1 -1
  908. package/dist/core/validation/confidence-scorer.js +2 -3
  909. package/dist/core/validation/confidence-scorer.js.map +1 -1
  910. package/dist/core/validation/edge-case-analyzer.d.ts +1 -1
  911. package/dist/core/validation/edge-case-analyzer.d.ts.map +1 -1
  912. package/dist/core/validation/edge-case-analyzer.js +1 -1
  913. package/dist/core/validation/edge-case-analyzer.js.map +1 -1
  914. package/dist/core/validation/engine.d.ts +2 -2
  915. package/dist/core/validation/engine.d.ts.map +1 -1
  916. package/dist/core/validation/engine.js +4 -4
  917. package/dist/core/validation/engine.js.map +1 -1
  918. package/dist/core/validation/impact-assessor.d.ts +1 -1
  919. package/dist/core/validation/impact-assessor.d.ts.map +1 -1
  920. package/dist/core/validation/impact-assessor.js +5 -1
  921. package/dist/core/validation/impact-assessor.js.map +1 -1
  922. package/dist/core/validation/index.d.ts +11 -11
  923. package/dist/core/validation/index.d.ts.map +1 -1
  924. package/dist/core/validation/index.js +11 -11
  925. package/dist/core/validation/index.js.map +1 -1
  926. package/dist/core/validation/pattern-trust.d.ts.map +1 -1
  927. package/dist/core/validation/pattern-trust.js +2 -2
  928. package/dist/core/validation/pattern-trust.js.map +1 -1
  929. package/dist/core/validation/question-generator.d.ts +1 -1
  930. package/dist/core/validation/question-generator.d.ts.map +1 -1
  931. package/dist/core/validation/question-generator.js +10 -6
  932. package/dist/core/validation/question-generator.js.map +1 -1
  933. package/dist/core/validation/rules.d.ts +1 -1
  934. package/dist/core/validation/rules.d.ts.map +1 -1
  935. package/dist/core/validation/rules.js +2 -2
  936. package/dist/core/validation/rules.js.map +1 -1
  937. package/dist/core/validation/types.d.ts.map +1 -1
  938. package/dist/hooks/index.d.ts +2 -5
  939. package/dist/hooks/index.d.ts.map +1 -1
  940. package/dist/hooks/index.js +3 -6
  941. package/dist/hooks/index.js.map +1 -1
  942. package/dist/hooks/post-edit.js +692 -619
  943. package/dist/hooks/post-edit.js.map +1 -1
  944. package/dist/hooks/post-execution.js +615 -615
  945. package/dist/hooks/post-execution.js.map +1 -1
  946. package/dist/hooks/pre-compact.js +331 -331
  947. package/dist/hooks/pre-compact.js.map +1 -1
  948. package/dist/hooks/pre-tool-use.js +309 -309
  949. package/dist/hooks/pre-tool-use.js.map +1 -1
  950. package/dist/hooks/pre-validate.js +542 -542
  951. package/dist/hooks/pre-validate.js.map +1 -1
  952. package/dist/hooks/session-end.js +157 -157
  953. package/dist/hooks/session-end.js.map +1 -1
  954. package/dist/hooks/session-start-verify.d.ts.map +1 -1
  955. package/dist/hooks/session-start-verify.js +6 -7
  956. package/dist/hooks/session-start-verify.js.map +1 -1
  957. package/dist/hooks/session-start.js +494 -379
  958. package/dist/hooks/session-start.js.map +1 -1
  959. package/dist/hooks/shared/index.d.ts +1 -1
  960. package/dist/hooks/shared/index.d.ts.map +1 -1
  961. package/dist/hooks/shared/index.js +39 -46
  962. package/dist/hooks/shared/index.js.map +1 -1
  963. package/dist/hooks/shared/paths.js +27 -27
  964. package/dist/hooks/shared/paths.js.map +1 -1
  965. package/dist/hooks/shared/session.d.ts.map +1 -1
  966. package/dist/hooks/shared/session.js +59 -59
  967. package/dist/hooks/shared/session.js.map +1 -1
  968. package/dist/hooks/shared/utils.d.ts +1 -1
  969. package/dist/hooks/shared/utils.d.ts.map +1 -1
  970. package/dist/hooks/shared/utils.js +43 -43
  971. package/dist/hooks/shared/utils.js.map +1 -1
  972. package/dist/hooks/subagent-start.js.map +1 -1
  973. package/dist/hooks/subagent-stop.js +222 -222
  974. package/dist/hooks/subagent-stop.js.map +1 -1
  975. package/dist/hooks/types.d.ts.map +1 -1
  976. package/dist/hooks/types.js +1 -1
  977. package/dist/hooks/types.js.map +1 -1
  978. package/dist/hooks/user-prompt-submit.js +951 -851
  979. package/dist/hooks/user-prompt-submit.js.map +1 -1
  980. package/dist/hud/config-counter.js +2 -5
  981. package/dist/hud/config-counter.js.map +1 -1
  982. package/dist/hud/config.d.ts +3 -28
  983. package/dist/hud/config.d.ts.map +1 -1
  984. package/dist/hud/config.js +9 -61
  985. package/dist/hud/config.js.map +1 -1
  986. package/dist/hud/context-tracker.d.ts.map +1 -1
  987. package/dist/hud/context-tracker.js +1 -1
  988. package/dist/hud/context-tracker.js.map +1 -1
  989. package/dist/hud/index.d.ts +10 -10
  990. package/dist/hud/index.d.ts.map +1 -1
  991. package/dist/hud/index.js +21 -20
  992. package/dist/hud/index.js.map +1 -1
  993. package/dist/hud/mcp-status.js +1 -1
  994. package/dist/hud/mcp-status.js.map +1 -1
  995. package/dist/hud/plan-detector.js +1 -1
  996. package/dist/hud/plan-detector.js.map +1 -1
  997. package/dist/hud/render/agent-status.d.ts.map +1 -1
  998. package/dist/hud/render/agent-status.js +4 -8
  999. package/dist/hud/render/agent-status.js.map +1 -1
  1000. package/dist/hud/render/blockers-badge.d.ts +1 -1
  1001. package/dist/hud/render/blockers-badge.d.ts.map +1 -1
  1002. package/dist/hud/render/blockers-badge.js.map +1 -1
  1003. package/dist/hud/render/budget-bar.d.ts +1 -3
  1004. package/dist/hud/render/budget-bar.d.ts.map +1 -1
  1005. package/dist/hud/render/budget-bar.js +5 -9
  1006. package/dist/hud/render/budget-bar.js.map +1 -1
  1007. package/dist/hud/render/budget-pressure.d.ts +1 -1
  1008. package/dist/hud/render/budget-pressure.d.ts.map +1 -1
  1009. package/dist/hud/render/budget-pressure.js.map +1 -1
  1010. package/dist/hud/render/cache-stats.d.ts +1 -1
  1011. package/dist/hud/render/cache-stats.d.ts.map +1 -1
  1012. package/dist/hud/render/cache-stats.js.map +1 -1
  1013. package/dist/hud/render/circuit.d.ts +1 -1
  1014. package/dist/hud/render/circuit.d.ts.map +1 -1
  1015. package/dist/hud/render/circuit.js +2 -6
  1016. package/dist/hud/render/circuit.js.map +1 -1
  1017. package/dist/hud/render/config-counts.js.map +1 -1
  1018. package/dist/hud/render/context-health.d.ts +1 -1
  1019. package/dist/hud/render/context-health.d.ts.map +1 -1
  1020. package/dist/hud/render/context-health.js.map +1 -1
  1021. package/dist/hud/render/cost-display.d.ts +1 -1
  1022. package/dist/hud/render/cost-display.d.ts.map +1 -1
  1023. package/dist/hud/render/cost-display.js.map +1 -1
  1024. package/dist/hud/render/deferred-status.d.ts +1 -1
  1025. package/dist/hud/render/deferred-status.d.ts.map +1 -1
  1026. package/dist/hud/render/deferred-status.js.map +1 -1
  1027. package/dist/hud/render/focus-display.d.ts +1 -1
  1028. package/dist/hud/render/focus-display.d.ts.map +1 -1
  1029. package/dist/hud/render/focus-display.js +2 -2
  1030. package/dist/hud/render/focus-display.js.map +1 -1
  1031. package/dist/hud/render/git-status.d.ts +1 -1
  1032. package/dist/hud/render/git-status.d.ts.map +1 -1
  1033. package/dist/hud/render/git-status.js +1 -1
  1034. package/dist/hud/render/git-status.js.map +1 -1
  1035. package/dist/hud/render/index.d.ts +19 -19
  1036. package/dist/hud/render/index.d.ts.map +1 -1
  1037. package/dist/hud/render/index.js +29 -29
  1038. package/dist/hud/render/index.js.map +1 -1
  1039. package/dist/hud/render/layouts.d.ts +1 -1
  1040. package/dist/hud/render/layouts.d.ts.map +1 -1
  1041. package/dist/hud/render/layouts.js +20 -18
  1042. package/dist/hud/render/layouts.js.map +1 -1
  1043. package/dist/hud/render/model-plan.d.ts.map +1 -1
  1044. package/dist/hud/render/model-plan.js.map +1 -1
  1045. package/dist/hud/render/phase-indicator.d.ts.map +1 -1
  1046. package/dist/hud/render/phase-indicator.js.map +1 -1
  1047. package/dist/hud/render/session-limit.d.ts +1 -1
  1048. package/dist/hud/render/session-limit.d.ts.map +1 -1
  1049. package/dist/hud/render/session-limit.js +0 -1
  1050. package/dist/hud/render/session-limit.js.map +1 -1
  1051. package/dist/hud/render/session-timer.js.map +1 -1
  1052. package/dist/hud/render/status-icons.d.ts +1 -1
  1053. package/dist/hud/render/status-icons.d.ts.map +1 -1
  1054. package/dist/hud/render/status-icons.js +1 -3
  1055. package/dist/hud/render/status-icons.js.map +1 -1
  1056. package/dist/hud/render/todo-progress.d.ts +1 -1
  1057. package/dist/hud/render/todo-progress.d.ts.map +1 -1
  1058. package/dist/hud/render/todo-progress.js +10 -14
  1059. package/dist/hud/render/todo-progress.js.map +1 -1
  1060. package/dist/hud/render/tool-usage.d.ts +1 -1
  1061. package/dist/hud/render/tool-usage.d.ts.map +1 -1
  1062. package/dist/hud/render/tool-usage.js +4 -8
  1063. package/dist/hud/render/tool-usage.js.map +1 -1
  1064. package/dist/hud/render/tools.d.ts.map +1 -1
  1065. package/dist/hud/render/tools.js +3 -7
  1066. package/dist/hud/render/tools.js.map +1 -1
  1067. package/dist/hud/render/weekly-usage.d.ts +1 -1
  1068. package/dist/hud/render/weekly-usage.d.ts.map +1 -1
  1069. package/dist/hud/render/weekly-usage.js +0 -1
  1070. package/dist/hud/render/weekly-usage.js.map +1 -1
  1071. package/dist/hud/session-reader.js +4 -4
  1072. package/dist/hud/session-reader.js.map +1 -1
  1073. package/dist/hud/stdin.d.ts +0 -3
  1074. package/dist/hud/stdin.d.ts.map +1 -1
  1075. package/dist/hud/stdin.js +10 -35
  1076. package/dist/hud/stdin.js.map +1 -1
  1077. package/dist/hud/transcript-reader.d.ts +1 -1
  1078. package/dist/hud/transcript-reader.d.ts.map +1 -1
  1079. package/dist/hud/transcript-reader.js +10 -16
  1080. package/dist/hud/transcript-reader.js.map +1 -1
  1081. package/dist/hud/types.d.ts +1 -3
  1082. package/dist/hud/types.d.ts.map +1 -1
  1083. package/dist/hud/usage-api.d.ts.map +1 -1
  1084. package/dist/hud/usage-api.js +4 -4
  1085. package/dist/hud/usage-api.js.map +1 -1
  1086. package/dist/hud/usage-rotation.d.ts.map +1 -1
  1087. package/dist/hud/usage-rotation.js +2 -2
  1088. package/dist/hud/usage-rotation.js.map +1 -1
  1089. package/dist/hud/usage-tracker.d.ts +1 -1
  1090. package/dist/hud/usage-tracker.d.ts.map +1 -1
  1091. package/dist/hud/usage-tracker.js +7 -7
  1092. package/dist/hud/usage-tracker.js.map +1 -1
  1093. package/dist/index.d.ts +1 -1
  1094. package/dist/index.d.ts.map +1 -1
  1095. package/dist/index.js +1 -1
  1096. package/dist/index.js.map +1 -1
  1097. package/dist/mcp/cache.d.ts.map +1 -1
  1098. package/dist/mcp/cache.js.map +1 -1
  1099. package/dist/mcp/focus-filter.d.ts +74 -0
  1100. package/dist/mcp/focus-filter.d.ts.map +1 -0
  1101. package/dist/mcp/focus-filter.js +229 -0
  1102. package/dist/mcp/focus-filter.js.map +1 -0
  1103. package/dist/mcp/index.d.ts +3 -3
  1104. package/dist/mcp/index.d.ts.map +1 -1
  1105. package/dist/mcp/index.js +9 -9
  1106. package/dist/mcp/index.js.map +1 -1
  1107. package/dist/mcp/registry.d.ts.map +1 -1
  1108. package/dist/mcp/registry.js +9 -9
  1109. package/dist/mcp/registry.js.map +1 -1
  1110. package/dist/mcp/resources/index.d.ts.map +1 -1
  1111. package/dist/mcp/resources/index.js +20 -13
  1112. package/dist/mcp/resources/index.js.map +1 -1
  1113. package/dist/mcp/server.d.ts +3 -2
  1114. package/dist/mcp/server.d.ts.map +1 -1
  1115. package/dist/mcp/server.js +28 -13
  1116. package/dist/mcp/server.js.map +1 -1
  1117. package/dist/mcp/setup.d.ts.map +1 -1
  1118. package/dist/mcp/setup.js +5 -2
  1119. package/dist/mcp/setup.js.map +1 -1
  1120. package/dist/mcp/tool-catalog.d.ts.map +1 -1
  1121. package/dist/mcp/tool-catalog.js +43 -15
  1122. package/dist/mcp/tool-catalog.js.map +1 -1
  1123. package/dist/mcp/tool-loader.d.ts +2 -2
  1124. package/dist/mcp/tool-loader.d.ts.map +1 -1
  1125. package/dist/mcp/tool-loader.js +1 -1
  1126. package/dist/mcp/tool-loader.js.map +1 -1
  1127. package/dist/mcp/tool-recommender.d.ts +1 -1
  1128. package/dist/mcp/tool-recommender.d.ts.map +1 -1
  1129. package/dist/mcp/tool-recommender.js +101 -26
  1130. package/dist/mcp/tool-recommender.js.map +1 -1
  1131. package/dist/mcp/tool-tiers.d.ts.map +1 -1
  1132. package/dist/mcp/tool-tiers.js.map +1 -1
  1133. package/dist/mcp/tools/agents.d.ts.map +1 -1
  1134. package/dist/mcp/tools/agents.js +93 -59
  1135. package/dist/mcp/tools/agents.js.map +1 -1
  1136. package/dist/mcp/tools/auto-inject.d.ts +36 -0
  1137. package/dist/mcp/tools/auto-inject.d.ts.map +1 -0
  1138. package/dist/mcp/tools/auto-inject.js +143 -0
  1139. package/dist/mcp/tools/auto-inject.js.map +1 -0
  1140. package/dist/mcp/tools/auto-unload.d.ts +29 -0
  1141. package/dist/mcp/tools/auto-unload.d.ts.map +1 -0
  1142. package/dist/mcp/tools/auto-unload.js +148 -0
  1143. package/dist/mcp/tools/auto-unload.js.map +1 -0
  1144. package/dist/mcp/tools/chunking.d.ts.map +1 -1
  1145. package/dist/mcp/tools/chunking.js +8 -12
  1146. package/dist/mcp/tools/chunking.js.map +1 -1
  1147. package/dist/mcp/tools/effort.d.ts.map +1 -1
  1148. package/dist/mcp/tools/effort.js +8 -7
  1149. package/dist/mcp/tools/effort.js.map +1 -1
  1150. package/dist/mcp/tools/embeddings.d.ts.map +1 -1
  1151. package/dist/mcp/tools/embeddings.js +3 -3
  1152. package/dist/mcp/tools/embeddings.js.map +1 -1
  1153. package/dist/mcp/tools/health.d.ts +29 -0
  1154. package/dist/mcp/tools/health.d.ts.map +1 -0
  1155. package/dist/mcp/tools/health.js +168 -0
  1156. package/dist/mcp/tools/health.js.map +1 -0
  1157. package/dist/mcp/tools/index.d.ts +20 -16
  1158. package/dist/mcp/tools/index.d.ts.map +1 -1
  1159. package/dist/mcp/tools/index.js +33 -18
  1160. package/dist/mcp/tools/index.js.map +1 -1
  1161. package/dist/mcp/tools/knowledge-graph.d.ts +1 -1
  1162. package/dist/mcp/tools/knowledge-graph.d.ts.map +1 -1
  1163. package/dist/mcp/tools/knowledge-graph.js +31 -16
  1164. package/dist/mcp/tools/knowledge-graph.js.map +1 -1
  1165. package/dist/mcp/tools/lazy-context.d.ts +1 -1
  1166. package/dist/mcp/tools/lazy-context.d.ts.map +1 -1
  1167. package/dist/mcp/tools/lazy-context.js +15 -13
  1168. package/dist/mcp/tools/lazy-context.js.map +1 -1
  1169. package/dist/mcp/tools/memory.d.ts.map +1 -1
  1170. package/dist/mcp/tools/memory.js +4 -4
  1171. package/dist/mcp/tools/memory.js.map +1 -1
  1172. package/dist/mcp/tools/observability.d.ts.map +1 -1
  1173. package/dist/mcp/tools/observability.js +47 -43
  1174. package/dist/mcp/tools/observability.js.map +1 -1
  1175. package/dist/mcp/tools/plans.d.ts.map +1 -1
  1176. package/dist/mcp/tools/plans.js +3 -7
  1177. package/dist/mcp/tools/plans.js.map +1 -1
  1178. package/dist/mcp/tools/ralph.d.ts +1 -1
  1179. package/dist/mcp/tools/ralph.d.ts.map +1 -1
  1180. package/dist/mcp/tools/ralph.js +36 -33
  1181. package/dist/mcp/tools/ralph.js.map +1 -1
  1182. package/dist/mcp/tools/retrieval.d.ts.map +1 -1
  1183. package/dist/mcp/tools/retrieval.js +10 -14
  1184. package/dist/mcp/tools/retrieval.js.map +1 -1
  1185. package/dist/mcp/tools/scripts.d.ts.map +1 -1
  1186. package/dist/mcp/tools/scripts.js +42 -42
  1187. package/dist/mcp/tools/scripts.js.map +1 -1
  1188. package/dist/mcp/tools/session.d.ts.map +1 -1
  1189. package/dist/mcp/tools/session.js +74 -75
  1190. package/dist/mcp/tools/session.js.map +1 -1
  1191. package/dist/mcp/tools/spec-feedback.d.ts.map +1 -1
  1192. package/dist/mcp/tools/spec-feedback.js +9 -10
  1193. package/dist/mcp/tools/spec-feedback.js.map +1 -1
  1194. package/dist/mcp/tools/tasks.d.ts.map +1 -1
  1195. package/dist/mcp/tools/tasks.js +11 -7
  1196. package/dist/mcp/tools/tasks.js.map +1 -1
  1197. package/dist/mcp/types.d.ts.map +1 -1
  1198. package/dist/mcp/types.js.map +1 -1
  1199. package/dist/mcp/utils/format-helpers.d.ts.map +1 -1
  1200. package/dist/mcp/utils/format-helpers.js +10 -8
  1201. package/dist/mcp/utils/format-helpers.js.map +1 -1
  1202. package/dist/mcp/utils/index.d.ts +4 -4
  1203. package/dist/mcp/utils/index.d.ts.map +1 -1
  1204. package/dist/mcp/utils/index.js +14 -14
  1205. package/dist/mcp/utils/index.js.map +1 -1
  1206. package/dist/mcp/utils/response-builder.d.ts +1 -1
  1207. package/dist/mcp/utils/response-builder.d.ts.map +1 -1
  1208. package/dist/mcp/utils/response-builder.js +2 -6
  1209. package/dist/mcp/utils/response-builder.js.map +1 -1
  1210. package/dist/mcp/utils/response-helpers.d.ts.map +1 -1
  1211. package/dist/mcp/utils/response-helpers.js.map +1 -1
  1212. package/dist/mcp/utils/session-helpers.d.ts.map +1 -1
  1213. package/dist/mcp/utils/session-helpers.js +6 -10
  1214. package/dist/mcp/utils/session-helpers.js.map +1 -1
  1215. package/dist/mcp-server.d.ts.map +1 -1
  1216. package/dist/mcp-server.js +14 -10
  1217. package/dist/mcp-server.js.map +1 -1
  1218. package/dist/plugin/index.d.ts.map +1 -1
  1219. package/dist/plugin/index.js +6 -16
  1220. package/dist/plugin/index.js.map +1 -1
  1221. package/dist/plugin/loader.d.ts +1 -1
  1222. package/dist/plugin/loader.d.ts.map +1 -1
  1223. package/dist/plugin/loader.js +1 -1
  1224. package/dist/plugin/loader.js.map +1 -1
  1225. package/dist/rules/index.d.ts.map +1 -1
  1226. package/dist/rules/index.js +799 -799
  1227. package/dist/rules/index.js.map +1 -1
  1228. package/dist/skills/index.d.ts.map +1 -1
  1229. package/dist/skills/index.js +926 -896
  1230. package/dist/skills/index.js.map +1 -1
  1231. package/dist/statusline/index.d.ts.map +1 -1
  1232. package/dist/statusline/index.js +55 -55
  1233. package/dist/statusline/index.js.map +1 -1
  1234. package/dist/store/index.d.ts +4 -4
  1235. package/dist/store/index.d.ts.map +1 -1
  1236. package/dist/store/index.js +5 -5
  1237. package/dist/store/index.js.map +1 -1
  1238. package/dist/store/installer.d.ts +1 -1
  1239. package/dist/store/installer.d.ts.map +1 -1
  1240. package/dist/store/installer.js +19 -13
  1241. package/dist/store/installer.js.map +1 -1
  1242. package/dist/store/registry.d.ts +1 -1
  1243. package/dist/store/registry.d.ts.map +1 -1
  1244. package/dist/store/registry.js +2 -2
  1245. package/dist/store/registry.js.map +1 -1
  1246. package/dist/store/remote.d.ts +1 -1
  1247. package/dist/store/remote.d.ts.map +1 -1
  1248. package/dist/store/remote.js +9 -6
  1249. package/dist/store/remote.js.map +1 -1
  1250. package/dist/store/types.d.ts.map +1 -1
  1251. package/dist/store/types.js.map +1 -1
  1252. package/dist/utils/ascii-art.js +11 -11
  1253. package/dist/utils/ascii-art.js.map +1 -1
  1254. package/dist/utils/exec.d.ts.map +1 -1
  1255. package/dist/utils/exec.js.map +1 -1
  1256. package/dist/utils/file-system.d.ts.map +1 -1
  1257. package/dist/utils/file-system.js +13 -14
  1258. package/dist/utils/file-system.js.map +1 -1
  1259. package/dist/utils/gitignore.d.ts.map +1 -1
  1260. package/dist/utils/gitignore.js +39 -34
  1261. package/dist/utils/gitignore.js.map +1 -1
  1262. package/dist/utils/validation.d.ts.map +1 -1
  1263. package/dist/utils/validation.js +1 -1
  1264. package/dist/utils/validation.js.map +1 -1
  1265. package/package.json +6 -3
  1266. package/dist/hud/config-tui.d.ts +0 -25
  1267. package/dist/hud/config-tui.d.ts.map +0 -1
  1268. package/dist/hud/config-tui.js +0 -199
  1269. package/dist/hud/config-tui.js.map +0 -1
  1270. package/dist/hud/models.d.ts +0 -58
  1271. package/dist/hud/models.d.ts.map +0 -1
  1272. package/dist/hud/models.js +0 -124
  1273. package/dist/hud/models.js.map +0 -1
  1274. package/dist/hud/token-estimator.d.ts +0 -79
  1275. package/dist/hud/token-estimator.d.ts.map +0 -1
  1276. package/dist/hud/token-estimator.js +0 -126
  1277. package/dist/hud/token-estimator.js.map +0 -1
@@ -30,7 +30,7 @@
30
30
  * - Updates changedSinceTest array when files are edited
31
31
  */
32
32
  import { VERSION } from '../core/config.js';
33
- import { paths, utils, generateCacheBreakDetection, generateTimestamps } from './shared/index.js';
33
+ import { generateCacheBreakDetection, generateTimestamps, paths, utils } from './shared/index.js';
34
34
  /**
35
35
  * Generate post-edit script
36
36
  */
@@ -45,306 +45,344 @@ export function generatePostEditScript(options) {
45
45
  */
46
46
  function generatePowerShellScript() {
47
47
  const platform = 'win32';
48
- return `${utils.scriptHeader(platform, VERSION, 'post-edit hook')}
49
-
50
- # Get tool input from environment
51
- ${utils.parseToolInput(platform)}
52
-
53
- # Parse file path and edit details
54
- ${utils.extractFilePath(platform)}
55
-
56
- # v6.0.0: Capture edit scope from TOOL_INPUT
57
- $oldString = $input.old_string
58
- $newString = $input.new_string
59
- $editType = "edit"
60
- if ($input.content) { $editType = "write" }
61
-
62
- # Find .dino directory
63
- ${paths.getDinoDir(platform)}
64
- ${paths.checkDinoDirExists(platform)}
65
-
66
- # Extract relative path
67
- $relativePath = $filePath
68
- if ($filePath.StartsWith($PWD.Path)) {
69
- $relativePath = $filePath.Substring($PWD.Path.Length + 1)
70
- }
71
- $relativePath = $relativePath -replace '\\\\', '/'
72
-
73
- # Get filename and directory
74
- $fileName = Split-Path $relativePath -Leaf
75
- $directory = Split-Path $relativePath -Parent
76
- if (-not $directory) { $directory = "." }
77
- $directory = $directory -replace '\\\\', '/'
78
-
79
- # Classify the file
80
- $category = "code"
81
- $pendingAction = $null
82
-
83
- # Dependency files (high significance)
84
- $dependencyFiles = @(
85
- "package.json", "package-lock.json", "pnpm-lock.yaml", "yarn.lock", "bun.lockb",
86
- "requirements.txt", "Pipfile", "Pipfile.lock", "pyproject.toml", "poetry.lock",
87
- "Cargo.toml", "Cargo.lock", "go.mod", "go.sum", "Gemfile", "Gemfile.lock",
88
- "composer.json", "composer.lock"
89
- )
90
- if ($fileName -in $dependencyFiles) {
91
- $category = "dependency"
92
- $pendingAction = "Run npm/pnpm/yarn install after dependency changes"
93
- }
94
-
95
- # Config files (medium significance)
96
- $configFiles = @(
97
- "tsconfig.json", "jsconfig.json", ".eslintrc", ".eslintrc.js", ".eslintrc.json",
98
- ".prettierrc", ".prettierrc.js", ".prettierrc.json", "vitest.config.ts", "vitest.config.js",
99
- "jest.config.js", "jest.config.ts", "webpack.config.js", "vite.config.ts", "vite.config.js",
100
- "rollup.config.js", ".babelrc", "babel.config.js", ".env", ".env.local",
101
- "Dockerfile", "docker-compose.yml", ".gitignore", ".npmrc", ".nvmrc"
102
- )
103
- if ($fileName -in $configFiles) {
104
- $category = "config"
105
- }
106
-
107
- # Test files (medium significance)
108
- if ($relativePath -match '\\.(test|spec)\\.(ts|js|tsx|jsx)$' -or
109
- $relativePath -match '_(test|spec)\\.(ts|js|tsx|jsx)$' -or
110
- $relativePath -match '^(__tests__|tests?)/') {
111
- $category = "test"
112
- }
113
-
114
- # Documentation files (low significance)
115
- if ($relativePath -match '\\.md$' -or
116
- $relativePath -match '^(docs?|documentation)/' -or
117
- $fileName -match '^(readme|changelog|license)') {
118
- $category = "documentation"
119
- }
120
-
121
- # Structural/entry point files (high significance)
122
- if ($fileName -match '^(index|main|app|server|cli)\\.(ts|js|tsx|jsx)$') {
123
- $category = "structural"
124
- }
125
-
126
- # Get timestamps
127
- ${generateTimestamps(platform)}
128
-
129
- # Read session.md
130
- ${paths.getSessionPath(platform)}
131
- ${paths.checkSessionExists(platform)}
132
-
133
- $content = Get-Content $sessionPath -Raw
134
-
135
- # === Update Recent Changes ===
136
- $changeEntry = "$timestamp [$category] $relativePath"
137
-
138
- if ($content -match "(## Recent Changes\\s*\\n)([^#]*)") {
139
- $existingChanges = $matches[2].Trim()
140
- $changes = @()
141
- if (-not $existingChanges.StartsWith("_")) {
142
- $changes = $existingChanges -split "\\n" | Where-Object { $_.StartsWith("- ") }
143
- }
144
- $changes = @("- $changeEntry") + $changes
145
- if ($changes.Count -gt 10) {
146
- $changes = $changes[0..9]
147
- }
148
- $newChanges = $changes -join "\\n"
149
- $content = $content -replace "(## Recent Changes\\s*\\n)[^#]*", ("\$1$newChanges\\n\\n")
150
- }
151
-
152
- # === Track Edit History in JSON for Focus Detection ===
153
- $historyPath = Join-Path $dinoDir "edit-history.json"
154
- $history = @()
155
- if (Test-Path $historyPath) {
156
- try {
157
- $historyJson = Get-Content $historyPath -Raw
158
- $history = $historyJson | ConvertFrom-Json
159
- if (-not $history) { $history = @() }
160
- } catch {
161
- $history = @()
162
- }
163
- }
164
-
165
- # v6.0.0: Calculate edit scope
166
- $linesChanged = 0
167
- $changeType = "modify"
168
- if ($oldString -and $newString) {
169
- $oldLines = ($oldString -split "\\n").Count
170
- $newLines = ($newString -split "\\n").Count
171
- $linesChanged = [Math]::Abs($newLines - $oldLines) + [Math]::Min($oldLines, $newLines)
172
- if ($oldLines -lt $newLines) { $changeType = "expand" }
173
- elseif ($oldLines -gt $newLines) { $changeType = "shrink" }
174
- }
175
- if ($editType -eq "write") {
176
- $changeType = "create"
177
- if ($newString) {
178
- $linesChanged = ($newString -split "\\n").Count
179
- }
180
- }
181
-
182
- # Add new edit to history with v6.0.0 scope info
183
- $editRecord = @{
184
- timestamp = $isoTimestamp
185
- path = $relativePath
186
- directory = $directory
187
- category = $category
188
- editType = $editType
189
- changeType = $changeType
190
- linesChanged = $linesChanged
191
- }
192
- $history = @($editRecord) + $history
193
- if ($history.Count -gt 20) {
194
- $history = $history[0..19]
195
- }
196
-
197
- # Save updated history
198
- $history | ConvertTo-Json -Depth 3 | Set-Content $historyPath -Force
199
-
200
- # === Auto-Focus Detection ===
201
- # Count edits per directory
202
- $dirCounts = @{}
203
- foreach ($edit in $history) {
204
- $dir = $edit.directory
205
- if ($dir) {
206
- $dirCounts[$dir] = ($dirCounts[$dir] -as [int]) + 1
207
- }
208
- }
209
-
210
- # Find directory with most edits (minimum 3 for focus)
211
- $focusDir = $null
212
- $maxCount = 0
213
- foreach ($dir in $dirCounts.Keys) {
214
- $count = $dirCounts[$dir]
215
- if ($count -ge 3 -and $count -gt $maxCount) {
216
- $focusDir = $dir
217
- $maxCount = $count
218
- }
219
- }
220
-
221
- # Update focus if detected
222
- if ($focusDir) {
223
- $confidence = if ($maxCount -ge 5) { "high" } elseif ($maxCount -ge 3) { "medium" } else { "low" }
224
- $focusText = "$focusDir [directory-cluster, $confidence]"
225
-
226
- if ($content -match "(## Focus\\s*\\n)([^#]*)") {
227
- $content = $content -replace "(## Focus\\s*\\n)[^#]*", ("\$1$focusText\\n\\n")
228
- }
229
- }
230
-
231
- # Write back session.md
232
- Set-Content -Path $sessionPath -Value $content -NoNewline
233
-
234
- # Add pending action for high-significance changes
235
- if ($pendingAction) {
236
- $content = Get-Content $sessionPath -Raw
237
- if ($content -notmatch [regex]::Escape($pendingAction)) {
238
- if ($content -match "(## Pending Actions\\s*\\n)([^#]*)") {
239
- $existingActions = $matches[2].Trim()
240
- if ($existingActions.StartsWith("_")) {
241
- $newActions = "- $pendingAction"
242
- } else {
243
- $newActions = "- $pendingAction\\n$existingActions"
244
- }
245
- $content = $content -replace "(## Pending Actions\\s*\\n)[^#]*", ("\$1$newActions\\n\\n")
246
- Set-Content -Path $sessionPath -Value $content -NoNewline
247
- }
248
- }
249
- }
250
-
251
- # === v9.7.0: Cache Break Detection ===
252
- ${generateCacheBreakDetection(platform)}
253
- if ($isCacheBreak) {
254
- Write-Host ""
255
- Write-Host "[dino] Warning: Edited stable prefix file: $relativePath" -ForegroundColor Yellow
256
- Write-Host "[dino] This may invalidate Claude Code's context cache for this project." -ForegroundColor Yellow
257
- Write-Host "[dino] Cache rebuild will occur on next conversation." -ForegroundColor DarkGray
258
-
259
- # === v9.15.0: Persist cache break events for trend analysis ===
260
- $cacheBreaksPath = Join-Path $dinoDir "cache-breaks.json"
261
- $cacheBreaks = @()
262
- if (Test-Path $cacheBreaksPath) {
263
- try {
264
- $cacheBreaksJson = Get-Content $cacheBreaksPath -Raw
265
- $cacheBreaks = $cacheBreaksJson | ConvertFrom-Json
266
- if (-not $cacheBreaks) { $cacheBreaks = @() }
267
- } catch {
268
- $cacheBreaks = @()
269
- }
270
- }
271
-
272
- # Add new cache break event
273
- $cacheBreakEvent = @{
274
- timestamp = $isoTimestamp
275
- file = $relativePath
276
- type = $cacheBreakType
277
- }
278
- $cacheBreaks = @($cacheBreakEvent) + $cacheBreaks
279
-
280
- # Keep last 20 events
281
- if ($cacheBreaks.Count -gt 20) {
282
- $cacheBreaks = $cacheBreaks[0..19]
283
- }
284
-
285
- # Save updated cache breaks
286
- $cacheBreaks | ConvertTo-Json -Depth 3 | Set-Content $cacheBreaksPath -Force
287
- }
288
-
289
- # === v11.2.0: Roadmap Update Reminders ===
290
- # Detect edits to feature-tracked files and remind about roadmap updates
291
- $roadmapReminder = $null
292
- $roadmapFile = $null
293
-
294
- # Ralph Loop feature files
295
- if ($relativePath -match "^src/core/ralph/" -or
296
- $relativePath -match "^src/mcp/tools/ralph" -or
297
- $relativePath -match "^test/.*ralph" -or
298
- $relativePath -match "^\\.claude/skills/dino\\.ralph/") {
299
- $roadmapFile = ".dino/roadmaps/ralph-loop-roadmap.md"
300
- $roadmapReminder = "Ralph Loop"
301
- }
302
-
303
- # Output roadmap reminder if applicable
304
- if ($roadmapReminder -and $roadmapFile) {
305
- $roadmapPath = Join-Path $PWD $roadmapFile
306
- if (Test-Path $roadmapPath) {
307
- Write-Host ""
308
- Write-Host "[dino] Reminder: You edited $roadmapReminder files" -ForegroundColor Cyan
309
- Write-Host "[dino] Consider updating: $roadmapFile" -ForegroundColor Cyan
310
- }
311
- }
312
-
313
- # === v12.3.0: Test State Tracking ===
314
- # Track file changes for smart test optimization
315
- $testStatePath = Join-Path $dinoDir "test-state.json"
316
- $testState = @{
317
- changedSinceTest = @()
318
- lastUpdated = $isoTimestamp
319
- }
320
-
321
- if (Test-Path $testStatePath) {
322
- try {
323
- $testStateJson = Get-Content $testStatePath -Raw
324
- $testState = $testStateJson | ConvertFrom-Json
325
- if (-not $testState.changedSinceTest) {
326
- $testState.changedSinceTest = @()
327
- }
328
- } catch {
329
- $testState = @{
330
- changedSinceTest = @()
331
- lastUpdated = $isoTimestamp
332
- }
333
- }
334
- }
335
-
336
- # Add file to changedSinceTest if not already present
337
- $changedFiles = [System.Collections.ArrayList]@($testState.changedSinceTest)
338
- if (-not ($changedFiles -contains $relativePath)) {
339
- $changedFiles.Add($relativePath) | Out-Null
340
- }
341
- $testState.changedSinceTest = @($changedFiles)
342
- $testState.lastUpdated = $isoTimestamp
343
-
344
- # Save updated test state
345
- $testState | ConvertTo-Json -Depth 3 | Set-Content $testStatePath -Force
346
-
347
- exit 0
48
+ return `${utils.scriptHeader(platform, VERSION, 'post-edit hook')}
49
+
50
+ # Get tool input from environment
51
+ ${utils.parseToolInput(platform)}
52
+
53
+ # Parse file path and edit details
54
+ ${utils.extractFilePath(platform)}
55
+
56
+ # v6.0.0: Capture edit scope from TOOL_INPUT
57
+ $oldString = $input.old_string
58
+ $newString = $input.new_string
59
+ $editType = "edit"
60
+ if ($input.content) { $editType = "write" }
61
+
62
+ # Find .dino directory
63
+ ${paths.getDinoDir(platform)}
64
+ ${paths.checkDinoDirExists(platform)}
65
+
66
+ # Extract relative path
67
+ $relativePath = $filePath
68
+ if ($filePath.StartsWith($PWD.Path)) {
69
+ $relativePath = $filePath.Substring($PWD.Path.Length + 1)
70
+ }
71
+ $relativePath = $relativePath -replace '\\\\', '/'
72
+
73
+ # Get filename and directory
74
+ $fileName = Split-Path $relativePath -Leaf
75
+ $directory = Split-Path $relativePath -Parent
76
+ if (-not $directory) { $directory = "." }
77
+ $directory = $directory -replace '\\\\', '/'
78
+
79
+ # Classify the file
80
+ $category = "code"
81
+ $pendingAction = $null
82
+
83
+ # Dependency files (high significance)
84
+ $dependencyFiles = @(
85
+ "package.json", "package-lock.json", "pnpm-lock.yaml", "yarn.lock", "bun.lockb",
86
+ "requirements.txt", "Pipfile", "Pipfile.lock", "pyproject.toml", "poetry.lock",
87
+ "Cargo.toml", "Cargo.lock", "go.mod", "go.sum", "Gemfile", "Gemfile.lock",
88
+ "composer.json", "composer.lock"
89
+ )
90
+ if ($fileName -in $dependencyFiles) {
91
+ $category = "dependency"
92
+ $pendingAction = "Run npm/pnpm/yarn install after dependency changes"
93
+ }
94
+
95
+ # Config files (medium significance)
96
+ $configFiles = @(
97
+ "tsconfig.json", "jsconfig.json", ".eslintrc", ".eslintrc.js", ".eslintrc.json",
98
+ ".prettierrc", ".prettierrc.js", ".prettierrc.json", "vitest.config.ts", "vitest.config.js",
99
+ "jest.config.js", "jest.config.ts", "webpack.config.js", "vite.config.ts", "vite.config.js",
100
+ "rollup.config.js", ".babelrc", "babel.config.js", ".env", ".env.local",
101
+ "Dockerfile", "docker-compose.yml", ".gitignore", ".npmrc", ".nvmrc"
102
+ )
103
+ if ($fileName -in $configFiles) {
104
+ $category = "config"
105
+ }
106
+
107
+ # Test files (medium significance)
108
+ if ($relativePath -match '\\.(test|spec)\\.(ts|js|tsx|jsx)$' -or
109
+ $relativePath -match '_(test|spec)\\.(ts|js|tsx|jsx)$' -or
110
+ $relativePath -match '^(__tests__|tests?)/') {
111
+ $category = "test"
112
+ }
113
+
114
+ # Documentation files (low significance)
115
+ if ($relativePath -match '\\.md$' -or
116
+ $relativePath -match '^(docs?|documentation)/' -or
117
+ $fileName -match '^(readme|changelog|license)') {
118
+ $category = "documentation"
119
+ }
120
+
121
+ # Structural/entry point files (high significance)
122
+ if ($fileName -match '^(index|main|app|server|cli)\\.(ts|js|tsx|jsx)$') {
123
+ $category = "structural"
124
+ }
125
+
126
+ # Get timestamps
127
+ ${generateTimestamps(platform)}
128
+
129
+ # Read session.md
130
+ ${paths.getSessionPath(platform)}
131
+ ${paths.checkSessionExists(platform)}
132
+
133
+ $content = Get-Content $sessionPath -Raw
134
+
135
+ # === Update Recent Changes ===
136
+ $changeEntry = "$timestamp [$category] $relativePath"
137
+
138
+ if ($content -match "(## Recent Changes\\s*\\n)([^#]*)") {
139
+ $existingChanges = $matches[2].Trim()
140
+ $changes = @()
141
+ if (-not $existingChanges.StartsWith("_")) {
142
+ $changes = $existingChanges -split "\\n" | Where-Object { $_.StartsWith("- ") }
143
+ }
144
+ $changes = @("- $changeEntry") + $changes
145
+ if ($changes.Count -gt 10) {
146
+ $changes = $changes[0..9]
147
+ }
148
+ $newChanges = $changes -join "\\n"
149
+ $content = $content -replace "(## Recent Changes\\s*\\n)[^#]*", ("$1$newChanges\\n\\n")
150
+ }
151
+
152
+ # === Track Edit History in JSON for Focus Detection ===
153
+ $historyPath = Join-Path $dinoDir "edit-history.json"
154
+ $history = @()
155
+ if (Test-Path $historyPath) {
156
+ try {
157
+ $historyJson = Get-Content $historyPath -Raw
158
+ $history = $historyJson | ConvertFrom-Json
159
+ if (-not $history) { $history = @() }
160
+ } catch {
161
+ $history = @()
162
+ }
163
+ }
164
+
165
+ # v6.0.0: Calculate edit scope
166
+ $linesChanged = 0
167
+ $changeType = "modify"
168
+ if ($oldString -and $newString) {
169
+ $oldLines = ($oldString -split "\\n").Count
170
+ $newLines = ($newString -split "\\n").Count
171
+ $linesChanged = [Math]::Abs($newLines - $oldLines) + [Math]::Min($oldLines, $newLines)
172
+ if ($oldLines -lt $newLines) { $changeType = "expand" }
173
+ elseif ($oldLines -gt $newLines) { $changeType = "shrink" }
174
+ }
175
+ if ($editType -eq "write") {
176
+ $changeType = "create"
177
+ if ($newString) {
178
+ $linesChanged = ($newString -split "\\n").Count
179
+ }
180
+ }
181
+
182
+ # Add new edit to history with v6.0.0 scope info
183
+ $editRecord = @{
184
+ timestamp = $isoTimestamp
185
+ path = $relativePath
186
+ directory = $directory
187
+ category = $category
188
+ editType = $editType
189
+ changeType = $changeType
190
+ linesChanged = $linesChanged
191
+ }
192
+ $history = @($editRecord) + $history
193
+ if ($history.Count -gt 20) {
194
+ $history = $history[0..19]
195
+ }
196
+
197
+ # Save updated history
198
+ $history | ConvertTo-Json -Depth 3 | Set-Content $historyPath -Force
199
+
200
+ # === Auto-Focus Detection ===
201
+ # Count edits per directory
202
+ $dirCounts = @{}
203
+ foreach ($edit in $history) {
204
+ $dir = $edit.directory
205
+ if ($dir) {
206
+ $dirCounts[$dir] = ($dirCounts[$dir] -as [int]) + 1
207
+ }
208
+ }
209
+
210
+ # Find directory with most edits (minimum 3 for focus)
211
+ $focusDir = $null
212
+ $maxCount = 0
213
+ foreach ($dir in $dirCounts.Keys) {
214
+ $count = $dirCounts[$dir]
215
+ if ($count -ge 3 -and $count -gt $maxCount) {
216
+ $focusDir = $dir
217
+ $maxCount = $count
218
+ }
219
+ }
220
+
221
+ # Update focus if detected
222
+ if ($focusDir) {
223
+ $confidence = if ($maxCount -ge 5) { "high" } elseif ($maxCount -ge 3) { "medium" } else { "low" }
224
+ $focusText = "$focusDir [directory-cluster, $confidence]"
225
+
226
+ # v13.5.0: Track previous focus for auto-prefetch
227
+ $previousFocus = $null
228
+ if ($content -match "## Focus\\s*\\n\\*\\*([^*]+)\\*\\*") {
229
+ $previousFocus = $matches[1].Trim()
230
+ }
231
+
232
+ if ($content -match "(## Focus\\s*\\n)([^#]*)") {
233
+ $content = $content -replace "(## Focus\\s*\\n)[^#]*", ("$1$focusText\\n\\n")
234
+ }
235
+
236
+ # v13.5.0: Auto-prefetch on focus change (when budget has headroom)
237
+ if ($previousFocus -and $previousFocus -ne $focusDir) {
238
+ $prefetchEnabled = $true
239
+ $configPath = Join-Path $dinoDir "config.json"
240
+ if (Test-Path $configPath) {
241
+ try {
242
+ $config = Get-Content $configPath -Raw | ConvertFrom-Json
243
+ if ($config.features.autoPrefetch -eq $false) {
244
+ $prefetchEnabled = $false
245
+ }
246
+ } catch {}
247
+ }
248
+
249
+ if ($prefetchEnabled) {
250
+ # Check budget before prefetching
251
+ $budgetPath = Join-Path $dinoDir "context-budget.json"
252
+ $budgetPercent = 50
253
+ if (Test-Path $budgetPath) {
254
+ try {
255
+ $budgetData = Get-Content $budgetPath -Raw | ConvertFrom-Json
256
+ $budgetPercent = [math]::Round(($budgetData.estimated / $budgetData.limit) * 100)
257
+ } catch {}
258
+ }
259
+
260
+ if ($budgetPercent -lt 70) {
261
+ # Prefetch in-focus files (output suggestion)
262
+ Write-Host "[dino] Focus changed: $previousFocus -> $focusDir"
263
+ Write-Host "[dino] Tip: Use @dino://focus to load context for $focusDir"
264
+ }
265
+ }
266
+ }
267
+ }
268
+
269
+ # Write back session.md
270
+ Set-Content -Path $sessionPath -Value $content -NoNewline
271
+
272
+ # Add pending action for high-significance changes
273
+ if ($pendingAction) {
274
+ $content = Get-Content $sessionPath -Raw
275
+ if ($content -notmatch [regex]::Escape($pendingAction)) {
276
+ if ($content -match "(## Pending Actions\\s*\\n)([^#]*)") {
277
+ $existingActions = $matches[2].Trim()
278
+ if ($existingActions.StartsWith("_")) {
279
+ $newActions = "- $pendingAction"
280
+ } else {
281
+ $newActions = "- $pendingAction\\n$existingActions"
282
+ }
283
+ $content = $content -replace "(## Pending Actions\\s*\\n)[^#]*", ("$1$newActions\\n\\n")
284
+ Set-Content -Path $sessionPath -Value $content -NoNewline
285
+ }
286
+ }
287
+ }
288
+
289
+ # === v9.7.0: Cache Break Detection ===
290
+ ${generateCacheBreakDetection(platform)}
291
+ if ($isCacheBreak) {
292
+ Write-Host ""
293
+ Write-Host "[dino] Warning: Edited stable prefix file: $relativePath" -ForegroundColor Yellow
294
+ Write-Host "[dino] This may invalidate Claude Code's context cache for this project." -ForegroundColor Yellow
295
+ Write-Host "[dino] Cache rebuild will occur on next conversation." -ForegroundColor DarkGray
296
+
297
+ # === v9.15.0: Persist cache break events for trend analysis ===
298
+ $cacheBreaksPath = Join-Path $dinoDir "cache-breaks.json"
299
+ $cacheBreaks = @()
300
+ if (Test-Path $cacheBreaksPath) {
301
+ try {
302
+ $cacheBreaksJson = Get-Content $cacheBreaksPath -Raw
303
+ $cacheBreaks = $cacheBreaksJson | ConvertFrom-Json
304
+ if (-not $cacheBreaks) { $cacheBreaks = @() }
305
+ } catch {
306
+ $cacheBreaks = @()
307
+ }
308
+ }
309
+
310
+ # Add new cache break event
311
+ $cacheBreakEvent = @{
312
+ timestamp = $isoTimestamp
313
+ file = $relativePath
314
+ type = $cacheBreakType
315
+ }
316
+ $cacheBreaks = @($cacheBreakEvent) + $cacheBreaks
317
+
318
+ # Keep last 20 events
319
+ if ($cacheBreaks.Count -gt 20) {
320
+ $cacheBreaks = $cacheBreaks[0..19]
321
+ }
322
+
323
+ # Save updated cache breaks
324
+ $cacheBreaks | ConvertTo-Json -Depth 3 | Set-Content $cacheBreaksPath -Force
325
+ }
326
+
327
+ # === v11.2.0: Roadmap Update Reminders ===
328
+ # Detect edits to feature-tracked files and remind about roadmap updates
329
+ $roadmapReminder = $null
330
+ $roadmapFile = $null
331
+
332
+ # Ralph Loop feature files
333
+ if ($relativePath -match "^src/core/ralph/" -or
334
+ $relativePath -match "^src/mcp/tools/ralph" -or
335
+ $relativePath -match "^test/.*ralph" -or
336
+ $relativePath -match "^\\.claude/skills/dino\\.ralph/") {
337
+ $roadmapFile = ".dino/roadmaps/ralph-loop-roadmap.md"
338
+ $roadmapReminder = "Ralph Loop"
339
+ }
340
+
341
+ # Output roadmap reminder if applicable
342
+ if ($roadmapReminder -and $roadmapFile) {
343
+ $roadmapPath = Join-Path $PWD $roadmapFile
344
+ if (Test-Path $roadmapPath) {
345
+ Write-Host ""
346
+ Write-Host "[dino] Reminder: You edited $roadmapReminder files" -ForegroundColor Cyan
347
+ Write-Host "[dino] Consider updating: $roadmapFile" -ForegroundColor Cyan
348
+ }
349
+ }
350
+
351
+ # === v12.3.0: Test State Tracking ===
352
+ # Track file changes for smart test optimization
353
+ $testStatePath = Join-Path $dinoDir "test-state.json"
354
+ $testState = @{
355
+ changedSinceTest = @()
356
+ lastUpdated = $isoTimestamp
357
+ }
358
+
359
+ if (Test-Path $testStatePath) {
360
+ try {
361
+ $testStateJson = Get-Content $testStatePath -Raw
362
+ $testState = $testStateJson | ConvertFrom-Json
363
+ if (-not $testState.changedSinceTest) {
364
+ $testState.changedSinceTest = @()
365
+ }
366
+ } catch {
367
+ $testState = @{
368
+ changedSinceTest = @()
369
+ lastUpdated = $isoTimestamp
370
+ }
371
+ }
372
+ }
373
+
374
+ # Add file to changedSinceTest if not already present
375
+ $changedFiles = [System.Collections.ArrayList]@($testState.changedSinceTest)
376
+ if (-not ($changedFiles -contains $relativePath)) {
377
+ $changedFiles.Add($relativePath) | Out-Null
378
+ }
379
+ $testState.changedSinceTest = @($changedFiles)
380
+ $testState.lastUpdated = $isoTimestamp
381
+
382
+ # Save updated test state
383
+ $testState | ConvertTo-Json -Depth 3 | Set-Content $testStatePath -Force
384
+
385
+ exit 0
348
386
  `;
349
387
  }
350
388
  /**
@@ -352,324 +390,359 @@ exit 0
352
390
  */
353
391
  function generateBashScript() {
354
392
  const platform = 'linux';
355
- return `${utils.scriptHeader(platform, VERSION, 'post-edit hook')}
356
-
357
- # Get tool input from environment
358
- ${utils.parseToolInput(platform)}
359
-
360
- # Parse file path
361
- ${utils.extractFilePath(platform)}
362
-
363
- # v6.0.0: Determine edit type
364
- EDIT_TYPE="edit"
365
- if echo "$TOOL_INPUT" | grep -q '"content"'; then
366
- EDIT_TYPE="write"
367
- fi
368
-
369
- # Find .dino directory
370
- ${paths.getDinoDir(platform)}
371
- ${paths.checkDinoDirExists(platform)}
372
-
373
- # Extract relative path
374
- RELATIVE_PATH="$FILE_PATH"
375
- if [[ "$FILE_PATH" == "$PWD"* ]]; then
376
- RELATIVE_PATH="\${FILE_PATH#$PWD/}"
377
- fi
378
-
379
- # Get filename and directory
380
- FILE_NAME=$(basename "$RELATIVE_PATH")
381
- DIRECTORY=$(dirname "$RELATIVE_PATH")
382
- if [ "$DIRECTORY" = "." ]; then
383
- DIRECTORY="."
384
- fi
385
-
386
- # Classify the file
387
- CATEGORY="code"
388
- PENDING_ACTION=""
389
-
390
- # Dependency files (high significance)
391
- case "$FILE_NAME" in
392
- package.json|package-lock.json|pnpm-lock.yaml|yarn.lock|bun.lockb|\
393
- requirements.txt|Pipfile|Pipfile.lock|pyproject.toml|poetry.lock|\
394
- Cargo.toml|Cargo.lock|go.mod|go.sum|Gemfile|Gemfile.lock|\
395
- composer.json|composer.lock)
396
- CATEGORY="dependency"
397
- PENDING_ACTION="Run npm/pnpm/yarn install after dependency changes"
398
- ;;
399
- esac
400
-
401
- # Config files (medium significance) - only if not already classified
402
- if [ "$CATEGORY" = "code" ]; then
403
- case "$FILE_NAME" in
404
- tsconfig.json|jsconfig.json|.eslintrc|.eslintrc.js|.eslintrc.json|\
405
- .prettierrc|.prettierrc.js|.prettierrc.json|vitest.config.ts|vitest.config.js|\
406
- jest.config.js|jest.config.ts|webpack.config.js|vite.config.ts|vite.config.js|\
407
- rollup.config.js|.babelrc|babel.config.js|.env|.env.local|\
408
- Dockerfile|docker-compose.yml|.gitignore|.npmrc|.nvmrc)
409
- CATEGORY="config"
410
- ;;
411
- esac
412
- fi
413
-
414
- # Test files (medium significance)
415
- if [ "$CATEGORY" = "code" ]; then
416
- if echo "$RELATIVE_PATH" | grep -qE '\\.(test|spec)\\.(ts|js|tsx|jsx)$'; then
417
- CATEGORY="test"
418
- elif echo "$RELATIVE_PATH" | grep -qE '_(test|spec)\\.(ts|js|tsx|jsx)$'; then
419
- CATEGORY="test"
420
- elif echo "$RELATIVE_PATH" | grep -qE '^(__tests__|tests?)/'; then
421
- CATEGORY="test"
422
- fi
423
- fi
424
-
425
- # Documentation files (low significance)
426
- if [ "$CATEGORY" = "code" ]; then
427
- if echo "$RELATIVE_PATH" | grep -qiE '\\.md$'; then
428
- CATEGORY="documentation"
429
- elif echo "$RELATIVE_PATH" | grep -qiE '^(docs?|documentation)/'; then
430
- CATEGORY="documentation"
431
- elif echo "$FILE_NAME" | grep -qiE '^(readme|changelog|license)'; then
432
- CATEGORY="documentation"
433
- fi
434
- fi
435
-
436
- # Structural/entry point files (high significance)
437
- if [ "$CATEGORY" = "code" ]; then
438
- if echo "$FILE_NAME" | grep -qE '^(index|main|app|server|cli)\\.(ts|js|tsx|jsx)$'; then
439
- CATEGORY="structural"
440
- fi
441
- fi
442
-
443
- # Get timestamps
444
- ${generateTimestamps(platform)}
445
-
446
- # Session file path
447
- ${paths.getSessionPath(platform)}
448
- ${paths.checkSessionExists(platform)}
449
-
450
- # === Track Edit History in JSON for Focus Detection ===
451
- HISTORY_PATH="$DINO_DIR/edit-history.json"
452
-
453
- # Read existing history or create empty array
454
- if [ -f "$HISTORY_PATH" ]; then
455
- HISTORY=$(cat "$HISTORY_PATH" 2>/dev/null || echo "[]")
456
- else
457
- HISTORY="[]"
458
- fi
459
-
460
- # v6.0.0: Calculate change type
461
- CHANGE_TYPE="modify"
462
- LINES_CHANGED=0
463
- if [ "\$EDIT_TYPE" = "write" ]; then
464
- CHANGE_TYPE="create"
465
- fi
466
-
467
- # Add new edit record using simple JSON manipulation with v6.0.0 scope info
468
- NEW_RECORD="{\\"timestamp\\":\\"$ISO_TIMESTAMP\\",\\"path\\":\\"$RELATIVE_PATH\\",\\"directory\\":\\"$DIRECTORY\\",\\"category\\":\\"$CATEGORY\\",\\"editType\\":\\"$EDIT_TYPE\\",\\"changeType\\":\\"$CHANGE_TYPE\\",\\"linesChanged\\":$LINES_CHANGED}"
469
-
470
- # Prepend to history and keep last 20
471
- if [ "$HISTORY" = "[]" ]; then
472
- NEW_HISTORY="[$NEW_RECORD]"
473
- else
474
- # Remove opening bracket, prepend new record
475
- REST=$(echo "$HISTORY" | sed 's/^\\[//')
476
- NEW_HISTORY="[$NEW_RECORD,$REST"
477
- fi
478
-
479
- # Limit to 20 entries (simple approach: count commas)
480
- ENTRY_COUNT=$(echo "$NEW_HISTORY" | grep -o '{' | wc -l)
481
- if [ "$ENTRY_COUNT" -gt 20 ]; then
482
- # Truncate to first 20 entries
483
- NEW_HISTORY=$(echo "$NEW_HISTORY" | sed 's/},{/}\\n{/g' | head -20 | tr '\\n' ',' | sed 's/,$//' | sed 's/^/[/' | sed 's/$/]/')
484
- fi
485
-
486
- echo "$NEW_HISTORY" > "$HISTORY_PATH"
487
-
488
- # === Auto-Focus Detection ===
489
- # Count edits per directory from history
490
- FOCUS_DIR=""
491
- MAX_COUNT=0
492
-
493
- # Extract directories and count occurrences
494
- if [ -f "$HISTORY_PATH" ]; then
495
- DIR_COUNTS=$(grep -o '"directory":"[^"]*"' "$HISTORY_PATH" | sed 's/"directory":"//g' | sed 's/"//g' | sort | uniq -c | sort -rn)
496
-
497
- while read -r count dir; do
498
- if [ "$count" -ge 3 ] && [ "$count" -gt "$MAX_COUNT" ]; then
499
- MAX_COUNT=$count
500
- FOCUS_DIR="$dir"
501
- fi
502
- done <<< "$DIR_COUNTS"
503
- fi
504
-
505
- # === Update Recent Changes ===
506
- # Create temp file for atomic write
507
- TEMP_FILE=$(mktemp)
508
- trap "rm -f $TEMP_FILE" EXIT
509
-
510
- # Read existing changes (up to 9 to make room for new one)
511
- EXISTING_CHANGES=$(sed -n '/^## Recent Changes/,/^##/p' "$SESSION_PATH" | grep "^- " | head -9)
512
-
513
- # Build new session.md
514
- {
515
- # Copy everything before Recent Changes
516
- sed -n '1,/^## Recent Changes/p' "$SESSION_PATH" | head -n -1
517
-
518
- echo "## Recent Changes"
519
- echo "- $TIMESTAMP [$CATEGORY] $RELATIVE_PATH"
520
- if [ -n "$EXISTING_CHANGES" ]; then
521
- echo "$EXISTING_CHANGES"
522
- fi
523
- echo ""
524
-
525
- # Copy everything after Recent Changes section
526
- sed -n '/^## Recent Changes/,\$p' "$SESSION_PATH" | sed '1d' | sed -n '/^##/,\$p'
527
- } > "$TEMP_FILE"
528
-
529
- # Atomic move
530
- mv "$TEMP_FILE" "$SESSION_PATH"
531
-
532
- # === Update Focus if Detected ===
533
- if [ -n "$FOCUS_DIR" ]; then
534
- CONFIDENCE="medium"
535
- if [ "$MAX_COUNT" -ge 5 ]; then
536
- CONFIDENCE="high"
537
- fi
538
-
539
- FOCUS_TEXT="$FOCUS_DIR [directory-cluster, $CONFIDENCE]"
540
-
541
- TEMP_FILE2=$(mktemp)
542
- trap "rm -f $TEMP_FILE2" EXIT
543
-
544
- {
545
- sed -n '1,/^## Focus/p' "$SESSION_PATH" | head -n -1
546
- echo "## Focus"
547
- echo "$FOCUS_TEXT"
548
- echo ""
549
- sed -n '/^## Focus/,\$p' "$SESSION_PATH" | sed '1d' | sed -n '/^##/,\$p'
550
- } > "$TEMP_FILE2"
551
-
552
- mv "$TEMP_FILE2" "$SESSION_PATH"
553
- fi
554
-
555
- # === Add Pending Action for High-Significance Changes ===
556
- if [ -n "$PENDING_ACTION" ]; then
557
- if ! grep -qF "$PENDING_ACTION" "$SESSION_PATH"; then
558
- TEMP_FILE3=$(mktemp)
559
- trap "rm -f $TEMP_FILE3" EXIT
560
-
561
- if grep -q "^## Pending Actions" "$SESSION_PATH"; then
562
- {
563
- sed -n '1,/^## Pending Actions/p' "$SESSION_PATH" | head -n -1
564
- echo "## Pending Actions"
565
- echo "- $PENDING_ACTION"
566
- sed -n '/^## Pending Actions/,/^##/p' "$SESSION_PATH" | grep "^- " | grep -v "^_"
567
- echo ""
568
- sed -n '/^## Pending Actions/,\$p' "$SESSION_PATH" | sed '1d' | sed -n '/^##/,\$p'
569
- } > "$TEMP_FILE3"
570
- mv "$TEMP_FILE3" "$SESSION_PATH"
571
- fi
572
- fi
573
- fi
574
-
575
- # === v9.7.0: Cache Break Detection ===
576
- ${generateCacheBreakDetection(platform)}
577
- if [ "$IS_CACHE_BREAK" = "true" ]; then
578
- echo ""
579
- echo "[dino] Warning: Edited stable prefix file: $RELATIVE_PATH"
580
- echo "[dino] This may invalidate Claude Code's context cache for this project."
581
- echo "[dino] Cache rebuild will occur on next conversation."
582
-
583
- # === v9.15.0: Persist cache break events for trend analysis ===
584
- CACHE_BREAKS_PATH="$DINO_DIR/cache-breaks.json"
585
-
586
- # Read existing cache breaks or create empty array
587
- if [ -f "$CACHE_BREAKS_PATH" ]; then
588
- CACHE_BREAKS=$(cat "$CACHE_BREAKS_PATH" 2>/dev/null || echo "[]")
589
- else
590
- CACHE_BREAKS="[]"
591
- fi
592
-
593
- # Create new event record
594
- NEW_EVENT="{\\"timestamp\\":\\"$ISO_TIMESTAMP\\",\\"file\\":\\"$RELATIVE_PATH\\",\\"type\\":\\"$CACHE_BREAK_TYPE\\"}"
595
-
596
- # Prepend to cache breaks and keep last 20
597
- if [ "$CACHE_BREAKS" = "[]" ]; then
598
- NEW_CACHE_BREAKS="[$NEW_EVENT]"
599
- else
600
- REST=$(echo "$CACHE_BREAKS" | sed 's/^\\[//')
601
- NEW_CACHE_BREAKS="[$NEW_EVENT,$REST"
602
- fi
603
-
604
- # Limit to 20 entries
605
- ENTRY_COUNT=$(echo "$NEW_CACHE_BREAKS" | grep -o '{' | wc -l)
606
- if [ "$ENTRY_COUNT" -gt 20 ]; then
607
- NEW_CACHE_BREAKS=$(echo "$NEW_CACHE_BREAKS" | sed 's/},{/}\\n{/g' | head -20 | tr '\\n' ',' | sed 's/,$//' | sed 's/^/[/' | sed 's/$/]/')
608
- fi
609
-
610
- echo "$NEW_CACHE_BREAKS" > "$CACHE_BREAKS_PATH"
611
- fi
612
-
613
- # === v11.2.0: Roadmap Update Reminders ===
614
- # Detect edits to feature-tracked files and remind about roadmap updates
615
- ROADMAP_REMINDER=""
616
- ROADMAP_FILE=""
617
-
618
- # Ralph Loop feature files
619
- if echo "$RELATIVE_PATH" | grep -qE '^src/core/ralph/'; then
620
- ROADMAP_FILE=".dino/roadmaps/ralph-loop-roadmap.md"
621
- ROADMAP_REMINDER="Ralph Loop"
622
- elif echo "$RELATIVE_PATH" | grep -qE '^src/mcp/tools/ralph'; then
623
- ROADMAP_FILE=".dino/roadmaps/ralph-loop-roadmap.md"
624
- ROADMAP_REMINDER="Ralph Loop"
625
- elif echo "$RELATIVE_PATH" | grep -qE '^test/.*ralph'; then
626
- ROADMAP_FILE=".dino/roadmaps/ralph-loop-roadmap.md"
627
- ROADMAP_REMINDER="Ralph Loop"
628
- elif echo "$RELATIVE_PATH" | grep -qE '^\\.claude/skills/dino\\.ralph/'; then
629
- ROADMAP_FILE=".dino/roadmaps/ralph-loop-roadmap.md"
630
- ROADMAP_REMINDER="Ralph Loop"
631
- fi
632
-
633
- # Output roadmap reminder if applicable
634
- if [ -n "$ROADMAP_REMINDER" ] && [ -n "$ROADMAP_FILE" ]; then
635
- ROADMAP_PATH="$PWD/$ROADMAP_FILE"
636
- if [ -f "$ROADMAP_PATH" ]; then
637
- echo ""
638
- echo "[dino] Reminder: You edited $ROADMAP_REMINDER files"
639
- echo "[dino] Consider updating: $ROADMAP_FILE"
640
- fi
641
- fi
642
-
643
- # === v12.3.0: Test State Tracking ===
644
- # Track file changes for smart test optimization
645
- TEST_STATE_PATH="$DINO_DIR/test-state.json"
646
-
647
- # Read existing test state or create new
648
- if [ -f "$TEST_STATE_PATH" ]; then
649
- TEST_STATE=$(cat "$TEST_STATE_PATH" 2>/dev/null || echo '{"changedSinceTest":[],"lastUpdated":""}')
650
- else
651
- TEST_STATE='{"changedSinceTest":[],"lastUpdated":""}'
652
- fi
653
-
654
- # Check if file already in changedSinceTest
655
- if ! echo "$TEST_STATE" | grep -q "\\"$RELATIVE_PATH\\""; then
656
- # Add file to changedSinceTest array
657
- if echo "$TEST_STATE" | grep -q '"changedSinceTest":\\[\\]'; then
658
- # Empty array - add first element
659
- TEST_STATE=$(echo "$TEST_STATE" | sed "s/\\"changedSinceTest\\":\\[\\]/\\"changedSinceTest\\":[\\"$RELATIVE_PATH\\"]/")
660
- else
661
- # Non-empty array - append
662
- TEST_STATE=$(echo "$TEST_STATE" | sed "s/\\"changedSinceTest\\":\\[/\\"changedSinceTest\\":[\\"$RELATIVE_PATH\\",/")
663
- fi
664
- fi
665
-
666
- # Update lastUpdated timestamp
667
- TEST_STATE=$(echo "$TEST_STATE" | sed "s/\\"lastUpdated\\":\\"[^\\"]*\\"/\\"lastUpdated\\":\\"$ISO_TIMESTAMP\\"/")
668
-
669
- # Save updated test state
670
- echo "$TEST_STATE" > "$TEST_STATE_PATH"
671
-
672
- exit 0
393
+ return `${utils.scriptHeader(platform, VERSION, 'post-edit hook')}
394
+
395
+ # Get tool input from environment
396
+ ${utils.parseToolInput(platform)}
397
+
398
+ # Parse file path
399
+ ${utils.extractFilePath(platform)}
400
+
401
+ # v6.0.0: Determine edit type
402
+ EDIT_TYPE="edit"
403
+ if echo "$TOOL_INPUT" | grep -q '"content"'; then
404
+ EDIT_TYPE="write"
405
+ fi
406
+
407
+ # Find .dino directory
408
+ ${paths.getDinoDir(platform)}
409
+ ${paths.checkDinoDirExists(platform)}
410
+
411
+ # Extract relative path
412
+ RELATIVE_PATH="$FILE_PATH"
413
+ if [[ "$FILE_PATH" == "$PWD"* ]]; then
414
+ RELATIVE_PATH="\${FILE_PATH#$PWD/}"
415
+ fi
416
+
417
+ # Get filename and directory
418
+ FILE_NAME=$(basename "$RELATIVE_PATH")
419
+ DIRECTORY=$(dirname "$RELATIVE_PATH")
420
+ if [ "$DIRECTORY" = "." ]; then
421
+ DIRECTORY="."
422
+ fi
423
+
424
+ # Classify the file
425
+ CATEGORY="code"
426
+ PENDING_ACTION=""
427
+
428
+ # Dependency files (high significance)
429
+ case "$FILE_NAME" in
430
+ package.json|package-lock.json|pnpm-lock.yaml|yarn.lock|bun.lockb|\
431
+ requirements.txt|Pipfile|Pipfile.lock|pyproject.toml|poetry.lock|\
432
+ Cargo.toml|Cargo.lock|go.mod|go.sum|Gemfile|Gemfile.lock|\
433
+ composer.json|composer.lock)
434
+ CATEGORY="dependency"
435
+ PENDING_ACTION="Run npm/pnpm/yarn install after dependency changes"
436
+ ;;
437
+ esac
438
+
439
+ # Config files (medium significance) - only if not already classified
440
+ if [ "$CATEGORY" = "code" ]; then
441
+ case "$FILE_NAME" in
442
+ tsconfig.json|jsconfig.json|.eslintrc|.eslintrc.js|.eslintrc.json|\
443
+ .prettierrc|.prettierrc.js|.prettierrc.json|vitest.config.ts|vitest.config.js|\
444
+ jest.config.js|jest.config.ts|webpack.config.js|vite.config.ts|vite.config.js|\
445
+ rollup.config.js|.babelrc|babel.config.js|.env|.env.local|\
446
+ Dockerfile|docker-compose.yml|.gitignore|.npmrc|.nvmrc)
447
+ CATEGORY="config"
448
+ ;;
449
+ esac
450
+ fi
451
+
452
+ # Test files (medium significance)
453
+ if [ "$CATEGORY" = "code" ]; then
454
+ if echo "$RELATIVE_PATH" | grep -qE '\\.(test|spec)\\.(ts|js|tsx|jsx)$'; then
455
+ CATEGORY="test"
456
+ elif echo "$RELATIVE_PATH" | grep -qE '_(test|spec)\\.(ts|js|tsx|jsx)$'; then
457
+ CATEGORY="test"
458
+ elif echo "$RELATIVE_PATH" | grep -qE '^(__tests__|tests?)/'; then
459
+ CATEGORY="test"
460
+ fi
461
+ fi
462
+
463
+ # Documentation files (low significance)
464
+ if [ "$CATEGORY" = "code" ]; then
465
+ if echo "$RELATIVE_PATH" | grep -qiE '\\.md$'; then
466
+ CATEGORY="documentation"
467
+ elif echo "$RELATIVE_PATH" | grep -qiE '^(docs?|documentation)/'; then
468
+ CATEGORY="documentation"
469
+ elif echo "$FILE_NAME" | grep -qiE '^(readme|changelog|license)'; then
470
+ CATEGORY="documentation"
471
+ fi
472
+ fi
473
+
474
+ # Structural/entry point files (high significance)
475
+ if [ "$CATEGORY" = "code" ]; then
476
+ if echo "$FILE_NAME" | grep -qE '^(index|main|app|server|cli)\\.(ts|js|tsx|jsx)$'; then
477
+ CATEGORY="structural"
478
+ fi
479
+ fi
480
+
481
+ # Get timestamps
482
+ ${generateTimestamps(platform)}
483
+
484
+ # Session file path
485
+ ${paths.getSessionPath(platform)}
486
+ ${paths.checkSessionExists(platform)}
487
+
488
+ # === Track Edit History in JSON for Focus Detection ===
489
+ HISTORY_PATH="$DINO_DIR/edit-history.json"
490
+
491
+ # Read existing history or create empty array
492
+ if [ -f "$HISTORY_PATH" ]; then
493
+ HISTORY=$(cat "$HISTORY_PATH" 2>/dev/null || echo "[]")
494
+ else
495
+ HISTORY="[]"
496
+ fi
497
+
498
+ # v6.0.0: Calculate change type
499
+ CHANGE_TYPE="modify"
500
+ LINES_CHANGED=0
501
+ if [ "$EDIT_TYPE" = "write" ]; then
502
+ CHANGE_TYPE="create"
503
+ fi
504
+
505
+ # Add new edit record using simple JSON manipulation with v6.0.0 scope info
506
+ NEW_RECORD="{\\"timestamp\\":\\"$ISO_TIMESTAMP\\",\\"path\\":\\"$RELATIVE_PATH\\",\\"directory\\":\\"$DIRECTORY\\",\\"category\\":\\"$CATEGORY\\",\\"editType\\":\\"$EDIT_TYPE\\",\\"changeType\\":\\"$CHANGE_TYPE\\",\\"linesChanged\\":$LINES_CHANGED}"
507
+
508
+ # Prepend to history and keep last 20
509
+ if [ "$HISTORY" = "[]" ]; then
510
+ NEW_HISTORY="[$NEW_RECORD]"
511
+ else
512
+ # Remove opening bracket, prepend new record
513
+ REST=$(echo "$HISTORY" | sed 's/^\\[//')
514
+ NEW_HISTORY="[$NEW_RECORD,$REST"
515
+ fi
516
+
517
+ # Limit to 20 entries (simple approach: count commas)
518
+ ENTRY_COUNT=$(echo "$NEW_HISTORY" | grep -o '{' | wc -l)
519
+ if [ "$ENTRY_COUNT" -gt 20 ]; then
520
+ # Truncate to first 20 entries
521
+ NEW_HISTORY=$(echo "$NEW_HISTORY" | sed 's/},{/}\\n{/g' | head -20 | tr '\\n' ',' | sed 's/,$//' | sed 's/^/[/' | sed 's/$/]/')
522
+ fi
523
+
524
+ echo "$NEW_HISTORY" > "$HISTORY_PATH"
525
+
526
+ # === Auto-Focus Detection ===
527
+ # Count edits per directory from history
528
+ FOCUS_DIR=""
529
+ MAX_COUNT=0
530
+
531
+ # Extract directories and count occurrences
532
+ if [ -f "$HISTORY_PATH" ]; then
533
+ DIR_COUNTS=$(grep -o '"directory":"[^"]*"' "$HISTORY_PATH" | sed 's/"directory":"//g' | sed 's/"//g' | sort | uniq -c | sort -rn)
534
+
535
+ while read -r count dir; do
536
+ if [ "$count" -ge 3 ] && [ "$count" -gt "$MAX_COUNT" ]; then
537
+ MAX_COUNT=$count
538
+ FOCUS_DIR="$dir"
539
+ fi
540
+ done <<< "$DIR_COUNTS"
541
+ fi
542
+
543
+ # === Update Recent Changes ===
544
+ # Create temp file for atomic write
545
+ TEMP_FILE=$(mktemp)
546
+ trap "rm -f $TEMP_FILE" EXIT
547
+
548
+ # Read existing changes (up to 9 to make room for new one)
549
+ EXISTING_CHANGES=$(sed -n '/^## Recent Changes/,/^##/p' "$SESSION_PATH" | grep "^- " | head -9)
550
+
551
+ # Build new session.md
552
+ {
553
+ # Copy everything before Recent Changes
554
+ sed -n '1,/^## Recent Changes/p' "$SESSION_PATH" | head -n -1
555
+
556
+ echo "## Recent Changes"
557
+ echo "- $TIMESTAMP [$CATEGORY] $RELATIVE_PATH"
558
+ if [ -n "$EXISTING_CHANGES" ]; then
559
+ echo "$EXISTING_CHANGES"
560
+ fi
561
+ echo ""
562
+
563
+ # Copy everything after Recent Changes section
564
+ sed -n '/^## Recent Changes/,$p' "$SESSION_PATH" | sed '1d' | sed -n '/^##/,$p'
565
+ } > "$TEMP_FILE"
566
+
567
+ # Atomic move
568
+ mv "$TEMP_FILE" "$SESSION_PATH"
569
+
570
+ # === Update Focus if Detected ===
571
+ if [ -n "$FOCUS_DIR" ]; then
572
+ CONFIDENCE="medium"
573
+ if [ "$MAX_COUNT" -ge 5 ]; then
574
+ CONFIDENCE="high"
575
+ fi
576
+
577
+ # v13.5.0: Track previous focus for auto-prefetch
578
+ PREVIOUS_FOCUS=""
579
+ if grep -q "^## Focus" "$SESSION_PATH"; then
580
+ PREVIOUS_FOCUS=$(grep -A1 "^## Focus" "$SESSION_PATH" | tail -1 | sed 's/\\[.*//' | xargs)
581
+ fi
582
+
583
+ FOCUS_TEXT="$FOCUS_DIR [directory-cluster, $CONFIDENCE]"
584
+
585
+ TEMP_FILE2=$(mktemp)
586
+ trap "rm -f $TEMP_FILE2" EXIT
587
+
588
+ {
589
+ sed -n '1,/^## Focus/p' "$SESSION_PATH" | head -n -1
590
+ echo "## Focus"
591
+ echo "$FOCUS_TEXT"
592
+ echo ""
593
+ sed -n '/^## Focus/,$p' "$SESSION_PATH" | sed '1d' | sed -n '/^##/,$p'
594
+ } > "$TEMP_FILE2"
595
+
596
+ mv "$TEMP_FILE2" "$SESSION_PATH"
597
+
598
+ # v13.5.0: Auto-prefetch on focus change (when budget has headroom)
599
+ if [ -n "$PREVIOUS_FOCUS" ] && [ "$PREVIOUS_FOCUS" != "$FOCUS_DIR" ]; then
600
+ PREFETCH_ENABLED="true"
601
+ CONFIG_PATH="$DINO_DIR/config.json"
602
+ if [ -f "$CONFIG_PATH" ]; then
603
+ if grep -q '"autoPrefetch"[[:space:]]*:[[:space:]]*false' "$CONFIG_PATH" 2>/dev/null; then
604
+ PREFETCH_ENABLED="false"
605
+ fi
606
+ fi
607
+
608
+ if [ "$PREFETCH_ENABLED" = "true" ]; then
609
+ # Check budget before prefetching
610
+ BUDGET_PATH="$DINO_DIR/context-budget.json"
611
+ BUDGET_PERCENT=50
612
+ if [ -f "$BUDGET_PATH" ]; then
613
+ ESTIMATED=$(grep -o '"estimated"[[:space:]]*:[[:space:]]*[0-9]*' "$BUDGET_PATH" 2>/dev/null | grep -o '[0-9]*' || echo "0")
614
+ LIMIT=$(grep -o '"limit"[[:space:]]*:[[:space:]]*[0-9]*' "$BUDGET_PATH" 2>/dev/null | grep -o '[0-9]*' || echo "200000")
615
+ if [ "$LIMIT" -gt 0 ]; then
616
+ BUDGET_PERCENT=$((ESTIMATED * 100 / LIMIT))
617
+ fi
618
+ fi
619
+
620
+ if [ "$BUDGET_PERCENT" -lt 70 ]; then
621
+ echo "[dino] Focus changed: $PREVIOUS_FOCUS -> $FOCUS_DIR"
622
+ echo "[dino] Tip: Use @dino://focus to load context for $FOCUS_DIR"
623
+ fi
624
+ fi
625
+ fi
626
+ fi
627
+
628
+ # === Add Pending Action for High-Significance Changes ===
629
+ if [ -n "$PENDING_ACTION" ]; then
630
+ if ! grep -qF "$PENDING_ACTION" "$SESSION_PATH"; then
631
+ TEMP_FILE3=$(mktemp)
632
+ trap "rm -f $TEMP_FILE3" EXIT
633
+
634
+ if grep -q "^## Pending Actions" "$SESSION_PATH"; then
635
+ {
636
+ sed -n '1,/^## Pending Actions/p' "$SESSION_PATH" | head -n -1
637
+ echo "## Pending Actions"
638
+ echo "- $PENDING_ACTION"
639
+ sed -n '/^## Pending Actions/,/^##/p' "$SESSION_PATH" | grep "^- " | grep -v "^_"
640
+ echo ""
641
+ sed -n '/^## Pending Actions/,$p' "$SESSION_PATH" | sed '1d' | sed -n '/^##/,$p'
642
+ } > "$TEMP_FILE3"
643
+ mv "$TEMP_FILE3" "$SESSION_PATH"
644
+ fi
645
+ fi
646
+ fi
647
+
648
+ # === v9.7.0: Cache Break Detection ===
649
+ ${generateCacheBreakDetection(platform)}
650
+ if [ "$IS_CACHE_BREAK" = "true" ]; then
651
+ echo ""
652
+ echo "[dino] Warning: Edited stable prefix file: $RELATIVE_PATH"
653
+ echo "[dino] This may invalidate Claude Code's context cache for this project."
654
+ echo "[dino] Cache rebuild will occur on next conversation."
655
+
656
+ # === v9.15.0: Persist cache break events for trend analysis ===
657
+ CACHE_BREAKS_PATH="$DINO_DIR/cache-breaks.json"
658
+
659
+ # Read existing cache breaks or create empty array
660
+ if [ -f "$CACHE_BREAKS_PATH" ]; then
661
+ CACHE_BREAKS=$(cat "$CACHE_BREAKS_PATH" 2>/dev/null || echo "[]")
662
+ else
663
+ CACHE_BREAKS="[]"
664
+ fi
665
+
666
+ # Create new event record
667
+ NEW_EVENT="{\\"timestamp\\":\\"$ISO_TIMESTAMP\\",\\"file\\":\\"$RELATIVE_PATH\\",\\"type\\":\\"$CACHE_BREAK_TYPE\\"}"
668
+
669
+ # Prepend to cache breaks and keep last 20
670
+ if [ "$CACHE_BREAKS" = "[]" ]; then
671
+ NEW_CACHE_BREAKS="[$NEW_EVENT]"
672
+ else
673
+ REST=$(echo "$CACHE_BREAKS" | sed 's/^\\[//')
674
+ NEW_CACHE_BREAKS="[$NEW_EVENT,$REST"
675
+ fi
676
+
677
+ # Limit to 20 entries
678
+ ENTRY_COUNT=$(echo "$NEW_CACHE_BREAKS" | grep -o '{' | wc -l)
679
+ if [ "$ENTRY_COUNT" -gt 20 ]; then
680
+ NEW_CACHE_BREAKS=$(echo "$NEW_CACHE_BREAKS" | sed 's/},{/}\\n{/g' | head -20 | tr '\\n' ',' | sed 's/,$//' | sed 's/^/[/' | sed 's/$/]/')
681
+ fi
682
+
683
+ echo "$NEW_CACHE_BREAKS" > "$CACHE_BREAKS_PATH"
684
+ fi
685
+
686
+ # === v11.2.0: Roadmap Update Reminders ===
687
+ # Detect edits to feature-tracked files and remind about roadmap updates
688
+ ROADMAP_REMINDER=""
689
+ ROADMAP_FILE=""
690
+
691
+ # Ralph Loop feature files
692
+ if echo "$RELATIVE_PATH" | grep -qE '^src/core/ralph/'; then
693
+ ROADMAP_FILE=".dino/roadmaps/ralph-loop-roadmap.md"
694
+ ROADMAP_REMINDER="Ralph Loop"
695
+ elif echo "$RELATIVE_PATH" | grep -qE '^src/mcp/tools/ralph'; then
696
+ ROADMAP_FILE=".dino/roadmaps/ralph-loop-roadmap.md"
697
+ ROADMAP_REMINDER="Ralph Loop"
698
+ elif echo "$RELATIVE_PATH" | grep -qE '^test/.*ralph'; then
699
+ ROADMAP_FILE=".dino/roadmaps/ralph-loop-roadmap.md"
700
+ ROADMAP_REMINDER="Ralph Loop"
701
+ elif echo "$RELATIVE_PATH" | grep -qE '^\\.claude/skills/dino\\.ralph/'; then
702
+ ROADMAP_FILE=".dino/roadmaps/ralph-loop-roadmap.md"
703
+ ROADMAP_REMINDER="Ralph Loop"
704
+ fi
705
+
706
+ # Output roadmap reminder if applicable
707
+ if [ -n "$ROADMAP_REMINDER" ] && [ -n "$ROADMAP_FILE" ]; then
708
+ ROADMAP_PATH="$PWD/$ROADMAP_FILE"
709
+ if [ -f "$ROADMAP_PATH" ]; then
710
+ echo ""
711
+ echo "[dino] Reminder: You edited $ROADMAP_REMINDER files"
712
+ echo "[dino] Consider updating: $ROADMAP_FILE"
713
+ fi
714
+ fi
715
+
716
+ # === v12.3.0: Test State Tracking ===
717
+ # Track file changes for smart test optimization
718
+ TEST_STATE_PATH="$DINO_DIR/test-state.json"
719
+
720
+ # Read existing test state or create new
721
+ if [ -f "$TEST_STATE_PATH" ]; then
722
+ TEST_STATE=$(cat "$TEST_STATE_PATH" 2>/dev/null || echo '{"changedSinceTest":[],"lastUpdated":""}')
723
+ else
724
+ TEST_STATE='{"changedSinceTest":[],"lastUpdated":""}'
725
+ fi
726
+
727
+ # Check if file already in changedSinceTest
728
+ if ! echo "$TEST_STATE" | grep -q "\\"$RELATIVE_PATH\\""; then
729
+ # Add file to changedSinceTest array
730
+ if echo "$TEST_STATE" | grep -q '"changedSinceTest":\\[\\]'; then
731
+ # Empty array - add first element
732
+ TEST_STATE=$(echo "$TEST_STATE" | sed "s/\\"changedSinceTest\\":\\[\\]/\\"changedSinceTest\\":[\\"$RELATIVE_PATH\\"]/")
733
+ else
734
+ # Non-empty array - append
735
+ TEST_STATE=$(echo "$TEST_STATE" | sed "s/\\"changedSinceTest\\":\\[/\\"changedSinceTest\\":[\\"$RELATIVE_PATH\\",/")
736
+ fi
737
+ fi
738
+
739
+ # Update lastUpdated timestamp
740
+ TEST_STATE=$(echo "$TEST_STATE" | sed "s/\\"lastUpdated\\":\\"[^\\"]*\\"/\\"lastUpdated\\":\\"$ISO_TIMESTAMP\\"/")
741
+
742
+ # Save updated test state
743
+ echo "$TEST_STATE" > "$TEST_STATE_PATH"
744
+
745
+ exit 0
673
746
  `;
674
747
  }
675
748
  //# sourceMappingURL=post-edit.js.map