sensemaking 0.17.0 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/README.md +15 -13
  2. package/dist/cjs/cli/map.js +147 -6
  3. package/dist/cjs/cli/map.js.map +1 -1
  4. package/dist/cjs/cli/named.js +20 -12
  5. package/dist/cjs/cli/named.js.map +1 -1
  6. package/dist/cjs/cli/path.js +190 -29
  7. package/dist/cjs/cli/path.js.map +1 -1
  8. package/dist/cjs/cli/peek.js +148 -7
  9. package/dist/cjs/cli/peek.js.map +1 -1
  10. package/dist/cjs/cli/related.js +5 -5
  11. package/dist/cjs/cli/related.js.map +1 -1
  12. package/dist/cjs/cli/search.js +5 -5
  13. package/dist/cjs/cli/search.js.map +1 -1
  14. package/dist/cjs/cli/shared.d.cts +3 -3
  15. package/dist/cjs/cli/shared.d.ts +3 -3
  16. package/dist/cjs/cli/shared.js +156 -58
  17. package/dist/cjs/cli/shared.js.map +1 -1
  18. package/dist/cjs/cli/sql.js +151 -10
  19. package/dist/cjs/cli/sql.js.map +1 -1
  20. package/dist/cjs/cli/status.js +187 -62
  21. package/dist/cjs/cli/status.js.map +1 -1
  22. package/dist/cjs/commands/map.d.cts +2 -2
  23. package/dist/cjs/commands/map.d.ts +2 -2
  24. package/dist/cjs/commands/map.js +373 -67
  25. package/dist/cjs/commands/map.js.map +1 -1
  26. package/dist/cjs/commands/peek.d.cts +2 -2
  27. package/dist/cjs/commands/peek.d.ts +2 -2
  28. package/dist/cjs/commands/peek.js +321 -79
  29. package/dist/cjs/commands/peek.js.map +1 -1
  30. package/dist/cjs/commands/related.d.cts +2 -2
  31. package/dist/cjs/commands/related.d.ts +2 -2
  32. package/dist/cjs/commands/related.js +55 -10
  33. package/dist/cjs/commands/related.js.map +1 -1
  34. package/dist/cjs/commands/scope.d.cts +7 -7
  35. package/dist/cjs/commands/scope.d.ts +7 -7
  36. package/dist/cjs/commands/scope.js +382 -45
  37. package/dist/cjs/commands/scope.js.map +1 -1
  38. package/dist/cjs/commands/search.d.cts +2 -2
  39. package/dist/cjs/commands/search.d.ts +2 -2
  40. package/dist/cjs/commands/search.js +292 -99
  41. package/dist/cjs/commands/search.js.map +1 -1
  42. package/dist/cjs/commands/signals.d.cts +4 -10
  43. package/dist/cjs/commands/signals.d.ts +4 -10
  44. package/dist/cjs/commands/signals.js +91 -45
  45. package/dist/cjs/commands/signals.js.map +1 -1
  46. package/dist/cjs/commands/status.d.cts +2 -2
  47. package/dist/cjs/commands/status.d.ts +2 -2
  48. package/dist/cjs/commands/status.js +247 -10
  49. package/dist/cjs/commands/status.js.map +1 -1
  50. package/dist/cjs/config/access.d.cts +1 -0
  51. package/dist/cjs/config/access.d.ts +1 -0
  52. package/dist/cjs/config/access.js +7 -0
  53. package/dist/cjs/config/access.js.map +1 -1
  54. package/dist/cjs/config/index.d.cts +1 -1
  55. package/dist/cjs/config/index.d.ts +1 -1
  56. package/dist/cjs/config/index.js +3 -0
  57. package/dist/cjs/config/index.js.map +1 -1
  58. package/dist/cjs/config/types.d.cts +1 -0
  59. package/dist/cjs/config/types.d.ts +1 -0
  60. package/dist/cjs/config/types.js.map +1 -1
  61. package/dist/cjs/config/validate.js +10 -1
  62. package/dist/cjs/config/validate.js.map +1 -1
  63. package/dist/cjs/embed/distribution.d.cts +4 -0
  64. package/dist/cjs/embed/distribution.d.ts +4 -0
  65. package/dist/cjs/embed/distribution.js +186 -0
  66. package/dist/cjs/embed/distribution.js.map +1 -0
  67. package/dist/cjs/embed/langfit.d.cts +2 -5
  68. package/dist/cjs/embed/langfit.d.ts +2 -5
  69. package/dist/cjs/embed/langfit.js +73 -63
  70. package/dist/cjs/embed/langfit.js.map +1 -1
  71. package/dist/cjs/embed/query.d.cts +6 -13
  72. package/dist/cjs/embed/query.d.ts +6 -13
  73. package/dist/cjs/embed/query.js +56 -168
  74. package/dist/cjs/embed/query.js.map +1 -1
  75. package/dist/cjs/embed/static.js +13 -3
  76. package/dist/cjs/embed/static.js.map +1 -1
  77. package/dist/cjs/embed/types.d.cts +1 -0
  78. package/dist/cjs/embed/types.d.ts +1 -0
  79. package/dist/cjs/embed/types.js +11 -2
  80. package/dist/cjs/embed/types.js.map +1 -1
  81. package/dist/cjs/errors.d.cts +1 -1
  82. package/dist/cjs/errors.d.ts +1 -1
  83. package/dist/cjs/errors.js.map +1 -1
  84. package/dist/cjs/features/embed.js +218 -11
  85. package/dist/cjs/features/embed.js.map +1 -1
  86. package/dist/cjs/features/index.d.cts +1 -1
  87. package/dist/cjs/features/index.d.ts +1 -1
  88. package/dist/cjs/features/index.js +6 -0
  89. package/dist/cjs/features/index.js.map +1 -1
  90. package/dist/cjs/features/links.d.cts +7 -2
  91. package/dist/cjs/features/links.d.ts +7 -2
  92. package/dist/cjs/features/links.js +710 -198
  93. package/dist/cjs/features/links.js.map +1 -1
  94. package/dist/cjs/features/rank.js +231 -31
  95. package/dist/cjs/features/rank.js.map +1 -1
  96. package/dist/cjs/features/sections.js +218 -8
  97. package/dist/cjs/features/sections.js.map +1 -1
  98. package/dist/cjs/features/tags.js +236 -40
  99. package/dist/cjs/features/tags.js.map +1 -1
  100. package/dist/cjs/features/types.d.cts +9 -5
  101. package/dist/cjs/features/types.d.ts +9 -5
  102. package/dist/cjs/graph/traverse.d.cts +2 -2
  103. package/dist/cjs/graph/traverse.d.ts +2 -2
  104. package/dist/cjs/graph/traverse.js +321 -42
  105. package/dist/cjs/graph/traverse.js.map +1 -1
  106. package/dist/cjs/index.d.cts +3 -2
  107. package/dist/cjs/index.d.ts +3 -2
  108. package/dist/cjs/index.js +2 -2
  109. package/dist/cjs/index.js.map +1 -1
  110. package/dist/cjs/lib/guarded-tick.d.cts +1 -0
  111. package/dist/cjs/lib/guarded-tick.d.ts +1 -0
  112. package/dist/cjs/lib/guarded-tick.js +19 -0
  113. package/dist/cjs/lib/guarded-tick.js.map +1 -0
  114. package/dist/cjs/output/column-hint.d.cts +1 -2
  115. package/dist/cjs/output/column-hint.d.ts +1 -2
  116. package/dist/cjs/output/column-hint.js +1 -4
  117. package/dist/cjs/output/column-hint.js.map +1 -1
  118. package/dist/cjs/output/output.d.cts +2 -1
  119. package/dist/cjs/output/output.d.ts +2 -1
  120. package/dist/cjs/output/output.js +515 -97
  121. package/dist/cjs/output/output.js.map +1 -1
  122. package/dist/cjs/scan/frontmatter.js.map +1 -1
  123. package/dist/cjs/scan/index.js.map +1 -1
  124. package/dist/cjs/scan/reparse.d.cts +10 -0
  125. package/dist/cjs/scan/reparse.d.ts +10 -0
  126. package/dist/cjs/scan/reparse.js +104 -0
  127. package/dist/cjs/scan/reparse.js.map +1 -0
  128. package/dist/cjs/store/duckdb/batch.d.cts +16 -0
  129. package/dist/cjs/store/duckdb/batch.d.ts +16 -0
  130. package/dist/cjs/store/duckdb/batch.js +208 -0
  131. package/dist/cjs/store/duckdb/batch.js.map +1 -0
  132. package/dist/cjs/store/duckdb/connection.d.cts +5 -0
  133. package/dist/cjs/store/duckdb/connection.d.ts +5 -0
  134. package/dist/cjs/store/duckdb/connection.js +772 -0
  135. package/dist/cjs/store/duckdb/connection.js.map +1 -0
  136. package/dist/cjs/store/duckdb/lexical.d.cts +10 -0
  137. package/dist/cjs/store/duckdb/lexical.d.ts +10 -0
  138. package/dist/cjs/store/duckdb/lexical.js +502 -0
  139. package/dist/cjs/store/duckdb/lexical.js.map +1 -0
  140. package/dist/cjs/store/duckdb/native.d.cts +3 -0
  141. package/dist/cjs/store/duckdb/native.d.ts +3 -0
  142. package/dist/cjs/store/duckdb/native.js +360 -0
  143. package/dist/cjs/store/duckdb/native.js.map +1 -0
  144. package/dist/cjs/store/duckdb/open.d.cts +12 -0
  145. package/dist/cjs/store/duckdb/open.d.ts +12 -0
  146. package/dist/cjs/store/duckdb/open.js +501 -0
  147. package/dist/cjs/store/duckdb/open.js.map +1 -0
  148. package/dist/cjs/store/duckdb/reconcile.d.cts +6 -0
  149. package/dist/cjs/store/duckdb/reconcile.d.ts +6 -0
  150. package/dist/cjs/store/duckdb/reconcile.js +753 -0
  151. package/dist/cjs/store/duckdb/reconcile.js.map +1 -0
  152. package/dist/cjs/store/duckdb/sql-functions.d.cts +2 -0
  153. package/dist/cjs/store/duckdb/sql-functions.d.ts +2 -0
  154. package/dist/cjs/store/duckdb/sql-functions.js +203 -0
  155. package/dist/cjs/store/duckdb/sql-functions.js.map +1 -0
  156. package/dist/cjs/store/duckdb/store.d.cts +5 -0
  157. package/dist/cjs/store/duckdb/store.d.ts +5 -0
  158. package/dist/cjs/store/duckdb/store.js +504 -0
  159. package/dist/cjs/store/duckdb/store.js.map +1 -0
  160. package/dist/cjs/store/duckdb/vectors.d.cts +9 -0
  161. package/dist/cjs/store/duckdb/vectors.d.ts +9 -0
  162. package/dist/cjs/store/duckdb/vectors.js +502 -0
  163. package/dist/cjs/store/duckdb/vectors.js.map +1 -0
  164. package/dist/cjs/store/index.d.cts +7 -0
  165. package/dist/cjs/store/index.d.ts +7 -0
  166. package/dist/cjs/store/index.js +201 -0
  167. package/dist/cjs/store/index.js.map +1 -0
  168. package/dist/cjs/store/meta.d.cts +3 -0
  169. package/dist/cjs/store/meta.d.ts +3 -0
  170. package/dist/cjs/store/meta.js +215 -0
  171. package/dist/cjs/store/meta.js.map +1 -0
  172. package/dist/cjs/store/shared.d.cts +5 -0
  173. package/dist/cjs/store/shared.d.ts +5 -0
  174. package/dist/cjs/store/shared.js +252 -0
  175. package/dist/cjs/store/shared.js.map +1 -0
  176. package/dist/cjs/store/sql-functions.d.cts +2 -0
  177. package/dist/cjs/store/sql-functions.d.ts +2 -0
  178. package/dist/cjs/store/sql-functions.js +48 -0
  179. package/dist/cjs/store/sql-functions.js.map +1 -0
  180. package/dist/cjs/store/sqlite/connection.d.cts +3 -0
  181. package/dist/cjs/store/sqlite/connection.d.ts +3 -0
  182. package/dist/cjs/store/sqlite/connection.js +516 -0
  183. package/dist/cjs/store/sqlite/connection.js.map +1 -0
  184. package/dist/cjs/store/sqlite/lexical.d.cts +2 -0
  185. package/dist/cjs/store/sqlite/lexical.d.ts +2 -0
  186. package/dist/cjs/store/sqlite/lexical.js +177 -0
  187. package/dist/cjs/store/sqlite/lexical.js.map +1 -0
  188. package/dist/cjs/{db → store/sqlite}/open.d.cts +5 -5
  189. package/dist/cjs/{db → store/sqlite}/open.d.ts +5 -5
  190. package/dist/cjs/store/sqlite/open.js +604 -0
  191. package/dist/cjs/store/sqlite/open.js.map +1 -0
  192. package/dist/cjs/store/sqlite/reconcile.d.cts +10 -0
  193. package/dist/cjs/store/sqlite/reconcile.d.ts +10 -0
  194. package/dist/cjs/store/sqlite/reconcile.js +1020 -0
  195. package/dist/cjs/store/sqlite/reconcile.js.map +1 -0
  196. package/dist/cjs/store/sqlite/sql-functions.js +34 -0
  197. package/dist/cjs/store/sqlite/sql-functions.js.map +1 -0
  198. package/dist/cjs/store/sqlite/store.d.cts +5 -0
  199. package/dist/cjs/store/sqlite/store.d.ts +5 -0
  200. package/dist/cjs/store/sqlite/store.js +588 -0
  201. package/dist/cjs/store/sqlite/store.js.map +1 -0
  202. package/dist/cjs/store/sqlite/vectors.d.cts +13 -0
  203. package/dist/cjs/store/sqlite/vectors.d.ts +13 -0
  204. package/dist/cjs/store/sqlite/vectors.js +470 -0
  205. package/dist/cjs/store/sqlite/vectors.js.map +1 -0
  206. package/dist/cjs/store/transaction.d.cts +5 -0
  207. package/dist/cjs/store/transaction.d.ts +5 -0
  208. package/dist/cjs/store/transaction.js +297 -0
  209. package/dist/cjs/store/transaction.js.map +1 -0
  210. package/dist/cjs/store/types.d.cts +91 -0
  211. package/dist/cjs/store/types.d.ts +91 -0
  212. package/dist/cjs/store/types.js +15 -0
  213. package/dist/cjs/store/types.js.map +1 -0
  214. package/dist/cjs/watch.d.cts +3 -0
  215. package/dist/cjs/watch.d.ts +3 -0
  216. package/dist/cjs/watch.js +215 -73
  217. package/dist/cjs/watch.js.map +1 -1
  218. package/dist/esm/cli/map.js +5 -5
  219. package/dist/esm/cli/map.js.map +1 -1
  220. package/dist/esm/cli/named.js +3 -3
  221. package/dist/esm/cli/named.js.map +1 -1
  222. package/dist/esm/cli/path.js +6 -5
  223. package/dist/esm/cli/path.js.map +1 -1
  224. package/dist/esm/cli/peek.js +5 -5
  225. package/dist/esm/cli/peek.js.map +1 -1
  226. package/dist/esm/cli/related.js +3 -3
  227. package/dist/esm/cli/related.js.map +1 -1
  228. package/dist/esm/cli/search.js +2 -2
  229. package/dist/esm/cli/search.js.map +1 -1
  230. package/dist/esm/cli/shared.d.ts +3 -3
  231. package/dist/esm/cli/shared.js +17 -17
  232. package/dist/esm/cli/shared.js.map +1 -1
  233. package/dist/esm/cli/sql.js +2 -2
  234. package/dist/esm/cli/sql.js.map +1 -1
  235. package/dist/esm/cli/status.js +25 -24
  236. package/dist/esm/cli/status.js.map +1 -1
  237. package/dist/esm/commands/map.d.ts +2 -2
  238. package/dist/esm/commands/map.js +51 -41
  239. package/dist/esm/commands/map.js.map +1 -1
  240. package/dist/esm/commands/peek.d.ts +2 -2
  241. package/dist/esm/commands/peek.js +58 -50
  242. package/dist/esm/commands/peek.js.map +1 -1
  243. package/dist/esm/commands/related.d.ts +2 -2
  244. package/dist/esm/commands/related.js +9 -9
  245. package/dist/esm/commands/related.js.map +1 -1
  246. package/dist/esm/commands/scope.d.ts +7 -7
  247. package/dist/esm/commands/scope.js +28 -17
  248. package/dist/esm/commands/scope.js.map +1 -1
  249. package/dist/esm/commands/search.d.ts +2 -2
  250. package/dist/esm/commands/search.js +42 -35
  251. package/dist/esm/commands/search.js.map +1 -1
  252. package/dist/esm/commands/signals.d.ts +4 -10
  253. package/dist/esm/commands/signals.js +17 -13
  254. package/dist/esm/commands/signals.js.map +1 -1
  255. package/dist/esm/commands/status.d.ts +2 -2
  256. package/dist/esm/commands/status.js +13 -7
  257. package/dist/esm/commands/status.js.map +1 -1
  258. package/dist/esm/config/access.d.ts +1 -0
  259. package/dist/esm/config/access.js +5 -0
  260. package/dist/esm/config/access.js.map +1 -1
  261. package/dist/esm/config/index.d.ts +1 -1
  262. package/dist/esm/config/index.js +1 -1
  263. package/dist/esm/config/index.js.map +1 -1
  264. package/dist/esm/config/types.d.ts +1 -0
  265. package/dist/esm/config/types.js.map +1 -1
  266. package/dist/esm/config/validate.js +10 -1
  267. package/dist/esm/config/validate.js.map +1 -1
  268. package/dist/esm/embed/distribution.d.ts +4 -0
  269. package/dist/esm/embed/distribution.js +11 -0
  270. package/dist/esm/embed/distribution.js.map +1 -0
  271. package/dist/esm/embed/langfit.d.ts +2 -5
  272. package/dist/esm/embed/langfit.js +13 -13
  273. package/dist/esm/embed/langfit.js.map +1 -1
  274. package/dist/esm/embed/query.d.ts +6 -13
  275. package/dist/esm/embed/query.js +23 -84
  276. package/dist/esm/embed/query.js.map +1 -1
  277. package/dist/esm/embed/static.js +6 -1
  278. package/dist/esm/embed/static.js.map +1 -1
  279. package/dist/esm/embed/types.d.ts +1 -0
  280. package/dist/esm/embed/types.js +5 -3
  281. package/dist/esm/embed/types.js.map +1 -1
  282. package/dist/esm/errors.d.ts +1 -1
  283. package/dist/esm/errors.js.map +1 -1
  284. package/dist/esm/features/embed.js +22 -10
  285. package/dist/esm/features/embed.js.map +1 -1
  286. package/dist/esm/features/index.d.ts +1 -1
  287. package/dist/esm/features/index.js +1 -1
  288. package/dist/esm/features/index.js.map +1 -1
  289. package/dist/esm/features/links.d.ts +7 -2
  290. package/dist/esm/features/links.js +124 -97
  291. package/dist/esm/features/links.js.map +1 -1
  292. package/dist/esm/features/rank.js +15 -8
  293. package/dist/esm/features/rank.js.map +1 -1
  294. package/dist/esm/features/sections.js +20 -7
  295. package/dist/esm/features/sections.js.map +1 -1
  296. package/dist/esm/features/tags.js +19 -18
  297. package/dist/esm/features/tags.js.map +1 -1
  298. package/dist/esm/features/types.d.ts +9 -5
  299. package/dist/esm/features/types.js +1 -1
  300. package/dist/esm/features/types.js.map +1 -1
  301. package/dist/esm/graph/traverse.d.ts +2 -2
  302. package/dist/esm/graph/traverse.js +26 -23
  303. package/dist/esm/graph/traverse.js.map +1 -1
  304. package/dist/esm/index.d.ts +3 -2
  305. package/dist/esm/index.js +1 -1
  306. package/dist/esm/index.js.map +1 -1
  307. package/dist/esm/lib/guarded-tick.d.ts +1 -0
  308. package/dist/esm/lib/guarded-tick.js +8 -0
  309. package/dist/esm/lib/guarded-tick.js.map +1 -0
  310. package/dist/esm/output/column-hint.d.ts +1 -2
  311. package/dist/esm/output/column-hint.js +3 -2
  312. package/dist/esm/output/column-hint.js.map +1 -1
  313. package/dist/esm/output/output.d.ts +2 -1
  314. package/dist/esm/output/output.js +27 -23
  315. package/dist/esm/output/output.js.map +1 -1
  316. package/dist/esm/scan/frontmatter.js +1 -1
  317. package/dist/esm/scan/frontmatter.js.map +1 -1
  318. package/dist/esm/scan/index.js +1 -1
  319. package/dist/esm/scan/index.js.map +1 -1
  320. package/dist/esm/scan/reparse.d.ts +10 -0
  321. package/dist/esm/scan/reparse.js +30 -0
  322. package/dist/esm/scan/reparse.js.map +1 -0
  323. package/dist/esm/store/duckdb/batch.d.ts +16 -0
  324. package/dist/esm/store/duckdb/batch.js +96 -0
  325. package/dist/esm/store/duckdb/batch.js.map +1 -0
  326. package/dist/esm/store/duckdb/connection.d.ts +5 -0
  327. package/dist/esm/store/duckdb/connection.js +97 -0
  328. package/dist/esm/store/duckdb/connection.js.map +1 -0
  329. package/dist/esm/store/duckdb/lexical.d.ts +10 -0
  330. package/dist/esm/store/duckdb/lexical.js +163 -0
  331. package/dist/esm/store/duckdb/lexical.js.map +1 -0
  332. package/dist/esm/store/duckdb/native.d.ts +3 -0
  333. package/dist/esm/store/duckdb/native.js +96 -0
  334. package/dist/esm/store/duckdb/native.js.map +1 -0
  335. package/dist/esm/store/duckdb/open.d.ts +12 -0
  336. package/dist/esm/store/duckdb/open.js +127 -0
  337. package/dist/esm/store/duckdb/open.js.map +1 -0
  338. package/dist/esm/store/duckdb/reconcile.d.ts +6 -0
  339. package/dist/esm/store/duckdb/reconcile.js +141 -0
  340. package/dist/esm/store/duckdb/reconcile.js.map +1 -0
  341. package/dist/esm/store/duckdb/sql-functions.d.ts +2 -0
  342. package/dist/esm/store/duckdb/sql-functions.js +56 -0
  343. package/dist/esm/store/duckdb/sql-functions.js.map +1 -0
  344. package/dist/esm/store/duckdb/store.d.ts +5 -0
  345. package/dist/esm/store/duckdb/store.js +104 -0
  346. package/dist/esm/store/duckdb/store.js.map +1 -0
  347. package/dist/esm/store/duckdb/vectors.d.ts +9 -0
  348. package/dist/esm/store/duckdb/vectors.js +171 -0
  349. package/dist/esm/store/duckdb/vectors.js.map +1 -0
  350. package/dist/esm/store/index.d.ts +7 -0
  351. package/dist/esm/store/index.js +35 -0
  352. package/dist/esm/store/index.js.map +1 -0
  353. package/dist/esm/store/meta.d.ts +3 -0
  354. package/dist/esm/store/meta.js +17 -0
  355. package/dist/esm/store/meta.js.map +1 -0
  356. package/dist/esm/store/shared.d.ts +5 -0
  357. package/dist/esm/store/shared.js +24 -0
  358. package/dist/esm/store/shared.js.map +1 -0
  359. package/dist/esm/store/sql-functions.d.ts +2 -0
  360. package/dist/esm/store/sql-functions.js +29 -0
  361. package/dist/esm/store/sql-functions.js.map +1 -0
  362. package/dist/esm/store/sqlite/connection.d.ts +3 -0
  363. package/dist/esm/store/sqlite/connection.js +50 -0
  364. package/dist/esm/store/sqlite/connection.js.map +1 -0
  365. package/dist/esm/store/sqlite/lexical.d.ts +2 -0
  366. package/dist/esm/store/sqlite/lexical.js +21 -0
  367. package/dist/esm/store/sqlite/lexical.js.map +1 -0
  368. package/dist/esm/{db → store/sqlite}/open.d.ts +5 -5
  369. package/dist/esm/store/sqlite/open.js +193 -0
  370. package/dist/esm/store/sqlite/open.js.map +1 -0
  371. package/dist/esm/store/sqlite/reconcile.d.ts +10 -0
  372. package/dist/esm/{db → store/sqlite}/reconcile.js +101 -99
  373. package/dist/esm/store/sqlite/reconcile.js.map +1 -0
  374. package/dist/esm/store/sqlite/sql-functions.js +23 -0
  375. package/dist/esm/store/sqlite/sql-functions.js.map +1 -0
  376. package/dist/esm/store/sqlite/store.d.ts +5 -0
  377. package/dist/esm/store/sqlite/store.js +82 -0
  378. package/dist/esm/store/sqlite/store.js.map +1 -0
  379. package/dist/esm/store/sqlite/vectors.d.ts +13 -0
  380. package/dist/esm/store/sqlite/vectors.js +90 -0
  381. package/dist/esm/store/sqlite/vectors.js.map +1 -0
  382. package/dist/esm/store/transaction.d.ts +5 -0
  383. package/dist/esm/store/transaction.js +57 -0
  384. package/dist/esm/store/transaction.js.map +1 -0
  385. package/dist/esm/store/types.d.ts +91 -0
  386. package/dist/esm/store/types.js +11 -0
  387. package/dist/esm/store/types.js.map +1 -0
  388. package/dist/esm/watch.d.ts +3 -0
  389. package/dist/esm/watch.js +39 -22
  390. package/dist/esm/watch.js.map +1 -1
  391. package/package.json +3 -1
  392. package/schema.json +5 -0
  393. package/skills/sense/EXAMPLES.md +3 -3
  394. package/skills/sense/SKILL.md +16 -14
  395. package/skills/sense-bases/EXAMPLES.md +2 -2
  396. package/skills/sense-bases/SKILL.md +6 -6
  397. package/skills/sense-setup/EXAMPLES.md +1 -1
  398. package/skills/sense-setup/SKILL.md +5 -4
  399. package/dist/cjs/db/index.d.cts +0 -4
  400. package/dist/cjs/db/index.d.ts +0 -4
  401. package/dist/cjs/db/index.js +0 -42
  402. package/dist/cjs/db/index.js.map +0 -1
  403. package/dist/cjs/db/open.js +0 -230
  404. package/dist/cjs/db/open.js.map +0 -1
  405. package/dist/cjs/db/reconcile.d.cts +0 -10
  406. package/dist/cjs/db/reconcile.d.ts +0 -10
  407. package/dist/cjs/db/reconcile.js +0 -579
  408. package/dist/cjs/db/reconcile.js.map +0 -1
  409. package/dist/cjs/db/shared.d.cts +0 -5
  410. package/dist/cjs/db/shared.d.ts +0 -5
  411. package/dist/cjs/db/shared.js +0 -45
  412. package/dist/cjs/db/shared.js.map +0 -1
  413. package/dist/cjs/db/sql-functions.js +0 -64
  414. package/dist/cjs/db/sql-functions.js.map +0 -1
  415. package/dist/esm/db/index.d.ts +0 -4
  416. package/dist/esm/db/index.js +0 -5
  417. package/dist/esm/db/index.js.map +0 -1
  418. package/dist/esm/db/open.js +0 -165
  419. package/dist/esm/db/open.js.map +0 -1
  420. package/dist/esm/db/reconcile.d.ts +0 -10
  421. package/dist/esm/db/reconcile.js.map +0 -1
  422. package/dist/esm/db/shared.d.ts +0 -5
  423. package/dist/esm/db/shared.js +0 -20
  424. package/dist/esm/db/shared.js.map +0 -1
  425. package/dist/esm/db/sql-functions.js +0 -47
  426. package/dist/esm/db/sql-functions.js.map +0 -1
  427. /package/dist/cjs/{db → store/sqlite}/sql-functions.d.cts +0 -0
  428. /package/dist/cjs/{db → store/sqlite}/sql-functions.d.ts +0 -0
  429. /package/dist/esm/{db → store/sqlite}/sql-functions.d.ts +0 -0
