oh-my-second-brain 0.1.8 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (466) hide show
  1. package/CHANGELOG.md +89 -0
  2. package/README.ko.md +127 -0
  3. package/README.md +128 -0
  4. package/adapters/README.md +8 -8
  5. package/adapters/claude-code/.claude-plugin/plugin.json +3 -2
  6. package/adapters/claude-code/.mcp.json +8 -0
  7. package/adapters/claude-code/CLAUDE.md +5 -6
  8. package/adapters/claude-code/skills/compile/SKILL.md +10 -35
  9. package/adapters/claude-code/skills/distill/SKILL.md +6 -26
  10. package/adapters/claude-code/skills/link/SKILL.md +87 -0
  11. package/adapters/claude-code/skills/retrieve/SKILL.md +4 -7
  12. package/adapters/claude-code/skills/setup/SKILL.md +5 -6
  13. package/adapters/claude-code/skills/uninstall/SKILL.md +1 -1
  14. package/adapters/claude-code/skills/wiki/SKILL.md +49 -24
  15. package/adapters/claude-code/skills/write/SKILL.md +16 -0
  16. package/adapters/codex/.codex-plugin/plugin.json +1 -1
  17. package/adapters/codex/AGENTS.md +2 -2
  18. package/adapters/codex/rules/oms.md +1 -1
  19. package/adapters/codex/skills/oms-compile/SKILL.md +7 -9
  20. package/adapters/codex/skills/oms-distill/SKILL.md +4 -9
  21. package/adapters/codex/skills/oms-link/SKILL.md +35 -0
  22. package/adapters/codex/skills/oms-retrieve/SKILL.md +5 -6
  23. package/adapters/codex/skills/oms-wiki/SKILL.md +28 -8
  24. package/adapters/codex/skills/oms-write/SKILL.md +10 -0
  25. package/adapters/hermes/README.md +3 -1
  26. package/adapters/hermes/SOUL.md +2 -3
  27. package/adapters/hermes/manifest.json +1 -1
  28. package/adapters/hermes/skills/compile/SKILL.md +5 -7
  29. package/adapters/hermes/skills/distill/SKILL.md +1 -3
  30. package/adapters/hermes/skills/link/SKILL.md +18 -0
  31. package/adapters/hermes/skills/retrieve/SKILL.md +5 -6
  32. package/adapters/hermes/skills/setup/SKILL.md +5 -2
  33. package/adapters/hermes/skills/wiki/SKILL.md +4 -2
  34. package/adapters/hermes/skills/write/SKILL.md +10 -0
  35. package/core/AGENTS.md +4 -2
  36. package/core/agents/librarian.md +3 -2
  37. package/core/ontology/concepts/term.yaml +12 -0
  38. package/core/ontology/taxonomy.yaml +3 -0
  39. package/core/skills/compile/SKILL.md +19 -18
  40. package/core/skills/distill/SKILL.md +13 -24
  41. package/core/skills/link/SKILL.md +130 -0
  42. package/core/skills/retrieve/SKILL.md +0 -1
  43. package/core/skills/setup/SKILL.md +12 -14
  44. package/core/skills/vault-lint/SKILL.md +1 -1
  45. package/core/skills/wiki/SKILL.md +109 -30
  46. package/core/skills/write/SKILL.md +15 -0
  47. package/dist/capture/safe.d.ts +61 -1
  48. package/dist/capture/safe.js +489 -66
  49. package/dist/capture/safe.js.map +1 -1
  50. package/dist/cli/args.d.ts +29 -0
  51. package/dist/cli/args.js +156 -0
  52. package/dist/cli/args.js.map +1 -0
  53. package/dist/cli/audit.d.ts +6 -0
  54. package/dist/cli/audit.js +93 -0
  55. package/dist/cli/audit.js.map +1 -0
  56. package/dist/cli/claude-install-plan.d.ts +10 -0
  57. package/dist/cli/claude-install-plan.js +26 -0
  58. package/dist/cli/claude-install-plan.js.map +1 -0
  59. package/dist/cli/doctor-lint.d.ts +11 -0
  60. package/dist/cli/doctor-lint.js +86 -0
  61. package/dist/cli/doctor-lint.js.map +1 -0
  62. package/dist/cli/global-writeback.d.ts +31 -0
  63. package/dist/cli/global-writeback.js +73 -0
  64. package/dist/cli/global-writeback.js.map +1 -0
  65. package/dist/cli/host-commands.d.ts +30 -0
  66. package/dist/cli/host-commands.js +89 -0
  67. package/dist/cli/host-commands.js.map +1 -0
  68. package/dist/cli/link-command.d.ts +9 -0
  69. package/dist/cli/link-command.js +47 -0
  70. package/dist/cli/link-command.js.map +1 -0
  71. package/dist/cli/linkify.d.ts +23 -0
  72. package/dist/cli/linkify.js +118 -0
  73. package/dist/cli/linkify.js.map +1 -0
  74. package/dist/cli/oms.d.ts +8 -32
  75. package/dist/cli/oms.js +100 -703
  76. package/dist/cli/oms.js.map +1 -1
  77. package/dist/cli/semantic-args.d.ts +1 -2
  78. package/dist/cli/semantic-args.js +4 -7
  79. package/dist/cli/semantic-args.js.map +1 -1
  80. package/dist/cli/semantic-http.d.ts +0 -3
  81. package/dist/cli/semantic-http.js +40 -45
  82. package/dist/cli/semantic-http.js.map +1 -1
  83. package/dist/cli/semantic-usage.js +10 -9
  84. package/dist/cli/semantic-usage.js.map +1 -1
  85. package/dist/cli/semantic.js +99 -137
  86. package/dist/cli/semantic.js.map +1 -1
  87. package/dist/cli/setup-command.d.ts +11 -0
  88. package/dist/cli/setup-command.js +196 -0
  89. package/dist/cli/setup-command.js.map +1 -0
  90. package/dist/cli/setup-documents.d.ts +15 -0
  91. package/dist/cli/setup-documents.js +149 -0
  92. package/dist/cli/setup-documents.js.map +1 -0
  93. package/dist/cli/update-notice.d.ts +10 -0
  94. package/dist/cli/update-notice.js +42 -0
  95. package/dist/cli/update-notice.js.map +1 -0
  96. package/dist/cli/usage.d.ts +4 -0
  97. package/dist/cli/usage.js +102 -0
  98. package/dist/cli/usage.js.map +1 -0
  99. package/dist/conventions/lint.js +12 -33
  100. package/dist/conventions/lint.js.map +1 -1
  101. package/dist/conventions/report.d.ts +62 -0
  102. package/dist/conventions/report.js +217 -0
  103. package/dist/conventions/report.js.map +1 -0
  104. package/dist/conventions/validate.d.ts +1 -1
  105. package/dist/conventions/vault-walk.d.ts +38 -0
  106. package/dist/conventions/vault-walk.js +80 -0
  107. package/dist/conventions/vault-walk.js.map +1 -0
  108. package/dist/conventions/write-contract.d.ts +27 -0
  109. package/dist/conventions/write-contract.js +91 -0
  110. package/dist/conventions/write-contract.js.map +1 -0
  111. package/dist/conventions/write-protocol.d.ts +39 -0
  112. package/dist/conventions/write-protocol.js +44 -0
  113. package/dist/conventions/write-protocol.js.map +1 -0
  114. package/dist/core/ontology/loader.d.ts +2 -0
  115. package/dist/{ontology → core/ontology}/loader.js +11 -20
  116. package/dist/core/ontology/loader.js.map +1 -0
  117. package/dist/core/ontology/resolver.d.ts +2 -0
  118. package/dist/{ontology → core/ontology}/resolver.js +1 -15
  119. package/dist/core/ontology/resolver.js.map +1 -0
  120. package/dist/core/ontology/types.d.ts +47 -0
  121. package/dist/core/ontology/types.js +2 -0
  122. package/dist/core/ontology/types.js.map +1 -0
  123. package/dist/core/runtime/assets.d.ts +20 -0
  124. package/dist/core/runtime/assets.js +66 -0
  125. package/dist/core/runtime/assets.js.map +1 -0
  126. package/dist/engine/assemble.d.ts +28 -72
  127. package/dist/engine/assemble.js +77 -61
  128. package/dist/engine/assemble.js.map +1 -1
  129. package/dist/engine/conventions/vault-lint.d.ts +30 -2
  130. package/dist/engine/conventions/vault-lint.js +93 -97
  131. package/dist/engine/conventions/vault-lint.js.map +1 -1
  132. package/dist/engine/embed/deferred.d.ts +3 -4
  133. package/dist/engine/embed/deferred.js +10 -7
  134. package/dist/engine/embed/deferred.js.map +1 -1
  135. package/dist/engine/embed/identity.d.ts +11 -0
  136. package/dist/engine/embed/identity.js +15 -0
  137. package/dist/engine/embed/identity.js.map +1 -0
  138. package/dist/engine/embed/provider.d.ts +12 -13
  139. package/dist/engine/embed/provider.js +30 -27
  140. package/dist/engine/embed/provider.js.map +1 -1
  141. package/dist/engine/embed/store.d.ts +48 -27
  142. package/dist/engine/embed/store.js +281 -98
  143. package/dist/engine/embed/store.js.map +1 -1
  144. package/dist/engine/embed/sync.d.ts +17 -47
  145. package/dist/engine/embed/sync.js +233 -69
  146. package/dist/engine/embed/sync.js.map +1 -1
  147. package/dist/engine/graph/builder.d.ts +1 -1
  148. package/dist/engine/graph/builder.js +1 -1
  149. package/dist/engine/graph/explore.d.ts +2 -2
  150. package/dist/engine/graph/explore.js +0 -0
  151. package/dist/engine/graph/resolver.d.ts +17 -0
  152. package/dist/engine/graph/resolver.js +46 -11
  153. package/dist/engine/graph/resolver.js.map +1 -1
  154. package/dist/engine/linkify/apply.d.ts +56 -0
  155. package/dist/engine/linkify/apply.js +65 -0
  156. package/dist/engine/linkify/apply.js.map +1 -0
  157. package/dist/engine/linkify/josa.d.ts +58 -0
  158. package/dist/engine/linkify/josa.js +133 -0
  159. package/dist/engine/linkify/josa.js.map +1 -0
  160. package/dist/engine/linkify/mask.d.ts +29 -0
  161. package/dist/engine/linkify/mask.js +173 -0
  162. package/dist/engine/linkify/mask.js.map +1 -0
  163. package/dist/engine/linkify/suggest.d.ts +52 -0
  164. package/dist/engine/linkify/suggest.js +181 -0
  165. package/dist/engine/linkify/suggest.js.map +1 -0
  166. package/dist/engine/linkify/types.d.ts +68 -0
  167. package/dist/engine/linkify/types.js +12 -0
  168. package/dist/engine/linkify/types.js.map +1 -0
  169. package/dist/engine/mcp/facade.d.ts +12 -18
  170. package/dist/engine/mcp/facade.js +30 -80
  171. package/dist/engine/mcp/facade.js.map +1 -1
  172. package/dist/engine/mcp/op-mappers.d.ts +3 -9
  173. package/dist/engine/mcp/op-mappers.js +2 -30
  174. package/dist/engine/mcp/op-mappers.js.map +1 -1
  175. package/dist/engine/mcp/types.d.ts +5 -29
  176. package/dist/engine/tracer.js +6 -2
  177. package/dist/engine/tracer.js.map +1 -1
  178. package/dist/engine/types.d.ts +8 -3
  179. package/dist/graph/cache.d.ts +1 -11
  180. package/dist/graph/cache.js +1 -44
  181. package/dist/graph/cache.js.map +1 -1
  182. package/dist/graph/explore.js +88 -137
  183. package/dist/graph/explore.js.map +1 -1
  184. package/dist/harness/surface-registry.d.ts +56 -0
  185. package/dist/harness/surface-registry.js +397 -0
  186. package/dist/harness/surface-registry.js.map +1 -0
  187. package/dist/harness/validation.d.ts +9 -0
  188. package/dist/harness/validation.js +201 -0
  189. package/dist/harness/validation.js.map +1 -0
  190. package/dist/hook/post-tool-use.js +2 -2
  191. package/dist/hook/post-tool-use.js.map +1 -1
  192. package/dist/index.d.ts +7 -5
  193. package/dist/index.js +7 -5
  194. package/dist/index.js.map +1 -1
  195. package/dist/install/adapter-source.d.ts +14 -0
  196. package/dist/install/adapter-source.js +45 -0
  197. package/dist/install/adapter-source.js.map +1 -0
  198. package/dist/install/claude-hooks.d.ts +13 -0
  199. package/dist/install/claude-hooks.js +411 -0
  200. package/dist/install/claude-hooks.js.map +1 -0
  201. package/dist/install/claude-marketplace.d.ts +44 -0
  202. package/dist/install/claude-marketplace.js +89 -0
  203. package/dist/install/claude-marketplace.js.map +1 -0
  204. package/dist/install/claude.d.ts +4 -0
  205. package/dist/install/claude.js +216 -0
  206. package/dist/install/claude.js.map +1 -0
  207. package/dist/install/codex.d.ts +24 -0
  208. package/dist/install/codex.js +193 -0
  209. package/dist/install/codex.js.map +1 -0
  210. package/dist/install/common.d.ts +34 -0
  211. package/dist/install/common.js +122 -0
  212. package/dist/install/common.js.map +1 -0
  213. package/dist/install/hermes.d.ts +4 -0
  214. package/dist/install/hermes.js +78 -0
  215. package/dist/install/hermes.js.map +1 -0
  216. package/dist/install/hosts.d.ts +6 -56
  217. package/dist/install/hosts.js +65 -610
  218. package/dist/install/hosts.js.map +1 -1
  219. package/dist/install/types.d.ts +34 -0
  220. package/dist/install/types.js +2 -0
  221. package/dist/install/types.js.map +1 -0
  222. package/dist/link/convention-note.d.ts +10 -0
  223. package/dist/link/convention-note.js +59 -0
  224. package/dist/link/convention-note.js.map +1 -0
  225. package/dist/link/global-config.d.ts +22 -0
  226. package/dist/link/global-config.js +69 -0
  227. package/dist/link/global-config.js.map +1 -0
  228. package/dist/link/link.d.ts +101 -0
  229. package/dist/link/link.js +265 -0
  230. package/dist/link/link.js.map +1 -0
  231. package/dist/mcp/engine-morning-backend.d.ts +12 -17
  232. package/dist/mcp/engine-morning-backend.js +25 -131
  233. package/dist/mcp/engine-morning-backend.js.map +1 -1
  234. package/dist/mcp/link-tools.d.ts +81 -0
  235. package/dist/mcp/link-tools.js +157 -0
  236. package/dist/mcp/link-tools.js.map +1 -0
  237. package/dist/mcp/semantic-engine.d.ts +32 -0
  238. package/dist/mcp/semantic-engine.js +52 -0
  239. package/dist/mcp/semantic-engine.js.map +1 -0
  240. package/dist/mcp/semantic-retrieve-args.d.ts +1 -5
  241. package/dist/mcp/semantic-retrieve-args.js +1 -26
  242. package/dist/mcp/semantic-retrieve-args.js.map +1 -1
  243. package/dist/mcp/semantic-retrieve-schema.d.ts +0 -14
  244. package/dist/mcp/semantic-retrieve-schema.js +0 -5
  245. package/dist/mcp/semantic-retrieve-schema.js.map +1 -1
  246. package/dist/mcp/semantic-retrieve.d.ts +12 -18
  247. package/dist/mcp/semantic-retrieve.js +40 -71
  248. package/dist/mcp/semantic-retrieve.js.map +1 -1
  249. package/dist/mcp/semantic-tool-schemas.js +7 -24
  250. package/dist/mcp/semantic-tool-schemas.js.map +1 -1
  251. package/dist/mcp/server.d.ts +7 -0
  252. package/dist/mcp/server.js +224 -162
  253. package/dist/mcp/server.js.map +1 -1
  254. package/dist/mcp/update-notice.d.ts +51 -0
  255. package/dist/mcp/update-notice.js +196 -0
  256. package/dist/mcp/update-notice.js.map +1 -0
  257. package/dist/ontology/active.d.ts +7 -0
  258. package/dist/ontology/active.js +41 -0
  259. package/dist/ontology/active.js.map +1 -0
  260. package/dist/retrieve/morning.d.ts +10 -18
  261. package/dist/retrieve/morning.js +2 -26
  262. package/dist/retrieve/morning.js.map +1 -1
  263. package/dist/retrieve/semantic-contract.d.ts +10 -0
  264. package/dist/retrieve/semantic-contract.js +2 -0
  265. package/dist/retrieve/semantic-contract.js.map +1 -0
  266. package/dist/setup/axis.d.ts +22 -3
  267. package/dist/setup/axis.js +82 -35
  268. package/dist/setup/axis.js.map +1 -1
  269. package/dist/update/update.d.ts +12 -0
  270. package/dist/update/update.js +2 -2
  271. package/dist/update/update.js.map +1 -1
  272. package/docs/install.md +43 -7
  273. package/docs/release.md +109 -17
  274. package/package.json +11 -3
  275. package/scripts/install.sh +1 -1
  276. package/adapters/claude-code/skills/capture/SKILL.md +0 -50
  277. package/adapters/codex/skills/oms-capture/SKILL.md +0 -16
  278. package/adapters/hermes/skills/capture/SKILL.md +0 -16
  279. package/core/skills/capture/SKILL.md +0 -50
  280. package/dist/adapt/HostAdapter.d.ts +0 -21
  281. package/dist/adapt/HostAdapter.js +0 -10
  282. package/dist/adapt/HostAdapter.js.map +0 -1
  283. package/dist/adapt/claudeCode.d.ts +0 -9
  284. package/dist/adapt/claudeCode.js +0 -15
  285. package/dist/adapt/claudeCode.js.map +0 -1
  286. package/dist/adapt/codex.d.ts +0 -9
  287. package/dist/adapt/codex.js +0 -15
  288. package/dist/adapt/codex.js.map +0 -1
  289. package/dist/adapt/hermes.d.ts +0 -9
  290. package/dist/adapt/hermes.js +0 -15
  291. package/dist/adapt/hermes.js.map +0 -1
  292. package/dist/cli/semantic-metadata-commands.d.ts +0 -3
  293. package/dist/cli/semantic-metadata-commands.js +0 -115
  294. package/dist/cli/semantic-metadata-commands.js.map +0 -1
  295. package/dist/engine/compile/cascade.d.ts +0 -35
  296. package/dist/engine/compile/cascade.js +0 -59
  297. package/dist/engine/compile/cascade.js.map +0 -1
  298. package/dist/engine/compile/cot.d.ts +0 -30
  299. package/dist/engine/compile/cot.js +0 -153
  300. package/dist/engine/compile/cot.js.map +0 -1
  301. package/dist/engine/compile/phases.d.ts +0 -47
  302. package/dist/engine/compile/phases.js +0 -101
  303. package/dist/engine/compile/phases.js.map +0 -1
  304. package/dist/engine/compile/provenance.d.ts +0 -45
  305. package/dist/engine/compile/provenance.js +0 -103
  306. package/dist/engine/compile/provenance.js.map +0 -1
  307. package/dist/engine/compile/sha-cache.d.ts +0 -42
  308. package/dist/engine/compile/sha-cache.js +0 -86
  309. package/dist/engine/compile/sha-cache.js.map +0 -1
  310. package/dist/engine/compile/types.d.ts +0 -71
  311. package/dist/engine/compile/types.js +0 -9
  312. package/dist/engine/compile/types.js.map +0 -1
  313. package/dist/engine/compile/worker.d.ts +0 -47
  314. package/dist/engine/compile/worker.js +0 -75
  315. package/dist/engine/compile/worker.js.map +0 -1
  316. package/dist/engine/distill/analyzer.d.ts +0 -51
  317. package/dist/engine/distill/analyzer.js +0 -279
  318. package/dist/engine/distill/analyzer.js.map +0 -1
  319. package/dist/engine/distill/clean-room.d.ts +0 -46
  320. package/dist/engine/distill/clean-room.js +0 -131
  321. package/dist/engine/distill/clean-room.js.map +0 -1
  322. package/dist/engine/distill/report.d.ts +0 -23
  323. package/dist/engine/distill/report.js +0 -107
  324. package/dist/engine/distill/report.js.map +0 -1
  325. package/dist/engine/distill/types.d.ts +0 -89
  326. package/dist/engine/distill/types.js +0 -9
  327. package/dist/engine/distill/types.js.map +0 -1
  328. package/dist/engine/embed/pull.d.ts +0 -51
  329. package/dist/engine/embed/pull.js +0 -90
  330. package/dist/engine/embed/pull.js.map +0 -1
  331. package/dist/engine/graph/community.d.ts +0 -38
  332. package/dist/engine/graph/community.js +0 -122
  333. package/dist/engine/graph/community.js.map +0 -1
  334. package/dist/engine/index.d.ts +0 -5
  335. package/dist/engine/index.js +0 -2
  336. package/dist/engine/index.js.map +0 -1
  337. package/dist/engine/mcp/index.d.ts +0 -15
  338. package/dist/engine/mcp/index.js +0 -19
  339. package/dist/engine/mcp/index.js.map +0 -1
  340. package/dist/engine/mcp/retrieve-mapper.d.ts +0 -38
  341. package/dist/engine/mcp/retrieve-mapper.js +0 -96
  342. package/dist/engine/mcp/retrieve-mapper.js.map +0 -1
  343. package/dist/engine/setup/ambiguity.d.ts +0 -39
  344. package/dist/engine/setup/ambiguity.js +0 -50
  345. package/dist/engine/setup/ambiguity.js.map +0 -1
  346. package/dist/engine/setup/types.d.ts +0 -71
  347. package/dist/engine/setup/types.js +0 -22
  348. package/dist/engine/setup/types.js.map +0 -1
  349. package/dist/engine/setup/writer.d.ts +0 -32
  350. package/dist/engine/setup/writer.js +0 -77
  351. package/dist/engine/setup/writer.js.map +0 -1
  352. package/dist/engine/wiki/collection.d.ts +0 -91
  353. package/dist/engine/wiki/collection.js +0 -188
  354. package/dist/engine/wiki/collection.js.map +0 -1
  355. package/dist/engine/wiki/ledger.d.ts +0 -59
  356. package/dist/engine/wiki/ledger.js +0 -130
  357. package/dist/engine/wiki/ledger.js.map +0 -1
  358. package/dist/engine/wiki/lint.d.ts +0 -38
  359. package/dist/engine/wiki/lint.js +0 -186
  360. package/dist/engine/wiki/lint.js.map +0 -1
  361. package/dist/engine/wiki/navigation.d.ts +0 -40
  362. package/dist/engine/wiki/navigation.js +0 -83
  363. package/dist/engine/wiki/navigation.js.map +0 -1
  364. package/dist/engine/wiki/types.d.ts +0 -54
  365. package/dist/engine/wiki/types.js +0 -7
  366. package/dist/engine/wiki/types.js.map +0 -1
  367. package/dist/ontology/loader.d.ts +0 -13
  368. package/dist/ontology/loader.js.map +0 -1
  369. package/dist/ontology/resolver.d.ts +0 -13
  370. package/dist/ontology/resolver.js.map +0 -1
  371. package/dist/ontology/types.d.ts +0 -72
  372. package/dist/ontology/types.js +0 -12
  373. package/dist/ontology/types.js.map +0 -1
  374. package/dist/retrieve/embedding-sync.d.ts +0 -3
  375. package/dist/retrieve/embedding-sync.js +0 -21
  376. package/dist/retrieve/embedding-sync.js.map +0 -1
  377. package/dist/runtime/assets.d.ts +0 -7
  378. package/dist/runtime/assets.js +0 -13
  379. package/dist/runtime/assets.js.map +0 -1
  380. package/dist/search/semantic-collections.d.ts +0 -32
  381. package/dist/search/semantic-collections.js +0 -68
  382. package/dist/search/semantic-collections.js.map +0 -1
  383. package/dist/search/semantic-contexts.d.ts +0 -21
  384. package/dist/search/semantic-contexts.js +0 -28
  385. package/dist/search/semantic-contexts.js.map +0 -1
  386. package/dist/search/semantic-diagnostics.d.ts +0 -16
  387. package/dist/search/semantic-diagnostics.js +0 -110
  388. package/dist/search/semantic-diagnostics.js.map +0 -1
  389. package/dist/search/semantic-documents.d.ts +0 -3
  390. package/dist/search/semantic-documents.js +0 -150
  391. package/dist/search/semantic-documents.js.map +0 -1
  392. package/dist/search/semantic-embedding-hash.d.ts +0 -3
  393. package/dist/search/semantic-embedding-hash.js +0 -30
  394. package/dist/search/semantic-embedding-hash.js.map +0 -1
  395. package/dist/search/semantic-embedding-provider.d.ts +0 -9
  396. package/dist/search/semantic-embedding-provider.js +0 -58
  397. package/dist/search/semantic-embedding-provider.js.map +0 -1
  398. package/dist/search/semantic-index-build.d.ts +0 -13
  399. package/dist/search/semantic-index-build.js +0 -101
  400. package/dist/search/semantic-index-build.js.map +0 -1
  401. package/dist/search/semantic-index-core.d.ts +0 -21
  402. package/dist/search/semantic-index-core.js +0 -106
  403. package/dist/search/semantic-index-core.js.map +0 -1
  404. package/dist/search/semantic-index-io.d.ts +0 -19
  405. package/dist/search/semantic-index-io.js +0 -214
  406. package/dist/search/semantic-index-io.js.map +0 -1
  407. package/dist/search/semantic-index-types.d.ts +0 -50
  408. package/dist/search/semantic-index-types.js +0 -2
  409. package/dist/search/semantic-index-types.js.map +0 -1
  410. package/dist/search/semantic-index.d.ts +0 -4
  411. package/dist/search/semantic-index.js +0 -4
  412. package/dist/search/semantic-index.js.map +0 -1
  413. package/dist/search/semantic-listing.d.ts +0 -12
  414. package/dist/search/semantic-listing.js +0 -64
  415. package/dist/search/semantic-listing.js.map +0 -1
  416. package/dist/search/semantic-maintenance-shared.d.ts +0 -15
  417. package/dist/search/semantic-maintenance-shared.js +0 -43
  418. package/dist/search/semantic-maintenance-shared.js.map +0 -1
  419. package/dist/search/semantic-maintenance-types.d.ts +0 -103
  420. package/dist/search/semantic-maintenance-types.js +0 -2
  421. package/dist/search/semantic-maintenance-types.js.map +0 -1
  422. package/dist/search/semantic-maintenance.d.ts +0 -4
  423. package/dist/search/semantic-maintenance.js +0 -5
  424. package/dist/search/semantic-maintenance.js.map +0 -1
  425. package/dist/search/semantic-provider-types.d.ts +0 -34
  426. package/dist/search/semantic-provider-types.js +0 -2
  427. package/dist/search/semantic-provider-types.js.map +0 -1
  428. package/dist/search/semantic-query-types.d.ts +0 -83
  429. package/dist/search/semantic-query-types.js +0 -2
  430. package/dist/search/semantic-query-types.js.map +0 -1
  431. package/dist/search/semantic-query.d.ts +0 -2
  432. package/dist/search/semantic-query.js +0 -188
  433. package/dist/search/semantic-query.js.map +0 -1
  434. package/dist/search/semantic-sqlite-db.d.ts +0 -18
  435. package/dist/search/semantic-sqlite-db.js +0 -87
  436. package/dist/search/semantic-sqlite-db.js.map +0 -1
  437. package/dist/search/semantic-sqlite-query.d.ts +0 -2
  438. package/dist/search/semantic-sqlite-query.js +0 -128
  439. package/dist/search/semantic-sqlite-query.js.map +0 -1
  440. package/dist/search/semantic-sqlite-read.d.ts +0 -5
  441. package/dist/search/semantic-sqlite-read.js +0 -104
  442. package/dist/search/semantic-sqlite-read.js.map +0 -1
  443. package/dist/search/semantic-sqlite-write.d.ts +0 -7
  444. package/dist/search/semantic-sqlite-write.js +0 -66
  445. package/dist/search/semantic-sqlite-write.js.map +0 -1
  446. package/dist/search/semantic-store.d.ts +0 -15
  447. package/dist/search/semantic-store.js +0 -17
  448. package/dist/search/semantic-store.js.map +0 -1
  449. package/dist/search/semantic-sync-types.d.ts +0 -47
  450. package/dist/search/semantic-sync-types.js +0 -2
  451. package/dist/search/semantic-sync-types.js.map +0 -1
  452. package/dist/search/semantic-sync.d.ts +0 -13
  453. package/dist/search/semantic-sync.js +0 -131
  454. package/dist/search/semantic-sync.js.map +0 -1
  455. package/dist/search/semantic-test-fixtures.d.ts +0 -1
  456. package/dist/search/semantic-test-fixtures.js +0 -38
  457. package/dist/search/semantic-test-fixtures.js.map +0 -1
  458. package/dist/search/semantic-token.d.ts +0 -25
  459. package/dist/search/semantic-token.js +0 -114
  460. package/dist/search/semantic-token.js.map +0 -1
  461. package/dist/search/semantic-types.d.ts +0 -5
  462. package/dist/search/semantic-types.js +0 -2
  463. package/dist/search/semantic-types.js.map +0 -1
  464. package/dist/search/semantic.d.ts +0 -6
  465. package/dist/search/semantic.js +0 -6
  466. package/dist/search/semantic.js.map +0 -1
