wiki-graph-core 0.3.1 → 0.4.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 (1700) hide show
  1. package/README.md +15 -0
  2. package/data/editor/text_compressor.jinja +17 -13
  3. package/data/help/commands/archive/next.jinja +7 -2
  4. package/data/help/commands/gc.jinja +2 -1
  5. package/data/help/commands/legacy/migrate.jinja +6 -1
  6. package/data/help/commands/legacy.jinja +3 -2
  7. package/data/help/commands/library-predicate.jinja +296 -0
  8. package/data/help/commands/library.jinja +235 -0
  9. package/data/help/commands/maintenance/chapter/add.jinja +3 -3
  10. package/data/help/commands/maintenance/chapter/list.jinja +4 -4
  11. package/data/help/commands/maintenance/chapter/move.jinja +4 -4
  12. package/data/help/commands/maintenance/chapter/remove.jinja +1 -1
  13. package/data/help/commands/maintenance/chapter/reset.jinja +1 -1
  14. package/data/help/commands/maintenance/chapter/set-source.jinja +2 -2
  15. package/data/help/commands/maintenance/chapter/set-summary.jinja +1 -1
  16. package/data/help/commands/maintenance/chapter/set-title.jinja +3 -3
  17. package/data/help/commands/maintenance/chapter/tree.jinja +6 -6
  18. package/data/help/commands/maintenance/chapter.jinja +10 -10
  19. package/data/help/commands/maintenance/meta.jinja +7 -7
  20. package/data/help/commands/maintenance/upgrade.jinja +35 -0
  21. package/data/help/commands/maintenance.jinja +23 -0
  22. package/data/help/commands/predicate.jinja +204 -28
  23. package/data/help/commands/root.jinja +10 -3
  24. package/data/help/commands/uri.jinja +165 -6
  25. package/data/help/topics/config.jinja +10 -3
  26. package/data/help/topics/library.jinja +87 -0
  27. package/data/help/topics/readiness.jinja +32 -2
  28. package/data/help/topics/recipe.jinja +42 -17
  29. package/data/help/topics/runtime.jinja +20 -3
  30. package/data/help/topics/uri.jinja +51 -25
  31. package/dist/api/app.d.ts +87 -0
  32. package/dist/api/app.js +137 -0
  33. package/dist/api/app.js.map +1 -0
  34. package/dist/api/chapter/advance.d.ts +36 -0
  35. package/dist/api/chapter/advance.js +171 -0
  36. package/dist/api/chapter/advance.js.map +1 -0
  37. package/dist/api/chapter/details.d.ts +25 -0
  38. package/dist/api/chapter/details.js +17 -0
  39. package/dist/api/chapter/details.js.map +1 -0
  40. package/dist/api/chapter/entries.d.ts +41 -0
  41. package/dist/api/chapter/entries.js +216 -0
  42. package/dist/api/chapter/entries.js.map +1 -0
  43. package/dist/api/chapter/generate.d.ts +42 -0
  44. package/dist/api/chapter/generate.js +61 -0
  45. package/dist/api/chapter/generate.js.map +1 -0
  46. package/dist/api/chapter/index.d.ts +43 -0
  47. package/dist/api/chapter/index.js +11 -0
  48. package/dist/api/chapter/index.js.map +1 -0
  49. package/dist/api/chapter/manage.d.ts +53 -0
  50. package/dist/api/chapter/manage.js +185 -0
  51. package/dist/api/chapter/manage.js.map +1 -0
  52. package/dist/api/chapter/options.d.ts +51 -0
  53. package/dist/api/chapter/options.js +11 -0
  54. package/dist/api/chapter/options.js.map +1 -0
  55. package/dist/api/chapter/parse.d.ts +13 -0
  56. package/dist/api/chapter/parse.js +16 -0
  57. package/dist/api/chapter/parse.js.map +1 -0
  58. package/dist/api/chapter/tree.d.ts +61 -0
  59. package/dist/api/chapter/tree.js +387 -0
  60. package/dist/api/chapter/tree.js.map +1 -0
  61. package/dist/api/chapter/types.d.ts +104 -0
  62. package/dist/api/chapter/types.js +5 -0
  63. package/dist/api/chapter/types.js.map +1 -0
  64. package/dist/api/chapter-build/index.d.ts +42 -0
  65. package/dist/api/chapter-build/index.js +3 -0
  66. package/dist/api/chapter-build/index.js.map +1 -0
  67. package/dist/api/chapter-build/types.d.ts +37 -0
  68. package/dist/api/digest.d.ts +67 -0
  69. package/dist/api/digest.js +171 -0
  70. package/dist/api/digest.js.map +1 -0
  71. package/dist/api/graph.d.ts +24 -0
  72. package/dist/api/graph.js +2 -0
  73. package/dist/api/graph.js.map +1 -0
  74. package/dist/api/import.d.ts +62 -0
  75. package/dist/api/import.js +269 -0
  76. package/dist/api/import.js.map +1 -0
  77. package/dist/api/index.d.ts +91 -0
  78. package/dist/api/index.js +189 -0
  79. package/dist/api/index.js.map +1 -0
  80. package/dist/api/knowledge-graph-build/index.d.ts +40 -0
  81. package/dist/api/knowledge-graph-build/index.js +2 -0
  82. package/dist/api/knowledge-graph-build/index.js.map +1 -0
  83. package/dist/api/knowledge-graph-build/types.d.ts +13 -0
  84. package/dist/api/llm-sampling.d.ts +11 -0
  85. package/dist/api/llm-sampling.js +58 -0
  86. package/dist/api/llm-sampling.js.map +1 -0
  87. package/dist/api/prompts.d.ts +1 -0
  88. package/dist/api/prompts.js +2 -0
  89. package/dist/api/prompts.js.map +1 -0
  90. package/dist/api/wiki-graph-archive.d.ts +42 -0
  91. package/dist/api/wiki-graph-archive.js +130 -0
  92. package/dist/api/wiki-graph-archive.js.map +1 -0
  93. package/dist/core-Cv8a8viI.d.ts +85 -0
  94. package/dist/document/chapter/index.d.ts +26 -0
  95. package/dist/document/chapter/index.js +23 -0
  96. package/dist/document/chapter/index.js.map +1 -0
  97. package/dist/document/chapter/path.d.ts +14 -0
  98. package/dist/document/chapter/path.js +133 -0
  99. package/dist/document/chapter/path.js.map +1 -0
  100. package/dist/document/chapter/query.d.ts +33 -0
  101. package/dist/document/chapter/query.js +83 -0
  102. package/dist/document/chapter/query.js.map +1 -0
  103. package/dist/document/chapter/stage.d.ts +28 -0
  104. package/dist/document/chapter/stage.js +13 -0
  105. package/dist/document/chapter/stage.js.map +1 -0
  106. package/dist/document/chapter/toc.d.ts +33 -0
  107. package/dist/document/chapter/toc.js +213 -0
  108. package/dist/document/chapter/toc.js.map +1 -0
  109. package/dist/document/chapter/tree.d.ts +20 -0
  110. package/dist/document/chapter/tree.js +48 -0
  111. package/dist/document/chapter/tree.js.map +1 -0
  112. package/dist/document/chapter/types.d.ts +31 -0
  113. package/dist/document/chapter/types.js +10 -0
  114. package/dist/document/chapter/types.js.map +1 -0
  115. package/dist/document/directory/context.d.ts +25 -0
  116. package/dist/document/directory/context.js +54 -0
  117. package/dist/document/directory/context.js.map +1 -0
  118. package/dist/document/directory/core.d.ts +25 -0
  119. package/dist/document/directory/core.js +382 -0
  120. package/dist/document/directory/core.js.map +1 -0
  121. package/dist/document/directory/file-store.d.ts +27 -0
  122. package/dist/document/directory/file-store.js +48 -0
  123. package/dist/document/directory/file-store.js.map +1 -0
  124. package/dist/document/directory/files.d.ts +53 -0
  125. package/dist/document/directory/files.js +71 -0
  126. package/dist/document/directory/files.js.map +1 -0
  127. package/dist/document/directory/index.d.ts +26 -0
  128. package/dist/document/directory/index.js +4 -0
  129. package/dist/document/directory/index.js.map +1 -0
  130. package/dist/document/directory/search-index.d.ts +32 -0
  131. package/dist/document/directory/search-index.js +154 -0
  132. package/dist/document/directory/search-index.js.map +1 -0
  133. package/dist/document/directory/serial-cleanup.d.ts +47 -0
  134. package/dist/document/directory/serial-cleanup.js +178 -0
  135. package/dist/document/directory/serial-cleanup.js.map +1 -0
  136. package/dist/document/directory/toc.d.ts +6 -0
  137. package/dist/document/directory/toc.js +14 -0
  138. package/dist/document/directory/toc.js.map +1 -0
  139. package/dist/document/directory/types.d.ts +105 -0
  140. package/dist/document/fragment-backed.d.ts +27 -0
  141. package/dist/document/fragment-backed.js +26 -0
  142. package/dist/document/fragment-backed.js.map +1 -0
  143. package/dist/document/fragments/core.d.ts +18 -0
  144. package/dist/document/fragments/core.js +68 -0
  145. package/dist/document/fragments/core.js.map +1 -0
  146. package/dist/document/fragments/draft.d.ts +16 -0
  147. package/dist/document/fragments/draft.js +57 -0
  148. package/dist/document/fragments/draft.js.map +1 -0
  149. package/dist/document/fragments/file-access.d.ts +7 -0
  150. package/dist/document/fragments/file-access.js +28 -0
  151. package/dist/document/fragments/file-access.js.map +1 -0
  152. package/dist/document/fragments/file.d.ts +7 -0
  153. package/dist/document/fragments/file.js +55 -0
  154. package/dist/document/fragments/file.js.map +1 -0
  155. package/dist/document/fragments/index.d.ts +5 -0
  156. package/dist/document/fragments/index.js +5 -0
  157. package/dist/document/fragments/index.js.map +1 -0
  158. package/dist/document/fragments/sentence.d.ts +5 -0
  159. package/dist/document/fragments/sentence.js +14 -0
  160. package/dist/document/fragments/sentence.js.map +1 -0
  161. package/dist/document/fragments/serial.d.ts +16 -0
  162. package/dist/document/fragments/serial.js +187 -0
  163. package/dist/document/fragments/serial.js.map +1 -0
  164. package/dist/document/fragments/types.d.ts +37 -0
  165. package/dist/document/fragments/types.js +9 -0
  166. package/dist/document/fragments/types.js.map +1 -0
  167. package/dist/document/home-schema-upgrade.d.ts +5 -0
  168. package/dist/document/home-schema-upgrade.js +529 -0
  169. package/dist/document/home-schema-upgrade.js.map +1 -0
  170. package/dist/document/index.d.ts +27 -8
  171. package/dist/document/index.js +10 -4
  172. package/dist/document/index.js.map +1 -1
  173. package/dist/document/schema.d.ts +3 -2
  174. package/dist/document/schema.js +24 -11
  175. package/dist/document/schema.js.map +1 -1
  176. package/dist/document/shared-state-database.js +27 -3
  177. package/dist/document/shared-state-database.js.map +1 -1
  178. package/dist/document/stores/chunk.d.ts +21 -0
  179. package/dist/document/stores/chunk.js +299 -0
  180. package/dist/document/stores/chunk.js.map +1 -0
  181. package/dist/document/stores/fragment-group.d.ts +16 -0
  182. package/dist/document/stores/fragment-group.js +77 -0
  183. package/dist/document/stores/fragment-group.js.map +1 -0
  184. package/dist/document/stores/graph-build-parameter.d.ts +17 -0
  185. package/dist/document/stores/graph-build-parameter.js +62 -0
  186. package/dist/document/stores/graph-build-parameter.js.map +1 -0
  187. package/dist/document/stores/helpers.d.ts +22 -0
  188. package/dist/document/stores/helpers.js +115 -0
  189. package/dist/document/stores/helpers.js.map +1 -0
  190. package/dist/document/stores/index.d.ts +15 -0
  191. package/dist/document/stores/index.js +23 -0
  192. package/dist/document/stores/index.js.map +1 -0
  193. package/dist/document/stores/mention-link.d.ts +32 -0
  194. package/dist/document/stores/mention-link.js +287 -0
  195. package/dist/document/stores/mention-link.js.map +1 -0
  196. package/dist/document/stores/mention.d.ts +31 -0
  197. package/dist/document/stores/mention.js +238 -0
  198. package/dist/document/stores/mention.js.map +1 -0
  199. package/dist/document/stores/object-metadata.d.ts +19 -0
  200. package/dist/document/stores/object-metadata.js +148 -0
  201. package/dist/document/stores/object-metadata.js.map +1 -0
  202. package/dist/document/stores/reading-edge.d.ts +17 -0
  203. package/dist/document/stores/reading-edge.js +80 -0
  204. package/dist/document/stores/reading-edge.js.map +1 -0
  205. package/dist/document/stores/serial.d.ts +29 -0
  206. package/dist/document/stores/serial.js +296 -0
  207. package/dist/document/stores/serial.js.map +1 -0
  208. package/dist/document/stores/snake/chunk.d.ts +14 -0
  209. package/dist/document/stores/snake/chunk.js +48 -0
  210. package/dist/document/stores/snake/chunk.js.map +1 -0
  211. package/dist/document/stores/snake/core.d.ts +15 -0
  212. package/dist/document/stores/snake/core.js +112 -0
  213. package/dist/document/stores/snake/core.js.map +1 -0
  214. package/dist/document/stores/snake/edge.d.ts +16 -0
  215. package/dist/document/stores/snake/edge.js +86 -0
  216. package/dist/document/stores/snake/edge.js.map +1 -0
  217. package/dist/document/stores/snake/index.d.ts +7 -0
  218. package/dist/document/stores/snake/index.js +4 -0
  219. package/dist/document/stores/snake/index.js.map +1 -0
  220. package/dist/document/stores/types.d.ts +95 -0
  221. package/dist/document/text-streams/core.d.ts +17 -0
  222. package/dist/document/text-streams/core.js +45 -0
  223. package/dist/document/text-streams/core.js.map +1 -0
  224. package/dist/document/text-streams/draft.d.ts +20 -0
  225. package/dist/document/text-streams/draft.js +70 -0
  226. package/dist/document/text-streams/draft.js.map +1 -0
  227. package/dist/document/text-streams/file-access.d.ts +6 -0
  228. package/dist/document/text-streams/file-access.js +31 -0
  229. package/dist/document/text-streams/file-access.js.map +1 -0
  230. package/dist/document/text-streams/index.d.ts +7 -0
  231. package/dist/document/text-streams/index.js +5 -0
  232. package/dist/document/text-streams/index.js.map +1 -0
  233. package/dist/document/text-streams/sentence.d.ts +13 -0
  234. package/dist/document/text-streams/sentence.js +77 -0
  235. package/dist/document/text-streams/sentence.js.map +1 -0
  236. package/dist/document/text-streams/serial.d.ts +24 -0
  237. package/dist/document/text-streams/serial.js +324 -0
  238. package/dist/document/text-streams/serial.js.map +1 -0
  239. package/dist/document/text-streams/types.d.ts +55 -0
  240. package/dist/document/text-streams/types.js +10 -0
  241. package/dist/document/text-streams/types.js.map +1 -0
  242. package/dist/external/guaranteed/classifier.js.map +1 -0
  243. package/dist/external/guaranteed/errors.js.map +1 -0
  244. package/dist/external/guaranteed/index.js.map +1 -0
  245. package/dist/external/guaranteed/request.js.map +1 -0
  246. package/dist/external/guaranteed/response.js.map +1 -0
  247. package/dist/external/llm/cache.js +35 -0
  248. package/dist/external/llm/cache.js.map +1 -0
  249. package/dist/external/llm/client/core.d.ts +26 -0
  250. package/dist/external/llm/client/core.js +321 -0
  251. package/dist/external/llm/client/core.js.map +1 -0
  252. package/dist/external/llm/client/files.d.ts +6 -0
  253. package/dist/external/llm/client/files.js +29 -0
  254. package/dist/external/llm/client/files.js.map +1 -0
  255. package/dist/external/llm/client/generation.d.ts +16 -0
  256. package/dist/external/llm/client/generation.js +35 -0
  257. package/dist/external/llm/client/generation.js.map +1 -0
  258. package/dist/external/llm/client/index.d.ts +5 -0
  259. package/dist/external/llm/client/index.js +5 -0
  260. package/dist/external/llm/client/index.js.map +1 -0
  261. package/dist/external/llm/client/log.d.ts +22 -0
  262. package/dist/external/llm/client/log.js +106 -0
  263. package/dist/external/llm/client/log.js.map +1 -0
  264. package/dist/external/llm/client/model.d.ts +10 -0
  265. package/dist/external/llm/client/model.js +26 -0
  266. package/dist/external/llm/client/model.js.map +1 -0
  267. package/dist/external/llm/client/retry.d.ts +4 -0
  268. package/dist/external/llm/client/retry.js +91 -0
  269. package/dist/external/llm/client/retry.js.map +1 -0
  270. package/dist/external/llm/context.js +78 -0
  271. package/dist/external/llm/context.js.map +1 -0
  272. package/dist/external/llm/errors.js.map +1 -0
  273. package/dist/external/llm/index.d.ts +7 -0
  274. package/dist/external/llm/index.js +17 -0
  275. package/dist/external/llm/index.js.map +1 -0
  276. package/dist/external/llm/request-log.js +35 -0
  277. package/dist/external/llm/request-log.js.map +1 -0
  278. package/dist/external/llm/sampling.js.map +1 -0
  279. package/dist/external/wikimatch/enrichment.d.ts +15 -0
  280. package/dist/external/wikimatch/enrichment.js +61 -0
  281. package/dist/external/wikimatch/enrichment.js.map +1 -0
  282. package/dist/external/wikimatch/index.d.ts +19 -0
  283. package/dist/external/wikimatch/index.js +66 -0
  284. package/dist/external/wikimatch/index.js.map +1 -0
  285. package/dist/external/wikimatch/option-narrowing.d.ts +19 -0
  286. package/dist/external/wikimatch/option-narrowing.js.map +1 -0
  287. package/dist/external/wikimatch/options.d.ts +16 -0
  288. package/dist/external/wikimatch/options.js +154 -0
  289. package/dist/external/wikimatch/options.js.map +1 -0
  290. package/dist/external/wikimatch/policy-judge.d.ts +19 -0
  291. package/dist/external/wikimatch/policy-judge.js +431 -0
  292. package/dist/external/wikimatch/policy-judge.js.map +1 -0
  293. package/dist/external/wikimatch/range-suppression.js.map +1 -0
  294. package/dist/external/wikimatch/surface/index.d.ts +10 -0
  295. package/dist/external/wikimatch/surface/index.js +3 -0
  296. package/dist/external/wikimatch/surface/index.js.map +1 -0
  297. package/dist/external/wikimatch/surface/screening.d.ts +18 -0
  298. package/dist/external/wikimatch/surface/screening.js +168 -0
  299. package/dist/external/wikimatch/surface/screening.js.map +1 -0
  300. package/dist/external/wikimatch/surface/window.d.ts +8 -0
  301. package/dist/external/wikimatch/surface/window.js +44 -0
  302. package/dist/external/wikimatch/surface/window.js.map +1 -0
  303. package/dist/external/wikimatch/types.d.ts +153 -0
  304. package/dist/external/wikimatch/wikispine.d.ts +45 -0
  305. package/dist/external/wikimatch/wikispine.js.map +1 -0
  306. package/dist/external/wikimatch/window.d.ts +8 -0
  307. package/dist/external/wikimatch/window.js.map +1 -0
  308. package/dist/external/wikimatch/words.js.map +1 -0
  309. package/dist/external/wikipage/cache.d.ts +20 -0
  310. package/dist/external/wikipage/cache.js +442 -0
  311. package/dist/external/wikipage/cache.js.map +1 -0
  312. package/dist/external/wikipage/fetch-log.js +146 -0
  313. package/dist/external/wikipage/fetch-log.js.map +1 -0
  314. package/dist/external/wikipage/index.d.ts +15 -0
  315. package/dist/external/wikipage/index.js +17 -0
  316. package/dist/external/wikipage/index.js.map +1 -0
  317. package/dist/external/wikipage/normalizer.d.ts +16 -0
  318. package/dist/external/wikipage/normalizer.js +188 -0
  319. package/dist/external/wikipage/normalizer.js.map +1 -0
  320. package/dist/external/wikipage/rate-limiter.js.map +1 -0
  321. package/dist/external/wikipage/resolver.d.ts +22 -0
  322. package/dist/external/wikipage/resolver.js +359 -0
  323. package/dist/external/wikipage/resolver.js.map +1 -0
  324. package/dist/external/wikipage/types.d.ts +118 -0
  325. package/dist/external/wikipage/wikimedia-client/core.d.ts +13 -0
  326. package/dist/external/wikipage/wikimedia-client/core.js +207 -0
  327. package/dist/external/wikipage/wikimedia-client/core.js.map +1 -0
  328. package/dist/external/wikipage/wikimedia-client/html.d.ts +7 -0
  329. package/dist/external/wikipage/wikimedia-client/html.js +136 -0
  330. package/dist/external/wikipage/wikimedia-client/html.js.map +1 -0
  331. package/dist/external/wikipage/wikimedia-client/index.d.ts +5 -0
  332. package/dist/external/wikipage/wikimedia-client/index.js +4 -0
  333. package/dist/external/wikipage/wikimedia-client/index.js.map +1 -0
  334. package/dist/external/wikipage/wikimedia-client/json.d.ts +7 -0
  335. package/dist/external/wikipage/wikimedia-client/json.js +27 -0
  336. package/dist/external/wikipage/wikimedia-client/json.js.map +1 -0
  337. package/dist/external/wikipage/wikimedia-client/request.d.ts +12 -0
  338. package/dist/external/wikipage/wikimedia-client/request.js +51 -0
  339. package/dist/external/wikipage/wikimedia-client/request.js.map +1 -0
  340. package/dist/external/wikipage/wikimedia-client/wiki.d.ts +54 -0
  341. package/dist/external/wikipage/wikimedia-client/wiki.js +28 -0
  342. package/dist/external/wikipage/wikimedia-client/wiki.js.map +1 -0
  343. package/dist/gc.cjs +8188 -8373
  344. package/dist/gc.cjs.map +1 -1
  345. package/dist/gc.d.cts +23 -3
  346. package/dist/gc.d.ts +2 -2
  347. package/dist/gc.js +1 -1
  348. package/dist/gc.js.map +1 -1
  349. package/dist/graph/evidence-selection/anchor/index.d.ts +4 -0
  350. package/dist/graph/evidence-selection/anchor/index.js +3 -0
  351. package/dist/graph/evidence-selection/anchor/index.js.map +1 -0
  352. package/dist/graph/evidence-selection/anchor/resolver/index.d.ts +38 -0
  353. package/dist/graph/evidence-selection/anchor/resolver/index.js +418 -0
  354. package/dist/graph/evidence-selection/anchor/resolver/index.js.map +1 -0
  355. package/dist/graph/evidence-selection/anchor/resolver/matcher.d.ts +8 -0
  356. package/dist/graph/evidence-selection/anchor/resolver/matcher.js +178 -0
  357. package/dist/graph/evidence-selection/anchor/resolver/matcher.js.map +1 -0
  358. package/dist/graph/evidence-selection/anchor/resolver/parser.d.ts +7 -0
  359. package/dist/graph/evidence-selection/anchor/resolver/parser.js +91 -0
  360. package/dist/graph/evidence-selection/anchor/resolver/parser.js.map +1 -0
  361. package/dist/graph/evidence-selection/anchor/resolver/scoring.d.ts +20 -0
  362. package/dist/graph/evidence-selection/anchor/resolver/scoring.js +119 -0
  363. package/dist/graph/evidence-selection/anchor/resolver/scoring.js.map +1 -0
  364. package/dist/graph/evidence-selection/anchor/resolver/types.d.ts +15 -0
  365. package/dist/graph/evidence-selection/anchor/resolver/types.js +17 -0
  366. package/dist/graph/evidence-selection/anchor/resolver/types.js.map +1 -0
  367. package/dist/graph/evidence-selection/anchor/types.d.ts +27 -0
  368. package/dist/graph/evidence-selection/index.d.ts +9 -0
  369. package/dist/graph/evidence-selection/index.js +32 -0
  370. package/dist/graph/evidence-selection/index.js.map +1 -0
  371. package/dist/graph/evidence-selection/prompt.js.map +1 -0
  372. package/dist/graph/evidence-selection/quote-score.js.map +1 -0
  373. package/dist/graph/evidence-selection/resolver.js +303 -0
  374. package/dist/graph/evidence-selection/resolver.js.map +1 -0
  375. package/dist/graph/evidence-selection/text.js.map +1 -0
  376. package/dist/graph/knowledge-build/artifact-io.d.ts +12 -0
  377. package/dist/graph/knowledge-build/artifact-io.js +151 -0
  378. package/dist/graph/knowledge-build/artifact-io.js.map +1 -0
  379. package/dist/graph/knowledge-build/artifact.d.ts +17 -0
  380. package/dist/graph/knowledge-build/artifact.js +66 -0
  381. package/dist/graph/knowledge-build/artifact.js.map +1 -0
  382. package/dist/graph/knowledge-build/candidates.d.ts +24 -0
  383. package/dist/graph/knowledge-build/candidates.js +60 -0
  384. package/dist/graph/knowledge-build/candidates.js.map +1 -0
  385. package/dist/graph/knowledge-build/commit.d.ts +39 -0
  386. package/dist/graph/knowledge-build/commit.js +52 -0
  387. package/dist/graph/knowledge-build/commit.js.map +1 -0
  388. package/dist/graph/knowledge-build/constants.d.ts +6 -0
  389. package/dist/graph/knowledge-build/constants.js +11 -0
  390. package/dist/graph/knowledge-build/constants.js.map +1 -0
  391. package/dist/graph/knowledge-build/fragments.d.ts +33 -0
  392. package/dist/graph/knowledge-build/fragments.js +36 -0
  393. package/dist/graph/knowledge-build/fragments.js.map +1 -0
  394. package/dist/graph/knowledge-build/generate.d.ts +39 -0
  395. package/dist/graph/knowledge-build/generate.js +128 -0
  396. package/dist/graph/knowledge-build/generate.js.map +1 -0
  397. package/dist/graph/knowledge-build/grounding-runner.d.ts +23 -0
  398. package/dist/graph/knowledge-build/grounding-runner.js +90 -0
  399. package/dist/graph/knowledge-build/grounding-runner.js.map +1 -0
  400. package/dist/graph/knowledge-build/grounding.d.ts +19 -0
  401. package/dist/graph/knowledge-build/grounding.js +158 -0
  402. package/dist/graph/knowledge-build/grounding.js.map +1 -0
  403. package/dist/graph/knowledge-build/index.d.ts +40 -0
  404. package/dist/graph/knowledge-build/index.js +8 -0
  405. package/dist/graph/knowledge-build/index.js.map +1 -0
  406. package/dist/graph/knowledge-build/mentions.d.ts +25 -0
  407. package/dist/graph/knowledge-build/mentions.js +66 -0
  408. package/dist/graph/knowledge-build/mentions.js.map +1 -0
  409. package/dist/graph/knowledge-build/parameter.d.ts +19 -0
  410. package/dist/graph/knowledge-build/parameter.js +14 -0
  411. package/dist/graph/knowledge-build/parameter.js.map +1 -0
  412. package/dist/graph/knowledge-build/progress.d.ts +8 -0
  413. package/dist/graph/knowledge-build/progress.js +45 -0
  414. package/dist/graph/knowledge-build/progress.js.map +1 -0
  415. package/dist/graph/knowledge-build/relations.d.ts +22 -0
  416. package/dist/graph/knowledge-build/relations.js +118 -0
  417. package/dist/graph/knowledge-build/relations.js.map +1 -0
  418. package/dist/graph/knowledge-build/request.d.ts +8 -0
  419. package/dist/graph/knowledge-build/request.js +19 -0
  420. package/dist/graph/knowledge-build/request.js.map +1 -0
  421. package/dist/graph/knowledge-build/snapshot.d.ts +38 -0
  422. package/dist/graph/knowledge-build/snapshot.js +18 -0
  423. package/dist/graph/knowledge-build/snapshot.js.map +1 -0
  424. package/dist/graph/knowledge-build/types.d.ts +46 -0
  425. package/dist/graph/reading-build/artifact.d.ts +42 -0
  426. package/dist/graph/reading-build/artifact.js +162 -0
  427. package/dist/graph/reading-build/artifact.js.map +1 -0
  428. package/dist/graph/reading-build/copy.d.ts +28 -0
  429. package/dist/graph/reading-build/copy.js +65 -0
  430. package/dist/graph/reading-build/copy.js.map +1 -0
  431. package/dist/graph/reading-build/index.d.ts +39 -0
  432. package/dist/graph/reading-build/index.js +4 -0
  433. package/dist/graph/reading-build/index.js.map +1 -0
  434. package/dist/graph/reading-build/input.d.ts +32 -0
  435. package/dist/graph/reading-build/input.js +19 -0
  436. package/dist/graph/reading-build/input.js.map +1 -0
  437. package/dist/graph/reading-build/options.d.ts +47 -0
  438. package/dist/graph/reading-build/options.js +20 -0
  439. package/dist/graph/reading-build/options.js.map +1 -0
  440. package/dist/graph/reading-build/source-fragments.d.ts +15 -0
  441. package/dist/graph/reading-build/source-fragments.js +36 -0
  442. package/dist/graph/reading-build/source-fragments.js.map +1 -0
  443. package/dist/graph/reading-build/types.d.ts +57 -0
  444. package/dist/graph/reading.d.ts +73 -0
  445. package/dist/graph/reading.js +203 -0
  446. package/dist/graph/reading.js.map +1 -0
  447. package/dist/graph/topology/core.d.ts +42 -0
  448. package/dist/graph/topology/core.js +348 -0
  449. package/dist/graph/topology/core.js.map +1 -0
  450. package/dist/graph/topology/grouping.d.ts +13 -0
  451. package/dist/graph/topology/grouping.js.map +1 -0
  452. package/dist/graph/topology/index.d.ts +34 -0
  453. package/dist/graph/topology/index.js +5 -0
  454. package/dist/graph/topology/index.js.map +1 -0
  455. package/dist/graph/topology/resource-segmentation.d.ts +11 -0
  456. package/dist/graph/topology/resource-segmentation.js.map +1 -0
  457. package/dist/graph/topology/segment-incision.d.ts +16 -0
  458. package/dist/graph/topology/segment-incision.js.map +1 -0
  459. package/dist/graph/topology/snake/compare.d.ts +8 -0
  460. package/dist/graph/topology/snake/compare.js +29 -0
  461. package/dist/graph/topology/snake/compare.js.map +1 -0
  462. package/dist/graph/topology/snake/components.d.ts +12 -0
  463. package/dist/graph/topology/snake/components.js +80 -0
  464. package/dist/graph/topology/snake/components.js.map +1 -0
  465. package/dist/graph/topology/snake/constants.d.ts +7 -0
  466. package/dist/graph/topology/snake/constants.js +13 -0
  467. package/dist/graph/topology/snake/constants.js.map +1 -0
  468. package/dist/graph/topology/snake/detect.d.ts +9 -0
  469. package/dist/graph/topology/snake/detect.js +63 -0
  470. package/dist/graph/topology/snake/detect.js.map +1 -0
  471. package/dist/graph/topology/snake/detector.d.ts +3 -0
  472. package/dist/graph/topology/snake/detector.js +7 -0
  473. package/dist/graph/topology/snake/detector.js.map +1 -0
  474. package/dist/graph/topology/snake/fingerprints.d.ts +7 -0
  475. package/dist/graph/topology/snake/fingerprints.js +86 -0
  476. package/dist/graph/topology/snake/fingerprints.js.map +1 -0
  477. package/dist/graph/topology/snake/graph-builder.d.ts +14 -0
  478. package/dist/graph/topology/snake/graph-builder.js +76 -0
  479. package/dist/graph/topology/snake/graph-builder.js.map +1 -0
  480. package/dist/graph/topology/snake/graph.d.ts +7 -0
  481. package/dist/graph/topology/snake/graph.js +105 -0
  482. package/dist/graph/topology/snake/graph.js.map +1 -0
  483. package/dist/graph/topology/snake/index.d.ts +4 -0
  484. package/dist/graph/topology/snake/index.js +3 -0
  485. package/dist/graph/topology/snake/index.js.map +1 -0
  486. package/dist/graph/topology/snake/merge.d.ts +6 -0
  487. package/dist/graph/topology/snake/merge.js +174 -0
  488. package/dist/graph/topology/snake/merge.js.map +1 -0
  489. package/dist/graph/topology/snake/records.d.ts +12 -0
  490. package/dist/graph/topology/snake/records.js +35 -0
  491. package/dist/graph/topology/snake/records.js.map +1 -0
  492. package/dist/graph/topology/snake/types.d.ts +23 -0
  493. package/dist/graph/topology/snake/types.js +1 -0
  494. package/dist/graph/topology/snake/weights.d.ts +3 -0
  495. package/dist/graph/topology/snake/weights.js +17 -0
  496. package/dist/graph/topology/snake/weights.js.map +1 -0
  497. package/dist/graph/topology/weights.d.ts +10 -0
  498. package/dist/graph/topology/weights.js +84 -0
  499. package/dist/graph/topology/weights.js.map +1 -0
  500. package/dist/graph/wikilink/index.d.ts +12 -0
  501. package/dist/graph/wikilink/index.js.map +1 -0
  502. package/dist/graph/wikilink/relation-discovery.d.ts +33 -0
  503. package/dist/graph/wikilink/relation-discovery.js +477 -0
  504. package/dist/graph/wikilink/relation-discovery.js.map +1 -0
  505. package/dist/graph/wikilink/types.d.ts +25 -0
  506. package/dist/graph/wikilink/types.js +1 -0
  507. package/dist/graph/wikilink/window.d.ts +9 -0
  508. package/dist/graph/wikilink/window.js.map +1 -0
  509. package/dist/index.cjs +37880 -29183
  510. package/dist/index.cjs.map +1 -1
  511. package/dist/index.d.cts +1657 -1421
  512. package/dist/index.d.ts +127 -72
  513. package/dist/index.js +333 -27
  514. package/dist/index.js.map +1 -1
  515. package/dist/library/index.d.ts +38 -0
  516. package/dist/library/index.js +6 -0
  517. package/dist/library/index.js.map +1 -0
  518. package/dist/library/lock.d.ts +9 -0
  519. package/dist/library/lock.js +121 -0
  520. package/dist/library/lock.js.map +1 -0
  521. package/dist/library/membership.d.ts +51 -0
  522. package/dist/library/membership.js +799 -0
  523. package/dist/library/membership.js.map +1 -0
  524. package/dist/library/query-helpers.d.ts +45 -0
  525. package/dist/library/query-helpers.js +45 -0
  526. package/dist/library/query-helpers.js.map +1 -0
  527. package/dist/library/query.d.ts +45 -0
  528. package/dist/library/query.js +422 -0
  529. package/dist/library/query.js.map +1 -0
  530. package/dist/library/registry.d.ts +39 -0
  531. package/dist/library/registry.js +591 -0
  532. package/dist/library/registry.js.map +1 -0
  533. package/dist/library/search-index.d.ts +87 -0
  534. package/dist/library/search-index.js +473 -0
  535. package/dist/library/search-index.js.map +1 -0
  536. package/dist/library/search-query.d.ts +32 -0
  537. package/dist/library/search-query.js +418 -0
  538. package/dist/library/search-query.js.map +1 -0
  539. package/dist/library/segments.d.ts +3 -0
  540. package/dist/library/segments.js +16 -0
  541. package/dist/library/segments.js.map +1 -0
  542. package/dist/maintenance/upgrade.d.ts +54 -0
  543. package/dist/maintenance/upgrade.js +199 -0
  544. package/dist/maintenance/upgrade.js.map +1 -0
  545. package/dist/object-stream.d.ts +170 -0
  546. package/dist/object-stream.js +732 -0
  547. package/dist/object-stream.js.map +1 -0
  548. package/dist/retrieval/query/archive-view/backlinks.d.ts +38 -0
  549. package/dist/retrieval/query/archive-view/backlinks.js +200 -0
  550. package/dist/retrieval/query/archive-view/backlinks.js.map +1 -0
  551. package/dist/retrieval/query/archive-view/collection.d.ts +33 -0
  552. package/dist/retrieval/query/archive-view/collection.js +327 -0
  553. package/dist/retrieval/query/archive-view/collection.js.map +1 -0
  554. package/dist/retrieval/query/archive-view/core.d.ts +44 -0
  555. package/dist/retrieval/query/archive-view/core.js +165 -0
  556. package/dist/retrieval/query/archive-view/core.js.map +1 -0
  557. package/dist/retrieval/query/archive-view/evidence-hydration.d.ts +41 -0
  558. package/dist/retrieval/query/archive-view/evidence-hydration.js +311 -0
  559. package/dist/retrieval/query/archive-view/evidence-hydration.js.map +1 -0
  560. package/dist/retrieval/query/archive-view/evidence.d.ts +31 -0
  561. package/dist/retrieval/query/archive-view/evidence.js +166 -0
  562. package/dist/retrieval/query/archive-view/evidence.js.map +1 -0
  563. package/dist/retrieval/query/archive-view/find.d.ts +41 -0
  564. package/dist/retrieval/query/archive-view/find.js +289 -0
  565. package/dist/retrieval/query/archive-view/find.js.map +1 -0
  566. package/dist/retrieval/query/archive-view/helper/constants.d.ts +15 -0
  567. package/dist/retrieval/query/archive-view/helper/constants.js +20 -0
  568. package/dist/retrieval/query/archive-view/helper/constants.js.map +1 -0
  569. package/dist/retrieval/query/archive-view/helper/index.d.ts +34 -0
  570. package/dist/retrieval/query/archive-view/helper/index.js +9 -0
  571. package/dist/retrieval/query/archive-view/helper/index.js.map +1 -0
  572. package/dist/retrieval/query/archive-view/helper/meta.d.ts +17 -0
  573. package/dist/retrieval/query/archive-view/helper/meta.js +57 -0
  574. package/dist/retrieval/query/archive-view/helper/meta.js.map +1 -0
  575. package/dist/retrieval/query/archive-view/helper/parse.d.ts +38 -0
  576. package/dist/retrieval/query/archive-view/helper/parse.js +71 -0
  577. package/dist/retrieval/query/archive-view/helper/parse.js.map +1 -0
  578. package/dist/retrieval/query/archive-view/helper/position.d.ts +39 -0
  579. package/dist/retrieval/query/archive-view/helper/position.js +75 -0
  580. package/dist/retrieval/query/archive-view/helper/position.js.map +1 -0
  581. package/dist/retrieval/query/archive-view/helper/results.d.ts +45 -0
  582. package/dist/retrieval/query/archive-view/helper/results.js +153 -0
  583. package/dist/retrieval/query/archive-view/helper/results.js.map +1 -0
  584. package/dist/retrieval/query/archive-view/helper/sort.d.ts +35 -0
  585. package/dist/retrieval/query/archive-view/helper/sort.js +88 -0
  586. package/dist/retrieval/query/archive-view/helper/sort.js.map +1 -0
  587. package/dist/retrieval/query/archive-view/helper/text.d.ts +46 -0
  588. package/dist/retrieval/query/archive-view/helper/text.js +91 -0
  589. package/dist/retrieval/query/archive-view/helper/text.js.map +1 -0
  590. package/dist/retrieval/query/archive-view/helper/uri.d.ts +4 -0
  591. package/dist/retrieval/query/archive-view/helper/uri.js +12 -0
  592. package/dist/retrieval/query/archive-view/helper/uri.js.map +1 -0
  593. package/dist/retrieval/query/archive-view/helpers.d.ts +34 -0
  594. package/dist/retrieval/query/archive-view/helpers.js +2 -0
  595. package/dist/retrieval/query/archive-view/helpers.js.map +1 -0
  596. package/dist/retrieval/query/archive-view/index-state.d.ts +35 -0
  597. package/dist/retrieval/query/archive-view/index-state.js +191 -0
  598. package/dist/retrieval/query/archive-view/index-state.js.map +1 -0
  599. package/dist/retrieval/query/archive-view/index.d.ts +41 -0
  600. package/dist/retrieval/query/archive-view/index.js +51 -0
  601. package/dist/retrieval/query/archive-view/index.js.map +1 -0
  602. package/dist/retrieval/query/archive-view/knowledge.d.ts +45 -0
  603. package/dist/retrieval/query/archive-view/knowledge.js +99 -0
  604. package/dist/retrieval/query/archive-view/knowledge.js.map +1 -0
  605. package/dist/retrieval/query/archive-view/pack.d.ts +30 -0
  606. package/dist/retrieval/query/archive-view/pack.js +49 -0
  607. package/dist/retrieval/query/archive-view/pack.js.map +1 -0
  608. package/dist/retrieval/query/archive-view/pages.d.ts +41 -0
  609. package/dist/retrieval/query/archive-view/pages.js +341 -0
  610. package/dist/retrieval/query/archive-view/pages.js.map +1 -0
  611. package/dist/retrieval/query/archive-view/references.d.ts +88 -0
  612. package/dist/retrieval/query/archive-view/references.js +287 -0
  613. package/dist/retrieval/query/archive-view/references.js.map +1 -0
  614. package/dist/retrieval/query/archive-view/related/core.d.ts +37 -0
  615. package/dist/retrieval/query/archive-view/related/core.js +163 -0
  616. package/dist/retrieval/query/archive-view/related/core.js.map +1 -0
  617. package/dist/retrieval/query/archive-view/related/entity.d.ts +33 -0
  618. package/dist/retrieval/query/archive-view/related/entity.js +93 -0
  619. package/dist/retrieval/query/archive-view/related/entity.js.map +1 -0
  620. package/dist/retrieval/query/archive-view/related/index.d.ts +37 -0
  621. package/dist/retrieval/query/archive-view/related/index.js +7 -0
  622. package/dist/retrieval/query/archive-view/related/index.js.map +1 -0
  623. package/dist/retrieval/query/archive-view/related/pagination.d.ts +31 -0
  624. package/dist/retrieval/query/archive-view/related/pagination.js +90 -0
  625. package/dist/retrieval/query/archive-view/related/pagination.js.map +1 -0
  626. package/dist/retrieval/query/archive-view/related/query.d.ts +31 -0
  627. package/dist/retrieval/query/archive-view/related/query.js +145 -0
  628. package/dist/retrieval/query/archive-view/related/query.js.map +1 -0
  629. package/dist/retrieval/query/archive-view/related/sort.d.ts +32 -0
  630. package/dist/retrieval/query/archive-view/related/sort.js +85 -0
  631. package/dist/retrieval/query/archive-view/related/sort.js.map +1 -0
  632. package/dist/retrieval/query/archive-view/related/wikipage.d.ts +37 -0
  633. package/dist/retrieval/query/archive-view/related/wikipage.js +43 -0
  634. package/dist/retrieval/query/archive-view/related/wikipage.js.map +1 -0
  635. package/dist/retrieval/query/archive-view/search/bucket-hydration.d.ts +31 -0
  636. package/dist/retrieval/query/archive-view/search/bucket-hydration.js +58 -0
  637. package/dist/retrieval/query/archive-view/search/bucket-hydration.js.map +1 -0
  638. package/dist/retrieval/query/archive-view/search/bucket-order.d.ts +36 -0
  639. package/dist/retrieval/query/archive-view/search/bucket-order.js +64 -0
  640. package/dist/retrieval/query/archive-view/search/bucket-order.js.map +1 -0
  641. package/dist/retrieval/query/archive-view/search/bucket.d.ts +30 -0
  642. package/dist/retrieval/query/archive-view/search/bucket.js +3 -0
  643. package/dist/retrieval/query/archive-view/search/bucket.js.map +1 -0
  644. package/dist/retrieval/query/archive-view/search/buckets.d.ts +42 -0
  645. package/dist/retrieval/query/archive-view/search/buckets.js +302 -0
  646. package/dist/retrieval/query/archive-view/search/buckets.js.map +1 -0
  647. package/dist/retrieval/query/archive-view/search/cache-input.d.ts +45 -0
  648. package/dist/retrieval/query/archive-view/search/cache-input.js +255 -0
  649. package/dist/retrieval/query/archive-view/search/cache-input.js.map +1 -0
  650. package/dist/retrieval/query/archive-view/search/core.d.ts +31 -0
  651. package/dist/retrieval/query/archive-view/search/core.js +388 -0
  652. package/dist/retrieval/query/archive-view/search/core.js.map +1 -0
  653. package/dist/retrieval/query/archive-view/search/hydration.d.ts +51 -0
  654. package/dist/retrieval/query/archive-view/search/hydration.js +234 -0
  655. package/dist/retrieval/query/archive-view/search/hydration.js.map +1 -0
  656. package/dist/retrieval/query/archive-view/search/index.d.ts +35 -0
  657. package/dist/retrieval/query/archive-view/search/index.js +7 -0
  658. package/dist/retrieval/query/archive-view/search/index.js.map +1 -0
  659. package/dist/retrieval/query/archive-view/source-evidence/core.d.ts +60 -0
  660. package/dist/retrieval/query/archive-view/source-evidence/core.js +330 -0
  661. package/dist/retrieval/query/archive-view/source-evidence/core.js.map +1 -0
  662. package/dist/retrieval/query/archive-view/source-evidence/index.d.ts +30 -0
  663. package/dist/retrieval/query/archive-view/source-evidence/index.js +5 -0
  664. package/dist/retrieval/query/archive-view/source-evidence/index.js.map +1 -0
  665. package/dist/retrieval/query/archive-view/source-evidence/pagination.d.ts +46 -0
  666. package/dist/retrieval/query/archive-view/source-evidence/pagination.js +82 -0
  667. package/dist/retrieval/query/archive-view/source-evidence/pagination.js.map +1 -0
  668. package/dist/retrieval/query/archive-view/source-evidence/ranges.d.ts +47 -0
  669. package/dist/retrieval/query/archive-view/source-evidence/ranges.js +209 -0
  670. package/dist/retrieval/query/archive-view/source-evidence/ranges.js.map +1 -0
  671. package/dist/retrieval/query/archive-view/source-evidence/read.d.ts +31 -0
  672. package/dist/retrieval/query/archive-view/source-evidence/read.js +49 -0
  673. package/dist/retrieval/query/archive-view/source-evidence/read.js.map +1 -0
  674. package/dist/retrieval/query/archive-view/source.d.ts +30 -0
  675. package/dist/retrieval/query/archive-view/source.js +2 -0
  676. package/dist/retrieval/query/archive-view/source.js.map +1 -0
  677. package/dist/retrieval/query/archive-view/text-streams.d.ts +44 -0
  678. package/dist/retrieval/query/archive-view/text-streams.js +160 -0
  679. package/dist/retrieval/query/archive-view/text-streams.js.map +1 -0
  680. package/dist/retrieval/query/archive-view/types.d.ts +363 -0
  681. package/dist/retrieval/query/archive-view/types.js +1 -0
  682. package/dist/retrieval/query/continuation-cursor/core.d.ts +6 -0
  683. package/dist/retrieval/query/continuation-cursor/core.js +82 -0
  684. package/dist/retrieval/query/continuation-cursor/core.js.map +1 -0
  685. package/dist/retrieval/query/continuation-cursor/index.d.ts +2 -0
  686. package/dist/retrieval/query/continuation-cursor/index.js +3 -0
  687. package/dist/retrieval/query/continuation-cursor/index.js.map +1 -0
  688. package/dist/retrieval/query/continuation-cursor/payload.d.ts +12 -0
  689. package/dist/retrieval/query/continuation-cursor/payload.js +285 -0
  690. package/dist/retrieval/query/continuation-cursor/payload.js.map +1 -0
  691. package/dist/retrieval/query/continuation-cursor/store.d.ts +10 -0
  692. package/dist/retrieval/query/continuation-cursor/store.js +65 -0
  693. package/dist/retrieval/query/continuation-cursor/store.js.map +1 -0
  694. package/dist/retrieval/query/continuation-cursor/types.d.ts +72 -0
  695. package/dist/retrieval/query/continuation-cursor/types.js +1 -0
  696. package/dist/retrieval/query/continuation-cursor/types.js.map +1 -0
  697. package/dist/retrieval/query/index.d.ts +47 -0
  698. package/dist/retrieval/query/index.js +63 -0
  699. package/dist/retrieval/query/index.js.map +1 -0
  700. package/dist/retrieval/query/lexical-search.js.map +1 -0
  701. package/dist/retrieval/query/search-cache/buckets.d.ts +32 -0
  702. package/dist/retrieval/query/search-cache/buckets.js +87 -0
  703. package/dist/retrieval/query/search-cache/buckets.js.map +1 -0
  704. package/dist/retrieval/query/search-cache/cursor.d.ts +42 -0
  705. package/dist/retrieval/query/search-cache/cursor.js +84 -0
  706. package/dist/retrieval/query/search-cache/cursor.js.map +1 -0
  707. package/dist/retrieval/query/search-cache/database.d.ts +7 -0
  708. package/dist/retrieval/query/search-cache/database.js +47 -0
  709. package/dist/retrieval/query/search-cache/database.js.map +1 -0
  710. package/dist/retrieval/query/search-cache/gc.d.ts +6 -0
  711. package/dist/retrieval/query/search-cache/gc.js +110 -0
  712. package/dist/retrieval/query/search-cache/gc.js.map +1 -0
  713. package/dist/retrieval/query/search-cache/hits.d.ts +42 -0
  714. package/dist/retrieval/query/search-cache/hits.js +446 -0
  715. package/dist/retrieval/query/search-cache/hits.js.map +1 -0
  716. package/dist/retrieval/query/search-cache/ids.d.ts +32 -0
  717. package/dist/retrieval/query/search-cache/ids.js +48 -0
  718. package/dist/retrieval/query/search-cache/ids.js.map +1 -0
  719. package/dist/retrieval/query/search-cache/index.d.ts +33 -0
  720. package/dist/retrieval/query/search-cache/index.js +46 -0
  721. package/dist/retrieval/query/search-cache/index.js.map +1 -0
  722. package/dist/retrieval/query/search-cache/parsing.d.ts +36 -0
  723. package/dist/retrieval/query/search-cache/parsing.js +38 -0
  724. package/dist/retrieval/query/search-cache/parsing.js.map +1 -0
  725. package/dist/retrieval/query/search-cache/schema.d.ts +7 -0
  726. package/dist/retrieval/query/search-cache/schema.js +117 -0
  727. package/dist/retrieval/query/search-cache/schema.js.map +1 -0
  728. package/dist/retrieval/query/search-cache/scores.d.ts +4 -0
  729. package/dist/retrieval/query/search-cache/scores.js +12 -0
  730. package/dist/retrieval/query/search-cache/scores.js.map +1 -0
  731. package/dist/retrieval/query/search-cache/sessions.d.ts +45 -0
  732. package/dist/retrieval/query/search-cache/sessions.js +330 -0
  733. package/dist/retrieval/query/search-cache/sessions.js.map +1 -0
  734. package/dist/retrieval/query/search-cache/store.d.ts +23 -0
  735. package/dist/retrieval/query/search-cache/store.js +111 -0
  736. package/dist/retrieval/query/search-cache/store.js.map +1 -0
  737. package/dist/retrieval/query/search-cache/types.d.ts +164 -0
  738. package/dist/retrieval/query/search-cache/types.js +9 -0
  739. package/dist/retrieval/query/search-cache/types.js.map +1 -0
  740. package/dist/retrieval/query/view.d.ts +41 -0
  741. package/dist/retrieval/query/view.js +2 -0
  742. package/dist/retrieval/query/view.js.map +1 -0
  743. package/dist/retrieval/search-index/index.d.ts +33 -0
  744. package/dist/retrieval/search-index/index.js +41 -0
  745. package/dist/retrieval/search-index/index.js.map +1 -0
  746. package/dist/retrieval/search-index/search/build.d.ts +39 -0
  747. package/dist/retrieval/search-index/search/build.js +212 -0
  748. package/dist/retrieval/search-index/search/build.js.map +1 -0
  749. package/dist/retrieval/search-index/search/core.d.ts +33 -0
  750. package/dist/retrieval/search-index/search/core.js +8 -0
  751. package/dist/retrieval/search-index/search/core.js.map +1 -0
  752. package/dist/retrieval/search-index/search/dirty.d.ts +30 -0
  753. package/dist/retrieval/search-index/search/dirty.js +28 -0
  754. package/dist/retrieval/search-index/search/dirty.js.map +1 -0
  755. package/dist/retrieval/search-index/search/errors.d.ts +3 -0
  756. package/dist/retrieval/search-index/search/errors.js +8 -0
  757. package/dist/retrieval/search-index/search/errors.js.map +1 -0
  758. package/dist/retrieval/search-index/search/fingerprint.d.ts +8 -0
  759. package/dist/retrieval/search-index/search/fingerprint.js +51 -0
  760. package/dist/retrieval/search-index/search/fingerprint.js.map +1 -0
  761. package/dist/retrieval/search-index/search/helpers.d.ts +44 -0
  762. package/dist/retrieval/search-index/search/helpers.js +109 -0
  763. package/dist/retrieval/search-index/search/helpers.js.map +1 -0
  764. package/dist/retrieval/search-index/search/index.d.ts +34 -0
  765. package/dist/retrieval/search-index/search/index.js +3 -0
  766. package/dist/retrieval/search-index/search/index.js.map +1 -0
  767. package/dist/retrieval/search-index/search/match.d.ts +34 -0
  768. package/dist/retrieval/search-index/search/match.js +82 -0
  769. package/dist/retrieval/search-index/search/match.js.map +1 -0
  770. package/dist/retrieval/search-index/search/query.d.ts +44 -0
  771. package/dist/retrieval/search-index/search/query.js +219 -0
  772. package/dist/retrieval/search-index/search/query.js.map +1 -0
  773. package/dist/retrieval/search-index/search/settings.d.ts +29 -0
  774. package/dist/retrieval/search-index/search/settings.js +35 -0
  775. package/dist/retrieval/search-index/search/settings.js.map +1 -0
  776. package/dist/retrieval/search-index/search/status.d.ts +31 -0
  777. package/dist/retrieval/search-index/search/status.js +70 -0
  778. package/dist/retrieval/search-index/search/status.js.map +1 -0
  779. package/dist/retrieval/search-index/search/tokenizer.js +225 -0
  780. package/dist/retrieval/search-index/search/tokenizer.js.map +1 -0
  781. package/dist/retrieval/search-index/search/types.d.ts +79 -0
  782. package/dist/retrieval/search-index/search/types.js +31 -0
  783. package/dist/retrieval/search-index/search/types.js.map +1 -0
  784. package/dist/retrieval/search-index/search/write.d.ts +10 -0
  785. package/dist/retrieval/search-index/search/write.js +70 -0
  786. package/dist/retrieval/search-index/search/write.js.map +1 -0
  787. package/dist/runtime/common/cli-command.js.map +1 -0
  788. package/dist/runtime/common/data-dir.js +49 -0
  789. package/dist/runtime/common/data-dir.js.map +1 -0
  790. package/dist/runtime/common/language.js.map +1 -0
  791. package/dist/runtime/common/llm-scope.js.map +1 -0
  792. package/dist/runtime/common/logging.js.map +1 -0
  793. package/dist/runtime/common/prompts.d.ts +6 -0
  794. package/dist/runtime/common/prompts.js +25 -0
  795. package/dist/runtime/common/prompts.js.map +1 -0
  796. package/dist/runtime/common/template.js.map +1 -0
  797. package/dist/runtime/common/tinyld-language.js.map +1 -0
  798. package/dist/runtime/common/wiki-graph/dir.d.ts +19 -0
  799. package/dist/runtime/common/wiki-graph/dir.js +68 -0
  800. package/dist/runtime/common/wiki-graph/dir.js.map +1 -0
  801. package/dist/runtime/common/wiki-graph/index.d.ts +3 -0
  802. package/dist/runtime/common/wiki-graph/index.js +4 -0
  803. package/dist/runtime/common/wiki-graph/index.js.map +1 -0
  804. package/dist/runtime/common/wiki-graph/temp.js +21 -0
  805. package/dist/runtime/common/wiki-graph/temp.js.map +1 -0
  806. package/dist/runtime/common/wiki-graph/uri.d.ts +37 -0
  807. package/dist/runtime/common/wiki-graph/uri.js +288 -0
  808. package/dist/runtime/common/wiki-graph/uri.js.map +1 -0
  809. package/dist/runtime/context/index.d.ts +1 -0
  810. package/dist/runtime/context/index.js +13 -0
  811. package/dist/runtime/context/index.js.map +1 -0
  812. package/dist/runtime/context/task.js +111 -0
  813. package/dist/runtime/context/task.js.map +1 -0
  814. package/dist/runtime/gc/files.js +141 -0
  815. package/dist/runtime/gc/files.js.map +1 -0
  816. package/dist/runtime/gc/index.js.map +1 -0
  817. package/dist/runtime/gc/lock.js +137 -0
  818. package/dist/runtime/gc/lock.js.map +1 -0
  819. package/dist/runtime/gc/runner.js +134 -0
  820. package/dist/runtime/gc/runner.js.map +1 -0
  821. package/dist/runtime/gc/temp.js +57 -0
  822. package/dist/runtime/gc/temp.js.map +1 -0
  823. package/dist/runtime/gc/types.js +1 -0
  824. package/dist/runtime/gc/types.js.map +1 -0
  825. package/dist/runtime/jobs/conflicts.d.ts +16 -0
  826. package/dist/runtime/jobs/conflicts.js +61 -0
  827. package/dist/runtime/jobs/conflicts.js.map +1 -0
  828. package/dist/runtime/jobs/database.d.ts +12 -0
  829. package/dist/runtime/jobs/database.js +74 -0
  830. package/dist/runtime/jobs/database.js.map +1 -0
  831. package/dist/runtime/jobs/events.d.ts +6 -0
  832. package/dist/runtime/jobs/events.js +29 -0
  833. package/dist/runtime/jobs/events.js.map +1 -0
  834. package/dist/runtime/jobs/gc.d.ts +10 -0
  835. package/dist/runtime/jobs/gc.js +81 -0
  836. package/dist/runtime/jobs/gc.js.map +1 -0
  837. package/dist/runtime/jobs/helpers.d.ts +6 -0
  838. package/dist/runtime/jobs/helpers.js +35 -0
  839. package/dist/runtime/jobs/helpers.js.map +1 -0
  840. package/dist/runtime/jobs/index.d.ts +7 -0
  841. package/dist/runtime/jobs/index.js +42 -0
  842. package/dist/runtime/jobs/index.js.map +1 -0
  843. package/dist/runtime/jobs/jobs.d.ts +24 -0
  844. package/dist/runtime/jobs/jobs.js +416 -0
  845. package/dist/runtime/jobs/jobs.js.map +1 -0
  846. package/dist/runtime/jobs/paths.d.ts +9 -0
  847. package/dist/runtime/jobs/paths.js +48 -0
  848. package/dist/runtime/jobs/paths.js.map +1 -0
  849. package/dist/runtime/jobs/progress.d.ts +37 -0
  850. package/dist/runtime/jobs/progress.js +246 -0
  851. package/dist/runtime/jobs/progress.js.map +1 -0
  852. package/dist/runtime/jobs/recovery.d.ts +6 -0
  853. package/dist/runtime/jobs/recovery.js +40 -0
  854. package/dist/runtime/jobs/recovery.js.map +1 -0
  855. package/dist/runtime/jobs/row.d.ts +10 -0
  856. package/dist/runtime/jobs/row.js +92 -0
  857. package/dist/runtime/jobs/row.js.map +1 -0
  858. package/dist/runtime/jobs/schema.d.ts +3 -0
  859. package/dist/runtime/jobs/schema.js +55 -0
  860. package/dist/runtime/jobs/schema.js.map +1 -0
  861. package/dist/runtime/jobs/state.d.ts +13 -0
  862. package/dist/runtime/jobs/state.js +156 -0
  863. package/dist/runtime/jobs/state.js.map +1 -0
  864. package/dist/runtime/jobs/types.d.ts +141 -0
  865. package/dist/runtime/jobs/types.js +13 -0
  866. package/dist/runtime/jobs/types.js.map +1 -0
  867. package/dist/runtime/jobs/worker.d.ts +5 -0
  868. package/dist/runtime/jobs/worker.js +241 -0
  869. package/dist/runtime/jobs/worker.js.map +1 -0
  870. package/dist/runtime/progress/index.js.map +1 -0
  871. package/dist/runtime/progress/reporter.js.map +1 -0
  872. package/dist/runtime/progress/tracker.js.map +1 -0
  873. package/dist/runtime/progress/types.js +1 -0
  874. package/dist/runtime/progress/types.js.map +1 -0
  875. package/dist/serial.d.ts +36 -85
  876. package/dist/serial.js +1 -475
  877. package/dist/serial.js.map +1 -1
  878. package/dist/state-lock.d.ts +21 -0
  879. package/dist/state-lock.js +233 -0
  880. package/dist/state-lock.js.map +1 -0
  881. package/dist/storage/migration/legacy-sdpub/upgrade/archive.d.ts +11 -0
  882. package/dist/storage/migration/legacy-sdpub/upgrade/archive.js +94 -0
  883. package/dist/storage/migration/legacy-sdpub/upgrade/archive.js.map +1 -0
  884. package/dist/storage/migration/legacy-sdpub/upgrade/database.d.ts +7 -0
  885. package/dist/storage/migration/legacy-sdpub/upgrade/database.js +28 -0
  886. package/dist/storage/migration/legacy-sdpub/upgrade/database.js.map +1 -0
  887. package/dist/storage/migration/legacy-sdpub/upgrade/extract.d.ts +3 -0
  888. package/dist/storage/migration/legacy-sdpub/upgrade/extract.js +68 -0
  889. package/dist/storage/migration/legacy-sdpub/upgrade/extract.js.map +1 -0
  890. package/dist/storage/migration/legacy-sdpub/upgrade/index.js +47 -0
  891. package/dist/storage/migration/legacy-sdpub/upgrade/index.js.map +1 -0
  892. package/dist/storage/migration/legacy-sdpub/upgrade/schema.d.ts +3 -0
  893. package/dist/storage/migration/legacy-sdpub/upgrade/schema.js +41 -0
  894. package/dist/storage/migration/legacy-sdpub/upgrade/schema.js.map +1 -0
  895. package/dist/storage/migration/legacy-sdpub/upgrade/text-storage/core.d.ts +3 -0
  896. package/dist/storage/migration/legacy-sdpub/upgrade/text-storage/core.js +77 -0
  897. package/dist/storage/migration/legacy-sdpub/upgrade/text-storage/core.js.map +1 -0
  898. package/dist/storage/migration/legacy-sdpub/upgrade/text-storage/fragments.d.ts +10 -0
  899. package/dist/storage/migration/legacy-sdpub/upgrade/text-storage/fragments.js +123 -0
  900. package/dist/storage/migration/legacy-sdpub/upgrade/text-storage/fragments.js.map +1 -0
  901. package/dist/storage/migration/legacy-sdpub/upgrade/text-storage/index.d.ts +1 -0
  902. package/dist/storage/migration/legacy-sdpub/upgrade/text-storage/index.js +2 -0
  903. package/dist/storage/migration/legacy-sdpub/upgrade/text-storage/index.js.map +1 -0
  904. package/dist/storage/migration/legacy-sdpub/upgrade/text-storage/references.d.ts +5 -0
  905. package/dist/storage/migration/legacy-sdpub/upgrade/text-storage/references.js +305 -0
  906. package/dist/storage/migration/legacy-sdpub/upgrade/text-storage/references.js.map +1 -0
  907. package/dist/storage/migration/legacy-sdpub/upgrade/text-storage/source-text.d.ts +11 -0
  908. package/dist/storage/migration/legacy-sdpub/upgrade/text-storage/source-text.js +62 -0
  909. package/dist/storage/migration/legacy-sdpub/upgrade/text-storage/source-text.js.map +1 -0
  910. package/dist/storage/migration/legacy-sdpub/upgrade/text-storage/summaries.d.ts +3 -0
  911. package/dist/storage/migration/legacy-sdpub/upgrade/text-storage/summaries.js +45 -0
  912. package/dist/storage/migration/legacy-sdpub/upgrade/text-storage/summaries.js.map +1 -0
  913. package/dist/storage/migration/legacy-sdpub/upgrade/text-storage/types.d.ts +19 -0
  914. package/dist/storage/migration/legacy-sdpub/upgrade/text-storage/types.js +1 -0
  915. package/dist/storage/migration/legacy-sdpub/upgrade/text-storage/types.js.map +1 -0
  916. package/dist/storage/schema-upgrade/index.d.ts +8 -0
  917. package/dist/storage/schema-upgrade/index.js +308 -0
  918. package/dist/storage/schema-upgrade/index.js.map +1 -0
  919. package/dist/storage/wikg/archive/constants.d.ts +6 -0
  920. package/dist/storage/wikg/archive/constants.js +19 -0
  921. package/dist/storage/wikg/archive/constants.js.map +1 -0
  922. package/dist/storage/wikg/archive/document-files.d.ts +11 -0
  923. package/dist/storage/wikg/archive/document-files.js +70 -0
  924. package/dist/storage/wikg/archive/document-files.js.map +1 -0
  925. package/dist/storage/wikg/archive/extract.d.ts +3 -0
  926. package/dist/storage/wikg/archive/extract.js +37 -0
  927. package/dist/storage/wikg/archive/extract.js.map +1 -0
  928. package/dist/storage/wikg/archive/index.d.ts +6 -0
  929. package/dist/storage/wikg/archive/index.js +25 -0
  930. package/dist/storage/wikg/archive/index.js.map +1 -0
  931. package/dist/storage/wikg/archive/manifest.d.ts +11 -0
  932. package/dist/storage/wikg/archive/manifest.js +60 -0
  933. package/dist/storage/wikg/archive/manifest.js.map +1 -0
  934. package/dist/storage/wikg/archive/paths.d.ts +9 -0
  935. package/dist/storage/wikg/archive/paths.js +46 -0
  936. package/dist/storage/wikg/archive/paths.js.map +1 -0
  937. package/dist/storage/wikg/archive/reader.d.ts +17 -0
  938. package/dist/storage/wikg/archive/reader.js +101 -0
  939. package/dist/storage/wikg/archive/reader.js.map +1 -0
  940. package/dist/storage/wikg/archive/types.d.ts +10 -0
  941. package/dist/storage/wikg/archive/types.js +1 -0
  942. package/dist/storage/wikg/archive/types.js.map +1 -0
  943. package/dist/storage/wikg/archive/write.d.ts +8 -0
  944. package/dist/storage/wikg/archive/write.js +155 -0
  945. package/dist/storage/wikg/archive/write.js.map +1 -0
  946. package/dist/storage/wikg/archive/zip.d.ts +13 -0
  947. package/dist/storage/wikg/archive/zip.js +122 -0
  948. package/dist/storage/wikg/archive/zip.js.map +1 -0
  949. package/dist/storage/wikg/archive-uri.d.ts +1 -0
  950. package/dist/storage/wikg/archive-uri.js +39 -0
  951. package/dist/storage/wikg/archive-uri.js.map +1 -0
  952. package/dist/storage/wikg/coordinator.d.ts +29 -0
  953. package/dist/storage/wikg/coordinator.js +2 -0
  954. package/dist/storage/wikg/coordinator.js.map +1 -0
  955. package/dist/storage/wikg/index.d.ts +41 -0
  956. package/dist/storage/wikg/index.js +68 -0
  957. package/dist/storage/wikg/index.js.map +1 -0
  958. package/dist/storage/wikg/wikg-coordinator/activity.d.ts +4 -0
  959. package/dist/storage/wikg/wikg-coordinator/activity.js +48 -0
  960. package/dist/storage/wikg/wikg-coordinator/activity.js.map +1 -0
  961. package/dist/storage/wikg/wikg-coordinator/archive-key.d.ts +7 -0
  962. package/dist/storage/wikg/wikg-coordinator/archive-key.js +38 -0
  963. package/dist/storage/wikg/wikg-coordinator/archive-key.js.map +1 -0
  964. package/dist/storage/wikg/wikg-coordinator/constants.d.ts +9 -0
  965. package/dist/storage/wikg/wikg-coordinator/constants.js +19 -0
  966. package/dist/storage/wikg/wikg-coordinator/constants.js.map +1 -0
  967. package/dist/storage/wikg/wikg-coordinator/facade.d.ts +40 -0
  968. package/dist/storage/wikg/wikg-coordinator/facade.js +43 -0
  969. package/dist/storage/wikg/wikg-coordinator/facade.js.map +1 -0
  970. package/dist/storage/wikg/wikg-coordinator/file-store.d.ts +52 -0
  971. package/dist/storage/wikg/wikg-coordinator/file-store.js +369 -0
  972. package/dist/storage/wikg/wikg-coordinator/file-store.js.map +1 -0
  973. package/dist/storage/wikg/wikg-coordinator/flusher.d.ts +4 -0
  974. package/dist/storage/wikg/wikg-coordinator/flusher.js +115 -0
  975. package/dist/storage/wikg/wikg-coordinator/flusher.js.map +1 -0
  976. package/dist/storage/wikg/wikg-coordinator/gc.d.ts +5 -0
  977. package/dist/storage/wikg/wikg-coordinator/gc.js +197 -0
  978. package/dist/storage/wikg/wikg-coordinator/gc.js.map +1 -0
  979. package/dist/storage/wikg/wikg-coordinator/index.d.ts +29 -0
  980. package/dist/storage/wikg/wikg-coordinator/index.js +11 -0
  981. package/dist/storage/wikg/wikg-coordinator/index.js.map +1 -0
  982. package/dist/storage/wikg/wikg-coordinator/locks.d.ts +19 -0
  983. package/dist/storage/wikg/wikg-coordinator/locks.js +194 -0
  984. package/dist/storage/wikg/wikg-coordinator/locks.js.map +1 -0
  985. package/dist/storage/wikg/wikg-coordinator/overlays.d.ts +32 -0
  986. package/dist/storage/wikg/wikg-coordinator/overlays.js +141 -0
  987. package/dist/storage/wikg/wikg-coordinator/overlays.js.map +1 -0
  988. package/dist/storage/wikg/wikg-coordinator/owners.d.ts +15 -0
  989. package/dist/storage/wikg/wikg-coordinator/owners.js +95 -0
  990. package/dist/storage/wikg/wikg-coordinator/owners.js.map +1 -0
  991. package/dist/storage/wikg/wikg-coordinator/search-index-cache.d.ts +9 -0
  992. package/dist/storage/wikg/wikg-coordinator/search-index-cache.js +164 -0
  993. package/dist/storage/wikg/wikg-coordinator/search-index-cache.js.map +1 -0
  994. package/dist/storage/wikg/wikg-coordinator/session.d.ts +43 -0
  995. package/dist/storage/wikg/wikg-coordinator/session.js +147 -0
  996. package/dist/storage/wikg/wikg-coordinator/session.js.map +1 -0
  997. package/dist/storage/wikg/wikg-coordinator/state.d.ts +16 -0
  998. package/dist/storage/wikg/wikg-coordinator/state.js +258 -0
  999. package/dist/storage/wikg/wikg-coordinator/state.js.map +1 -0
  1000. package/dist/storage/wikg/wikg-coordinator/types.d.ts +28 -0
  1001. package/dist/storage/wikg/wikg-coordinator/types.js +1 -0
  1002. package/dist/storage/wikg/wikg-coordinator/types.js.map +1 -0
  1003. package/dist/storage/wikg/wikg-coordinator/workspace.d.ts +8 -0
  1004. package/dist/storage/wikg/wikg-coordinator/workspace.js +60 -0
  1005. package/dist/storage/wikg/wikg-coordinator/workspace.js.map +1 -0
  1006. package/dist/storage/wikg/wiki-graph-archive-file.d.ts +45 -0
  1007. package/dist/storage/wikg/wiki-graph-archive-file.js +78 -0
  1008. package/dist/storage/wikg/wiki-graph-archive-file.js.map +1 -0
  1009. package/dist/text/editor/clue.d.ts +40 -0
  1010. package/dist/text/editor/clue.js.map +1 -0
  1011. package/dist/text/editor/compression.d.ts +52 -0
  1012. package/dist/text/editor/compression.js +253 -0
  1013. package/dist/text/editor/compression.js.map +1 -0
  1014. package/dist/text/editor/compressor.d.ts +19 -0
  1015. package/dist/text/editor/compressor.js +123 -0
  1016. package/dist/text/editor/compressor.js.map +1 -0
  1017. package/dist/text/editor/feedback.d.ts +16 -0
  1018. package/dist/text/editor/feedback.js.map +1 -0
  1019. package/dist/text/editor/index.d.ts +30 -0
  1020. package/dist/text/editor/index.js +5 -0
  1021. package/dist/text/editor/index.js.map +1 -0
  1022. package/dist/text/editor/language-review.d.ts +14 -0
  1023. package/dist/text/editor/language-review.js +35 -0
  1024. package/dist/text/editor/language-review.js.map +1 -0
  1025. package/dist/text/editor/log.d.ts +50 -0
  1026. package/dist/text/editor/log.js +202 -0
  1027. package/dist/text/editor/log.js.map +1 -0
  1028. package/dist/text/editor/markup.d.ts +18 -0
  1029. package/dist/text/editor/markup.js +294 -0
  1030. package/dist/text/editor/markup.js.map +1 -0
  1031. package/dist/text/editor/prompt-templates.js.map +1 -0
  1032. package/dist/text/editor/response.js.map +1 -0
  1033. package/dist/text/editor/review.d.ts +47 -0
  1034. package/dist/text/editor/review.js +189 -0
  1035. package/dist/text/editor/review.js.map +1 -0
  1036. package/dist/text/editor/types.js +21 -0
  1037. package/dist/text/editor/types.js.map +1 -0
  1038. package/dist/text/output/epub/archive.js.map +1 -0
  1039. package/dist/text/output/epub/book.d.ts +28 -0
  1040. package/dist/text/output/epub/book.js.map +1 -0
  1041. package/dist/text/output/epub/content.js.map +1 -0
  1042. package/dist/text/output/epub/index.d.ts +33 -0
  1043. package/dist/text/output/epub/index.js.map +1 -0
  1044. package/dist/text/output/epub/model.js.map +1 -0
  1045. package/dist/text/output/epub/navigation.js.map +1 -0
  1046. package/dist/text/output/epub/package.js.map +1 -0
  1047. package/dist/text/output/epub/shared.js.map +1 -0
  1048. package/dist/text/output/epub/templates.js +26 -0
  1049. package/dist/text/output/epub/templates.js.map +1 -0
  1050. package/dist/text/output/index.d.ts +27 -0
  1051. package/dist/text/output/index.js.map +1 -0
  1052. package/dist/text/output/plain-text.d.ts +31 -0
  1053. package/dist/text/output/plain-text.js.map +1 -0
  1054. package/dist/text/reader/attention/core.d.ts +39 -0
  1055. package/dist/text/reader/attention/core.js +123 -0
  1056. package/dist/text/reader/attention/core.js.map +1 -0
  1057. package/dist/text/reader/attention/index.d.ts +9 -0
  1058. package/dist/text/reader/attention/index.js +5 -0
  1059. package/dist/text/reader/attention/index.js.map +1 -0
  1060. package/dist/text/reader/attention/wave-reflection.d.ts +21 -0
  1061. package/dist/text/reader/attention/wave-reflection.js.map +1 -0
  1062. package/dist/text/reader/attention/working-memory.d.ts +28 -0
  1063. package/dist/text/reader/attention/working-memory.js.map +1 -0
  1064. package/dist/text/reader/chunk-batch/extract.d.ts +13 -0
  1065. package/dist/text/reader/chunk-batch/extract.js.map +1 -0
  1066. package/dist/text/reader/chunk-batch/extractor.d.ts +17 -0
  1067. package/dist/text/reader/chunk-batch/extractor.js +337 -0
  1068. package/dist/text/reader/chunk-batch/extractor.js.map +1 -0
  1069. package/dist/text/reader/chunk-batch/fragment-projection.d.ts +34 -0
  1070. package/dist/text/reader/chunk-batch/fragment-projection.js.map +1 -0
  1071. package/dist/text/reader/chunk-batch/index.d.ts +13 -0
  1072. package/dist/text/reader/chunk-batch/index.js +13 -0
  1073. package/dist/text/reader/chunk-batch/index.js.map +1 -0
  1074. package/dist/text/reader/chunk-batch/language.d.ts +9 -0
  1075. package/dist/text/reader/chunk-batch/language.js +23 -0
  1076. package/dist/text/reader/chunk-batch/language.js.map +1 -0
  1077. package/dist/text/reader/chunk-batch/parser/annotations.d.ts +19 -0
  1078. package/dist/text/reader/chunk-batch/parser/annotations.js +34 -0
  1079. package/dist/text/reader/chunk-batch/parser/annotations.js.map +1 -0
  1080. package/dist/text/reader/chunk-batch/parser/core.d.ts +33 -0
  1081. package/dist/text/reader/chunk-batch/parser/core.js +171 -0
  1082. package/dist/text/reader/chunk-batch/parser/core.js.map +1 -0
  1083. package/dist/text/reader/chunk-batch/parser/evidence.d.ts +21 -0
  1084. package/dist/text/reader/chunk-batch/parser/evidence.js +40 -0
  1085. package/dist/text/reader/chunk-batch/parser/evidence.js.map +1 -0
  1086. package/dist/text/reader/chunk-batch/parser/helpers.d.ts +27 -0
  1087. package/dist/text/reader/chunk-batch/parser/helpers.js +98 -0
  1088. package/dist/text/reader/chunk-batch/parser/helpers.js.map +1 -0
  1089. package/dist/text/reader/chunk-batch/parser/index.d.ts +13 -0
  1090. package/dist/text/reader/chunk-batch/parser/index.js +3 -0
  1091. package/dist/text/reader/chunk-batch/parser/index.js.map +1 -0
  1092. package/dist/text/reader/chunk-batch/parser/links.d.ts +17 -0
  1093. package/dist/text/reader/chunk-batch/parser/links.js +44 -0
  1094. package/dist/text/reader/chunk-batch/parser/links.js.map +1 -0
  1095. package/dist/text/reader/chunk-batch/parser/resolver.d.ts +28 -0
  1096. package/dist/text/reader/chunk-batch/parser/resolver.js +267 -0
  1097. package/dist/text/reader/chunk-batch/parser/resolver.js.map +1 -0
  1098. package/dist/text/reader/chunk-batch/parser/schema.d.ts +136 -0
  1099. package/dist/text/reader/chunk-batch/parser/schema.js +71 -0
  1100. package/dist/text/reader/chunk-batch/parser/schema.js.map +1 -0
  1101. package/dist/text/reader/chunk-batch/prompt-templates.js.map +1 -0
  1102. package/dist/text/reader/chunk-batch/types.d.ts +85 -0
  1103. package/dist/text/reader/chunk-batch/types.js +1 -0
  1104. package/dist/text/reader/chunk-batch/types.js.map +1 -0
  1105. package/dist/text/reader/core.d.ts +37 -0
  1106. package/dist/text/reader/core.js +82 -0
  1107. package/dist/text/reader/core.js.map +1 -0
  1108. package/dist/text/reader/index.d.ts +13 -0
  1109. package/dist/text/reader/index.js +7 -0
  1110. package/dist/text/reader/index.js.map +1 -0
  1111. package/dist/text/reader/segment/core.js +9 -0
  1112. package/dist/text/reader/segment/core.js.map +1 -0
  1113. package/dist/text/reader/segment/index.d.ts +2 -0
  1114. package/dist/text/reader/segment/index.js +5 -0
  1115. package/dist/text/reader/segment/index.js.map +1 -0
  1116. package/dist/text/reader/segment/intl-segmenter.js.map +1 -0
  1117. package/dist/text/reader/segment/types.js +1 -0
  1118. package/dist/text/reader/segment/types.js.map +1 -0
  1119. package/dist/text/reader/types.d.ts +29 -0
  1120. package/dist/text/reader/types.js +1 -0
  1121. package/dist/text/reader/types.js.map +1 -0
  1122. package/dist/text/serial/discovery.d.ts +36 -0
  1123. package/dist/text/serial/discovery.js +5 -0
  1124. package/dist/text/serial/discovery.js.map +1 -0
  1125. package/dist/text/serial/fragments.d.ts +67 -0
  1126. package/dist/text/serial/fragments.js +121 -0
  1127. package/dist/text/serial/fragments.js.map +1 -0
  1128. package/dist/text/serial/generation.d.ts +48 -0
  1129. package/dist/text/serial/generation.js +257 -0
  1130. package/dist/text/serial/generation.js.map +1 -0
  1131. package/dist/text/serial/index.d.ts +40 -0
  1132. package/dist/text/serial/index.js +7 -0
  1133. package/dist/text/serial/index.js.map +1 -0
  1134. package/dist/text/serial/options.d.ts +77 -0
  1135. package/dist/text/serial/options.js +17 -0
  1136. package/dist/text/serial/options.js.map +1 -0
  1137. package/dist/text/serial/read.d.ts +28 -0
  1138. package/dist/text/serial/read.js +19 -0
  1139. package/dist/text/serial/read.js.map +1 -0
  1140. package/dist/text/serial/reader-graph.d.ts +39 -0
  1141. package/dist/text/serial/reader-graph.js +27 -0
  1142. package/dist/text/serial/reader-graph.js.map +1 -0
  1143. package/dist/text/serial/record.d.ts +40 -0
  1144. package/dist/text/serial/record.js +21 -0
  1145. package/dist/text/serial/record.js.map +1 -0
  1146. package/dist/text/serial/source.d.ts +39 -0
  1147. package/dist/text/serial/source.js +12 -0
  1148. package/dist/text/serial/source.js.map +1 -0
  1149. package/dist/text/serial/topology.d.ts +43 -0
  1150. package/dist/text/serial/topology.js +64 -0
  1151. package/dist/text/serial/topology.js.map +1 -0
  1152. package/dist/text/source/adapter.js.map +1 -0
  1153. package/dist/text/source/epub/archive.js.map +1 -0
  1154. package/dist/text/source/epub/content.js.map +1 -0
  1155. package/dist/text/source/epub/document.js.map +1 -0
  1156. package/dist/text/source/epub/index.js.map +1 -0
  1157. package/dist/text/source/epub/navigation.js.map +1 -0
  1158. package/dist/text/source/epub/package.js.map +1 -0
  1159. package/dist/text/source/epub/xml.js.map +1 -0
  1160. package/dist/text/source/index.js.map +1 -0
  1161. package/dist/text/source/meta.js.map +1 -0
  1162. package/dist/text/source/plain-text.js.map +1 -0
  1163. package/dist/text/source/toc.d.ts +17 -0
  1164. package/dist/text/source/toc.js +19 -0
  1165. package/dist/text/source/toc.js.map +1 -0
  1166. package/dist/text/source/types.js +1 -0
  1167. package/dist/text/source/types.js.map +1 -0
  1168. package/dist/text/summary-build/artifact.d.ts +44 -0
  1169. package/dist/text/summary-build/artifact.js +157 -0
  1170. package/dist/text/summary-build/artifact.js.map +1 -0
  1171. package/dist/text/summary-build/build.d.ts +37 -0
  1172. package/dist/text/summary-build/build.js +60 -0
  1173. package/dist/text/summary-build/build.js.map +1 -0
  1174. package/dist/text/summary-build/index.d.ts +38 -0
  1175. package/dist/text/summary-build/index.js +4 -0
  1176. package/dist/text/summary-build/index.js.map +1 -0
  1177. package/dist/text/summary-build/schema.d.ts +106 -0
  1178. package/dist/text/summary-build/schema.js +118 -0
  1179. package/dist/text/summary-build/schema.js.map +1 -0
  1180. package/dist/text/summary-build/snapshot/chunk-store.d.ts +17 -0
  1181. package/dist/text/summary-build/snapshot/chunk-store.js +68 -0
  1182. package/dist/text/summary-build/snapshot/chunk-store.js.map +1 -0
  1183. package/dist/text/summary-build/snapshot/empty-stores.d.ts +50 -0
  1184. package/dist/text/summary-build/snapshot/empty-stores.js +60 -0
  1185. package/dist/text/summary-build/snapshot/empty-stores.js.map +1 -0
  1186. package/dist/text/summary-build/snapshot/graph-stores.d.ts +42 -0
  1187. package/dist/text/summary-build/snapshot/graph-stores.js +148 -0
  1188. package/dist/text/summary-build/snapshot/graph-stores.js.map +1 -0
  1189. package/dist/text/summary-build/snapshot/helpers.d.ts +17 -0
  1190. package/dist/text/summary-build/snapshot/helpers.js +65 -0
  1191. package/dist/text/summary-build/snapshot/helpers.js.map +1 -0
  1192. package/dist/text/summary-build/snapshot/index.d.ts +63 -0
  1193. package/dist/text/summary-build/snapshot/index.js +106 -0
  1194. package/dist/text/summary-build/snapshot/index.js.map +1 -0
  1195. package/dist/text/summary-build/snapshot/serial-store.d.ts +29 -0
  1196. package/dist/text/summary-build/snapshot/serial-store.js +92 -0
  1197. package/dist/text/summary-build/snapshot/serial-store.js.map +1 -0
  1198. package/dist/text/summary-build/snapshot-io.d.ts +14 -0
  1199. package/dist/text/summary-build/snapshot-io.js +25 -0
  1200. package/dist/text/summary-build/snapshot-io.js.map +1 -0
  1201. package/dist/text/summary-build/source.d.ts +39 -0
  1202. package/dist/text/summary-build/source.js +30 -0
  1203. package/dist/text/summary-build/source.js.map +1 -0
  1204. package/dist/text/summary-build/types.d.ts +34 -0
  1205. package/dist/text/summary-build/types.js +1 -0
  1206. package/dist/text/summary-build/types.js.map +1 -0
  1207. package/dist/worker-DWasYKWW.d.cts +143 -0
  1208. package/dist/worker.cjs +5560 -2312
  1209. package/dist/worker.cjs.map +1 -1
  1210. package/dist/worker.d.cts +1 -2
  1211. package/dist/worker.d.ts +2 -2
  1212. package/dist/worker.js +1 -1
  1213. package/dist/worker.js.map +1 -1
  1214. package/package.json +3 -2
  1215. package/dist/archive/query/archive-view.d.ts +0 -26
  1216. package/dist/archive/query/archive-view.js +0 -4540
  1217. package/dist/archive/query/archive-view.js.map +0 -1
  1218. package/dist/archive/query/continuation-cursor.d.ts +0 -61
  1219. package/dist/archive/query/continuation-cursor.js +0 -363
  1220. package/dist/archive/query/continuation-cursor.js.map +0 -1
  1221. package/dist/archive/query/index.d.ts +0 -29
  1222. package/dist/archive/query/index.js +0 -63
  1223. package/dist/archive/query/index.js.map +0 -1
  1224. package/dist/archive/query/lexical-search.js.map +0 -1
  1225. package/dist/archive/query/search-cache.d.ts +0 -192
  1226. package/dist/archive/query/search-cache.js +0 -1248
  1227. package/dist/archive/query/search-cache.js.map +0 -1
  1228. package/dist/archive/search-index/index.d.ts +0 -26
  1229. package/dist/archive/search-index/index.js +0 -29
  1230. package/dist/archive/search-index/index.js.map +0 -1
  1231. package/dist/archive/search-index/search-index.d.ts +0 -26
  1232. package/dist/archive/search-index/search-index.js +0 -555
  1233. package/dist/archive/search-index/search-index.js.map +0 -1
  1234. package/dist/archive/search-index/search-tokenizer.js +0 -225
  1235. package/dist/archive/search-index/search-tokenizer.js.map +0 -1
  1236. package/dist/common/cli-command.js.map +0 -1
  1237. package/dist/common/data-dir.js +0 -48
  1238. package/dist/common/data-dir.js.map +0 -1
  1239. package/dist/common/language.js.map +0 -1
  1240. package/dist/common/llm-scope.js.map +0 -1
  1241. package/dist/common/logging.js.map +0 -1
  1242. package/dist/common/template.js.map +0 -1
  1243. package/dist/common/tinyld-language.js.map +0 -1
  1244. package/dist/common/wiki-graph-dir.d.ts +0 -10
  1245. package/dist/common/wiki-graph-dir.js +0 -41
  1246. package/dist/common/wiki-graph-dir.js.map +0 -1
  1247. package/dist/common/wiki-graph-temp.js +0 -21
  1248. package/dist/common/wiki-graph-temp.js.map +0 -1
  1249. package/dist/common/wiki-graph-uri.d.ts +0 -28
  1250. package/dist/common/wiki-graph-uri.js +0 -171
  1251. package/dist/common/wiki-graph-uri.js.map +0 -1
  1252. package/dist/context/index.d.ts +0 -1
  1253. package/dist/context/index.js +0 -13
  1254. package/dist/context/index.js.map +0 -1
  1255. package/dist/context/task-context.js +0 -111
  1256. package/dist/context/task-context.js.map +0 -1
  1257. package/dist/document/document.d.ts +0 -153
  1258. package/dist/document/document.js +0 -615
  1259. package/dist/document/document.js.map +0 -1
  1260. package/dist/document/fragments.d.ts +0 -63
  1261. package/dist/document/fragments.js +0 -371
  1262. package/dist/document/fragments.js.map +0 -1
  1263. package/dist/document/stores.d.ts +0 -203
  1264. package/dist/document/stores.js +0 -1678
  1265. package/dist/document/stores.js.map +0 -1
  1266. package/dist/document/text-streams.d.ts +0 -86
  1267. package/dist/document/text-streams.js +0 -515
  1268. package/dist/document/text-streams.js.map +0 -1
  1269. package/dist/editor/clue.d.ts +0 -27
  1270. package/dist/editor/clue.js.map +0 -1
  1271. package/dist/editor/compressor.d.ts +0 -18
  1272. package/dist/editor/compressor.js +0 -68
  1273. package/dist/editor/compressor.js.map +0 -1
  1274. package/dist/editor/editor.d.ts +0 -39
  1275. package/dist/editor/editor.js +0 -253
  1276. package/dist/editor/editor.js.map +0 -1
  1277. package/dist/editor/feedback.d.ts +0 -16
  1278. package/dist/editor/feedback.js.map +0 -1
  1279. package/dist/editor/index.d.ts +0 -17
  1280. package/dist/editor/index.js +0 -5
  1281. package/dist/editor/index.js.map +0 -1
  1282. package/dist/editor/language-review.d.ts +0 -14
  1283. package/dist/editor/language-review.js +0 -35
  1284. package/dist/editor/language-review.js.map +0 -1
  1285. package/dist/editor/log.d.ts +0 -37
  1286. package/dist/editor/log.js +0 -202
  1287. package/dist/editor/log.js.map +0 -1
  1288. package/dist/editor/markup.d.ts +0 -20
  1289. package/dist/editor/markup.js +0 -294
  1290. package/dist/editor/markup.js.map +0 -1
  1291. package/dist/editor/prompt-templates.js.map +0 -1
  1292. package/dist/editor/response.js.map +0 -1
  1293. package/dist/editor/review.d.ts +0 -34
  1294. package/dist/editor/review.js +0 -189
  1295. package/dist/editor/review.js.map +0 -1
  1296. package/dist/editor/types.js +0 -21
  1297. package/dist/editor/types.js.map +0 -1
  1298. package/dist/evidence-selection/anchor-resolver.d.ts +0 -43
  1299. package/dist/evidence-selection/anchor-resolver.js +0 -783
  1300. package/dist/evidence-selection/anchor-resolver.js.map +0 -1
  1301. package/dist/evidence-selection/anchor-types.d.ts +0 -27
  1302. package/dist/evidence-selection/anchor-types.js +0 -1
  1303. package/dist/evidence-selection/index.d.ts +0 -8
  1304. package/dist/evidence-selection/index.js +0 -32
  1305. package/dist/evidence-selection/index.js.map +0 -1
  1306. package/dist/evidence-selection/prompt.js.map +0 -1
  1307. package/dist/evidence-selection/quote-score.js.map +0 -1
  1308. package/dist/evidence-selection/selection-resolver.js +0 -303
  1309. package/dist/evidence-selection/selection-resolver.js.map +0 -1
  1310. package/dist/evidence-selection/text.js.map +0 -1
  1311. package/dist/facade/app.d.ts +0 -75
  1312. package/dist/facade/app.js +0 -141
  1313. package/dist/facade/app.js.map +0 -1
  1314. package/dist/facade/build-queue.d.ts +0 -181
  1315. package/dist/facade/build-queue.js +0 -1442
  1316. package/dist/facade/build-queue.js.map +0 -1
  1317. package/dist/facade/chapter-build.d.ts +0 -60
  1318. package/dist/facade/chapter-build.js +0 -1020
  1319. package/dist/facade/chapter-build.js.map +0 -1
  1320. package/dist/facade/chapter.d.ts +0 -168
  1321. package/dist/facade/chapter.js +0 -944
  1322. package/dist/facade/chapter.js.map +0 -1
  1323. package/dist/facade/digest.d.ts +0 -55
  1324. package/dist/facade/digest.js +0 -168
  1325. package/dist/facade/digest.js.map +0 -1
  1326. package/dist/facade/graph.d.ts +0 -60
  1327. package/dist/facade/graph.js +0 -203
  1328. package/dist/facade/graph.js.map +0 -1
  1329. package/dist/facade/import.d.ts +0 -49
  1330. package/dist/facade/import.js +0 -262
  1331. package/dist/facade/import.js.map +0 -1
  1332. package/dist/facade/index.d.ts +0 -39
  1333. package/dist/facade/index.js +0 -171
  1334. package/dist/facade/index.js.map +0 -1
  1335. package/dist/facade/knowledge-graph-build.d.ts +0 -75
  1336. package/dist/facade/knowledge-graph-build.js +0 -897
  1337. package/dist/facade/knowledge-graph-build.js.map +0 -1
  1338. package/dist/facade/llm-sampling.d.ts +0 -11
  1339. package/dist/facade/llm-sampling.js +0 -58
  1340. package/dist/facade/llm-sampling.js.map +0 -1
  1341. package/dist/facade/wiki-graph-archive.d.ts +0 -41
  1342. package/dist/facade/wiki-graph-archive.js +0 -130
  1343. package/dist/facade/wiki-graph-archive.js.map +0 -1
  1344. package/dist/gc/files.js +0 -141
  1345. package/dist/gc/files.js.map +0 -1
  1346. package/dist/gc/index.js.map +0 -1
  1347. package/dist/gc/lock.js +0 -137
  1348. package/dist/gc/lock.js.map +0 -1
  1349. package/dist/gc/runner.js +0 -129
  1350. package/dist/gc/runner.js.map +0 -1
  1351. package/dist/gc/tmp-gc.js +0 -57
  1352. package/dist/gc/tmp-gc.js.map +0 -1
  1353. package/dist/guaranteed/classifier.js.map +0 -1
  1354. package/dist/guaranteed/errors.js.map +0 -1
  1355. package/dist/guaranteed/index.js.map +0 -1
  1356. package/dist/guaranteed/request.js.map +0 -1
  1357. package/dist/guaranteed/response.js.map +0 -1
  1358. package/dist/index-B8NNnQ8P.d.ts +0 -424
  1359. package/dist/legacy-sdpub/upgrade.js +0 -795
  1360. package/dist/legacy-sdpub/upgrade.js.map +0 -1
  1361. package/dist/llm/cache.js +0 -35
  1362. package/dist/llm/cache.js.map +0 -1
  1363. package/dist/llm/client.d.ts +0 -26
  1364. package/dist/llm/client.js +0 -572
  1365. package/dist/llm/client.js.map +0 -1
  1366. package/dist/llm/context.js +0 -78
  1367. package/dist/llm/context.js.map +0 -1
  1368. package/dist/llm/errors.js.map +0 -1
  1369. package/dist/llm/index.d.ts +0 -7
  1370. package/dist/llm/index.js +0 -17
  1371. package/dist/llm/index.js.map +0 -1
  1372. package/dist/llm/request-log.js +0 -35
  1373. package/dist/llm/request-log.js.map +0 -1
  1374. package/dist/llm/sampling.js.map +0 -1
  1375. package/dist/output/epub/archive.js.map +0 -1
  1376. package/dist/output/epub/book.d.ts +0 -15
  1377. package/dist/output/epub/book.js.map +0 -1
  1378. package/dist/output/epub/content.js.map +0 -1
  1379. package/dist/output/epub/index.d.ts +0 -20
  1380. package/dist/output/epub/index.js.map +0 -1
  1381. package/dist/output/epub/navigation.js.map +0 -1
  1382. package/dist/output/epub/package.js.map +0 -1
  1383. package/dist/output/epub/shared.js.map +0 -1
  1384. package/dist/output/epub/templates.js +0 -26
  1385. package/dist/output/epub/templates.js.map +0 -1
  1386. package/dist/output/index.d.ts +0 -14
  1387. package/dist/output/index.js.map +0 -1
  1388. package/dist/output/plain-text.d.ts +0 -18
  1389. package/dist/output/plain-text.js.map +0 -1
  1390. package/dist/progress/index.js.map +0 -1
  1391. package/dist/progress/reporter.js.map +0 -1
  1392. package/dist/progress/tracker.js.map +0 -1
  1393. package/dist/reader/attention/attention.d.ts +0 -39
  1394. package/dist/reader/attention/attention.js +0 -123
  1395. package/dist/reader/attention/attention.js.map +0 -1
  1396. package/dist/reader/attention/index.d.ts +0 -9
  1397. package/dist/reader/attention/index.js +0 -5
  1398. package/dist/reader/attention/index.js.map +0 -1
  1399. package/dist/reader/attention/wave-reflection.d.ts +0 -21
  1400. package/dist/reader/attention/wave-reflection.js.map +0 -1
  1401. package/dist/reader/attention/working-memory.d.ts +0 -28
  1402. package/dist/reader/attention/working-memory.js.map +0 -1
  1403. package/dist/reader/chunk-batch/extract.d.ts +0 -13
  1404. package/dist/reader/chunk-batch/extract.js.map +0 -1
  1405. package/dist/reader/chunk-batch/extractor.d.ts +0 -17
  1406. package/dist/reader/chunk-batch/extractor.js +0 -337
  1407. package/dist/reader/chunk-batch/extractor.js.map +0 -1
  1408. package/dist/reader/chunk-batch/fragment-projection.d.ts +0 -34
  1409. package/dist/reader/chunk-batch/fragment-projection.js.map +0 -1
  1410. package/dist/reader/chunk-batch/index.d.ts +0 -12
  1411. package/dist/reader/chunk-batch/index.js +0 -13
  1412. package/dist/reader/chunk-batch/index.js.map +0 -1
  1413. package/dist/reader/chunk-batch/language.d.ts +0 -9
  1414. package/dist/reader/chunk-batch/language.js +0 -23
  1415. package/dist/reader/chunk-batch/language.js.map +0 -1
  1416. package/dist/reader/chunk-batch/parser.d.ts +0 -94
  1417. package/dist/reader/chunk-batch/parser.js +0 -640
  1418. package/dist/reader/chunk-batch/parser.js.map +0 -1
  1419. package/dist/reader/chunk-batch/prompt-templates.js.map +0 -1
  1420. package/dist/reader/chunk-batch/types.d.ts +0 -85
  1421. package/dist/reader/index.d.ts +0 -13
  1422. package/dist/reader/index.js +0 -7
  1423. package/dist/reader/index.js.map +0 -1
  1424. package/dist/reader/reader.d.ts +0 -37
  1425. package/dist/reader/reader.js +0 -82
  1426. package/dist/reader/reader.js.map +0 -1
  1427. package/dist/reader/segment/index.d.ts +0 -2
  1428. package/dist/reader/segment/index.js +0 -5
  1429. package/dist/reader/segment/index.js.map +0 -1
  1430. package/dist/reader/segment/intl-segmenter.js.map +0 -1
  1431. package/dist/reader/segment/segment.js +0 -9
  1432. package/dist/reader/segment/segment.js.map +0 -1
  1433. package/dist/reader/types.d.ts +0 -29
  1434. package/dist/source/epub/archive.js.map +0 -1
  1435. package/dist/source/epub/content.js.map +0 -1
  1436. package/dist/source/epub/document.js.map +0 -1
  1437. package/dist/source/epub/index.js.map +0 -1
  1438. package/dist/source/epub/navigation.js.map +0 -1
  1439. package/dist/source/epub/package.js.map +0 -1
  1440. package/dist/source/epub/xml.js.map +0 -1
  1441. package/dist/source/index.js.map +0 -1
  1442. package/dist/source/meta.js.map +0 -1
  1443. package/dist/source/plain-text.js.map +0 -1
  1444. package/dist/source/toc.d.ts +0 -16
  1445. package/dist/source/toc.js +0 -17
  1446. package/dist/source/toc.js.map +0 -1
  1447. package/dist/topology/grouping.d.ts +0 -15
  1448. package/dist/topology/grouping.js.map +0 -1
  1449. package/dist/topology/index.d.ts +0 -21
  1450. package/dist/topology/index.js +0 -5
  1451. package/dist/topology/index.js.map +0 -1
  1452. package/dist/topology/resource-segmentation.d.ts +0 -13
  1453. package/dist/topology/resource-segmentation.js.map +0 -1
  1454. package/dist/topology/segment-incision.d.ts +0 -18
  1455. package/dist/topology/segment-incision.js.map +0 -1
  1456. package/dist/topology/snake-detector.d.ts +0 -13
  1457. package/dist/topology/snake-detector.js +0 -520
  1458. package/dist/topology/snake-detector.js.map +0 -1
  1459. package/dist/topology/snake-graph-builder.d.ts +0 -14
  1460. package/dist/topology/snake-graph-builder.js +0 -76
  1461. package/dist/topology/snake-graph-builder.js.map +0 -1
  1462. package/dist/topology/topology.d.ts +0 -29
  1463. package/dist/topology/topology.js +0 -348
  1464. package/dist/topology/topology.js.map +0 -1
  1465. package/dist/topology/weights.d.ts +0 -10
  1466. package/dist/topology/weights.js +0 -84
  1467. package/dist/topology/weights.js.map +0 -1
  1468. package/dist/types-FVIqiLC9.d.cts +0 -24
  1469. package/dist/wikg/archive-uri.d.ts +0 -1
  1470. package/dist/wikg/archive-uri.js +0 -37
  1471. package/dist/wikg/archive-uri.js.map +0 -1
  1472. package/dist/wikg/archive.d.ts +0 -28
  1473. package/dist/wikg/archive.js +0 -496
  1474. package/dist/wikg/archive.js.map +0 -1
  1475. package/dist/wikg/index.d.ts +0 -31
  1476. package/dist/wikg/index.js +0 -60
  1477. package/dist/wikg/index.js.map +0 -1
  1478. package/dist/wikg/wikg-coordinator.d.ts +0 -45
  1479. package/dist/wikg/wikg-coordinator.js +0 -1687
  1480. package/dist/wikg/wikg-coordinator.js.map +0 -1
  1481. package/dist/wikg/wiki-graph-archive-file.d.ts +0 -42
  1482. package/dist/wikg/wiki-graph-archive-file.js +0 -78
  1483. package/dist/wikg/wiki-graph-archive-file.js.map +0 -1
  1484. package/dist/wikilink/index.d.ts +0 -10
  1485. package/dist/wikilink/index.js.map +0 -1
  1486. package/dist/wikilink/relation-discovery.d.ts +0 -31
  1487. package/dist/wikilink/relation-discovery.js +0 -477
  1488. package/dist/wikilink/relation-discovery.js.map +0 -1
  1489. package/dist/wikilink/types.d.ts +0 -23
  1490. package/dist/wikilink/window.d.ts +0 -7
  1491. package/dist/wikilink/window.js.map +0 -1
  1492. package/dist/wikimatch/enrichment.d.ts +0 -10
  1493. package/dist/wikimatch/enrichment.js +0 -55
  1494. package/dist/wikimatch/enrichment.js.map +0 -1
  1495. package/dist/wikimatch/index.d.ts +0 -16
  1496. package/dist/wikimatch/index.js +0 -66
  1497. package/dist/wikimatch/index.js.map +0 -1
  1498. package/dist/wikimatch/option-narrowing.d.ts +0 -17
  1499. package/dist/wikimatch/option-narrowing.js.map +0 -1
  1500. package/dist/wikimatch/options.d.ts +0 -14
  1501. package/dist/wikimatch/options.js +0 -155
  1502. package/dist/wikimatch/options.js.map +0 -1
  1503. package/dist/wikimatch/policy-judge.d.ts +0 -17
  1504. package/dist/wikimatch/policy-judge.js +0 -430
  1505. package/dist/wikimatch/policy-judge.js.map +0 -1
  1506. package/dist/wikimatch/range-suppression.js.map +0 -1
  1507. package/dist/wikimatch/surface-screening.d.ts +0 -16
  1508. package/dist/wikimatch/surface-screening.js +0 -168
  1509. package/dist/wikimatch/surface-screening.js.map +0 -1
  1510. package/dist/wikimatch/surface-window.d.ts +0 -6
  1511. package/dist/wikimatch/surface-window.js +0 -44
  1512. package/dist/wikimatch/surface-window.js.map +0 -1
  1513. package/dist/wikimatch/types.d.ts +0 -151
  1514. package/dist/wikimatch/wikispine.d.ts +0 -43
  1515. package/dist/wikimatch/wikispine.js.map +0 -1
  1516. package/dist/wikimatch/window.d.ts +0 -6
  1517. package/dist/wikimatch/window.js.map +0 -1
  1518. package/dist/wikimatch/words.js.map +0 -1
  1519. package/dist/wikipage/cache.d.ts +0 -18
  1520. package/dist/wikipage/cache.js +0 -404
  1521. package/dist/wikipage/cache.js.map +0 -1
  1522. package/dist/wikipage/fetch-log.js +0 -143
  1523. package/dist/wikipage/fetch-log.js.map +0 -1
  1524. package/dist/wikipage/index.d.ts +0 -14
  1525. package/dist/wikipage/index.js +0 -17
  1526. package/dist/wikipage/index.js.map +0 -1
  1527. package/dist/wikipage/normalizer.d.ts +0 -14
  1528. package/dist/wikipage/normalizer.js +0 -147
  1529. package/dist/wikipage/normalizer.js.map +0 -1
  1530. package/dist/wikipage/rate-limiter.js.map +0 -1
  1531. package/dist/wikipage/resolver.d.ts +0 -26
  1532. package/dist/wikipage/resolver.js +0 -325
  1533. package/dist/wikipage/resolver.js.map +0 -1
  1534. package/dist/wikipage/types.d.ts +0 -96
  1535. package/dist/wikipage/wikimedia-client.d.ts +0 -48
  1536. package/dist/wikipage/wikimedia-client.js +0 -397
  1537. package/dist/wikipage/wikimedia-client.js.map +0 -1
  1538. package/dist/worker-BgQ0Xl8T.d.cts +0 -181
  1539. /package/dist/{evidence-selection → api/chapter-build}/types.js +0 -0
  1540. /package/dist/{evidence-selection → api/chapter-build}/types.js.map +0 -0
  1541. /package/dist/{facade → api/knowledge-graph-build}/types.js +0 -0
  1542. /package/dist/{facade → api/knowledge-graph-build}/types.js.map +0 -0
  1543. /package/dist/{facade → api}/types.d.ts +0 -0
  1544. /package/dist/{gc → api}/types.js +0 -0
  1545. /package/dist/{gc → api}/types.js.map +0 -0
  1546. /package/dist/{guaranteed → document/directory}/types.js +0 -0
  1547. /package/dist/{guaranteed → document/directory}/types.js.map +0 -0
  1548. /package/dist/{llm → document/stores}/types.js +0 -0
  1549. /package/dist/{llm → document/stores}/types.js.map +0 -0
  1550. /package/dist/{guaranteed → external/guaranteed}/classifier.d.ts +0 -0
  1551. /package/dist/{guaranteed → external/guaranteed}/classifier.js +0 -0
  1552. /package/dist/{guaranteed → external/guaranteed}/errors.d.ts +0 -0
  1553. /package/dist/{guaranteed → external/guaranteed}/errors.js +0 -0
  1554. /package/dist/{guaranteed → external/guaranteed}/index.d.ts +0 -0
  1555. /package/dist/{guaranteed → external/guaranteed}/index.js +0 -0
  1556. /package/dist/{guaranteed → external/guaranteed}/request.d.ts +0 -0
  1557. /package/dist/{guaranteed → external/guaranteed}/request.js +0 -0
  1558. /package/dist/{guaranteed → external/guaranteed}/response.d.ts +0 -0
  1559. /package/dist/{guaranteed → external/guaranteed}/response.js +0 -0
  1560. /package/dist/{guaranteed → external/guaranteed}/types.d.ts +0 -0
  1561. /package/dist/{progress → external/guaranteed}/types.js +0 -0
  1562. /package/dist/{progress → external/guaranteed}/types.js.map +0 -0
  1563. /package/dist/{llm → external/llm}/cache.d.ts +0 -0
  1564. /package/dist/{llm → external/llm}/context.d.ts +0 -0
  1565. /package/dist/{llm → external/llm}/errors.d.ts +0 -0
  1566. /package/dist/{llm → external/llm}/errors.js +0 -0
  1567. /package/dist/{llm → external/llm}/request-log.d.ts +0 -0
  1568. /package/dist/{llm → external/llm}/sampling.d.ts +0 -0
  1569. /package/dist/{llm → external/llm}/sampling.js +0 -0
  1570. /package/dist/{llm → external/llm}/types.d.ts +0 -0
  1571. /package/dist/{reader/chunk-batch → external/llm}/types.js +0 -0
  1572. /package/dist/{reader/chunk-batch → external/llm}/types.js.map +0 -0
  1573. /package/dist/{wikimatch → external/wikimatch}/option-narrowing.js +0 -0
  1574. /package/dist/{wikimatch → external/wikimatch}/range-suppression.d.ts +0 -0
  1575. /package/dist/{wikimatch → external/wikimatch}/range-suppression.js +0 -0
  1576. /package/dist/{reader/segment → external/wikimatch}/types.js +0 -0
  1577. /package/dist/{reader/segment → external/wikimatch}/types.js.map +0 -0
  1578. /package/dist/{wikimatch → external/wikimatch}/wikispine.js +0 -0
  1579. /package/dist/{wikimatch → external/wikimatch}/window.js +0 -0
  1580. /package/dist/{wikimatch → external/wikimatch}/words.d.ts +0 -0
  1581. /package/dist/{wikimatch → external/wikimatch}/words.js +0 -0
  1582. /package/dist/{wikipage → external/wikipage}/fetch-log.d.ts +0 -0
  1583. /package/dist/{wikipage → external/wikipage}/rate-limiter.d.ts +0 -0
  1584. /package/dist/{wikipage → external/wikipage}/rate-limiter.js +0 -0
  1585. /package/dist/{reader → external/wikipage}/types.js +0 -0
  1586. /package/dist/{reader → external/wikipage}/types.js.map +0 -0
  1587. /package/dist/{source → graph/evidence-selection/anchor}/types.js +0 -0
  1588. /package/dist/{source → graph/evidence-selection/anchor}/types.js.map +0 -0
  1589. /package/dist/{evidence-selection → graph/evidence-selection}/prompt.d.ts +0 -0
  1590. /package/dist/{evidence-selection → graph/evidence-selection}/prompt.js +0 -0
  1591. /package/dist/{evidence-selection → graph/evidence-selection}/quote-score.d.ts +0 -0
  1592. /package/dist/{evidence-selection → graph/evidence-selection}/quote-score.js +0 -0
  1593. /package/dist/{evidence-selection/selection-resolver.d.ts → graph/evidence-selection/resolver.d.ts} +0 -0
  1594. /package/dist/{evidence-selection → graph/evidence-selection}/text.d.ts +0 -0
  1595. /package/dist/{evidence-selection → graph/evidence-selection}/text.js +0 -0
  1596. /package/dist/{evidence-selection → graph/evidence-selection}/types.d.ts +0 -0
  1597. /package/dist/{wikilink → graph/evidence-selection}/types.js +0 -0
  1598. /package/dist/{wikilink → graph/evidence-selection}/types.js.map +0 -0
  1599. /package/dist/{wikimatch → graph/knowledge-build}/types.js +0 -0
  1600. /package/dist/{wikimatch → graph/knowledge-build}/types.js.map +0 -0
  1601. /package/dist/{wikipage → graph/reading-build}/types.js +0 -0
  1602. /package/dist/{wikipage → graph/reading-build}/types.js.map +0 -0
  1603. /package/dist/{topology → graph/topology}/grouping.js +0 -0
  1604. /package/dist/{topology → graph/topology}/resource-segmentation.js +0 -0
  1605. /package/dist/{topology → graph/topology}/segment-incision.js +0 -0
  1606. /package/dist/{evidence-selection/anchor-types.js.map → graph/topology/snake/types.js.map} +0 -0
  1607. /package/dist/{wikilink → graph/wikilink}/index.js +0 -0
  1608. /package/dist/{output/epub/model.js.map → graph/wikilink/types.js.map} +0 -0
  1609. /package/dist/{wikilink → graph/wikilink}/window.js +0 -0
  1610. /package/dist/{source/adapter.js.map → retrieval/query/archive-view/types.js.map} +0 -0
  1611. /package/dist/{archive → retrieval}/query/lexical-search.d.ts +0 -0
  1612. /package/dist/{archive → retrieval}/query/lexical-search.js +0 -0
  1613. /package/dist/{archive/search-index/search-tokenizer.d.ts → retrieval/search-index/search/tokenizer.d.ts} +0 -0
  1614. /package/dist/{common → runtime/common}/cli-command.d.ts +0 -0
  1615. /package/dist/{common → runtime/common}/cli-command.js +0 -0
  1616. /package/dist/{common → runtime/common}/data-dir.d.ts +0 -0
  1617. /package/dist/{common → runtime/common}/language.d.ts +0 -0
  1618. /package/dist/{common → runtime/common}/language.js +0 -0
  1619. /package/dist/{common → runtime/common}/llm-scope.d.ts +0 -0
  1620. /package/dist/{common → runtime/common}/llm-scope.js +0 -0
  1621. /package/dist/{common → runtime/common}/logging.d.ts +0 -0
  1622. /package/dist/{common → runtime/common}/logging.js +0 -0
  1623. /package/dist/{common → runtime/common}/template.d.ts +0 -0
  1624. /package/dist/{common → runtime/common}/template.js +0 -0
  1625. /package/dist/{common → runtime/common}/tinyld-language.d.ts +0 -0
  1626. /package/dist/{common → runtime/common}/tinyld-language.js +0 -0
  1627. /package/dist/{common/wiki-graph-temp.d.ts → runtime/common/wiki-graph/temp.d.ts} +0 -0
  1628. /package/dist/{context/task-context.d.ts → runtime/context/task.d.ts} +0 -0
  1629. /package/dist/{gc → runtime/gc}/files.d.ts +0 -0
  1630. /package/dist/{gc → runtime/gc}/index.d.ts +0 -0
  1631. /package/dist/{gc → runtime/gc}/index.js +0 -0
  1632. /package/dist/{gc → runtime/gc}/lock.d.ts +0 -0
  1633. /package/dist/{gc → runtime/gc}/runner.d.ts +0 -0
  1634. /package/dist/{gc/tmp-gc.d.ts → runtime/gc/temp.d.ts} +0 -0
  1635. /package/dist/{gc → runtime/gc}/types.d.ts +0 -0
  1636. /package/dist/{progress → runtime/progress}/index.d.ts +0 -0
  1637. /package/dist/{progress → runtime/progress}/index.js +0 -0
  1638. /package/dist/{progress → runtime/progress}/reporter.d.ts +0 -0
  1639. /package/dist/{progress → runtime/progress}/reporter.js +0 -0
  1640. /package/dist/{progress → runtime/progress}/tracker.d.ts +0 -0
  1641. /package/dist/{progress → runtime/progress}/tracker.js +0 -0
  1642. /package/dist/{progress → runtime/progress}/types.d.ts +0 -0
  1643. /package/dist/{legacy-sdpub/upgrade.d.ts → storage/migration/legacy-sdpub/upgrade/index.d.ts} +0 -0
  1644. /package/dist/{editor → text/editor}/clue.js +0 -0
  1645. /package/dist/{editor → text/editor}/feedback.js +0 -0
  1646. /package/dist/{editor → text/editor}/prompt-templates.d.ts +0 -0
  1647. /package/dist/{editor → text/editor}/prompt-templates.js +0 -0
  1648. /package/dist/{editor → text/editor}/response.d.ts +0 -0
  1649. /package/dist/{editor → text/editor}/response.js +0 -0
  1650. /package/dist/{editor → text/editor}/types.d.ts +0 -0
  1651. /package/dist/{output → text/output}/epub/archive.d.ts +0 -0
  1652. /package/dist/{output → text/output}/epub/archive.js +0 -0
  1653. /package/dist/{output → text/output}/epub/book.js +0 -0
  1654. /package/dist/{output → text/output}/epub/content.d.ts +0 -0
  1655. /package/dist/{output → text/output}/epub/content.js +0 -0
  1656. /package/dist/{output → text/output}/epub/index.js +0 -0
  1657. /package/dist/{output → text/output}/epub/model.d.ts +0 -0
  1658. /package/dist/{output → text/output}/epub/model.js +0 -0
  1659. /package/dist/{output → text/output}/epub/navigation.d.ts +0 -0
  1660. /package/dist/{output → text/output}/epub/navigation.js +0 -0
  1661. /package/dist/{output → text/output}/epub/package.d.ts +0 -0
  1662. /package/dist/{output → text/output}/epub/package.js +0 -0
  1663. /package/dist/{output → text/output}/epub/shared.d.ts +0 -0
  1664. /package/dist/{output → text/output}/epub/shared.js +0 -0
  1665. /package/dist/{output → text/output}/epub/templates.d.ts +0 -0
  1666. /package/dist/{output → text/output}/index.js +0 -0
  1667. /package/dist/{output → text/output}/plain-text.js +0 -0
  1668. /package/dist/{reader → text/reader}/attention/wave-reflection.js +0 -0
  1669. /package/dist/{reader → text/reader}/attention/working-memory.js +0 -0
  1670. /package/dist/{reader → text/reader}/chunk-batch/extract.js +0 -0
  1671. /package/dist/{reader → text/reader}/chunk-batch/fragment-projection.js +0 -0
  1672. /package/dist/{reader → text/reader}/chunk-batch/prompt-templates.d.ts +0 -0
  1673. /package/dist/{reader → text/reader}/chunk-batch/prompt-templates.js +0 -0
  1674. /package/dist/{reader/segment/segment.d.ts → text/reader/segment/core.d.ts} +0 -0
  1675. /package/dist/{reader → text/reader}/segment/intl-segmenter.d.ts +0 -0
  1676. /package/dist/{reader → text/reader}/segment/intl-segmenter.js +0 -0
  1677. /package/dist/{reader → text/reader}/segment/types.d.ts +0 -0
  1678. /package/dist/{source → text/source}/adapter.d.ts +0 -0
  1679. /package/dist/{source → text/source}/adapter.js +0 -0
  1680. /package/dist/{source → text/source}/epub/archive.d.ts +0 -0
  1681. /package/dist/{source → text/source}/epub/archive.js +0 -0
  1682. /package/dist/{source → text/source}/epub/content.d.ts +0 -0
  1683. /package/dist/{source → text/source}/epub/content.js +0 -0
  1684. /package/dist/{source → text/source}/epub/document.d.ts +0 -0
  1685. /package/dist/{source → text/source}/epub/document.js +0 -0
  1686. /package/dist/{source → text/source}/epub/index.d.ts +0 -0
  1687. /package/dist/{source → text/source}/epub/index.js +0 -0
  1688. /package/dist/{source → text/source}/epub/navigation.d.ts +0 -0
  1689. /package/dist/{source → text/source}/epub/navigation.js +0 -0
  1690. /package/dist/{source → text/source}/epub/package.d.ts +0 -0
  1691. /package/dist/{source → text/source}/epub/package.js +0 -0
  1692. /package/dist/{source → text/source}/epub/xml.d.ts +0 -0
  1693. /package/dist/{source → text/source}/epub/xml.js +0 -0
  1694. /package/dist/{source → text/source}/index.d.ts +0 -0
  1695. /package/dist/{source → text/source}/index.js +0 -0
  1696. /package/dist/{source → text/source}/meta.d.ts +0 -0
  1697. /package/dist/{source → text/source}/meta.js +0 -0
  1698. /package/dist/{source → text/source}/plain-text.d.ts +0 -0
  1699. /package/dist/{source → text/source}/plain-text.js +0 -0
  1700. /package/dist/{source → text/source}/types.d.ts +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/reader/chunk-batch/parser.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport {\n GuaranteedParseValidationError,\n ParsedJsonError,\n requestGuaranteedJson,\n} from \"../../guaranteed/index.js\";\nimport type { LLMessage } from \"../../llm/index.js\";\nimport {\n ChunkImportance,\n ChunkRetention,\n expectChunkImportance,\n expectChunkRetention,\n type SentenceId,\n} from \"../../document/index.js\";\nimport {\n resolveEvidenceSelectionList,\n type EvidenceSelectionCandidate,\n type EvidenceSelectionList,\n EvidenceResolver,\n type EvidenceResolutionFailure,\n type RankedSentenceCandidate,\n} from \"../../evidence-selection/index.js\";\nimport type {\n ChunkBatch,\n ChunkExtractionSentence,\n ChunkImportanceAnnotation,\n ChunkLink,\n CognitiveChunk,\n SentenceTextSource,\n} from \"./types.js\";\nimport type { FragmentProjection, TextSpan } from \"./fragment-projection.js\";\n\nconst MAX_CHOICE_RETRIES = 3;\n\nconst chunkLinkSchema = z.object({\n from: z.union([z.number().int(), z.string()]),\n strength: z.string().optional(),\n to: z.union([z.number().int(), z.string()]),\n});\nconst evidenceSelectionItemSchema = z\n .object({\n quote: z.string().optional(),\n sentence_id: z.string().optional(),\n })\n .passthrough();\nconst chunkEvidenceSchema = z.union([\n z.record(z.string(), z.unknown()),\n z.array(evidenceSelectionItemSchema),\n]);\n\nconst userFocusedChunkSchema = z\n .object({\n content: z.string(),\n evidence: chunkEvidenceSchema.nullish(),\n label: z.string(),\n retention: z.enum([\n ChunkRetention.Verbatim,\n ChunkRetention.Detailed,\n ChunkRetention.Focused,\n ChunkRetention.Relevant,\n ]),\n temp_id: z.string(),\n })\n .passthrough();\n\nexport const userFocusedResponseSchema = z.object({\n chunks: z.array(userFocusedChunkSchema),\n fragment_summary: z.string(),\n links: z.array(chunkLinkSchema),\n});\n\nconst bookCoherenceChunkSchema = z\n .object({\n content: z.string(),\n evidence: chunkEvidenceSchema.nullish(),\n importance: z.enum([\n ChunkImportance.Critical,\n ChunkImportance.Important,\n ChunkImportance.Helpful,\n ]),\n label: z.string(),\n temp_id: z.string(),\n })\n .passthrough();\n\nconst importanceAnnotationSchema = z.object({\n chunk_id: z.number().int(),\n importance: z.enum([\n ChunkImportance.Critical,\n ChunkImportance.Important,\n ChunkImportance.Helpful,\n ]),\n});\n\nexport const bookCoherenceResponseSchema = z.object({\n chunks: z.array(bookCoherenceChunkSchema),\n importance_annotations: z.array(importanceAnnotationSchema),\n links: z.array(chunkLinkSchema),\n});\n\nconst choiceResponseSchema = z.object({\n choice: z.string(),\n});\n\ntype UserFocusedChunkData = z.infer<typeof userFocusedChunkSchema>;\ntype BookCoherenceChunkData = z.infer<typeof bookCoherenceChunkSchema>;\nexport type UserFocusedResponseData = z.infer<typeof userFocusedResponseSchema>;\nexport type BookCoherenceResponseData = z.infer<\n typeof bookCoherenceResponseSchema\n>;\ntype ExtractedChunkData = UserFocusedChunkData | BookCoherenceChunkData;\ntype RawChunkLink = z.infer<typeof chunkLinkSchema>;\ntype RawChunkEvidence = z.infer<typeof chunkEvidenceSchema>;\ntype ChoiceFieldName = \"evidence\" | \"start_anchor\" | \"end_anchor\";\n\nexport enum ChunkMetadataField {\n Retention = \"retention\",\n Importance = \"importance\",\n}\n\nexport interface ExtractChunksResult {\n readonly chunkBatch: ChunkBatch;\n readonly fragmentSummary?: string;\n}\n\ninterface ResolveChunkEvidenceInput {\n readonly data: ExtractedChunkData;\n readonly chunkIndex: number;\n readonly chunkLabel: string;\n readonly isLastGenerationAttempt: boolean;\n}\n\ninterface SelectAmbiguousCandidateInput {\n readonly candidates: readonly RankedSentenceCandidate[];\n readonly chunkData: ExtractedChunkData;\n readonly chunkIndex: number;\n readonly chunkLabel: string;\n readonly fieldName: ChoiceFieldName;\n}\n\ntype GuaranteedChoiceRequest = (\n messages: readonly LLMessage[],\n index: number,\n maxRetries: number,\n) => Promise<string>;\n\nexport class ChunkBatchParser<\n TData extends UserFocusedResponseData | BookCoherenceResponseData,\n> {\n readonly #choiceSystemPrompt: string;\n readonly #evidenceResolver = new EvidenceResolver();\n readonly #metadataField: ChunkMetadataField;\n readonly #projection: FragmentProjection;\n readonly #responseIntentClassifierPrompt: string;\n readonly #requestChoice: GuaranteedChoiceRequest;\n readonly #sentenceTextByKey: Readonly<Record<string, string>>;\n readonly #sentenceTextSource: SentenceTextSource;\n readonly #wordsCountByKey: Readonly<Record<string, number>>;\n readonly #validImportanceChunkIds: Readonly<Record<string, true>> | undefined;\n readonly #visibleChunkIds: readonly number[];\n\n public constructor(input: {\n choiceSystemPrompt: string;\n metadataField: ChunkMetadataField;\n projection: FragmentProjection;\n responseIntentClassifierPrompt: string;\n requestChoice: GuaranteedChoiceRequest;\n sentenceTextSource: SentenceTextSource;\n sentences: readonly ChunkExtractionSentence[];\n validImportanceChunkIds?: readonly number[];\n visibleChunkIds: readonly number[];\n }) {\n this.#choiceSystemPrompt = input.choiceSystemPrompt;\n this.#metadataField = input.metadataField;\n this.#projection = input.projection;\n this.#responseIntentClassifierPrompt = input.responseIntentClassifierPrompt;\n this.#requestChoice = input.requestChoice;\n this.#sentenceTextSource = input.sentenceTextSource;\n this.#visibleChunkIds = input.visibleChunkIds;\n\n this.#wordsCountByKey = createWordsCountRecord(\n input.projection.sentences.map((sentence) => ({\n sentenceId: sentence.sentenceId,\n wordsCount: sentence.wordsCount,\n })),\n );\n this.#sentenceTextByKey = createSentenceTextRecord(input.projection);\n this.#validImportanceChunkIds =\n input.validImportanceChunkIds === undefined\n ? undefined\n : createMembershipRecord(input.validImportanceChunkIds);\n }\n\n public async parse(\n parsedData: TData,\n input: {\n isLastGenerationAttempt: boolean;\n },\n ): Promise<ExtractChunksResult> {\n const issues: string[] = [];\n const chunks: ChunkBatch[\"chunks\"] = [];\n const tempIds: string[] = [];\n const importanceAnnotations =\n \"importance_annotations\" in parsedData\n ? this.#validateImportanceAnnotations(\n parsedData.importance_annotations,\n issues,\n )\n : undefined;\n const fragmentSummary =\n \"fragment_summary\" in parsedData\n ? parsedData.fragment_summary\n : undefined;\n const links = normalizeChunkLinks(parsedData.links);\n\n for (const [index, data] of parsedData.chunks.entries()) {\n const chunkIndex = index + 1;\n const chunkIssues: string[] = [];\n const label = data.label.trim();\n const content = data.content.trim();\n\n if (label === \"\") {\n chunkIssues.push(\n `Chunk #${chunkIndex}: Missing or empty \"label\" field`,\n );\n }\n\n if (content === \"\") {\n chunkIssues.push(\n `Chunk #${chunkIndex}: Missing or empty \"content\" field`,\n );\n }\n\n const [matchedSentenceIds, evidenceFailure] =\n await this.#resolveChunkEvidence({\n chunkIndex,\n chunkLabel: label,\n data,\n isLastGenerationAttempt: input.isLastGenerationAttempt,\n });\n\n if (matchedSentenceIds.length === 0) {\n if (evidenceFailure !== undefined) {\n chunkIssues.push(\n `Chunk #${chunkIndex} (\"${label}\"): ${evidenceFailure.message}`,\n );\n } else {\n chunkIssues.push(\n `Chunk #${chunkIndex} (\"${label}\"): Missing evidence`,\n );\n }\n }\n\n if (chunkIssues.length > 0) {\n issues.push(...chunkIssues);\n continue;\n }\n\n const primarySentenceId = matchedSentenceIds[0];\n\n if (primarySentenceId === undefined) {\n issues.push(\n `Chunk #${chunkIndex} (\"${label}\"): Unable to resolve any sentence IDs`,\n );\n continue;\n }\n\n const totalWordsCount = matchedSentenceIds.reduce((sum, sentenceId) => {\n return (\n sum + (this.#wordsCountByKey[createSentenceKey(sentenceId)] ?? 0)\n );\n }, 0);\n\n if (this.#metadataField === ChunkMetadataField.Retention) {\n const chunkData = data as UserFocusedChunkData;\n\n chunks.push({\n content,\n generation: 0,\n id: 0,\n label,\n links: [],\n retention: expectChunkRetention(chunkData.retention),\n sentenceId: primarySentenceId,\n sentenceIds: [...matchedSentenceIds],\n wordsCount: totalWordsCount,\n });\n } else {\n const chunkData = data as BookCoherenceChunkData;\n\n chunks.push({\n content,\n generation: 0,\n id: 0,\n importance: expectChunkImportance(chunkData.importance),\n label,\n links: [],\n sentenceId: primarySentenceId,\n sentenceIds: [...matchedSentenceIds],\n wordsCount: totalWordsCount,\n });\n }\n\n tempIds.push(data.temp_id);\n }\n\n const validLinks = this.#filterAndValidateLinks({\n issues,\n links,\n tempIds,\n visibleChunkIds: this.#visibleChunkIds,\n });\n\n if (issues.length > 0) {\n throw new ParsedJsonError(issues);\n }\n\n return {\n chunkBatch: {\n chunks,\n links: validLinks,\n orderCorrect: true,\n tempIds,\n ...(importanceAnnotations === undefined\n ? {}\n : { importanceAnnotations }),\n },\n ...(fragmentSummary === undefined ? {} : { fragmentSummary }),\n };\n }\n\n public async getChunkSourceSentences(\n chunk: CognitiveChunk,\n ): Promise<string[]> {\n const sourceSentences: string[] = [];\n\n for (const sentenceId of chunk.sentenceIds) {\n const sentenceKey = createSentenceKey(sentenceId);\n const sentenceText = this.#sentenceTextByKey[sentenceKey];\n\n if (sentenceText !== undefined) {\n sourceSentences.push(sentenceText);\n continue;\n }\n\n sourceSentences.push(\n await this.#sentenceTextSource.getSentence(sentenceId),\n );\n }\n\n return sourceSentences;\n }\n\n async #resolveChunkEvidence(\n input: ResolveChunkEvidenceInput,\n ): Promise<\n readonly [\n sentenceIds: readonly SentenceId[],\n failure: EvidenceResolutionFailure | undefined,\n ]\n > {\n const evidence = input.data.evidence;\n\n if (evidence === undefined || evidence === null) {\n return [[], undefined];\n }\n\n if (!isRecord(evidence) && !Array.isArray(evidence)) {\n return [\n [],\n {\n candidates: [],\n code: \"invalid_evidence\",\n fieldName: \"evidence\",\n message: `Chunk #${input.chunkIndex} (\"${input.chunkLabel}\"): evidence must be an object or array`,\n },\n ];\n }\n\n const projectedSentences = this.#projection.sentences;\n const candidateSentenceIds = projectedSentences.map(\n (sentence) => sentence.sentenceId,\n );\n const selectionSentences = projectedSentences.map((sentence, index) => ({\n id: `S${index + 1}`,\n sentenceId: sentence.sentenceId,\n text: sentence.projectedText,\n }));\n const selectionEvidence = createEvidenceSelectionList(evidence);\n const [selectionResolution, selectionFailure] =\n selectionEvidence === undefined\n ? [undefined, undefined]\n : resolveEvidenceSelectionList({\n evidence: selectionEvidence,\n sentences: selectionSentences,\n });\n\n if (selectionResolution !== undefined) {\n return [selectionResolution.sentenceIds, undefined];\n }\n\n const exactMatchSentenceIds = Array.isArray(evidence)\n ? []\n : this.#resolveExactProjectionEvidence(evidence);\n\n if (exactMatchSentenceIds.length > 0) {\n return [exactMatchSentenceIds, undefined];\n }\n\n const candidateTexts = projectedSentences.map(\n (sentence) => sentence.projectedText,\n );\n const [resolution, failure] = Array.isArray(evidence)\n ? [undefined, undefined]\n : this.#evidenceResolver.resolve(\n evidence,\n candidateSentenceIds,\n candidateTexts,\n );\n\n if (resolution !== undefined) {\n return [resolution.sentenceIds, undefined];\n }\n\n const fallbackFailure =\n selectionFailure === undefined\n ? failure\n : toEvidenceResolutionFailure(selectionFailure, \"evidence\");\n\n if (fallbackFailure === undefined) {\n return [[], undefined];\n }\n\n const shouldUseChoice =\n fallbackFailure.code.startsWith(\"ambiguous\") ||\n (fallbackFailure.code === \"low_confidence\" &&\n input.isLastGenerationAttempt &&\n fallbackFailure.candidates.length > 0);\n\n if (!shouldUseChoice) {\n return [[], fallbackFailure];\n }\n\n const choiceFieldName = toChoiceFieldName(fallbackFailure.fieldName);\n\n if (choiceFieldName === undefined) {\n return [[], fallbackFailure];\n }\n\n const [choiceCandidate, choiceFailure] =\n await this.#chooseAmbiguousCandidate({\n candidates: fallbackFailure.candidates,\n chunkData: input.data,\n chunkIndex: input.chunkIndex,\n chunkLabel: input.chunkLabel,\n fieldName: choiceFieldName,\n });\n\n if (choiceFailure !== undefined) {\n if (choiceFailure.code === \"choice_parse_failed_full_fragment\") {\n return [candidateSentenceIds, undefined];\n }\n\n return [[], choiceFailure];\n }\n\n if (choiceCandidate === undefined) {\n return [\n [],\n {\n candidates: fallbackFailure.candidates,\n code: \"choice_failed\",\n fieldName: fallbackFailure.fieldName,\n message: `Second-stage choice failed for ${fallbackFailure.fieldName}: no candidate returned.`,\n },\n ];\n }\n\n if (choiceFieldName === \"evidence\") {\n return [[choiceCandidate.sentenceId], undefined];\n }\n\n if (Array.isArray(evidence)) {\n return [[], fallbackFailure];\n }\n\n if (input.isLastGenerationAttempt) {\n const [resolved, resolveFailure] =\n this.#evidenceResolver.resolveWithOverrides({\n candidateSentenceIds,\n candidateTexts,\n evidence,\n overrides: {\n [choiceFieldName]: choiceCandidate,\n },\n });\n\n if (resolved !== undefined) {\n return [resolved.sentenceIds, undefined];\n }\n\n return [[], resolveFailure];\n }\n\n const repairedEvidence: Record<string, unknown> = {\n ...evidence,\n [choiceFieldName]: {\n mode: \"full\",\n text: choiceCandidate.text,\n },\n };\n const [resolved, resolveFailure] = this.#evidenceResolver.resolve(\n repairedEvidence,\n candidateSentenceIds,\n candidateTexts,\n );\n\n if (resolved !== undefined) {\n return [resolved.sentenceIds, undefined];\n }\n\n return [[], resolveFailure];\n }\n\n #resolveExactProjectionEvidence(\n evidence: Record<string, unknown>,\n ): SentenceId[] {\n const startValue = evidence.start_anchor ?? evidence.start;\n const [startAnchor, startFailure] = this.#evidenceResolver.parseAnchor(\n startValue,\n \"start_anchor\",\n );\n\n if (startFailure !== undefined || startAnchor?.text === undefined) {\n return [];\n }\n\n const startMatch = expectSingleSpan(\n this.#projection.findExactMatches(startAnchor.text),\n );\n\n if (startMatch === undefined) {\n return [];\n }\n\n const endValue = evidence.end_anchor ?? evidence.end;\n\n if (endValue === undefined) {\n return this.#projection.resolveSentenceIds(startMatch);\n }\n\n const [endAnchor, endFailure] = this.#evidenceResolver.parseAnchor(\n endValue,\n \"end_anchor\",\n );\n\n if (endFailure !== undefined || endAnchor?.text === undefined) {\n return [];\n }\n\n const endMatch = expectSingleSpan(\n this.#projection.findExactMatches(endAnchor.text),\n );\n\n if (endMatch === undefined || endMatch.offset < startMatch.offset) {\n return [];\n }\n\n return this.#projection.resolveSentenceIds({\n length: endMatch.offset + endMatch.length - startMatch.offset,\n offset: startMatch.offset,\n });\n }\n\n async #chooseAmbiguousCandidate(\n input: SelectAmbiguousCandidateInput,\n ): Promise<\n readonly [\n candidate: RankedSentenceCandidate | undefined,\n failure: EvidenceResolutionFailure | undefined,\n ]\n > {\n const messages = this.#buildChoiceMessages(input);\n const candidateIds = input.candidates.map(\n (candidate) => candidate.occurrenceId,\n );\n\n try {\n const choice = await requestGuaranteedJson({\n maxRetries: MAX_CHOICE_RETRIES,\n messages,\n parse: (data) => {\n const candidate = input.candidates.find(\n (item) => item.occurrenceId === data.choice,\n );\n\n if (candidate === undefined) {\n throw new ParsedJsonError([\n `Invalid choice \"${data.choice}\". Expected one of: ${candidateIds.join(\", \")}`,\n ]);\n }\n\n return candidate;\n },\n responseIntentClassifierPrompt: this.#responseIntentClassifierPrompt,\n request: this.#requestChoice,\n schema: choiceResponseSchema,\n });\n\n return [choice, undefined];\n } catch (error) {\n if (isParsedJsonValidationFailure(error)) {\n return [\n undefined,\n {\n candidates: input.candidates,\n code: \"choice_parse_failed_full_fragment\",\n fieldName: input.fieldName,\n message:\n `Second-stage choice parse validation failed for ${input.fieldName}; ` +\n \"falling back to the full fragment span.\",\n },\n ];\n }\n\n return [\n undefined,\n {\n candidates: input.candidates,\n code: \"choice_failed\",\n fieldName: input.fieldName,\n message: `Second-stage choice failed for ${input.fieldName}: ${formatError(error)}`,\n },\n ];\n }\n }\n\n #buildChoiceMessages(input: SelectAmbiguousCandidateInput): LLMessage[] {\n return [\n {\n content: this.#choiceSystemPrompt,\n role: \"system\",\n },\n {\n content:\n `Previously generated chunk (do NOT rewrite it):\\n` +\n `\\`\\`\\`json\\n${JSON.stringify(input.chunkData, null, 2)}\\n\\`\\`\\`\\n\\n` +\n `Resolve only this field: \"${input.fieldName}\" for chunk #${input.chunkIndex} [${input.chunkLabel}].\\n` +\n \"Choose exactly one candidate occurrence ID from the list below.\\n\\n\" +\n input.candidates.map(formatChoiceCandidate).join(\"\\n\"),\n role: \"user\",\n },\n ];\n }\n\n #validateImportanceAnnotations(\n annotations: readonly {\n readonly chunk_id: number;\n readonly importance: ChunkImportance;\n }[],\n issues: string[],\n ): ChunkImportanceAnnotation[] | undefined {\n if (annotations.length === 0) {\n return [];\n }\n\n if (this.#validImportanceChunkIds === undefined) {\n return annotations.map((annotation) => ({\n chunkId: annotation.chunk_id,\n importance: expectChunkImportance(annotation.importance),\n }));\n }\n\n const result: ChunkImportanceAnnotation[] = [];\n\n for (const annotation of annotations) {\n if (!hasMembership(this.#validImportanceChunkIds, annotation.chunk_id)) {\n issues.push(\n `importance_annotations references unknown chunk_id ${annotation.chunk_id}`,\n );\n continue;\n }\n\n result.push({\n chunkId: annotation.chunk_id,\n importance: expectChunkImportance(annotation.importance),\n });\n }\n\n return result;\n }\n\n #filterAndValidateLinks(input: {\n issues: string[];\n links: readonly ChunkLink[];\n tempIds: readonly string[];\n visibleChunkIds: readonly number[];\n }): ChunkLink[] {\n const validTempIds = createMembershipRecord(input.tempIds);\n const validChunkIds = createMembershipRecord(input.visibleChunkIds);\n const retainedLinks: ChunkLink[] = [];\n\n for (const [index, link] of input.links.entries()) {\n const fromValid = this.#validateLinkReference({\n fieldName: \"from\",\n index: index + 1,\n issues: input.issues,\n reference: link.from,\n validChunkIds,\n validTempIds,\n });\n const toValid = this.#validateLinkReference({\n fieldName: \"to\",\n index: index + 1,\n issues: input.issues,\n reference: link.to,\n validChunkIds,\n validTempIds,\n });\n\n if (fromValid && toValid) {\n retainedLinks.push(link);\n }\n }\n\n return retainedLinks;\n }\n\n #validateLinkReference(input: {\n fieldName: \"from\" | \"to\";\n index: number;\n issues: string[];\n reference: number | string;\n validChunkIds: Readonly<Record<string, true>>;\n validTempIds: Readonly<Record<string, true>>;\n }): boolean {\n if (typeof input.reference === \"string\") {\n return hasMembership(input.validTempIds, input.reference);\n }\n\n if (!hasMembership(input.validChunkIds, input.reference)) {\n input.issues.push(\n `Link #${input.index}: \"${input.fieldName}\" chunk_id ${input.reference} does not exist in visible chunks`,\n );\n\n return false;\n }\n\n return true;\n }\n}\n\nfunction createWordsCountRecord(\n sentences: readonly Pick<\n ChunkExtractionSentence,\n \"sentenceId\" | \"wordsCount\"\n >[],\n): Readonly<Record<string, number>> {\n const wordsCountByKey = createEmptyRecord<number>();\n\n for (const sentence of sentences) {\n const sentenceKey = createSentenceKey(sentence.sentenceId);\n wordsCountByKey[sentenceKey] = sentence.wordsCount;\n }\n\n return wordsCountByKey;\n}\n\nfunction createSentenceTextRecord(\n projection: FragmentProjection,\n): Readonly<Record<string, string>> {\n const record = createEmptyRecord<string>();\n\n for (const sentence of projection.sentences) {\n record[createSentenceKey(sentence.sentenceId)] = sentence.rawText;\n }\n\n return record;\n}\n\nfunction normalizeChunkLinks(links: readonly RawChunkLink[]): ChunkLink[] {\n return links.map((link) => {\n if (link.strength === undefined) {\n return {\n from: link.from,\n to: link.to,\n };\n }\n\n return {\n from: link.from,\n strength: link.strength,\n to: link.to,\n };\n });\n}\n\nfunction formatChoiceCandidate(candidate: RankedSentenceCandidate): string {\n return [\n candidate.occurrenceId,\n `prev: ${formatChoiceText(candidate.prevText)}`,\n `text: ${formatChoiceText(candidate.text)}`,\n `next: ${formatChoiceText(candidate.nextText)}`,\n ].join(\"\\n\");\n}\n\nfunction formatChoiceText(text: string): string {\n const collapsed = text.replace(/\\s+/gu, \" \").trim();\n\n return collapsed === \"\" ? \"(none)\" : collapsed;\n}\n\nfunction toChoiceFieldName(value: string): ChoiceFieldName | undefined {\n return value === \"evidence\" ||\n value === \"start_anchor\" ||\n value === \"end_anchor\"\n ? value\n : undefined;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction formatError(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n\n return String(error);\n}\n\nfunction isParsedJsonValidationFailure(error: unknown): boolean {\n return (\n error instanceof GuaranteedParseValidationError &&\n error.cause instanceof ParsedJsonError\n );\n}\n\nfunction createSentenceKey(sentenceId: SentenceId): string {\n return sentenceId.join(\":\");\n}\n\nfunction createMembershipRecord(\n values: readonly (number | string)[],\n): Readonly<Record<string, true>> {\n const record = createEmptyRecord<true>();\n\n for (const value of values) {\n record[String(value)] = true;\n }\n\n return record;\n}\n\nfunction hasMembership(\n record: Readonly<Record<string, true>>,\n value: number | string,\n): boolean {\n return hasIndexedValue(record, String(value));\n}\n\nfunction hasIndexedValue<TValue>(\n record: Readonly<Record<string, TValue>>,\n key: string,\n): boolean {\n return Object.hasOwn(record, key);\n}\n\nfunction createEmptyRecord<TValue>(): Record<string, TValue> {\n return Object.create(null) as Record<string, TValue>;\n}\n\nfunction expectSingleSpan(spans: readonly TextSpan[]): TextSpan | undefined {\n return spans.length === 1 ? spans[0] : undefined;\n}\n\nfunction createEvidenceSelectionList(\n evidence: RawChunkEvidence,\n): EvidenceSelectionList | undefined {\n if (Array.isArray(evidence)) {\n return evidence.map(createEvidenceSelection);\n }\n\n const hasSelectionEvidence =\n typeof evidence.quote === \"string\" ||\n typeof evidence.sentence_id === \"string\";\n\n return hasSelectionEvidence ? createEvidenceSelection(evidence) : undefined;\n}\n\nfunction createEvidenceSelection(evidence: {\n readonly quote?: unknown;\n readonly sentence_id?: unknown;\n}): {\n readonly quote?: string;\n readonly sentence_id?: string;\n} {\n return {\n ...(typeof evidence.quote === \"string\" ? { quote: evidence.quote } : {}),\n ...(typeof evidence.sentence_id === \"string\"\n ? { sentence_id: evidence.sentence_id }\n : {}),\n };\n}\n\nfunction toEvidenceResolutionFailure(\n failure: {\n readonly candidates: readonly EvidenceSelectionCandidate[];\n readonly code: string;\n readonly message: string;\n },\n fieldName: string,\n): EvidenceResolutionFailure {\n return {\n candidates: failure.candidates.map(toRankedSentenceCandidate),\n code: failure.code,\n fieldName,\n message: failure.message,\n };\n}\n\nfunction toRankedSentenceCandidate(\n candidate: EvidenceSelectionCandidate,\n): RankedSentenceCandidate {\n return {\n exactNormalized: candidate.exactNormalized,\n exactRaw: candidate.exactRaw,\n exactSubstring: candidate.exactSubstring,\n index: candidate.index,\n nextText: candidate.nextText,\n occurrenceId: candidate.occurrenceId,\n prevText: candidate.prevText,\n score: candidate.score,\n sentenceId: candidate.sentence.sentenceId,\n text: candidate.sentence.text,\n };\n}\n"],"mappings":"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","names":["ChunkMetadataField","resolved","resolveFailure"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/reader/chunk-batch/prompt-templates.ts"],"sourcesContent":["export const USER_FOCUSED_PROMPT_TEMPLATE =\n \"topologization/user_focused_extraction\";\nexport const BOOK_COHERENCE_PROMPT_TEMPLATE =\n \"topologization/book_coherence_extraction\";\nexport const EVIDENCE_CHOICE_PROMPT_TEMPLATE = \"topologization/evidence_choice\";\nexport const TRANSLATE_CHUNKS_PROMPT_TEMPLATE =\n \"topologization/translate_chunks\";\n"],"mappings":"AAAO,MAAM,+BACX;AACK,MAAM,iCACX;AACK,MAAM,kCAAkC;AACxC,MAAM,mCACX;","names":[]}