@@ -1,579 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: Object.getOwnPropertyDescriptor(all, name).get
9
- });
10
- }
11
- _export(exports, {
12
- get changedSignatureKeys () {
13
- return changedSignatureKeys;
14
- },
15
- get embedIdentityAdopted () {
16
- return embedIdentityAdopted;
17
- },
18
- get rebuildContentTable () {
19
- return rebuildContentTable;
20
- },
21
- get reconcile () {
22
- return reconcile;
23
- },
24
- get signatureDiff () {
25
- return signatureDiff;
26
- }
27
- });
28
- var _indexts = require("../config/index.js");
29
- var _errorsts = require("../errors.js");
30
- var _indexts1 = require("../features/index.js");
31
- var _progressts = require("../output/progress.js");
32
- var _indexts2 = require("../scan/index.js");
33
- var _segmentts = require("../text/segment.js");
34
- var _sharedts = require("./shared.js");
35
- function _array_like_to_array(arr, len) {
36
- if (len == null || len > arr.length) len = arr.length;
37
- for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
38
- return arr2;
39
- }
40
- function _array_with_holes(arr) {
41
- if (Array.isArray(arr)) return arr;
42
- }
43
- function _array_without_holes(arr) {
44
- if (Array.isArray(arr)) return _array_like_to_array(arr);
45
- }
46
- function _iterable_to_array(iter) {
47
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) {
48
- return Array.from(iter);
49
- }
50
- }
51
- function _iterable_to_array_limit(arr, i) {
52
- var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
53
- if (_i == null) return;
54
- var _arr = [];
55
- var _n = true;
56
- var _d = false;
57
- var _s, _e;
58
- try {
59
- for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
60
- _arr.push(_s.value);
61
- if (i && _arr.length === i) break;
62
- }
63
- } catch (err) {
64
- _d = true;
65
- _e = err;
66
- } finally{
67
- try {
68
- if (!_n && _i["return"] != null) _i["return"]();
69
- } finally{
70
- if (_d) throw _e;
71
- }
72
- }
73
- return _arr;
74
- }
75
- function _non_iterable_rest() {
76
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
77
- }
78
- function _non_iterable_spread() {
79
- throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
80
- }
81
- function _sliced_to_array(arr, i) {
82
- return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
83
- }
84
- function _to_consumable_array(arr) {
85
- return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
86
- }
87
- function _unsupported_iterable_to_array(o, minLen) {
88
- if (!o) return;
89
- if (typeof o === "string") return _array_like_to_array(o, minLen);
90
- var n = Object.prototype.toString.call(o).slice(8, -1);
91
- if (n === "Object" && o.constructor) n = o.constructor.name;
92
- if (n === "Map" || n === "Set") return Array.from(n);
93
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
94
- }
95
- // Feature-owned columns (`_rank`) must stay out of the upsert: a reparse would null the last
96
- // computed value on every touch, not just the reconciles that recompute it.
97
- var CORE_FRONTMATTER_COLUMNS = new Set([
98
- 'path',
99
- '_mtime',
100
- '_ctime',
101
- '_size',
102
- '_parse_error'
103
- ]);
104
- // SQLite's compile-time SQLITE_MAX_COLUMN, default 2000 (https://www.sqlite.org/limits.html).
105
- var MAX_FRONTMATTER_COLUMNS = 2000;
106
- // Shared by reconcile() and the tokenize-only rebuild in open(), so both prepare the same
107
- // literal instead of two copies drifting apart.
108
- var INSERT_CONTENT_SQL = 'INSERT INTO content (rowid, title, summary, text, "path", title_seg, summary_seg, text_seg) VALUES ((SELECT rowid FROM frontmatter WHERE "path" = ?), ?, ?, ?, ?, ?, ?, ?)';
109
- // Shared by reconcile() and the tokenize-only rebuild in open(), so content population is
110
- // defined once. Assumes the frontmatter row for doc.relPath already exists (rowid lookup).
111
- function insertContentRow(insertBody, doc, segmenting) {
112
- insertBody.run(doc.relPath, doc.search.title, doc.search.summary, doc.search.text, doc.relPath, segmenting ? (0, _segmentts.segmentField)(doc.search.title) : '', segmenting ? (0, _segmentts.segmentField)(doc.search.summary) : '', segmenting ? (0, _segmentts.segmentField)(doc.search.text) : '');
113
- }
114
- function reconcile(db, cfg, baseDir) {
115
- var files = (0, _indexts2.listFiles)(cfg, baseDir);
116
- var currentSet = new Set(files.map(function(f) {
117
- return f.relPath;
118
- }));
119
- var existingRows = db.prepare('SELECT "path", "_mtime", "_size" FROM frontmatter').all();
120
- var existing = new Map(existingRows.map(function(r) {
121
- return [
122
- r.path,
123
- r
124
- ];
125
- }));
126
- var vanished = existingRows.filter(function(r) {
127
- return !currentSet.has(r.path);
128
- }).map(function(r) {
129
- return r.path;
130
- });
131
- var toReparse = files.filter(function(f) {
132
- var row = existing.get(f.relPath);
133
- return !row || row._mtime !== f.mtimeMs || row._size !== f.size;
134
- });
135
- if (vanished.length === 0 && toReparse.length === 0) return {
136
- parsed: 0,
137
- warnings: []
138
- };
139
- var features = (0, _indexts1.activeFeatures)(cfg);
140
- var seenColumns = (0, _sharedts.getColumns)(db);
141
- var newColumns = [];
142
- var parsedDocs = [];
143
- var warnings = [];
144
- // Bulk reparses (a sync, a cold build) are the long silences a query can hit; short
145
- // reconciles stay silent (progress() has a threshold).
146
- var report = (0, _progressts.progress)('reparsing files', toReparse.length);
147
- var parsedCount = 0;
148
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
149
- try {
150
- var _loop = function() {
151
- var file = _step.value;
152
- var _warnings;
153
- // A doc only gets extract/store from features that apply to it (currently: embed, via
154
- // FileStat.embed -- true iff the config names an embedding model).
155
- var fileFeatures = features.filter(function(feature) {
156
- return !feature.enabledForFile || feature.enabledForFile(cfg, file);
157
- });
158
- var _parseFile = (0, _indexts2.parseFile)(file, fileFeatures, cfg), doc = _parseFile.doc, fileWarnings = _parseFile.warnings;
159
- report.tick(++parsedCount);
160
- (_warnings = warnings).push.apply(_warnings, _to_consumable_array(fileWarnings));
161
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
162
- try {
163
- for(var _iterator = Object.keys(doc.data)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion = (_step1 = _iterator.next()).done); _iteratorNormalCompletion = true){
164
- var key = _step1.value;
165
- if (!seenColumns.has(key)) {
166
- seenColumns.add(key);
167
- newColumns.push(key);
168
- }
169
- }
170
- } catch (err) {
171
- _didIteratorError = true;
172
- _iteratorError = err;
173
- } finally{
174
- try {
175
- if (!_iteratorNormalCompletion && _iterator.return != null) {
176
- _iterator.return();
177
- }
178
- } finally{
179
- if (_didIteratorError) {
180
- throw _iteratorError;
181
- }
182
- }
183
- }
184
- parsedDocs.push(doc);
185
- };
186
- for(var _iterator = toReparse[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();
187
- } catch (err) {
188
- _didIteratorError = true;
189
- _iteratorError = err;
190
- } finally{
191
- try {
192
- if (!_iteratorNormalCompletion && _iterator.return != null) {
193
- _iterator.return();
194
- }
195
- } finally{
196
- if (_didIteratorError) {
197
- throw _iteratorError;
198
- }
199
- }
200
- }
201
- report.finish();
202
- var allColumns = _to_consumable_array(seenColumns);
203
- // Fence before ALTERing: SQLite's own failure past this point is a raw
204
- // "too many columns on sqlite_altertab_frontmatter" with no indication of the boundary or the levers.
205
- if (allColumns.length > MAX_FRONTMATTER_COLUMNS) {
206
- throw new _errorsts.SenseError('COLUMN_LIMIT', "frontmatter would need ".concat(allColumns.length, " columns, crossing SQLite's compile-time SQLITE_MAX_COLUMN limit (default ").concat(MAX_FRONTMATTER_COLUMNS, "; see https://www.sqlite.org/limits.html). Narrow the presets' include globs so fewer/other files are indexed, or fix whatever is generating unbounded frontmatter keys."));
207
- }
208
- // Columns the frontmatter upsert actually writes: core + parsed frontmatter keys, never a
209
- // feature-owned reserved column (see CORE_FRONTMATTER_COLUMNS above).
210
- var writableColumns = allColumns.filter(function(c) {
211
- return CORE_FRONTMATTER_COLUMNS.has(c) || !_indexts2.RESERVED_COLUMNS.has(c);
212
- });
213
- // ON CONFLICT UPDATE (not OR REPLACE) keeps the row's rowid stable across reparses --
214
- // content rows are coupled to that rowid below.
215
- var insertSql = "INSERT INTO frontmatter (".concat(writableColumns.map(_sharedts.quoteIdent).join(', '), ") VALUES (").concat(writableColumns.map(function() {
216
- return '?';
217
- }).join(', '), ') ON CONFLICT("path") DO UPDATE SET ').concat(writableColumns.filter(function(c) {
218
- return c !== 'path';
219
- }).map(function(c) {
220
- return "".concat((0, _sharedts.quoteIdent)(c), " = excluded.").concat((0, _sharedts.quoteIdent)(c));
221
- }).join(', '));
222
- var added = toReparse.filter(function(f) {
223
- return !existing.has(f.relPath);
224
- }).map(function(f) {
225
- return f.relPath;
226
- });
227
- var delta = {
228
- files: files,
229
- reparsed: parsedDocs.map(function(d) {
230
- return d.relPath;
231
- }),
232
- added: added,
233
- vanished: vanished
234
- };
235
- var txStart = Date.now();
236
- db.exec('BEGIN');
237
- try {
238
- var _feature_afterReconcile;
239
- var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
240
- try {
241
- for(var _iterator1 = newColumns[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
242
- var col = _step1.value;
243
- db.exec("ALTER TABLE frontmatter ADD COLUMN ".concat((0, _sharedts.quoteIdent)(col)));
244
- }
245
- } catch (err) {
246
- _didIteratorError1 = true;
247
- _iteratorError1 = err;
248
- } finally{
249
- try {
250
- if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
251
- _iterator1.return();
252
- }
253
- } finally{
254
- if (_didIteratorError1) {
255
- throw _iteratorError1;
256
- }
257
- }
258
- }
259
- // FTS5 has no upsert, so delete-before-insert into `content`; coupled to the
260
- // frontmatter rowid (indexed via its PRIMARY KEY) instead of the UNINDEXED `path`
261
- // column, which a per-row DELETE would otherwise scan the whole table to find.
262
- var delBody = db.prepare('DELETE FROM content WHERE rowid = (SELECT rowid FROM frontmatter WHERE "path" = ?)');
263
- var delPresetFiles = db.prepare('DELETE FROM preset_files WHERE "path" = ?');
264
- var insertPresetFile = db.prepare('INSERT INTO preset_files ("path", preset) VALUES (?, ?)');
265
- if (vanished.length > 0) {
266
- var del = db.prepare('DELETE FROM frontmatter WHERE "path" = ?');
267
- var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = undefined;
268
- try {
269
- for(var _iterator2 = vanished[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true){
270
- var path = _step2.value;
271
- var _feature_remove;
272
- // content delete must run first: it looks up the frontmatter rowid by path, which
273
- // the frontmatter delete below would otherwise have already removed.
274
- delBody.run(path);
275
- del.run(path);
276
- delPresetFiles.run(path);
277
- var _iteratorNormalCompletion3 = true, _didIteratorError3 = false, _iteratorError3 = undefined;
278
- try {
279
- for(var _iterator3 = features[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true){
280
- var feature = _step3.value;
281
- (_feature_remove = feature.remove) === null || _feature_remove === void 0 ? void 0 : _feature_remove.call(feature, db, path, delta);
282
- }
283
- } catch (err) {
284
- _didIteratorError3 = true;
285
- _iteratorError3 = err;
286
- } finally{
287
- try {
288
- if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
289
- _iterator3.return();
290
- }
291
- } finally{
292
- if (_didIteratorError3) {
293
- throw _iteratorError3;
294
- }
295
- }
296
- }
297
- }
298
- } catch (err) {
299
- _didIteratorError2 = true;
300
- _iteratorError2 = err;
301
- } finally{
302
- try {
303
- if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
304
- _iterator2.return();
305
- }
306
- } finally{
307
- if (_didIteratorError2) {
308
- throw _iteratorError2;
309
- }
310
- }
311
- }
312
- }
313
- if (parsedDocs.length > 0) {
314
- var insert = db.prepare(insertSql);
315
- var insertBody = db.prepare(INSERT_CONTENT_SQL);
316
- // A non-default tokenizer means the tree has chosen its own scheme; a phrase query over
317
- // grapheme runs would be nonsense against trigram, so the sidecars stay empty.
318
- var segmenting = (0, _indexts.contentTokenize)(cfg) === undefined;
319
- var _iteratorNormalCompletion4 = true, _didIteratorError4 = false, _iteratorError4 = undefined;
320
- try {
321
- var _loop1 = function() {
322
- var doc = _step4.value;
323
- var // Frontmatter upsert first: content's rowid lookup below depends on this row existing.
324
- _insert;
325
- var _feature_store;
326
- var values = writableColumns.map(function(col) {
327
- var _doc_data_col;
328
- if (col === 'path') return doc.relPath;
329
- if (col === '_mtime') return doc.mtimeMs;
330
- if (col === '_ctime') return doc.ctimeMs;
331
- if (col === '_size') return doc.size;
332
- // Written per parse, unlike _rank, which a feature pass owns and the upsert skips.
333
- if (col === '_parse_error') return doc.parseError;
334
- return (_doc_data_col = doc.data[col]) !== null && _doc_data_col !== void 0 ? _doc_data_col : null;
335
- });
336
- (_insert = insert).run.apply(_insert, _to_consumable_array(values));
337
- // Only for docs that have rows: an unconditional delete made cold crawls quadratic.
338
- if (existing.has(doc.relPath)) {
339
- var _feature_remove;
340
- delBody.run(doc.relPath);
341
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
342
- try {
343
- for(var _iterator = features[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
344
- var feature = _step.value;
345
- (_feature_remove = feature.remove) === null || _feature_remove === void 0 ? void 0 : _feature_remove.call(feature, db, doc.relPath, delta);
346
- }
347
- } catch (err) {
348
- _didIteratorError = true;
349
- _iteratorError = err;
350
- } finally{
351
- try {
352
- if (!_iteratorNormalCompletion && _iterator.return != null) {
353
- _iterator.return();
354
- }
355
- } finally{
356
- if (_didIteratorError) {
357
- throw _iteratorError;
358
- }
359
- }
360
- }
361
- }
362
- insertContentRow(insertBody, doc, segmenting);
363
- // A preset edit forces a full rebuild, so an unchanged doc's coverage is already
364
- // correct; new docs have nothing to clear, which keeps cold builds linear.
365
- if (existing.has(doc.relPath)) delPresetFiles.run(doc.relPath);
366
- var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
367
- try {
368
- for(var _iterator1 = doc.presets[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
369
- var presetName = _step1.value;
370
- insertPresetFile.run(doc.relPath, presetName);
371
- }
372
- } catch (err) {
373
- _didIteratorError1 = true;
374
- _iteratorError1 = err;
375
- } finally{
376
- try {
377
- if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
378
- _iterator1.return();
379
- }
380
- } finally{
381
- if (_didIteratorError1) {
382
- throw _iteratorError1;
383
- }
384
- }
385
- }
386
- var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = undefined;
387
- try {
388
- for(var _iterator2 = features[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true){
389
- var feature1 = _step2.value;
390
- (_feature_store = feature1.store) === null || _feature_store === void 0 ? void 0 : _feature_store.call(feature1, db, doc.relPath, doc.extracted[feature1.name], delta);
391
- }
392
- } catch (err) {
393
- _didIteratorError2 = true;
394
- _iteratorError2 = err;
395
- } finally{
396
- try {
397
- if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
398
- _iterator2.return();
399
- }
400
- } finally{
401
- if (_didIteratorError2) {
402
- throw _iteratorError2;
403
- }
404
- }
405
- }
406
- };
407
- for(var _iterator4 = parsedDocs[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true)_loop1();
408
- } catch (err) {
409
- _didIteratorError4 = true;
410
- _iteratorError4 = err;
411
- } finally{
412
- try {
413
- if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
414
- _iterator4.return();
415
- }
416
- } finally{
417
- if (_didIteratorError4) {
418
- throw _iteratorError4;
419
- }
420
- }
421
- }
422
- }
423
- var _iteratorNormalCompletion5 = true, _didIteratorError5 = false, _iteratorError5 = undefined;
424
- try {
425
- for(var _iterator5 = features[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true){
426
- var feature1 = _step5.value;
427
- (_feature_afterReconcile = feature1.afterReconcile) === null || _feature_afterReconcile === void 0 ? void 0 : _feature_afterReconcile.call(feature1, db, delta);
428
- }
429
- } catch (err) {
430
- _didIteratorError5 = true;
431
- _iteratorError5 = err;
432
- } finally{
433
- try {
434
- if (!_iteratorNormalCompletion5 && _iterator5.return != null) {
435
- _iterator5.return();
436
- }
437
- } finally{
438
- if (_didIteratorError5) {
439
- throw _iteratorError5;
440
- }
441
- }
442
- }
443
- db.exec('COMMIT');
444
- } catch (err) {
445
- db.exec('ROLLBACK');
446
- throw err;
447
- }
448
- // Reconcile's own write-transaction duration, for open()'s derived busy_timeout (F):
449
- // keep the observed max so a big watcher reconcile's lock hold is what the next open bounds its wait against.
450
- var durationMs = Date.now() - txStart;
451
- var prevRaw = (0, _sharedts.getMeta)(db, 'reconcile_max_ms');
452
- // -1, not 0, so a genuinely 0ms first reconcile (sub-millisecond, common on a tiny tree)
453
- // still gets recorded instead of losing to the "nothing recorded yet" default.
454
- var prevMax = prevRaw === null ? -1 : Number(prevRaw);
455
- if (durationMs > prevMax) (0, _sharedts.setMeta)(db, 'reconcile_max_ms', String(durationMs));
456
- return {
457
- parsed: parsedDocs.length,
458
- warnings: warnings
459
- };
460
- }
461
- function changedSignatureKeys(before, after) {
462
- var keyOf = function keyOf(part) {
463
- return part.startsWith('preset:') ? part.split(':').slice(0, 2).join(':') : part.split(':')[0];
464
- };
465
- var parse = function parse(sig) {
466
- return new Map(sig.split('|').map(function(part) {
467
- return [
468
- keyOf(part),
469
- part
470
- ];
471
- }));
472
- };
473
- var a = parse(before);
474
- var b = parse(after);
475
- var changed = new Set();
476
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
477
- try {
478
- for(var _iterator = b[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
479
- var _step_value = _sliced_to_array(_step.value, 2), key = _step_value[0], val = _step_value[1];
480
- if (a.get(key) !== val) changed.add(key);
481
- }
482
- } catch (err) {
483
- _didIteratorError = true;
484
- _iteratorError = err;
485
- } finally{
486
- try {
487
- if (!_iteratorNormalCompletion && _iterator.return != null) {
488
- _iterator.return();
489
- }
490
- } finally{
491
- if (_didIteratorError) {
492
- throw _iteratorError;
493
- }
494
- }
495
- }
496
- var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
497
- try {
498
- for(var _iterator1 = a.keys()[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
499
- var key1 = _step1.value;
500
- if (!b.has(key1)) changed.add(key1);
501
- }
502
- } catch (err) {
503
- _didIteratorError1 = true;
504
- _iteratorError1 = err;
505
- } finally{
506
- try {
507
- if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
508
- _iterator1.return();
509
- }
510
- } finally{
511
- if (_didIteratorError1) {
512
- throw _iteratorError1;
513
- }
514
- }
515
- }
516
- return changed;
517
- }
518
- function embedIdentityAdopted(before, after) {
519
- var embedPart = function embedPart(sig) {
520
- return sig.split('|').find(function(p) {
521
- return p.startsWith('embed:');
522
- });
523
- };
524
- var b = embedPart(before);
525
- var a = embedPart(after);
526
- if (b === undefined || a === undefined) return false;
527
- var at = a.indexOf('@');
528
- return b.indexOf('@') === -1 && at !== -1 && a.slice(0, at) === b;
529
- }
530
- function signatureDiff(before, after) {
531
- var changed = changedSignatureKeys(before, after);
532
- var label = function label(key) {
533
- return key === 'embed' ? 'embed settings' : key === 'tokenize' ? 'content tokenizer' : key.startsWith('preset:') ? 'preset "'.concat(key.slice(7), '"') : 'features';
534
- };
535
- return changed.size === 0 ? 'features' : _to_consumable_array(changed).map(label).join(', ');
536
- }
537
- function rebuildContentTable(db, cfg, baseDir) {
538
- var known = new Set(db.prepare('SELECT "path" FROM frontmatter').all().map(function(r) {
539
- return r.path;
540
- }));
541
- var files = (0, _indexts2.listFiles)(cfg, baseDir).filter(function(f) {
542
- return known.has(f.relPath);
543
- });
544
- var segmenting = (0, _indexts.contentTokenize)(cfg) === undefined;
545
- var insertBody = db.prepare(INSERT_CONTENT_SQL);
546
- var warnings = [];
547
- db.exec('BEGIN');
548
- try {
549
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
550
- try {
551
- for(var _iterator = files[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
552
- var file = _step.value;
553
- var _warnings;
554
- var _parseFile = (0, _indexts2.parseFile)(file), doc = _parseFile.doc, fileWarnings = _parseFile.warnings;
555
- (_warnings = warnings).push.apply(_warnings, _to_consumable_array(fileWarnings));
556
- insertContentRow(insertBody, doc, segmenting);
557
- }
558
- } catch (err) {
559
- _didIteratorError = true;
560
- _iteratorError = err;
561
- } finally{
562
- try {
563
- if (!_iteratorNormalCompletion && _iterator.return != null) {
564
- _iterator.return();
565
- }
566
- } finally{
567
- if (_didIteratorError) {
568
- throw _iteratorError;
569
- }
570
- }
571
- }
572
- db.exec('COMMIT');
573
- } catch (err) {
574
- db.exec('ROLLBACK');
575
- throw err;
576
- }
577
- return warnings;
578
- }
579
- /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/db/reconcile.ts"],"sourcesContent":["import type { DatabaseSync, StatementSync } from 'node:sqlite';\nimport type { Config } from '../config/index.ts';\nimport { contentTokenize } from '../config/index.ts';\nimport { SenseError } from '../errors.ts';\nimport { activeFeatures } from '../features/index.ts';\nimport type { ReconcileDelta } from '../features/types.ts';\nimport { progress } from '../output/progress.ts';\nimport type { ParsedDoc } from '../scan/index.ts';\nimport { listFiles, parseFile, RESERVED_COLUMNS } from '../scan/index.ts';\nimport { segmentField } from '../text/segment.ts';\nimport { getColumns, getMeta, quoteIdent, setMeta } from './shared.ts';\n\n// Feature-owned columns (`_rank`) must stay out of the upsert: a reparse would null the last\n// computed value on every touch, not just the reconciles that recompute it.\nconst CORE_FRONTMATTER_COLUMNS = new Set(['path', '_mtime', '_ctime', '_size', '_parse_error']);\n\n// SQLite's compile-time SQLITE_MAX_COLUMN, default 2000 (https://www.sqlite.org/limits.html).\nconst MAX_FRONTMATTER_COLUMNS = 2000;\n\n// Shared by reconcile() and the tokenize-only rebuild in open(), so both prepare the same\n// literal instead of two copies drifting apart.\nconst INSERT_CONTENT_SQL = `INSERT INTO content (rowid, title, summary, text, \"path\", title_seg, summary_seg, text_seg) VALUES ((SELECT rowid FROM frontmatter WHERE \"path\" = ?), ?, ?, ?, ?, ?, ?, ?)`;\n\n// Shared by reconcile() and the tokenize-only rebuild in open(), so content population is\n// defined once. Assumes the frontmatter row for doc.relPath already exists (rowid lookup).\nfunction insertContentRow(insertBody: StatementSync, doc: ParsedDoc, segmenting: boolean): void {\n insertBody.run(doc.relPath, doc.search.title, doc.search.summary, doc.search.text, doc.relPath, segmenting ? segmentField(doc.search.title) : '', segmenting ? segmentField(doc.search.summary) : '', segmenting ? segmentField(doc.search.text) : '');\n}\n\nexport function reconcile(db: DatabaseSync, cfg: Config, baseDir: string): { parsed: number; warnings: string[] } {\n const files = listFiles(cfg, baseDir);\n const currentSet = new Set(files.map((f) => f.relPath));\n\n const existingRows = db.prepare(`SELECT \"path\", \"_mtime\", \"_size\" FROM frontmatter`).all() as Array<{\n path: string;\n _mtime: number;\n _size: number;\n }>;\n const existing = new Map(existingRows.map((r) => [r.path, r]));\n const vanished = existingRows.filter((r) => !currentSet.has(r.path)).map((r) => r.path);\n\n const toReparse = files.filter((f) => {\n const row = existing.get(f.relPath);\n return !row || row._mtime !== f.mtimeMs || row._size !== f.size;\n });\n\n if (vanished.length === 0 && toReparse.length === 0) return { parsed: 0, warnings: [] };\n\n const features = activeFeatures(cfg);\n const seenColumns = getColumns(db);\n const newColumns: string[] = [];\n const parsedDocs: ParsedDoc[] = [];\n const warnings: string[] = [];\n\n // Bulk reparses (a sync, a cold build) are the long silences a query can hit; short\n // reconciles stay silent (progress() has a threshold).\n const report = progress('reparsing files', toReparse.length);\n let parsedCount = 0;\n for (const file of toReparse) {\n // A doc only gets extract/store from features that apply to it (currently: embed, via\n // FileStat.embed -- true iff the config names an embedding model).\n const fileFeatures = features.filter((feature) => !feature.enabledForFile || feature.enabledForFile(cfg, file));\n const { doc, warnings: fileWarnings } = parseFile(file, fileFeatures, cfg);\n report.tick(++parsedCount);\n warnings.push(...fileWarnings);\n for (const key of Object.keys(doc.data)) {\n if (!seenColumns.has(key)) {\n seenColumns.add(key);\n newColumns.push(key);\n }\n }\n parsedDocs.push(doc);\n }\n report.finish();\n\n const allColumns = [...seenColumns];\n // Fence before ALTERing: SQLite's own failure past this point is a raw\n // \"too many columns on sqlite_altertab_frontmatter\" with no indication of the boundary or the levers.\n if (allColumns.length > MAX_FRONTMATTER_COLUMNS) {\n throw new SenseError(\n 'COLUMN_LIMIT',\n `frontmatter would need ${allColumns.length} columns, crossing SQLite's compile-time SQLITE_MAX_COLUMN limit (default ${MAX_FRONTMATTER_COLUMNS}; see https://www.sqlite.org/limits.html). Narrow the presets' include globs so fewer/other files are indexed, or fix whatever is generating unbounded frontmatter keys.`\n );\n }\n // Columns the frontmatter upsert actually writes: core + parsed frontmatter keys, never a\n // feature-owned reserved column (see CORE_FRONTMATTER_COLUMNS above).\n const writableColumns = allColumns.filter((c) => CORE_FRONTMATTER_COLUMNS.has(c) || !RESERVED_COLUMNS.has(c));\n // ON CONFLICT UPDATE (not OR REPLACE) keeps the row's rowid stable across reparses --\n // content rows are coupled to that rowid below.\n const insertSql = `INSERT INTO frontmatter (${writableColumns.map(quoteIdent).join(', ')}) VALUES (${writableColumns.map(() => '?').join(', ')}) ON CONFLICT(\"path\") DO UPDATE SET ${writableColumns\n .filter((c) => c !== 'path')\n .map((c) => `${quoteIdent(c)} = excluded.${quoteIdent(c)}`)\n .join(', ')}`;\n\n const added = toReparse.filter((f) => !existing.has(f.relPath)).map((f) => f.relPath);\n const delta: ReconcileDelta = { files, reparsed: parsedDocs.map((d) => d.relPath), added, vanished };\n\n const txStart = Date.now();\n db.exec('BEGIN');\n try {\n for (const col of newColumns) db.exec(`ALTER TABLE frontmatter ADD COLUMN ${quoteIdent(col)}`);\n // FTS5 has no upsert, so delete-before-insert into `content`; coupled to the\n // frontmatter rowid (indexed via its PRIMARY KEY) instead of the UNINDEXED `path`\n // column, which a per-row DELETE would otherwise scan the whole table to find.\n const delBody = db.prepare(`DELETE FROM content WHERE rowid = (SELECT rowid FROM frontmatter WHERE \"path\" = ?)`);\n const delPresetFiles = db.prepare(`DELETE FROM preset_files WHERE \"path\" = ?`);\n const insertPresetFile = db.prepare(`INSERT INTO preset_files (\"path\", preset) VALUES (?, ?)`);\n if (vanished.length > 0) {\n const del = db.prepare(`DELETE FROM frontmatter WHERE \"path\" = ?`);\n for (const path of vanished) {\n // content delete must run first: it looks up the frontmatter rowid by path, which\n // the frontmatter delete below would otherwise have already removed.\n delBody.run(path);\n del.run(path);\n delPresetFiles.run(path);\n for (const feature of features) feature.remove?.(db, path, delta);\n }\n }\n if (parsedDocs.length > 0) {\n const insert = db.prepare(insertSql);\n const insertBody = db.prepare(INSERT_CONTENT_SQL);\n // A non-default tokenizer means the tree has chosen its own scheme; a phrase query over\n // grapheme runs would be nonsense against trigram, so the sidecars stay empty.\n const segmenting = contentTokenize(cfg) === undefined;\n for (const doc of parsedDocs) {\n const values = writableColumns.map((col) => {\n if (col === 'path') return doc.relPath;\n if (col === '_mtime') return doc.mtimeMs;\n if (col === '_ctime') return doc.ctimeMs;\n if (col === '_size') return doc.size;\n // Written per parse, unlike _rank, which a feature pass owns and the upsert skips.\n if (col === '_parse_error') return doc.parseError;\n return doc.data[col] ?? null;\n });\n // Frontmatter upsert first: content's rowid lookup below depends on this row existing.\n insert.run(...values);\n // Only for docs that have rows: an unconditional delete made cold crawls quadratic.\n if (existing.has(doc.relPath)) {\n delBody.run(doc.relPath);\n for (const feature of features) feature.remove?.(db, doc.relPath, delta);\n }\n insertContentRow(insertBody, doc, segmenting);\n // A preset edit forces a full rebuild, so an unchanged doc's coverage is already\n // correct; new docs have nothing to clear, which keeps cold builds linear.\n if (existing.has(doc.relPath)) delPresetFiles.run(doc.relPath);\n for (const presetName of doc.presets) insertPresetFile.run(doc.relPath, presetName);\n for (const feature of features) feature.store?.(db, doc.relPath, doc.extracted[feature.name], delta);\n }\n }\n for (const feature of features) feature.afterReconcile?.(db, delta);\n db.exec('COMMIT');\n } catch (err) {\n db.exec('ROLLBACK');\n throw err;\n }\n\n // Reconcile's own write-transaction duration, for open()'s derived busy_timeout (F):\n // keep the observed max so a big watcher reconcile's lock hold is what the next open bounds its wait against.\n const durationMs = Date.now() - txStart;\n const prevRaw = getMeta(db, 'reconcile_max_ms');\n // -1, not 0, so a genuinely 0ms first reconcile (sub-millisecond, common on a tiny tree)\n // still gets recorded instead of losing to the \"nothing recorded yet\" default.\n const prevMax = prevRaw === null ? -1 : Number(prevRaw);\n if (durationMs > prevMax) setMeta(db, 'reconcile_max_ms', String(durationMs));\n\n return { parsed: parsedDocs.length, warnings };\n}\n\n// Segment keys that moved between two feature signatures (see config.featureSignature's\n// format: global features, embed provider, tokenize, then one segment per preset).\nexport function changedSignatureKeys(before: string, after: string): Set<string> {\n const keyOf = (part: string) => (part.startsWith('preset:') ? part.split(':').slice(0, 2).join(':') : part.split(':')[0]);\n const parse = (sig: string) => new Map(sig.split('|').map((part) => [keyOf(part), part]));\n const a = parse(before);\n const b = parse(after);\n const changed = new Set<string>();\n for (const [key, val] of b) if (a.get(key) !== val) changed.add(key);\n for (const key of a.keys()) if (!b.has(key)) changed.add(key);\n return changed;\n}\n\n// Whether the embed segment only gained its resolved weight identity: same provider and\n// model, no identity recorded before, one now -- adopted into meta without a rebuild.\nexport function embedIdentityAdopted(before: string, after: string): boolean {\n const embedPart = (sig: string) => sig.split('|').find((p) => p.startsWith('embed:'));\n const b = embedPart(before);\n const a = embedPart(after);\n if (b === undefined || a === undefined) return false;\n const at = a.indexOf('@');\n return b.indexOf('@') === -1 && at !== -1 && a.slice(0, at) === b;\n}\n\n// Names what moved, for the rebuild notice.\nexport function signatureDiff(before: string, after: string): string {\n const changed = changedSignatureKeys(before, after);\n const label = (key: string) => (key === 'embed' ? 'embed settings' : key === 'tokenize' ? 'content tokenizer' : key.startsWith('preset:') ? `preset \"${key.slice(7)}\"` : 'features');\n return changed.size === 0 ? 'features' : [...changed].map(label).join(', ');\n}\n\n// The tokenize-only rebuild in open(): content is dropped and repopulated from files already\n// listed in frontmatter, which itself is untouched. Frontmatter, links, sections, and\n// embeddings are file-derived and tokenizer-independent, so they survive. No feature extractors\n// run here -- doc.search (title/summary/text) is all content population needs. Returns\n// parseFile's per-file warnings (e.g. a bad date) so open() can surface them -- mtimes are\n// untouched, so reconcile() never reparses these files and would otherwise never emit them again.\nexport function rebuildContentTable(db: DatabaseSync, cfg: Config, baseDir: string): string[] {\n const known = new Set((db.prepare('SELECT \"path\" FROM frontmatter').all() as Array<{ path: string }>).map((r) => r.path));\n const files = listFiles(cfg, baseDir).filter((f) => known.has(f.relPath));\n const segmenting = contentTokenize(cfg) === undefined;\n const insertBody = db.prepare(INSERT_CONTENT_SQL);\n const warnings: string[] = [];\n db.exec('BEGIN');\n try {\n for (const file of files) {\n const { doc, warnings: fileWarnings } = parseFile(file);\n warnings.push(...fileWarnings);\n insertContentRow(insertBody, doc, segmenting);\n }\n db.exec('COMMIT');\n } catch (err) {\n db.exec('ROLLBACK');\n throw err;\n }\n return warnings;\n}\n"],"names":["changedSignatureKeys","embedIdentityAdopted","rebuildContentTable","reconcile","signatureDiff","CORE_FRONTMATTER_COLUMNS","Set","MAX_FRONTMATTER_COLUMNS","INSERT_CONTENT_SQL","insertContentRow","insertBody","doc","segmenting","run","relPath","search","title","summary","text","segmentField","db","cfg","baseDir","files","listFiles","currentSet","map","f","existingRows","prepare","all","existing","Map","r","path","vanished","filter","has","toReparse","row","get","_mtime","mtimeMs","_size","size","length","parsed","warnings","features","activeFeatures","seenColumns","getColumns","newColumns","parsedDocs","report","progress","parsedCount","file","fileFeatures","feature","enabledForFile","parseFile","fileWarnings","tick","push","Object","keys","data","key","add","finish","allColumns","SenseError","writableColumns","c","RESERVED_COLUMNS","insertSql","quoteIdent","join","added","delta","reparsed","d","txStart","Date","now","exec","col","delBody","delPresetFiles","insertPresetFile","del","remove","insert","contentTokenize","undefined","values","ctimeMs","parseError","presets","presetName","store","extracted","name","afterReconcile","err","durationMs","prevRaw","getMeta","prevMax","Number","setMeta","String","before","after","keyOf","part","startsWith","split","slice","parse","sig","a","b","changed","val","embedPart","find","p","at","indexOf","label","known"],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import type { DatabaseSync } from 'node:sqlite';
2
- export declare function quoteIdent(name: string): string;
3
- export declare function getColumns(db: DatabaseSync): Set<string>;
4
- export declare function getMeta(db: DatabaseSync, key: string): string | null;
5
- export declare function setMeta(db: DatabaseSync, key: string, value: string | null): void;
@@ -1,5 +0,0 @@
1
- import type { DatabaseSync } from 'node:sqlite';
2
- export declare function quoteIdent(name: string): string;
3
- export declare function getColumns(db: DatabaseSync): Set<string>;
4
- export declare function getMeta(db: DatabaseSync, key: string): string | null;
5
- export declare function setMeta(db: DatabaseSync, key: string, value: string | null): void;