@@ -1,101 +0,0 @@
1
- import { readFile, readdir, stat } from "node:fs/promises";
2
- import path from "node:path";
3
- import { parseNote } from "../conventions/frontmatter.js";
4
- import { termFrequency, uniqueSortedTerms } from "./semantic-token.js";
5
- import { DEFAULT_SEMANTIC_PATTERN, matchesSemanticPattern, normalizeCollection, JSON_QMD_COMPATIBILITY, QMD_COMPATIBILITY, safeSemanticCollectionPath, semanticDocumentId, semanticDocumentUri, SEMANTIC_INDEX_VERSION, SEMANTIC_JSON_STORAGE, } from "./semantic-index-core.js";
6
- async function* walkMarkdown(dir, base) {
7
- let entries;
8
- try {
9
- entries = await readdir(dir, { withFileTypes: true });
10
- }
11
- catch (error) {
12
- if (!(error instanceof Error))
13
- throw error;
14
- return;
15
- }
16
- for (const entry of entries) {
17
- if (entry.name === ".oms" || entry.name === "node_modules" || entry.name === ".git")
18
- continue;
19
- const fullPath = path.join(dir, entry.name);
20
- if (entry.isDirectory()) {
21
- yield* walkMarkdown(fullPath, base);
22
- }
23
- else if (entry.isFile() && entry.name.toLowerCase().endsWith(".md")) {
24
- yield path.relative(base, fullPath).replace(/\\/g, "/");
25
- }
26
- }
27
- }
28
- function firstHeading(body) {
29
- for (const line of body.split(/\r?\n/u)) {
30
- const match = /^#{1,6}\s+(.+)$/u.exec(line.trim());
31
- const heading = match?.[1]?.trim();
32
- if (heading)
33
- return heading;
34
- }
35
- return undefined;
36
- }
37
- function titleFromNote(notePath, raw) {
38
- const parsed = parseNote(raw);
39
- const title = parsed.frontmatter["title"];
40
- if (typeof title === "string" && title.trim())
41
- return title.trim();
42
- return firstHeading(parsed.body) ?? path.basename(notePath, ".md");
43
- }
44
- async function indexedDocument(vault, collection, notePath) {
45
- const fullPath = path.join(vault, notePath);
46
- const [content, fileStat] = await Promise.all([readFile(fullPath, "utf-8"), stat(fullPath)]);
47
- return {
48
- collection,
49
- path: notePath,
50
- uri: semanticDocumentUri(collection, notePath),
51
- docid: semanticDocumentId(collection, notePath),
52
- title: titleFromNote(notePath, content),
53
- content,
54
- terms: uniqueSortedTerms(content),
55
- termFrequency: termFrequency(content),
56
- lineCount: content.split(/\r?\n/u).length,
57
- mtimeMs: fileStat.mtimeMs,
58
- size: fileStat.size,
59
- };
60
- }
61
- export async function buildSemanticIndex(opts) {
62
- const vault = path.resolve(opts.vault);
63
- const collection = normalizeCollection(opts.collection);
64
- const collectionPath = safeSemanticCollectionPath(vault, opts.collectionPath);
65
- const scanRoot = path.resolve(vault, collectionPath);
66
- const pattern = opts.pattern?.trim() || DEFAULT_SEMANTIC_PATTERN;
67
- const ignore = opts.ignore ?? [];
68
- const documents = [];
69
- for await (const notePath of walkMarkdown(scanRoot, vault)) {
70
- if (matchesSemanticPattern(notePath, collectionPath, pattern, ignore)) {
71
- documents.push(await indexedDocument(vault, collection, notePath));
72
- }
73
- }
74
- documents.sort((a, b) => a.path.localeCompare(b.path));
75
- const generatedAt = new Date().toISOString();
76
- const summary = {
77
- name: collection,
78
- path: collectionPath,
79
- pattern,
80
- ignore,
81
- includeByDefault: opts.includeByDefault ?? true,
82
- updateCommand: opts.updateCommand,
83
- context: opts.context,
84
- documents: documents.length,
85
- activeDocuments: documents.length,
86
- lastModified: generatedAt,
87
- };
88
- return {
89
- version: SEMANTIC_INDEX_VERSION,
90
- storage: opts.storage ?? SEMANTIC_JSON_STORAGE,
91
- generatedAt,
92
- vault,
93
- collection,
94
- chunkStrategy: opts.chunkStrategy,
95
- collections: [summary],
96
- contexts: [],
97
- qmdCompatibility: opts.storage === SEMANTIC_JSON_STORAGE ? JSON_QMD_COMPATIBILITY : QMD_COMPATIBILITY,
98
- documents,
99
- };
100
- }
101
- //# sourceMappingURL=semantic-index-build.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"semantic-index-build.js","sourceRoot":"","sources":["../../src/search/semantic-index-build.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import type { SemanticQmdCompatibility, SemanticStorage } from "./semantic-types.js";
2
- export declare const SEMANTIC_JSON_STORAGE = "oms-native-json";
3
- export declare const SEMANTIC_SQLITE_STORAGE = "qmd-sqlite";
4
- export declare const DEFAULT_SEMANTIC_STORAGE: SemanticStorage;
5
- export declare const SEMANTIC_INDEX_VERSION = 1;
6
- export declare const DEFAULT_SEMANTIC_PATTERN = "**/*.md";
7
- export declare const JSON_QMD_COMPATIBILITY: SemanticQmdCompatibility;
8
- export declare const SQLITE_QMD_COMPATIBILITY: SemanticQmdCompatibility;
9
- export declare const QMD_COMPATIBILITY: SemanticQmdCompatibility;
10
- export declare function normalizeSemanticStorage(storage: SemanticStorage | undefined): SemanticStorage;
11
- export declare function normalizeCollection(collection: string | undefined): string;
12
- export declare function normalizeVaultPath(value: string): string;
13
- export declare function semanticIndexPath(opts: {
14
- readonly vault?: string;
15
- readonly index?: string;
16
- readonly storage?: SemanticStorage;
17
- }): string;
18
- export declare function semanticDocumentId(collection: string, notePath: string): string;
19
- export declare function semanticDocumentUri(collection: string, notePath: string): string;
20
- export declare function safeSemanticCollectionPath(vault: string, relativePath: string | undefined): string;
21
- export declare function matchesSemanticPattern(notePath: string, collectionPath: string, pattern: string, ignore: readonly string[]): boolean;
@@ -1,106 +0,0 @@
1
- import { createHash } from "node:crypto";
2
- import path from "node:path";
3
- export const SEMANTIC_JSON_STORAGE = "oms-native-json";
4
- export const SEMANTIC_SQLITE_STORAGE = "qmd-sqlite";
5
- export const DEFAULT_SEMANTIC_STORAGE = SEMANTIC_SQLITE_STORAGE;
6
- export const SEMANTIC_INDEX_VERSION = 1;
7
- export const DEFAULT_SEMANTIC_PATTERN = "**/*.md";
8
- export const JSON_QMD_COMPATIBILITY = {
9
- queryDocument: true,
10
- storage: "metadata-compatible",
11
- unsupportedInternals: [
12
- "better-sqlite3 FTS5 tables",
13
- "sqlite-vec vector extension",
14
- "node-llama-cpp query expansion and reranking",
15
- "GGUF model cache",
16
- ],
17
- };
18
- export const SQLITE_QMD_COMPATIBILITY = {
19
- queryDocument: true,
20
- storage: "metadata-compatible",
21
- unsupportedInternals: [],
22
- };
23
- export const QMD_COMPATIBILITY = SQLITE_QMD_COMPATIBILITY;
24
- export function normalizeSemanticStorage(storage) {
25
- return storage ?? DEFAULT_SEMANTIC_STORAGE;
26
- }
27
- export function normalizeCollection(collection) {
28
- const trimmed = collection?.trim();
29
- return trimmed && trimmed.length > 0 ? trimmed : "vault";
30
- }
31
- export function normalizeVaultPath(value) {
32
- return value.replace(/\\/g, "/").replace(/^\.?\//u, "");
33
- }
34
- export function semanticIndexPath(opts) {
35
- const vaultRoot = path.resolve(opts.vault ?? process.cwd());
36
- if (opts.index?.trim()) {
37
- const indexPath = opts.index.trim();
38
- if (path.isAbsolute(indexPath)) {
39
- throw new Error("OMS semantic index path must be relative to the vault.");
40
- }
41
- const resolved = path.resolve(vaultRoot, indexPath);
42
- const relative = path.relative(vaultRoot, resolved);
43
- if (relative === ".." || relative.startsWith(`..${path.sep}`) || path.isAbsolute(relative)) {
44
- throw new Error("OMS semantic index path must stay inside the vault.");
45
- }
46
- return resolved;
47
- }
48
- const fileName = normalizeSemanticStorage(opts.storage) === SEMANTIC_SQLITE_STORAGE
49
- ? "semantic-store.sqlite"
50
- : "semantic-index.json";
51
- return path.join(vaultRoot, ".oms", fileName);
52
- }
53
- function hash(value) {
54
- return createHash("sha1").update(value).digest("hex");
55
- }
56
- export function semanticDocumentId(collection, notePath) {
57
- return `#${hash(`${collection}\u0000${notePath}`).slice(0, 12)}`;
58
- }
59
- export function semanticDocumentUri(collection, notePath) {
60
- return `oms://${encodeURIComponent(collection)}/${notePath.split("/").map(encodeURIComponent).join("/")}`;
61
- }
62
- export function safeSemanticCollectionPath(vault, relativePath) {
63
- const raw = relativePath?.trim() || ".";
64
- if (path.isAbsolute(raw))
65
- throw new Error("OMS semantic collection path must be relative to the vault.");
66
- const resolved = path.resolve(vault, raw);
67
- const relative = path.relative(vault, resolved);
68
- if (relative === ".." || relative.startsWith(`..${path.sep}`) || path.isAbsolute(relative)) {
69
- throw new Error("OMS semantic collection path must stay inside the vault.");
70
- }
71
- return normalizeVaultPath(relative === "" ? "." : relative);
72
- }
73
- function globRegex(pattern) {
74
- let source = "";
75
- for (let index = 0; index < pattern.length; index++) {
76
- const char = pattern[index] ?? "";
77
- const next = pattern[index + 1] ?? "";
78
- if (char === "*" && next === "*") {
79
- source += ".*";
80
- index++;
81
- }
82
- else if (char === "*") {
83
- source += "[^/]*";
84
- }
85
- else if ("|\\{}()[]^$+?.".includes(char)) {
86
- source += `\\${char}`;
87
- }
88
- else {
89
- source += char;
90
- }
91
- }
92
- return new RegExp(`^${source}$`, "u");
93
- }
94
- export function matchesSemanticPattern(notePath, collectionPath, pattern, ignore) {
95
- const collectionRelative = collectionPath === "."
96
- ? notePath
97
- : normalizeVaultPath(path.relative(collectionPath, notePath));
98
- if (collectionRelative === ".." || collectionRelative.startsWith("../"))
99
- return false;
100
- const patternMatches = globRegex(pattern).test(collectionRelative) ||
101
- (pattern.startsWith("**/") && globRegex(pattern.slice(3)).test(collectionRelative));
102
- if (!patternMatches)
103
- return false;
104
- return !ignore.some((entry) => globRegex(entry).test(collectionRelative) || globRegex(entry).test(notePath));
105
- }
106
- //# sourceMappingURL=semantic-index-core.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"semantic-index-core.js","sourceRoot":"","sources":["../../src/search/semantic-index-core.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- import type { SemanticIndexFile } from "./semantic-types.js";
2
- export type SemanticIndexLoadResult = {
3
- readonly available: true;
4
- readonly index: SemanticIndexFile;
5
- readonly path: string;
6
- readonly size: string;
7
- } | {
8
- readonly available: false;
9
- readonly reason: string;
10
- readonly path: string;
11
- };
12
- export declare function readSemanticIndex(opts: {
13
- readonly vault?: string;
14
- readonly index?: string;
15
- }): Promise<SemanticIndexLoadResult>;
16
- export declare function writeSemanticIndex(index: SemanticIndexFile, opts: {
17
- readonly vault?: string;
18
- readonly index?: string;
19
- }): Promise<string>;
@@ -1,214 +0,0 @@
1
- import { mkdir, readFile, stat, writeFile } from "node:fs/promises";
2
- import path from "node:path";
3
- import { DEFAULT_SEMANTIC_PATTERN, JSON_QMD_COMPATIBILITY, semanticIndexPath, SEMANTIC_INDEX_VERSION, SEMANTIC_JSON_STORAGE, } from "./semantic-index-core.js";
4
- function isRecord(value) {
5
- return typeof value === "object" && value !== null && !Array.isArray(value);
6
- }
7
- function stringField(record, key) {
8
- const value = record[key];
9
- return typeof value === "string" ? value : undefined;
10
- }
11
- function numberField(record, key) {
12
- const value = record[key];
13
- return typeof value === "number" ? value : undefined;
14
- }
15
- function stringArray(value) {
16
- if (!Array.isArray(value))
17
- return undefined;
18
- const output = [];
19
- for (const item of value) {
20
- if (typeof item !== "string")
21
- return undefined;
22
- output.push(item);
23
- }
24
- return output;
25
- }
26
- function parseCollectionSummary(value) {
27
- if (!isRecord(value))
28
- return undefined;
29
- const name = stringField(value, "name");
30
- const collectionPath = stringField(value, "path");
31
- const pattern = stringField(value, "pattern");
32
- const ignore = stringArray(value["ignore"]);
33
- const documents = numberField(value, "documents");
34
- const activeDocuments = numberField(value, "activeDocuments");
35
- const includeByDefault = value["includeByDefault"];
36
- if (!name || !collectionPath || !pattern || !ignore || documents === undefined || activeDocuments === undefined) {
37
- return undefined;
38
- }
39
- return {
40
- name,
41
- path: collectionPath,
42
- pattern,
43
- ignore,
44
- includeByDefault: typeof includeByDefault === "boolean" ? includeByDefault : true,
45
- updateCommand: stringField(value, "updateCommand"),
46
- context: stringField(value, "context"),
47
- documents,
48
- activeDocuments,
49
- lastModified: stringField(value, "lastModified"),
50
- };
51
- }
52
- function parseStoredContext(value) {
53
- if (!isRecord(value))
54
- return undefined;
55
- const pathPrefix = stringField(value, "pathPrefix");
56
- const context = stringField(value, "context");
57
- const updatedAt = stringField(value, "updatedAt");
58
- if (!pathPrefix || !context || !updatedAt)
59
- return undefined;
60
- return { collection: stringField(value, "collection"), pathPrefix, context, updatedAt };
61
- }
62
- function frequencyRecord(value) {
63
- if (!isRecord(value))
64
- return undefined;
65
- const output = {};
66
- for (const [key, entry] of Object.entries(value)) {
67
- if (typeof entry !== "number")
68
- return undefined;
69
- output[key] = entry;
70
- }
71
- return output;
72
- }
73
- function parseIndexedDocument(value) {
74
- if (!isRecord(value))
75
- return undefined;
76
- const collection = stringField(value, "collection");
77
- const notePath = stringField(value, "path");
78
- const documentUri = stringField(value, "uri");
79
- const documentId = stringField(value, "docid");
80
- const content = stringField(value, "content");
81
- const terms = stringArray(value["terms"]);
82
- const termFrequencyValue = frequencyRecord(value["termFrequency"]);
83
- const lineCount = numberField(value, "lineCount");
84
- const mtimeMs = numberField(value, "mtimeMs");
85
- const size = numberField(value, "size");
86
- if (!collection || !notePath || !documentUri || !documentId || content === undefined)
87
- return undefined;
88
- if (!terms || !termFrequencyValue || lineCount === undefined || mtimeMs === undefined || size === undefined) {
89
- return undefined;
90
- }
91
- return {
92
- collection,
93
- path: notePath,
94
- uri: documentUri,
95
- docid: documentId,
96
- title: stringField(value, "title"),
97
- content,
98
- terms,
99
- termFrequency: termFrequencyValue,
100
- lineCount,
101
- mtimeMs,
102
- size,
103
- };
104
- }
105
- function parseSemanticIndex(value) {
106
- if (!isRecord(value))
107
- return undefined;
108
- if (value["version"] !== SEMANTIC_INDEX_VERSION || value["storage"] !== SEMANTIC_JSON_STORAGE)
109
- return undefined;
110
- const generatedAt = stringField(value, "generatedAt");
111
- const vault = stringField(value, "vault");
112
- const collection = stringField(value, "collection");
113
- const rawDocuments = value["documents"];
114
- if (!generatedAt || !vault || !collection || !Array.isArray(rawDocuments))
115
- return undefined;
116
- const documents = rawDocuments.flatMap((entry) => {
117
- const document = parseIndexedDocument(entry);
118
- return document ? [document] : [];
119
- });
120
- if (documents.length !== rawDocuments.length)
121
- return undefined;
122
- const collections = parseCollections(value, collection, documents.length, generatedAt);
123
- const contexts = parseContexts(value["contexts"]);
124
- if (!collections || !contexts)
125
- return undefined;
126
- return {
127
- version: SEMANTIC_INDEX_VERSION,
128
- storage: SEMANTIC_JSON_STORAGE,
129
- generatedAt,
130
- vault,
131
- collection,
132
- chunkStrategy: stringField(value, "chunkStrategy"),
133
- collections,
134
- contexts,
135
- globalContext: stringField(value, "globalContext"),
136
- qmdCompatibility: JSON_QMD_COMPATIBILITY,
137
- documents,
138
- };
139
- }
140
- function parseCollections(record, collection, documentCount, generatedAt) {
141
- const rawCollections = record["collections"];
142
- if (!Array.isArray(rawCollections)) {
143
- return [{
144
- name: collection,
145
- path: ".",
146
- pattern: DEFAULT_SEMANTIC_PATTERN,
147
- ignore: [],
148
- includeByDefault: true,
149
- documents: documentCount,
150
- activeDocuments: documentCount,
151
- lastModified: generatedAt,
152
- }];
153
- }
154
- const collections = rawCollections.flatMap((entry) => {
155
- const collectionSummary = parseCollectionSummary(entry);
156
- return collectionSummary ? [collectionSummary] : [];
157
- });
158
- return collections.length === rawCollections.length ? collections : undefined;
159
- }
160
- function parseContexts(value) {
161
- if (!Array.isArray(value))
162
- return [];
163
- const contexts = value.flatMap((entry) => {
164
- const storedContext = parseStoredContext(entry);
165
- return storedContext ? [storedContext] : [];
166
- });
167
- return contexts.length === value.length ? contexts : undefined;
168
- }
169
- function humanSize(bytes) {
170
- if (bytes < 1024)
171
- return `${bytes} B`;
172
- if (bytes < 1024 * 1024)
173
- return `${Math.round(bytes / 1024)} KB`;
174
- return `${Math.round(bytes / (1024 * 1024))} MB`;
175
- }
176
- export async function readSemanticIndex(opts) {
177
- let indexPath;
178
- try {
179
- indexPath = semanticIndexPath({ ...opts, storage: SEMANTIC_JSON_STORAGE });
180
- }
181
- catch (error) {
182
- const detail = error instanceof Error ? error.message : String(error);
183
- return { available: false, reason: detail, path: opts.index ?? "" };
184
- }
185
- let raw;
186
- try {
187
- raw = await readFile(indexPath, "utf-8");
188
- }
189
- catch (error) {
190
- if (!(error instanceof Error))
191
- throw error;
192
- return { available: false, reason: "OMS semantic index not found; run oms semantic sync first.", path: indexPath };
193
- }
194
- let parsed;
195
- try {
196
- parsed = JSON.parse(raw);
197
- }
198
- catch (error) {
199
- const detail = error instanceof Error ? error.message : String(error);
200
- return { available: false, reason: `Unable to parse OMS semantic index: ${detail}`, path: indexPath };
201
- }
202
- const index = parseSemanticIndex(parsed);
203
- if (!index)
204
- return { available: false, reason: "OMS semantic index has an unsupported shape.", path: indexPath };
205
- const fileStat = await stat(indexPath);
206
- return { available: true, index, path: indexPath, size: humanSize(fileStat.size) };
207
- }
208
- export async function writeSemanticIndex(index, opts) {
209
- const indexPath = semanticIndexPath({ vault: opts.vault ?? index.vault, index: opts.index, storage: SEMANTIC_JSON_STORAGE });
210
- await mkdir(path.dirname(indexPath), { recursive: true });
211
- await writeFile(indexPath, `${JSON.stringify(index, null, 2)}\n`, "utf-8");
212
- return indexPath;
213
- }
214
- //# sourceMappingURL=semantic-index-io.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"semantic-index-io.js","sourceRoot":"","sources":["../../src/search/semantic-index-io.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAYlC,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,WAAW,CAAC,MAAyC,EAAE,GAAW;IACzE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,WAAW,CAAC,MAAyC,EAAE,GAAW;IACzE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc;IAC5C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACvC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAClD,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;IAC9D,MAAM,gBAAgB,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACnD,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,SAAS,KAAK,SAAS,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAChH,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,cAAc;QACpB,OAAO;QACP,MAAM;QACN,gBAAgB,EAAE,OAAO,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI;QACjF,aAAa,EAAE,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC;QAClD,OAAO,EAAE,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC;QACtC,SAAS;QACT,eAAe;QACf,YAAY,EAAE,WAAW,CAAC,KAAK,EAAE,cAAc,CAAC;KACjD,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACvC,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5D,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAC1F,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACvC,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAChD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACvC,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1C,MAAM,kBAAkB,GAAG,eAAe,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACvG,IAAI,CAAC,KAAK,IAAI,CAAC,kBAAkB,IAAI,SAAS,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5G,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO;QACL,UAAU;QACV,IAAI,EAAE,QAAQ;QACd,GAAG,EAAE,WAAW;QAChB,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC;QAClC,OAAO;QACP,KAAK;QACL,aAAa,EAAE,kBAAkB;QACjC,SAAS;QACT,OAAO;QACP,IAAI;KACL,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACvC,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,sBAAsB,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,qBAAqB;QAAE,OAAO,SAAS,CAAC;IAChH,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;IACxC,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5F,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC/C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IACH,IAAI,SAAS,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC/D,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvF,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IAClD,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChD,OAAO;QACL,OAAO,EAAE,sBAAsB;QAC/B,OAAO,EAAE,qBAAqB;QAC9B,WAAW;QACX,KAAK;QACL,UAAU;QACV,aAAa,EAAE,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC;QAClD,WAAW;QACX,QAAQ;QACR,aAAa,EAAE,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC;QAClD,gBAAgB,EAAE,sBAAsB;QACxC,SAAS;KACV,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,MAAyC,EACzC,UAAkB,EAClB,aAAqB,EACrB,WAAmB;IAEnB,MAAM,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC;gBACN,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,GAAG;gBACT,OAAO,EAAE,wBAAwB;gBACjC,MAAM,EAAE,EAAE;gBACV,gBAAgB,EAAE,IAAI;gBACtB,SAAS,EAAE,aAAa;gBACxB,eAAe,EAAE,aAAa;gBAC9B,YAAY,EAAE,WAAW;aAC1B,CAAC,CAAC;IACL,CAAC;IACD,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACnD,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACxD,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AAChF,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvC,MAAM,aAAa,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAChD,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,CAAC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACjE,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,GAAG,KAAK,IAAI,CAAC;IACtC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACjE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAA0D;IAChG,IAAI,SAAiB,CAAC;IACtB,IAAI,CAAC;QACH,SAAS,GAAG,iBAAiB,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;IAC7E,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;IACtE,CAAC;IACD,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;YAAE,MAAM,KAAK,CAAC;QAC3C,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,4DAA4D,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACrH,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,uCAAuC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACxG,CAAC;IAED,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,8CAA8C,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACjH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AACrF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAwB,EACxB,IAA0D;IAE1D,MAAM,SAAS,GAAG,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;IAC7H,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,MAAM,SAAS,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3E,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1,50 +0,0 @@
1
- export type SemanticStorage = "qmd-sqlite" | "oms-native-json";
2
- export interface SemanticIndexedDocument {
3
- readonly collection: string;
4
- readonly path: string;
5
- readonly uri: string;
6
- readonly docid: string;
7
- readonly title?: string;
8
- readonly content: string;
9
- readonly terms: readonly string[];
10
- readonly termFrequency: Readonly<Record<string, number>>;
11
- readonly lineCount: number;
12
- readonly mtimeMs: number;
13
- readonly size: number;
14
- }
15
- export interface SemanticCollectionSummary {
16
- readonly name: string;
17
- readonly path: string;
18
- readonly pattern: string;
19
- readonly ignore: readonly string[];
20
- readonly includeByDefault: boolean;
21
- readonly updateCommand?: string;
22
- readonly context?: string;
23
- readonly documents: number;
24
- readonly activeDocuments: number;
25
- readonly lastModified?: string;
26
- }
27
- export interface SemanticStoredContext {
28
- readonly collection?: string;
29
- readonly pathPrefix: string;
30
- readonly context: string;
31
- readonly updatedAt: string;
32
- }
33
- export interface SemanticQmdCompatibility {
34
- readonly queryDocument: true;
35
- readonly storage: "metadata-compatible";
36
- readonly unsupportedInternals: readonly string[];
37
- }
38
- export interface SemanticIndexFile {
39
- readonly version: 1;
40
- readonly storage: SemanticStorage;
41
- readonly generatedAt: string;
42
- readonly vault: string;
43
- readonly collection: string;
44
- readonly chunkStrategy?: string;
45
- readonly collections?: readonly SemanticCollectionSummary[];
46
- readonly contexts?: readonly SemanticStoredContext[];
47
- readonly globalContext?: string;
48
- readonly qmdCompatibility?: SemanticQmdCompatibility;
49
- readonly documents: readonly SemanticIndexedDocument[];
50
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=semantic-index-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"semantic-index-types.js","sourceRoot":"","sources":["../../src/search/semantic-index-types.ts"],"names":[],"mappings":""}
@@ -1,4 +0,0 @@
1
- export { DEFAULT_SEMANTIC_PATTERN, DEFAULT_SEMANTIC_STORAGE, JSON_QMD_COMPATIBILITY, normalizeCollection, normalizeSemanticStorage, normalizeVaultPath, QMD_COMPATIBILITY, semanticDocumentId, semanticDocumentUri, semanticIndexPath, SEMANTIC_JSON_STORAGE, SEMANTIC_SQLITE_STORAGE, SQLITE_QMD_COMPATIBILITY, } from "./semantic-index-core.js";
2
- export { buildSemanticIndex } from "./semantic-index-build.js";
3
- export { readSemanticIndex, writeSemanticIndex } from "./semantic-store.js";
4
- export type { SemanticIndexLoadResult } from "./semantic-store.js";
@@ -1,4 +0,0 @@
1
- export { DEFAULT_SEMANTIC_PATTERN, DEFAULT_SEMANTIC_STORAGE, JSON_QMD_COMPATIBILITY, normalizeCollection, normalizeSemanticStorage, normalizeVaultPath, QMD_COMPATIBILITY, semanticDocumentId, semanticDocumentUri, semanticIndexPath, SEMANTIC_JSON_STORAGE, SEMANTIC_SQLITE_STORAGE, SQLITE_QMD_COMPATIBILITY, } from "./semantic-index-core.js";
2
- export { buildSemanticIndex } from "./semantic-index-build.js";
3
- export { readSemanticIndex, writeSemanticIndex } from "./semantic-store.js";
4
- //# sourceMappingURL=semantic-index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"semantic-index.js","sourceRoot":"","sources":["../../src/search/semantic-index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,12 +0,0 @@
1
- import type { SemanticCleanupResult, SemanticDocumentListingResult, SemanticStorage } from "./semantic-types.js";
2
- export declare function listSemanticDocuments(opts: {
3
- readonly vault: string;
4
- readonly index?: string;
5
- readonly target?: string;
6
- readonly storage?: SemanticStorage;
7
- }): Promise<SemanticDocumentListingResult>;
8
- export declare function cleanupSemanticStore(opts: {
9
- readonly vault: string;
10
- readonly index?: string;
11
- readonly storage?: SemanticStorage;
12
- }): Promise<SemanticCleanupResult>;
@@ -1,64 +0,0 @@
1
- import { stat } from "node:fs/promises";
2
- import path from "node:path";
3
- import { readSemanticIndex } from "./semantic-index.js";
4
- import { collectionsWithCounts, normalizePathPrefix, writeIndex } from "./semantic-maintenance-shared.js";
5
- function documentMatchesTarget(document, target) {
6
- if (!target)
7
- return true;
8
- const normalized = normalizePathPrefix(target);
9
- if (document.collection === normalized)
10
- return true;
11
- if (normalized.startsWith(`${document.collection}/`)) {
12
- return document.path.startsWith(normalized.slice(document.collection.length + 1));
13
- }
14
- return document.path.startsWith(normalized) || document.path === normalized || document.docid === normalized;
15
- }
16
- export async function listSemanticDocuments(opts) {
17
- const loaded = await readSemanticIndex(opts);
18
- if (!loaded.available)
19
- return { available: false, reason: loaded.reason, documents: [] };
20
- const documents = loaded.index.documents
21
- .map((document) => ({
22
- collection: document.collection,
23
- path: document.path,
24
- docid: document.docid,
25
- title: document.title,
26
- uri: document.uri,
27
- lineCount: document.lineCount,
28
- size: document.size,
29
- }))
30
- .filter((document) => documentMatchesTarget(document, opts.target))
31
- .sort((a, b) => a.collection.localeCompare(b.collection) || a.path.localeCompare(b.path));
32
- return { available: true, documents };
33
- }
34
- export async function cleanupSemanticStore(opts) {
35
- const loaded = await readSemanticIndex(opts);
36
- if (!loaded.available)
37
- return { available: false, storage: opts.storage ?? "qmd-sqlite", reason: loaded.reason };
38
- const kept = [];
39
- for (const document of loaded.index.documents) {
40
- try {
41
- await stat(path.join(loaded.index.vault, document.path));
42
- kept.push(document);
43
- }
44
- catch (error) {
45
- if (!(error instanceof Error))
46
- throw error;
47
- }
48
- }
49
- const removedDocuments = loaded.index.documents.length - kept.length;
50
- const nextIndex = {
51
- ...loaded.index,
52
- documents: kept,
53
- collections: collectionsWithCounts({ ...loaded.index, documents: kept }),
54
- };
55
- await writeIndex(nextIndex, opts);
56
- return {
57
- available: true,
58
- storage: loaded.index.storage,
59
- removedDocuments,
60
- remainingDocuments: kept.length,
61
- collections: nextIndex.collections?.length ?? 0,
62
- };
63
- }
64
- //# sourceMappingURL=semantic-listing.js.map