wiki-graph-core 0.3.1

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 (576) hide show
  1. package/LICENSE +201 -0
  2. package/data/editor/clue_reviewer.jinja +410 -0
  3. package/data/editor/clue_reviewer_generator.jinja +428 -0
  4. package/data/editor/revision_feedback.jinja +5 -0
  5. package/data/editor/text_compressor.jinja +127 -0
  6. package/data/guaranteed/response_intent_classifier.jinja +8 -0
  7. package/data/help/commands/archive/next.jinja +29 -0
  8. package/data/help/commands/gc.jinja +38 -0
  9. package/data/help/commands/legacy/migrate.jinja +20 -0
  10. package/data/help/commands/legacy.jinja +19 -0
  11. package/data/help/commands/maintenance/chapter/add.jinja +41 -0
  12. package/data/help/commands/maintenance/chapter/list.jinja +33 -0
  13. package/data/help/commands/maintenance/chapter/move.jinja +36 -0
  14. package/data/help/commands/maintenance/chapter/remove.jinja +26 -0
  15. package/data/help/commands/maintenance/chapter/reset.jinja +29 -0
  16. package/data/help/commands/maintenance/chapter/set-source.jinja +34 -0
  17. package/data/help/commands/maintenance/chapter/set-summary.jinja +31 -0
  18. package/data/help/commands/maintenance/chapter/set-title.jinja +29 -0
  19. package/data/help/commands/maintenance/chapter/tree.jinja +58 -0
  20. package/data/help/commands/maintenance/chapter.jinja +59 -0
  21. package/data/help/commands/maintenance/cover.jinja +28 -0
  22. package/data/help/commands/maintenance/meta.jinja +55 -0
  23. package/data/help/commands/predicate.jinja +460 -0
  24. package/data/help/commands/root.jinja +83 -0
  25. package/data/help/commands/transform.jinja +34 -0
  26. package/data/help/commands/uri.jinja +274 -0
  27. package/data/help/topics/config.jinja +88 -0
  28. package/data/help/topics/format.jinja +72 -0
  29. package/data/help/topics/readiness.jinja +99 -0
  30. package/data/help/topics/recipe.jinja +151 -0
  31. package/data/help/topics/runtime.jinja +62 -0
  32. package/data/help/topics/uri.jinja +178 -0
  33. package/data/output/epub/cover.xhtml.jinja +13 -0
  34. package/data/output/epub/nav.xhtml.jinja +12 -0
  35. package/data/output/epub/package.opf.xml.jinja +39 -0
  36. package/data/output/epub/section.xhtml.jinja +12 -0
  37. package/data/topologization/book_coherence_extraction.jinja +223 -0
  38. package/data/topologization/chunk_extraction.jinja +233 -0
  39. package/data/topologization/evidence_choice.jinja +38 -0
  40. package/data/topologization/translate_chunks.jinja +138 -0
  41. package/data/topologization/user_focused_extraction.jinja +378 -0
  42. package/dist/archive/query/archive-view.d.ts +26 -0
  43. package/dist/archive/query/archive-view.js +4540 -0
  44. package/dist/archive/query/archive-view.js.map +1 -0
  45. package/dist/archive/query/continuation-cursor.d.ts +61 -0
  46. package/dist/archive/query/continuation-cursor.js +363 -0
  47. package/dist/archive/query/continuation-cursor.js.map +1 -0
  48. package/dist/archive/query/index.d.ts +29 -0
  49. package/dist/archive/query/index.js +63 -0
  50. package/dist/archive/query/index.js.map +1 -0
  51. package/dist/archive/query/lexical-search.d.ts +22 -0
  52. package/dist/archive/query/lexical-search.js +137 -0
  53. package/dist/archive/query/lexical-search.js.map +1 -0
  54. package/dist/archive/query/search-cache.d.ts +192 -0
  55. package/dist/archive/query/search-cache.js +1248 -0
  56. package/dist/archive/query/search-cache.js.map +1 -0
  57. package/dist/archive/search-index/index.d.ts +26 -0
  58. package/dist/archive/search-index/index.js +29 -0
  59. package/dist/archive/search-index/index.js.map +1 -0
  60. package/dist/archive/search-index/search-index.d.ts +26 -0
  61. package/dist/archive/search-index/search-index.js +555 -0
  62. package/dist/archive/search-index/search-index.js.map +1 -0
  63. package/dist/archive/search-index/search-tokenizer.d.ts +16 -0
  64. package/dist/archive/search-index/search-tokenizer.js +225 -0
  65. package/dist/archive/search-index/search-tokenizer.js.map +1 -0
  66. package/dist/common/cli-command.d.ts +4 -0
  67. package/dist/common/cli-command.js +7 -0
  68. package/dist/common/cli-command.js.map +1 -0
  69. package/dist/common/data-dir.d.ts +3 -0
  70. package/dist/common/data-dir.js +48 -0
  71. package/dist/common/data-dir.js.map +1 -0
  72. package/dist/common/language.d.ts +55 -0
  73. package/dist/common/language.js +208 -0
  74. package/dist/common/language.js.map +1 -0
  75. package/dist/common/llm-scope.d.ts +19 -0
  76. package/dist/common/llm-scope.js +31 -0
  77. package/dist/common/llm-scope.js.map +1 -0
  78. package/dist/common/logging.d.ts +22 -0
  79. package/dist/common/logging.js +141 -0
  80. package/dist/common/logging.js.map +1 -0
  81. package/dist/common/template.d.ts +8 -0
  82. package/dist/common/template.js +54 -0
  83. package/dist/common/template.js.map +1 -0
  84. package/dist/common/tinyld-language.d.ts +6 -0
  85. package/dist/common/tinyld-language.js +34 -0
  86. package/dist/common/tinyld-language.js.map +1 -0
  87. package/dist/common/wiki-graph-dir.d.ts +10 -0
  88. package/dist/common/wiki-graph-dir.js +41 -0
  89. package/dist/common/wiki-graph-dir.js.map +1 -0
  90. package/dist/common/wiki-graph-temp.d.ts +6 -0
  91. package/dist/common/wiki-graph-temp.js +21 -0
  92. package/dist/common/wiki-graph-temp.js.map +1 -0
  93. package/dist/common/wiki-graph-uri.d.ts +28 -0
  94. package/dist/common/wiki-graph-uri.js +171 -0
  95. package/dist/common/wiki-graph-uri.js.map +1 -0
  96. package/dist/context/index.d.ts +1 -0
  97. package/dist/context/index.js +13 -0
  98. package/dist/context/index.js.map +1 -0
  99. package/dist/context/task-context.d.ts +41 -0
  100. package/dist/context/task-context.js +111 -0
  101. package/dist/context/task-context.js.map +1 -0
  102. package/dist/document/database.d.ts +30 -0
  103. package/dist/document/database.js +273 -0
  104. package/dist/document/database.js.map +1 -0
  105. package/dist/document/document.d.ts +153 -0
  106. package/dist/document/document.js +615 -0
  107. package/dist/document/document.js.map +1 -0
  108. package/dist/document/fragments.d.ts +63 -0
  109. package/dist/document/fragments.js +371 -0
  110. package/dist/document/fragments.js.map +1 -0
  111. package/dist/document/index.d.ts +13 -0
  112. package/dist/document/index.js +62 -0
  113. package/dist/document/index.js.map +1 -0
  114. package/dist/document/schema.d.ts +8 -0
  115. package/dist/document/schema.js +472 -0
  116. package/dist/document/schema.js.map +1 -0
  117. package/dist/document/shared-state-database.d.ts +9 -0
  118. package/dist/document/shared-state-database.js +193 -0
  119. package/dist/document/shared-state-database.js.map +1 -0
  120. package/dist/document/stores.d.ts +203 -0
  121. package/dist/document/stores.js +1678 -0
  122. package/dist/document/stores.js.map +1 -0
  123. package/dist/document/text-streams.d.ts +86 -0
  124. package/dist/document/text-streams.js +515 -0
  125. package/dist/document/text-streams.js.map +1 -0
  126. package/dist/document/types.d.ts +148 -0
  127. package/dist/document/types.js +69 -0
  128. package/dist/document/types.js.map +1 -0
  129. package/dist/editor/clue.d.ts +27 -0
  130. package/dist/editor/clue.js +158 -0
  131. package/dist/editor/clue.js.map +1 -0
  132. package/dist/editor/compressor.d.ts +18 -0
  133. package/dist/editor/compressor.js +68 -0
  134. package/dist/editor/compressor.js.map +1 -0
  135. package/dist/editor/editor.d.ts +39 -0
  136. package/dist/editor/editor.js +253 -0
  137. package/dist/editor/editor.js.map +1 -0
  138. package/dist/editor/feedback.d.ts +16 -0
  139. package/dist/editor/feedback.js +104 -0
  140. package/dist/editor/feedback.js.map +1 -0
  141. package/dist/editor/index.d.ts +17 -0
  142. package/dist/editor/index.js +5 -0
  143. package/dist/editor/index.js.map +1 -0
  144. package/dist/editor/language-review.d.ts +14 -0
  145. package/dist/editor/language-review.js +35 -0
  146. package/dist/editor/language-review.js.map +1 -0
  147. package/dist/editor/log.d.ts +37 -0
  148. package/dist/editor/log.js +202 -0
  149. package/dist/editor/log.js.map +1 -0
  150. package/dist/editor/markup.d.ts +20 -0
  151. package/dist/editor/markup.js +294 -0
  152. package/dist/editor/markup.js.map +1 -0
  153. package/dist/editor/prompt-templates.d.ts +6 -0
  154. package/dist/editor/prompt-templates.js +11 -0
  155. package/dist/editor/prompt-templates.js.map +1 -0
  156. package/dist/editor/response.d.ts +5 -0
  157. package/dist/editor/response.js +31 -0
  158. package/dist/editor/response.js.map +1 -0
  159. package/dist/editor/review.d.ts +34 -0
  160. package/dist/editor/review.js +189 -0
  161. package/dist/editor/review.js.map +1 -0
  162. package/dist/editor/types.d.ts +31 -0
  163. package/dist/editor/types.js +21 -0
  164. package/dist/editor/types.js.map +1 -0
  165. package/dist/evidence-selection/anchor-resolver.d.ts +43 -0
  166. package/dist/evidence-selection/anchor-resolver.js +783 -0
  167. package/dist/evidence-selection/anchor-resolver.js.map +1 -0
  168. package/dist/evidence-selection/anchor-types.d.ts +27 -0
  169. package/dist/evidence-selection/anchor-types.js +1 -0
  170. package/dist/evidence-selection/anchor-types.js.map +1 -0
  171. package/dist/evidence-selection/index.d.ts +8 -0
  172. package/dist/evidence-selection/index.js +32 -0
  173. package/dist/evidence-selection/index.js.map +1 -0
  174. package/dist/evidence-selection/prompt.d.ts +18 -0
  175. package/dist/evidence-selection/prompt.js +54 -0
  176. package/dist/evidence-selection/prompt.js.map +1 -0
  177. package/dist/evidence-selection/quote-score.d.ts +29 -0
  178. package/dist/evidence-selection/quote-score.js +331 -0
  179. package/dist/evidence-selection/quote-score.js.map +1 -0
  180. package/dist/evidence-selection/selection-resolver.d.ts +19 -0
  181. package/dist/evidence-selection/selection-resolver.js +303 -0
  182. package/dist/evidence-selection/selection-resolver.js.map +1 -0
  183. package/dist/evidence-selection/text.d.ts +4 -0
  184. package/dist/evidence-selection/text.js +66 -0
  185. package/dist/evidence-selection/text.js.map +1 -0
  186. package/dist/evidence-selection/types.d.ts +36 -0
  187. package/dist/evidence-selection/types.js +1 -0
  188. package/dist/evidence-selection/types.js.map +1 -0
  189. package/dist/facade/app.d.ts +75 -0
  190. package/dist/facade/app.js +141 -0
  191. package/dist/facade/app.js.map +1 -0
  192. package/dist/facade/build-queue.d.ts +181 -0
  193. package/dist/facade/build-queue.js +1442 -0
  194. package/dist/facade/build-queue.js.map +1 -0
  195. package/dist/facade/chapter-build.d.ts +60 -0
  196. package/dist/facade/chapter-build.js +1020 -0
  197. package/dist/facade/chapter-build.js.map +1 -0
  198. package/dist/facade/chapter.d.ts +168 -0
  199. package/dist/facade/chapter.js +944 -0
  200. package/dist/facade/chapter.js.map +1 -0
  201. package/dist/facade/digest.d.ts +55 -0
  202. package/dist/facade/digest.js +168 -0
  203. package/dist/facade/digest.js.map +1 -0
  204. package/dist/facade/graph.d.ts +60 -0
  205. package/dist/facade/graph.js +203 -0
  206. package/dist/facade/graph.js.map +1 -0
  207. package/dist/facade/import.d.ts +49 -0
  208. package/dist/facade/import.js +262 -0
  209. package/dist/facade/import.js.map +1 -0
  210. package/dist/facade/index.d.ts +39 -0
  211. package/dist/facade/index.js +171 -0
  212. package/dist/facade/index.js.map +1 -0
  213. package/dist/facade/knowledge-graph-build.d.ts +75 -0
  214. package/dist/facade/knowledge-graph-build.js +897 -0
  215. package/dist/facade/knowledge-graph-build.js.map +1 -0
  216. package/dist/facade/llm-sampling.d.ts +11 -0
  217. package/dist/facade/llm-sampling.js +58 -0
  218. package/dist/facade/llm-sampling.js.map +1 -0
  219. package/dist/facade/types.d.ts +8 -0
  220. package/dist/facade/types.js +1 -0
  221. package/dist/facade/types.js.map +1 -0
  222. package/dist/facade/wiki-graph-archive.d.ts +41 -0
  223. package/dist/facade/wiki-graph-archive.js +130 -0
  224. package/dist/facade/wiki-graph-archive.js.map +1 -0
  225. package/dist/gc/files.d.ts +15 -0
  226. package/dist/gc/files.js +141 -0
  227. package/dist/gc/files.js.map +1 -0
  228. package/dist/gc/index.d.ts +2 -0
  229. package/dist/gc/index.js +5 -0
  230. package/dist/gc/index.js.map +1 -0
  231. package/dist/gc/lock.d.ts +3 -0
  232. package/dist/gc/lock.js +137 -0
  233. package/dist/gc/lock.js.map +1 -0
  234. package/dist/gc/runner.d.ts +9 -0
  235. package/dist/gc/runner.js +129 -0
  236. package/dist/gc/runner.js.map +1 -0
  237. package/dist/gc/tmp-gc.d.ts +5 -0
  238. package/dist/gc/tmp-gc.js +57 -0
  239. package/dist/gc/tmp-gc.js.map +1 -0
  240. package/dist/gc/types.d.ts +24 -0
  241. package/dist/gc/types.js +1 -0
  242. package/dist/gc/types.js.map +1 -0
  243. package/dist/gc.cjs +10041 -0
  244. package/dist/gc.cjs.map +1 -0
  245. package/dist/gc.d.cts +10 -0
  246. package/dist/gc.d.ts +2 -0
  247. package/dist/gc.js +5 -0
  248. package/dist/gc.js.map +1 -0
  249. package/dist/guaranteed/classifier.d.ts +10 -0
  250. package/dist/guaranteed/classifier.js +88 -0
  251. package/dist/guaranteed/classifier.js.map +1 -0
  252. package/dist/guaranteed/errors.d.ts +38 -0
  253. package/dist/guaranteed/errors.js +73 -0
  254. package/dist/guaranteed/errors.js.map +1 -0
  255. package/dist/guaranteed/index.d.ts +7 -0
  256. package/dist/guaranteed/index.js +21 -0
  257. package/dist/guaranteed/index.js.map +1 -0
  258. package/dist/guaranteed/request.d.ts +8 -0
  259. package/dist/guaranteed/request.js +206 -0
  260. package/dist/guaranteed/request.js.map +1 -0
  261. package/dist/guaranteed/response.d.ts +12 -0
  262. package/dist/guaranteed/response.js +98 -0
  263. package/dist/guaranteed/response.js.map +1 -0
  264. package/dist/guaranteed/types.d.ts +20 -0
  265. package/dist/guaranteed/types.js +1 -0
  266. package/dist/guaranteed/types.js.map +1 -0
  267. package/dist/index-B8NNnQ8P.d.ts +424 -0
  268. package/dist/index.cjs +34774 -0
  269. package/dist/index.cjs.map +1 -0
  270. package/dist/index.d.cts +2462 -0
  271. package/dist/index.d.ts +79 -0
  272. package/dist/index.js +168 -0
  273. package/dist/index.js.map +1 -0
  274. package/dist/legacy-sdpub/upgrade.d.ts +7 -0
  275. package/dist/legacy-sdpub/upgrade.js +795 -0
  276. package/dist/legacy-sdpub/upgrade.js.map +1 -0
  277. package/dist/llm/cache.d.ts +13 -0
  278. package/dist/llm/cache.js +35 -0
  279. package/dist/llm/cache.js.map +1 -0
  280. package/dist/llm/client.d.ts +26 -0
  281. package/dist/llm/client.js +572 -0
  282. package/dist/llm/client.js.map +1 -0
  283. package/dist/llm/context.d.ts +22 -0
  284. package/dist/llm/context.js +78 -0
  285. package/dist/llm/context.js.map +1 -0
  286. package/dist/llm/errors.d.ts +7 -0
  287. package/dist/llm/errors.js +12 -0
  288. package/dist/llm/errors.js.map +1 -0
  289. package/dist/llm/index.d.ts +7 -0
  290. package/dist/llm/index.js +17 -0
  291. package/dist/llm/index.js.map +1 -0
  292. package/dist/llm/request-log.d.ts +9 -0
  293. package/dist/llm/request-log.js +35 -0
  294. package/dist/llm/request-log.js.map +1 -0
  295. package/dist/llm/sampling.d.ts +11 -0
  296. package/dist/llm/sampling.js +67 -0
  297. package/dist/llm/sampling.js.map +1 -0
  298. package/dist/llm/types.d.ts +50 -0
  299. package/dist/llm/types.js +1 -0
  300. package/dist/llm/types.js.map +1 -0
  301. package/dist/output/epub/archive.d.ts +9 -0
  302. package/dist/output/epub/archive.js +81 -0
  303. package/dist/output/epub/archive.js.map +1 -0
  304. package/dist/output/epub/book.d.ts +15 -0
  305. package/dist/output/epub/book.js +76 -0
  306. package/dist/output/epub/book.js.map +1 -0
  307. package/dist/output/epub/content.d.ts +9 -0
  308. package/dist/output/epub/content.js +35 -0
  309. package/dist/output/epub/content.js.map +1 -0
  310. package/dist/output/epub/index.d.ts +20 -0
  311. package/dist/output/epub/index.js +14 -0
  312. package/dist/output/epub/index.js.map +1 -0
  313. package/dist/output/epub/model.d.ts +24 -0
  314. package/dist/output/epub/model.js +1 -0
  315. package/dist/output/epub/model.js.map +1 -0
  316. package/dist/output/epub/navigation.d.ts +10 -0
  317. package/dist/output/epub/navigation.js +39 -0
  318. package/dist/output/epub/navigation.js.map +1 -0
  319. package/dist/output/epub/package.d.ts +17 -0
  320. package/dist/output/epub/package.js +29 -0
  321. package/dist/output/epub/package.js.map +1 -0
  322. package/dist/output/epub/shared.d.ts +4 -0
  323. package/dist/output/epub/shared.js +12 -0
  324. package/dist/output/epub/shared.js.map +1 -0
  325. package/dist/output/epub/templates.d.ts +35 -0
  326. package/dist/output/epub/templates.js +26 -0
  327. package/dist/output/epub/templates.js.map +1 -0
  328. package/dist/output/index.d.ts +14 -0
  329. package/dist/output/index.js +11 -0
  330. package/dist/output/index.js.map +1 -0
  331. package/dist/output/plain-text.d.ts +18 -0
  332. package/dist/output/plain-text.js +56 -0
  333. package/dist/output/plain-text.js.map +1 -0
  334. package/dist/progress/index.d.ts +3 -0
  335. package/dist/progress/index.js +14 -0
  336. package/dist/progress/index.js.map +1 -0
  337. package/dist/progress/reporter.d.ts +10 -0
  338. package/dist/progress/reporter.js +79 -0
  339. package/dist/progress/reporter.js.map +1 -0
  340. package/dist/progress/tracker.d.ts +37 -0
  341. package/dist/progress/tracker.js +119 -0
  342. package/dist/progress/tracker.js.map +1 -0
  343. package/dist/progress/types.d.ts +28 -0
  344. package/dist/progress/types.js +1 -0
  345. package/dist/progress/types.js.map +1 -0
  346. package/dist/reader/attention/attention.d.ts +39 -0
  347. package/dist/reader/attention/attention.js +123 -0
  348. package/dist/reader/attention/attention.js.map +1 -0
  349. package/dist/reader/attention/index.d.ts +9 -0
  350. package/dist/reader/attention/index.js +5 -0
  351. package/dist/reader/attention/index.js.map +1 -0
  352. package/dist/reader/attention/wave-reflection.d.ts +21 -0
  353. package/dist/reader/attention/wave-reflection.js +153 -0
  354. package/dist/reader/attention/wave-reflection.js.map +1 -0
  355. package/dist/reader/attention/working-memory.d.ts +28 -0
  356. package/dist/reader/attention/working-memory.js +62 -0
  357. package/dist/reader/attention/working-memory.js.map +1 -0
  358. package/dist/reader/chunk-batch/extract.d.ts +13 -0
  359. package/dist/reader/chunk-batch/extract.js +14 -0
  360. package/dist/reader/chunk-batch/extract.js.map +1 -0
  361. package/dist/reader/chunk-batch/extractor.d.ts +17 -0
  362. package/dist/reader/chunk-batch/extractor.js +337 -0
  363. package/dist/reader/chunk-batch/extractor.js.map +1 -0
  364. package/dist/reader/chunk-batch/fragment-projection.d.ts +34 -0
  365. package/dist/reader/chunk-batch/fragment-projection.js +94 -0
  366. package/dist/reader/chunk-batch/fragment-projection.js.map +1 -0
  367. package/dist/reader/chunk-batch/index.d.ts +12 -0
  368. package/dist/reader/chunk-batch/index.js +13 -0
  369. package/dist/reader/chunk-batch/index.js.map +1 -0
  370. package/dist/reader/chunk-batch/language.d.ts +9 -0
  371. package/dist/reader/chunk-batch/language.js +23 -0
  372. package/dist/reader/chunk-batch/language.js.map +1 -0
  373. package/dist/reader/chunk-batch/parser.d.ts +94 -0
  374. package/dist/reader/chunk-batch/parser.js +640 -0
  375. package/dist/reader/chunk-batch/parser.js.map +1 -0
  376. package/dist/reader/chunk-batch/prompt-templates.d.ts +6 -0
  377. package/dist/reader/chunk-batch/prompt-templates.js +11 -0
  378. package/dist/reader/chunk-batch/prompt-templates.js.map +1 -0
  379. package/dist/reader/chunk-batch/types.d.ts +85 -0
  380. package/dist/reader/chunk-batch/types.js +1 -0
  381. package/dist/reader/chunk-batch/types.js.map +1 -0
  382. package/dist/reader/index.d.ts +13 -0
  383. package/dist/reader/index.js +7 -0
  384. package/dist/reader/index.js.map +1 -0
  385. package/dist/reader/reader.d.ts +37 -0
  386. package/dist/reader/reader.js +82 -0
  387. package/dist/reader/reader.js.map +1 -0
  388. package/dist/reader/segment/index.d.ts +2 -0
  389. package/dist/reader/segment/index.js +5 -0
  390. package/dist/reader/segment/index.js.map +1 -0
  391. package/dist/reader/segment/intl-segmenter.d.ts +5 -0
  392. package/dist/reader/segment/intl-segmenter.js +102 -0
  393. package/dist/reader/segment/intl-segmenter.js.map +1 -0
  394. package/dist/reader/segment/segment.d.ts +5 -0
  395. package/dist/reader/segment/segment.js +9 -0
  396. package/dist/reader/segment/segment.js.map +1 -0
  397. package/dist/reader/segment/types.d.ts +14 -0
  398. package/dist/reader/segment/types.js +1 -0
  399. package/dist/reader/segment/types.js.map +1 -0
  400. package/dist/reader/types.d.ts +29 -0
  401. package/dist/reader/types.js +1 -0
  402. package/dist/reader/types.js.map +1 -0
  403. package/dist/serial.d.ts +89 -0
  404. package/dist/serial.js +476 -0
  405. package/dist/serial.js.map +1 -0
  406. package/dist/source/adapter.d.ts +15 -0
  407. package/dist/source/adapter.js +1 -0
  408. package/dist/source/adapter.js.map +1 -0
  409. package/dist/source/epub/archive.d.ts +27 -0
  410. package/dist/source/epub/archive.js +189 -0
  411. package/dist/source/epub/archive.js.map +1 -0
  412. package/dist/source/epub/content.d.ts +22 -0
  413. package/dist/source/epub/content.js +183 -0
  414. package/dist/source/epub/content.js.map +1 -0
  415. package/dist/source/epub/document.d.ts +55 -0
  416. package/dist/source/epub/document.js +179 -0
  417. package/dist/source/epub/document.js.map +1 -0
  418. package/dist/source/epub/index.d.ts +10 -0
  419. package/dist/source/epub/index.js +6 -0
  420. package/dist/source/epub/index.js.map +1 -0
  421. package/dist/source/epub/navigation.d.ts +16 -0
  422. package/dist/source/epub/navigation.js +215 -0
  423. package/dist/source/epub/navigation.js.map +1 -0
  424. package/dist/source/epub/package.d.ts +33 -0
  425. package/dist/source/epub/package.js +237 -0
  426. package/dist/source/epub/package.js.map +1 -0
  427. package/dist/source/epub/xml.d.ts +16 -0
  428. package/dist/source/epub/xml.js +111 -0
  429. package/dist/source/epub/xml.js.map +1 -0
  430. package/dist/source/index.d.ts +12 -0
  431. package/dist/source/index.js +32 -0
  432. package/dist/source/index.js.map +1 -0
  433. package/dist/source/meta.d.ts +30 -0
  434. package/dist/source/meta.js +22 -0
  435. package/dist/source/meta.js.map +1 -0
  436. package/dist/source/plain-text.d.ts +16 -0
  437. package/dist/source/plain-text.js +86 -0
  438. package/dist/source/plain-text.js.map +1 -0
  439. package/dist/source/toc.d.ts +16 -0
  440. package/dist/source/toc.js +17 -0
  441. package/dist/source/toc.js.map +1 -0
  442. package/dist/source/types.d.ts +16 -0
  443. package/dist/source/types.js +1 -0
  444. package/dist/source/types.js.map +1 -0
  445. package/dist/topology/grouping.d.ts +15 -0
  446. package/dist/topology/grouping.js +18 -0
  447. package/dist/topology/grouping.js.map +1 -0
  448. package/dist/topology/index.d.ts +21 -0
  449. package/dist/topology/index.js +5 -0
  450. package/dist/topology/index.js.map +1 -0
  451. package/dist/topology/resource-segmentation.d.ts +13 -0
  452. package/dist/topology/resource-segmentation.js +111 -0
  453. package/dist/topology/resource-segmentation.js.map +1 -0
  454. package/dist/topology/segment-incision.d.ts +18 -0
  455. package/dist/topology/segment-incision.js +197 -0
  456. package/dist/topology/segment-incision.js.map +1 -0
  457. package/dist/topology/snake-detector.d.ts +13 -0
  458. package/dist/topology/snake-detector.js +520 -0
  459. package/dist/topology/snake-detector.js.map +1 -0
  460. package/dist/topology/snake-graph-builder.d.ts +14 -0
  461. package/dist/topology/snake-graph-builder.js +76 -0
  462. package/dist/topology/snake-graph-builder.js.map +1 -0
  463. package/dist/topology/topology.d.ts +29 -0
  464. package/dist/topology/topology.js +348 -0
  465. package/dist/topology/topology.js.map +1 -0
  466. package/dist/topology/weights.d.ts +10 -0
  467. package/dist/topology/weights.js +84 -0
  468. package/dist/topology/weights.js.map +1 -0
  469. package/dist/types-FVIqiLC9.d.cts +24 -0
  470. package/dist/utils/async-semaphore.d.ts +7 -0
  471. package/dist/utils/async-semaphore.js +40 -0
  472. package/dist/utils/async-semaphore.js.map +1 -0
  473. package/dist/utils/enum.d.ts +5 -0
  474. package/dist/utils/enum.js +18 -0
  475. package/dist/utils/enum.js.map +1 -0
  476. package/dist/utils/hash.d.ts +3 -0
  477. package/dist/utils/hash.js +132 -0
  478. package/dist/utils/hash.js.map +1 -0
  479. package/dist/utils/node-error.d.ts +4 -0
  480. package/dist/utils/node-error.js +59 -0
  481. package/dist/utils/node-error.js.map +1 -0
  482. package/dist/wikg/archive-uri.d.ts +1 -0
  483. package/dist/wikg/archive-uri.js +37 -0
  484. package/dist/wikg/archive-uri.js.map +1 -0
  485. package/dist/wikg/archive.d.ts +28 -0
  486. package/dist/wikg/archive.js +496 -0
  487. package/dist/wikg/archive.js.map +1 -0
  488. package/dist/wikg/index.d.ts +31 -0
  489. package/dist/wikg/index.js +60 -0
  490. package/dist/wikg/index.js.map +1 -0
  491. package/dist/wikg/wikg-coordinator.d.ts +45 -0
  492. package/dist/wikg/wikg-coordinator.js +1687 -0
  493. package/dist/wikg/wikg-coordinator.js.map +1 -0
  494. package/dist/wikg/wiki-graph-archive-file.d.ts +42 -0
  495. package/dist/wikg/wiki-graph-archive-file.js +78 -0
  496. package/dist/wikg/wiki-graph-archive-file.js.map +1 -0
  497. package/dist/wikilink/index.d.ts +10 -0
  498. package/dist/wikilink/index.js +7 -0
  499. package/dist/wikilink/index.js.map +1 -0
  500. package/dist/wikilink/relation-discovery.d.ts +31 -0
  501. package/dist/wikilink/relation-discovery.js +477 -0
  502. package/dist/wikilink/relation-discovery.js.map +1 -0
  503. package/dist/wikilink/types.d.ts +23 -0
  504. package/dist/wikilink/types.js +1 -0
  505. package/dist/wikilink/types.js.map +1 -0
  506. package/dist/wikilink/window.d.ts +7 -0
  507. package/dist/wikilink/window.js +53 -0
  508. package/dist/wikilink/window.js.map +1 -0
  509. package/dist/wikimatch/enrichment.d.ts +10 -0
  510. package/dist/wikimatch/enrichment.js +55 -0
  511. package/dist/wikimatch/enrichment.js.map +1 -0
  512. package/dist/wikimatch/index.d.ts +16 -0
  513. package/dist/wikimatch/index.js +66 -0
  514. package/dist/wikimatch/index.js.map +1 -0
  515. package/dist/wikimatch/option-narrowing.d.ts +17 -0
  516. package/dist/wikimatch/option-narrowing.js +208 -0
  517. package/dist/wikimatch/option-narrowing.js.map +1 -0
  518. package/dist/wikimatch/options.d.ts +14 -0
  519. package/dist/wikimatch/options.js +155 -0
  520. package/dist/wikimatch/options.js.map +1 -0
  521. package/dist/wikimatch/policy-judge.d.ts +17 -0
  522. package/dist/wikimatch/policy-judge.js +430 -0
  523. package/dist/wikimatch/policy-judge.js.map +1 -0
  524. package/dist/wikimatch/range-suppression.d.ts +9 -0
  525. package/dist/wikimatch/range-suppression.js +27 -0
  526. package/dist/wikimatch/range-suppression.js.map +1 -0
  527. package/dist/wikimatch/surface-screening.d.ts +16 -0
  528. package/dist/wikimatch/surface-screening.js +168 -0
  529. package/dist/wikimatch/surface-screening.js.map +1 -0
  530. package/dist/wikimatch/surface-window.d.ts +6 -0
  531. package/dist/wikimatch/surface-window.js +44 -0
  532. package/dist/wikimatch/surface-window.js.map +1 -0
  533. package/dist/wikimatch/types.d.ts +151 -0
  534. package/dist/wikimatch/types.js +1 -0
  535. package/dist/wikimatch/types.js.map +1 -0
  536. package/dist/wikimatch/wikispine.d.ts +43 -0
  537. package/dist/wikimatch/wikispine.js +399 -0
  538. package/dist/wikimatch/wikispine.js.map +1 -0
  539. package/dist/wikimatch/window.d.ts +6 -0
  540. package/dist/wikimatch/window.js +83 -0
  541. package/dist/wikimatch/window.js.map +1 -0
  542. package/dist/wikimatch/words.d.ts +16 -0
  543. package/dist/wikimatch/words.js +66 -0
  544. package/dist/wikimatch/words.js.map +1 -0
  545. package/dist/wikipage/cache.d.ts +18 -0
  546. package/dist/wikipage/cache.js +404 -0
  547. package/dist/wikipage/cache.js.map +1 -0
  548. package/dist/wikipage/fetch-log.d.ts +17 -0
  549. package/dist/wikipage/fetch-log.js +143 -0
  550. package/dist/wikipage/fetch-log.js.map +1 -0
  551. package/dist/wikipage/index.d.ts +14 -0
  552. package/dist/wikipage/index.js +17 -0
  553. package/dist/wikipage/index.js.map +1 -0
  554. package/dist/wikipage/normalizer.d.ts +14 -0
  555. package/dist/wikipage/normalizer.js +147 -0
  556. package/dist/wikipage/normalizer.js.map +1 -0
  557. package/dist/wikipage/rate-limiter.d.ts +13 -0
  558. package/dist/wikipage/rate-limiter.js +84 -0
  559. package/dist/wikipage/rate-limiter.js.map +1 -0
  560. package/dist/wikipage/resolver.d.ts +26 -0
  561. package/dist/wikipage/resolver.js +325 -0
  562. package/dist/wikipage/resolver.js.map +1 -0
  563. package/dist/wikipage/types.d.ts +96 -0
  564. package/dist/wikipage/types.js +1 -0
  565. package/dist/wikipage/types.js.map +1 -0
  566. package/dist/wikipage/wikimedia-client.d.ts +48 -0
  567. package/dist/wikipage/wikimedia-client.js +397 -0
  568. package/dist/wikipage/wikimedia-client.js.map +1 -0
  569. package/dist/worker-BgQ0Xl8T.d.cts +181 -0
  570. package/dist/worker.cjs +5259 -0
  571. package/dist/worker.cjs.map +1 -0
  572. package/dist/worker.d.cts +2 -0
  573. package/dist/worker.d.ts +2 -0
  574. package/dist/worker.js +5 -0
  575. package/dist/worker.js.map +1 -0
  576. package/package.json +78 -0
