wiki-graph-core 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (576) hide show
  1. package/LICENSE +201 -0
  2. package/data/editor/clue_reviewer.jinja +410 -0
  3. package/data/editor/clue_reviewer_generator.jinja +428 -0
  4. package/data/editor/revision_feedback.jinja +5 -0
  5. package/data/editor/text_compressor.jinja +127 -0
  6. package/data/guaranteed/response_intent_classifier.jinja +8 -0
  7. package/data/help/commands/archive/next.jinja +29 -0
  8. package/data/help/commands/gc.jinja +38 -0
  9. package/data/help/commands/legacy/migrate.jinja +20 -0
  10. package/data/help/commands/legacy.jinja +19 -0
  11. package/data/help/commands/maintenance/chapter/add.jinja +41 -0
  12. package/data/help/commands/maintenance/chapter/list.jinja +33 -0
  13. package/data/help/commands/maintenance/chapter/move.jinja +36 -0
  14. package/data/help/commands/maintenance/chapter/remove.jinja +26 -0
  15. package/data/help/commands/maintenance/chapter/reset.jinja +29 -0
  16. package/data/help/commands/maintenance/chapter/set-source.jinja +34 -0
  17. package/data/help/commands/maintenance/chapter/set-summary.jinja +31 -0
  18. package/data/help/commands/maintenance/chapter/set-title.jinja +29 -0
  19. package/data/help/commands/maintenance/chapter/tree.jinja +58 -0
  20. package/data/help/commands/maintenance/chapter.jinja +59 -0
  21. package/data/help/commands/maintenance/cover.jinja +28 -0
  22. package/data/help/commands/maintenance/meta.jinja +55 -0
  23. package/data/help/commands/predicate.jinja +460 -0
  24. package/data/help/commands/root.jinja +83 -0
  25. package/data/help/commands/transform.jinja +34 -0
  26. package/data/help/commands/uri.jinja +274 -0
  27. package/data/help/topics/config.jinja +88 -0
  28. package/data/help/topics/format.jinja +72 -0
  29. package/data/help/topics/readiness.jinja +99 -0
  30. package/data/help/topics/recipe.jinja +151 -0
  31. package/data/help/topics/runtime.jinja +62 -0
  32. package/data/help/topics/uri.jinja +178 -0
  33. package/data/output/epub/cover.xhtml.jinja +13 -0
  34. package/data/output/epub/nav.xhtml.jinja +12 -0
  35. package/data/output/epub/package.opf.xml.jinja +39 -0
  36. package/data/output/epub/section.xhtml.jinja +12 -0
  37. package/data/topologization/book_coherence_extraction.jinja +223 -0
  38. package/data/topologization/chunk_extraction.jinja +233 -0
  39. package/data/topologization/evidence_choice.jinja +38 -0
  40. package/data/topologization/translate_chunks.jinja +138 -0
  41. package/data/topologization/user_focused_extraction.jinja +378 -0
  42. package/dist/archive/query/archive-view.d.ts +26 -0
  43. package/dist/archive/query/archive-view.js +4540 -0
  44. package/dist/archive/query/archive-view.js.map +1 -0
  45. package/dist/archive/query/continuation-cursor.d.ts +61 -0
  46. package/dist/archive/query/continuation-cursor.js +363 -0
  47. package/dist/archive/query/continuation-cursor.js.map +1 -0
  48. package/dist/archive/query/index.d.ts +29 -0
  49. package/dist/archive/query/index.js +63 -0
  50. package/dist/archive/query/index.js.map +1 -0
  51. package/dist/archive/query/lexical-search.d.ts +22 -0
  52. package/dist/archive/query/lexical-search.js +137 -0
  53. package/dist/archive/query/lexical-search.js.map +1 -0
  54. package/dist/archive/query/search-cache.d.ts +192 -0
  55. package/dist/archive/query/search-cache.js +1248 -0
  56. package/dist/archive/query/search-cache.js.map +1 -0
  57. package/dist/archive/search-index/index.d.ts +26 -0
  58. package/dist/archive/search-index/index.js +29 -0
  59. package/dist/archive/search-index/index.js.map +1 -0
  60. package/dist/archive/search-index/search-index.d.ts +26 -0
  61. package/dist/archive/search-index/search-index.js +555 -0
  62. package/dist/archive/search-index/search-index.js.map +1 -0
  63. package/dist/archive/search-index/search-tokenizer.d.ts +16 -0
  64. package/dist/archive/search-index/search-tokenizer.js +225 -0
  65. package/dist/archive/search-index/search-tokenizer.js.map +1 -0
  66. package/dist/common/cli-command.d.ts +4 -0
  67. package/dist/common/cli-command.js +7 -0
  68. package/dist/common/cli-command.js.map +1 -0
  69. package/dist/common/data-dir.d.ts +3 -0
  70. package/dist/common/data-dir.js +48 -0
  71. package/dist/common/data-dir.js.map +1 -0
  72. package/dist/common/language.d.ts +55 -0
  73. package/dist/common/language.js +208 -0
  74. package/dist/common/language.js.map +1 -0
  75. package/dist/common/llm-scope.d.ts +19 -0
  76. package/dist/common/llm-scope.js +31 -0
  77. package/dist/common/llm-scope.js.map +1 -0
  78. package/dist/common/logging.d.ts +22 -0
  79. package/dist/common/logging.js +141 -0
  80. package/dist/common/logging.js.map +1 -0
  81. package/dist/common/template.d.ts +8 -0
  82. package/dist/common/template.js +54 -0
  83. package/dist/common/template.js.map +1 -0
  84. package/dist/common/tinyld-language.d.ts +6 -0
  85. package/dist/common/tinyld-language.js +34 -0
  86. package/dist/common/tinyld-language.js.map +1 -0
  87. package/dist/common/wiki-graph-dir.d.ts +10 -0
  88. package/dist/common/wiki-graph-dir.js +41 -0
  89. package/dist/common/wiki-graph-dir.js.map +1 -0
  90. package/dist/common/wiki-graph-temp.d.ts +6 -0
  91. package/dist/common/wiki-graph-temp.js +21 -0
  92. package/dist/common/wiki-graph-temp.js.map +1 -0
  93. package/dist/common/wiki-graph-uri.d.ts +28 -0
  94. package/dist/common/wiki-graph-uri.js +171 -0
  95. package/dist/common/wiki-graph-uri.js.map +1 -0
  96. package/dist/context/index.d.ts +1 -0
  97. package/dist/context/index.js +13 -0
  98. package/dist/context/index.js.map +1 -0
  99. package/dist/context/task-context.d.ts +41 -0
  100. package/dist/context/task-context.js +111 -0
  101. package/dist/context/task-context.js.map +1 -0
  102. package/dist/document/database.d.ts +30 -0
  103. package/dist/document/database.js +273 -0
  104. package/dist/document/database.js.map +1 -0
  105. package/dist/document/document.d.ts +153 -0
  106. package/dist/document/document.js +615 -0
  107. package/dist/document/document.js.map +1 -0
  108. package/dist/document/fragments.d.ts +63 -0
  109. package/dist/document/fragments.js +371 -0
  110. package/dist/document/fragments.js.map +1 -0
  111. package/dist/document/index.d.ts +13 -0
  112. package/dist/document/index.js +62 -0
  113. package/dist/document/index.js.map +1 -0
  114. package/dist/document/schema.d.ts +8 -0
  115. package/dist/document/schema.js +472 -0
  116. package/dist/document/schema.js.map +1 -0
  117. package/dist/document/shared-state-database.d.ts +9 -0
  118. package/dist/document/shared-state-database.js +193 -0
  119. package/dist/document/shared-state-database.js.map +1 -0
  120. package/dist/document/stores.d.ts +203 -0
  121. package/dist/document/stores.js +1678 -0
  122. package/dist/document/stores.js.map +1 -0
  123. package/dist/document/text-streams.d.ts +86 -0
  124. package/dist/document/text-streams.js +515 -0
  125. package/dist/document/text-streams.js.map +1 -0
  126. package/dist/document/types.d.ts +148 -0
  127. package/dist/document/types.js +69 -0
  128. package/dist/document/types.js.map +1 -0
  129. package/dist/editor/clue.d.ts +27 -0
  130. package/dist/editor/clue.js +158 -0
  131. package/dist/editor/clue.js.map +1 -0
  132. package/dist/editor/compressor.d.ts +18 -0
  133. package/dist/editor/compressor.js +68 -0
  134. package/dist/editor/compressor.js.map +1 -0
  135. package/dist/editor/editor.d.ts +39 -0
  136. package/dist/editor/editor.js +253 -0
  137. package/dist/editor/editor.js.map +1 -0
  138. package/dist/editor/feedback.d.ts +16 -0
  139. package/dist/editor/feedback.js +104 -0
  140. package/dist/editor/feedback.js.map +1 -0
  141. package/dist/editor/index.d.ts +17 -0
  142. package/dist/editor/index.js +5 -0
  143. package/dist/editor/index.js.map +1 -0
  144. package/dist/editor/language-review.d.ts +14 -0
  145. package/dist/editor/language-review.js +35 -0
  146. package/dist/editor/language-review.js.map +1 -0
  147. package/dist/editor/log.d.ts +37 -0
  148. package/dist/editor/log.js +202 -0
  149. package/dist/editor/log.js.map +1 -0
  150. package/dist/editor/markup.d.ts +20 -0
  151. package/dist/editor/markup.js +294 -0
  152. package/dist/editor/markup.js.map +1 -0
  153. package/dist/editor/prompt-templates.d.ts +6 -0
  154. package/dist/editor/prompt-templates.js +11 -0
  155. package/dist/editor/prompt-templates.js.map +1 -0
  156. package/dist/editor/response.d.ts +5 -0
  157. package/dist/editor/response.js +31 -0
  158. package/dist/editor/response.js.map +1 -0
  159. package/dist/editor/review.d.ts +34 -0
  160. package/dist/editor/review.js +189 -0
  161. package/dist/editor/review.js.map +1 -0
  162. package/dist/editor/types.d.ts +31 -0
  163. package/dist/editor/types.js +21 -0
  164. package/dist/editor/types.js.map +1 -0
  165. package/dist/evidence-selection/anchor-resolver.d.ts +43 -0
  166. package/dist/evidence-selection/anchor-resolver.js +783 -0
  167. package/dist/evidence-selection/anchor-resolver.js.map +1 -0
  168. package/dist/evidence-selection/anchor-types.d.ts +27 -0
  169. package/dist/evidence-selection/anchor-types.js +1 -0
  170. package/dist/evidence-selection/anchor-types.js.map +1 -0
  171. package/dist/evidence-selection/index.d.ts +8 -0
  172. package/dist/evidence-selection/index.js +32 -0
  173. package/dist/evidence-selection/index.js.map +1 -0
  174. package/dist/evidence-selection/prompt.d.ts +18 -0
  175. package/dist/evidence-selection/prompt.js +54 -0
  176. package/dist/evidence-selection/prompt.js.map +1 -0
  177. package/dist/evidence-selection/quote-score.d.ts +29 -0
  178. package/dist/evidence-selection/quote-score.js +331 -0
  179. package/dist/evidence-selection/quote-score.js.map +1 -0
  180. package/dist/evidence-selection/selection-resolver.d.ts +19 -0
  181. package/dist/evidence-selection/selection-resolver.js +303 -0
  182. package/dist/evidence-selection/selection-resolver.js.map +1 -0
  183. package/dist/evidence-selection/text.d.ts +4 -0
  184. package/dist/evidence-selection/text.js +66 -0
  185. package/dist/evidence-selection/text.js.map +1 -0
  186. package/dist/evidence-selection/types.d.ts +36 -0
  187. package/dist/evidence-selection/types.js +1 -0
  188. package/dist/evidence-selection/types.js.map +1 -0
  189. package/dist/facade/app.d.ts +75 -0
  190. package/dist/facade/app.js +141 -0
  191. package/dist/facade/app.js.map +1 -0
  192. package/dist/facade/build-queue.d.ts +181 -0
  193. package/dist/facade/build-queue.js +1442 -0
  194. package/dist/facade/build-queue.js.map +1 -0
  195. package/dist/facade/chapter-build.d.ts +60 -0
  196. package/dist/facade/chapter-build.js +1020 -0
  197. package/dist/facade/chapter-build.js.map +1 -0
  198. package/dist/facade/chapter.d.ts +168 -0
  199. package/dist/facade/chapter.js +944 -0
  200. package/dist/facade/chapter.js.map +1 -0
  201. package/dist/facade/digest.d.ts +55 -0
  202. package/dist/facade/digest.js +168 -0
  203. package/dist/facade/digest.js.map +1 -0
  204. package/dist/facade/graph.d.ts +60 -0
  205. package/dist/facade/graph.js +203 -0
  206. package/dist/facade/graph.js.map +1 -0
  207. package/dist/facade/import.d.ts +49 -0
  208. package/dist/facade/import.js +262 -0
  209. package/dist/facade/import.js.map +1 -0
  210. package/dist/facade/index.d.ts +39 -0
  211. package/dist/facade/index.js +171 -0
  212. package/dist/facade/index.js.map +1 -0
  213. package/dist/facade/knowledge-graph-build.d.ts +75 -0
  214. package/dist/facade/knowledge-graph-build.js +897 -0
  215. package/dist/facade/knowledge-graph-build.js.map +1 -0
  216. package/dist/facade/llm-sampling.d.ts +11 -0
  217. package/dist/facade/llm-sampling.js +58 -0
  218. package/dist/facade/llm-sampling.js.map +1 -0
  219. package/dist/facade/types.d.ts +8 -0
  220. package/dist/facade/types.js +1 -0
  221. package/dist/facade/types.js.map +1 -0
  222. package/dist/facade/wiki-graph-archive.d.ts +41 -0
  223. package/dist/facade/wiki-graph-archive.js +130 -0
  224. package/dist/facade/wiki-graph-archive.js.map +1 -0
  225. package/dist/gc/files.d.ts +15 -0
  226. package/dist/gc/files.js +141 -0
  227. package/dist/gc/files.js.map +1 -0
  228. package/dist/gc/index.d.ts +2 -0
  229. package/dist/gc/index.js +5 -0
  230. package/dist/gc/index.js.map +1 -0
  231. package/dist/gc/lock.d.ts +3 -0
  232. package/dist/gc/lock.js +137 -0
  233. package/dist/gc/lock.js.map +1 -0
  234. package/dist/gc/runner.d.ts +9 -0
  235. package/dist/gc/runner.js +129 -0
  236. package/dist/gc/runner.js.map +1 -0
  237. package/dist/gc/tmp-gc.d.ts +5 -0
  238. package/dist/gc/tmp-gc.js +57 -0
  239. package/dist/gc/tmp-gc.js.map +1 -0
  240. package/dist/gc/types.d.ts +24 -0
  241. package/dist/gc/types.js +1 -0
  242. package/dist/gc/types.js.map +1 -0
  243. package/dist/gc.cjs +10041 -0
  244. package/dist/gc.cjs.map +1 -0
  245. package/dist/gc.d.cts +10 -0
  246. package/dist/gc.d.ts +2 -0
  247. package/dist/gc.js +5 -0
  248. package/dist/gc.js.map +1 -0
  249. package/dist/guaranteed/classifier.d.ts +10 -0
  250. package/dist/guaranteed/classifier.js +88 -0
  251. package/dist/guaranteed/classifier.js.map +1 -0
  252. package/dist/guaranteed/errors.d.ts +38 -0
  253. package/dist/guaranteed/errors.js +73 -0
  254. package/dist/guaranteed/errors.js.map +1 -0
  255. package/dist/guaranteed/index.d.ts +7 -0
  256. package/dist/guaranteed/index.js +21 -0
  257. package/dist/guaranteed/index.js.map +1 -0
  258. package/dist/guaranteed/request.d.ts +8 -0
  259. package/dist/guaranteed/request.js +206 -0
  260. package/dist/guaranteed/request.js.map +1 -0
  261. package/dist/guaranteed/response.d.ts +12 -0
  262. package/dist/guaranteed/response.js +98 -0
  263. package/dist/guaranteed/response.js.map +1 -0
  264. package/dist/guaranteed/types.d.ts +20 -0
  265. package/dist/guaranteed/types.js +1 -0
  266. package/dist/guaranteed/types.js.map +1 -0
  267. package/dist/index-B8NNnQ8P.d.ts +424 -0
  268. package/dist/index.cjs +34774 -0
  269. package/dist/index.cjs.map +1 -0
  270. package/dist/index.d.cts +2462 -0
  271. package/dist/index.d.ts +79 -0
  272. package/dist/index.js +168 -0
  273. package/dist/index.js.map +1 -0
  274. package/dist/legacy-sdpub/upgrade.d.ts +7 -0
  275. package/dist/legacy-sdpub/upgrade.js +795 -0
  276. package/dist/legacy-sdpub/upgrade.js.map +1 -0
  277. package/dist/llm/cache.d.ts +13 -0
  278. package/dist/llm/cache.js +35 -0
  279. package/dist/llm/cache.js.map +1 -0
  280. package/dist/llm/client.d.ts +26 -0
  281. package/dist/llm/client.js +572 -0
  282. package/dist/llm/client.js.map +1 -0
  283. package/dist/llm/context.d.ts +22 -0
  284. package/dist/llm/context.js +78 -0
  285. package/dist/llm/context.js.map +1 -0
  286. package/dist/llm/errors.d.ts +7 -0
  287. package/dist/llm/errors.js +12 -0
  288. package/dist/llm/errors.js.map +1 -0
  289. package/dist/llm/index.d.ts +7 -0
  290. package/dist/llm/index.js +17 -0
  291. package/dist/llm/index.js.map +1 -0
  292. package/dist/llm/request-log.d.ts +9 -0
  293. package/dist/llm/request-log.js +35 -0
  294. package/dist/llm/request-log.js.map +1 -0
  295. package/dist/llm/sampling.d.ts +11 -0
  296. package/dist/llm/sampling.js +67 -0
  297. package/dist/llm/sampling.js.map +1 -0
  298. package/dist/llm/types.d.ts +50 -0
  299. package/dist/llm/types.js +1 -0
  300. package/dist/llm/types.js.map +1 -0
  301. package/dist/output/epub/archive.d.ts +9 -0
  302. package/dist/output/epub/archive.js +81 -0
  303. package/dist/output/epub/archive.js.map +1 -0
  304. package/dist/output/epub/book.d.ts +15 -0
  305. package/dist/output/epub/book.js +76 -0
  306. package/dist/output/epub/book.js.map +1 -0
  307. package/dist/output/epub/content.d.ts +9 -0
  308. package/dist/output/epub/content.js +35 -0
  309. package/dist/output/epub/content.js.map +1 -0
  310. package/dist/output/epub/index.d.ts +20 -0
  311. package/dist/output/epub/index.js +14 -0
  312. package/dist/output/epub/index.js.map +1 -0
  313. package/dist/output/epub/model.d.ts +24 -0
  314. package/dist/output/epub/model.js +1 -0
  315. package/dist/output/epub/model.js.map +1 -0
  316. package/dist/output/epub/navigation.d.ts +10 -0
  317. package/dist/output/epub/navigation.js +39 -0
  318. package/dist/output/epub/navigation.js.map +1 -0
  319. package/dist/output/epub/package.d.ts +17 -0
  320. package/dist/output/epub/package.js +29 -0
  321. package/dist/output/epub/package.js.map +1 -0
  322. package/dist/output/epub/shared.d.ts +4 -0
  323. package/dist/output/epub/shared.js +12 -0
  324. package/dist/output/epub/shared.js.map +1 -0
  325. package/dist/output/epub/templates.d.ts +35 -0
  326. package/dist/output/epub/templates.js +26 -0
  327. package/dist/output/epub/templates.js.map +1 -0
  328. package/dist/output/index.d.ts +14 -0
  329. package/dist/output/index.js +11 -0
  330. package/dist/output/index.js.map +1 -0
  331. package/dist/output/plain-text.d.ts +18 -0
  332. package/dist/output/plain-text.js +56 -0
  333. package/dist/output/plain-text.js.map +1 -0
  334. package/dist/progress/index.d.ts +3 -0
  335. package/dist/progress/index.js +14 -0
  336. package/dist/progress/index.js.map +1 -0
  337. package/dist/progress/reporter.d.ts +10 -0
  338. package/dist/progress/reporter.js +79 -0
  339. package/dist/progress/reporter.js.map +1 -0
  340. package/dist/progress/tracker.d.ts +37 -0
  341. package/dist/progress/tracker.js +119 -0
  342. package/dist/progress/tracker.js.map +1 -0
  343. package/dist/progress/types.d.ts +28 -0
  344. package/dist/progress/types.js +1 -0
  345. package/dist/progress/types.js.map +1 -0
  346. package/dist/reader/attention/attention.d.ts +39 -0
  347. package/dist/reader/attention/attention.js +123 -0
  348. package/dist/reader/attention/attention.js.map +1 -0
  349. package/dist/reader/attention/index.d.ts +9 -0
  350. package/dist/reader/attention/index.js +5 -0
  351. package/dist/reader/attention/index.js.map +1 -0
  352. package/dist/reader/attention/wave-reflection.d.ts +21 -0
  353. package/dist/reader/attention/wave-reflection.js +153 -0
  354. package/dist/reader/attention/wave-reflection.js.map +1 -0
  355. package/dist/reader/attention/working-memory.d.ts +28 -0
  356. package/dist/reader/attention/working-memory.js +62 -0
  357. package/dist/reader/attention/working-memory.js.map +1 -0
  358. package/dist/reader/chunk-batch/extract.d.ts +13 -0
  359. package/dist/reader/chunk-batch/extract.js +14 -0
  360. package/dist/reader/chunk-batch/extract.js.map +1 -0
  361. package/dist/reader/chunk-batch/extractor.d.ts +17 -0
  362. package/dist/reader/chunk-batch/extractor.js +337 -0
  363. package/dist/reader/chunk-batch/extractor.js.map +1 -0
  364. package/dist/reader/chunk-batch/fragment-projection.d.ts +34 -0
  365. package/dist/reader/chunk-batch/fragment-projection.js +94 -0
  366. package/dist/reader/chunk-batch/fragment-projection.js.map +1 -0
  367. package/dist/reader/chunk-batch/index.d.ts +12 -0
  368. package/dist/reader/chunk-batch/index.js +13 -0
  369. package/dist/reader/chunk-batch/index.js.map +1 -0
  370. package/dist/reader/chunk-batch/language.d.ts +9 -0
  371. package/dist/reader/chunk-batch/language.js +23 -0
  372. package/dist/reader/chunk-batch/language.js.map +1 -0
  373. package/dist/reader/chunk-batch/parser.d.ts +94 -0
  374. package/dist/reader/chunk-batch/parser.js +640 -0
  375. package/dist/reader/chunk-batch/parser.js.map +1 -0
  376. package/dist/reader/chunk-batch/prompt-templates.d.ts +6 -0
  377. package/dist/reader/chunk-batch/prompt-templates.js +11 -0
  378. package/dist/reader/chunk-batch/prompt-templates.js.map +1 -0
  379. package/dist/reader/chunk-batch/types.d.ts +85 -0
  380. package/dist/reader/chunk-batch/types.js +1 -0
  381. package/dist/reader/chunk-batch/types.js.map +1 -0
  382. package/dist/reader/index.d.ts +13 -0
  383. package/dist/reader/index.js +7 -0
  384. package/dist/reader/index.js.map +1 -0
  385. package/dist/reader/reader.d.ts +37 -0
  386. package/dist/reader/reader.js +82 -0
  387. package/dist/reader/reader.js.map +1 -0
  388. package/dist/reader/segment/index.d.ts +2 -0
  389. package/dist/reader/segment/index.js +5 -0
  390. package/dist/reader/segment/index.js.map +1 -0
  391. package/dist/reader/segment/intl-segmenter.d.ts +5 -0
  392. package/dist/reader/segment/intl-segmenter.js +102 -0
  393. package/dist/reader/segment/intl-segmenter.js.map +1 -0
  394. package/dist/reader/segment/segment.d.ts +5 -0
  395. package/dist/reader/segment/segment.js +9 -0
  396. package/dist/reader/segment/segment.js.map +1 -0
  397. package/dist/reader/segment/types.d.ts +14 -0
  398. package/dist/reader/segment/types.js +1 -0
  399. package/dist/reader/segment/types.js.map +1 -0
  400. package/dist/reader/types.d.ts +29 -0
  401. package/dist/reader/types.js +1 -0
  402. package/dist/reader/types.js.map +1 -0
  403. package/dist/serial.d.ts +89 -0
  404. package/dist/serial.js +476 -0
  405. package/dist/serial.js.map +1 -0
  406. package/dist/source/adapter.d.ts +15 -0
  407. package/dist/source/adapter.js +1 -0
  408. package/dist/source/adapter.js.map +1 -0
  409. package/dist/source/epub/archive.d.ts +27 -0
  410. package/dist/source/epub/archive.js +189 -0
  411. package/dist/source/epub/archive.js.map +1 -0
  412. package/dist/source/epub/content.d.ts +22 -0
  413. package/dist/source/epub/content.js +183 -0
  414. package/dist/source/epub/content.js.map +1 -0
  415. package/dist/source/epub/document.d.ts +55 -0
  416. package/dist/source/epub/document.js +179 -0
  417. package/dist/source/epub/document.js.map +1 -0
  418. package/dist/source/epub/index.d.ts +10 -0
  419. package/dist/source/epub/index.js +6 -0
  420. package/dist/source/epub/index.js.map +1 -0
  421. package/dist/source/epub/navigation.d.ts +16 -0
  422. package/dist/source/epub/navigation.js +215 -0
  423. package/dist/source/epub/navigation.js.map +1 -0
  424. package/dist/source/epub/package.d.ts +33 -0
  425. package/dist/source/epub/package.js +237 -0
  426. package/dist/source/epub/package.js.map +1 -0
  427. package/dist/source/epub/xml.d.ts +16 -0
  428. package/dist/source/epub/xml.js +111 -0
  429. package/dist/source/epub/xml.js.map +1 -0
  430. package/dist/source/index.d.ts +12 -0
  431. package/dist/source/index.js +32 -0
  432. package/dist/source/index.js.map +1 -0
  433. package/dist/source/meta.d.ts +30 -0
  434. package/dist/source/meta.js +22 -0
  435. package/dist/source/meta.js.map +1 -0
  436. package/dist/source/plain-text.d.ts +16 -0
  437. package/dist/source/plain-text.js +86 -0
  438. package/dist/source/plain-text.js.map +1 -0
  439. package/dist/source/toc.d.ts +16 -0
  440. package/dist/source/toc.js +17 -0
  441. package/dist/source/toc.js.map +1 -0
  442. package/dist/source/types.d.ts +16 -0
  443. package/dist/source/types.js +1 -0
  444. package/dist/source/types.js.map +1 -0
  445. package/dist/topology/grouping.d.ts +15 -0
  446. package/dist/topology/grouping.js +18 -0
  447. package/dist/topology/grouping.js.map +1 -0
  448. package/dist/topology/index.d.ts +21 -0
  449. package/dist/topology/index.js +5 -0
  450. package/dist/topology/index.js.map +1 -0
  451. package/dist/topology/resource-segmentation.d.ts +13 -0
  452. package/dist/topology/resource-segmentation.js +111 -0
  453. package/dist/topology/resource-segmentation.js.map +1 -0
  454. package/dist/topology/segment-incision.d.ts +18 -0
  455. package/dist/topology/segment-incision.js +197 -0
  456. package/dist/topology/segment-incision.js.map +1 -0
  457. package/dist/topology/snake-detector.d.ts +13 -0
  458. package/dist/topology/snake-detector.js +520 -0
  459. package/dist/topology/snake-detector.js.map +1 -0
  460. package/dist/topology/snake-graph-builder.d.ts +14 -0
  461. package/dist/topology/snake-graph-builder.js +76 -0
  462. package/dist/topology/snake-graph-builder.js.map +1 -0
  463. package/dist/topology/topology.d.ts +29 -0
  464. package/dist/topology/topology.js +348 -0
  465. package/dist/topology/topology.js.map +1 -0
  466. package/dist/topology/weights.d.ts +10 -0
  467. package/dist/topology/weights.js +84 -0
  468. package/dist/topology/weights.js.map +1 -0
  469. package/dist/types-FVIqiLC9.d.cts +24 -0
  470. package/dist/utils/async-semaphore.d.ts +7 -0
  471. package/dist/utils/async-semaphore.js +40 -0
  472. package/dist/utils/async-semaphore.js.map +1 -0
  473. package/dist/utils/enum.d.ts +5 -0
  474. package/dist/utils/enum.js +18 -0
  475. package/dist/utils/enum.js.map +1 -0
  476. package/dist/utils/hash.d.ts +3 -0
  477. package/dist/utils/hash.js +132 -0
  478. package/dist/utils/hash.js.map +1 -0
  479. package/dist/utils/node-error.d.ts +4 -0
  480. package/dist/utils/node-error.js +59 -0
  481. package/dist/utils/node-error.js.map +1 -0
  482. package/dist/wikg/archive-uri.d.ts +1 -0
  483. package/dist/wikg/archive-uri.js +37 -0
  484. package/dist/wikg/archive-uri.js.map +1 -0
  485. package/dist/wikg/archive.d.ts +28 -0
  486. package/dist/wikg/archive.js +496 -0
  487. package/dist/wikg/archive.js.map +1 -0
  488. package/dist/wikg/index.d.ts +31 -0
  489. package/dist/wikg/index.js +60 -0
  490. package/dist/wikg/index.js.map +1 -0
  491. package/dist/wikg/wikg-coordinator.d.ts +45 -0
  492. package/dist/wikg/wikg-coordinator.js +1687 -0
  493. package/dist/wikg/wikg-coordinator.js.map +1 -0
  494. package/dist/wikg/wiki-graph-archive-file.d.ts +42 -0
  495. package/dist/wikg/wiki-graph-archive-file.js +78 -0
  496. package/dist/wikg/wiki-graph-archive-file.js.map +1 -0
  497. package/dist/wikilink/index.d.ts +10 -0
  498. package/dist/wikilink/index.js +7 -0
  499. package/dist/wikilink/index.js.map +1 -0
  500. package/dist/wikilink/relation-discovery.d.ts +31 -0
  501. package/dist/wikilink/relation-discovery.js +477 -0
  502. package/dist/wikilink/relation-discovery.js.map +1 -0
  503. package/dist/wikilink/types.d.ts +23 -0
  504. package/dist/wikilink/types.js +1 -0
  505. package/dist/wikilink/types.js.map +1 -0
  506. package/dist/wikilink/window.d.ts +7 -0
  507. package/dist/wikilink/window.js +53 -0
  508. package/dist/wikilink/window.js.map +1 -0
  509. package/dist/wikimatch/enrichment.d.ts +10 -0
  510. package/dist/wikimatch/enrichment.js +55 -0
  511. package/dist/wikimatch/enrichment.js.map +1 -0
  512. package/dist/wikimatch/index.d.ts +16 -0
  513. package/dist/wikimatch/index.js +66 -0
  514. package/dist/wikimatch/index.js.map +1 -0
  515. package/dist/wikimatch/option-narrowing.d.ts +17 -0
  516. package/dist/wikimatch/option-narrowing.js +208 -0
  517. package/dist/wikimatch/option-narrowing.js.map +1 -0
  518. package/dist/wikimatch/options.d.ts +14 -0
  519. package/dist/wikimatch/options.js +155 -0
  520. package/dist/wikimatch/options.js.map +1 -0
  521. package/dist/wikimatch/policy-judge.d.ts +17 -0
  522. package/dist/wikimatch/policy-judge.js +430 -0
  523. package/dist/wikimatch/policy-judge.js.map +1 -0
  524. package/dist/wikimatch/range-suppression.d.ts +9 -0
  525. package/dist/wikimatch/range-suppression.js +27 -0
  526. package/dist/wikimatch/range-suppression.js.map +1 -0
  527. package/dist/wikimatch/surface-screening.d.ts +16 -0
  528. package/dist/wikimatch/surface-screening.js +168 -0
  529. package/dist/wikimatch/surface-screening.js.map +1 -0
  530. package/dist/wikimatch/surface-window.d.ts +6 -0
  531. package/dist/wikimatch/surface-window.js +44 -0
  532. package/dist/wikimatch/surface-window.js.map +1 -0
  533. package/dist/wikimatch/types.d.ts +151 -0
  534. package/dist/wikimatch/types.js +1 -0
  535. package/dist/wikimatch/types.js.map +1 -0
  536. package/dist/wikimatch/wikispine.d.ts +43 -0
  537. package/dist/wikimatch/wikispine.js +399 -0
  538. package/dist/wikimatch/wikispine.js.map +1 -0
  539. package/dist/wikimatch/window.d.ts +6 -0
  540. package/dist/wikimatch/window.js +83 -0
  541. package/dist/wikimatch/window.js.map +1 -0
  542. package/dist/wikimatch/words.d.ts +16 -0
  543. package/dist/wikimatch/words.js +66 -0
  544. package/dist/wikimatch/words.js.map +1 -0
  545. package/dist/wikipage/cache.d.ts +18 -0
  546. package/dist/wikipage/cache.js +404 -0
  547. package/dist/wikipage/cache.js.map +1 -0
  548. package/dist/wikipage/fetch-log.d.ts +17 -0
  549. package/dist/wikipage/fetch-log.js +143 -0
  550. package/dist/wikipage/fetch-log.js.map +1 -0
  551. package/dist/wikipage/index.d.ts +14 -0
  552. package/dist/wikipage/index.js +17 -0
  553. package/dist/wikipage/index.js.map +1 -0
  554. package/dist/wikipage/normalizer.d.ts +14 -0
  555. package/dist/wikipage/normalizer.js +147 -0
  556. package/dist/wikipage/normalizer.js.map +1 -0
  557. package/dist/wikipage/rate-limiter.d.ts +13 -0
  558. package/dist/wikipage/rate-limiter.js +84 -0
  559. package/dist/wikipage/rate-limiter.js.map +1 -0
  560. package/dist/wikipage/resolver.d.ts +26 -0
  561. package/dist/wikipage/resolver.js +325 -0
  562. package/dist/wikipage/resolver.js.map +1 -0
  563. package/dist/wikipage/types.d.ts +96 -0
  564. package/dist/wikipage/types.js +1 -0
  565. package/dist/wikipage/types.js.map +1 -0
  566. package/dist/wikipage/wikimedia-client.d.ts +48 -0
  567. package/dist/wikipage/wikimedia-client.js +397 -0
  568. package/dist/wikipage/wikimedia-client.js.map +1 -0
  569. package/dist/worker-BgQ0Xl8T.d.cts +181 -0
  570. package/dist/worker.cjs +5259 -0
  571. package/dist/worker.cjs.map +1 -0
  572. package/dist/worker.d.cts +2 -0
  573. package/dist/worker.d.ts +2 -0
  574. package/dist/worker.js +5 -0
  575. package/dist/worker.js.map +1 -0
  576. package/package.json +78 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/progress/tracker.ts"],"sourcesContent":["import { createProgressReporter, type ProgressReporter } from \"./reporter.js\";\nimport type {\n SerialDiscoveryItem,\n WikiGraphOperation,\n WikiGraphProgressCallback,\n} from \"./types.js\";\n\nexport interface CreateDigestProgressTrackerOptions {\n readonly onProgress?: WikiGraphProgressCallback;\n readonly operation: WikiGraphOperation;\n}\n\nexport class DigestProgressTracker {\n readonly #reporter: ProgressReporter;\n #completedWords = 0;\n readonly #completedWordsBySerial = new Map<number, number>();\n #totalWords = 0;\n #discoverySettled = false;\n\n public constructor(options: CreateDigestProgressTrackerOptions) {\n this.#reporter = createProgressReporter(\n options.operation,\n options.onProgress,\n );\n }\n\n public createSerialTracker(input: {\n readonly id: number;\n }): SerialProgressTracker {\n return new SerialProgressTracker(this, input.id);\n }\n\n public async discoverSerials(\n serials: readonly SerialDiscoveryItem[],\n ): Promise<void> {\n this.#ensureDiscoveryOpen();\n this.#discoverySettled = true;\n this.#totalWords = serials.reduce((sum, serial) => sum + serial.words, 0);\n\n await this.#reporter.emit({\n available: true,\n serials,\n type: \"serials-discovered\",\n });\n await this.#emitDigestProgress();\n }\n\n public async markDiscoveryUnavailable(): Promise<void> {\n this.#ensureDiscoveryOpen();\n this.#discoverySettled = true;\n\n await this.#reporter.emit({\n available: false,\n serials: [],\n type: \"serials-discovered\",\n });\n }\n\n public async completeSerial(input: {\n readonly id: number;\n readonly words: number;\n }): Promise<void> {\n const previousCompletedWords =\n this.#completedWordsBySerial.get(input.id) ?? 0;\n\n if (input.words !== previousCompletedWords) {\n this.#completedWordsBySerial.set(input.id, input.words);\n this.#completedWords += input.words - previousCompletedWords;\n }\n\n const nextTotalWords = Math.max(\n this.#totalWords,\n this.#completedWords,\n input.words,\n );\n\n if (\n nextTotalWords === this.#totalWords &&\n input.words === previousCompletedWords\n ) {\n return;\n }\n\n this.#totalWords = nextTotalWords;\n await this.#emitDigestProgress();\n }\n\n public async emitSerialProgress(input: {\n readonly completedFragments: number;\n readonly completedWords: number;\n readonly id: number;\n }): Promise<void> {\n await this.#reporter.emit({\n completedFragments: input.completedFragments,\n completedWords: input.completedWords,\n id: input.id,\n type: \"serial-progress\",\n });\n }\n\n async #emitDigestProgress(): Promise<void> {\n await this.#reporter.emit({\n completedWords: this.#completedWords,\n totalWords: this.#totalWords,\n type: \"digest-progress\",\n });\n }\n\n #ensureDiscoveryOpen(): void {\n if (this.#discoverySettled) {\n throw new Error(\"Serial discovery has already been reported\");\n }\n }\n}\n\nexport class SerialProgressTracker {\n #completedFragments = 0;\n readonly #digestTracker: DigestProgressTracker;\n #completedWords = 0;\n readonly #id: number;\n\n public constructor(digestTracker: DigestProgressTracker, id: number) {\n this.#digestTracker = digestTracker;\n this.#id = id;\n }\n\n public async begin(_input?: {\n readonly fragments: number;\n readonly words: number;\n }): Promise<void> {}\n\n public async advance(wordsCount: number): Promise<void> {\n this.#completedWords += wordsCount;\n this.#completedFragments += 1;\n await this.#digestTracker.emitSerialProgress({\n completedFragments: this.#completedFragments,\n completedWords: this.#completedWords,\n id: this.#id,\n });\n }\n\n public async complete(finalWordsCount = 0): Promise<void> {\n this.#completedWords += finalWordsCount;\n if (finalWordsCount > 0) {\n this.#completedFragments += 1;\n }\n\n await this.#digestTracker.emitSerialProgress({\n completedFragments: this.#completedFragments,\n completedWords: this.#completedWords,\n id: this.#id,\n });\n await this.#digestTracker.completeSerial({\n id: this.#id,\n words: this.#completedWords,\n });\n }\n}\n\nexport function createDigestProgressTracker(\n options: CreateDigestProgressTrackerOptions,\n): DigestProgressTracker {\n return new DigestProgressTracker(options);\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,28 @@