@@ -1,85 +0,0 @@
1
- import { Language } from '../../common/language.js';
2
- import { LLM } from '../../llm/client.js';
3
- import { SentenceId, ChunkRetention, ChunkImportance } from '../../document/types.js';
4
- import '../../llm/context.js';
5
- import '../../llm/cache.js';
6
- import '../../llm/types.js';
7
- import 'ai';
8
-
9
- interface ChunkLink {
10
- readonly from: number | string;
11
- readonly strength?: string;
12
- readonly to: number | string;
13
- }
14
- interface ChunkImportanceAnnotation {
15
- readonly chunkId: number;
16
- readonly importance: ChunkImportance;
17
- }
18
- interface CognitiveChunk {
19
- id: number;
20
- generation: number;
21
- sentenceId: SentenceId;
22
- label: string;
23
- content: string;
24
- sentenceIds: SentenceId[];
25
- links: number[];
26
- retention?: ChunkRetention;
27
- importance?: ChunkImportance;
28
- wordsCount: number;
29
- }
30
- interface ChunkBatch {
31
- readonly chunks: CognitiveChunk[];
32
- readonly tempIds: string[];
33
- readonly links: readonly ChunkLink[];
34
- readonly orderCorrect: boolean;
35
- readonly importanceAnnotations?: readonly ChunkImportanceAnnotation[];
36
- }
37
- interface ChunkExtractionScopes<S extends string> {
38
- readonly choice: S;
39
- readonly extraction: S;
40
- }
41
- interface SentenceTextSource {
42
- getSentence(sentenceId: SentenceId): Promise<string>;
43
- }
44
- interface ChunkTranslationInput {
45
- readonly content: string;
46
- readonly id: number;
47
- readonly label: string;
48
- readonly sourceSentences: readonly string[];
49
- }
50
- interface ChunkTranslationOutput {
51
- readonly content: string;
52
- readonly id: number;
53
- readonly label: string;
54
- }
55
- interface ChunkBatchOptions<S extends string> {
56
- readonly extractionGuidance: string;
57
- readonly llm: LLM<S>;
58
- readonly scopes: ChunkExtractionScopes<S>;
59
- readonly sentenceTextSource: SentenceTextSource;
60
- readonly userLanguage?: Language;
61
- }
62
- interface ChunkExtractionSentence {
63
- readonly sentenceId: SentenceId;
64
- readonly text: string;
65
- readonly wordsCount: number;
66
- }
67
- interface ExtractUserFocusedInput {
68
- readonly text: string;
69
- readonly workingMemoryPrompt: string;
70
- readonly visibleChunkIds: readonly number[];
71
- readonly sentences: readonly ChunkExtractionSentence[];
72
- }
73
- interface ExtractUserFocusedResult {
74
- readonly chunkBatch: ChunkBatch;
75
- readonly fragmentSummary: string;
76
- }
77
- interface ExtractBookCoherenceInput {
78
- readonly text: string;
79
- readonly workingMemoryPrompt: string;
80
- readonly visibleChunkIds: readonly number[];
81
- readonly sentences: readonly ChunkExtractionSentence[];
82
- readonly userFocusedChunks: readonly CognitiveChunk[];
83
- }
84
-
85
- export type { ChunkBatch, ChunkBatchOptions, ChunkExtractionScopes, ChunkExtractionSentence, ChunkImportanceAnnotation, ChunkLink, ChunkTranslationInput, ChunkTranslationOutput, CognitiveChunk, ExtractBookCoherenceInput, ExtractUserFocusedInput, ExtractUserFocusedResult, SentenceTextSource };
@@ -1,13 +0,0 @@
1
- export { Reader } from './reader.js';
2
- export { segmentTextStream } from './segment/segment.js';
3
- export { ReaderChunk, ReaderGraphDelta, ReaderGraphEdge, ReaderImportanceAnnotation, ReaderOptions, ReaderSegment, ReaderSegmenter, ReaderSentence, ReaderTextStream } from './types.js';
4
- import './segment/types.js';
5
- import './attention/attention.js';
6
- import './chunk-batch/types.js';
7
- import '../common/language.js';
8
- import '../llm/client.js';
9
- import '../llm/context.js';
10
- import '../llm/cache.js';
11
- import '../llm/types.js';
12
- import 'ai';
13
- import '../document/types.js';
@@ -1,7 +0,0 @@
1
- import { Reader } from "./reader.js";
2
- import { segmentTextStream } from "./segment/segment.js";
3
- export {
4
- Reader,
5
- segmentTextStream
6
- };
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/reader/index.ts"],"sourcesContent":["export { Reader } from \"./reader.js\";\nexport { segmentTextStream } from \"./segment/segment.js\";\nexport type {\n ReaderChunk,\n ReaderGraphDelta,\n ReaderGraphEdge,\n ReaderImportanceAnnotation,\n ReaderOptions,\n ReaderSegment,\n ReaderSegmenter,\n ReaderSentence,\n ReaderTextStream,\n} from \"./types.js\";\n"],"mappings":"AAAA,SAAS,cAAc;AACvB,SAAS,yBAAyB;","names":[]}
@@ -1,37 +0,0 @@
1
- import { ReaderOptions, ReaderTextStream, ReaderSegment, ReaderSentence, ReaderGraphDelta, ReaderChunk } from './types.js';
2
- import './attention/attention.js';
3
- import './chunk-batch/types.js';
4
- import '../common/language.js';
5
- import '../llm/client.js';
6
- import '../llm/context.js';
7
- import '../llm/cache.js';
8
- import '../llm/types.js';
9
- import 'ai';
10
- import '../document/types.js';
11
- import './segment/types.js';
12
-
13
- declare class Reader<S extends string> {
14
- #private;
15
- constructor(options: ReaderOptions<S>);
16
- get capacity(): number;
17
- segment(stream: ReaderTextStream): AsyncIterable<ReaderSegment>;
18
- extractUserFocused(input: {
19
- readonly sentences: readonly ReaderSentence[];
20
- readonly text: string;
21
- }): Promise<{
22
- readonly delta: ReaderGraphDelta;
23
- readonly fragmentSummary: string;
24
- }>;
25
- extractBookCoherence(input: {
26
- readonly sentences: readonly ReaderSentence[];
27
- readonly text: string;
28
- readonly userFocusedChunks: readonly ReaderChunk[];
29
- }): Promise<ReaderGraphDelta>;
30
- completeFragment(input: {
31
- readonly allChunks: readonly ReaderChunk[];
32
- readonly getSuccessorChunkIds: (chunkId: number) => readonly number[];
33
- }): void;
34
- clear(): void;
35
- }
36
-
37
- export { Reader };
@@ -1,82 +0,0 @@
1
- import { Attention } from "./attention/attention.js";
2
- import {
3
- extractBookCoherenceChunkBatch,
4
- extractUserFocusedChunkBatch
5
- } from "./chunk-batch/extract.js";
6
- import { segmentTextStream } from "./segment/segment.js";
7
- class Reader {
8
- #attention;
9
- #chunkBatchOptions;
10
- #segmenter;
11
- constructor(options) {
12
- this.#attention = new Attention(
13
- options.attention.capacity,
14
- options.attention.generationDecayFactor,
15
- options.attention.idGenerator
16
- );
17
- this.#chunkBatchOptions = {
18
- extractionGuidance: options.extractionGuidance,
19
- llm: options.llm,
20
- scopes: options.scopes,
21
- sentenceTextSource: options.sentenceTextSource,
22
- ...options.userLanguage === void 0 ? {} : {
23
- userLanguage: options.userLanguage
24
- }
25
- };
26
- this.#segmenter = options.segmenter;
27
- }
28
- get capacity() {
29
- return this.#attention.capacity;
30
- }
31
- segment(stream) {
32
- if (this.#segmenter === void 0) {
33
- return segmentTextStream(stream);
34
- }
35
- return segmentTextStream(stream, {
36
- adapter: this.#segmenter
37
- });
38
- }
39
- async extractUserFocused(input) {
40
- const context = this.#attention.createChunkBatchContext();
41
- const result = await extractUserFocusedChunkBatch(this.#chunkBatchOptions, {
42
- sentences: input.sentences,
43
- text: input.text,
44
- visibleChunkIds: context.visibleChunkIds,
45
- workingMemoryPrompt: context.workingMemoryPrompt
46
- });
47
- return {
48
- delta: await this.#attention.acceptChunkBatch(result.chunkBatch),
49
- fragmentSummary: result.fragmentSummary
50
- };
51
- }
52
- async extractBookCoherence(input) {
53
- const context = this.#attention.createChunkBatchContext({
54
- includeCurrentFragment: false
55
- });
56
- const linkableChunkIds = [
57
- ...context.visibleChunkIds,
58
- ...input.userFocusedChunks.map((chunk) => chunk.id)
59
- ];
60
- const chunkBatch = await extractBookCoherenceChunkBatch(
61
- this.#chunkBatchOptions,
62
- {
63
- sentences: input.sentences,
64
- text: input.text,
65
- userFocusedChunks: input.userFocusedChunks,
66
- visibleChunkIds: linkableChunkIds,
67
- workingMemoryPrompt: context.workingMemoryPrompt
68
- }
69
- );
70
- return await this.#attention.acceptChunkBatch(chunkBatch);
71
- }
72
- completeFragment(input) {
73
- this.#attention.completeFragment(input);
74
- }
75
- clear() {
76
- this.#attention.clear();
77
- }
78
- }
79
- export {
80
- Reader
81
- };
82
- //# sourceMappingURL=reader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/reader/reader.ts"],"sourcesContent":["import { Attention } from \"./attention/attention.js\";\nimport {\n extractBookCoherenceChunkBatch,\n extractUserFocusedChunkBatch,\n} from \"./chunk-batch/extract.js\";\nimport { segmentTextStream } from \"./segment/segment.js\";\nimport type { ChunkBatchOptions } from \"./chunk-batch/types.js\";\nimport type {\n ReaderChunk,\n ReaderGraphDelta,\n ReaderOptions,\n ReaderSegment,\n ReaderSentence,\n ReaderTextStream,\n} from \"./types.js\";\n\nexport class Reader<S extends string> {\n readonly #attention: Attention;\n readonly #chunkBatchOptions: ChunkBatchOptions<S>;\n readonly #segmenter: ReaderOptions<S>[\"segmenter\"];\n\n public constructor(options: ReaderOptions<S>) {\n this.#attention = new Attention(\n options.attention.capacity,\n options.attention.generationDecayFactor,\n options.attention.idGenerator,\n );\n this.#chunkBatchOptions = {\n extractionGuidance: options.extractionGuidance,\n llm: options.llm,\n scopes: options.scopes,\n sentenceTextSource: options.sentenceTextSource,\n ...(options.userLanguage === undefined\n ? {}\n : {\n userLanguage: options.userLanguage,\n }),\n };\n this.#segmenter = options.segmenter;\n }\n\n public get capacity(): number {\n return this.#attention.capacity;\n }\n\n public segment(stream: ReaderTextStream): AsyncIterable<ReaderSegment> {\n if (this.#segmenter === undefined) {\n return segmentTextStream(stream);\n }\n\n return segmentTextStream(stream, {\n adapter: this.#segmenter,\n });\n }\n\n public async extractUserFocused(input: {\n readonly sentences: readonly ReaderSentence[];\n readonly text: string;\n }): Promise<{\n readonly delta: ReaderGraphDelta;\n readonly fragmentSummary: string;\n }> {\n const context = this.#attention.createChunkBatchContext();\n const result = await extractUserFocusedChunkBatch(this.#chunkBatchOptions, {\n sentences: input.sentences,\n text: input.text,\n visibleChunkIds: context.visibleChunkIds,\n workingMemoryPrompt: context.workingMemoryPrompt,\n });\n\n return {\n delta: await this.#attention.acceptChunkBatch(result.chunkBatch),\n fragmentSummary: result.fragmentSummary,\n };\n }\n\n public async extractBookCoherence(input: {\n readonly sentences: readonly ReaderSentence[];\n readonly text: string;\n readonly userFocusedChunks: readonly ReaderChunk[];\n }): Promise<ReaderGraphDelta> {\n const context = this.#attention.createChunkBatchContext({\n includeCurrentFragment: false,\n });\n const linkableChunkIds = [\n ...context.visibleChunkIds,\n ...input.userFocusedChunks.map((chunk) => chunk.id),\n ];\n const chunkBatch = await extractBookCoherenceChunkBatch(\n this.#chunkBatchOptions,\n {\n sentences: input.sentences,\n text: input.text,\n userFocusedChunks: input.userFocusedChunks,\n visibleChunkIds: linkableChunkIds,\n workingMemoryPrompt: context.workingMemoryPrompt,\n },\n );\n\n return await this.#attention.acceptChunkBatch(chunkBatch);\n }\n\n public completeFragment(input: {\n readonly allChunks: readonly ReaderChunk[];\n readonly getSuccessorChunkIds: (chunkId: number) => readonly number[];\n }): void {\n this.#attention.completeFragment(input);\n }\n\n public clear(): void {\n this.#attention.clear();\n }\n}\n"],"mappings":"AAAA,SAAS,iBAAiB;AAC1B;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,yBAAyB;AAW3B,MAAM,OAAyB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EAEF,YAAY,SAA2B;AAC5C,SAAK,aAAa,IAAI;AAAA,MACpB,QAAQ,UAAU;AAAA,MAClB,QAAQ,UAAU;AAAA,MAClB,QAAQ,UAAU;AAAA,IACpB;AACA,SAAK,qBAAqB;AAAA,MACxB,oBAAoB,QAAQ;AAAA,MAC5B,KAAK,QAAQ;AAAA,MACb,QAAQ,QAAQ;AAAA,MAChB,oBAAoB,QAAQ;AAAA,MAC5B,GAAI,QAAQ,iBAAiB,SACzB,CAAC,IACD;AAAA,QACE,cAAc,QAAQ;AAAA,MACxB;AAAA,IACN;AACA,SAAK,aAAa,QAAQ;AAAA,EAC5B;AAAA,EAEA,IAAW,WAAmB;AAC5B,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EAEO,QAAQ,QAAwD;AACrE,QAAI,KAAK,eAAe,QAAW;AACjC,aAAO,kBAAkB,MAAM;AAAA,IACjC;AAEA,WAAO,kBAAkB,QAAQ;AAAA,MAC/B,SAAS,KAAK;AAAA,IAChB,CAAC;AAAA,EACH;AAAA,EAEA,MAAa,mBAAmB,OAM7B;AACD,UAAM,UAAU,KAAK,WAAW,wBAAwB;AACxD,UAAM,SAAS,MAAM,6BAA6B,KAAK,oBAAoB;AAAA,MACzE,WAAW,MAAM;AAAA,MACjB,MAAM,MAAM;AAAA,MACZ,iBAAiB,QAAQ;AAAA,MACzB,qBAAqB,QAAQ;AAAA,IAC/B,CAAC;AAED,WAAO;AAAA,MACL,OAAO,MAAM,KAAK,WAAW,iBAAiB,OAAO,UAAU;AAAA,MAC/D,iBAAiB,OAAO;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,MAAa,qBAAqB,OAIJ;AAC5B,UAAM,UAAU,KAAK,WAAW,wBAAwB;AAAA,MACtD,wBAAwB;AAAA,IAC1B,CAAC;AACD,UAAM,mBAAmB;AAAA,MACvB,GAAG,QAAQ;AAAA,MACX,GAAG,MAAM,kBAAkB,IAAI,CAAC,UAAU,MAAM,EAAE;AAAA,IACpD;AACA,UAAM,aAAa,MAAM;AAAA,MACvB,KAAK;AAAA,MACL;AAAA,QACE,WAAW,MAAM;AAAA,QACjB,MAAM,MAAM;AAAA,QACZ,mBAAmB,MAAM;AAAA,QACzB,iBAAiB;AAAA,QACjB,qBAAqB,QAAQ;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO,MAAM,KAAK,WAAW,iBAAiB,UAAU;AAAA,EAC1D;AAAA,EAEO,iBAAiB,OAGf;AACP,SAAK,WAAW,iBAAiB,KAAK;AAAA,EACxC;AAAA,EAEO,QAAc;AACnB,SAAK,WAAW,MAAM;AAAA,EACxB;AACF;","names":[]}
@@ -1,2 +0,0 @@
1
- export { segmentTextStream } from './segment.js';
2
- export { SegmentTextStreamOptions, SentenceStreamAdapter, SentenceStreamItem, TextStream } from './types.js';
@@ -1,5 +0,0 @@
1
- import { segmentTextStream } from "./segment.js";
2
- export {
3
- segmentTextStream
4
- };
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/reader/segment/index.ts"],"sourcesContent":["export { segmentTextStream } from \"./segment.js\";\nexport type {\n SegmentTextStreamOptions,\n SentenceStreamAdapter,\n SentenceStreamItem,\n TextStream,\n} from \"./types.js\";\n"],"mappings":"AAAA,SAAS,yBAAyB;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/reader/segment/intl-segmenter.ts"],"sourcesContent":["import type {\n SentenceStreamAdapter,\n SentenceStreamItem,\n TextStream,\n} from \"./types.js\";\n\nconst SENTENCE_BOUNDARY_PATTERN =\n /(?:[.!?。!?…]+|(?:\\r?\\n)\\s*(?:\\r?\\n)?|[.!?。!?…]+[\"'”’」』】)》〉〕〗]*)$/u;\n\nclass IntlSegmenterSentenceStreamAdapter implements SentenceStreamAdapter {\n readonly #graphemeSegmenter = new Intl.Segmenter(undefined, {\n granularity: \"grapheme\",\n });\n readonly #sentenceSegmenter = new Intl.Segmenter(undefined, {\n granularity: \"sentence\",\n });\n readonly #wordSegmenter = new Intl.Segmenter(undefined, {\n granularity: \"word\",\n });\n\n public async *pipe(stream: TextStream): AsyncIterable<SentenceStreamItem> {\n let buffer = \"\";\n let offset = 0;\n\n for await (const chunk of stream) {\n if (chunk === \"\") {\n continue;\n }\n\n buffer += chunk;\n\n const { remainder, sentences } = this.#drainSentences(buffer, false);\n buffer = remainder;\n\n for (const sentenceText of sentences) {\n yield {\n offset,\n text: sentenceText,\n wordsCount: this.#countWords(sentenceText),\n };\n offset += sentenceText.length;\n }\n }\n\n const { sentences } = this.#drainSentences(buffer, true);\n\n for (const sentenceText of sentences) {\n yield {\n offset,\n text: sentenceText,\n wordsCount: this.#countWords(sentenceText),\n };\n offset += sentenceText.length;\n }\n }\n\n #drainSentences(\n buffer: string,\n flushAll: boolean,\n ): {\n readonly remainder: string;\n readonly sentences: readonly string[];\n } {\n if (buffer.trim() === \"\") {\n return {\n remainder: \"\",\n sentences: [],\n };\n }\n\n const segments = Array.from(this.#sentenceSegmenter.segment(buffer));\n\n if (segments.length === 0) {\n return {\n remainder: buffer,\n sentences: [],\n };\n }\n\n if (flushAll || this.#endsWithSentenceBoundary(buffer)) {\n return {\n remainder: \"\",\n sentences: segments\n .map((segment) => segment.segment.trim())\n .filter((segment) => segment !== \"\"),\n };\n }\n\n const lastSegment = segments[segments.length - 1];\n\n if (lastSegment === undefined) {\n return {\n remainder: buffer,\n sentences: [],\n };\n }\n\n return {\n remainder: buffer.slice(lastSegment.index),\n sentences: segments\n .slice(0, -1)\n .map((segment) => segment.segment.trim())\n .filter((segment) => segment !== \"\"),\n };\n }\n\n #countWords(text: string): number {\n let wordsCount = 0;\n\n for (const segment of this.#wordSegmenter.segment(text)) {\n if (\"isWordLike\" in segment && segment.isWordLike) {\n wordsCount += 1;\n }\n }\n\n if (wordsCount > 0) {\n return wordsCount;\n }\n\n return this.#countGraphemes(text);\n }\n\n #countGraphemes(text: string): number {\n let unitCount = 0;\n\n for (const _segment of this.#graphemeSegmenter.segment(text)) {\n unitCount += 1;\n }\n\n return unitCount;\n }\n\n #endsWithSentenceBoundary(buffer: string): boolean {\n return SENTENCE_BOUNDARY_PATTERN.test(buffer.trimEnd());\n }\n}\n\nexport function createDefaultSentenceStreamAdapter(): SentenceStreamAdapter {\n return new IntlSegmenterSentenceStreamAdapter();\n}\n"],"mappings":"AAMA,MAAM,4BACJ;AAEF,MAAM,mCAAoE;AAAA,EAC/D,qBAAqB,IAAI,KAAK,UAAU,QAAW;AAAA,IAC1D,aAAa;AAAA,EACf,CAAC;AAAA,EACQ,qBAAqB,IAAI,KAAK,UAAU,QAAW;AAAA,IAC1D,aAAa;AAAA,EACf,CAAC;AAAA,EACQ,iBAAiB,IAAI,KAAK,UAAU,QAAW;AAAA,IACtD,aAAa;AAAA,EACf,CAAC;AAAA,EAED,OAAc,KAAK,QAAuD;AACxE,QAAI,SAAS;AACb,QAAI,SAAS;AAEb,qBAAiB,SAAS,QAAQ;AAChC,UAAI,UAAU,IAAI;AAChB;AAAA,MACF;AAEA,gBAAU;AAEV,YAAM,EAAE,WAAW,WAAAA,WAAU,IAAI,KAAK,gBAAgB,QAAQ,KAAK;AACnE,eAAS;AAET,iBAAW,gBAAgBA,YAAW;AACpC,cAAM;AAAA,UACJ;AAAA,UACA,MAAM;AAAA,UACN,YAAY,KAAK,YAAY,YAAY;AAAA,QAC3C;AACA,kBAAU,aAAa;AAAA,MACzB;AAAA,IACF;AAEA,UAAM,EAAE,UAAU,IAAI,KAAK,gBAAgB,QAAQ,IAAI;AAEvD,eAAW,gBAAgB,WAAW;AACpC,YAAM;AAAA,QACJ;AAAA,QACA,MAAM;AAAA,QACN,YAAY,KAAK,YAAY,YAAY;AAAA,MAC3C;AACA,gBAAU,aAAa;AAAA,IACzB;AAAA,EACF;AAAA,EAEA,gBACE,QACA,UAIA;AACA,QAAI,OAAO,KAAK,MAAM,IAAI;AACxB,aAAO;AAAA,QACL,WAAW;AAAA,QACX,WAAW,CAAC;AAAA,MACd;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,KAAK,KAAK,mBAAmB,QAAQ,MAAM,CAAC;AAEnE,QAAI,SAAS,WAAW,GAAG;AACzB,aAAO;AAAA,QACL,WAAW;AAAA,QACX,WAAW,CAAC;AAAA,MACd;AAAA,IACF;AAEA,QAAI,YAAY,KAAK,0BAA0B,MAAM,GAAG;AACtD,aAAO;AAAA,QACL,WAAW;AAAA,QACX,WAAW,SACR,IAAI,CAAC,YAAY,QAAQ,QAAQ,KAAK,CAAC,EACvC,OAAO,CAAC,YAAY,YAAY,EAAE;AAAA,MACvC;AAAA,IACF;AAEA,UAAM,cAAc,SAAS,SAAS,SAAS,CAAC;AAEhD,QAAI,gBAAgB,QAAW;AAC7B,aAAO;AAAA,QACL,WAAW;AAAA,QACX,WAAW,CAAC;AAAA,MACd;AAAA,IACF;AAEA,WAAO;AAAA,MACL,WAAW,OAAO,MAAM,YAAY,KAAK;AAAA,MACzC,WAAW,SACR,MAAM,GAAG,EAAE,EACX,IAAI,CAAC,YAAY,QAAQ,QAAQ,KAAK,CAAC,EACvC,OAAO,CAAC,YAAY,YAAY,EAAE;AAAA,IACvC;AAAA,EACF;AAAA,EAEA,YAAY,MAAsB;AAChC,QAAI,aAAa;AAEjB,eAAW,WAAW,KAAK,eAAe,QAAQ,IAAI,GAAG;AACvD,UAAI,gBAAgB,WAAW,QAAQ,YAAY;AACjD,sBAAc;AAAA,MAChB;AAAA,IACF;AAEA,QAAI,aAAa,GAAG;AAClB,aAAO;AAAA,IACT;AAEA,WAAO,KAAK,gBAAgB,IAAI;AAAA,EAClC;AAAA,EAEA,gBAAgB,MAAsB;AACpC,QAAI,YAAY;AAEhB,eAAW,YAAY,KAAK,mBAAmB,QAAQ,IAAI,GAAG;AAC5D,mBAAa;AAAA,IACf;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,0BAA0B,QAAyB;AACjD,WAAO,0BAA0B,KAAK,OAAO,QAAQ,CAAC;AAAA,EACxD;AACF;AAEO,SAAS,qCAA4D;AAC1E,SAAO,IAAI,mCAAmC;AAChD;","names":["sentences"]}
@@ -1,9 +0,0 @@
1
- import { createDefaultSentenceStreamAdapter } from "./intl-segmenter.js";
2
- function segmentTextStream(stream, options) {
3
- const adapter = options?.adapter ?? createDefaultSentenceStreamAdapter();
4
- return adapter.pipe(stream);
5
- }
6
- export {
7
- segmentTextStream
8
- };
9
- //# sourceMappingURL=segment.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/reader/segment/segment.ts"],"sourcesContent":["import { createDefaultSentenceStreamAdapter } from \"./intl-segmenter.js\";\nimport type {\n SegmentTextStreamOptions,\n SentenceStreamItem,\n TextStream,\n} from \"./types.js\";\n\nexport function segmentTextStream(\n stream: TextStream,\n options?: SegmentTextStreamOptions,\n): AsyncIterable<SentenceStreamItem> {\n const adapter = options?.adapter ?? createDefaultSentenceStreamAdapter();\n\n return adapter.pipe(stream);\n}\n"],"mappings":"AAAA,SAAS,0CAA0C;AAO5C,SAAS,kBACd,QACA,SACmC;AACnC,QAAM,UAAU,SAAS,WAAW,mCAAmC;AAEvE,SAAO,QAAQ,KAAK,MAAM;AAC5B;","names":[]}
@@ -1,29 +0,0 @@
1
- import { ChunkGraphDelta, ChunkGraphEdge } from './attention/attention.js';
2
- import { ChunkBatchOptions, ChunkExtractionSentence, CognitiveChunk, ChunkImportanceAnnotation } from './chunk-batch/types.js';
3
- import { TextStream, SentenceStreamAdapter, SentenceStreamItem } from './segment/types.js';
4
- import '../common/language.js';
5
- import '../llm/client.js';
6
- import '../llm/context.js';
7
- import '../llm/cache.js';
8
- import '../llm/types.js';
9
- import 'ai';
10
- import '../document/types.js';
11
-
12
- type ReaderTextStream = TextStream;
13
- type ReaderSegment = SentenceStreamItem;
14
- type ReaderSegmenter = SentenceStreamAdapter;
15
- type ReaderSentence = ChunkExtractionSentence;
16
- type ReaderChunk = CognitiveChunk;
17
- type ReaderGraphEdge = ChunkGraphEdge;
18
- type ReaderImportanceAnnotation = ChunkImportanceAnnotation;
19
- type ReaderGraphDelta = ChunkGraphDelta;
20
- interface ReaderOptions<S extends string> extends ChunkBatchOptions<S> {
21
- readonly attention: {
22
- readonly capacity: number;
23
- readonly generationDecayFactor: number;
24
- readonly idGenerator: () => Promise<number>;
25
- };
26
- readonly segmenter?: ReaderSegmenter;
27
- }
28
-
29
- export type { ReaderChunk, ReaderGraphDelta, ReaderGraphEdge, ReaderImportanceAnnotation, ReaderOptions, ReaderSegment, ReaderSegmenter, ReaderSentence, ReaderTextStream };
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/source/epub/archive.ts"],"sourcesContent":["import { createHash } from \"crypto\";\nimport { posix } from \"path\";\nimport { PassThrough, type Readable } from \"stream\";\nimport type { Entry, ZipFile } from \"yauzl\";\nimport { open } from \"yauzl\";\n\nexport class EpubArchive {\n readonly #path: string;\n readonly #zipFile: ZipFile;\n readonly #entries: ReadonlyMap<string, Entry>;\n #closed = false;\n\n public constructor(\n path: string,\n zipFile: ZipFile,\n entries: ReadonlyMap<string, Entry>,\n ) {\n this.#path = path;\n this.#zipFile = zipFile;\n this.#entries = entries;\n }\n\n public static async open(path: string): Promise<EpubArchive> {\n const zipFile = await openZipFile(path);\n const entries = await indexEntries(zipFile);\n\n return new EpubArchive(path, zipFile, entries);\n }\n\n public close(): Promise<void> {\n if (this.#closed) {\n return Promise.resolve();\n }\n\n this.#closed = true;\n this.#zipFile.close();\n\n return Promise.resolve();\n }\n\n public hasEntry(path: string): boolean {\n return this.#entries.has(normalizeArchivePath(path));\n }\n\n public listEntries(): readonly string[] {\n return [...this.#entries.keys()];\n }\n\n public async openReadStream(path: string): Promise<Readable> {\n const entry = this.#getEntry(path);\n\n return await openEntryStream(this.#zipFile, entry);\n }\n\n public async readText(path: string): Promise<string> {\n const stream = await this.openReadStream(path);\n return (await readStreamToBuffer(stream)).toString(\"utf8\");\n }\n\n public async readBuffer(path: string): Promise<Buffer> {\n const stream = await this.openReadStream(path);\n return await readStreamToBuffer(stream);\n }\n\n public resolveRelativePath(basePath: string, href: string): string {\n const normalizedHref = normalizeHref(href);\n if (normalizedHref === \"\") {\n throw new Error(`Invalid EPUB href: ${href}`);\n }\n\n return normalizeArchivePath(\n posix.join(posix.dirname(normalizeArchivePath(basePath)), normalizedHref),\n );\n }\n\n public createSectionId(path: string, fragment?: string): string {\n const normalizedPath = normalizeArchivePath(path);\n\n if (fragment === undefined || fragment === \"\") {\n return normalizedPath;\n }\n\n return `${normalizedPath}#${fragment}`;\n }\n\n public createSyntheticSectionId(path: string, title?: string): string {\n const normalizedPath = normalizeArchivePath(path);\n const hash = createHash(\"sha1\")\n .update(`${normalizedPath}:${title ?? \"\"}`)\n .digest(\"hex\")\n .slice(0, 10);\n\n return `toc:${hash}`;\n }\n\n public get path(): string {\n return this.#path;\n }\n\n #getEntry(path: string): Entry {\n const normalizedPath = normalizeArchivePath(path);\n const entry = this.#entries.get(normalizedPath);\n\n if (entry === undefined) {\n throw new Error(`EPUB entry does not exist: ${normalizedPath}`);\n }\n\n return entry;\n }\n}\n\nexport function normalizeArchivePath(path: string): string {\n const normalized = path.replaceAll(\"\\\\\", \"/\").trim();\n const withoutFragment = normalized.startsWith(\"/\")\n ? normalized.slice(1)\n : normalized;\n\n return posix\n .normalize(withoutFragment)\n .replace(/^(\\.\\/)+/, \"\")\n .replace(/^\\/+/, \"\");\n}\n\nexport function normalizeHref(href: string): string {\n const [path] = href.split(\"#\", 1);\n\n return normalizeArchivePath(path ?? \"\");\n}\n\nexport function normalizeFragment(\n fragment: string | undefined,\n): string | undefined {\n if (fragment === undefined) {\n return undefined;\n }\n\n const normalized = fragment.startsWith(\"#\") ? fragment.slice(1) : fragment;\n\n return normalized === \"\" ? undefined : normalized;\n}\n\nexport function splitHref(href: string): {\n readonly path: string;\n readonly fragment: string | undefined;\n} {\n const [pathPart, fragmentPart] = href.split(\"#\", 2);\n\n return {\n path: normalizeArchivePath(pathPart ?? \"\"),\n fragment: normalizeFragment(fragmentPart),\n };\n}\n\nasync function openZipFile(path: string): Promise<ZipFile> {\n return await new Promise((resolve, reject) => {\n open(path, { autoClose: false, lazyEntries: true }, (error, zipFile) => {\n if (error !== null || zipFile === undefined) {\n reject(error ?? new Error(`Cannot open EPUB archive: ${path}`));\n return;\n }\n\n resolve(zipFile);\n });\n });\n}\n\nasync function indexEntries(\n zipFile: ZipFile,\n): Promise<ReadonlyMap<string, Entry>> {\n return await new Promise((resolve, reject) => {\n const entries = new Map<string, Entry>();\n\n zipFile.on(\"entry\", (entry: Entry) => {\n if (entry.fileName.endsWith(\"/\")) {\n zipFile.readEntry();\n return;\n }\n\n entries.set(normalizeArchivePath(entry.fileName), entry);\n zipFile.readEntry();\n });\n zipFile.once(\"end\", () => {\n resolve(entries);\n });\n zipFile.once(\"error\", (error: Error) => {\n reject(error);\n });\n\n zipFile.readEntry();\n });\n}\n\nfunction toBuffer(chunk: unknown): Buffer {\n if (Buffer.isBuffer(chunk)) {\n return chunk;\n }\n\n if (typeof chunk === \"string\") {\n return Buffer.from(chunk, \"utf8\");\n }\n\n throw new Error(\"Unexpected ZIP stream chunk type\");\n}\n\nasync function readStreamToBuffer(stream: Readable): Promise<Buffer> {\n return await new Promise((resolve, reject) => {\n const chunks: Buffer[] = [];\n\n stream.on(\"data\", (chunk: unknown) => {\n chunks.push(toBuffer(chunk));\n });\n stream.once(\"end\", () => {\n resolve(Buffer.concat(chunks));\n });\n stream.once(\"error\", (error: Error) => {\n reject(error);\n });\n stream.resume();\n });\n}\n\nasync function openEntryStream(\n zipFile: ZipFile,\n entry: Entry,\n): Promise<Readable> {\n return await new Promise((resolve, reject) => {\n zipFile.openReadStream(entry, (error, stream) => {\n if (error !== null || stream === undefined) {\n reject(error ?? new Error(`Cannot open EPUB entry: ${entry.fileName}`));\n return;\n }\n\n resolve(normalizeEntryStream(stream));\n });\n });\n}\n\nfunction normalizeEntryStream(stream: Readable): Readable {\n const normalized = new PassThrough();\n\n stream.once(\"error\", (error: Error) => {\n normalized.destroy(error);\n });\n normalized.once(\"close\", () => {\n stream.unpipe(normalized);\n\n if (!stream.destroyed) {\n stream.destroy();\n }\n });\n\n stream.pipe(normalized);\n\n return normalized;\n}\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/source/epub/content.ts"],"sourcesContent":["import type { Readable } from \"stream\";\n\nimport { Parser } from \"htmlparser2\";\n\nimport type { SourceTextStream } from \"../types.js\";\nimport type { EpubArchive } from \"./archive.js\";\n\nconst BLOCK_TAGS = new Set([\n \"address\",\n \"article\",\n \"aside\",\n \"blockquote\",\n \"br\",\n \"dd\",\n \"div\",\n \"dl\",\n \"dt\",\n \"figcaption\",\n \"figure\",\n \"footer\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"header\",\n \"hr\",\n \"li\",\n \"main\",\n \"nav\",\n \"ol\",\n \"p\",\n \"pre\",\n \"section\",\n \"table\",\n \"td\",\n \"th\",\n \"tr\",\n \"ul\",\n]);\n\nconst SKIPPED_TAGS = new Set([\"script\", \"style\"]);\n\nexport interface EpubSectionTarget {\n readonly id: string;\n readonly path: string;\n readonly fragment: string | undefined;\n}\n\nexport interface EpubSectionAnalysis {\n readonly hasContent: boolean;\n readonly wordsCount: number;\n}\n\nexport class EpubContentLoader {\n readonly #archive: EpubArchive;\n readonly #targetsBySectionId: ReadonlyMap<\n string,\n {\n readonly path: string;\n readonly targets: readonly EpubSectionTarget[];\n }\n >;\n\n public constructor(\n archive: EpubArchive,\n targetsByPath: ReadonlyMap<string, readonly EpubSectionTarget[]>,\n ) {\n this.#archive = archive;\n this.#targetsBySectionId = createTargetsBySectionId(targetsByPath);\n }\n\n public async openSection(sectionId: string): Promise<SourceTextStream> {\n const target = this.#targetsBySectionId.get(sectionId);\n\n if (target === undefined) {\n return [];\n }\n\n const sections = await this.#parseSections(target.path, target.targets);\n\n return [sections.get(sectionId) ?? \"\"];\n }\n\n async #parseSections(\n path: string,\n targets: readonly EpubSectionTarget[],\n ): Promise<ReadonlyMap<string, string>> {\n const stream = await this.#archive.openReadStream(path);\n stream.setEncoding(\"utf8\");\n\n return await parseHtmlSections(stream, targets);\n }\n}\n\nexport async function analyzeSectionTargets(\n archive: Pick<EpubArchive, \"openReadStream\">,\n targetsByPath: ReadonlyMap<string, readonly EpubSectionTarget[]>,\n): Promise<ReadonlyMap<string, EpubSectionAnalysis>> {\n const analyses = new Map<string, EpubSectionAnalysis>();\n\n for (const [path, targets] of targetsByPath.entries()) {\n const stream = await archive.openReadStream(path);\n stream.setEncoding(\"utf8\");\n const sections = await parseHtmlSectionTexts(stream, targets);\n\n for (const target of targets) {\n const text = sections.get(target.id) ?? \"\";\n\n analyses.set(target.id, {\n hasContent: text.trim() !== \"\",\n wordsCount: countWords(text),\n });\n }\n }\n\n return analyses;\n}\n\nfunction createTargetsBySectionId(\n targetsByPath: ReadonlyMap<string, readonly EpubSectionTarget[]>,\n): ReadonlyMap<\n string,\n {\n readonly path: string;\n readonly targets: readonly EpubSectionTarget[];\n }\n> {\n const targetsBySectionId = new Map<\n string,\n {\n readonly path: string;\n readonly targets: readonly EpubSectionTarget[];\n }\n >();\n\n for (const [path, targets] of targetsByPath.entries()) {\n for (const target of targets) {\n targetsBySectionId.set(target.id, { path, targets });\n }\n }\n\n return targetsBySectionId;\n}\n\nasync function parseHtmlSections(\n stream: Readable,\n targets: readonly EpubSectionTarget[],\n): Promise<ReadonlyMap<string, string>> {\n return await parseHtmlSectionTexts(stream, targets);\n}\n\nasync function parseHtmlSectionTexts(\n stream: Readable,\n targets: readonly EpubSectionTarget[],\n): Promise<ReadonlyMap<string, string>> {\n const fragments = new Map<string, number>();\n const sections = new Map<string, string>();\n const orderedTargets = [...targets];\n const buffers = orderedTargets.map(() => \"\");\n const rootSectionIndex =\n orderedTargets[0]?.fragment === undefined && orderedTargets[0] !== undefined\n ? 0\n : -1;\n let currentIndex = rootSectionIndex;\n let skippedTagDepth = 0;\n\n orderedTargets.forEach((target, index) => {\n sections.set(target.id, \"\");\n if (target.fragment !== undefined && !fragments.has(target.fragment)) {\n fragments.set(target.fragment, index);\n }\n });\n\n const parser = new Parser(\n {\n onopentag(name, attributes) {\n const tagName = name.toLowerCase();\n if (SKIPPED_TAGS.has(tagName)) {\n skippedTagDepth += 1;\n return;\n }\n\n const anchorId = attributes.id ?? attributes[\"xml:id\"];\n if (anchorId !== undefined) {\n const nextIndex = fragments.get(anchorId);\n if (nextIndex !== undefined && nextIndex > currentIndex) {\n currentIndex = nextIndex;\n }\n }\n\n if (tagName === \"br\") {\n appendText(buffers, currentIndex, \"\\n\");\n }\n },\n ontext(text) {\n if (skippedTagDepth > 0) {\n return;\n }\n\n appendText(buffers, currentIndex, text);\n },\n onclosetag(name) {\n const tagName = name.toLowerCase();\n if (SKIPPED_TAGS.has(tagName)) {\n skippedTagDepth = Math.max(0, skippedTagDepth - 1);\n return;\n }\n\n if (BLOCK_TAGS.has(tagName)) {\n appendText(buffers, currentIndex, \"\\n\\n\");\n }\n },\n },\n { decodeEntities: true },\n );\n\n for await (const chunk of stream as AsyncIterable<unknown>) {\n parser.write(toTextChunk(chunk));\n }\n\n parser.end();\n\n orderedTargets.forEach((target, index) => {\n sections.set(target.id, normalizeSectionText(buffers[index] ?? \"\"));\n });\n\n return sections;\n}\n\nfunction appendText(\n buffers: string[],\n currentIndex: number,\n text: string,\n): void {\n if (currentIndex < 0 || currentIndex >= buffers.length) {\n return;\n }\n\n buffers[currentIndex] += text;\n}\n\nfunction normalizeSectionText(text: string): string {\n return text\n .replace(/\\r\\n/gu, \"\\n\")\n .replace(/\\n{3,}/gu, \"\\n\\n\")\n .trim();\n}\n\nfunction toTextChunk(chunk: unknown): string {\n if (typeof chunk === \"string\") {\n return chunk;\n }\n\n if (Buffer.isBuffer(chunk)) {\n return chunk.toString(\"utf8\");\n }\n\n throw new Error(\"Unexpected HTML stream chunk type\");\n}\n\nfunction countWords(text: string): number {\n return [...createWordSegmenter().segment(text)].filter(\n (segment) => segment.isWordLike,\n ).length;\n}\n\nlet WORD_SEGMENTER: Intl.Segmenter | undefined;\n\nfunction createWordSegmenter(): Intl.Segmenter {\n if (WORD_SEGMENTER === undefined) {\n WORD_SEGMENTER = new Intl.Segmenter(undefined, {\n granularity: \"word\",\n });\n }\n\n return WORD_SEGMENTER;\n}\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/source/epub/document.ts"],"sourcesContent":["import type { SourceAdapter, SourceDocument } from \"../adapter.js\";\nimport type { SourceAsset, SourceSection, SourceTextStream } from \"../types.js\";\nimport { normalizeFragment } from \"./archive.js\";\nimport { EpubArchive } from \"./archive.js\";\nimport {\n analyzeSectionTargets,\n EpubContentLoader,\n type EpubSectionAnalysis,\n type EpubSectionTarget,\n} from \"./content.js\";\nimport { readEpubNavigation, type EpubNavigationItem } from \"./navigation.js\";\nimport { readEpubPackage, type EpubPackageData } from \"./package.js\";\n\ninterface SectionDefinition {\n readonly hasContent: boolean;\n readonly id: string;\n readonly title: string | undefined;\n readonly path: string | undefined;\n readonly fragment: string | undefined;\n readonly wordsCount: number;\n readonly children: readonly SectionDefinition[];\n}\n\nclass EpubSourceSection implements SourceSection {\n readonly #document: EpubSourceDocument;\n readonly #definition: SectionDefinition;\n\n public constructor(\n document: EpubSourceDocument,\n definition: SectionDefinition,\n ) {\n this.#document = document;\n this.#definition = definition;\n }\n\n public get id(): string {\n return this.#definition.id;\n }\n\n public get hasContent(): boolean {\n return this.#definition.hasContent;\n }\n\n public get title(): string | undefined {\n return this.#definition.title;\n }\n\n public get wordsCount(): number {\n return this.#definition.wordsCount;\n }\n\n public get children(): readonly SourceSection[] {\n return this.#definition.children.map(\n (child) => new EpubSourceSection(this.#document, child),\n );\n }\n\n public async open(): Promise<SourceTextStream> {\n return await this.#document.openSection(this.#definition.id);\n }\n}\n\nexport class EpubSourceDocument implements SourceDocument {\n readonly #packageData: EpubPackageData;\n readonly #cover: SourceAsset | undefined;\n readonly #sections: readonly SectionDefinition[];\n readonly #contentLoader: EpubContentLoader;\n\n public constructor(\n packageData: EpubPackageData,\n cover: SourceAsset | undefined,\n sections: readonly SectionDefinition[],\n contentLoader: EpubContentLoader,\n ) {\n this.#packageData = packageData;\n this.#cover = cover;\n this.#sections = sections;\n this.#contentLoader = contentLoader;\n }\n\n public static async open(archive: EpubArchive): Promise<EpubSourceDocument> {\n assertArchiveIsSupported(archive);\n const packageData = await readEpubPackage(archive);\n const navigation = await readEpubNavigation(archive, packageData);\n const rawSections = buildSections(archive, navigation);\n const targetsByPath = groupTargetsByPath(rawSections);\n const sectionAnalyses = await analyzeSectionTargets(archive, targetsByPath);\n const sections = hydrateSectionAnalyses(rawSections, sectionAnalyses);\n const cover = await readCoverAsset(archive, packageData);\n\n return new EpubSourceDocument(\n packageData,\n cover,\n sections,\n new EpubContentLoader(archive, targetsByPath),\n );\n }\n\n public readMeta() {\n return Promise.resolve(this.#packageData.metadata);\n }\n\n public readCover() {\n return Promise.resolve(this.#cover);\n }\n\n public readSections() {\n return Promise.resolve(\n this.#sections.map((section) => new EpubSourceSection(this, section)),\n );\n }\n\n public async openSection(sectionId: string): Promise<SourceTextStream> {\n return await this.#contentLoader.openSection(sectionId);\n }\n}\n\nexport class EpubSourceAdapter implements SourceAdapter {\n public get format() {\n return \"epub\" as const;\n }\n\n public async openSession<T>(\n path: string,\n operation: (document: SourceDocument) => Promise<T>,\n ): Promise<T> {\n const archive = await EpubArchive.open(path);\n\n try {\n const document = await EpubSourceDocument.open(archive);\n\n return await operation(document);\n } finally {\n await archive.close();\n }\n }\n}\n\nexport const EPUB_SOURCE_ADAPTER = new EpubSourceAdapter();\n\nfunction assertArchiveIsSupported(archive: EpubArchive): void {\n if (!archive.hasEntry(\"META-INF/encryption.xml\")) {\n return;\n }\n\n throw new Error(\n \"Encrypted EPUB is not supported: found META-INF/encryption.xml.\",\n );\n}\n\nasync function readCoverAsset(\n archive: EpubArchive,\n packageData: EpubPackageData,\n): Promise<SourceAsset | undefined> {\n if (\n packageData.coverPath === undefined ||\n packageData.coverMediaType === undefined\n ) {\n return undefined;\n }\n\n return {\n path: packageData.coverPath,\n mediaType: packageData.coverMediaType,\n data: await archive.readBuffer(packageData.coverPath),\n };\n}\n\nfunction buildSections(\n archive: EpubArchive,\n items: readonly EpubNavigationItem[],\n): readonly SectionDefinition[] {\n const idCounts = new Map<string, number>();\n\n return items.map((item, index) =>\n buildSection(archive, item, [index], idCounts),\n );\n}\n\nfunction buildSection(\n archive: EpubArchive,\n item: EpubNavigationItem,\n indexPath: readonly number[],\n idCounts: Map<string, number>,\n): SectionDefinition {\n const fragment = normalizeFragment(item.fragment);\n const baseId =\n item.path === undefined\n ? `toc:${indexPath.join(\".\")}`\n : archive.createSectionId(item.path, fragment);\n const id = createUniqueId(baseId, idCounts);\n\n return {\n hasContent: item.path !== undefined,\n id,\n title: item.title,\n path: item.path,\n fragment,\n wordsCount: 0,\n children: item.children.map((child, index) =>\n buildSection(archive, child, [...indexPath, index], idCounts),\n ),\n };\n}\n\nfunction hydrateSectionAnalyses(\n sections: readonly SectionDefinition[],\n sectionAnalyses: ReadonlyMap<string, EpubSectionAnalysis>,\n): readonly SectionDefinition[] {\n return sections.map((section) => {\n const analysis = sectionAnalyses.get(section.id);\n\n return {\n ...section,\n hasContent: analysis?.hasContent ?? false,\n wordsCount: analysis?.wordsCount ?? 0,\n children: hydrateSectionAnalyses(section.children, sectionAnalyses),\n };\n });\n}\n\nfunction createUniqueId(baseId: string, idCounts: Map<string, number>): string {\n const currentCount = idCounts.get(baseId) ?? 0;\n idCounts.set(baseId, currentCount + 1);\n\n return currentCount === 0 ? baseId : `${baseId}~${currentCount + 1}`;\n}\n\nfunction groupTargetsByPath(\n sections: readonly SectionDefinition[],\n): ReadonlyMap<string, readonly EpubSectionTarget[]> {\n const targetsByPath = new Map<string, EpubSectionTarget[]>();\n\n for (const section of flattenSections(sections)) {\n if (section.path === undefined) {\n continue;\n }\n\n const targets = targetsByPath.get(section.path) ?? [];\n targets.push({\n id: section.id,\n path: section.path,\n fragment: section.fragment,\n });\n targetsByPath.set(section.path, targets);\n }\n\n return targetsByPath;\n}\n\nfunction flattenSections(\n sections: readonly SectionDefinition[],\n): readonly SectionDefinition[] {\n const flattened: SectionDefinition[] = [];\n\n for (const section of sections) {\n flattened.push(section);\n flattened.push(...flattenSections(section.children));\n }\n\n return flattened;\n}\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/source/epub/index.ts"],"sourcesContent":["export { EpubSourceAdapter, EPUB_SOURCE_ADAPTER } from \"./document.js\";\n"],"mappings":"AAAA,SAAS,mBAAmB,2BAA2B;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/source/epub/navigation.ts"],"sourcesContent":["import { basename, extname, posix } from \"path\";\n\nimport { parseDocument } from \"htmlparser2\";\n\nimport { splitHref } from \"./archive.js\";\nimport type { EpubArchive } from \"./archive.js\";\nimport { type EpubPackageData } from \"./package.js\";\nimport {\n findChild,\n findChildren,\n getAttribute,\n getDescendantText,\n parseXml,\n type XmlElement,\n} from \"./xml.js\";\n\nconst NON_CONTENT_FILE_NAMES = new Set([\n \"toc.xhtml\",\n \"nav.xhtml\",\n \"contents.xhtml\",\n \"tableofcontents.xhtml\",\n \"cover.xhtml\",\n \"titlepage.xhtml\",\n]);\n\ninterface HtmlNode {\n readonly type?: string;\n readonly name?: string;\n readonly data?: string;\n readonly attribs?: Readonly<Record<string, string>>;\n readonly children?: readonly HtmlNode[];\n}\n\nexport interface EpubNavigationItem {\n readonly title: string | undefined;\n readonly path: string | undefined;\n readonly fragment: string | undefined;\n readonly children: readonly EpubNavigationItem[];\n}\n\nexport async function readEpubNavigation(\n archive: EpubArchive,\n packageData: EpubPackageData,\n): Promise<readonly EpubNavigationItem[]> {\n const navigation =\n (await readNavDocument(archive, packageData)) ??\n (await readNcxDocument(archive, packageData)) ??\n [];\n\n if (navigation.length === 0) {\n return buildSpineNavigation(packageData, new Set());\n }\n\n const referencedPaths = collectReferencedPaths(navigation);\n const extras = buildSpineNavigation(packageData, referencedPaths);\n\n return extras.length === 0 ? navigation : [...navigation, ...extras];\n}\n\nasync function readNavDocument(\n archive: EpubArchive,\n packageData: EpubPackageData,\n): Promise<readonly EpubNavigationItem[] | undefined> {\n if (packageData.navPath === undefined) {\n return undefined;\n }\n\n const document = parseDocument(await archive.readText(packageData.navPath), {\n decodeEntities: true,\n }) as HtmlNode;\n const nav = findFirstHtmlElement(document, (element) => {\n if (getHtmlTagName(element) !== \"nav\") {\n return false;\n }\n\n const type = (element.attribs?.[\"epub:type\"] ?? element.attribs?.type ?? \"\")\n .split(/\\s+/u)\n .map((value) => value.trim().toLowerCase());\n\n return type.includes(\"toc\");\n });\n\n if (nav === undefined) {\n return undefined;\n }\n\n const ol = findFirstHtmlElement(\n nav,\n (element) => getHtmlTagName(element) === \"ol\",\n );\n if (ol === undefined) {\n return undefined;\n }\n\n const items = getHtmlElementChildren(ol)\n .filter((child) => getHtmlTagName(child) === \"li\")\n .map((li) => parseNavListItem(archive, packageData.navPath!, li))\n .filter((item): item is EpubNavigationItem => item !== undefined);\n\n return items.length === 0 ? undefined : items;\n}\n\nasync function readNcxDocument(\n archive: EpubArchive,\n packageData: EpubPackageData,\n): Promise<readonly EpubNavigationItem[] | undefined> {\n if (packageData.ncxPath === undefined) {\n return undefined;\n }\n\n const root = parseXml(await archive.readText(packageData.ncxPath));\n const navMap = findChild(root, \"navMap\");\n if (navMap === undefined) {\n return undefined;\n }\n\n const items = findChildren(navMap, \"navPoint\")\n .map((navPoint) =>\n parseNcxNavPoint(archive, packageData.ncxPath!, navPoint),\n )\n .filter((item): item is EpubNavigationItem => item !== undefined);\n\n return items.length === 0 ? undefined : items;\n}\n\nfunction parseNavListItem(\n archive: EpubArchive,\n navPath: string,\n item: HtmlNode,\n): EpubNavigationItem | undefined {\n const label = findHtmlLabelNode(item);\n const title =\n label === undefined ? undefined : normalizeText(collectHtmlText(label));\n const href =\n label !== undefined && getHtmlTagName(label) === \"a\"\n ? label.attribs?.href\n : undefined;\n const resolved = resolveHtmlHref(archive, navPath, href);\n const children = getHtmlElementChildren(item)\n .filter((child) => getHtmlTagName(child) === \"ol\")\n .flatMap((ol) => getHtmlElementChildren(ol))\n .filter((child) => getHtmlTagName(child) === \"li\")\n .map((li) => parseNavListItem(archive, navPath, li))\n .filter((child): child is EpubNavigationItem => child !== undefined);\n\n if (\n title === undefined &&\n resolved.path === undefined &&\n children.length === 0\n ) {\n return undefined;\n }\n\n return {\n title,\n path: resolved.path,\n fragment: resolved.fragment,\n children,\n };\n}\n\nfunction parseNcxNavPoint(\n archive: EpubArchive,\n ncxPath: string,\n navPoint: XmlElement,\n): EpubNavigationItem | undefined {\n const navLabel = findChild(navPoint, \"navLabel\");\n const textElement =\n navLabel === undefined ? undefined : findChild(navLabel, \"text\");\n const title =\n textElement === undefined\n ? undefined\n : normalizeText(getDescendantText(textElement));\n const contentElement = findChild(navPoint, \"content\");\n const resolved = resolveXmlHref(\n archive,\n ncxPath,\n getAttribute(contentElement ?? navPoint, \"src\"),\n );\n const children = findChildren(navPoint, \"navPoint\")\n .map((child) => parseNcxNavPoint(archive, ncxPath, child))\n .filter((child): child is EpubNavigationItem => child !== undefined);\n\n if (\n title === undefined &&\n resolved.path === undefined &&\n children.length === 0\n ) {\n return undefined;\n }\n\n return {\n title,\n path: resolved.path,\n fragment: resolved.fragment,\n children,\n };\n}\n\nfunction buildSpineNavigation(\n packageData: EpubPackageData,\n referencedPaths: ReadonlySet<string>,\n): readonly EpubNavigationItem[] {\n return packageData.spine\n .filter(\n (item) => !isNonContentSpineItem(packageData, item.path, referencedPaths),\n )\n .filter((item) => !referencedPaths.has(item.path))\n .map((item) => ({\n title: getFallbackTitle(item.path),\n path: item.path,\n fragment: undefined,\n children: [],\n }));\n}\n\nfunction isNonContentSpineItem(\n packageData: EpubPackageData,\n path: string,\n referencedPaths: ReadonlySet<string>,\n): boolean {\n if (packageData.guideNonContentPaths.has(path)) {\n return true;\n }\n\n const lowerName = posix.basename(path).toLowerCase();\n if (packageData.navPath === path) {\n return true;\n }\n\n return NON_CONTENT_FILE_NAMES.has(lowerName) && !referencedPaths.has(path);\n}\n\nfunction collectReferencedPaths(\n items: readonly EpubNavigationItem[],\n): ReadonlySet<string> {\n const paths = new Set<string>();\n\n for (const item of items) {\n if (item.path !== undefined) {\n paths.add(item.path);\n }\n\n for (const childPath of collectReferencedPaths(item.children)) {\n paths.add(childPath);\n }\n }\n\n return paths;\n}\n\nfunction resolveHtmlHref(\n archive: EpubArchive,\n basePath: string,\n href: string | undefined,\n): {\n readonly path: string | undefined;\n readonly fragment: string | undefined;\n} {\n if (href === undefined || href.trim() === \"\") {\n return { path: undefined, fragment: undefined };\n }\n\n const { path, fragment } = splitHref(href);\n\n return {\n path: path === \"\" ? undefined : archive.resolveRelativePath(basePath, path),\n fragment,\n };\n}\n\nfunction resolveXmlHref(\n archive: EpubArchive,\n basePath: string,\n href: string | undefined,\n): {\n readonly path: string | undefined;\n readonly fragment: string | undefined;\n} {\n if (href === undefined || href.trim() === \"\") {\n return { path: undefined, fragment: undefined };\n }\n\n const { path, fragment } = splitHref(href);\n\n return {\n path: path === \"\" ? undefined : archive.resolveRelativePath(basePath, path),\n fragment,\n };\n}\n\nfunction findFirstHtmlElement(\n node: HtmlNode,\n predicate: (element: HtmlNode) => boolean,\n): HtmlNode | undefined {\n if (isHtmlElement(node) && predicate(node)) {\n return node;\n }\n\n for (const child of node.children ?? []) {\n const found = findFirstHtmlElement(child, predicate);\n if (found !== undefined) {\n return found;\n }\n }\n\n return undefined;\n}\n\nfunction findHtmlLabelNode(node: HtmlNode): HtmlNode | undefined {\n for (const child of getHtmlElementChildren(node)) {\n const tagName = getHtmlTagName(child);\n if (tagName === \"a\" || tagName === \"span\") {\n return child;\n }\n }\n\n for (const child of getHtmlElementChildren(node)) {\n if (getHtmlTagName(child) === \"ol\") {\n continue;\n }\n\n const nested = findHtmlLabelNode(child);\n if (nested !== undefined) {\n return nested;\n }\n }\n\n return undefined;\n}\n\nfunction collectHtmlText(node: HtmlNode): string {\n if (node.type === \"text\") {\n return node.data ?? \"\";\n }\n\n return (node.children ?? []).map(collectHtmlText).join(\"\");\n}\n\nfunction getHtmlElementChildren(node: HtmlNode): readonly HtmlNode[] {\n return (node.children ?? []).filter(isHtmlElement);\n}\n\nfunction isHtmlElement(node: HtmlNode): boolean {\n return node.type === \"tag\" || node.type === \"script\" || node.type === \"style\";\n}\n\nfunction getHtmlTagName(node: HtmlNode): string | undefined {\n return node.name?.toLowerCase();\n}\n\nfunction getFallbackTitle(path: string): string | undefined {\n const stem = basename(path, extname(path)).trim();\n\n return stem === \"\" ? undefined : stem;\n}\n\nfunction normalizeText(text: string): string | undefined {\n const normalized = text.replace(/\\s+/gu, \" \").trim();\n\n return normalized === \"\" ? undefined : normalized;\n}\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/source/epub/package.ts"],"sourcesContent":["import { posix } from \"path\";\n\nimport { BOOK_META_VERSION, type BookMeta } from \"../meta.js\";\nimport { splitHref } from \"./archive.js\";\nimport type { EpubArchive } from \"./archive.js\";\nimport {\n findChild,\n findChildren,\n getAttribute,\n getDescendantText,\n getLocalName,\n parseXml,\n type XmlElement,\n} from \"./xml.js\";\n\nconst COVER_ITEM_IDS = [\"cover-image\", \"coverimg\", \"cover-img\", \"cover\"];\nconst GUIDE_NON_CONTENT_TYPES = new Set([\n \"cover\",\n \"titlepage\",\n \"other.titlepage\",\n]);\n\nexport interface EpubManifestItem {\n readonly id: string;\n readonly path: string;\n readonly mediaType: string;\n readonly properties: ReadonlySet<string>;\n}\n\nexport interface EpubSpineItem {\n readonly idref: string;\n readonly path: string;\n readonly mediaType: string;\n}\n\nexport interface EpubPackageData {\n readonly version: 2 | 3;\n readonly opfPath: string;\n readonly metadata: BookMeta;\n readonly manifest: ReadonlyMap<string, EpubManifestItem>;\n readonly manifestByPath: ReadonlyMap<string, EpubManifestItem>;\n readonly spine: readonly EpubSpineItem[];\n readonly navPath: string | undefined;\n readonly ncxPath: string | undefined;\n readonly coverPath: string | undefined;\n readonly coverMediaType: string | undefined;\n readonly guideNonContentPaths: ReadonlySet<string>;\n}\n\nexport async function readEpubPackage(\n archive: EpubArchive,\n): Promise<EpubPackageData> {\n const opfPath = await findOpfPath(archive);\n const opf = parseXml(await archive.readText(opfPath));\n const version = parsePackageVersion(getAttribute(opf, \"version\"));\n const metadataElement = findChild(opf, \"metadata\");\n const manifestElement = findChild(opf, \"manifest\");\n const spineElement = findChild(opf, \"spine\");\n const guideElement = findChild(opf, \"guide\");\n\n const manifest = buildManifest(archive, opfPath, manifestElement);\n const manifestByPath = new Map(\n [...manifest.values()].map((item) => [item.path, item]),\n );\n const spine = buildSpine(spineElement, manifest);\n const guideNonContentPaths = buildGuideNonContentPaths(\n archive,\n opfPath,\n guideElement,\n );\n const metadata = buildMetadata(metadataElement);\n const navPath = findNavPath(manifest);\n const ncxPath = findNcxPath(manifest, spineElement);\n const coverItem = findCoverItem(manifest, metadataElement);\n\n return {\n version,\n opfPath,\n metadata: {\n ...metadata,\n version: BOOK_META_VERSION,\n sourceFormat: \"epub\",\n },\n manifest,\n manifestByPath,\n spine,\n navPath,\n ncxPath,\n coverPath: coverItem?.path,\n coverMediaType: coverItem?.mediaType,\n guideNonContentPaths,\n };\n}\n\nasync function findOpfPath(archive: EpubArchive): Promise<string> {\n const container = parseXml(await archive.readText(\"META-INF/container.xml\"));\n const rootfiles = findChild(container, \"rootfiles\");\n const rootfile = rootfiles?.children.find(\n (child) => getLocalName(child.name) === \"rootfile\",\n );\n const fullPath =\n rootfile === undefined ? undefined : getAttribute(rootfile, \"full-path\");\n\n if (fullPath === undefined || fullPath.trim() === \"\") {\n throw new Error(\"EPUB container.xml does not contain an OPF rootfile\");\n }\n\n return fullPath;\n}\n\nfunction parsePackageVersion(version: string | undefined): 2 | 3 {\n return version?.trim().startsWith(\"3\") === true ? 3 : 2;\n}\n\nfunction buildMetadata(metadataElement: XmlElement | undefined): BookMeta {\n if (metadataElement === undefined) {\n return createEmptyMetadata();\n }\n\n const titles = readMetadataValues(metadataElement, \"title\");\n const creators = readMetadataValues(metadataElement, \"creator\");\n const languages = readMetadataValues(metadataElement, \"language\");\n const identifiers = readMetadataValues(metadataElement, \"identifier\");\n const publishers = readMetadataValues(metadataElement, \"publisher\");\n const dates = readMetadataValues(metadataElement, \"date\");\n const descriptions = readMetadataValues(metadataElement, \"description\");\n\n return {\n ...createEmptyMetadata(),\n title: titles[0] ?? null,\n authors: [...creators],\n language: languages[0] ?? null,\n identifier: identifiers[0] ?? null,\n publisher: publishers[0] ?? null,\n publishedAt: dates[0] ?? null,\n description: descriptions[0] ?? null,\n };\n}\n\nfunction createEmptyMetadata(): BookMeta {\n return {\n version: BOOK_META_VERSION,\n sourceFormat: \"epub\",\n title: null,\n authors: [],\n language: null,\n identifier: null,\n publisher: null,\n publishedAt: null,\n description: null,\n };\n}\n\nfunction readMetadataValues(\n metadataElement: XmlElement,\n localName: string,\n): readonly string[] {\n return metadataElement.children\n .filter((child) => getLocalName(child.name) === localName)\n .map((child) => normalizeText(getDescendantText(child)))\n .filter((value): value is string => value !== undefined);\n}\n\nfunction buildManifest(\n archive: EpubArchive,\n opfPath: string,\n manifestElement: XmlElement | undefined,\n): ReadonlyMap<string, EpubManifestItem> {\n const manifest = new Map<string, EpubManifestItem>();\n\n if (manifestElement === undefined) {\n return manifest;\n }\n\n for (const item of findChildren(manifestElement, \"item\")) {\n const id = getAttribute(item, \"id\");\n const href = getAttribute(item, \"href\");\n const mediaType = getAttribute(item, \"media-type\") ?? \"\";\n\n if (id === undefined || href === undefined) {\n continue;\n }\n\n manifest.set(id, {\n id,\n path: archive.resolveRelativePath(opfPath, href),\n mediaType,\n properties: new Set(\n (getAttribute(item, \"properties\") ?? \"\")\n .split(/\\s+/u)\n .map((value) => value.trim().toLowerCase())\n .filter((value) => value !== \"\"),\n ),\n });\n }\n\n return manifest;\n}\n\nfunction buildSpine(\n spineElement: XmlElement | undefined,\n manifest: ReadonlyMap<string, EpubManifestItem>,\n): readonly EpubSpineItem[] {\n if (spineElement === undefined) {\n return [];\n }\n\n return findChildren(spineElement, \"itemref\")\n .map((itemref) => getAttribute(itemref, \"idref\"))\n .filter((idref): idref is string => idref !== undefined)\n .map((idref) => {\n const item = manifest.get(idref);\n\n if (\n item === undefined ||\n (item.mediaType !== \"application/xhtml+xml\" &&\n item.mediaType !== \"text/html\")\n ) {\n return undefined;\n }\n\n return {\n idref,\n path: item.path,\n mediaType: item.mediaType,\n } satisfies EpubSpineItem;\n })\n .filter((item): item is EpubSpineItem => item !== undefined);\n}\n\nfunction buildGuideNonContentPaths(\n archive: EpubArchive,\n opfPath: string,\n guideElement: XmlElement | undefined,\n): ReadonlySet<string> {\n const paths = new Set<string>();\n\n if (guideElement === undefined) {\n return paths;\n }\n\n for (const reference of findChildren(guideElement, \"reference\")) {\n const type = (getAttribute(reference, \"type\") ?? \"\").trim().toLowerCase();\n if (!GUIDE_NON_CONTENT_TYPES.has(type)) {\n continue;\n }\n\n const href = getAttribute(reference, \"href\");\n if (href === undefined || href.trim() === \"\") {\n continue;\n }\n\n paths.add(archive.resolveRelativePath(opfPath, splitHref(href).path));\n }\n\n return paths;\n}\n\nfunction findNavPath(\n manifest: ReadonlyMap<string, EpubManifestItem>,\n): string | undefined {\n for (const item of manifest.values()) {\n if (item.properties.has(\"nav\")) {\n return item.path;\n }\n }\n\n return undefined;\n}\n\nfunction findNcxPath(\n manifest: ReadonlyMap<string, EpubManifestItem>,\n spineElement: XmlElement | undefined,\n): string | undefined {\n const tocId =\n spineElement === undefined ? undefined : getAttribute(spineElement, \"toc\");\n\n if (tocId !== undefined) {\n return manifest.get(tocId)?.path;\n }\n\n for (const item of manifest.values()) {\n if (item.mediaType === \"application/x-dtbncx+xml\") {\n return item.path;\n }\n }\n\n return undefined;\n}\n\nfunction findCoverItem(\n manifest: ReadonlyMap<string, EpubManifestItem>,\n metadataElement: XmlElement | undefined,\n): EpubManifestItem | undefined {\n for (const item of manifest.values()) {\n if (\n item.properties.has(\"cover-image\") &&\n item.mediaType.startsWith(\"image/\")\n ) {\n return item;\n }\n }\n\n const coverId = readCoverIdFromMetadata(metadataElement);\n if (coverId !== undefined) {\n const coverItem = manifest.get(coverId);\n if (coverItem?.mediaType.startsWith(\"image/\") === true) {\n return coverItem;\n }\n }\n\n for (const coverItemId of COVER_ITEM_IDS) {\n const coverItem = manifest.get(coverItemId);\n if (coverItem?.mediaType.startsWith(\"image/\") === true) {\n return coverItem;\n }\n }\n\n for (const item of manifest.values()) {\n if (\n item.mediaType.startsWith(\"image/\") &&\n posix.basename(item.path).toLowerCase().includes(\"cover\")\n ) {\n return item;\n }\n }\n\n return undefined;\n}\n\nfunction readCoverIdFromMetadata(\n metadataElement: XmlElement | undefined,\n): string | undefined {\n if (metadataElement === undefined) {\n return undefined;\n }\n\n for (const meta of findChildren(metadataElement, \"meta\")) {\n const name = (getAttribute(meta, \"name\") ?? \"\").trim().toLowerCase();\n if (name !== \"cover\") {\n continue;\n }\n\n const content = getAttribute(meta, \"content\");\n if (content !== undefined && content.trim() !== \"\") {\n return content.trim();\n }\n }\n\n return undefined;\n}\n\nfunction normalizeText(text: string): string | undefined {\n const normalized = text.replace(/\\s+/gu, \" \").trim();\n\n return normalized === \"\" ? undefined : normalized;\n}\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/source/epub/xml.ts"],"sourcesContent":["import { SaxesParser, type SaxesTagPlain } from \"saxes\";\n\nexport interface XmlElement {\n readonly name: string;\n readonly attributes: Readonly<Record<string, string>>;\n readonly children: readonly XmlElement[];\n readonly text: string;\n}\n\ninterface MutableXmlElement {\n readonly name: string;\n readonly attributes: Record<string, string>;\n readonly children: MutableXmlElement[];\n text: string;\n}\n\nexport function parseXml(content: string): XmlElement {\n const parser = new SaxesParser({ xmlns: false });\n const stack: MutableXmlElement[] = [];\n let root: MutableXmlElement | undefined;\n\n parser.on(\"opentag\", (tag: SaxesTagPlain) => {\n const element: MutableXmlElement = {\n name: tag.name,\n attributes: Object.fromEntries(\n Object.entries(tag.attributes).map(([name, value]) => [\n name,\n String(value),\n ]),\n ),\n children: [],\n text: \"\",\n };\n\n const parent = stack[stack.length - 1];\n if (parent === undefined) {\n root = element;\n } else {\n parent.children.push(element);\n }\n\n stack.push(element);\n });\n\n parser.on(\"text\", (text: string) => {\n const current = stack[stack.length - 1];\n if (current !== undefined) {\n current.text += text;\n }\n });\n\n parser.on(\"cdata\", (text: string) => {\n const current = stack[stack.length - 1];\n if (current !== undefined) {\n current.text += text;\n }\n });\n\n parser.on(\"closetag\", () => {\n stack.pop();\n });\n\n parser.write(content).close();\n\n if (root === undefined) {\n throw new Error(\"XML document is empty\");\n }\n\n return freezeXmlElement(root);\n}\n\nexport function findChild(\n element: XmlElement,\n localName: string,\n): XmlElement | undefined {\n return element.children.find(\n (child) => getLocalName(child.name) === localName,\n );\n}\n\nexport function findChildren(\n element: XmlElement,\n localName: string,\n): readonly XmlElement[] {\n return element.children.filter(\n (child) => getLocalName(child.name) === localName,\n );\n}\n\nexport function findDescendant(\n element: XmlElement,\n localName: string,\n): XmlElement | undefined {\n for (const child of element.children) {\n if (getLocalName(child.name) === localName) {\n return child;\n }\n\n const descendant = findDescendant(child, localName);\n if (descendant !== undefined) {\n return descendant;\n }\n }\n\n return undefined;\n}\n\nexport function findDescendants(\n element: XmlElement,\n localName: string,\n): readonly XmlElement[] {\n const descendants: XmlElement[] = [];\n\n for (const child of element.children) {\n if (getLocalName(child.name) === localName) {\n descendants.push(child);\n }\n\n descendants.push(...findDescendants(child, localName));\n }\n\n return descendants;\n}\n\nexport function getAttribute(\n element: XmlElement,\n name: string,\n): string | undefined {\n return element.attributes[name];\n}\n\nexport function getDescendantText(element: XmlElement): string {\n let text = element.text;\n\n for (const child of element.children) {\n text += getDescendantText(child);\n }\n\n return text;\n}\n\nexport function getLocalName(name: string): string {\n const index = name.indexOf(\":\");\n\n return index === -1 ? name : name.slice(index + 1);\n}\n\nfunction freezeXmlElement(element: MutableXmlElement): XmlElement {\n return {\n name: element.name,\n attributes: Object.freeze({ ...element.attributes }),\n children: Object.freeze(element.children.map(freezeXmlElement)),\n text: element.text,\n };\n}\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/source/index.ts"],"sourcesContent":["export {\n BOOK_META_VERSION,\n SOURCE_FORMATS,\n bookMetaSchema,\n sourceFormatSchema,\n type BookMeta,\n type SourceFormat,\n} from \"./meta.js\";\nexport type { SourceAdapter, SourceDocument } from \"./adapter.js\";\nexport { EpubSourceAdapter, EPUB_SOURCE_ADAPTER } from \"./epub/index.js\";\nexport {\n MARKDOWN_SOURCE_ADAPTER,\n PlainTextSourceAdapter,\n TXT_SOURCE_ADAPTER,\n} from \"./plain-text.js\";\nexport {\n TOC_FILE_VERSION,\n tocFileSchema,\n tocItemSchema,\n type TocFile,\n type TocItem,\n} from \"./toc.js\";\nexport type { SourceAsset, SourceSection, SourceTextStream } from \"./types.js\";\n"],"mappings":"AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AAEP,SAAS,mBAAmB,2BAA2B;AACvD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;","names":[]}