@@ -0,0 +1,61 @@
1
+ type ContinuationCursor = {
2
+ readonly archiveKey: string;
3
+ readonly archivePath: string;
4
+ readonly backlinks?: boolean;
5
+ readonly chapters: readonly number[] | null;
6
+ readonly cursor: string;
7
+ readonly evidenceLimit?: number;
8
+ readonly format: "json" | "jsonl" | "text";
9
+ readonly ids: readonly string[] | null;
10
+ readonly kind: "collection";
11
+ readonly order: "doc-asc" | "doc-desc";
12
+ readonly sourceContext?: number;
13
+ readonly triplePattern?: {
14
+ readonly objectQid?: string;
15
+ readonly predicate?: string;
16
+ readonly subjectQid?: string;
17
+ };
18
+ readonly types: readonly string[] | null;
19
+ } | {
20
+ readonly archiveKey: string;
21
+ readonly archivePath: string;
22
+ readonly backlinks?: boolean;
23
+ readonly cursor: string;
24
+ readonly evidenceLimit?: number;
25
+ readonly format: "json" | "jsonl" | "text";
26
+ readonly kind: "search";
27
+ readonly query?: string;
28
+ readonly sourceContext?: number;
29
+ readonly triplePattern?: {
30
+ readonly objectQid?: string;
31
+ readonly predicate?: string;
32
+ readonly subjectQid?: string;
33
+ };
34
+ readonly types: readonly string[] | null;
35
+ } | {
36
+ readonly archiveKey: string;
37
+ readonly archivePath: string;
38
+ readonly cursor: string;
39
+ readonly format: "json" | "jsonl" | "text";
40
+ readonly kind: "evidence";
41
+ readonly order: "doc-asc" | "doc-desc";
42
+ readonly query?: string;
43
+ readonly sourceContext?: number;
44
+ readonly targetUri: string;
45
+ } | {
46
+ readonly archiveKey: string;
47
+ readonly archivePath: string;
48
+ readonly cursor: string;
49
+ readonly evidenceLimit?: number;
50
+ readonly format: "json" | "jsonl" | "text";
51
+ readonly kind: "related";
52
+ readonly order: "doc-asc" | "doc-desc";
53
+ readonly query?: string;
54
+ readonly role?: "any" | "object" | "self" | "subject";
55
+ readonly sourceContext?: number;
56
+ readonly targetUri: string;
57
+ };
58
+ declare function createContinuationCursor(input: ContinuationCursor): Promise<string>;
59
+ declare function readContinuationCursor(cursorId: string): Promise<ContinuationCursor>;
60
+
61
+ export { type ContinuationCursor, createContinuationCursor, readContinuationCursor };
@@ -0,0 +1,363 @@
1
+ import { randomBytes } from "crypto";
2
+ import { join } from "path";
3
+ import { resolveWikiGraphCacheDirectoryPath } from "../../common/wiki-graph-dir.js";
4
+ import { getOptionalString, getString } from "../../document/database.js";
5
+ import { openSharedStateDatabase } from "../../document/index.js";
6
+ const CONTINUATION_CURSOR_SCHEMA_SQL = `
7
+ CREATE TABLE IF NOT EXISTS continuation_cursors (
8
+ cursor_id TEXT PRIMARY KEY,
9
+ archive_key TEXT NOT NULL,
10
+ archive_path TEXT NOT NULL,
11
+ kind TEXT NOT NULL,
12
+ payload_json TEXT NOT NULL,
13
+ format TEXT NOT NULL,
14
+ limit_value INTEGER NOT NULL,
15
+ created_at INTEGER NOT NULL,
16
+ expires_at INTEGER NOT NULL,
17
+ accessed_at INTEGER NOT NULL
18
+ );
19
+
20
+ CREATE INDEX IF NOT EXISTS idx_continuation_cursors_expires
21
+ ON continuation_cursors(expires_at);
22
+ `;
23
+ const CURSOR_TTL_MS = 7 * 24 * 60 * 60 * 1e3;
24
+ async function createContinuationCursor(input) {
25
+ const database = await openContinuationCursorDatabase();
26
+ try {
27
+ await cleanExpiredContinuationCursors(database);
28
+ const now = Date.now();
29
+ const cursorId = await createUniqueCursorId(database);
30
+ await database.run(
31
+ `
32
+ INSERT INTO continuation_cursors (
33
+ cursor_id, archive_key, archive_path, kind, payload_json, format,
34
+ limit_value, created_at, expires_at, accessed_at
35
+ )
36
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
37
+ `,
38
+ [
39
+ cursorId,
40
+ input.archiveKey,
41
+ input.archivePath,
42
+ input.kind,
43
+ JSON.stringify(createCursorPayload(input)),
44
+ input.format,
45
+ 1,
46
+ now,
47
+ now + CURSOR_TTL_MS,
48
+ now
49
+ ]
50
+ );
51
+ return cursorId;
52
+ } finally {
53
+ await database.close();
54
+ }
55
+ }
56
+ async function readContinuationCursor(cursorId) {
57
+ const database = await openContinuationCursorDatabase();
58
+ try {
59
+ await cleanExpiredContinuationCursors(database);
60
+ const record = await database.queryOne(
61
+ `
62
+ SELECT archive_key, archive_path, kind, payload_json, format
63
+ FROM continuation_cursors
64
+ WHERE cursor_id = ?
65
+ `,
66
+ [cursorId],
67
+ (row) => ({
68
+ archiveKey: getString(row, "archive_key"),
69
+ archivePath: getString(row, "archive_path"),
70
+ format: parseCursorFormat(getString(row, "format")),
71
+ kind: getString(row, "kind"),
72
+ payloadJSON: getString(row, "payload_json")
73
+ })
74
+ );
75
+ if (record === void 0) {
76
+ throw new Error(
77
+ `Continuation cursor ${cursorId} was not found or has expired.`
78
+ );
79
+ }
80
+ await database.run(
81
+ "UPDATE continuation_cursors SET accessed_at = ? WHERE cursor_id = ?",
82
+ [Date.now(), cursorId]
83
+ );
84
+ return parseContinuationCursorRecord(record);
85
+ } finally {
86
+ await database.close();
87
+ }
88
+ }
89
+ function createCursorPayload(input) {
90
+ switch (input.kind) {
91
+ case "collection":
92
+ return {
93
+ ...input.backlinks === void 0 ? {} : { backlinks: input.backlinks },
94
+ chapters: input.chapters,
95
+ cursor: input.cursor,
96
+ ...input.evidenceLimit === void 0 ? {} : { evidenceLimit: input.evidenceLimit },
97
+ ids: input.ids,
98
+ order: input.order,
99
+ ...input.sourceContext === void 0 ? {} : { sourceContext: input.sourceContext },
100
+ ...input.triplePattern === void 0 ? {} : { triplePattern: input.triplePattern },
101
+ types: input.types
102
+ };
103
+ case "search":
104
+ return {
105
+ ...input.backlinks === void 0 ? {} : { backlinks: input.backlinks },
106
+ cursor: input.cursor,
107
+ ...input.evidenceLimit === void 0 ? {} : { evidenceLimit: input.evidenceLimit },
108
+ ...input.query === void 0 ? {} : { query: input.query },
109
+ ...input.sourceContext === void 0 ? {} : { sourceContext: input.sourceContext },
110
+ ...input.triplePattern === void 0 ? {} : { triplePattern: input.triplePattern },
111
+ types: input.types
112
+ };
113
+ case "evidence":
114
+ return {
115
+ cursor: input.cursor,
116
+ order: input.order,
117
+ ...input.query === void 0 ? {} : { query: input.query },
118
+ ...input.sourceContext === void 0 ? {} : { sourceContext: input.sourceContext },
119
+ targetUri: input.targetUri
120
+ };
121
+ case "related":
122
+ return {
123
+ cursor: input.cursor,
124
+ ...input.evidenceLimit === void 0 ? {} : { evidenceLimit: input.evidenceLimit },
125
+ order: input.order,
126
+ ...input.query === void 0 ? {} : { query: input.query },
127
+ ...input.role === void 0 ? {} : { role: input.role },
128
+ ...input.sourceContext === void 0 ? {} : { sourceContext: input.sourceContext },
129
+ targetUri: input.targetUri
130
+ };
131
+ }
132
+ }
133
+ function parseContinuationCursorRecord(record) {
134
+ const payload = parsePayload(record.payloadJSON);
135
+ if (record.kind === "collection") {
136
+ return {
137
+ archiveKey: record.archiveKey,
138
+ archivePath: record.archivePath,
139
+ ...getPayloadOptionalBoolean(payload, "backlinks"),
140
+ chapters: getPayloadNumberArrayOrNull(payload, "chapters"),
141
+ cursor: getPayloadString(payload, "cursor"),
142
+ ...getPayloadOptionalPositiveInteger(payload, "evidenceLimit"),
143
+ format: record.format,
144
+ ids: getPayloadStringArrayOrNull(payload, "ids"),
145
+ kind: "collection",
146
+ order: getPayloadOrder(payload),
147
+ ...getPayloadOptionalInteger(payload, "sourceContext", "sourceContext"),
148
+ ...getPayloadOptionalTriplePattern(payload),
149
+ types: getPayloadStringArrayOrNull(payload, "types")
150
+ };
151
+ }
152
+ if (record.kind === "search") {
153
+ return {
154
+ archiveKey: record.archiveKey,
155
+ archivePath: record.archivePath,
156
+ ...getPayloadOptionalBoolean(payload, "backlinks"),
157
+ cursor: getPayloadString(payload, "cursor"),
158
+ ...getPayloadOptionalPositiveInteger(payload, "evidenceLimit"),
159
+ format: record.format,
160
+ kind: "search",
161
+ ...getPayloadOptionalString(payload, "query"),
162
+ ...getPayloadOptionalInteger(payload, "sourceContext", "sourceContext"),
163
+ ...getPayloadOptionalTriplePattern(payload),
164
+ types: getPayloadStringArrayOrNull(payload, "types")
165
+ };
166
+ }
167
+ if (record.kind === "evidence") {
168
+ return {
169
+ archiveKey: record.archiveKey,
170
+ archivePath: record.archivePath,
171
+ cursor: getPayloadString(payload, "cursor"),
172
+ format: record.format,
173
+ kind: "evidence",
174
+ order: getPayloadOrder(payload),
175
+ ...getPayloadOptionalString(payload, "query"),
176
+ ...getPayloadOptionalInteger(payload, "sourceContext", "sourceContext"),
177
+ targetUri: getPayloadString(payload, "targetUri")
178
+ };
179
+ }
180
+ if (record.kind === "related") {
181
+ return {
182
+ archiveKey: record.archiveKey,
183
+ archivePath: record.archivePath,
184
+ cursor: getPayloadString(payload, "cursor"),
185
+ ...getPayloadOptionalPositiveInteger(payload, "evidenceLimit"),
186
+ format: record.format,
187
+ kind: "related",
188
+ order: getPayloadOrder(payload),
189
+ ...getPayloadOptionalString(payload, "query"),
190
+ ...getPayloadOptionalRelatedRole(payload),
191
+ ...getPayloadOptionalInteger(payload, "sourceContext", "sourceContext"),
192
+ targetUri: getPayloadString(payload, "targetUri")
193
+ };
194
+ }
195
+ throw new Error(`Invalid continuation cursor kind: ${record.kind}.`);
196
+ }
197
+ function parsePayload(value) {
198
+ const parsed = JSON.parse(value);
199
+ if (typeof parsed === "object" && parsed !== null && !Array.isArray(parsed)) {
200
+ return parsed;
201
+ }
202
+ throw new Error("Invalid continuation cursor payload.");
203
+ }
204
+ function getPayloadString(payload, key) {
205
+ const value = payload[key];
206
+ if (typeof value === "string") {
207
+ return value;
208
+ }
209
+ throw new Error("Invalid continuation cursor payload.");
210
+ }
211
+ function getPayloadStringArrayOrNull(payload, key) {
212
+ const value = payload[key];
213
+ if (value === null) {
214
+ return null;
215
+ }
216
+ if (Array.isArray(value) && value.every((item) => typeof item === "string")) {
217
+ return value;
218
+ }
219
+ throw new Error("Invalid continuation cursor payload.");
220
+ }
221
+ function getPayloadOptionalString(payload, key) {
222
+ const value = payload[key];
223
+ if (value === void 0) {
224
+ return {};
225
+ }
226
+ if (typeof value === "string") {
227
+ return { query: value };
228
+ }
229
+ throw new Error("Invalid continuation cursor payload.");
230
+ }
231
+ function getPayloadNumberArrayOrNull(payload, key) {
232
+ const value = payload[key];
233
+ if (value === null) {
234
+ return null;
235
+ }
236
+ if (Array.isArray(value)) {
237
+ const numbers = [];
238
+ for (const item of value) {
239
+ if (typeof item !== "number" || !Number.isInteger(item)) {
240
+ throw new Error("Invalid continuation cursor payload.");
241
+ }
242
+ numbers.push(item);
243
+ }
244
+ return numbers;
245
+ }
246
+ throw new Error("Invalid continuation cursor payload.");
247
+ }
248
+ function getPayloadOrder(payload) {
249
+ const value = payload.order;
250
+ if (value === "doc-asc" || value === "doc-desc") {
251
+ return value;
252
+ }
253
+ throw new Error("Invalid continuation cursor payload.");
254
+ }
255
+ function getPayloadOptionalPositiveInteger(payload, key) {
256
+ const value = payload[key];
257
+ if (value === void 0) {
258
+ return {};
259
+ }
260
+ if (typeof value === "number" && Number.isInteger(value) && value > 0) {
261
+ return { evidenceLimit: value };
262
+ }
263
+ throw new Error("Invalid continuation cursor payload.");
264
+ }
265
+ function getPayloadOptionalInteger(payload, key, outputKey) {
266
+ const value = payload[key];
267
+ if (value === void 0) {
268
+ return {};
269
+ }
270
+ if (typeof value === "number" && Number.isInteger(value) && value >= 0) {
271
+ return { [outputKey]: value };
272
+ }
273
+ throw new Error("Invalid continuation cursor payload.");
274
+ }
275
+ function getPayloadOptionalBoolean(payload, key) {
276
+ const value = payload[key];
277
+ if (value === void 0) {
278
+ return {};
279
+ }
280
+ if (typeof value === "boolean") {
281
+ return { backlinks: value };
282
+ }
283
+ throw new Error("Invalid continuation cursor payload.");
284
+ }
285
+ function getPayloadOptionalRelatedRole(payload) {
286
+ const value = payload.role;
287
+ if (value === void 0) {
288
+ return {};
289
+ }
290
+ if (value === "any" || value === "object" || value === "self" || value === "subject") {
291
+ return { role: value };
292
+ }
293
+ throw new Error("Invalid continuation cursor payload.");
294
+ }
295
+ function getPayloadOptionalTriplePattern(payload) {
296
+ const value = payload.triplePattern;
297
+ if (value === void 0) {
298
+ return {};
299
+ }
300
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
301
+ throw new Error("Invalid continuation cursor payload.");
302
+ }
303
+ const pattern = value;
304
+ const subjectQid = getOptionalPayloadStringProperty(pattern, "subjectQid");
305
+ const predicate = getOptionalPayloadStringProperty(pattern, "predicate");
306
+ const objectQid = getOptionalPayloadStringProperty(pattern, "objectQid");
307
+ return {
308
+ triplePattern: {
309
+ ...objectQid === void 0 ? {} : { objectQid },
310
+ ...predicate === void 0 ? {} : { predicate },
311
+ ...subjectQid === void 0 ? {} : { subjectQid }
312
+ }
313
+ };
314
+ }
315
+ function getOptionalPayloadStringProperty(payload, key) {
316
+ const value = payload[key];
317
+ if (value === void 0) {
318
+ return void 0;
319
+ }
320
+ if (typeof value === "string") {
321
+ return value;
322
+ }
323
+ throw new Error("Invalid continuation cursor payload.");
324
+ }
325
+ async function createUniqueCursorId(database) {
326
+ for (let attempt = 0; attempt < 10; attempt += 1) {
327
+ const cursorId = `c_${randomBytes(6).toString("base64url")}`;
328
+ const existing = await database.queryOne(
329
+ "SELECT cursor_id FROM continuation_cursors WHERE cursor_id = ?",
330
+ [cursorId],
331
+ (row) => getOptionalString(row, "cursor_id")
332
+ );
333
+ if (existing === void 0) {
334
+ return cursorId;
335
+ }
336
+ }
337
+ throw new Error("Failed to create a unique continuation cursor.");
338
+ }
339
+ async function cleanExpiredContinuationCursors(database) {
340
+ await database.run("DELETE FROM continuation_cursors WHERE expires_at < ?", [
341
+ Date.now()
342
+ ]);
343
+ }
344
+ async function openContinuationCursorDatabase() {
345
+ return await openSharedStateDatabase(
346
+ join(getContinuationStateDirectoryPath(), "continuation-cursors.sqlite"),
347
+ CONTINUATION_CURSOR_SCHEMA_SQL
348
+ );
349
+ }
350
+ function getContinuationStateDirectoryPath() {
351
+ return resolveWikiGraphCacheDirectoryPath();
352
+ }
353
+ function parseCursorFormat(value) {
354
+ if (value === "json" || value === "jsonl" || value === "text") {
355
+ return value;
356
+ }
357
+ throw new Error(`Invalid continuation cursor format: ${value}.`);
358
+ }
359
+ export {
360
+ createContinuationCursor,
361
+ readContinuationCursor
362
+ };
363
+ //# sourceMappingURL=continuation-cursor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/archive/query/continuation-cursor.ts"],"sourcesContent":["import { randomBytes } from \"crypto\";\nimport { join } from \"path\";\n\nimport { resolveWikiGraphCacheDirectoryPath } from \"../../common/wiki-graph-dir.js\";\nimport { getOptionalString, getString } from \"../../document/database.js\";\nimport { openSharedStateDatabase } from \"../../document/index.js\";\nimport type { Database } from \"../../document/index.js\";\n\nexport type ContinuationCursor =\n | {\n readonly archiveKey: string;\n readonly archivePath: string;\n readonly backlinks?: boolean;\n readonly chapters: readonly number[] | null;\n readonly cursor: string;\n readonly evidenceLimit?: number;\n readonly format: \"json\" | \"jsonl\" | \"text\";\n readonly ids: readonly string[] | null;\n readonly kind: \"collection\";\n readonly order: \"doc-asc\" | \"doc-desc\";\n readonly sourceContext?: number;\n readonly triplePattern?: {\n readonly objectQid?: string;\n readonly predicate?: string;\n readonly subjectQid?: string;\n };\n readonly types: readonly string[] | null;\n }\n | {\n readonly archiveKey: string;\n readonly archivePath: string;\n readonly backlinks?: boolean;\n readonly cursor: string;\n readonly evidenceLimit?: number;\n readonly format: \"json\" | \"jsonl\" | \"text\";\n readonly kind: \"search\";\n readonly query?: string;\n readonly sourceContext?: number;\n readonly triplePattern?: {\n readonly objectQid?: string;\n readonly predicate?: string;\n readonly subjectQid?: string;\n };\n readonly types: readonly string[] | null;\n }\n | {\n readonly archiveKey: string;\n readonly archivePath: string;\n readonly cursor: string;\n readonly format: \"json\" | \"jsonl\" | \"text\";\n readonly kind: \"evidence\";\n readonly order: \"doc-asc\" | \"doc-desc\";\n readonly query?: string;\n readonly sourceContext?: number;\n readonly targetUri: string;\n }\n | {\n readonly archiveKey: string;\n readonly archivePath: string;\n readonly cursor: string;\n readonly evidenceLimit?: number;\n readonly format: \"json\" | \"jsonl\" | \"text\";\n readonly kind: \"related\";\n readonly order: \"doc-asc\" | \"doc-desc\";\n readonly query?: string;\n readonly role?: \"any\" | \"object\" | \"self\" | \"subject\";\n readonly sourceContext?: number;\n readonly targetUri: string;\n };\n\nconst CONTINUATION_CURSOR_SCHEMA_SQL = `\nCREATE TABLE IF NOT EXISTS continuation_cursors (\n cursor_id TEXT PRIMARY KEY,\n archive_key TEXT NOT NULL,\n archive_path TEXT NOT NULL,\n kind TEXT NOT NULL,\n payload_json TEXT NOT NULL,\n format TEXT NOT NULL,\n limit_value INTEGER NOT NULL,\n created_at INTEGER NOT NULL,\n expires_at INTEGER NOT NULL,\n accessed_at INTEGER NOT NULL\n);\n\nCREATE INDEX IF NOT EXISTS idx_continuation_cursors_expires\nON continuation_cursors(expires_at);\n`;\n\nconst CURSOR_TTL_MS = 7 * 24 * 60 * 60 * 1000;\n\nexport async function createContinuationCursor(\n input: ContinuationCursor,\n): Promise<string> {\n const database = await openContinuationCursorDatabase();\n\n try {\n await cleanExpiredContinuationCursors(database);\n\n const now = Date.now();\n const cursorId = await createUniqueCursorId(database);\n\n await database.run(\n `\n INSERT INTO continuation_cursors (\n cursor_id, archive_key, archive_path, kind, payload_json, format,\n limit_value, created_at, expires_at, accessed_at\n )\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n `,\n [\n cursorId,\n input.archiveKey,\n input.archivePath,\n input.kind,\n JSON.stringify(createCursorPayload(input)),\n input.format,\n 1,\n now,\n now + CURSOR_TTL_MS,\n now,\n ],\n );\n\n return cursorId;\n } finally {\n await database.close();\n }\n}\n\nexport async function readContinuationCursor(\n cursorId: string,\n): Promise<ContinuationCursor> {\n const database = await openContinuationCursorDatabase();\n\n try {\n await cleanExpiredContinuationCursors(database);\n\n const record = await database.queryOne(\n `\n SELECT archive_key, archive_path, kind, payload_json, format\n FROM continuation_cursors\n WHERE cursor_id = ?\n `,\n [cursorId],\n (row) => ({\n archiveKey: getString(row, \"archive_key\"),\n archivePath: getString(row, \"archive_path\"),\n format: parseCursorFormat(getString(row, \"format\")),\n kind: getString(row, \"kind\"),\n payloadJSON: getString(row, \"payload_json\"),\n }),\n );\n\n if (record === undefined) {\n throw new Error(\n `Continuation cursor ${cursorId} was not found or has expired.`,\n );\n }\n\n await database.run(\n \"UPDATE continuation_cursors SET accessed_at = ? WHERE cursor_id = ?\",\n [Date.now(), cursorId],\n );\n\n return parseContinuationCursorRecord(record);\n } finally {\n await database.close();\n }\n}\n\nfunction createCursorPayload(input: ContinuationCursor): object {\n switch (input.kind) {\n case \"collection\":\n return {\n ...(input.backlinks === undefined\n ? {}\n : { backlinks: input.backlinks }),\n chapters: input.chapters,\n cursor: input.cursor,\n ...(input.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: input.evidenceLimit }),\n ids: input.ids,\n order: input.order,\n ...(input.sourceContext === undefined\n ? {}\n : { sourceContext: input.sourceContext }),\n ...(input.triplePattern === undefined\n ? {}\n : { triplePattern: input.triplePattern }),\n types: input.types,\n };\n case \"search\":\n return {\n ...(input.backlinks === undefined\n ? {}\n : { backlinks: input.backlinks }),\n cursor: input.cursor,\n ...(input.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: input.evidenceLimit }),\n ...(input.query === undefined ? {} : { query: input.query }),\n ...(input.sourceContext === undefined\n ? {}\n : { sourceContext: input.sourceContext }),\n ...(input.triplePattern === undefined\n ? {}\n : { triplePattern: input.triplePattern }),\n types: input.types,\n };\n case \"evidence\":\n return {\n cursor: input.cursor,\n order: input.order,\n ...(input.query === undefined ? {} : { query: input.query }),\n ...(input.sourceContext === undefined\n ? {}\n : { sourceContext: input.sourceContext }),\n targetUri: input.targetUri,\n };\n case \"related\":\n return {\n cursor: input.cursor,\n ...(input.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: input.evidenceLimit }),\n order: input.order,\n ...(input.query === undefined ? {} : { query: input.query }),\n ...(input.role === undefined ? {} : { role: input.role }),\n ...(input.sourceContext === undefined\n ? {}\n : { sourceContext: input.sourceContext }),\n targetUri: input.targetUri,\n };\n }\n}\n\nfunction parseContinuationCursorRecord(record: {\n readonly archiveKey: string;\n readonly archivePath: string;\n readonly format: \"json\" | \"jsonl\" | \"text\";\n readonly kind: string;\n readonly payloadJSON: string;\n}): ContinuationCursor {\n const payload = parsePayload(record.payloadJSON);\n\n if (record.kind === \"collection\") {\n return {\n archiveKey: record.archiveKey,\n archivePath: record.archivePath,\n ...getPayloadOptionalBoolean(payload, \"backlinks\"),\n chapters: getPayloadNumberArrayOrNull(payload, \"chapters\"),\n cursor: getPayloadString(payload, \"cursor\"),\n ...getPayloadOptionalPositiveInteger(payload, \"evidenceLimit\"),\n format: record.format,\n ids: getPayloadStringArrayOrNull(payload, \"ids\"),\n kind: \"collection\",\n order: getPayloadOrder(payload),\n ...getPayloadOptionalInteger(payload, \"sourceContext\", \"sourceContext\"),\n ...getPayloadOptionalTriplePattern(payload),\n types: getPayloadStringArrayOrNull(payload, \"types\"),\n };\n }\n\n if (record.kind === \"search\") {\n return {\n archiveKey: record.archiveKey,\n archivePath: record.archivePath,\n ...getPayloadOptionalBoolean(payload, \"backlinks\"),\n cursor: getPayloadString(payload, \"cursor\"),\n ...getPayloadOptionalPositiveInteger(payload, \"evidenceLimit\"),\n format: record.format,\n kind: \"search\",\n ...getPayloadOptionalString(payload, \"query\"),\n ...getPayloadOptionalInteger(payload, \"sourceContext\", \"sourceContext\"),\n ...getPayloadOptionalTriplePattern(payload),\n types: getPayloadStringArrayOrNull(payload, \"types\"),\n };\n }\n\n if (record.kind === \"evidence\") {\n return {\n archiveKey: record.archiveKey,\n archivePath: record.archivePath,\n cursor: getPayloadString(payload, \"cursor\"),\n format: record.format,\n kind: \"evidence\",\n order: getPayloadOrder(payload),\n ...getPayloadOptionalString(payload, \"query\"),\n ...getPayloadOptionalInteger(payload, \"sourceContext\", \"sourceContext\"),\n targetUri: getPayloadString(payload, \"targetUri\"),\n };\n }\n\n if (record.kind === \"related\") {\n return {\n archiveKey: record.archiveKey,\n archivePath: record.archivePath,\n cursor: getPayloadString(payload, \"cursor\"),\n ...getPayloadOptionalPositiveInteger(payload, \"evidenceLimit\"),\n format: record.format,\n kind: \"related\",\n order: getPayloadOrder(payload),\n ...getPayloadOptionalString(payload, \"query\"),\n ...getPayloadOptionalRelatedRole(payload),\n ...getPayloadOptionalInteger(payload, \"sourceContext\", \"sourceContext\"),\n targetUri: getPayloadString(payload, \"targetUri\"),\n };\n }\n\n throw new Error(`Invalid continuation cursor kind: ${record.kind}.`);\n}\n\nfunction parsePayload(value: string): Record<string, unknown> {\n const parsed: unknown = JSON.parse(value);\n\n if (typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed)) {\n return parsed as Record<string, unknown>;\n }\n\n throw new Error(\"Invalid continuation cursor payload.\");\n}\n\nfunction getPayloadString(\n payload: Readonly<Record<string, unknown>>,\n key: string,\n): string {\n const value = payload[key];\n\n if (typeof value === \"string\") {\n return value;\n }\n\n throw new Error(\"Invalid continuation cursor payload.\");\n}\n\nfunction getPayloadStringArrayOrNull(\n payload: Readonly<Record<string, unknown>>,\n key: string,\n): readonly string[] | null {\n const value = payload[key];\n\n if (value === null) {\n return null;\n }\n if (Array.isArray(value) && value.every((item) => typeof item === \"string\")) {\n return value;\n }\n\n throw new Error(\"Invalid continuation cursor payload.\");\n}\n\nfunction getPayloadOptionalString(\n payload: Readonly<Record<string, unknown>>,\n key: string,\n): { readonly query?: string } {\n const value = payload[key];\n\n if (value === undefined) {\n return {};\n }\n if (typeof value === \"string\") {\n return { query: value };\n }\n\n throw new Error(\"Invalid continuation cursor payload.\");\n}\n\nfunction getPayloadNumberArrayOrNull(\n payload: Readonly<Record<string, unknown>>,\n key: string,\n): readonly number[] | null {\n const value = payload[key];\n\n if (value === null) {\n return null;\n }\n if (Array.isArray(value)) {\n const numbers: number[] = [];\n\n for (const item of value) {\n if (typeof item !== \"number\" || !Number.isInteger(item)) {\n throw new Error(\"Invalid continuation cursor payload.\");\n }\n numbers.push(item);\n }\n\n return numbers;\n }\n\n throw new Error(\"Invalid continuation cursor payload.\");\n}\n\nfunction getPayloadOrder(\n payload: Readonly<Record<string, unknown>>,\n): \"doc-asc\" | \"doc-desc\" {\n const value = payload.order;\n\n if (value === \"doc-asc\" || value === \"doc-desc\") {\n return value;\n }\n\n throw new Error(\"Invalid continuation cursor payload.\");\n}\n\nfunction getPayloadOptionalPositiveInteger(\n payload: Readonly<Record<string, unknown>>,\n key: string,\n): { readonly evidenceLimit?: number } {\n const value = payload[key];\n\n if (value === undefined) {\n return {};\n }\n if (typeof value === \"number\" && Number.isInteger(value) && value > 0) {\n return { evidenceLimit: value };\n }\n\n throw new Error(\"Invalid continuation cursor payload.\");\n}\n\nfunction getPayloadOptionalInteger<K extends string>(\n payload: Readonly<Record<string, unknown>>,\n key: string,\n outputKey: K,\n): { readonly [P in K]?: number } {\n const value = payload[key];\n\n if (value === undefined) {\n return {};\n }\n if (typeof value === \"number\" && Number.isInteger(value) && value >= 0) {\n return { [outputKey]: value } as { readonly [P in K]?: number };\n }\n\n throw new Error(\"Invalid continuation cursor payload.\");\n}\n\nfunction getPayloadOptionalBoolean(\n payload: Readonly<Record<string, unknown>>,\n key: string,\n): { readonly backlinks?: boolean } {\n const value = payload[key];\n\n if (value === undefined) {\n return {};\n }\n if (typeof value === \"boolean\") {\n return { backlinks: value };\n }\n\n throw new Error(\"Invalid continuation cursor payload.\");\n}\n\nfunction getPayloadOptionalRelatedRole(\n payload: Readonly<Record<string, unknown>>,\n): { readonly role?: \"any\" | \"object\" | \"self\" | \"subject\" } {\n const value = payload.role;\n\n if (value === undefined) {\n return {};\n }\n if (\n value === \"any\" ||\n value === \"object\" ||\n value === \"self\" ||\n value === \"subject\"\n ) {\n return { role: value };\n }\n\n throw new Error(\"Invalid continuation cursor payload.\");\n}\n\nfunction getPayloadOptionalTriplePattern(\n payload: Readonly<Record<string, unknown>>,\n): {\n readonly triplePattern?: {\n readonly objectQid?: string;\n readonly predicate?: string;\n readonly subjectQid?: string;\n };\n} {\n const value = payload.triplePattern;\n\n if (value === undefined) {\n return {};\n }\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new Error(\"Invalid continuation cursor payload.\");\n }\n\n const pattern = value as Record<string, unknown>;\n const subjectQid = getOptionalPayloadStringProperty(pattern, \"subjectQid\");\n const predicate = getOptionalPayloadStringProperty(pattern, \"predicate\");\n const objectQid = getOptionalPayloadStringProperty(pattern, \"objectQid\");\n\n return {\n triplePattern: {\n ...(objectQid === undefined ? {} : { objectQid }),\n ...(predicate === undefined ? {} : { predicate }),\n ...(subjectQid === undefined ? {} : { subjectQid }),\n },\n };\n}\n\nfunction getOptionalPayloadStringProperty(\n payload: Readonly<Record<string, unknown>>,\n key: string,\n): string | undefined {\n const value = payload[key];\n\n if (value === undefined) {\n return undefined;\n }\n if (typeof value === \"string\") {\n return value;\n }\n\n throw new Error(\"Invalid continuation cursor payload.\");\n}\n\nasync function createUniqueCursorId(database: Database): Promise<string> {\n for (let attempt = 0; attempt < 10; attempt += 1) {\n const cursorId = `c_${randomBytes(6).toString(\"base64url\")}`;\n const existing = await database.queryOne(\n \"SELECT cursor_id FROM continuation_cursors WHERE cursor_id = ?\",\n [cursorId],\n (row) => getOptionalString(row, \"cursor_id\"),\n );\n\n if (existing === undefined) {\n return cursorId;\n }\n }\n\n throw new Error(\"Failed to create a unique continuation cursor.\");\n}\n\nasync function cleanExpiredContinuationCursors(\n database: Database,\n): Promise<void> {\n await database.run(\"DELETE FROM continuation_cursors WHERE expires_at < ?\", [\n Date.now(),\n ]);\n}\n\nasync function openContinuationCursorDatabase(): Promise<Database> {\n return await openSharedStateDatabase(\n join(getContinuationStateDirectoryPath(), \"continuation-cursors.sqlite\"),\n CONTINUATION_CURSOR_SCHEMA_SQL,\n );\n}\n\nfunction getContinuationStateDirectoryPath(): string {\n return resolveWikiGraphCacheDirectoryPath();\n}\n\nfunction parseCursorFormat(value: string): \"json\" | \"jsonl\" | \"text\" {\n if (value === \"json\" || value === \"jsonl\" || value === \"text\") {\n return value;\n }\n\n throw new Error(`Invalid continuation cursor format: ${value}.`);\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,29 @@
1
+ export { A as ArchiveBacklinkBucket, a as ArchiveBacklinks, b as ArchiveCollectionOptions, c as ArchiveCollectionResult, d as ArchiveCollectionType, e as ArchiveEvidence, f as ArchiveEvidenceItem, g as ArchiveFindEvidencePreview, h as ArchiveFindField, i as ArchiveFindFilterType, j as ArchiveFindHit, k as ArchiveFindObjectType, l as ArchiveFindOptions, m as ArchiveFindOrder, n as ArchiveFindPosition, o as ArchiveFindResult, p as ArchiveIndex, r as ArchiveListItem, s as ArchiveListKind, t as ArchiveNodeLabel, u as ArchiveNodeSourceFragment, v as ArchiveObjectType, w as ArchivePack, x as ArchivePage, y as ArchiveRelatedResult, z as ArchiveTriplePattern, O as clearDirtyArchiveSearchIndex, P as createArchiveSearchIndexFingerprint, U as findArchiveObjects, V as formatChapterId, W as formatEdgeId, X as formatNodeId, Y as formatSummaryId, Z as getArchiveIndex, _ as grepArchiveObjects, $ as isArchiveSearchIndexCurrent, a1 as listAllArchiveLinks, a2 as listArchiveCollection, a3 as listArchiveEvidence, a4 as listArchiveLinks, a5 as listArchiveObjects, a6 as listRelatedArchiveObjects, a7 as packArchiveContext, aa as readArchivePage, ab as readArchiveSearchIndexStatus, ac as readArchiveText, af as rebuildArchiveSearchIndex } from '../../index-B8NNnQ8P.js';
2
+ export { ContinuationCursor, createContinuationCursor, readContinuationCursor } from './continuation-cursor.js';
3
+ export { SearchSessionDescriptor, SearchSessionInput, SearchSessionPage, createSearchSession, deleteArchiveSearchSessions, readCachedSearchSessionPage, runSearchCacheGc } from './search-cache.js';
4
+ import '../../document/database.js';
5
+ import 'sqlite3';
6
+ import '../../document/document.js';
7
+ import '../../source/meta.js';
8
+ import 'zod';
9
+ import '../../source/toc.js';
10
+ import '../../source/types.js';
11
+ import '../../document/text-streams.js';
12
+ import '../../document/types.js';
13
+ import '../../document/stores.js';
14
+ import '../../wikipage/types.js';
15
+ import '../../facade/graph.js';
16
+ import '../../facade/chapter.js';
17
+ import '../../common/language.js';
18
+ import '../../common/llm-scope.js';
19
+ import '../../llm/client.js';
20
+ import '../../llm/context.js';
21
+ import '../../llm/cache.js';
22
+ import '../../llm/types.js';
23
+ import 'ai';
24
+ import '../../reader/types.js';
25
+ import '../../reader/attention/attention.js';
26
+ import '../../reader/chunk-batch/types.js';
27
+ import '../../reader/segment/types.js';
28
+ import '../../serial.js';
29
+ import '../../gc/types.js';
@@ -0,0 +1,63 @@
1
+ import {
2
+ findArchiveObjects,
3
+ formatChapterId,
4
+ formatEdgeId,
5
+ formatNodeId,
6
+ formatSummaryId,
7
+ getArchiveIndex,
8
+ grepArchiveObjects,
9
+ createArchiveSearchIndexFingerprint,
10
+ clearDirtyArchiveSearchIndex,
11
+ isArchiveSearchIndexCurrent,
12
+ readArchiveSearchIndexStatus,
13
+ listAllArchiveLinks,
14
+ listArchiveCollection,
15
+ listArchiveEvidence,
16
+ listArchiveLinks,
17
+ listArchiveObjects,
18
+ listRelatedArchiveObjects,
19
+ packArchiveContext,
20
+ readArchivePage,
21
+ readArchiveText,
22
+ rebuildArchiveSearchIndex
23
+ } from "./archive-view.js";
24
+ import {
25
+ createContinuationCursor,
26
+ readContinuationCursor
27
+ } from "./continuation-cursor.js";
28
+ import {
29
+ createSearchSession,
30
+ deleteArchiveSearchSessions,
31
+ readCachedSearchSessionPage,
32
+ runSearchCacheGc
33
+ } from "./search-cache.js";
34
+ export {
35
+ clearDirtyArchiveSearchIndex,
36
+ createArchiveSearchIndexFingerprint,
37
+ createContinuationCursor,
38
+ createSearchSession,
39
+ deleteArchiveSearchSessions,
40
+ findArchiveObjects,
41
+ formatChapterId,
42
+ formatEdgeId,
43
+ formatNodeId,
44
+ formatSummaryId,
45
+ getArchiveIndex,
46
+ grepArchiveObjects,
47
+ isArchiveSearchIndexCurrent,
48
+ listAllArchiveLinks,
49
+ listArchiveCollection,
50
+ listArchiveEvidence,
51
+ listArchiveLinks,
52
+ listArchiveObjects,
53
+ listRelatedArchiveObjects,
54
+ packArchiveContext,
55
+ readArchivePage,
56
+ readArchiveSearchIndexStatus,
57
+ readArchiveText,
58
+ readCachedSearchSessionPage,
59
+ readContinuationCursor,
60
+ rebuildArchiveSearchIndex,
61
+ runSearchCacheGc
62
+ };
63
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/archive/query/index.ts"],"sourcesContent":["export {\n findArchiveObjects,\n formatChapterId,\n formatEdgeId,\n formatNodeId,\n formatSummaryId,\n getArchiveIndex,\n grepArchiveObjects,\n createArchiveSearchIndexFingerprint,\n clearDirtyArchiveSearchIndex,\n isArchiveSearchIndexCurrent,\n readArchiveSearchIndexStatus,\n listAllArchiveLinks,\n listArchiveCollection,\n listArchiveEvidence,\n listArchiveLinks,\n listArchiveObjects,\n listRelatedArchiveObjects,\n packArchiveContext,\n readArchivePage,\n readArchiveText,\n rebuildArchiveSearchIndex,\n} from \"./archive-view.js\";\nexport type {\n ArchiveBacklinkBucket,\n ArchiveBacklinks,\n ArchiveCollectionOptions,\n ArchiveCollectionResult,\n ArchiveCollectionType,\n ArchiveEvidence,\n ArchiveEvidenceItem,\n ArchiveFindEvidencePreview,\n ArchiveFindField,\n ArchiveFindFilterType,\n ArchiveFindHit,\n ArchiveFindObjectType,\n ArchiveFindOptions,\n ArchiveFindOrder,\n ArchiveFindPosition,\n ArchiveFindResult,\n ArchiveIndex,\n ArchiveListItem,\n ArchiveListKind,\n ArchiveNodeLabel,\n ArchiveNodeSourceFragment,\n ArchiveObjectType,\n ArchivePack,\n ArchivePage,\n ArchiveRelatedResult,\n ArchiveTriplePattern,\n} from \"./archive-view.js\";\nexport {\n createContinuationCursor,\n readContinuationCursor,\n} from \"./continuation-cursor.js\";\nexport type { ContinuationCursor } from \"./continuation-cursor.js\";\nexport {\n createSearchSession,\n deleteArchiveSearchSessions,\n readCachedSearchSessionPage,\n runSearchCacheGc,\n} from \"./search-cache.js\";\nexport type {\n SearchSessionDescriptor,\n SearchSessionInput,\n SearchSessionPage,\n} from \"./search-cache.js\";\n"],"mappings":"AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AA6BP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
@@ -0,0 +1,22 @@
1
+ interface LexicalQuery {
2
+ readonly phrases: readonly string[];
3
+ readonly terms: readonly string[];
4
+ }
5
+ interface LexicalScore {
6
+ readonly matchCount: number;
7
+ readonly matchedTerms: readonly string[];
8
+ readonly missingTerms: readonly string[];
9
+ readonly score: number;
10
+ readonly snippetNeedle: string;
11
+ }
12
+ declare function createLexicalQuery(query: string): LexicalQuery | undefined;
13
+ declare function listLexicalQueryCandidateTerms(query: string): readonly string[];
14
+ declare function scoreLexicalText(value: string, query: LexicalQuery): LexicalScore | undefined;
15
+ declare function createMentionLexicalHits<T extends {
16
+ readonly surface: string;
17
+ }>(mentions: readonly T[], query: LexicalQuery): readonly {
18
+ readonly match: LexicalScore;
19
+ readonly mention: T;
20
+ }[];
21
+
22
+ export { type LexicalQuery, type LexicalScore, createLexicalQuery, createMentionLexicalHits, listLexicalQueryCandidateTerms, scoreLexicalText };