pulseed 0.5.2 → 0.5.4

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 (824) hide show
  1. package/dist/base/state/state-manager-goal-state.d.ts +40 -0
  2. package/dist/base/state/state-manager-goal-state.d.ts.map +1 -0
  3. package/dist/base/state/state-manager-goal-state.js +235 -0
  4. package/dist/base/state/state-manager-goal-state.js.map +1 -0
  5. package/dist/base/state/state-manager.d.ts +0 -5
  6. package/dist/base/state/state-manager.d.ts.map +1 -1
  7. package/dist/base/state/state-manager.js +27 -273
  8. package/dist/base/state/state-manager.js.map +1 -1
  9. package/dist/base/types/goal-activation.d.ts +25 -0
  10. package/dist/base/types/goal-activation.d.ts.map +1 -0
  11. package/dist/base/types/goal-activation.js +9 -0
  12. package/dist/base/types/goal-activation.js.map +1 -0
  13. package/dist/index.d.ts +2 -0
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +1 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/interface/chat/chat-event-state.d.ts +10 -0
  18. package/dist/interface/chat/chat-event-state.d.ts.map +1 -1
  19. package/dist/interface/chat/chat-event-state.js +184 -9
  20. package/dist/interface/chat/chat-event-state.js.map +1 -1
  21. package/dist/interface/chat/chat-events.d.ts +3 -1
  22. package/dist/interface/chat/chat-events.d.ts.map +1 -1
  23. package/dist/interface/chat/chat-history.d.ts +129 -0
  24. package/dist/interface/chat/chat-history.d.ts.map +1 -1
  25. package/dist/interface/chat/chat-history.js +135 -0
  26. package/dist/interface/chat/chat-history.js.map +1 -1
  27. package/dist/interface/chat/chat-runner-command-helpers.d.ts +50 -0
  28. package/dist/interface/chat/chat-runner-command-helpers.d.ts.map +1 -0
  29. package/dist/interface/chat/chat-runner-command-helpers.js +189 -0
  30. package/dist/interface/chat/chat-runner-command-helpers.js.map +1 -0
  31. package/dist/interface/chat/chat-runner-commands.d.ts +76 -0
  32. package/dist/interface/chat/chat-runner-commands.d.ts.map +1 -0
  33. package/dist/interface/chat/chat-runner-commands.js +814 -0
  34. package/dist/interface/chat/chat-runner-commands.js.map +1 -0
  35. package/dist/interface/chat/chat-runner-event-bridge.d.ts +53 -0
  36. package/dist/interface/chat/chat-runner-event-bridge.d.ts.map +1 -0
  37. package/dist/interface/chat/chat-runner-event-bridge.js +311 -0
  38. package/dist/interface/chat/chat-runner-event-bridge.js.map +1 -0
  39. package/dist/interface/chat/chat-runner-routes.d.ts +67 -0
  40. package/dist/interface/chat/chat-runner-routes.d.ts.map +1 -0
  41. package/dist/interface/chat/chat-runner-routes.js +594 -0
  42. package/dist/interface/chat/chat-runner-routes.js.map +1 -0
  43. package/dist/interface/chat/chat-runner-runtime.d.ts +37 -0
  44. package/dist/interface/chat/chat-runner-runtime.d.ts.map +1 -0
  45. package/dist/interface/chat/chat-runner-runtime.js +236 -0
  46. package/dist/interface/chat/chat-runner-runtime.js.map +1 -0
  47. package/dist/interface/chat/chat-runner-state.d.ts +20 -0
  48. package/dist/interface/chat/chat-runner-state.d.ts.map +1 -0
  49. package/dist/interface/chat/chat-runner-state.js +157 -0
  50. package/dist/interface/chat/chat-runner-state.js.map +1 -0
  51. package/dist/interface/chat/chat-runner-support.d.ts +15 -0
  52. package/dist/interface/chat/chat-runner-support.d.ts.map +1 -0
  53. package/dist/interface/chat/chat-runner-support.js +116 -0
  54. package/dist/interface/chat/chat-runner-support.js.map +1 -0
  55. package/dist/interface/chat/chat-runner.d.ts +13 -133
  56. package/dist/interface/chat/chat-runner.d.ts.map +1 -1
  57. package/dist/interface/chat/chat-runner.js +242 -1974
  58. package/dist/interface/chat/chat-runner.js.map +1 -1
  59. package/dist/interface/chat/chat-session-store.d.ts +32 -0
  60. package/dist/interface/chat/chat-session-store.d.ts.map +1 -1
  61. package/dist/interface/chat/chat-session-store.js +100 -10
  62. package/dist/interface/chat/chat-session-store.js.map +1 -1
  63. package/dist/interface/chat/chat-verifier.d.ts +3 -1
  64. package/dist/interface/chat/chat-verifier.d.ts.map +1 -1
  65. package/dist/interface/chat/chat-verifier.js +2 -2
  66. package/dist/interface/chat/chat-verifier.js.map +1 -1
  67. package/dist/interface/chat/cross-platform-session.d.ts +1 -0
  68. package/dist/interface/chat/cross-platform-session.d.ts.map +1 -1
  69. package/dist/interface/chat/cross-platform-session.js +23 -2
  70. package/dist/interface/chat/cross-platform-session.js.map +1 -1
  71. package/dist/interface/chat/event-subscriber.d.ts.map +1 -1
  72. package/dist/interface/chat/event-subscriber.js +41 -0
  73. package/dist/interface/chat/event-subscriber.js.map +1 -1
  74. package/dist/interface/chat/failure-recovery.d.ts +11 -0
  75. package/dist/interface/chat/failure-recovery.d.ts.map +1 -0
  76. package/dist/interface/chat/failure-recovery.js +115 -0
  77. package/dist/interface/chat/failure-recovery.js.map +1 -0
  78. package/dist/interface/chat/ingress-router.d.ts +0 -16
  79. package/dist/interface/chat/ingress-router.d.ts.map +1 -1
  80. package/dist/interface/chat/ingress-router.js +12 -51
  81. package/dist/interface/chat/ingress-router.js.map +1 -1
  82. package/dist/interface/chat/tend-command.d.ts +8 -0
  83. package/dist/interface/chat/tend-command.d.ts.map +1 -1
  84. package/dist/interface/chat/tend-command.js +82 -4
  85. package/dist/interface/chat/tend-command.js.map +1 -1
  86. package/dist/interface/cli/cli-command-registry.d.ts.map +1 -1
  87. package/dist/interface/cli/cli-command-registry.js +4 -0
  88. package/dist/interface/cli/cli-command-registry.js.map +1 -1
  89. package/dist/interface/cli/commands/daemon-shared.d.ts +32 -0
  90. package/dist/interface/cli/commands/daemon-shared.d.ts.map +1 -0
  91. package/dist/interface/cli/commands/daemon-shared.js +120 -0
  92. package/dist/interface/cli/commands/daemon-shared.js.map +1 -0
  93. package/dist/interface/cli/commands/daemon.d.ts +2 -2
  94. package/dist/interface/cli/commands/daemon.d.ts.map +1 -1
  95. package/dist/interface/cli/commands/daemon.js +4 -120
  96. package/dist/interface/cli/commands/daemon.js.map +1 -1
  97. package/dist/interface/cli/commands/runtime.d.ts +3 -0
  98. package/dist/interface/cli/commands/runtime.d.ts.map +1 -0
  99. package/dist/interface/cli/commands/runtime.js +231 -0
  100. package/dist/interface/cli/commands/runtime.js.map +1 -0
  101. package/dist/interface/cli/commands/schedule/history.d.ts.map +1 -1
  102. package/dist/interface/cli/commands/schedule/history.js +5 -1
  103. package/dist/interface/cli/commands/schedule/history.js.map +1 -1
  104. package/dist/interface/cli/commands/schedule.js +34 -4
  105. package/dist/interface/cli/commands/schedule.js.map +1 -1
  106. package/dist/interface/cli/utils.d.ts.map +1 -1
  107. package/dist/interface/cli/utils.js +4 -0
  108. package/dist/interface/cli/utils.js.map +1 -1
  109. package/dist/interface/tui/app.d.ts.map +1 -1
  110. package/dist/interface/tui/app.js +35 -1
  111. package/dist/interface/tui/app.js.map +1 -1
  112. package/dist/interface/tui/chat/scroll.d.ts +3 -0
  113. package/dist/interface/tui/chat/scroll.d.ts.map +1 -1
  114. package/dist/interface/tui/chat/scroll.js +15 -0
  115. package/dist/interface/tui/chat/scroll.js.map +1 -1
  116. package/dist/interface/tui/chat/suggestions.d.ts.map +1 -1
  117. package/dist/interface/tui/chat/suggestions.js +118 -4
  118. package/dist/interface/tui/chat/suggestions.js.map +1 -1
  119. package/dist/interface/tui/chat/types.d.ts +1 -1
  120. package/dist/interface/tui/chat/types.d.ts.map +1 -1
  121. package/dist/interface/tui/chat/viewport.d.ts.map +1 -1
  122. package/dist/interface/tui/chat/viewport.js +8 -2
  123. package/dist/interface/tui/chat/viewport.js.map +1 -1
  124. package/dist/interface/tui/chat-surface.d.ts +2 -0
  125. package/dist/interface/tui/chat-surface.d.ts.map +1 -1
  126. package/dist/interface/tui/chat-surface.js +11 -0
  127. package/dist/interface/tui/chat-surface.js.map +1 -1
  128. package/dist/interface/tui/chat.d.ts.map +1 -1
  129. package/dist/interface/tui/chat.js +15 -7
  130. package/dist/interface/tui/chat.js.map +1 -1
  131. package/dist/interface/tui/clipboard.d.ts +6 -1
  132. package/dist/interface/tui/clipboard.d.ts.map +1 -1
  133. package/dist/interface/tui/clipboard.js +24 -5
  134. package/dist/interface/tui/clipboard.js.map +1 -1
  135. package/dist/interface/tui/entry-approval.d.ts +8 -0
  136. package/dist/interface/tui/entry-approval.d.ts.map +1 -0
  137. package/dist/interface/tui/entry-approval.js +59 -0
  138. package/dist/interface/tui/entry-approval.js.map +1 -0
  139. package/dist/interface/tui/entry-daemon.d.ts +12 -0
  140. package/dist/interface/tui/entry-daemon.d.ts.map +1 -0
  141. package/dist/interface/tui/entry-daemon.js +74 -0
  142. package/dist/interface/tui/entry-daemon.js.map +1 -0
  143. package/dist/interface/tui/entry-deps.d.ts +22 -0
  144. package/dist/interface/tui/entry-deps.d.ts.map +1 -0
  145. package/dist/interface/tui/entry-deps.js +409 -0
  146. package/dist/interface/tui/entry-deps.js.map +1 -0
  147. package/dist/interface/tui/entry.d.ts +2 -4
  148. package/dist/interface/tui/entry.d.ts.map +1 -1
  149. package/dist/interface/tui/entry.js +15 -550
  150. package/dist/interface/tui/entry.js.map +1 -1
  151. package/dist/interface/tui/flicker/MouseTracking.d.ts +1 -1
  152. package/dist/interface/tui/flicker/MouseTracking.d.ts.map +1 -1
  153. package/dist/interface/tui/flicker/MouseTracking.js +8 -4
  154. package/dist/interface/tui/flicker/MouseTracking.js.map +1 -1
  155. package/dist/interface/tui/fullscreen-chat-render.d.ts +127 -0
  156. package/dist/interface/tui/fullscreen-chat-render.d.ts.map +1 -0
  157. package/dist/interface/tui/fullscreen-chat-render.js +667 -0
  158. package/dist/interface/tui/fullscreen-chat-render.js.map +1 -0
  159. package/dist/interface/tui/fullscreen-chat.d.ts +1 -29
  160. package/dist/interface/tui/fullscreen-chat.d.ts.map +1 -1
  161. package/dist/interface/tui/fullscreen-chat.js +306 -411
  162. package/dist/interface/tui/fullscreen-chat.js.map +1 -1
  163. package/dist/interface/tui/help-overlay.d.ts.map +1 -1
  164. package/dist/interface/tui/help-overlay.js +1 -1
  165. package/dist/interface/tui/help-overlay.js.map +1 -1
  166. package/dist/interface/tui/intent-recognizer.js +2 -2
  167. package/dist/interface/tui/intent-recognizer.js.map +1 -1
  168. package/dist/interface/tui/markdown-renderer.d.ts.map +1 -1
  169. package/dist/interface/tui/markdown-renderer.js +40 -12
  170. package/dist/interface/tui/markdown-renderer.js.map +1 -1
  171. package/dist/interface/tui/test-entry.js +1 -1
  172. package/dist/interface/tui/test-entry.js.map +1 -1
  173. package/dist/orchestrator/execution/agent-loop/agent-loop-context-assembler.d.ts.map +1 -1
  174. package/dist/orchestrator/execution/agent-loop/agent-loop-context-assembler.js +1 -0
  175. package/dist/orchestrator/execution/agent-loop/agent-loop-context-assembler.js.map +1 -1
  176. package/dist/orchestrator/execution/agent-loop/agent-loop-default-profile.d.ts.map +1 -1
  177. package/dist/orchestrator/execution/agent-loop/agent-loop-default-profile.js +35 -13
  178. package/dist/orchestrator/execution/agent-loop/agent-loop-default-profile.js.map +1 -1
  179. package/dist/orchestrator/execution/agent-loop/agent-loop-dogfood-benchmark.d.ts.map +1 -1
  180. package/dist/orchestrator/execution/agent-loop/agent-loop-dogfood-benchmark.js +7 -4
  181. package/dist/orchestrator/execution/agent-loop/agent-loop-dogfood-benchmark.js.map +1 -1
  182. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-router.d.ts.map +1 -1
  183. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-router.js +2 -1
  184. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-router.js.map +1 -1
  185. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-runtime.d.ts +2 -0
  186. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-runtime.d.ts.map +1 -1
  187. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-runtime.js +31 -0
  188. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-runtime.js.map +1 -1
  189. package/dist/orchestrator/execution/agent-loop/agent-loop-turn-context.d.ts +1 -0
  190. package/dist/orchestrator/execution/agent-loop/agent-loop-turn-context.d.ts.map +1 -1
  191. package/dist/orchestrator/execution/agent-loop/agent-loop-turn-context.js.map +1 -1
  192. package/dist/orchestrator/execution/agent-loop/bounded-agent-loop-runner.d.ts +1 -0
  193. package/dist/orchestrator/execution/agent-loop/bounded-agent-loop-runner.d.ts.map +1 -1
  194. package/dist/orchestrator/execution/agent-loop/bounded-agent-loop-runner.js +42 -2
  195. package/dist/orchestrator/execution/agent-loop/bounded-agent-loop-runner.js.map +1 -1
  196. package/dist/orchestrator/execution/agent-loop/chat-agent-loop-runner.d.ts +1 -0
  197. package/dist/orchestrator/execution/agent-loop/chat-agent-loop-runner.d.ts.map +1 -1
  198. package/dist/orchestrator/execution/agent-loop/chat-agent-loop-runner.js +3 -1
  199. package/dist/orchestrator/execution/agent-loop/chat-agent-loop-runner.js.map +1 -1
  200. package/dist/orchestrator/execution/agent-loop/core-loop-control-tools.d.ts +19 -0
  201. package/dist/orchestrator/execution/agent-loop/core-loop-control-tools.d.ts.map +1 -1
  202. package/dist/orchestrator/execution/agent-loop/core-loop-control-tools.js +164 -14
  203. package/dist/orchestrator/execution/agent-loop/core-loop-control-tools.js.map +1 -1
  204. package/dist/orchestrator/execution/agent-loop/index.d.ts +1 -0
  205. package/dist/orchestrator/execution/agent-loop/index.d.ts.map +1 -1
  206. package/dist/orchestrator/execution/agent-loop/index.js +1 -0
  207. package/dist/orchestrator/execution/agent-loop/index.js.map +1 -1
  208. package/dist/orchestrator/execution/agent-loop/kaggle-training-benchmark.d.ts +34 -0
  209. package/dist/orchestrator/execution/agent-loop/kaggle-training-benchmark.d.ts.map +1 -0
  210. package/dist/orchestrator/execution/agent-loop/kaggle-training-benchmark.js +54 -0
  211. package/dist/orchestrator/execution/agent-loop/kaggle-training-benchmark.js.map +1 -0
  212. package/dist/orchestrator/execution/reflection-generator.d.ts +1 -0
  213. package/dist/orchestrator/execution/reflection-generator.d.ts.map +1 -1
  214. package/dist/orchestrator/execution/reflection-generator.js +10 -1
  215. package/dist/orchestrator/execution/reflection-generator.js.map +1 -1
  216. package/dist/orchestrator/execution/task/task-context-enricher.d.ts +2 -0
  217. package/dist/orchestrator/execution/task/task-context-enricher.d.ts.map +1 -1
  218. package/dist/orchestrator/execution/task/task-context-enricher.js +9 -4
  219. package/dist/orchestrator/execution/task/task-context-enricher.js.map +1 -1
  220. package/dist/orchestrator/execution/task/task-execution-helpers-internal.d.ts +5 -0
  221. package/dist/orchestrator/execution/task/task-execution-helpers-internal.d.ts.map +1 -0
  222. package/dist/orchestrator/execution/task/task-execution-helpers-internal.js +6 -0
  223. package/dist/orchestrator/execution/task/task-execution-helpers-internal.js.map +1 -0
  224. package/dist/orchestrator/execution/task/task-generation.d.ts.map +1 -1
  225. package/dist/orchestrator/execution/task/task-generation.js +8 -3
  226. package/dist/orchestrator/execution/task/task-generation.js.map +1 -1
  227. package/dist/orchestrator/execution/task/task-lifecycle-runner.d.ts +73 -0
  228. package/dist/orchestrator/execution/task/task-lifecycle-runner.d.ts.map +1 -0
  229. package/dist/orchestrator/execution/task/task-lifecycle-runner.js +184 -0
  230. package/dist/orchestrator/execution/task/task-lifecycle-runner.js.map +1 -0
  231. package/dist/orchestrator/execution/task/task-lifecycle.d.ts +7 -7
  232. package/dist/orchestrator/execution/task/task-lifecycle.d.ts.map +1 -1
  233. package/dist/orchestrator/execution/task/task-lifecycle.js +37 -181
  234. package/dist/orchestrator/execution/task/task-lifecycle.js.map +1 -1
  235. package/dist/orchestrator/execution/task/task-verifier-internal.d.ts +2 -0
  236. package/dist/orchestrator/execution/task/task-verifier-internal.d.ts.map +1 -0
  237. package/dist/orchestrator/execution/task/task-verifier-internal.js +2 -0
  238. package/dist/orchestrator/execution/task/task-verifier-internal.js.map +1 -0
  239. package/dist/orchestrator/goal/goal-negotiator.d.ts.map +1 -1
  240. package/dist/orchestrator/goal/goal-negotiator.js +23 -3
  241. package/dist/orchestrator/goal/goal-negotiator.js.map +1 -1
  242. package/dist/orchestrator/loop/core-loop/contracts.d.ts +1 -0
  243. package/dist/orchestrator/loop/core-loop/contracts.d.ts.map +1 -1
  244. package/dist/orchestrator/loop/core-loop/contracts.js.map +1 -1
  245. package/dist/orchestrator/loop/core-loop/iteration-kernel-knowledge.d.ts +7 -0
  246. package/dist/orchestrator/loop/core-loop/iteration-kernel-knowledge.d.ts.map +1 -0
  247. package/dist/orchestrator/loop/core-loop/iteration-kernel-knowledge.js +43 -0
  248. package/dist/orchestrator/loop/core-loop/iteration-kernel-knowledge.js.map +1 -0
  249. package/dist/orchestrator/loop/core-loop/iteration-kernel-wait.d.ts +14 -0
  250. package/dist/orchestrator/loop/core-loop/iteration-kernel-wait.d.ts.map +1 -0
  251. package/dist/orchestrator/loop/core-loop/iteration-kernel-wait.js +41 -0
  252. package/dist/orchestrator/loop/core-loop/iteration-kernel-wait.js.map +1 -0
  253. package/dist/orchestrator/loop/core-loop/iteration-kernel.d.ts +3 -2
  254. package/dist/orchestrator/loop/core-loop/iteration-kernel.d.ts.map +1 -1
  255. package/dist/orchestrator/loop/core-loop/iteration-kernel.js +16 -87
  256. package/dist/orchestrator/loop/core-loop/iteration-kernel.js.map +1 -1
  257. package/dist/orchestrator/loop/core-loop/phase-policy.d.ts.map +1 -1
  258. package/dist/orchestrator/loop/core-loop/phase-policy.js +8 -5
  259. package/dist/orchestrator/loop/core-loop/phase-policy.js.map +1 -1
  260. package/dist/orchestrator/loop/core-loop/task-cycle-stall.d.ts +9 -0
  261. package/dist/orchestrator/loop/core-loop/task-cycle-stall.d.ts.map +1 -0
  262. package/dist/orchestrator/loop/core-loop/task-cycle-stall.js +297 -0
  263. package/dist/orchestrator/loop/core-loop/task-cycle-stall.js.map +1 -0
  264. package/dist/orchestrator/loop/core-loop/task-cycle-wait.d.ts +11 -0
  265. package/dist/orchestrator/loop/core-loop/task-cycle-wait.d.ts.map +1 -0
  266. package/dist/orchestrator/loop/core-loop/task-cycle-wait.js +176 -0
  267. package/dist/orchestrator/loop/core-loop/task-cycle-wait.js.map +1 -0
  268. package/dist/orchestrator/loop/core-loop/task-cycle.d.ts +3 -15
  269. package/dist/orchestrator/loop/core-loop/task-cycle.d.ts.map +1 -1
  270. package/dist/orchestrator/loop/core-loop/task-cycle.js +10 -444
  271. package/dist/orchestrator/loop/core-loop/task-cycle.js.map +1 -1
  272. package/dist/orchestrator/loop/core-loop.d.ts +3 -0
  273. package/dist/orchestrator/loop/core-loop.d.ts.map +1 -1
  274. package/dist/orchestrator/loop/core-loop.js +4 -0
  275. package/dist/orchestrator/loop/core-loop.js.map +1 -1
  276. package/dist/orchestrator/strategy/portfolio-manager.d.ts +3 -2
  277. package/dist/orchestrator/strategy/portfolio-manager.d.ts.map +1 -1
  278. package/dist/orchestrator/strategy/portfolio-manager.js +16 -11
  279. package/dist/orchestrator/strategy/portfolio-manager.js.map +1 -1
  280. package/dist/orchestrator/strategy/portfolio-rebalance.d.ts +1 -1
  281. package/dist/orchestrator/strategy/portfolio-rebalance.d.ts.map +1 -1
  282. package/dist/orchestrator/strategy/portfolio-rebalance.js +31 -9
  283. package/dist/orchestrator/strategy/portfolio-rebalance.js.map +1 -1
  284. package/dist/orchestrator/strategy/strategy-manager-base.d.ts +12 -2
  285. package/dist/orchestrator/strategy/strategy-manager-base.d.ts.map +1 -1
  286. package/dist/orchestrator/strategy/strategy-manager-base.js +23 -7
  287. package/dist/orchestrator/strategy/strategy-manager-base.js.map +1 -1
  288. package/dist/orchestrator/strategy/strategy-manager.d.ts +1 -11
  289. package/dist/orchestrator/strategy/strategy-manager.d.ts.map +1 -1
  290. package/dist/orchestrator/strategy/strategy-manager.js +78 -19
  291. package/dist/orchestrator/strategy/strategy-manager.js.map +1 -1
  292. package/dist/platform/code-search/candidate-normalizer.d.ts +3 -0
  293. package/dist/platform/code-search/candidate-normalizer.d.ts.map +1 -0
  294. package/dist/platform/code-search/candidate-normalizer.js +61 -0
  295. package/dist/platform/code-search/candidate-normalizer.js.map +1 -0
  296. package/dist/platform/code-search/candidate.d.ts +25 -0
  297. package/dist/platform/code-search/candidate.d.ts.map +1 -0
  298. package/dist/platform/code-search/candidate.js +61 -0
  299. package/dist/platform/code-search/candidate.js.map +1 -0
  300. package/dist/platform/code-search/contracts.d.ts +275 -0
  301. package/dist/platform/code-search/contracts.d.ts.map +1 -0
  302. package/dist/platform/code-search/contracts.js +22 -0
  303. package/dist/platform/code-search/contracts.js.map +1 -0
  304. package/dist/platform/code-search/eval/fixtures.d.ts +14 -0
  305. package/dist/platform/code-search/eval/fixtures.d.ts.map +1 -0
  306. package/dist/platform/code-search/eval/fixtures.js +24 -0
  307. package/dist/platform/code-search/eval/fixtures.js.map +1 -0
  308. package/dist/platform/code-search/eval/metrics.d.ts +10 -0
  309. package/dist/platform/code-search/eval/metrics.d.ts.map +1 -0
  310. package/dist/platform/code-search/eval/metrics.js +20 -0
  311. package/dist/platform/code-search/eval/metrics.js.map +1 -0
  312. package/dist/platform/code-search/eval/runner.d.ts +3 -0
  313. package/dist/platform/code-search/eval/runner.d.ts.map +1 -0
  314. package/dist/platform/code-search/eval/runner.js +13 -0
  315. package/dist/platform/code-search/eval/runner.js.map +1 -0
  316. package/dist/platform/code-search/fusion.d.ts +6 -0
  317. package/dist/platform/code-search/fusion.d.ts.map +1 -0
  318. package/dist/platform/code-search/fusion.js +12 -0
  319. package/dist/platform/code-search/fusion.js.map +1 -0
  320. package/dist/platform/code-search/generated-detector.d.ts +15 -0
  321. package/dist/platform/code-search/generated-detector.d.ts.map +1 -0
  322. package/dist/platform/code-search/generated-detector.js +42 -0
  323. package/dist/platform/code-search/generated-detector.js.map +1 -0
  324. package/dist/platform/code-search/indexes/call-graph.d.ts +3 -0
  325. package/dist/platform/code-search/indexes/call-graph.d.ts.map +1 -0
  326. package/dist/platform/code-search/indexes/call-graph.js +13 -0
  327. package/dist/platform/code-search/indexes/call-graph.js.map +1 -0
  328. package/dist/platform/code-search/indexes/config-index.d.ts +3 -0
  329. package/dist/platform/code-search/indexes/config-index.d.ts.map +1 -0
  330. package/dist/platform/code-search/indexes/config-index.js +7 -0
  331. package/dist/platform/code-search/indexes/config-index.js.map +1 -0
  332. package/dist/platform/code-search/indexes/file-index.d.ts +5 -0
  333. package/dist/platform/code-search/indexes/file-index.d.ts.map +1 -0
  334. package/dist/platform/code-search/indexes/file-index.js +106 -0
  335. package/dist/platform/code-search/indexes/file-index.js.map +1 -0
  336. package/dist/platform/code-search/indexes/index-store.d.ts +6 -0
  337. package/dist/platform/code-search/indexes/index-store.d.ts.map +1 -0
  338. package/dist/platform/code-search/indexes/index-store.js +14 -0
  339. package/dist/platform/code-search/indexes/index-store.js.map +1 -0
  340. package/dist/platform/code-search/indexes/indexer.d.ts +3 -0
  341. package/dist/platform/code-search/indexes/indexer.d.ts.map +1 -0
  342. package/dist/platform/code-search/indexes/indexer.js +27 -0
  343. package/dist/platform/code-search/indexes/indexer.js.map +1 -0
  344. package/dist/platform/code-search/indexes/package-graph.d.ts +3 -0
  345. package/dist/platform/code-search/indexes/package-graph.d.ts.map +1 -0
  346. package/dist/platform/code-search/indexes/package-graph.js +26 -0
  347. package/dist/platform/code-search/indexes/package-graph.js.map +1 -0
  348. package/dist/platform/code-search/indexes/repo-map-index.d.ts +3 -0
  349. package/dist/platform/code-search/indexes/repo-map-index.d.ts.map +1 -0
  350. package/dist/platform/code-search/indexes/repo-map-index.js +26 -0
  351. package/dist/platform/code-search/indexes/repo-map-index.js.map +1 -0
  352. package/dist/platform/code-search/indexes/semantic-index.d.ts +3 -0
  353. package/dist/platform/code-search/indexes/semantic-index.d.ts.map +1 -0
  354. package/dist/platform/code-search/indexes/semantic-index.js +4 -0
  355. package/dist/platform/code-search/indexes/semantic-index.js.map +1 -0
  356. package/dist/platform/code-search/indexes/symbol-index.d.ts +3 -0
  357. package/dist/platform/code-search/indexes/symbol-index.d.ts.map +1 -0
  358. package/dist/platform/code-search/indexes/symbol-index.js +84 -0
  359. package/dist/platform/code-search/indexes/symbol-index.js.map +1 -0
  360. package/dist/platform/code-search/indexes/test-index.d.ts +3 -0
  361. package/dist/platform/code-search/indexes/test-index.d.ts.map +1 -0
  362. package/dist/platform/code-search/indexes/test-index.js +22 -0
  363. package/dist/platform/code-search/indexes/test-index.js.map +1 -0
  364. package/dist/platform/code-search/orchestrator.d.ts +9 -0
  365. package/dist/platform/code-search/orchestrator.d.ts.map +1 -0
  366. package/dist/platform/code-search/orchestrator.js +81 -0
  367. package/dist/platform/code-search/orchestrator.js.map +1 -0
  368. package/dist/platform/code-search/path-policy.d.ts +6 -0
  369. package/dist/platform/code-search/path-policy.d.ts.map +1 -0
  370. package/dist/platform/code-search/path-policy.js +60 -0
  371. package/dist/platform/code-search/path-policy.js.map +1 -0
  372. package/dist/platform/code-search/progressive-reader.d.ts +8 -0
  373. package/dist/platform/code-search/progressive-reader.d.ts.map +1 -0
  374. package/dist/platform/code-search/progressive-reader.js +173 -0
  375. package/dist/platform/code-search/progressive-reader.js.map +1 -0
  376. package/dist/platform/code-search/query-planner.d.ts +4 -0
  377. package/dist/platform/code-search/query-planner.d.ts.map +1 -0
  378. package/dist/platform/code-search/query-planner.js +107 -0
  379. package/dist/platform/code-search/query-planner.js.map +1 -0
  380. package/dist/platform/code-search/reranker.d.ts +4 -0
  381. package/dist/platform/code-search/reranker.d.ts.map +1 -0
  382. package/dist/platform/code-search/reranker.js +57 -0
  383. package/dist/platform/code-search/reranker.js.map +1 -0
  384. package/dist/platform/code-search/retrievers/callgraph-retriever.d.ts +6 -0
  385. package/dist/platform/code-search/retrievers/callgraph-retriever.d.ts.map +1 -0
  386. package/dist/platform/code-search/retrievers/callgraph-retriever.js +31 -0
  387. package/dist/platform/code-search/retrievers/callgraph-retriever.js.map +1 -0
  388. package/dist/platform/code-search/retrievers/config-retriever.d.ts +6 -0
  389. package/dist/platform/code-search/retrievers/config-retriever.d.ts.map +1 -0
  390. package/dist/platform/code-search/retrievers/config-retriever.js +23 -0
  391. package/dist/platform/code-search/retrievers/config-retriever.js.map +1 -0
  392. package/dist/platform/code-search/retrievers/lexical-retriever.d.ts +6 -0
  393. package/dist/platform/code-search/retrievers/lexical-retriever.d.ts.map +1 -0
  394. package/dist/platform/code-search/retrievers/lexical-retriever.js +49 -0
  395. package/dist/platform/code-search/retrievers/lexical-retriever.js.map +1 -0
  396. package/dist/platform/code-search/retrievers/package-retriever.d.ts +6 -0
  397. package/dist/platform/code-search/retrievers/package-retriever.d.ts.map +1 -0
  398. package/dist/platform/code-search/retrievers/package-retriever.js +29 -0
  399. package/dist/platform/code-search/retrievers/package-retriever.js.map +1 -0
  400. package/dist/platform/code-search/retrievers/repo-map-retriever.d.ts +6 -0
  401. package/dist/platform/code-search/retrievers/repo-map-retriever.d.ts.map +1 -0
  402. package/dist/platform/code-search/retrievers/repo-map-retriever.js +30 -0
  403. package/dist/platform/code-search/retrievers/repo-map-retriever.js.map +1 -0
  404. package/dist/platform/code-search/retrievers/semantic-retriever.d.ts +6 -0
  405. package/dist/platform/code-search/retrievers/semantic-retriever.d.ts.map +1 -0
  406. package/dist/platform/code-search/retrievers/semantic-retriever.js +18 -0
  407. package/dist/platform/code-search/retrievers/semantic-retriever.js.map +1 -0
  408. package/dist/platform/code-search/retrievers/stacktrace-retriever.d.ts +6 -0
  409. package/dist/platform/code-search/retrievers/stacktrace-retriever.d.ts.map +1 -0
  410. package/dist/platform/code-search/retrievers/stacktrace-retriever.js +30 -0
  411. package/dist/platform/code-search/retrievers/stacktrace-retriever.js.map +1 -0
  412. package/dist/platform/code-search/retrievers/symbol-retriever.d.ts +6 -0
  413. package/dist/platform/code-search/retrievers/symbol-retriever.d.ts.map +1 -0
  414. package/dist/platform/code-search/retrievers/symbol-retriever.js +32 -0
  415. package/dist/platform/code-search/retrievers/symbol-retriever.js.map +1 -0
  416. package/dist/platform/code-search/retrievers/test-retriever.d.ts +6 -0
  417. package/dist/platform/code-search/retrievers/test-retriever.d.ts.map +1 -0
  418. package/dist/platform/code-search/retrievers/test-retriever.js +30 -0
  419. package/dist/platform/code-search/retrievers/test-retriever.js.map +1 -0
  420. package/dist/platform/code-search/session-store.d.ts +11 -0
  421. package/dist/platform/code-search/session-store.d.ts.map +1 -0
  422. package/dist/platform/code-search/session-store.js +41 -0
  423. package/dist/platform/code-search/session-store.js.map +1 -0
  424. package/dist/platform/code-search/trace.d.ts +9 -0
  425. package/dist/platform/code-search/trace.d.ts.map +1 -0
  426. package/dist/platform/code-search/trace.js +25 -0
  427. package/dist/platform/code-search/trace.js.map +1 -0
  428. package/dist/platform/code-search/verification-retrieval.d.ts +3 -0
  429. package/dist/platform/code-search/verification-retrieval.d.ts.map +1 -0
  430. package/dist/platform/code-search/verification-retrieval.js +33 -0
  431. package/dist/platform/code-search/verification-retrieval.js.map +1 -0
  432. package/dist/platform/dream/dream-consolidator/fs-metrics.d.ts +18 -0
  433. package/dist/platform/dream/dream-consolidator/fs-metrics.d.ts.map +1 -0
  434. package/dist/platform/dream/dream-consolidator/fs-metrics.js +130 -0
  435. package/dist/platform/dream/dream-consolidator/fs-metrics.js.map +1 -0
  436. package/dist/platform/dream/dream-consolidator.d.ts +4 -14
  437. package/dist/platform/dream/dream-consolidator.d.ts.map +1 -1
  438. package/dist/platform/dream/dream-consolidator.js +46 -166
  439. package/dist/platform/dream/dream-consolidator.js.map +1 -1
  440. package/dist/platform/dream/dream-soil-sync.d.ts +1 -0
  441. package/dist/platform/dream/dream-soil-sync.d.ts.map +1 -1
  442. package/dist/platform/dream/dream-soil-sync.js +8 -1
  443. package/dist/platform/dream/dream-soil-sync.js.map +1 -1
  444. package/dist/platform/dream/dream-types.d.ts +5 -0
  445. package/dist/platform/dream/dream-types.d.ts.map +1 -1
  446. package/dist/platform/dream/dream-types.js +1 -0
  447. package/dist/platform/dream/dream-types.js.map +1 -1
  448. package/dist/platform/dream/playbook-memory.d.ts +4 -4
  449. package/dist/platform/drive/stall-detector/analysis.d.ts +5 -0
  450. package/dist/platform/drive/stall-detector/analysis.d.ts.map +1 -0
  451. package/dist/platform/drive/stall-detector/analysis.js +55 -0
  452. package/dist/platform/drive/stall-detector/analysis.js.map +1 -0
  453. package/dist/platform/drive/stall-detector/repetitive.d.ts +3 -0
  454. package/dist/platform/drive/stall-detector/repetitive.d.ts.map +1 -0
  455. package/dist/platform/drive/stall-detector/repetitive.js +72 -0
  456. package/dist/platform/drive/stall-detector/repetitive.js.map +1 -0
  457. package/dist/platform/drive/stall-detector/thresholds.d.ts +10 -0
  458. package/dist/platform/drive/stall-detector/thresholds.d.ts.map +1 -0
  459. package/dist/platform/drive/stall-detector/thresholds.js +61 -0
  460. package/dist/platform/drive/stall-detector/thresholds.js.map +1 -0
  461. package/dist/platform/drive/stall-detector.d.ts +2 -20
  462. package/dist/platform/drive/stall-detector.d.ts.map +1 -1
  463. package/dist/platform/drive/stall-detector.js +9 -202
  464. package/dist/platform/drive/stall-detector.js.map +1 -1
  465. package/dist/platform/knowledge/knowledge-manager-agent-memory.d.ts +55 -0
  466. package/dist/platform/knowledge/knowledge-manager-agent-memory.d.ts.map +1 -0
  467. package/dist/platform/knowledge/knowledge-manager-agent-memory.js +232 -0
  468. package/dist/platform/knowledge/knowledge-manager-agent-memory.js.map +1 -0
  469. package/dist/platform/knowledge/knowledge-manager-internals.d.ts +10 -0
  470. package/dist/platform/knowledge/knowledge-manager-internals.d.ts.map +1 -0
  471. package/dist/platform/knowledge/knowledge-manager-internals.js +43 -0
  472. package/dist/platform/knowledge/knowledge-manager-internals.js.map +1 -0
  473. package/dist/platform/knowledge/knowledge-manager-store.d.ts +13 -0
  474. package/dist/platform/knowledge/knowledge-manager-store.d.ts.map +1 -0
  475. package/dist/platform/knowledge/knowledge-manager-store.js +67 -0
  476. package/dist/platform/knowledge/knowledge-manager-store.js.map +1 -0
  477. package/dist/platform/knowledge/knowledge-manager.d.ts +6 -2
  478. package/dist/platform/knowledge/knowledge-manager.d.ts.map +1 -1
  479. package/dist/platform/knowledge/knowledge-manager.js +43 -344
  480. package/dist/platform/knowledge/knowledge-manager.js.map +1 -1
  481. package/dist/platform/knowledge/memory/memory-lifecycle-storage.d.ts +4 -0
  482. package/dist/platform/knowledge/memory/memory-lifecycle-storage.d.ts.map +1 -0
  483. package/dist/platform/knowledge/memory/memory-lifecycle-storage.js +106 -0
  484. package/dist/platform/knowledge/memory/memory-lifecycle-storage.js.map +1 -0
  485. package/dist/platform/knowledge/memory/memory-lifecycle.d.ts.map +1 -1
  486. package/dist/platform/knowledge/memory/memory-lifecycle.js +6 -112
  487. package/dist/platform/knowledge/memory/memory-lifecycle.js.map +1 -1
  488. package/dist/platform/observation/capability-detector/prompts.d.ts +18 -0
  489. package/dist/platform/observation/capability-detector/prompts.d.ts.map +1 -0
  490. package/dist/platform/observation/capability-detector/prompts.js +80 -0
  491. package/dist/platform/observation/capability-detector/prompts.js.map +1 -0
  492. package/dist/platform/observation/capability-detector/recommendations.d.ts +5 -0
  493. package/dist/platform/observation/capability-detector/recommendations.d.ts.map +1 -0
  494. package/dist/platform/observation/capability-detector/recommendations.js +76 -0
  495. package/dist/platform/observation/capability-detector/recommendations.js.map +1 -0
  496. package/dist/platform/observation/capability-detector/types.d.ts +112 -0
  497. package/dist/platform/observation/capability-detector/types.d.ts.map +1 -0
  498. package/dist/platform/observation/capability-detector/types.js +75 -0
  499. package/dist/platform/observation/capability-detector/types.js.map +1 -0
  500. package/dist/platform/observation/capability-detector.d.ts +4 -9
  501. package/dist/platform/observation/capability-detector.d.ts.map +1 -1
  502. package/dist/platform/observation/capability-detector.js +12 -212
  503. package/dist/platform/observation/capability-detector.js.map +1 -1
  504. package/dist/platform/observation/context-provider/collector.d.ts +13 -0
  505. package/dist/platform/observation/context-provider/collector.d.ts.map +1 -0
  506. package/dist/platform/observation/context-provider/collector.js +259 -0
  507. package/dist/platform/observation/context-provider/collector.js.map +1 -0
  508. package/dist/platform/observation/context-provider/search-terms.d.ts +2 -0
  509. package/dist/platform/observation/context-provider/search-terms.d.ts.map +1 -0
  510. package/dist/platform/observation/context-provider/search-terms.js +24 -0
  511. package/dist/platform/observation/context-provider/search-terms.js.map +1 -0
  512. package/dist/platform/observation/context-provider/shared.d.ts +17 -0
  513. package/dist/platform/observation/context-provider/shared.d.ts.map +1 -0
  514. package/dist/platform/observation/context-provider/shared.js +87 -0
  515. package/dist/platform/observation/context-provider/shared.js.map +1 -0
  516. package/dist/platform/observation/context-provider.d.ts +3 -28
  517. package/dist/platform/observation/context-provider.d.ts.map +1 -1
  518. package/dist/platform/observation/context-provider.js +7 -358
  519. package/dist/platform/observation/context-provider.js.map +1 -1
  520. package/dist/platform/observation/workspace-context.d.ts.map +1 -1
  521. package/dist/platform/observation/workspace-context.js +27 -0
  522. package/dist/platform/observation/workspace-context.js.map +1 -1
  523. package/dist/platform/soil/compiled-memory-projections.d.ts +2 -0
  524. package/dist/platform/soil/compiled-memory-projections.d.ts.map +1 -1
  525. package/dist/platform/soil/compiled-memory-projections.js +59 -0
  526. package/dist/platform/soil/compiled-memory-projections.js.map +1 -1
  527. package/dist/platform/soil/contracts.d.ts +2 -2
  528. package/dist/platform/soil/retriever.d.ts +25 -0
  529. package/dist/platform/soil/retriever.d.ts.map +1 -1
  530. package/dist/platform/soil/retriever.js +94 -5
  531. package/dist/platform/soil/retriever.js.map +1 -1
  532. package/dist/platform/soil/sqlite-repository-helpers.d.ts +80 -0
  533. package/dist/platform/soil/sqlite-repository-helpers.d.ts.map +1 -0
  534. package/dist/platform/soil/sqlite-repository-helpers.js +143 -0
  535. package/dist/platform/soil/sqlite-repository-helpers.js.map +1 -0
  536. package/dist/platform/soil/sqlite-repository-search.d.ts +8 -0
  537. package/dist/platform/soil/sqlite-repository-search.d.ts.map +1 -0
  538. package/dist/platform/soil/sqlite-repository-search.js +367 -0
  539. package/dist/platform/soil/sqlite-repository-search.js.map +1 -0
  540. package/dist/platform/soil/sqlite-repository-storage.d.ts +8 -0
  541. package/dist/platform/soil/sqlite-repository-storage.d.ts.map +1 -0
  542. package/dist/platform/soil/sqlite-repository-storage.js +278 -0
  543. package/dist/platform/soil/sqlite-repository-storage.js.map +1 -0
  544. package/dist/platform/soil/sqlite-repository.d.ts +1 -4
  545. package/dist/platform/soil/sqlite-repository.d.ts.map +1 -1
  546. package/dist/platform/soil/sqlite-repository.js +26 -820
  547. package/dist/platform/soil/sqlite-repository.js.map +1 -1
  548. package/dist/runtime/daemon/client.d.ts +13 -1
  549. package/dist/runtime/daemon/client.d.ts.map +1 -1
  550. package/dist/runtime/daemon/client.js +2 -2
  551. package/dist/runtime/daemon/client.js.map +1 -1
  552. package/dist/runtime/daemon/index.d.ts +1 -1
  553. package/dist/runtime/daemon/index.d.ts.map +1 -1
  554. package/dist/runtime/daemon/index.js +1 -1
  555. package/dist/runtime/daemon/index.js.map +1 -1
  556. package/dist/runtime/daemon/maintenance.d.ts +2 -10
  557. package/dist/runtime/daemon/maintenance.d.ts.map +1 -1
  558. package/dist/runtime/daemon/maintenance.js +14 -45
  559. package/dist/runtime/daemon/maintenance.js.map +1 -1
  560. package/dist/runtime/daemon/runner-bootstrap.d.ts +25 -0
  561. package/dist/runtime/daemon/runner-bootstrap.d.ts.map +1 -0
  562. package/dist/runtime/daemon/runner-bootstrap.js +77 -0
  563. package/dist/runtime/daemon/runner-bootstrap.js.map +1 -0
  564. package/dist/runtime/daemon/runner-commands.d.ts +14 -6
  565. package/dist/runtime/daemon/runner-commands.d.ts.map +1 -1
  566. package/dist/runtime/daemon/runner-commands.js +63 -17
  567. package/dist/runtime/daemon/runner-commands.js.map +1 -1
  568. package/dist/runtime/daemon/runner-goal-cycle.d.ts.map +1 -1
  569. package/dist/runtime/daemon/runner-goal-cycle.js +3 -5
  570. package/dist/runtime/daemon/runner-goal-cycle.js.map +1 -1
  571. package/dist/runtime/daemon/runner-resident-curiosity.d.ts +12 -0
  572. package/dist/runtime/daemon/runner-resident-curiosity.d.ts.map +1 -0
  573. package/dist/runtime/daemon/runner-resident-curiosity.js +155 -0
  574. package/dist/runtime/daemon/runner-resident-curiosity.js.map +1 -0
  575. package/dist/runtime/daemon/runner-resident-dream.d.ts +20 -0
  576. package/dist/runtime/daemon/runner-resident-dream.d.ts.map +1 -0
  577. package/dist/runtime/daemon/runner-resident-dream.js +148 -0
  578. package/dist/runtime/daemon/runner-resident-dream.js.map +1 -0
  579. package/dist/runtime/daemon/runner-resident-proactive.d.ts +4 -0
  580. package/dist/runtime/daemon/runner-resident-proactive.d.ts.map +1 -0
  581. package/dist/runtime/daemon/runner-resident-proactive.js +113 -0
  582. package/dist/runtime/daemon/runner-resident-proactive.js.map +1 -0
  583. package/dist/runtime/daemon/runner-resident-shared.d.ts +40 -0
  584. package/dist/runtime/daemon/runner-resident-shared.d.ts.map +1 -0
  585. package/dist/runtime/daemon/runner-resident-shared.js +101 -0
  586. package/dist/runtime/daemon/runner-resident-shared.js.map +1 -0
  587. package/dist/runtime/daemon/runner-resident.d.ts +4 -68
  588. package/dist/runtime/daemon/runner-resident.d.ts.map +1 -1
  589. package/dist/runtime/daemon/runner-resident.js +4 -506
  590. package/dist/runtime/daemon/runner-resident.js.map +1 -1
  591. package/dist/runtime/daemon/runner-runtime.d.ts +12 -0
  592. package/dist/runtime/daemon/runner-runtime.d.ts.map +1 -0
  593. package/dist/runtime/daemon/runner-runtime.js +43 -0
  594. package/dist/runtime/daemon/runner-runtime.js.map +1 -0
  595. package/dist/runtime/daemon/runner-startup.d.ts.map +1 -1
  596. package/dist/runtime/daemon/runner-startup.js +23 -3
  597. package/dist/runtime/daemon/runner-startup.js.map +1 -1
  598. package/dist/runtime/daemon/runner.d.ts +10 -23
  599. package/dist/runtime/daemon/runner.d.ts.map +1 -1
  600. package/dist/runtime/daemon/runner.js +29 -111
  601. package/dist/runtime/daemon/runner.js.map +1 -1
  602. package/dist/runtime/daemon/runtime-root.d.ts +5 -0
  603. package/dist/runtime/daemon/runtime-root.d.ts.map +1 -0
  604. package/dist/runtime/daemon/runtime-root.js +60 -0
  605. package/dist/runtime/daemon/runtime-root.js.map +1 -0
  606. package/dist/runtime/daemon/wait-deadline-resolver.d.ts +5 -2
  607. package/dist/runtime/daemon/wait-deadline-resolver.d.ts.map +1 -1
  608. package/dist/runtime/daemon/wait-deadline-resolver.js +55 -35
  609. package/dist/runtime/daemon/wait-deadline-resolver.js.map +1 -1
  610. package/dist/runtime/event/dispatcher.d.ts +0 -2
  611. package/dist/runtime/event/dispatcher.d.ts.map +1 -1
  612. package/dist/runtime/event/dispatcher.js +0 -4
  613. package/dist/runtime/event/dispatcher.js.map +1 -1
  614. package/dist/runtime/event/server-command-handler.d.ts.map +1 -1
  615. package/dist/runtime/event/server-command-handler.js +47 -3
  616. package/dist/runtime/event/server-command-handler.js.map +1 -1
  617. package/dist/runtime/executor/goal-worker.d.ts +3 -1
  618. package/dist/runtime/executor/goal-worker.d.ts.map +1 -1
  619. package/dist/runtime/executor/goal-worker.js +3 -1
  620. package/dist/runtime/executor/goal-worker.js.map +1 -1
  621. package/dist/runtime/executor/loop-supervisor.d.ts +27 -1
  622. package/dist/runtime/executor/loop-supervisor.d.ts.map +1 -1
  623. package/dist/runtime/executor/loop-supervisor.js +218 -13
  624. package/dist/runtime/executor/loop-supervisor.js.map +1 -1
  625. package/dist/runtime/gateway/telegram-gateway-adapter.d.ts.map +1 -1
  626. package/dist/runtime/gateway/telegram-gateway-adapter.js +2 -1
  627. package/dist/runtime/gateway/telegram-gateway-adapter.js.map +1 -1
  628. package/dist/runtime/schedule/engine-cron-reflection.d.ts +31 -0
  629. package/dist/runtime/schedule/engine-cron-reflection.d.ts.map +1 -0
  630. package/dist/runtime/schedule/engine-cron-reflection.js +229 -0
  631. package/dist/runtime/schedule/engine-cron-reflection.js.map +1 -0
  632. package/dist/runtime/schedule/engine-execution.d.ts +47 -0
  633. package/dist/runtime/schedule/engine-execution.d.ts.map +1 -0
  634. package/dist/runtime/schedule/engine-execution.js +424 -0
  635. package/dist/runtime/schedule/engine-execution.js.map +1 -0
  636. package/dist/runtime/schedule/engine-heartbeat.d.ts +5 -0
  637. package/dist/runtime/schedule/engine-heartbeat.d.ts.map +1 -0
  638. package/dist/runtime/schedule/engine-heartbeat.js +104 -0
  639. package/dist/runtime/schedule/engine-heartbeat.js.map +1 -0
  640. package/dist/runtime/schedule/engine-layers.d.ts +2 -0
  641. package/dist/runtime/schedule/engine-layers.d.ts.map +1 -1
  642. package/dist/runtime/schedule/engine-layers.js +12 -228
  643. package/dist/runtime/schedule/engine-layers.js.map +1 -1
  644. package/dist/runtime/schedule/engine-mutations.d.ts +37 -0
  645. package/dist/runtime/schedule/engine-mutations.d.ts.map +1 -0
  646. package/dist/runtime/schedule/engine-mutations.js +263 -0
  647. package/dist/runtime/schedule/engine-mutations.js.map +1 -0
  648. package/dist/runtime/schedule/engine.d.ts +11 -38
  649. package/dist/runtime/schedule/engine.d.ts.map +1 -1
  650. package/dist/runtime/schedule/engine.js +65 -810
  651. package/dist/runtime/schedule/engine.js.map +1 -1
  652. package/dist/runtime/schedule/history.d.ts +16 -0
  653. package/dist/runtime/schedule/history.d.ts.map +1 -1
  654. package/dist/runtime/schedule/history.js +8 -0
  655. package/dist/runtime/schedule/history.js.map +1 -1
  656. package/dist/runtime/schedule/index.d.ts +1 -0
  657. package/dist/runtime/schedule/index.d.ts.map +1 -1
  658. package/dist/runtime/schedule/index.js +1 -0
  659. package/dist/runtime/schedule/index.js.map +1 -1
  660. package/dist/runtime/schedule/legacy-cron-migration.d.ts +9 -0
  661. package/dist/runtime/schedule/legacy-cron-migration.d.ts.map +1 -0
  662. package/dist/runtime/schedule/legacy-cron-migration.js +89 -0
  663. package/dist/runtime/schedule/legacy-cron-migration.js.map +1 -0
  664. package/dist/runtime/schedule/wait-projection.d.ts +6 -0
  665. package/dist/runtime/schedule/wait-projection.d.ts.map +1 -0
  666. package/dist/runtime/schedule/wait-projection.js +102 -0
  667. package/dist/runtime/schedule/wait-projection.js.map +1 -0
  668. package/dist/runtime/session-registry/index.d.ts +3 -0
  669. package/dist/runtime/session-registry/index.d.ts.map +1 -0
  670. package/dist/runtime/session-registry/index.js +3 -0
  671. package/dist/runtime/session-registry/index.js.map +1 -0
  672. package/dist/runtime/session-registry/registry-helpers.d.ts +34 -0
  673. package/dist/runtime/session-registry/registry-helpers.d.ts.map +1 -0
  674. package/dist/runtime/session-registry/registry-helpers.js +241 -0
  675. package/dist/runtime/session-registry/registry-helpers.js.map +1 -0
  676. package/dist/runtime/session-registry/registry.d.ts +39 -0
  677. package/dist/runtime/session-registry/registry.d.ts.map +1 -0
  678. package/dist/runtime/session-registry/registry.js +532 -0
  679. package/dist/runtime/session-registry/registry.js.map +1 -0
  680. package/dist/runtime/session-registry/types.d.ts +985 -0
  681. package/dist/runtime/session-registry/types.d.ts.map +1 -0
  682. package/dist/runtime/session-registry/types.js +108 -0
  683. package/dist/runtime/session-registry/types.js.map +1 -0
  684. package/dist/runtime/store/background-run-store.d.ts +75 -0
  685. package/dist/runtime/store/background-run-store.d.ts.map +1 -0
  686. package/dist/runtime/store/background-run-store.js +157 -0
  687. package/dist/runtime/store/background-run-store.js.map +1 -0
  688. package/dist/runtime/store/index.d.ts +2 -0
  689. package/dist/runtime/store/index.d.ts.map +1 -1
  690. package/dist/runtime/store/index.js +1 -0
  691. package/dist/runtime/store/index.js.map +1 -1
  692. package/dist/runtime/store/runtime-operation-schemas.d.ts +12 -12
  693. package/dist/runtime/store/runtime-paths.d.ts +2 -0
  694. package/dist/runtime/store/runtime-paths.d.ts.map +1 -1
  695. package/dist/runtime/store/runtime-paths.js +6 -0
  696. package/dist/runtime/store/runtime-paths.js.map +1 -1
  697. package/dist/runtime/store/runtime-schemas.d.ts +2 -2
  698. package/dist/runtime/types/daemon.d.ts +13 -0
  699. package/dist/runtime/types/daemon.d.ts.map +1 -1
  700. package/dist/runtime/types/daemon.js +3 -0
  701. package/dist/runtime/types/daemon.js.map +1 -1
  702. package/dist/runtime/types/schedule.d.ts +65 -0
  703. package/dist/runtime/types/schedule.d.ts.map +1 -1
  704. package/dist/runtime/types/schedule.js +5 -0
  705. package/dist/runtime/types/schedule.js.map +1 -1
  706. package/dist/tools/builtin/exports.d.ts +5 -0
  707. package/dist/tools/builtin/exports.d.ts.map +1 -1
  708. package/dist/tools/builtin/exports.js +5 -0
  709. package/dist/tools/builtin/exports.js.map +1 -1
  710. package/dist/tools/builtin/factory.d.ts +2 -0
  711. package/dist/tools/builtin/factory.d.ts.map +1 -1
  712. package/dist/tools/builtin/factory.js +26 -1
  713. package/dist/tools/builtin/factory.js.map +1 -1
  714. package/dist/tools/fs/FileValidationTool/protected-path-policy.d.ts +1 -0
  715. package/dist/tools/fs/FileValidationTool/protected-path-policy.d.ts.map +1 -1
  716. package/dist/tools/fs/FileValidationTool/protected-path-policy.js +17 -4
  717. package/dist/tools/fs/FileValidationTool/protected-path-policy.js.map +1 -1
  718. package/dist/tools/fs/GlobTool/GlobTool.js +2 -2
  719. package/dist/tools/fs/GlobTool/GlobTool.js.map +1 -1
  720. package/dist/tools/fs/GrepTool/GrepTool.js +2 -2
  721. package/dist/tools/fs/GrepTool/GrepTool.js.map +1 -1
  722. package/dist/tools/fs/ListDirTool/ListDirTool.js +1 -1
  723. package/dist/tools/fs/ListDirTool/ListDirTool.js.map +1 -1
  724. package/dist/tools/fs/ReadTool/ReadTool.js +2 -2
  725. package/dist/tools/fs/ReadTool/ReadTool.js.map +1 -1
  726. package/dist/tools/kaggle/KaggleExperimentTools.d.ts +395 -0
  727. package/dist/tools/kaggle/KaggleExperimentTools.d.ts.map +1 -0
  728. package/dist/tools/kaggle/KaggleExperimentTools.js +923 -0
  729. package/dist/tools/kaggle/KaggleExperimentTools.js.map +1 -0
  730. package/dist/tools/kaggle/KaggleSubmissionTools.d.ts +241 -0
  731. package/dist/tools/kaggle/KaggleSubmissionTools.d.ts.map +1 -0
  732. package/dist/tools/kaggle/KaggleSubmissionTools.js +558 -0
  733. package/dist/tools/kaggle/KaggleSubmissionTools.js.map +1 -0
  734. package/dist/tools/kaggle/KaggleWorkspacePrepareTool.d.ts +105 -0
  735. package/dist/tools/kaggle/KaggleWorkspacePrepareTool.d.ts.map +1 -0
  736. package/dist/tools/kaggle/KaggleWorkspacePrepareTool.js +135 -0
  737. package/dist/tools/kaggle/KaggleWorkspacePrepareTool.js.map +1 -0
  738. package/dist/tools/kaggle/index.d.ts +6 -0
  739. package/dist/tools/kaggle/index.d.ts.map +1 -0
  740. package/dist/tools/kaggle/index.js +6 -0
  741. package/dist/tools/kaggle/index.js.map +1 -0
  742. package/dist/tools/kaggle/metrics.d.ts +89 -0
  743. package/dist/tools/kaggle/metrics.d.ts.map +1 -0
  744. package/dist/tools/kaggle/metrics.js +51 -0
  745. package/dist/tools/kaggle/metrics.js.map +1 -0
  746. package/dist/tools/kaggle/paths.d.ts +15 -0
  747. package/dist/tools/kaggle/paths.d.ts.map +1 -0
  748. package/dist/tools/kaggle/paths.js +142 -0
  749. package/dist/tools/kaggle/paths.js.map +1 -0
  750. package/dist/tools/network/GitHubCliTool/GitHubCliTool.d.ts +2 -2
  751. package/dist/tools/query/CodeReadContextTool/CodeReadContextTool.d.ts +801 -0
  752. package/dist/tools/query/CodeReadContextTool/CodeReadContextTool.d.ts.map +1 -0
  753. package/dist/tools/query/CodeReadContextTool/CodeReadContextTool.js +147 -0
  754. package/dist/tools/query/CodeReadContextTool/CodeReadContextTool.js.map +1 -0
  755. package/dist/tools/query/CodeReadContextTool/constants.d.ts +5 -0
  756. package/dist/tools/query/CodeReadContextTool/constants.d.ts.map +1 -0
  757. package/dist/tools/query/CodeReadContextTool/constants.js +5 -0
  758. package/dist/tools/query/CodeReadContextTool/constants.js.map +1 -0
  759. package/dist/tools/query/CodeReadContextTool/prompt.d.ts +2 -0
  760. package/dist/tools/query/CodeReadContextTool/prompt.d.ts.map +1 -0
  761. package/dist/tools/query/CodeReadContextTool/prompt.js +6 -0
  762. package/dist/tools/query/CodeReadContextTool/prompt.js.map +1 -0
  763. package/dist/tools/query/CodeSearchRepairTool/CodeSearchRepairTool.d.ts +125 -0
  764. package/dist/tools/query/CodeSearchRepairTool/CodeSearchRepairTool.d.ts.map +1 -0
  765. package/dist/tools/query/CodeSearchRepairTool/CodeSearchRepairTool.js +118 -0
  766. package/dist/tools/query/CodeSearchRepairTool/CodeSearchRepairTool.js.map +1 -0
  767. package/dist/tools/query/CodeSearchRepairTool/constants.d.ts +5 -0
  768. package/dist/tools/query/CodeSearchRepairTool/constants.d.ts.map +1 -0
  769. package/dist/tools/query/CodeSearchRepairTool/constants.js +5 -0
  770. package/dist/tools/query/CodeSearchRepairTool/constants.js.map +1 -0
  771. package/dist/tools/query/CodeSearchRepairTool/prompt.d.ts +2 -0
  772. package/dist/tools/query/CodeSearchRepairTool/prompt.d.ts.map +1 -0
  773. package/dist/tools/query/CodeSearchRepairTool/prompt.js +5 -0
  774. package/dist/tools/query/CodeSearchRepairTool/prompt.js.map +1 -0
  775. package/dist/tools/query/CodeSearchTool/CodeSearchTool.d.ts +123 -0
  776. package/dist/tools/query/CodeSearchTool/CodeSearchTool.d.ts.map +1 -0
  777. package/dist/tools/query/CodeSearchTool/CodeSearchTool.js +117 -0
  778. package/dist/tools/query/CodeSearchTool/CodeSearchTool.js.map +1 -0
  779. package/dist/tools/query/CodeSearchTool/constants.d.ts +5 -0
  780. package/dist/tools/query/CodeSearchTool/constants.d.ts.map +1 -0
  781. package/dist/tools/query/CodeSearchTool/constants.js +5 -0
  782. package/dist/tools/query/CodeSearchTool/constants.js.map +1 -0
  783. package/dist/tools/query/CodeSearchTool/prompt.d.ts +2 -0
  784. package/dist/tools/query/CodeSearchTool/prompt.d.ts.map +1 -0
  785. package/dist/tools/query/CodeSearchTool/prompt.js +6 -0
  786. package/dist/tools/query/CodeSearchTool/prompt.js.map +1 -0
  787. package/dist/tools/query/SoilQueryTool/SoilQueryTool.d.ts.map +1 -1
  788. package/dist/tools/query/SoilQueryTool/SoilQueryTool.js +43 -9
  789. package/dist/tools/query/SoilQueryTool/SoilQueryTool.js.map +1 -1
  790. package/dist/tools/query/code-search-root.d.ts +8 -0
  791. package/dist/tools/query/code-search-root.d.ts.map +1 -0
  792. package/dist/tools/query/code-search-root.js +41 -0
  793. package/dist/tools/query/code-search-root.js.map +1 -0
  794. package/dist/tools/query/runtime-session-tools.d.ts +560 -0
  795. package/dist/tools/query/runtime-session-tools.d.ts.map +1 -0
  796. package/dist/tools/query/runtime-session-tools.js +1015 -0
  797. package/dist/tools/query/runtime-session-tools.js.map +1 -0
  798. package/dist/tools/runtime/LongRunningRuntimeTools.d.ts +821 -0
  799. package/dist/tools/runtime/LongRunningRuntimeTools.d.ts.map +1 -0
  800. package/dist/tools/runtime/LongRunningRuntimeTools.js +845 -0
  801. package/dist/tools/runtime/LongRunningRuntimeTools.js.map +1 -0
  802. package/dist/tools/system/ProcessSessionTool/ProcessSessionTool.d.ts +1 -0
  803. package/dist/tools/system/ProcessSessionTool/ProcessSessionTool.d.ts.map +1 -1
  804. package/dist/tools/system/ProcessSessionTool/ProcessSessionTool.js +11 -0
  805. package/dist/tools/system/ProcessSessionTool/ProcessSessionTool.js.map +1 -1
  806. package/dist/tools/system/ShellTool/ShellTool.d.ts.map +1 -1
  807. package/dist/tools/system/ShellTool/ShellTool.js +2 -1
  808. package/dist/tools/system/ShellTool/ShellTool.js.map +1 -1
  809. package/dist/tools/types.d.ts +2 -0
  810. package/dist/tools/types.d.ts.map +1 -1
  811. package/dist/tools/types.js.map +1 -1
  812. package/package.json +2 -1
  813. package/dist/base/types/cron.d.ts +0 -2
  814. package/dist/base/types/cron.d.ts.map +0 -1
  815. package/dist/base/types/cron.js +0 -3
  816. package/dist/base/types/cron.js.map +0 -1
  817. package/dist/runtime/cron-scheduler.d.ts +0 -13
  818. package/dist/runtime/cron-scheduler.d.ts.map +0 -1
  819. package/dist/runtime/cron-scheduler.js +0 -90
  820. package/dist/runtime/cron-scheduler.js.map +0 -1
  821. package/dist/runtime/types/cron.d.ts +0 -59
  822. package/dist/runtime/types/cron.d.ts.map +0 -1
  823. package/dist/runtime/types/cron.js +0 -13
  824. package/dist/runtime/types/cron.js.map +0 -1