1
+ type WikiGraphOperation = "digest-epub" | "digest-markdown" | "digest-text-stream" | "digest-txt";
2
+ interface SerialDiscoveryItem {
3
+ readonly id: number;
4
+ readonly fragments?: number | undefined;
5
+ readonly title?: string | undefined;
6
+ readonly words: number;
7
+ }
8
+ interface SerialsDiscoveredEvent {
9
+ readonly type: "serials-discovered";
10
+ readonly available: boolean;
11
+ readonly serials: readonly SerialDiscoveryItem[];
12
+ }
13
+ interface SerialProgressEvent {
14
+ readonly type: "serial-progress";
15
+ readonly id: number;
16
+ readonly completedWords: number;
17
+ readonly completedFragments: number;
18
+ }
19
+ interface DigestProgressEvent {
20
+ readonly type: "digest-progress";
21
+ readonly completedWords: number;
22
+ readonly totalWords: number;
23
+ }
24
+ type WikiGraphProgressEventType = WikiGraphProgressEvent["type"];
25
+ type WikiGraphProgressEvent = SerialsDiscoveredEvent | SerialProgressEvent | DigestProgressEvent;
26
+ type WikiGraphProgressCallback = (event: WikiGraphProgressEvent) => void | Promise<void>;
27
+
28
+ export type { DigestProgressEvent, SerialDiscoveryItem, SerialProgressEvent, SerialsDiscoveredEvent, WikiGraphOperation, WikiGraphProgressCallback, WikiGraphProgressEvent, WikiGraphProgressEventType };
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,39 @@
1
+ import { CognitiveChunk, ChunkImportanceAnnotation, ChunkBatch } from '../chunk-batch/types.js';
2
+ import '../../common/language.js';
3
+ import '../../llm/client.js';
4
+ import '../../llm/context.js';
5
+ import '../../llm/cache.js';
6
+ import '../../llm/types.js';
7
+ import 'ai';
8
+ import '../../document/types.js';
9
+
10
+ interface ChunkBatchContext {
11
+ readonly visibleChunkIds: readonly number[];
12
+ readonly workingMemoryPrompt: string;
13
+ }
14
+ interface ChunkGraphEdge {
15
+ readonly fromId: number;
16
+ readonly strength?: string;
17
+ readonly toId: number;
18
+ }
19
+ interface ChunkGraphDelta {
20
+ readonly chunks: CognitiveChunk[];
21
+ readonly edges: readonly ChunkGraphEdge[];
22
+ readonly importanceAnnotations?: readonly ChunkImportanceAnnotation[];
23
+ }
24
+ declare class Attention {
25
+ #private;
26
+ constructor(capacity: number, generationDecayFactor: number, idGenerator: () => Promise<number>);
27
+ get capacity(): number;
28
+ createChunkBatchContext(input?: {
29
+ includeCurrentFragment?: boolean;
30
+ }): ChunkBatchContext;
31
+ acceptChunkBatch(chunkBatch: ChunkBatch): Promise<ChunkGraphDelta>;
32
+ completeFragment(input: {
33
+ allChunks: readonly CognitiveChunk[];
34
+ getSuccessorChunkIds: (chunkId: number) => readonly number[];
35
+ }): void;
36
+ clear(): void;
37
+ }
38
+
39
+ export { Attention, type ChunkBatchContext, type ChunkGraphDelta, type ChunkGraphEdge };
@@ -0,0 +1,123 @@
1
+ import { WaveReflection } from "./wave-reflection.js";
2
+ import { WorkingMemory } from "./working-memory.js";
3
+ class Attention {
4
+ #idGenerator;
5
+ #waveReflection;
6
+ #workingMemory;
7
+ constructor(capacity, generationDecayFactor, idGenerator) {
8
+ this.#idGenerator = idGenerator;
9
+ this.#waveReflection = new WaveReflection(generationDecayFactor);
10
+ this.#workingMemory = new WorkingMemory(capacity);
11
+ }
12
+ get capacity() {
13
+ return this.#workingMemory.capacity;
14
+ }
15
+ createChunkBatchContext(input) {
16
+ const chunks = this.#workingMemory.getChunksForPrompt(
17
+ input?.includeCurrentFragment ?? true
18
+ );
19
+ return {
20
+ visibleChunkIds: chunks.map((chunk) => chunk.id),
21
+ workingMemoryPrompt: this.#workingMemory.formatForPrompt(
22
+ input?.includeCurrentFragment ?? true
23
+ )
24
+ };
25
+ }
26
+ async acceptChunkBatch(chunkBatch) {
27
+ const delta = await assembleChunkBatch({
28
+ chunkBatch,
29
+ generation: this.#workingMemory.generation,
30
+ idGenerator: this.#idGenerator,
31
+ visibleChunks: this.#workingMemory.getChunks()
32
+ });
33
+ this.#workingMemory.addChunks(delta.chunks);
34
+ return delta;
35
+ }
36
+ completeFragment(input) {
37
+ const previousFragmentChunks = this.#workingMemory.getAllChunksForSaving();
38
+ const latestChunkIds = previousFragmentChunks.map((chunk) => chunk.id);
39
+ const extraChunks = this.#waveReflection.selectTopChunks({
40
+ allChunks: input.allChunks,
41
+ capacity: this.#workingMemory.capacity,
42
+ getSuccessorChunkIds: input.getSuccessorChunkIds,
43
+ latestChunkIds
44
+ });
45
+ this.#workingMemory.setRetainedChunks({
46
+ extraChunks,
47
+ previousFragmentChunks
48
+ });
49
+ this.#workingMemory.finalizeFragment();
50
+ }
51
+ clear() {
52
+ this.#workingMemory.clear();
53
+ }
54
+ }
55
+ async function assembleChunkBatch(input) {
56
+ const tempIdRecord = /* @__PURE__ */ Object.create(
57
+ null
58
+ );
59
+ for (const [index, chunk] of input.chunkBatch.chunks.entries()) {
60
+ chunk.id = await input.idGenerator();
61
+ chunk.generation = input.generation;
62
+ const tempId = input.chunkBatch.tempIds[index];
63
+ if (tempId === void 0 || tempId === "") {
64
+ continue;
65
+ }
66
+ tempIdRecord[tempId] = chunk;
67
+ }
68
+ const visibleChunks = [...input.visibleChunks, ...input.chunkBatch.chunks];
69
+ const edges = [];
70
+ for (const link of input.chunkBatch.links) {
71
+ const fromChunk = resolveChunkReference(
72
+ link.from,
73
+ tempIdRecord,
74
+ visibleChunks
75
+ );
76
+ const toChunk = resolveChunkReference(link.to, tempIdRecord, visibleChunks);
77
+ if (fromChunk === void 0 || toChunk === void 0) {
78
+ continue;
79
+ }
80
+ const [edgeFromId, edgeToId] = fromChunk.id > toChunk.id ? [fromChunk.id, toChunk.id] : [toChunk.id, fromChunk.id];
81
+ attachLink(visibleChunks, edgeToId, edgeFromId);
82
+ if (link.strength === void 0) {
83
+ edges.push({
84
+ fromId: edgeFromId,
85
+ toId: edgeToId
86
+ });
87
+ continue;
88
+ }
89
+ edges.push({
90
+ fromId: edgeFromId,
91
+ strength: link.strength,
92
+ toId: edgeToId
93
+ });
94
+ }
95
+ return {
96
+ chunks: input.chunkBatch.chunks,
97
+ edges,
98
+ ...input.chunkBatch.importanceAnnotations === void 0 ? {} : {
99
+ importanceAnnotations: input.chunkBatch.importanceAnnotations
100
+ }
101
+ };
102
+ }
103
+ function resolveChunkReference(reference, tempIdRecord, visibleChunks) {
104
+ if (typeof reference === "string") {
105
+ return tempIdRecord[reference];
106
+ }
107
+ return visibleChunks.find((chunk) => chunk.id === reference);
108
+ }
109
+ function attachLink(visibleChunks, targetChunkId, sourceChunkId) {
110
+ for (const chunk of visibleChunks) {
111
+ if (chunk.id !== targetChunkId) {
112
+ continue;
113
+ }
114
+ if (!chunk.links.includes(sourceChunkId)) {
115
+ chunk.links.push(sourceChunkId);
116
+ }
117
+ return;
118
+ }
119
+ }
120
+ export {
121
+ Attention
122
+ };
123
+ //# sourceMappingURL=attention.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/reader/attention/attention.ts"],"sourcesContent":["import { WaveReflection } from \"./wave-reflection.js\";\nimport { WorkingMemory } from \"./working-memory.js\";\nimport type {\n ChunkBatch,\n ChunkImportanceAnnotation,\n CognitiveChunk,\n} from \"../chunk-batch/types.js\";\n\nexport interface ChunkBatchContext {\n readonly visibleChunkIds: readonly number[];\n readonly workingMemoryPrompt: string;\n}\n\nexport interface ChunkGraphEdge {\n readonly fromId: number;\n readonly strength?: string;\n readonly toId: number;\n}\n\nexport interface ChunkGraphDelta {\n readonly chunks: CognitiveChunk[];\n readonly edges: readonly ChunkGraphEdge[];\n readonly importanceAnnotations?: readonly ChunkImportanceAnnotation[];\n}\n\nexport class Attention {\n readonly #idGenerator: () => Promise<number>;\n readonly #waveReflection: WaveReflection;\n readonly #workingMemory: WorkingMemory;\n\n public constructor(\n capacity: number,\n generationDecayFactor: number,\n idGenerator: () => Promise<number>,\n ) {\n this.#idGenerator = idGenerator;\n this.#waveReflection = new WaveReflection(generationDecayFactor);\n this.#workingMemory = new WorkingMemory(capacity);\n }\n\n public get capacity(): number {\n return this.#workingMemory.capacity;\n }\n\n public createChunkBatchContext(input?: {\n includeCurrentFragment?: boolean;\n }): ChunkBatchContext {\n const chunks = this.#workingMemory.getChunksForPrompt(\n input?.includeCurrentFragment ?? true,\n );\n\n return {\n visibleChunkIds: chunks.map((chunk) => chunk.id),\n workingMemoryPrompt: this.#workingMemory.formatForPrompt(\n input?.includeCurrentFragment ?? true,\n ),\n };\n }\n\n public async acceptChunkBatch(\n chunkBatch: ChunkBatch,\n ): Promise<ChunkGraphDelta> {\n const delta = await assembleChunkBatch({\n chunkBatch,\n generation: this.#workingMemory.generation,\n idGenerator: this.#idGenerator,\n visibleChunks: this.#workingMemory.getChunks(),\n });\n\n this.#workingMemory.addChunks(delta.chunks);\n\n return delta;\n }\n\n public completeFragment(input: {\n allChunks: readonly CognitiveChunk[];\n getSuccessorChunkIds: (chunkId: number) => readonly number[];\n }): void {\n const previousFragmentChunks = this.#workingMemory.getAllChunksForSaving();\n const latestChunkIds = previousFragmentChunks.map((chunk) => chunk.id);\n const extraChunks = this.#waveReflection.selectTopChunks({\n allChunks: input.allChunks,\n capacity: this.#workingMemory.capacity,\n getSuccessorChunkIds: input.getSuccessorChunkIds,\n latestChunkIds,\n });\n\n this.#workingMemory.setRetainedChunks({\n extraChunks,\n previousFragmentChunks,\n });\n this.#workingMemory.finalizeFragment();\n }\n\n public clear(): void {\n this.#workingMemory.clear();\n }\n}\n\nasync function assembleChunkBatch(input: {\n chunkBatch: ChunkBatch;\n generation: number;\n idGenerator: () => Promise<number>;\n visibleChunks: readonly CognitiveChunk[];\n}): Promise<ChunkGraphDelta> {\n const tempIdRecord: Record<string, CognitiveChunk> = Object.create(\n null,\n ) as Record<string, CognitiveChunk>;\n\n for (const [index, chunk] of input.chunkBatch.chunks.entries()) {\n chunk.id = await input.idGenerator();\n chunk.generation = input.generation;\n\n const tempId = input.chunkBatch.tempIds[index];\n\n if (tempId === undefined || tempId === \"\") {\n continue;\n }\n\n tempIdRecord[tempId] = chunk;\n }\n\n const visibleChunks = [...input.visibleChunks, ...input.chunkBatch.chunks];\n const edges: ChunkGraphEdge[] = [];\n\n for (const link of input.chunkBatch.links) {\n const fromChunk = resolveChunkReference(\n link.from,\n tempIdRecord,\n visibleChunks,\n );\n const toChunk = resolveChunkReference(link.to, tempIdRecord, visibleChunks);\n\n if (fromChunk === undefined || toChunk === undefined) {\n continue;\n }\n\n const [edgeFromId, edgeToId] =\n fromChunk.id > toChunk.id\n ? ([fromChunk.id, toChunk.id] as const)\n : ([toChunk.id, fromChunk.id] as const);\n\n attachLink(visibleChunks, edgeToId, edgeFromId);\n if (link.strength === undefined) {\n edges.push({\n fromId: edgeFromId,\n toId: edgeToId,\n });\n continue;\n }\n\n edges.push({\n fromId: edgeFromId,\n strength: link.strength,\n toId: edgeToId,\n });\n }\n\n return {\n chunks: input.chunkBatch.chunks,\n edges,\n ...(input.chunkBatch.importanceAnnotations === undefined\n ? {}\n : {\n importanceAnnotations: input.chunkBatch.importanceAnnotations,\n }),\n };\n}\n\nfunction resolveChunkReference(\n reference: number | string,\n tempIdRecord: Readonly<Record<string, CognitiveChunk>>,\n visibleChunks: readonly CognitiveChunk[],\n): CognitiveChunk | undefined {\n if (typeof reference === \"string\") {\n return tempIdRecord[reference];\n }\n\n return visibleChunks.find((chunk) => chunk.id === reference);\n}\n\nfunction attachLink(\n visibleChunks: readonly CognitiveChunk[],\n targetChunkId: number,\n sourceChunkId: number,\n): void {\n for (const chunk of visibleChunks) {\n if (chunk.id !== targetChunkId) {\n continue;\n }\n\n if (!chunk.links.includes(sourceChunkId)) {\n chunk.links.push(sourceChunkId);\n }\n\n return;\n }\n}\n"],"mappings":"AAAA,SAAS,sBAAsB;AAC/B,SAAS,qBAAqB;AAwBvB,MAAM,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EAEF,YACL,UACA,uBACA,aACA;AACA,SAAK,eAAe;AACpB,SAAK,kBAAkB,IAAI,eAAe,qBAAqB;AAC/D,SAAK,iBAAiB,IAAI,cAAc,QAAQ;AAAA,EAClD;AAAA,EAEA,IAAW,WAAmB;AAC5B,WAAO,KAAK,eAAe;AAAA,EAC7B;AAAA,EAEO,wBAAwB,OAET;AACpB,UAAM,SAAS,KAAK,eAAe;AAAA,MACjC,OAAO,0BAA0B;AAAA,IACnC;AAEA,WAAO;AAAA,MACL,iBAAiB,OAAO,IAAI,CAAC,UAAU,MAAM,EAAE;AAAA,MAC/C,qBAAqB,KAAK,eAAe;AAAA,QACvC,OAAO,0BAA0B;AAAA,MACnC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAa,iBACX,YAC0B;AAC1B,UAAM,QAAQ,MAAM,mBAAmB;AAAA,MACrC;AAAA,MACA,YAAY,KAAK,eAAe;AAAA,MAChC,aAAa,KAAK;AAAA,MAClB,eAAe,KAAK,eAAe,UAAU;AAAA,IAC/C,CAAC;AAED,SAAK,eAAe,UAAU,MAAM,MAAM;AAE1C,WAAO;AAAA,EACT;AAAA,EAEO,iBAAiB,OAGf;AACP,UAAM,yBAAyB,KAAK,eAAe,sBAAsB;AACzE,UAAM,iBAAiB,uBAAuB,IAAI,CAAC,UAAU,MAAM,EAAE;AACrE,UAAM,cAAc,KAAK,gBAAgB,gBAAgB;AAAA,MACvD,WAAW,MAAM;AAAA,MACjB,UAAU,KAAK,eAAe;AAAA,MAC9B,sBAAsB,MAAM;AAAA,MAC5B;AAAA,IACF,CAAC;AAED,SAAK,eAAe,kBAAkB;AAAA,MACpC;AAAA,MACA;AAAA,IACF,CAAC;AACD,SAAK,eAAe,iBAAiB;AAAA,EACvC;AAAA,EAEO,QAAc;AACnB,SAAK,eAAe,MAAM;AAAA,EAC5B;AACF;AAEA,eAAe,mBAAmB,OAKL;AAC3B,QAAM,eAA+C,uBAAO;AAAA,IAC1D;AAAA,EACF;AAEA,aAAW,CAAC,OAAO,KAAK,KAAK,MAAM,WAAW,OAAO,QAAQ,GAAG;AAC9D,UAAM,KAAK,MAAM,MAAM,YAAY;AACnC,UAAM,aAAa,MAAM;AAEzB,UAAM,SAAS,MAAM,WAAW,QAAQ,KAAK;AAE7C,QAAI,WAAW,UAAa,WAAW,IAAI;AACzC;AAAA,IACF;AAEA,iBAAa,MAAM,IAAI;AAAA,EACzB;AAEA,QAAM,gBAAgB,CAAC,GAAG,MAAM,eAAe,GAAG,MAAM,WAAW,MAAM;AACzE,QAAM,QAA0B,CAAC;AAEjC,aAAW,QAAQ,MAAM,WAAW,OAAO;AACzC,UAAM,YAAY;AAAA,MAChB,KAAK;AAAA,MACL;AAAA,MACA;AAAA,IACF;AACA,UAAM,UAAU,sBAAsB,KAAK,IAAI,cAAc,aAAa;AAE1E,QAAI,cAAc,UAAa,YAAY,QAAW;AACpD;AAAA,IACF;AAEA,UAAM,CAAC,YAAY,QAAQ,IACzB,UAAU,KAAK,QAAQ,KAClB,CAAC,UAAU,IAAI,QAAQ,EAAE,IACzB,CAAC,QAAQ,IAAI,UAAU,EAAE;AAEhC,eAAW,eAAe,UAAU,UAAU;AAC9C,QAAI,KAAK,aAAa,QAAW;AAC/B,YAAM,KAAK;AAAA,QACT,QAAQ;AAAA,QACR,MAAM;AAAA,MACR,CAAC;AACD;AAAA,IACF;AAEA,UAAM,KAAK;AAAA,MACT,QAAQ;AAAA,MACR,UAAU,KAAK;AAAA,MACf,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL,QAAQ,MAAM,WAAW;AAAA,IACzB;AAAA,IACA,GAAI,MAAM,WAAW,0BAA0B,SAC3C,CAAC,IACD;AAAA,MACE,uBAAuB,MAAM,WAAW;AAAA,IAC1C;AAAA,EACN;AACF;AAEA,SAAS,sBACP,WACA,cACA,eAC4B;AAC5B,MAAI,OAAO,cAAc,UAAU;AACjC,WAAO,aAAa,SAAS;AAAA,EAC/B;AAEA,SAAO,cAAc,KAAK,CAAC,UAAU,MAAM,OAAO,SAAS;AAC7D;AAEA,SAAS,WACP,eACA,eACA,eACM;AACN,aAAW,SAAS,eAAe;AACjC,QAAI,MAAM,OAAO,eAAe;AAC9B;AAAA,IACF;AAEA,QAAI,CAAC,MAAM,MAAM,SAAS,aAAa,GAAG;AACxC,YAAM,MAAM,KAAK,aAAa;AAAA,IAChC;AAEA;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,9 @@
1
+ export { Attention, ChunkBatchContext, ChunkGraphDelta, ChunkGraphEdge } from './attention.js';
2
+ import '../chunk-batch/types.js';
3
+ import '../../common/language.js';
4
+ import '../../llm/client.js';
5
+ import '../../llm/context.js';
6
+ import '../../llm/cache.js';
7
+ import '../../llm/types.js';
8
+ import 'ai';
9
+ import '../../document/types.js';
@@ -0,0 +1,5 @@
1
+ import { Attention } from "./attention.js";
2
+ export {
3
+ Attention
4
+ };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/reader/attention/index.ts"],"sourcesContent":["export { Attention } from \"./attention.js\";\nexport type {\n ChunkBatchContext,\n ChunkGraphDelta,\n ChunkGraphEdge,\n} from \"./attention.js\";\n"],"mappings":"AAAA,SAAS,iBAAiB;","names":[]}
@@ -0,0 +1,21 @@
1
+ import { CognitiveChunk } from '../chunk-batch/types.js';
2
+ import '../../common/language.js';
3
+ import '../../llm/client.js';
4
+ import '../../llm/context.js';
5
+ import '../../llm/cache.js';
6
+ import '../../llm/types.js';
7
+ import 'ai';
8
+ import '../../document/types.js';
9
+
10
+ declare class WaveReflection {
11
+ #private;
12
+ constructor(generationDecayFactor: number);
13
+ selectTopChunks(input: {
14
+ allChunks: readonly CognitiveChunk[];
15
+ capacity: number;
16
+ getSuccessorChunkIds: (chunkId: number) => readonly number[];
17
+ latestChunkIds: readonly number[];
18
+ }): CognitiveChunk[];
19
+ }
20
+
21
+ export { WaveReflection };
@@ -0,0 +1,153 @@
1
+ class WaveReflection {
2
+ #generationDecayFactor;
3
+ constructor(generationDecayFactor) {
4
+ this.#generationDecayFactor = generationDecayFactor;
5
+ }
6
+ selectTopChunks(input) {
7
+ if (input.allChunks.length === 0) {
8
+ return [];
9
+ }
10
+ if (input.latestChunkIds.length === 0) {
11
+ return [...input.allChunks].slice(0, input.capacity);
12
+ }
13
+ const latestChunkIdRecord = createMembershipRecord(input.latestChunkIds);
14
+ const historicalChunks = input.allChunks.filter(
15
+ (chunk) => !hasMembership(latestChunkIdRecord, chunk.id)
16
+ );
17
+ if (historicalChunks.length === 0) {
18
+ return [];
19
+ }
20
+ const forwardScores = this.#forwardPropagation({
21
+ getSuccessorChunkIds: input.getSuccessorChunkIds,
22
+ latestChunkIds: input.latestChunkIds
23
+ });
24
+ if (countOwnKeys(forwardScores) === 0) {
25
+ return [...historicalChunks].sort((left, right) => right.generation - left.generation).slice(0, input.capacity);
26
+ }
27
+ const reflectionScores = this.#reflectionPropagation({
28
+ allChunkIds: input.allChunks.map((chunk) => chunk.id),
29
+ forwardScores,
30
+ getSuccessorChunkIds: input.getSuccessorChunkIds
31
+ });
32
+ return historicalChunks.map((chunk) => ({
33
+ chunk,
34
+ decayedScore: (reflectionScores[String(chunk.id)] ?? 0) * this.#generationDecayFactor ** chunk.generation
35
+ })).sort((left, right) => {
36
+ if (left.decayedScore !== right.decayedScore) {
37
+ return right.decayedScore - left.decayedScore;
38
+ }
39
+ return left.chunk.id - right.chunk.id;
40
+ }).slice(0, input.capacity).map((item) => item.chunk);
41
+ }
42
+ #forwardPropagation(input) {
43
+ const latestChunkCount = input.latestChunkIds.length;
44
+ if (latestChunkCount === 0) {
45
+ return createEmptyRecord();
46
+ }
47
+ const initialScore = 1 / latestChunkCount;
48
+ const scores = createEmptyRecord();
49
+ const visited = createEmptyRecord();
50
+ const queue = [...input.latestChunkIds];
51
+ let queueOffset = 0;
52
+ for (const chunkId of input.latestChunkIds) {
53
+ scores[String(chunkId)] = initialScore;
54
+ visited[String(chunkId)] = true;
55
+ }
56
+ while (queueOffset < queue.length) {
57
+ const currentId = queue[queueOffset];
58
+ queueOffset += 1;
59
+ if (currentId === void 0) {
60
+ continue;
61
+ }
62
+ const currentScore = scores[String(currentId)];
63
+ if (currentScore === void 0) {
64
+ continue;
65
+ }
66
+ const successors = [...input.getSuccessorChunkIds(currentId)].sort(
67
+ compareNumber
68
+ );
69
+ if (successors.length === 0) {
70
+ continue;
71
+ }
72
+ const scorePerSuccessor = currentScore / successors.length;
73
+ for (const successorId of successors) {
74
+ const successorKey = String(successorId);
75
+ scores[successorKey] = (scores[successorKey] ?? 0) + scorePerSuccessor;
76
+ if (hasMembership(visited, successorId)) {
77
+ continue;
78
+ }
79
+ visited[successorKey] = true;
80
+ queue.push(successorId);
81
+ }
82
+ }
83
+ return scores;
84
+ }
85
+ #reflectionPropagation(input) {
86
+ const reverseSuccessorIdsByChunkId = createEmptyRecord();
87
+ for (const chunkId of input.allChunkIds) {
88
+ for (const successorId of input.getSuccessorChunkIds(chunkId)) {
89
+ const successorKey = String(successorId);
90
+ const reverseSuccessors = reverseSuccessorIdsByChunkId[successorKey] ?? [];
91
+ reverseSuccessorIdsByChunkId[successorKey] = [
92
+ ...reverseSuccessors,
93
+ chunkId
94
+ ];
95
+ }
96
+ }
97
+ const reflectionScores = { ...input.forwardScores };
98
+ const queue = Object.keys(input.forwardScores).map(Number);
99
+ const visited = createMembershipRecord(queue);
100
+ let queueOffset = 0;
101
+ while (queueOffset < queue.length) {
102
+ const currentId = queue[queueOffset];
103
+ queueOffset += 1;
104
+ if (currentId === void 0) {
105
+ continue;
106
+ }
107
+ const currentScore = reflectionScores[String(currentId)];
108
+ if (currentScore === void 0) {
109
+ continue;
110
+ }
111
+ const successors = [
112
+ ...reverseSuccessorIdsByChunkId[String(currentId)] ?? []
113
+ ].sort(compareNumber);
114
+ if (successors.length === 0) {
115
+ continue;
116
+ }
117
+ const scorePerSuccessor = currentScore / successors.length;
118
+ for (const successorId of successors) {
119
+ const successorKey = String(successorId);
120
+ reflectionScores[successorKey] = (reflectionScores[successorKey] ?? 0) + scorePerSuccessor;
121
+ if (hasMembership(visited, successorId)) {
122
+ continue;
123
+ }
124
+ visited[successorKey] = true;
125
+ queue.push(successorId);
126
+ }
127
+ }
128
+ return reflectionScores;
129
+ }
130
+ }
131
+ function compareNumber(left, right) {
132
+ return left - right;
133
+ }
134
+ function createMembershipRecord(values) {
135
+ const record = createEmptyRecord();
136
+ for (const value of values) {
137
+ record[String(value)] = true;
138
+ }
139
+ return record;
140
+ }
141
+ function hasMembership(record, value) {
142
+ return Object.hasOwn(record, String(value));
143
+ }
144
+ function countOwnKeys(record) {
145
+ return Object.keys(record).length;
146
+ }
147
+ function createEmptyRecord() {
148
+ return /* @__PURE__ */ Object.create(null);
149
+ }
150
+ export {
151
+ WaveReflection
152
+ };
153
+ //# sourceMappingURL=wave-reflection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/reader/attention/wave-reflection.ts"],"sourcesContent":["import type { CognitiveChunk } from \"../chunk-batch/types.js\";\n\nexport class WaveReflection {\n readonly #generationDecayFactor: number;\n\n public constructor(generationDecayFactor: number) {\n this.#generationDecayFactor = generationDecayFactor;\n }\n\n public selectTopChunks(input: {\n allChunks: readonly CognitiveChunk[];\n capacity: number;\n getSuccessorChunkIds: (chunkId: number) => readonly number[];\n latestChunkIds: readonly number[];\n }): CognitiveChunk[] {\n if (input.allChunks.length === 0) {\n return [];\n }\n\n if (input.latestChunkIds.length === 0) {\n return [...input.allChunks].slice(0, input.capacity);\n }\n\n const latestChunkIdRecord = createMembershipRecord(input.latestChunkIds);\n const historicalChunks = input.allChunks.filter(\n (chunk) => !hasMembership(latestChunkIdRecord, chunk.id),\n );\n\n if (historicalChunks.length === 0) {\n return [];\n }\n\n const forwardScores = this.#forwardPropagation({\n getSuccessorChunkIds: input.getSuccessorChunkIds,\n latestChunkIds: input.latestChunkIds,\n });\n\n if (countOwnKeys(forwardScores) === 0) {\n return [...historicalChunks]\n .sort((left, right) => right.generation - left.generation)\n .slice(0, input.capacity);\n }\n\n const reflectionScores = this.#reflectionPropagation({\n allChunkIds: input.allChunks.map((chunk) => chunk.id),\n forwardScores,\n getSuccessorChunkIds: input.getSuccessorChunkIds,\n });\n\n return historicalChunks\n .map((chunk) => ({\n chunk,\n decayedScore:\n (reflectionScores[String(chunk.id)] ?? 0) *\n this.#generationDecayFactor ** chunk.generation,\n }))\n .sort((left, right) => {\n if (left.decayedScore !== right.decayedScore) {\n return right.decayedScore - left.decayedScore;\n }\n\n return left.chunk.id - right.chunk.id;\n })\n .slice(0, input.capacity)\n .map((item) => item.chunk);\n }\n\n #forwardPropagation(input: {\n getSuccessorChunkIds: (chunkId: number) => readonly number[];\n latestChunkIds: readonly number[];\n }): Record<string, number> {\n const latestChunkCount = input.latestChunkIds.length;\n\n if (latestChunkCount === 0) {\n return createEmptyRecord<number>();\n }\n\n const initialScore = 1 / latestChunkCount;\n const scores = createEmptyRecord<number>();\n const visited = createEmptyRecord<true>();\n const queue = [...input.latestChunkIds];\n let queueOffset = 0;\n\n for (const chunkId of input.latestChunkIds) {\n scores[String(chunkId)] = initialScore;\n visited[String(chunkId)] = true;\n }\n\n while (queueOffset < queue.length) {\n const currentId = queue[queueOffset];\n queueOffset += 1;\n\n if (currentId === undefined) {\n continue;\n }\n\n const currentScore = scores[String(currentId)];\n\n if (currentScore === undefined) {\n continue;\n }\n\n const successors = [...input.getSuccessorChunkIds(currentId)].sort(\n compareNumber,\n );\n\n if (successors.length === 0) {\n continue;\n }\n\n const scorePerSuccessor = currentScore / successors.length;\n\n for (const successorId of successors) {\n const successorKey = String(successorId);\n scores[successorKey] = (scores[successorKey] ?? 0) + scorePerSuccessor;\n\n if (hasMembership(visited, successorId)) {\n continue;\n }\n\n visited[successorKey] = true;\n queue.push(successorId);\n }\n }\n\n return scores;\n }\n\n #reflectionPropagation(input: {\n allChunkIds: readonly number[];\n forwardScores: Readonly<Record<string, number>>;\n getSuccessorChunkIds: (chunkId: number) => readonly number[];\n }): Record<string, number> {\n const reverseSuccessorIdsByChunkId = createEmptyRecord<number[]>();\n\n for (const chunkId of input.allChunkIds) {\n for (const successorId of input.getSuccessorChunkIds(chunkId)) {\n const successorKey = String(successorId);\n const reverseSuccessors =\n reverseSuccessorIdsByChunkId[successorKey] ?? [];\n\n reverseSuccessorIdsByChunkId[successorKey] = [\n ...reverseSuccessors,\n chunkId,\n ];\n }\n }\n\n const reflectionScores = { ...input.forwardScores };\n const queue = Object.keys(input.forwardScores).map(Number);\n const visited = createMembershipRecord(queue);\n let queueOffset = 0;\n\n while (queueOffset < queue.length) {\n const currentId = queue[queueOffset];\n queueOffset += 1;\n\n if (currentId === undefined) {\n continue;\n }\n\n const currentScore = reflectionScores[String(currentId)];\n\n if (currentScore === undefined) {\n continue;\n }\n\n const successors = [\n ...(reverseSuccessorIdsByChunkId[String(currentId)] ?? []),\n ].sort(compareNumber);\n\n if (successors.length === 0) {\n continue;\n }\n\n const scorePerSuccessor = currentScore / successors.length;\n\n for (const successorId of successors) {\n const successorKey = String(successorId);\n\n reflectionScores[successorKey] =\n (reflectionScores[successorKey] ?? 0) + scorePerSuccessor;\n\n if (hasMembership(visited, successorId)) {\n continue;\n }\n\n visited[successorKey] = true;\n queue.push(successorId);\n }\n }\n\n return reflectionScores;\n }\n}\n\nfunction compareNumber(left: number, right: number): number {\n return left - right;\n}\n\nfunction createMembershipRecord(\n values: readonly number[],\n): 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,\n): boolean {\n return Object.hasOwn(record, String(value));\n}\n\nfunction countOwnKeys(record: Readonly<Record<string, unknown>>): number {\n return Object.keys(record).length;\n}\n\nfunction createEmptyRecord<TValue>(): Record<string, TValue> {\n return Object.create(null) as Record<string, TValue>;\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,28 @@
1
+ import { CognitiveChunk } from '../chunk-batch/types.js';
2
+ import '../../common/language.js';
3
+ import '../../llm/client.js';
4
+ import '../../llm/context.js';
5
+ import '../../llm/cache.js';
6
+ import '../../llm/types.js';
7
+ import 'ai';
8
+ import '../../document/types.js';
9
+
10
+ declare class WorkingMemory {
11
+ #private;
12
+ constructor(capacity: number);
13
+ get capacity(): number;
14
+ get generation(): number;
15
+ addChunks(chunks: readonly CognitiveChunk[]): void;
16
+ setRetainedChunks(input: {
17
+ readonly extraChunks: readonly CognitiveChunk[];
18
+ readonly previousFragmentChunks: readonly CognitiveChunk[];
19
+ }): void;
20
+ finalizeFragment(): CognitiveChunk[];
21
+ getChunks(): CognitiveChunk[];
22
+ getAllChunksForSaving(): CognitiveChunk[];
23
+ getChunksForPrompt(includeCurrentFragment?: boolean): CognitiveChunk[];
24
+ formatForPrompt(includeCurrentFragment?: boolean): string;
25
+ clear(): void;
26
+ }
27
+
28
+ export { WorkingMemory };
@@ -0,0 +1,62 @@
1
+ class WorkingMemory {
2
+ #capacity;
3
+ #currentFragmentChunks = [];
4
+ #previousFragmentChunks = [];
5
+ #extraChunks = [];
6
+ #generation = 0;
7
+ constructor(capacity) {
8
+ this.#capacity = capacity;
9
+ }
10
+ get capacity() {
11
+ return this.#capacity;
12
+ }
13
+ get generation() {
14
+ return this.#generation;
15
+ }
16
+ addChunks(chunks) {
17
+ this.#currentFragmentChunks.push(...chunks);
18
+ }
19
+ setRetainedChunks(input) {
20
+ this.#previousFragmentChunks.splice(
21
+ 0,
22
+ this.#previousFragmentChunks.length,
23
+ ...input.previousFragmentChunks
24
+ );
25
+ this.#extraChunks.splice(0, this.#extraChunks.length, ...input.extraChunks);
26
+ }
27
+ finalizeFragment() {
28
+ const finishedChunks = [...this.#currentFragmentChunks];
29
+ this.#currentFragmentChunks.splice(0, this.#currentFragmentChunks.length);
30
+ this.#generation += 1;
31
+ return finishedChunks;
32
+ }
33
+ getChunks() {
34
+ return [
35
+ ...this.#currentFragmentChunks,
36
+ ...this.#previousFragmentChunks,
37
+ ...this.#extraChunks
38
+ ];
39
+ }
40
+ getAllChunksForSaving() {
41
+ return [...this.#currentFragmentChunks];
42
+ }
43
+ getChunksForPrompt(includeCurrentFragment = true) {
44
+ return includeCurrentFragment ? this.getChunks() : [...this.#previousFragmentChunks, ...this.#extraChunks];
45
+ }
46
+ formatForPrompt(includeCurrentFragment = true) {
47
+ const chunks = this.getChunksForPrompt(includeCurrentFragment);
48
+ if (chunks.length === 0) {
49
+ return "(empty)";
50
+ }
51
+ return chunks.map((chunk) => `${chunk.id}. [${chunk.label}] - ${chunk.content}`).join("\n");
52
+ }
53
+ clear() {
54
+ this.#currentFragmentChunks.splice(0, this.#currentFragmentChunks.length);
55
+ this.#previousFragmentChunks.splice(0, this.#previousFragmentChunks.length);
56
+ this.#extraChunks.splice(0, this.#extraChunks.length);
57
+ }
58
+ }
59
+ export {
60
+ WorkingMemory
61
+ };
62
+ //# sourceMappingURL=working-memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/reader/attention/working-memory.ts"],"sourcesContent":["import type { CognitiveChunk } from \"../chunk-batch/types.js\";\n\nexport class WorkingMemory {\n readonly #capacity: number;\n readonly #currentFragmentChunks: CognitiveChunk[] = [];\n readonly #previousFragmentChunks: CognitiveChunk[] = [];\n readonly #extraChunks: CognitiveChunk[] = [];\n #generation = 0;\n\n public constructor(capacity: number) {\n this.#capacity = capacity;\n }\n\n public get capacity(): number {\n return this.#capacity;\n }\n\n public get generation(): number {\n return this.#generation;\n }\n\n public addChunks(chunks: readonly CognitiveChunk[]): void {\n this.#currentFragmentChunks.push(...chunks);\n }\n\n public setRetainedChunks(input: {\n readonly extraChunks: readonly CognitiveChunk[];\n readonly previousFragmentChunks: readonly CognitiveChunk[];\n }): void {\n this.#previousFragmentChunks.splice(\n 0,\n this.#previousFragmentChunks.length,\n ...input.previousFragmentChunks,\n );\n this.#extraChunks.splice(0, this.#extraChunks.length, ...input.extraChunks);\n }\n\n public finalizeFragment(): CognitiveChunk[] {\n const finishedChunks = [...this.#currentFragmentChunks];\n\n this.#currentFragmentChunks.splice(0, this.#currentFragmentChunks.length);\n this.#generation += 1;\n\n return finishedChunks;\n }\n\n public getChunks(): CognitiveChunk[] {\n return [\n ...this.#currentFragmentChunks,\n ...this.#previousFragmentChunks,\n ...this.#extraChunks,\n ];\n }\n\n public getAllChunksForSaving(): CognitiveChunk[] {\n return [...this.#currentFragmentChunks];\n }\n\n public getChunksForPrompt(includeCurrentFragment = true): CognitiveChunk[] {\n return includeCurrentFragment\n ? this.getChunks()\n : [...this.#previousFragmentChunks, ...this.#extraChunks];\n }\n\n public formatForPrompt(includeCurrentFragment = true): string {\n const chunks = this.getChunksForPrompt(includeCurrentFragment);\n\n if (chunks.length === 0) {\n return \"(empty)\";\n }\n\n return chunks\n .map((chunk) => `${chunk.id}. [${chunk.label}] - ${chunk.content}`)\n .join(\"\\n\");\n }\n\n public clear(): void {\n this.#currentFragmentChunks.splice(0, this.#currentFragmentChunks.length);\n this.#previousFragmentChunks.splice(0, this.#previousFragmentChunks.length);\n this.#extraChunks.splice(0, this.#extraChunks.length);\n }\n}\n"],"mappings":"AAEO,MAAM,cAAc;AAAA,EAChB;AAAA,EACA,yBAA2C,CAAC;AAAA,EAC5C,0BAA4C,CAAC;AAAA,EAC7C,eAAiC,CAAC;AAAA,EAC3C,cAAc;AAAA,EAEP,YAAY,UAAkB;AACnC,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,IAAW,WAAmB;AAC5B,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAW,aAAqB;AAC9B,WAAO,KAAK;AAAA,EACd;AAAA,EAEO,UAAU,QAAyC;AACxD,SAAK,uBAAuB,KAAK,GAAG,MAAM;AAAA,EAC5C;AAAA,EAEO,kBAAkB,OAGhB;AACP,SAAK,wBAAwB;AAAA,MAC3B;AAAA,MACA,KAAK,wBAAwB;AAAA,MAC7B,GAAG,MAAM;AAAA,IACX;AACA,SAAK,aAAa,OAAO,GAAG,KAAK,aAAa,QAAQ,GAAG,MAAM,WAAW;AAAA,EAC5E;AAAA,EAEO,mBAAqC;AAC1C,UAAM,iBAAiB,CAAC,GAAG,KAAK,sBAAsB;AAEtD,SAAK,uBAAuB,OAAO,GAAG,KAAK,uBAAuB,MAAM;AACxE,SAAK,eAAe;AAEpB,WAAO;AAAA,EACT;AAAA,EAEO,YAA8B;AACnC,WAAO;AAAA,MACL,GAAG,KAAK;AAAA,MACR,GAAG,KAAK;AAAA,MACR,GAAG,KAAK;AAAA,IACV;AAAA,EACF;AAAA,EAEO,wBAA0C;AAC/C,WAAO,CAAC,GAAG,KAAK,sBAAsB;AAAA,EACxC;AAAA,EAEO,mBAAmB,yBAAyB,MAAwB;AACzE,WAAO,yBACH,KAAK,UAAU,IACf,CAAC,GAAG,KAAK,yBAAyB,GAAG,KAAK,YAAY;AAAA,EAC5D;AAAA,EAEO,gBAAgB,yBAAyB,MAAc;AAC5D,UAAM,SAAS,KAAK,mBAAmB,sBAAsB;AAE7D,QAAI,OAAO,WAAW,GAAG;AACvB,aAAO;AAAA,IACT;AAEA,WAAO,OACJ,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,MAAM,MAAM,KAAK,OAAO,MAAM,OAAO,EAAE,EACjE,KAAK,IAAI;AAAA,EACd;AAAA,EAEO,QAAc;AACnB,SAAK,uBAAuB,OAAO,GAAG,KAAK,uBAAuB,MAAM;AACxE,SAAK,wBAAwB,OAAO,GAAG,KAAK,wBAAwB,MAAM;AAC1E,SAAK,aAAa,OAAO,GAAG,KAAK,aAAa,MAAM;AAAA,EACtD;AACF;","names":[]}
@@ -0,0 +1,13 @@
1
+ import { ChunkBatchOptions, ExtractBookCoherenceInput, ChunkBatch, ExtractUserFocusedInput, ExtractUserFocusedResult } from './types.js';
2
+ import '../../common/language.js';
3
+ import '../../llm/client.js';
4
+ import '../../llm/context.js';
5
+ import '../../llm/cache.js';
6
+ import '../../llm/types.js';
7
+ import 'ai';
8
+ import '../../document/types.js';
9
+
10
+ declare function extractUserFocusedChunkBatch<S extends string>(options: ChunkBatchOptions<S>, input: ExtractUserFocusedInput): Promise<ExtractUserFocusedResult>;
11
+ declare function extractBookCoherenceChunkBatch<S extends string>(options: ChunkBatchOptions<S>, input: ExtractBookCoherenceInput): Promise<ChunkBatch>;
12
+
13
+ export { extractBookCoherenceChunkBatch, extractUserFocusedChunkBatch };
@@ -0,0 +1,14 @@
1
+ import { ChunkExtractor } from "./extractor.js";
2
+ async function extractUserFocusedChunkBatch(options, input) {
3
+ const extractor = new ChunkExtractor(options);
4
+ return await extractor.extractUserFocused(input);
5
+ }
6
+ async function extractBookCoherenceChunkBatch(options, input) {
7
+ const extractor = new ChunkExtractor(options);
8
+ return await extractor.extractBookCoherence(input);
9
+ }
10
+ export {
11
+ extractBookCoherenceChunkBatch,
12
+ extractUserFocusedChunkBatch
13
+ };
14
+ //# sourceMappingURL=extract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/reader/chunk-batch/extract.ts"],"sourcesContent":["import { ChunkExtractor } from \"./extractor.js\";\nimport type {\n ChunkBatch,\n ChunkBatchOptions,\n ExtractBookCoherenceInput,\n ExtractUserFocusedInput,\n ExtractUserFocusedResult,\n} from \"./types.js\";\n\nexport async function extractUserFocusedChunkBatch<S extends string>(\n options: ChunkBatchOptions<S>,\n input: ExtractUserFocusedInput,\n): Promise<ExtractUserFocusedResult> {\n const extractor = new ChunkExtractor(options);\n\n return await extractor.extractUserFocused(input);\n}\n\nexport async function extractBookCoherenceChunkBatch<S extends string>(\n options: ChunkBatchOptions<S>,\n input: ExtractBookCoherenceInput,\n): Promise<ChunkBatch> {\n const extractor = new ChunkExtractor(options);\n\n return await extractor.extractBookCoherence(input);\n}\n"],"mappings":"AAAA,SAAS,sBAAsB;AAS/B,eAAsB,6BACpB,SACA,OACmC;AACnC,QAAM,YAAY,IAAI,eAAe,OAAO;AAE5C,SAAO,MAAM,UAAU,mBAAmB,KAAK;AACjD;AAEA,eAAsB,+BACpB,SACA,OACqB;AACrB,QAAM,YAAY,IAAI,eAAe,OAAO;AAE5C,SAAO,MAAM,UAAU,qBAAqB,KAAK;AACnD;","names":[]}
@@ -0,0 +1,17 @@
1
+ import { ChunkBatchOptions, ExtractUserFocusedInput, ExtractUserFocusedResult, ExtractBookCoherenceInput, ChunkBatch } from './types.js';
2
+ import '../../common/language.js';
3
+ import '../../llm/client.js';
4
+ import '../../llm/context.js';
5
+ import '../../llm/cache.js';
6
+ import '../../llm/types.js';
7
+ import 'ai';
8
+ import '../../document/types.js';
9
+
10
+ declare class ChunkExtractor<S extends string> {
11
+ #private;
12
+ constructor(options: ChunkBatchOptions<S>);
13
+ extractUserFocused(input: ExtractUserFocusedInput): Promise<ExtractUserFocusedResult>;
14
+ extractBookCoherence(input: ExtractBookCoherenceInput): Promise<ChunkBatch>;
15
+ }
16
+
17
+ export { ChunkExtractor };