@@ -2,336 +2,11 @@ import * as fsp from "node:fs/promises";
2
2
  import * as path from "node:path";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import Database from "better-sqlite3";
5
- import { cosineSimilarity } from "../knowledge/embedding-client.js";
6
5
  import { getDefaultSoilSqliteIndexPath, resolveSoilRootDir } from "./config.js";
7
- import { SoilEmbeddingSchema, SoilMutationSchema, SoilPageMemberSchema, SoilPageSchema, SoilRecordFilterSchema, SoilRecordSchema, SoilSearchRequestSchema, } from "./contracts.js";
8
- import { SOIL_SCHEMA_SQL } from "./ddl.js";
9
- function buildSnippet(text, query) {
10
- const haystack = text.trim();
11
- if (!haystack)
12
- return "";
13
- const tokens = query.toLowerCase().split(/\s+/).filter(Boolean);
14
- const lower = haystack.toLowerCase();
15
- for (const token of tokens) {
16
- const index = lower.indexOf(token);
17
- if (index >= 0) {
18
- const start = Math.max(0, index - 50);
19
- const end = Math.min(haystack.length, index + token.length + 100);
20
- return haystack.slice(start, end);
21
- }
22
- }
23
- return haystack.slice(0, 160);
24
- }
25
- function serializeJson(value) {
26
- return JSON.stringify(value ?? {});
27
- }
28
- function parseJsonObject(input) {
29
- try {
30
- const parsed = JSON.parse(input);
31
- return typeof parsed === "object" && parsed !== null && !Array.isArray(parsed)
32
- ? parsed
33
- : {};
34
- }
35
- catch {
36
- return {};
37
- }
38
- }
39
- function parseJsonArray(input) {
40
- try {
41
- const parsed = JSON.parse(input);
42
- return Array.isArray(parsed) ? parsed.filter((item) => typeof item === "string") : [];
43
- }
44
- catch {
45
- return [];
46
- }
47
- }
48
- function parseReindexRecordIds(input) {
49
- try {
50
- const payload = JSON.parse(input);
51
- if (typeof payload !== "object" || payload === null || Array.isArray(payload)) {
52
- return [];
53
- }
54
- const value = payload.record_ids;
55
- return Array.isArray(value)
56
- ? value.filter((recordId) => typeof recordId === "string" && recordId.length > 0)
57
- : [];
58
- }
59
- catch {
60
- return [];
61
- }
62
- }
63
- function encodeEmbedding(entry) {
64
- if (entry.encoding === "f32le") {
65
- const floats = entry.embedding instanceof Uint8Array
66
- ? new Float32Array(entry.embedding.buffer.slice(entry.embedding.byteOffset, entry.embedding.byteOffset + entry.embedding.byteLength))
67
- : Float32Array.from(entry.embedding);
68
- return Buffer.from(floats.buffer.slice(floats.byteOffset, floats.byteOffset + floats.byteLength));
69
- }
70
- const payload = entry.embedding instanceof Uint8Array
71
- ? Array.from(entry.embedding.values())
72
- : entry.embedding;
73
- return Buffer.from(JSON.stringify(payload), "utf8");
74
- }
75
- function decodeEmbedding(row) {
76
- if (row.encoding === "f32le") {
77
- const copy = row.embedding.buffer.slice(row.embedding.byteOffset, row.embedding.byteOffset + row.embedding.byteLength);
78
- return Array.from(new Float32Array(copy));
79
- }
80
- return JSON.parse(row.embedding.toString("utf8"));
81
- }
82
- function toRecord(row) {
83
- return SoilRecordSchema.parse({
84
- ...row,
85
- is_active: Boolean(row.is_active),
86
- metadata_json: parseJsonObject(row.metadata_json),
87
- });
88
- }
89
- function toPage(row) {
90
- return SoilPageSchema.parse(row);
91
- }
92
- function toPageMember(row) {
93
- return SoilPageMemberSchema.parse(row);
94
- }
95
- function unique(values) {
96
- return [...new Set(values.filter((value) => value.length > 0))];
97
- }
98
- function dedupeCandidates(candidates, limit) {
99
- const byChunkId = new Map();
100
- for (const candidate of candidates) {
101
- const current = byChunkId.get(candidate.chunk_id);
102
- if (!current ||
103
- candidate.score > current.score ||
104
- (candidate.score === current.score && current.page_id === null && candidate.page_id !== null)) {
105
- byChunkId.set(candidate.chunk_id, candidate);
106
- }
107
- }
108
- return [...byChunkId.values()]
109
- .sort((left, right) => right.score - left.score || left.chunk_id.localeCompare(right.chunk_id))
110
- .slice(0, limit)
111
- .map((candidate, index) => ({ ...candidate, rank: index + 1 }));
112
- }
113
- function fuseCandidates(lexical, dense, limit, rrfK = 60) {
114
- const byChunkId = new Map();
115
- for (const [lane, weight, candidates] of [
116
- ["lexical", 1, lexical],
117
- ["dense", 0.85, dense],
118
- ]) {
119
- for (const candidate of candidates) {
120
- const prior = byChunkId.get(candidate.chunk_id);
121
- const laneScore = weight / (rrfK + candidate.rank);
122
- const metadata_json = {
123
- ...(prior?.metadata_json ?? candidate.metadata_json),
124
- [`${lane}_rank`]: candidate.rank,
125
- [`${lane}_score`]: candidate.score,
126
- };
127
- if (!prior) {
128
- byChunkId.set(candidate.chunk_id, {
129
- ...candidate,
130
- lane: "hybrid",
131
- score: laneScore,
132
- metadata_json,
133
- });
134
- continue;
135
- }
136
- byChunkId.set(candidate.chunk_id, {
137
- ...prior,
138
- page_id: prior.page_id ?? candidate.page_id,
139
- snippet: prior.snippet ?? candidate.snippet,
140
- score: prior.score + laneScore,
141
- metadata_json,
142
- });
143
- }
144
- }
145
- return [...byChunkId.values()]
146
- .sort((left, right) => right.score - left.score || left.chunk_id.localeCompare(right.chunk_id))
147
- .slice(0, limit)
148
- .map((candidate, index) => ({ ...candidate, rank: index + 1 }));
149
- }
150
- function hasExplicitMetadataFilter(request) {
151
- const recordFilter = request.record_filter;
152
- const pageFilter = request.page_filter;
153
- return Boolean(recordFilter.record_ids?.length ||
154
- recordFilter.record_keys?.length ||
155
- recordFilter.record_types?.length ||
156
- recordFilter.statuses?.length ||
157
- recordFilter.goal_ids?.length ||
158
- recordFilter.task_ids?.length ||
159
- recordFilter.source_types?.length ||
160
- recordFilter.source_ids?.length ||
161
- recordFilter.valid_at ||
162
- recordFilter.updated_after ||
163
- recordFilter.updated_before ||
164
- pageFilter.page_ids?.length ||
165
- pageFilter.soil_ids?.length ||
166
- pageFilter.routes?.length ||
167
- pageFilter.kinds?.length ||
168
- pageFilter.page_statuses?.length ||
169
- pageFilter.relative_paths?.length);
170
- }
171
- function buildRecordFilterSql(request, params) {
172
- const clauses = [];
173
- const filter = request.record_filter;
174
- if (filter.active_only) {
175
- clauses.push("r.is_active = 1");
176
- }
177
- if (filter.record_ids?.length) {
178
- clauses.push(`r.record_id IN (${filter.record_ids.map(() => "?").join(", ")})`);
179
- params.push(...filter.record_ids);
180
- }
181
- if (filter.record_keys?.length) {
182
- clauses.push(`r.record_key IN (${filter.record_keys.map(() => "?").join(", ")})`);
183
- params.push(...filter.record_keys);
184
- }
185
- if (filter.record_types?.length) {
186
- clauses.push(`r.record_type IN (${filter.record_types.map(() => "?").join(", ")})`);
187
- params.push(...filter.record_types);
188
- }
189
- if (filter.statuses?.length) {
190
- clauses.push(`r.status IN (${filter.statuses.map(() => "?").join(", ")})`);
191
- params.push(...filter.statuses);
192
- }
193
- if (filter.goal_ids?.length) {
194
- clauses.push(`r.goal_id IN (${filter.goal_ids.map(() => "?").join(", ")})`);
195
- params.push(...filter.goal_ids);
196
- }
197
- if (filter.task_ids?.length) {
198
- clauses.push(`r.task_id IN (${filter.task_ids.map(() => "?").join(", ")})`);
199
- params.push(...filter.task_ids);
200
- }
201
- if (filter.source_types?.length) {
202
- clauses.push(`r.source_type IN (${filter.source_types.map(() => "?").join(", ")})`);
203
- params.push(...filter.source_types);
204
- }
205
- if (filter.source_ids?.length) {
206
- clauses.push(`r.source_id IN (${filter.source_ids.map(() => "?").join(", ")})`);
207
- params.push(...filter.source_ids);
208
- }
209
- if (filter.valid_at) {
210
- clauses.push("(r.valid_from IS NULL OR r.valid_from <= ?)");
211
- clauses.push("(r.valid_to IS NULL OR r.valid_to > ?)");
212
- params.push(filter.valid_at, filter.valid_at);
213
- }
214
- if (filter.updated_after) {
215
- clauses.push("r.updated_at >= ?");
216
- params.push(filter.updated_after);
217
- }
218
- if (filter.updated_before) {
219
- clauses.push("r.updated_at <= ?");
220
- params.push(filter.updated_before);
221
- }
222
- return clauses;
223
- }
224
- function buildPageFilterSql(request, params) {
225
- const clauses = [];
226
- const filter = request.page_filter;
227
- if (filter.page_ids?.length) {
228
- clauses.push(`p.page_id IN (${filter.page_ids.map(() => "?").join(", ")})`);
229
- params.push(...filter.page_ids);
230
- }
231
- if (filter.soil_ids?.length) {
232
- clauses.push(`p.soil_id IN (${filter.soil_ids.map(() => "?").join(", ")})`);
233
- params.push(...filter.soil_ids);
234
- }
235
- if (filter.routes?.length) {
236
- clauses.push(`p.route IN (${filter.routes.map(() => "?").join(", ")})`);
237
- params.push(...filter.routes);
238
- }
239
- if (filter.kinds?.length) {
240
- clauses.push(`p.kind IN (${filter.kinds.map(() => "?").join(", ")})`);
241
- params.push(...filter.kinds);
242
- }
243
- if (filter.page_statuses?.length) {
244
- clauses.push(`p.status IN (${filter.page_statuses.map(() => "?").join(", ")})`);
245
- params.push(...filter.page_statuses);
246
- }
247
- if (filter.relative_paths?.length) {
248
- clauses.push(`p.relative_path IN (${filter.relative_paths.map(() => "?").join(", ")})`);
249
- params.push(...filter.relative_paths);
250
- }
251
- return clauses;
252
- }
253
- function buildPageExistsSql(recordIdExpr, request, params) {
254
- const filter = request.page_filter;
255
- const pagePredicates = [];
256
- if (filter.page_ids?.length) {
257
- pagePredicates.push(`p.page_id IN (${filter.page_ids.map(() => "?").join(", ")})`);
258
- params.push(...filter.page_ids);
259
- }
260
- if (filter.soil_ids?.length) {
261
- pagePredicates.push(`p.soil_id IN (${filter.soil_ids.map(() => "?").join(", ")})`);
262
- params.push(...filter.soil_ids);
263
- }
264
- if (filter.routes?.length) {
265
- pagePredicates.push(`p.route IN (${filter.routes.map(() => "?").join(", ")})`);
266
- params.push(...filter.routes);
267
- }
268
- if (filter.kinds?.length) {
269
- pagePredicates.push(`p.kind IN (${filter.kinds.map(() => "?").join(", ")})`);
270
- params.push(...filter.kinds);
271
- }
272
- if (filter.page_statuses?.length) {
273
- pagePredicates.push(`p.status IN (${filter.page_statuses.map(() => "?").join(", ")})`);
274
- params.push(...filter.page_statuses);
275
- }
276
- if (filter.relative_paths?.length) {
277
- pagePredicates.push(`p.relative_path IN (${filter.relative_paths.map(() => "?").join(", ")})`);
278
- params.push(...filter.relative_paths);
279
- }
280
- if (pagePredicates.length === 0) {
281
- return [];
282
- }
283
- return [
284
- `EXISTS (
285
- SELECT 1
286
- FROM soil_page_members spm
287
- JOIN soil_pages p ON p.page_id = spm.page_id
288
- WHERE spm.record_id = ${recordIdExpr}
289
- AND ${pagePredicates.join(" AND ")}
290
- )`,
291
- ];
292
- }
293
- function buildCandidatePageIdSql(recordIdExpr, request, params) {
294
- const filter = request.page_filter;
295
- const pagePredicates = [];
296
- if (filter.page_ids?.length) {
297
- pagePredicates.push(`p.page_id IN (${filter.page_ids.map(() => "?").join(", ")})`);
298
- params.push(...filter.page_ids);
299
- }
300
- if (filter.soil_ids?.length) {
301
- pagePredicates.push(`p.soil_id IN (${filter.soil_ids.map(() => "?").join(", ")})`);
302
- params.push(...filter.soil_ids);
303
- }
304
- if (filter.routes?.length) {
305
- pagePredicates.push(`p.route IN (${filter.routes.map(() => "?").join(", ")})`);
306
- params.push(...filter.routes);
307
- }
308
- if (filter.kinds?.length) {
309
- pagePredicates.push(`p.kind IN (${filter.kinds.map(() => "?").join(", ")})`);
310
- params.push(...filter.kinds);
311
- }
312
- if (filter.page_statuses?.length) {
313
- pagePredicates.push(`p.status IN (${filter.page_statuses.map(() => "?").join(", ")})`);
314
- params.push(...filter.page_statuses);
315
- }
316
- if (filter.relative_paths?.length) {
317
- pagePredicates.push(`p.relative_path IN (${filter.relative_paths.map(() => "?").join(", ")})`);
318
- params.push(...filter.relative_paths);
319
- }
320
- const baseQuery = pagePredicates.length > 0
321
- ? `SELECT spm.page_id
322
- FROM soil_page_members spm
323
- JOIN soil_pages p ON p.page_id = spm.page_id
324
- WHERE spm.record_id = ${recordIdExpr}
325
- AND ${pagePredicates.join(" AND ")}
326
- ORDER BY CASE WHEN spm.role = 'primary' THEN 0 ELSE 1 END, spm.ordinal, p.relative_path, spm.page_id
327
- LIMIT 1`
328
- : `SELECT spm.page_id
329
- FROM soil_page_members spm
330
- WHERE spm.record_id = ${recordIdExpr}
331
- ORDER BY CASE WHEN spm.role = 'primary' THEN 0 ELSE 1 END, spm.ordinal, spm.page_id
332
- LIMIT 1`;
333
- return `(${baseQuery})`;
334
- }
6
+ import { SoilRecordFilterSchema, SoilSearchRequestSchema, } from "./contracts.js";
7
+ import { fuseCandidates, toPage, toPageMember, toRecord, unique } from "./sqlite-repository-helpers.js";
8
+ import { buildRecordFilterSql, lookupDirectCandidates, searchDenseCandidates, searchLexicalCandidates, shouldRunDenseSearch, } from "./sqlite-repository-search.js";
9
+ import { applySoilMutation, initializeReadonlySoilSqlite, initializeSoilSqlite, loadOpenEmbeddingReindexRecordIds, replaceSoilPageMembers, } from "./sqlite-repository-storage.js";
335
10
  export class SqliteSoilRepository {
336
11
  db;
337
12
  dbPath;
@@ -344,195 +19,27 @@ export class SqliteSoilRepository {
344
19
  const indexPath = configInput.indexPath ? path.resolve(configInput.indexPath) : getDefaultSoilSqliteIndexPath(rootDir);
345
20
  await fsp.mkdir(path.dirname(indexPath), { recursive: true });
346
21
  const db = new Database(indexPath);
347
- db.pragma("journal_mode = WAL");
348
- db.pragma("foreign_keys = ON");
349
- db.exec(SOIL_SCHEMA_SQL);
22
+ initializeSoilSqlite(db);
23
+ return new SqliteSoilRepository(db, indexPath);
24
+ }
25
+ static async openExisting(configInput = {}) {
26
+ const rootDir = resolveSoilRootDir(configInput.rootDir);
27
+ const indexPath = configInput.indexPath ? path.resolve(configInput.indexPath) : getDefaultSoilSqliteIndexPath(rootDir);
28
+ try {
29
+ await fsp.access(indexPath);
30
+ }
31
+ catch {
32
+ return null;
33
+ }
34
+ const db = new Database(indexPath, { readonly: true, fileMustExist: true });
35
+ initializeReadonlySoilSqlite(db);
350
36
  return new SqliteSoilRepository(db, indexPath);
351
37
  }
352
38
  close() {
353
39
  this.db.close();
354
40
  }
355
41
  async applyMutation(input) {
356
- const mutation = SoilMutationSchema.parse(input);
357
- const contentMutatedRecordIds = new Set();
358
- const embeddedChunkIds = new Set();
359
- const embeddedRecordIds = new Set();
360
- const tx = this.db.transaction(() => {
361
- for (const record of mutation.records) {
362
- if (record.is_active) {
363
- this.db
364
- .prepare("UPDATE soil_records SET is_active = 0 WHERE record_key = ? AND record_id != ? AND is_active = 1")
365
- .run(record.record_key, record.record_id);
366
- }
367
- this.db.prepare(`
368
- INSERT INTO soil_records (
369
- record_id, record_key, version, record_type, soil_id, title, summary, canonical_text,
370
- goal_id, task_id, status, confidence, importance, source_reliability,
371
- valid_from, valid_to, supersedes_record_id, is_active, source_type, source_id,
372
- metadata_json, created_at, updated_at
373
- ) VALUES (
374
- @record_id, @record_key, @version, @record_type, @soil_id, @title, @summary, @canonical_text,
375
- @goal_id, @task_id, @status, @confidence, @importance, @source_reliability,
376
- @valid_from, @valid_to, @supersedes_record_id, @is_active, @source_type, @source_id,
377
- @metadata_json, @created_at, @updated_at
378
- )
379
- ON CONFLICT(record_id) DO UPDATE SET
380
- record_key = excluded.record_key,
381
- version = excluded.version,
382
- record_type = excluded.record_type,
383
- soil_id = excluded.soil_id,
384
- title = excluded.title,
385
- summary = excluded.summary,
386
- canonical_text = excluded.canonical_text,
387
- goal_id = excluded.goal_id,
388
- task_id = excluded.task_id,
389
- status = excluded.status,
390
- confidence = excluded.confidence,
391
- importance = excluded.importance,
392
- source_reliability = excluded.source_reliability,
393
- valid_from = excluded.valid_from,
394
- valid_to = excluded.valid_to,
395
- supersedes_record_id = excluded.supersedes_record_id,
396
- is_active = excluded.is_active,
397
- source_type = excluded.source_type,
398
- source_id = excluded.source_id,
399
- metadata_json = excluded.metadata_json,
400
- created_at = excluded.created_at,
401
- updated_at = excluded.updated_at
402
- `).run({
403
- ...record,
404
- is_active: record.is_active ? 1 : 0,
405
- metadata_json: serializeJson(record.metadata_json),
406
- });
407
- contentMutatedRecordIds.add(record.record_id);
408
- }
409
- for (const chunk of mutation.chunks) {
410
- this.db.prepare(`
411
- INSERT INTO soil_chunks (
412
- chunk_id, record_id, soil_id, chunk_index, chunk_kind, heading_path_json,
413
- chunk_text, token_count, checksum, created_at
414
- ) VALUES (
415
- @chunk_id, @record_id, @soil_id, @chunk_index, @chunk_kind, @heading_path_json,
416
- @chunk_text, @token_count, @checksum, @created_at
417
- )
418
- ON CONFLICT(chunk_id) DO UPDATE SET
419
- record_id = excluded.record_id,
420
- soil_id = excluded.soil_id,
421
- chunk_index = excluded.chunk_index,
422
- chunk_kind = excluded.chunk_kind,
423
- heading_path_json = excluded.heading_path_json,
424
- chunk_text = excluded.chunk_text,
425
- token_count = excluded.token_count,
426
- checksum = excluded.checksum,
427
- created_at = excluded.created_at
428
- `).run({
429
- ...chunk,
430
- heading_path_json: serializeJson(chunk.heading_path_json),
431
- });
432
- contentMutatedRecordIds.add(chunk.record_id);
433
- }
434
- for (const page of mutation.pages) {
435
- this.db.prepare(`
436
- INSERT INTO soil_pages (
437
- page_id, soil_id, relative_path, route, kind, status, markdown, checksum, projected_at
438
- ) VALUES (
439
- @page_id, @soil_id, @relative_path, @route, @kind, @status, @markdown, @checksum, @projected_at
440
- )
441
- ON CONFLICT(page_id) DO UPDATE SET
442
- soil_id = excluded.soil_id,
443
- relative_path = excluded.relative_path,
444
- route = excluded.route,
445
- kind = excluded.kind,
446
- status = excluded.status,
447
- markdown = excluded.markdown,
448
- checksum = excluded.checksum,
449
- projected_at = excluded.projected_at
450
- `).run(page);
451
- }
452
- for (const member of mutation.page_members) {
453
- this.db.prepare(`
454
- INSERT INTO soil_page_members (page_id, record_id, ordinal, role, confidence)
455
- VALUES (@page_id, @record_id, @ordinal, @role, @confidence)
456
- ON CONFLICT(page_id, record_id, role) DO UPDATE SET
457
- ordinal = excluded.ordinal,
458
- confidence = excluded.confidence
459
- `).run(member);
460
- }
461
- for (const embedding of mutation.embeddings) {
462
- const parsed = SoilEmbeddingSchema.parse(embedding);
463
- this.db.prepare(`
464
- INSERT INTO soil_embeddings (
465
- chunk_id, model, embedding_version, encoding, embedding, embedded_at
466
- ) VALUES (
467
- @chunk_id, @model, @embedding_version, @encoding, @embedding, @embedded_at
468
- )
469
- ON CONFLICT(chunk_id, model, embedding_version) DO UPDATE SET
470
- encoding = excluded.encoding,
471
- embedding = excluded.embedding,
472
- embedded_at = excluded.embedded_at
473
- `).run({
474
- chunk_id: parsed.chunk_id,
475
- model: parsed.model,
476
- embedding_version: parsed.embedding_version,
477
- encoding: parsed.encoding,
478
- embedding: encodeEmbedding(parsed),
479
- embedded_at: parsed.embedded_at,
480
- });
481
- const chunk = this.db
482
- .prepare("SELECT record_id FROM soil_chunks WHERE chunk_id = ?")
483
- .get(parsed.chunk_id);
484
- if (chunk) {
485
- embeddedChunkIds.add(parsed.chunk_id);
486
- embeddedRecordIds.add(chunk.record_id);
487
- }
488
- }
489
- for (const edge of mutation.edges) {
490
- this.db.prepare(`
491
- INSERT INTO soil_edges (src_record_id, edge_type, dst_record_id, confidence)
492
- VALUES (@src_record_id, @edge_type, @dst_record_id, @confidence)
493
- ON CONFLICT(src_record_id, edge_type, dst_record_id) DO UPDATE SET
494
- confidence = excluded.confidence
495
- `).run(edge);
496
- }
497
- for (const tombstone of mutation.tombstones) {
498
- this.db.prepare(`
499
- INSERT INTO soil_tombstones (tombstone_id, record_id, record_key, version, reason, deleted_at)
500
- VALUES (?, ?, ?, ?, ?, ?)
501
- `).run(randomUUID(), tombstone.record_id, tombstone.record_key, tombstone.version, tombstone.reason, tombstone.deleted_at);
502
- if (tombstone.record_id) {
503
- this.db
504
- .prepare("UPDATE soil_records SET is_active = 0 WHERE record_id = ?")
505
- .run(tombstone.record_id);
506
- contentMutatedRecordIds.add(tombstone.record_id);
507
- }
508
- if (tombstone.record_key) {
509
- this.db
510
- .prepare("UPDATE soil_records SET is_active = 0 WHERE record_key = ?")
511
- .run(tombstone.record_key);
512
- const rows = this.db
513
- .prepare("SELECT record_id FROM soil_records WHERE record_key = ?")
514
- .all(tombstone.record_key);
515
- for (const row of rows) {
516
- contentMutatedRecordIds.add(row.record_id);
517
- }
518
- }
519
- }
520
- this.syncFts(unique([...contentMutatedRecordIds]));
521
- const fullyEmbeddedRecordIds = new Set(unique([...embeddedRecordIds]).filter((recordId) => this.recordHasCompleteEmbeddingMutation(recordId, embeddedChunkIds)));
522
- this.completeOpenEmbeddingJobs(fullyEmbeddedRecordIds);
523
- if (contentMutatedRecordIds.size > 0) {
524
- const openEmbeddingRecordIds = new Set(this.loadOpenEmbeddingReindexRecordIds());
525
- const insertJob = this.db.prepare(`
526
- INSERT INTO soil_reindex_jobs (
527
- job_id, scope, reason, status, payload_json, created_at
528
- ) VALUES (?, ?, ?, ?, ?, ?)
529
- `);
530
- for (const recordId of unique([...contentMutatedRecordIds]).filter((id) => !fullyEmbeddedRecordIds.has(id) && !openEmbeddingRecordIds.has(id))) {
531
- insertJob.run(randomUUID(), "embedding", "content mutation invalidated embeddings", "pending", JSON.stringify({ record_ids: [recordId] }), new Date().toISOString());
532
- }
533
- }
534
- });
535
- tx();
42
+ applySoilMutation(this.db, input);
536
43
  }
537
44
  async loadRecords(input = {}) {
538
45
  const record_filter = SoilRecordFilterSchema.parse(input);
@@ -560,122 +67,10 @@ export class SqliteSoilRepository {
560
67
  await this.applyMutation({ pages });
561
68
  }
562
69
  async replacePageMembers(pageId, members) {
563
- const parsed = members.map((member) => SoilPageMemberSchema.parse({ ...member, page_id: pageId }));
564
- const tx = this.db.transaction(() => {
565
- this.db.prepare("DELETE FROM soil_page_members WHERE page_id = ?").run(pageId);
566
- for (const member of parsed) {
567
- this.db.prepare(`
568
- INSERT INTO soil_page_members (page_id, record_id, ordinal, role, confidence)
569
- VALUES (@page_id, @record_id, @ordinal, @role, @confidence)
570
- `).run(member);
571
- }
572
- });
573
- tx();
70
+ replaceSoilPageMembers(this.db, pageId, members);
574
71
  }
575
72
  async lookupDirect(input) {
576
- const request = SoilSearchRequestSchema.parse(input);
577
- if (!request.direct_lookup) {
578
- return { request, candidates: [] };
579
- }
580
- const pageParams = [request.query, request.query, request.query];
581
- const pageWhere = ["(soil_id = ? OR relative_path = ? OR page_id = ?)"];
582
- pageWhere.push(...buildPageFilterSql(request, pageParams));
583
- pageParams.push(request.limit);
584
- const pageMatches = this.db.prepare(`
585
- SELECT page_id, soil_id
586
- FROM soil_pages p
587
- WHERE ${pageWhere.join(" AND ")}
588
- LIMIT ?
589
- `).all(...pageParams);
590
- const recordParams = [request.query, request.query, request.query, request.query];
591
- const recordWhere = ["(r.record_id = ? OR r.record_key = ? OR r.soil_id = ? OR r.source_id = ?)"];
592
- recordWhere.push(...buildRecordFilterSql(request, recordParams));
593
- recordParams.push(request.limit);
594
- const recordRows = this.db.prepare(`
595
- SELECT *
596
- FROM soil_records r
597
- WHERE ${recordWhere.join(" AND ")}
598
- LIMIT ?
599
- `).all(...recordParams);
600
- const pageIdBySoilId = new Map();
601
- for (const page of pageMatches) {
602
- if (!pageIdBySoilId.has(page.soil_id)) {
603
- pageIdBySoilId.set(page.soil_id, page.page_id);
604
- }
605
- }
606
- const firstChunkByRecordId = new Map();
607
- const recordIds = unique(recordRows.map((row) => row.record_id));
608
- if (recordIds.length > 0) {
609
- const chunkRows = this.db
610
- .prepare(`
611
- SELECT *
612
- FROM soil_chunks
613
- WHERE record_id IN (${recordIds.map(() => "?").join(", ")})
614
- ORDER BY record_id, chunk_index
615
- `)
616
- .all(...recordIds);
617
- for (const chunk of chunkRows) {
618
- if (!firstChunkByRecordId.has(chunk.record_id)) {
619
- firstChunkByRecordId.set(chunk.record_id, chunk);
620
- }
621
- }
622
- }
623
- const firstPageMemberByPageId = new Map();
624
- const pageIds = unique(pageMatches.map((page) => page.page_id));
625
- if (pageIds.length > 0) {
626
- const pageMemberRows = this.db
627
- .prepare(`
628
- SELECT spm.page_id, spm.record_id, sc.chunk_id, sc.chunk_text
629
- FROM soil_page_members spm
630
- LEFT JOIN soil_chunks sc ON sc.record_id = spm.record_id
631
- WHERE spm.page_id IN (${pageIds.map(() => "?").join(", ")})
632
- ORDER BY spm.page_id, spm.ordinal, sc.chunk_index
633
- `)
634
- .all(...pageIds);
635
- for (const row of pageMemberRows) {
636
- if (!firstPageMemberByPageId.has(row.page_id)) {
637
- firstPageMemberByPageId.set(row.page_id, row);
638
- }
639
- }
640
- }
641
- const candidates = [];
642
- const representedPageIds = new Set();
643
- for (const row of recordRows) {
644
- const chunk = firstChunkByRecordId.get(row.record_id);
645
- const page_id = pageIdBySoilId.get(row.soil_id) ?? null;
646
- if (page_id) {
647
- representedPageIds.add(page_id);
648
- }
649
- candidates.push({
650
- chunk_id: chunk?.chunk_id ?? `record:${row.record_id}`,
651
- record_id: row.record_id,
652
- soil_id: row.soil_id,
653
- lane: "direct",
654
- rank: candidates.length + 1,
655
- score: 1,
656
- snippet: chunk ? buildSnippet(chunk.chunk_text, request.query) : row.summary ?? row.title,
657
- page_id,
658
- metadata_json: parseJsonObject(row.metadata_json),
659
- });
660
- }
661
- for (const page of pageMatches) {
662
- if (representedPageIds.has(page.page_id))
663
- continue;
664
- representedPageIds.add(page.page_id);
665
- const member = firstPageMemberByPageId.get(page.page_id);
666
- candidates.push({
667
- chunk_id: member?.chunk_id ?? `page:${page.page_id}`,
668
- record_id: member?.record_id ?? `page:${page.page_id}`,
669
- soil_id: page.soil_id,
670
- lane: "direct",
671
- rank: candidates.length + 1,
672
- score: 1,
673
- snippet: member?.chunk_text ? buildSnippet(member.chunk_text, request.query) : page.soil_id,
674
- page_id: page.page_id,
675
- metadata_json: {},
676
- });
677
- }
678
- return { request, candidates: candidates.slice(0, request.limit) };
73
+ return lookupDirectCandidates(this.db, input);
679
74
  }
680
75
  async searchHybrid(input) {
681
76
  const request = SoilSearchRequestSchema.parse(input);
@@ -690,174 +85,20 @@ export class SqliteSoilRepository {
690
85
  return lexical;
691
86
  }
692
87
  const lexicalRecordIds = unique(lexical.map((candidate) => candidate.record_id));
693
- const dense = lexicalRecordIds.length > 0
88
+ const dense = shouldRunDenseSearch(request, lexicalRecordIds)
694
89
  ? await this.searchDense({
695
90
  ...request,
696
91
  direct_lookup: false,
697
- dense_candidate_record_ids: lexicalRecordIds,
92
+ ...(lexicalRecordIds.length > 0 ? { dense_candidate_record_ids: lexicalRecordIds } : {}),
698
93
  })
699
- : hasExplicitMetadataFilter(request)
700
- ? await this.searchDense({ ...request, direct_lookup: false })
701
- : [];
94
+ : [];
702
95
  return fuseCandidates(lexical, dense, request.limit);
703
96
  }
704
97
  async searchLexical(input) {
705
- const request = SoilSearchRequestSchema.parse(input);
706
- const pageIdParams = [];
707
- const pageIdSql = buildCandidatePageIdSql("r.record_id", request, pageIdParams);
708
- const whereParams = [];
709
- const where = ["soil_chunk_fts MATCH ?"];
710
- where.push(...buildRecordFilterSql(request, whereParams));
711
- where.push(...buildPageExistsSql("r.record_id", request, whereParams));
712
- const params = [...pageIdParams, request.query, ...whereParams, request.lexical_top_k];
713
- const rows = this.db.prepare(`
714
- SELECT
715
- soil_chunk_fts.chunk_id AS chunk_id,
716
- soil_chunk_fts.record_id AS record_id,
717
- soil_chunk_fts.soil_id AS soil_id,
718
- ${pageIdSql} AS page_id,
719
- r.title AS title,
720
- r.summary AS summary,
721
- sc.chunk_text AS chunk_text,
722
- bm25(soil_chunk_fts, 8.0, 5.0, 3.0, 1.0) AS score
723
- FROM soil_chunk_fts
724
- JOIN soil_chunks sc ON sc.chunk_id = soil_chunk_fts.chunk_id
725
- JOIN soil_records r ON r.record_id = soil_chunk_fts.record_id
726
- WHERE ${where.join(" AND ")}
727
- ORDER BY score
728
- LIMIT ?
729
- `).all(...params);
730
- const candidates = rows.map((row, index) => ({
731
- chunk_id: row.chunk_id,
732
- record_id: row.record_id,
733
- soil_id: row.soil_id,
734
- page_id: row.page_id,
735
- lane: "lexical",
736
- rank: index + 1,
737
- score: -1 * row.score,
738
- snippet: buildSnippet(row.chunk_text, request.query),
739
- metadata_json: { title: row.title, summary: row.summary },
740
- }));
741
- return dedupeCandidates(candidates, request.limit);
98
+ return searchLexicalCandidates(this.db, input);
742
99
  }
743
100
  async searchDense(input) {
744
- const request = SoilSearchRequestSchema.parse(input);
745
- if (!request.query_embedding?.length) {
746
- return [];
747
- }
748
- const pageIdParams = [];
749
- const pageIdSql = buildCandidatePageIdSql("r.record_id", request, pageIdParams);
750
- const params = [];
751
- const where = buildRecordFilterSql(request, params);
752
- where.push(...buildPageExistsSql("r.record_id", request, params));
753
- const denseCandidateRecordIds = request.dense_candidate_record_ids ? unique(request.dense_candidate_record_ids) : null;
754
- if (denseCandidateRecordIds?.length === 0) {
755
- return [];
756
- }
757
- if (denseCandidateRecordIds) {
758
- where.push(`r.record_id IN (${denseCandidateRecordIds.map(() => "?").join(", ")})`);
759
- params.push(...denseCandidateRecordIds);
760
- }
761
- const excludedRecordIds = this.loadOpenEmbeddingReindexRecordIds();
762
- if (excludedRecordIds.length > 0) {
763
- where.push(`r.record_id NOT IN (${excludedRecordIds.map(() => "?").join(", ")})`);
764
- params.push(...excludedRecordIds);
765
- }
766
- if (request.query_embedding_model) {
767
- where.push("se.model = ?");
768
- params.push(request.query_embedding_model);
769
- }
770
- where.push(`
771
- NOT EXISTS (
772
- SELECT 1
773
- FROM soil_embeddings newer
774
- WHERE newer.chunk_id = se.chunk_id
775
- AND newer.model = se.model
776
- AND newer.embedding_version > se.embedding_version
777
- )
778
- `);
779
- const queryParams = [...pageIdParams, ...params];
780
- const rows = this.db.prepare(`
781
- SELECT
782
- se.chunk_id,
783
- se.model,
784
- se.embedding_version,
785
- se.encoding,
786
- se.embedding,
787
- se.embedded_at,
788
- sc.record_id,
789
- sc.soil_id,
790
- sc.chunk_text,
791
- r.title,
792
- r.summary,
793
- ${pageIdSql} AS page_id
794
- FROM soil_embeddings se
795
- JOIN soil_chunks sc ON sc.chunk_id = se.chunk_id
796
- JOIN soil_records r ON r.record_id = sc.record_id
797
- ${where.length > 0 ? `WHERE ${where.join(" AND ")}` : ""}
798
- `).all(...queryParams);
799
- const scored = [];
800
- for (const row of rows) {
801
- try {
802
- scored.push({
803
- row,
804
- similarity: cosineSimilarity(request.query_embedding, decodeEmbedding(row)),
805
- });
806
- }
807
- catch {
808
- continue;
809
- }
810
- }
811
- scored.sort((left, right) => right.similarity - left.similarity);
812
- const candidates = scored.slice(0, request.dense_top_k).map(({ row, similarity }, index) => ({
813
- chunk_id: row.chunk_id,
814
- record_id: row.record_id,
815
- soil_id: row.soil_id,
816
- page_id: row.page_id,
817
- lane: "dense",
818
- rank: index + 1,
819
- score: similarity,
820
- snippet: buildSnippet(row.chunk_text, request.query),
821
- metadata_json: { model: row.model, embedding_version: row.embedding_version, title: row.title, summary: row.summary },
822
- }));
823
- return dedupeCandidates(candidates, request.limit);
824
- }
825
- recordHasCompleteEmbeddingMutation(recordId, embeddedChunkIds) {
826
- const chunks = this.db
827
- .prepare("SELECT chunk_id FROM soil_chunks WHERE record_id = ?")
828
- .all(recordId);
829
- return chunks.length > 0 && chunks.every((chunk) => embeddedChunkIds.has(chunk.chunk_id));
830
- }
831
- completeOpenEmbeddingJobs(recordIds) {
832
- if (recordIds.size === 0)
833
- return;
834
- const jobs = this.db.prepare(`
835
- SELECT job_id, payload_json
836
- FROM soil_reindex_jobs
837
- WHERE scope = 'embedding'
838
- AND status IN ('pending', 'running')
839
- `).all();
840
- const complete = this.db.prepare("UPDATE soil_reindex_jobs SET status = 'completed', completed_at = ? WHERE job_id = ?");
841
- const completedAt = new Date().toISOString();
842
- for (const job of jobs) {
843
- const jobRecordIds = parseReindexRecordIds(job.payload_json);
844
- if (jobRecordIds.length > 0 && jobRecordIds.every((recordId) => recordIds.has(recordId))) {
845
- complete.run(completedAt, job.job_id);
846
- }
847
- }
848
- }
849
- loadOpenEmbeddingReindexRecordIds() {
850
- const rows = this.db.prepare(`
851
- SELECT payload_json
852
- FROM soil_reindex_jobs
853
- WHERE scope = 'embedding'
854
- AND status IN ('pending', 'running')
855
- `).all();
856
- const recordIds = [];
857
- for (const row of rows) {
858
- recordIds.push(...parseReindexRecordIds(row.payload_json));
859
- }
860
- return unique(recordIds);
101
+ return searchDenseCandidates(this.db, input, loadOpenEmbeddingReindexRecordIds(this.db));
861
102
  }
862
103
  async loadPagesForRecords(recordIds) {
863
104
  const ids = unique(recordIds);
@@ -890,40 +131,5 @@ export class SqliteSoilRepository {
890
131
  `).all(...ids);
891
132
  return rows.map((row) => toPageMember(row));
892
133
  }
893
- syncFts(recordIds) {
894
- if (recordIds.length === 0)
895
- return;
896
- if (recordIds.length > 0) {
897
- this.db.prepare(`DELETE FROM soil_chunk_fts WHERE record_id IN (${recordIds.map(() => "?").join(", ")})`).run(...recordIds);
898
- }
899
- const rows = this.db.prepare(`
900
- SELECT
901
- sc.chunk_id,
902
- sc.record_id,
903
- sc.soil_id,
904
- (
905
- SELECT spm.page_id
906
- FROM soil_page_members spm
907
- WHERE spm.record_id = r.record_id
908
- ORDER BY CASE WHEN spm.role = 'primary' THEN 0 ELSE 1 END, spm.ordinal, spm.page_id
909
- LIMIT 1
910
- ) AS page_id,
911
- r.title AS title_context,
912
- COALESCE(r.summary, '') AS summary_context,
913
- sc.heading_path_json,
914
- sc.chunk_text
915
- FROM soil_chunks sc
916
- JOIN soil_records r ON r.record_id = sc.record_id
917
- WHERE sc.record_id IN (${recordIds.map(() => "?").join(", ")})
918
- `).all(...recordIds);
919
- const insert = this.db.prepare(`
920
- INSERT INTO soil_chunk_fts (
921
- chunk_id, record_id, soil_id, page_id, title_context, summary_context, heading_context, chunk_text
922
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
923
- `);
924
- for (const row of rows) {
925
- insert.run(row.chunk_id, row.record_id, row.soil_id, row.page_id, row.title_context, row.summary_context, parseJsonArray(row.heading_path_json).join(" / "), row.chunk_text);
926
- }
927
- }
928
134
  }
929
135
  //# sourceMappingURL=sqlite-repository.js.map