@qvac/core 0.0.0 → 0.1.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 (586) hide show
  1. package/LICENSE.md +198 -0
  2. package/NOTICE.md +13 -0
  3. package/README.md +694 -0
  4. package/SECURITY.md +6 -0
  5. package/dist/assistant.bundle +47256 -0
  6. package/dist/assistant.cjs +18 -0
  7. package/dist/assistant.d.ts +8 -0
  8. package/dist/prebuilds-manifest.json +380 -0
  9. package/dist-lib/client.d.ts +2 -0
  10. package/dist-lib/client.js +1 -0
  11. package/dist-lib/index.d.ts +13 -0
  12. package/dist-lib/index.js +10 -0
  13. package/dist-lib/lib/agent-icons.d.ts +3 -0
  14. package/dist-lib/lib/agent-icons.js +1 -0
  15. package/dist-lib/lib/api/agents.d.ts +5 -0
  16. package/dist-lib/lib/api/agents.js +38 -0
  17. package/dist-lib/lib/api/app-config.d.ts +5 -0
  18. package/dist-lib/lib/api/app-config.js +108 -0
  19. package/dist-lib/lib/api/approval-rules.d.ts +3 -0
  20. package/dist-lib/lib/api/approval-rules.js +9 -0
  21. package/dist-lib/lib/api/attachments.d.ts +8 -0
  22. package/dist-lib/lib/api/attachments.js +15 -0
  23. package/dist-lib/lib/api/chat-groups.d.ts +5 -0
  24. package/dist-lib/lib/api/chat-groups.js +12 -0
  25. package/dist-lib/lib/api/chat.d.ts +5 -0
  26. package/dist-lib/lib/api/chat.js +38 -0
  27. package/dist-lib/lib/api/chunks.d.ts +5 -0
  28. package/dist-lib/lib/api/chunks.js +61 -0
  29. package/dist-lib/lib/api/config.d.ts +5 -0
  30. package/dist-lib/lib/api/config.js +15 -0
  31. package/dist-lib/lib/api/current-mesh.d.ts +5 -0
  32. package/dist-lib/lib/api/current-mesh.js +12 -0
  33. package/dist-lib/lib/api/custom-models.d.ts +5 -0
  34. package/dist-lib/lib/api/custom-models.js +45 -0
  35. package/dist-lib/lib/api/devices.d.ts +8 -0
  36. package/dist-lib/lib/api/devices.js +125 -0
  37. package/dist-lib/lib/api/diagnostics.d.ts +7 -0
  38. package/dist-lib/lib/api/diagnostics.js +7 -0
  39. package/dist-lib/lib/api/effective-ctx-size.d.ts +2 -0
  40. package/dist-lib/lib/api/effective-ctx-size.js +10 -0
  41. package/dist-lib/lib/api/execution.d.ts +3 -0
  42. package/dist-lib/lib/api/execution.js +45 -0
  43. package/dist-lib/lib/api/files.d.ts +3 -0
  44. package/dist-lib/lib/api/files.js +48 -0
  45. package/dist-lib/lib/api/index.d.ts +62 -0
  46. package/dist-lib/lib/api/index.js +172 -0
  47. package/dist-lib/lib/api/instrument.d.ts +2 -0
  48. package/dist-lib/lib/api/instrument.js +86 -0
  49. package/dist-lib/lib/api/knowledge.d.ts +8 -0
  50. package/dist-lib/lib/api/knowledge.js +26 -0
  51. package/dist-lib/lib/api/logs.d.ts +14 -0
  52. package/dist-lib/lib/api/logs.js +116 -0
  53. package/dist-lib/lib/api/mesh.d.ts +13 -0
  54. package/dist-lib/lib/api/mesh.js +25 -0
  55. package/dist-lib/lib/api/model-download.d.ts +5 -0
  56. package/dist-lib/lib/api/model-download.js +47 -0
  57. package/dist-lib/lib/api/network.d.ts +8 -0
  58. package/dist-lib/lib/api/network.js +6 -0
  59. package/dist-lib/lib/api/notifications.d.ts +21 -0
  60. package/dist-lib/lib/api/notifications.js +108 -0
  61. package/dist-lib/lib/api/rag.d.ts +7 -0
  62. package/dist-lib/lib/api/rag.js +216 -0
  63. package/dist-lib/lib/api/sync.d.ts +3 -0
  64. package/dist-lib/lib/api/sync.js +6 -0
  65. package/dist-lib/lib/api/tool-activity.d.ts +5 -0
  66. package/dist-lib/lib/api/tool-activity.js +53 -0
  67. package/dist-lib/lib/api/tool-configs.d.ts +6 -0
  68. package/dist-lib/lib/api/tool-configs.js +27 -0
  69. package/dist-lib/lib/api/watchable.d.ts +12 -0
  70. package/dist-lib/lib/api/watchable.js +121 -0
  71. package/dist-lib/lib/assistant-client.d.ts +21 -0
  72. package/dist-lib/lib/assistant-client.js +52 -0
  73. package/dist-lib/lib/assistant-tree.d.ts +50 -0
  74. package/dist-lib/lib/assistant-tree.js +184 -0
  75. package/dist-lib/lib/assistant.d.ts +425 -0
  76. package/dist-lib/lib/assistant.js +2706 -0
  77. package/dist-lib/lib/audio-format.d.ts +4 -0
  78. package/dist-lib/lib/audio-format.js +4 -0
  79. package/dist-lib/lib/chat-title.d.ts +5 -0
  80. package/dist-lib/lib/chat-title.js +58 -0
  81. package/dist-lib/lib/client.d.ts +25 -0
  82. package/dist-lib/lib/client.js +53 -0
  83. package/dist-lib/lib/collabora/convert.d.ts +9 -0
  84. package/dist-lib/lib/collabora/convert.js +62 -0
  85. package/dist-lib/lib/collabora/entry.d.ts +1 -0
  86. package/dist-lib/lib/collabora/entry.js +44 -0
  87. package/dist-lib/lib/collabora/protocol.d.ts +15 -0
  88. package/dist-lib/lib/collabora/protocol.js +24 -0
  89. package/dist-lib/lib/collabora/worker.d.ts +5 -0
  90. package/dist-lib/lib/collabora/worker.js +111 -0
  91. package/dist-lib/lib/compaction.d.ts +30 -0
  92. package/dist-lib/lib/compaction.js +95 -0
  93. package/dist-lib/lib/constants.d.ts +4 -0
  94. package/dist-lib/lib/constants.js +4 -0
  95. package/dist-lib/lib/core/agent.d.ts +15 -0
  96. package/dist-lib/lib/core/agent.js +149 -0
  97. package/dist-lib/lib/core/app-build.d.ts +7 -0
  98. package/dist-lib/lib/core/app-build.js +1 -0
  99. package/dist-lib/lib/core/approval-rules.d.ts +15 -0
  100. package/dist-lib/lib/core/approval-rules.js +41 -0
  101. package/dist-lib/lib/core/async-iterable.d.ts +13 -0
  102. package/dist-lib/lib/core/async-iterable.js +65 -0
  103. package/dist-lib/lib/core/attachment-link.d.ts +7 -0
  104. package/dist-lib/lib/core/attachment-link.js +6 -0
  105. package/dist-lib/lib/core/audio-attachment.d.ts +1 -0
  106. package/dist-lib/lib/core/audio-attachment.js +4 -0
  107. package/dist-lib/lib/core/blind-peers.d.ts +6 -0
  108. package/dist-lib/lib/core/blind-peers.js +13 -0
  109. package/dist-lib/lib/core/chat-activity.d.ts +7 -0
  110. package/dist-lib/lib/core/chat-activity.js +244 -0
  111. package/dist-lib/lib/core/chat-group.d.ts +14 -0
  112. package/dist-lib/lib/core/chat-group.js +79 -0
  113. package/dist-lib/lib/core/chat-search.d.ts +17 -0
  114. package/dist-lib/lib/core/chat-search.js +199 -0
  115. package/dist-lib/lib/core/chat.d.ts +37 -0
  116. package/dist-lib/lib/core/chat.js +196 -0
  117. package/dist-lib/lib/core/chunk.d.ts +61 -0
  118. package/dist-lib/lib/core/chunk.js +212 -0
  119. package/dist-lib/lib/core/contract/activity.d.ts +11 -0
  120. package/dist-lib/lib/core/contract/activity.js +45 -0
  121. package/dist-lib/lib/core/contract/agents.d.ts +2 -0
  122. package/dist-lib/lib/core/contract/agents.js +29 -0
  123. package/dist-lib/lib/core/contract/approval-rules.d.ts +2 -0
  124. package/dist-lib/lib/core/contract/approval-rules.js +14 -0
  125. package/dist-lib/lib/core/contract/attestations.d.ts +2 -0
  126. package/dist-lib/lib/core/contract/attestations.js +14 -0
  127. package/dist-lib/lib/core/contract/chat-group.d.ts +2 -0
  128. package/dist-lib/lib/core/contract/chat-group.js +20 -0
  129. package/dist-lib/lib/core/contract/chat.d.ts +2 -0
  130. package/dist-lib/lib/core/contract/chat.js +18 -0
  131. package/dist-lib/lib/core/contract/chunks.d.ts +2 -0
  132. package/dist-lib/lib/core/contract/chunks.js +156 -0
  133. package/dist-lib/lib/core/contract/devices.d.ts +2 -0
  134. package/dist-lib/lib/core/contract/devices.js +110 -0
  135. package/dist-lib/lib/core/contract/index.d.ts +2 -0
  136. package/dist-lib/lib/core/contract/index.js +30 -0
  137. package/dist-lib/lib/core/contract/indexing.d.ts +4 -0
  138. package/dist-lib/lib/core/contract/indexing.js +82 -0
  139. package/dist-lib/lib/core/contract/knowledge.d.ts +2 -0
  140. package/dist-lib/lib/core/contract/knowledge.js +55 -0
  141. package/dist-lib/lib/core/contract/members.d.ts +2 -0
  142. package/dist-lib/lib/core/contract/members.js +96 -0
  143. package/dist-lib/lib/core/contract/seed-defaults.d.ts +2 -0
  144. package/dist-lib/lib/core/contract/seed-defaults.js +29 -0
  145. package/dist-lib/lib/core/contract/tool-activity.d.ts +2 -0
  146. package/dist-lib/lib/core/contract/tool-activity.js +25 -0
  147. package/dist-lib/lib/core/contract/tool-configs.d.ts +2 -0
  148. package/dist-lib/lib/core/contract/tool-configs.js +50 -0
  149. package/dist-lib/lib/core/contract/types.d.ts +11 -0
  150. package/dist-lib/lib/core/contract/types.js +1 -0
  151. package/dist-lib/lib/core/contract/writers.d.ts +2 -0
  152. package/dist-lib/lib/core/contract/writers.js +112 -0
  153. package/dist-lib/lib/core/cpu-info-node.d.ts +3 -0
  154. package/dist-lib/lib/core/cpu-info-node.js +2 -0
  155. package/dist-lib/lib/core/departures.d.ts +41 -0
  156. package/dist-lib/lib/core/departures.js +145 -0
  157. package/dist-lib/lib/core/device-attestation.d.ts +6 -0
  158. package/dist-lib/lib/core/device-attestation.js +12 -0
  159. package/dist-lib/lib/core/devices.d.ts +14 -0
  160. package/dist-lib/lib/core/devices.js +11 -0
  161. package/dist-lib/lib/core/document-attachment.d.ts +22 -0
  162. package/dist-lib/lib/core/document-attachment.js +35 -0
  163. package/dist-lib/lib/core/files/attachments.d.ts +8 -0
  164. package/dist-lib/lib/core/files/attachments.js +50 -0
  165. package/dist-lib/lib/core/files/index.d.ts +133 -0
  166. package/dist-lib/lib/core/files/index.js +585 -0
  167. package/dist-lib/lib/core/files/knowledge.d.ts +9 -0
  168. package/dist-lib/lib/core/files/knowledge.js +31 -0
  169. package/dist-lib/lib/core/files/preview/image.d.ts +4 -0
  170. package/dist-lib/lib/core/files/preview/image.js +42 -0
  171. package/dist-lib/lib/core/files/preview/index.d.ts +33 -0
  172. package/dist-lib/lib/core/files/preview/index.js +161 -0
  173. package/dist-lib/lib/core/files/processing/claims.d.ts +26 -0
  174. package/dist-lib/lib/core/files/processing/claims.js +89 -0
  175. package/dist-lib/lib/core/files/processing/document.d.ts +100 -0
  176. package/dist-lib/lib/core/files/processing/document.js +101 -0
  177. package/dist-lib/lib/core/files/processing/index.d.ts +75 -0
  178. package/dist-lib/lib/core/files/processing/index.js +295 -0
  179. package/dist-lib/lib/core/files/processing/ownership.d.ts +11 -0
  180. package/dist-lib/lib/core/files/processing/ownership.js +41 -0
  181. package/dist-lib/lib/core/files/processing/protocol.d.ts +29 -0
  182. package/dist-lib/lib/core/files/processing/protocol.js +70 -0
  183. package/dist-lib/lib/core/files/processing/settle.d.ts +10 -0
  184. package/dist-lib/lib/core/files/processing/settle.js +75 -0
  185. package/dist-lib/lib/core/files/processing/source.d.ts +36 -0
  186. package/dist-lib/lib/core/files/processing/source.js +96 -0
  187. package/dist-lib/lib/core/files/processing/state.d.ts +64 -0
  188. package/dist-lib/lib/core/files/processing/state.js +118 -0
  189. package/dist-lib/lib/core/files/rag/artifact/codec.d.ts +3 -0
  190. package/dist-lib/lib/core/files/rag/artifact/codec.js +172 -0
  191. package/dist-lib/lib/core/files/rag/artifact/id.d.ts +10 -0
  192. package/dist-lib/lib/core/files/rag/artifact/id.js +39 -0
  193. package/dist-lib/lib/core/files/rag/artifact/types.d.ts +24 -0
  194. package/dist-lib/lib/core/files/rag/artifact/types.js +41 -0
  195. package/dist-lib/lib/core/files/rag/build.d.ts +25 -0
  196. package/dist-lib/lib/core/files/rag/build.js +60 -0
  197. package/dist-lib/lib/core/files/rag/chunk/chunking.d.ts +12 -0
  198. package/dist-lib/lib/core/files/rag/chunk/chunking.js +117 -0
  199. package/dist-lib/lib/core/files/rag/chunk/metadata.d.ts +30 -0
  200. package/dist-lib/lib/core/files/rag/chunk/metadata.js +89 -0
  201. package/dist-lib/lib/core/files/rag/chunk/tokenizer.d.ts +7 -0
  202. package/dist-lib/lib/core/files/rag/chunk/tokenizer.js +18 -0
  203. package/dist-lib/lib/core/files/rag/document-types.d.ts +11 -0
  204. package/dist-lib/lib/core/files/rag/document-types.js +94 -0
  205. package/dist-lib/lib/core/files/rag/extract/csv-text.d.ts +1 -0
  206. package/dist-lib/lib/core/files/rag/extract/csv-text.js +117 -0
  207. package/dist-lib/lib/core/files/rag/extract/document-types.d.ts +22 -0
  208. package/dist-lib/lib/core/files/rag/extract/document-types.js +152 -0
  209. package/dist-lib/lib/core/files/rag/extract/extract.d.ts +17 -0
  210. package/dist-lib/lib/core/files/rag/extract/extract.js +81 -0
  211. package/dist-lib/lib/core/files/rag/extract/html-table-text.d.ts +1 -0
  212. package/dist-lib/lib/core/files/rag/extract/html-table-text.js +125 -0
  213. package/dist-lib/lib/core/files/rag/extract/html-text.d.ts +1 -0
  214. package/dist-lib/lib/core/files/rag/extract/html-text.js +132 -0
  215. package/dist-lib/lib/core/files/rag/extract/office-collabora.d.ts +2 -0
  216. package/dist-lib/lib/core/files/rag/extract/office-collabora.js +8 -0
  217. package/dist-lib/lib/core/files/rag/extract/pdf-platform.d.ts +17 -0
  218. package/dist-lib/lib/core/files/rag/extract/pdf-platform.js +141 -0
  219. package/dist-lib/lib/core/files/rag/extract/pdf-text.d.ts +12 -0
  220. package/dist-lib/lib/core/files/rag/extract/pdf-text.js +43 -0
  221. package/dist-lib/lib/core/files/rag/extract/rtf-text.d.ts +1 -0
  222. package/dist-lib/lib/core/files/rag/extract/rtf-text.js +15 -0
  223. package/dist-lib/lib/core/files/rag/extract/text-decoding.d.ts +1 -0
  224. package/dist-lib/lib/core/files/rag/extract/text-decoding.js +91 -0
  225. package/dist-lib/lib/core/files/rag/extract/types.d.ts +36 -0
  226. package/dist-lib/lib/core/files/rag/extract/types.js +12 -0
  227. package/dist-lib/lib/core/files/rag/extract/utf.d.ts +2 -0
  228. package/dist-lib/lib/core/files/rag/extract/utf.js +18 -0
  229. package/dist-lib/lib/core/files/rag/index.d.ts +54 -0
  230. package/dist-lib/lib/core/files/rag/index.js +79 -0
  231. package/dist-lib/lib/core/files/rag/limits.d.ts +2 -0
  232. package/dist-lib/lib/core/files/rag/limits.js +2 -0
  233. package/dist-lib/lib/core/files/rag/load.d.ts +28 -0
  234. package/dist-lib/lib/core/files/rag/load.js +250 -0
  235. package/dist-lib/lib/core/files/rag/models.d.ts +1 -0
  236. package/dist-lib/lib/core/files/rag/models.js +1 -0
  237. package/dist-lib/lib/core/files/rag/policy.d.ts +2 -0
  238. package/dist-lib/lib/core/files/rag/policy.js +23 -0
  239. package/dist-lib/lib/core/files/rag/produce.d.ts +21 -0
  240. package/dist-lib/lib/core/files/rag/produce.js +214 -0
  241. package/dist-lib/lib/core/files/rag/retrieval/citation-match.d.ts +2 -0
  242. package/dist-lib/lib/core/files/rag/retrieval/citation-match.js +16 -0
  243. package/dist-lib/lib/core/files/rag/retrieval/coverage.d.ts +4 -0
  244. package/dist-lib/lib/core/files/rag/retrieval/coverage.js +48 -0
  245. package/dist-lib/lib/core/files/rag/retrieval/diversity.d.ts +10 -0
  246. package/dist-lib/lib/core/files/rag/retrieval/diversity.js +37 -0
  247. package/dist-lib/lib/core/files/rag/retrieval/floor.d.ts +5 -0
  248. package/dist-lib/lib/core/files/rag/retrieval/floor.js +21 -0
  249. package/dist-lib/lib/core/files/rag/retrieval/format.d.ts +6 -0
  250. package/dist-lib/lib/core/files/rag/retrieval/format.js +21 -0
  251. package/dist-lib/lib/core/files/rag/retrieval/full-text.d.ts +22 -0
  252. package/dist-lib/lib/core/files/rag/retrieval/full-text.js +137 -0
  253. package/dist-lib/lib/core/files/rag/retrieval/knowledge.d.ts +2 -0
  254. package/dist-lib/lib/core/files/rag/retrieval/knowledge.js +53 -0
  255. package/dist-lib/lib/core/files/rag/retrieval/notices.d.ts +16 -0
  256. package/dist-lib/lib/core/files/rag/retrieval/notices.js +27 -0
  257. package/dist-lib/lib/core/files/rag/retrieval/scoring.d.ts +8 -0
  258. package/dist-lib/lib/core/files/rag/retrieval/scoring.js +82 -0
  259. package/dist-lib/lib/core/files/rag/retrieval/search.d.ts +3 -0
  260. package/dist-lib/lib/core/files/rag/retrieval/search.js +46 -0
  261. package/dist-lib/lib/core/files/rag/retrieval/selection.d.ts +10 -0
  262. package/dist-lib/lib/core/files/rag/retrieval/selection.js +63 -0
  263. package/dist-lib/lib/core/files/rag/retrieval/source-tag-filter.d.ts +6 -0
  264. package/dist-lib/lib/core/files/rag/retrieval/source-tag-filter.js +79 -0
  265. package/dist-lib/lib/core/files/rag/retrieval/sources.d.ts +13 -0
  266. package/dist-lib/lib/core/files/rag/retrieval/sources.js +20 -0
  267. package/dist-lib/lib/core/files/rag/retrieval/target.d.ts +13 -0
  268. package/dist-lib/lib/core/files/rag/retrieval/target.js +89 -0
  269. package/dist-lib/lib/core/files/rag/retrieval/terms.d.ts +8 -0
  270. package/dist-lib/lib/core/files/rag/retrieval/terms.js +70 -0
  271. package/dist-lib/lib/core/files/rag/retrieval/types.d.ts +28 -0
  272. package/dist-lib/lib/core/files/rag/retrieval/types.js +1 -0
  273. package/dist-lib/lib/core/files/rag/retrieval/web-sources.d.ts +8 -0
  274. package/dist-lib/lib/core/files/rag/retrieval/web-sources.js +41 -0
  275. package/dist-lib/lib/core/files/rag/retrieval/whole-document-query.d.ts +1 -0
  276. package/dist-lib/lib/core/files/rag/retrieval/whole-document-query.js +96 -0
  277. package/dist-lib/lib/core/files/rag/vector/memory.d.ts +15 -0
  278. package/dist-lib/lib/core/files/rag/vector/memory.js +135 -0
  279. package/dist-lib/lib/core/files/rag/vector/types.d.ts +28 -0
  280. package/dist-lib/lib/core/files/rag/vector/types.js +1 -0
  281. package/dist-lib/lib/core/files/records/chunks.d.ts +3 -0
  282. package/dist-lib/lib/core/files/records/chunks.js +12 -0
  283. package/dist-lib/lib/core/files/records/index.d.ts +10 -0
  284. package/dist-lib/lib/core/files/records/index.js +8 -0
  285. package/dist-lib/lib/core/files/records/knowledge.d.ts +22 -0
  286. package/dist-lib/lib/core/files/records/knowledge.js +105 -0
  287. package/dist-lib/lib/core/files/records/linkage.d.ts +11 -0
  288. package/dist-lib/lib/core/files/records/linkage.js +27 -0
  289. package/dist-lib/lib/core/files/records/output.d.ts +8 -0
  290. package/dist-lib/lib/core/files/records/output.js +38 -0
  291. package/dist-lib/lib/core/files/records/reclaim.d.ts +5 -0
  292. package/dist-lib/lib/core/files/records/reclaim.js +73 -0
  293. package/dist-lib/lib/core/files/records/routing.d.ts +23 -0
  294. package/dist-lib/lib/core/files/records/routing.js +62 -0
  295. package/dist-lib/lib/core/files/records/source.d.ts +16 -0
  296. package/dist-lib/lib/core/files/records/source.js +70 -0
  297. package/dist-lib/lib/core/files/records/sweep.d.ts +2 -0
  298. package/dist-lib/lib/core/files/records/sweep.js +30 -0
  299. package/dist-lib/lib/core/files/store/blob.d.ts +29 -0
  300. package/dist-lib/lib/core/files/store/blob.js +98 -0
  301. package/dist-lib/lib/core/files/store/index.d.ts +36 -0
  302. package/dist-lib/lib/core/files/store/index.js +89 -0
  303. package/dist-lib/lib/core/files/store/inline.d.ts +8 -0
  304. package/dist-lib/lib/core/files/store/inline.js +38 -0
  305. package/dist-lib/lib/core/files/store/reference.d.ts +27 -0
  306. package/dist-lib/lib/core/files/store/reference.js +168 -0
  307. package/dist-lib/lib/core/files/store/server.d.ts +27 -0
  308. package/dist-lib/lib/core/files/store/server.js +114 -0
  309. package/dist-lib/lib/core/files/store/sweep.d.ts +2 -0
  310. package/dist-lib/lib/core/files/store/sweep.js +45 -0
  311. package/dist-lib/lib/core/files/upload-input.d.ts +27 -0
  312. package/dist-lib/lib/core/files/upload-input.js +52 -0
  313. package/dist-lib/lib/core/files/upload.d.ts +32 -0
  314. package/dist-lib/lib/core/files/upload.js +201 -0
  315. package/dist-lib/lib/core/fs-drives.d.ts +18 -0
  316. package/dist-lib/lib/core/fs-drives.js +58 -0
  317. package/dist-lib/lib/core/gpu-info-node.d.ts +3 -0
  318. package/dist-lib/lib/core/gpu-info-node.js +2 -0
  319. package/dist-lib/lib/core/handoff-channel.d.ts +46 -0
  320. package/dist-lib/lib/core/handoff-channel.js +102 -0
  321. package/dist-lib/lib/core/health-assistant.d.ts +7 -0
  322. package/dist-lib/lib/core/health-assistant.js +24 -0
  323. package/dist-lib/lib/core/helpers/index.d.ts +5 -0
  324. package/dist-lib/lib/core/helpers/index.js +74 -0
  325. package/dist-lib/lib/core/hosted-agents.d.ts +36 -0
  326. package/dist-lib/lib/core/hosted-agents.js +127 -0
  327. package/dist-lib/lib/core/id.d.ts +1 -0
  328. package/dist-lib/lib/core/id.js +5 -0
  329. package/dist-lib/lib/core/identity.d.ts +14 -0
  330. package/dist-lib/lib/core/identity.js +45 -0
  331. package/dist-lib/lib/core/image/cache-sweep.d.ts +12 -0
  332. package/dist-lib/lib/core/image/cache-sweep.js +67 -0
  333. package/dist-lib/lib/core/image/normalize.d.ts +3 -0
  334. package/dist-lib/lib/core/image/normalize.js +49 -0
  335. package/dist-lib/lib/core/image/sniff.d.ts +3 -0
  336. package/dist-lib/lib/core/image/sniff.js +149 -0
  337. package/dist-lib/lib/core/invite.d.ts +14 -0
  338. package/dist-lib/lib/core/invite.js +36 -0
  339. package/dist-lib/lib/core/local/index.d.ts +71 -0
  340. package/dist-lib/lib/core/local/index.js +391 -0
  341. package/dist-lib/lib/core/membership.d.ts +15 -0
  342. package/dist-lib/lib/core/membership.js +40 -0
  343. package/dist-lib/lib/core/mesh.d.ts +153 -0
  344. package/dist-lib/lib/core/mesh.js +509 -0
  345. package/dist-lib/lib/core/migrations/agent-catalog.d.ts +6 -0
  346. package/dist-lib/lib/core/migrations/agent-catalog.js +17 -0
  347. package/dist-lib/lib/core/migrations/index.d.ts +5 -0
  348. package/dist-lib/lib/core/migrations/index.js +7 -0
  349. package/dist-lib/lib/core/migrations/membership.d.ts +11 -0
  350. package/dist-lib/lib/core/migrations/membership.js +26 -0
  351. package/dist-lib/lib/core/min-version.d.ts +6 -0
  352. package/dist-lib/lib/core/min-version.js +31 -0
  353. package/dist-lib/lib/core/next-frame.d.ts +6 -0
  354. package/dist-lib/lib/core/next-frame.js +27 -0
  355. package/dist-lib/lib/core/notification.d.ts +6 -0
  356. package/dist-lib/lib/core/notification.js +162 -0
  357. package/dist-lib/lib/core/ota-config.d.ts +19 -0
  358. package/dist-lib/lib/core/ota-config.js +44 -0
  359. package/dist-lib/lib/core/prompt-history.d.ts +12 -0
  360. package/dist-lib/lib/core/prompt-history.js +40 -0
  361. package/dist-lib/lib/core/search-fold.d.ts +1 -0
  362. package/dist-lib/lib/core/search-fold.js +4 -0
  363. package/dist-lib/lib/core/secret-handoff.d.ts +17 -0
  364. package/dist-lib/lib/core/secret-handoff.js +29 -0
  365. package/dist-lib/lib/core/send.d.ts +18 -0
  366. package/dist-lib/lib/core/send.js +46 -0
  367. package/dist-lib/lib/core/skill-overlay-handoff.d.ts +25 -0
  368. package/dist-lib/lib/core/skill-overlay-handoff.js +50 -0
  369. package/dist-lib/lib/core/skill-overlay-receiver.d.ts +8 -0
  370. package/dist-lib/lib/core/skill-overlay-receiver.js +20 -0
  371. package/dist-lib/lib/core/skill-secrets.d.ts +25 -0
  372. package/dist-lib/lib/core/skill-secrets.js +79 -0
  373. package/dist-lib/lib/core/sync/chats.d.ts +3 -0
  374. package/dist-lib/lib/core/sync/chats.js +5 -0
  375. package/dist-lib/lib/core/sync/chunks.d.ts +9 -0
  376. package/dist-lib/lib/core/sync/chunks.js +16 -0
  377. package/dist-lib/lib/core/sync/devices.d.ts +4 -0
  378. package/dist-lib/lib/core/sync/devices.js +12 -0
  379. package/dist-lib/lib/core/sync/files.d.ts +16 -0
  380. package/dist-lib/lib/core/sync/files.js +109 -0
  381. package/dist-lib/lib/core/sync/index.d.ts +5 -0
  382. package/dist-lib/lib/core/sync/index.js +63 -0
  383. package/dist-lib/lib/core/sync-status.d.ts +17 -0
  384. package/dist-lib/lib/core/sync-status.js +129 -0
  385. package/dist-lib/lib/core/system-info.d.ts +24 -0
  386. package/dist-lib/lib/core/system-info.js +66 -0
  387. package/dist-lib/lib/core/tool-activity.d.ts +22 -0
  388. package/dist-lib/lib/core/tool-activity.js +39 -0
  389. package/dist-lib/lib/core/tool-configs.d.ts +13 -0
  390. package/dist-lib/lib/core/tool-configs.js +141 -0
  391. package/dist-lib/lib/core.d.ts +291 -0
  392. package/dist-lib/lib/core.js +2126 -0
  393. package/dist-lib/lib/credential-pusher.d.ts +67 -0
  394. package/dist-lib/lib/credential-pusher.js +290 -0
  395. package/dist-lib/lib/custom-model-pusher.d.ts +9 -0
  396. package/dist-lib/lib/custom-model-pusher.js +42 -0
  397. package/dist-lib/lib/custom-model-source.d.ts +15 -0
  398. package/dist-lib/lib/custom-model-source.js +46 -0
  399. package/dist-lib/lib/deadline.d.ts +9 -0
  400. package/dist-lib/lib/deadline.js +31 -0
  401. package/dist-lib/lib/diagnostics.d.ts +35 -0
  402. package/dist-lib/lib/diagnostics.js +14 -0
  403. package/dist-lib/lib/fetch-node.d.ts +1 -0
  404. package/dist-lib/lib/fetch-node.js +1 -0
  405. package/dist-lib/lib/fs-drive-bridge.d.ts +12 -0
  406. package/dist-lib/lib/fs-drive-bridge.js +186 -0
  407. package/dist-lib/lib/fs-grant-keys.d.ts +2 -0
  408. package/dist-lib/lib/fs-grant-keys.js +6 -0
  409. package/dist-lib/lib/fs-grants.d.ts +10 -0
  410. package/dist-lib/lib/fs-grants.js +44 -0
  411. package/dist-lib/lib/image-cache-dir.d.ts +1 -0
  412. package/dist-lib/lib/image-cache-dir.js +5 -0
  413. package/dist-lib/lib/integrations/index.d.ts +4 -0
  414. package/dist-lib/lib/integrations/index.js +3 -0
  415. package/dist-lib/lib/integrations/mcp-providers.d.ts +12 -0
  416. package/dist-lib/lib/integrations/mcp-providers.js +22 -0
  417. package/dist-lib/lib/integrations/oauth-providers.d.ts +14 -0
  418. package/dist-lib/lib/integrations/oauth-providers.js +116 -0
  419. package/dist-lib/lib/integrations/setup-routes.d.ts +12 -0
  420. package/dist-lib/lib/integrations/setup-routes.js +114 -0
  421. package/dist-lib/lib/knowledge-search.d.ts +7 -0
  422. package/dist-lib/lib/knowledge-search.js +53 -0
  423. package/dist-lib/lib/kv-cache-reclaim.d.ts +5 -0
  424. package/dist-lib/lib/kv-cache-reclaim.js +29 -0
  425. package/dist-lib/lib/kv-cache.d.ts +18 -0
  426. package/dist-lib/lib/kv-cache.js +33 -0
  427. package/dist-lib/lib/legacy-core-domain.d.ts +258 -0
  428. package/dist-lib/lib/legacy-core-domain.js +1 -0
  429. package/dist-lib/lib/llm-model-names.d.ts +1 -0
  430. package/dist-lib/lib/llm-model-names.js +1 -0
  431. package/dist-lib/lib/log-buffer.d.ts +7 -0
  432. package/dist-lib/lib/log-buffer.js +16 -0
  433. package/dist-lib/lib/log-levels.d.ts +7 -0
  434. package/dist-lib/lib/log-levels.js +1 -0
  435. package/dist-lib/lib/log.d.ts +60 -0
  436. package/dist-lib/lib/log.js +149 -0
  437. package/dist-lib/lib/logger-type.d.ts +13 -0
  438. package/dist-lib/lib/logger-type.js +1 -0
  439. package/dist-lib/lib/logger.d.ts +5 -0
  440. package/dist-lib/lib/logger.js +18 -0
  441. package/dist-lib/lib/model-catalog-revision.d.ts +9 -0
  442. package/dist-lib/lib/model-catalog-revision.js +65 -0
  443. package/dist-lib/lib/model-clamp.d.ts +6 -0
  444. package/dist-lib/lib/model-clamp.js +20 -0
  445. package/dist-lib/lib/model-context.d.ts +13 -0
  446. package/dist-lib/lib/model-context.js +71 -0
  447. package/dist-lib/lib/model-download-status.d.ts +29 -0
  448. package/dist-lib/lib/model-download-status.js +56 -0
  449. package/dist-lib/lib/model-download.d.ts +191 -0
  450. package/dist-lib/lib/model-download.js +787 -0
  451. package/dist-lib/lib/oauth/asana.d.ts +35 -0
  452. package/dist-lib/lib/oauth/asana.js +71 -0
  453. package/dist-lib/lib/oauth/browser-connect.d.ts +22 -0
  454. package/dist-lib/lib/oauth/browser-connect.js +83 -0
  455. package/dist-lib/lib/oauth/client.d.ts +9 -0
  456. package/dist-lib/lib/oauth/client.js +9 -0
  457. package/dist-lib/lib/oauth/common.d.ts +38 -0
  458. package/dist-lib/lib/oauth/common.js +36 -0
  459. package/dist-lib/lib/oauth/crypto.d.ts +3 -0
  460. package/dist-lib/lib/oauth/crypto.js +25 -0
  461. package/dist-lib/lib/oauth/fetch-platform.d.ts +1 -0
  462. package/dist-lib/lib/oauth/fetch-platform.js +1 -0
  463. package/dist-lib/lib/oauth/flow-core.d.ts +6 -0
  464. package/dist-lib/lib/oauth/flow-core.js +37 -0
  465. package/dist-lib/lib/oauth/flow.d.ts +3 -0
  466. package/dist-lib/lib/oauth/flow.js +24 -0
  467. package/dist-lib/lib/oauth/google.d.ts +37 -0
  468. package/dist-lib/lib/oauth/google.js +77 -0
  469. package/dist-lib/lib/oauth/host.d.ts +5 -0
  470. package/dist-lib/lib/oauth/host.js +3 -0
  471. package/dist-lib/lib/oauth/keys.d.ts +25 -0
  472. package/dist-lib/lib/oauth/keys.js +93 -0
  473. package/dist-lib/lib/oauth/loopback.d.ts +3 -0
  474. package/dist-lib/lib/oauth/loopback.js +119 -0
  475. package/dist-lib/lib/oauth/loopback.stub.d.ts +3 -0
  476. package/dist-lib/lib/oauth/loopback.stub.js +6 -0
  477. package/dist-lib/lib/oauth/notion.d.ts +34 -0
  478. package/dist-lib/lib/oauth/notion.js +82 -0
  479. package/dist-lib/lib/oauth/pkce-runtime.d.ts +3 -0
  480. package/dist-lib/lib/oauth/pkce-runtime.js +5 -0
  481. package/dist-lib/lib/oauth/pkce.d.ts +8 -0
  482. package/dist-lib/lib/oauth/pkce.js +6 -0
  483. package/dist-lib/lib/oauth/providers.d.ts +5 -0
  484. package/dist-lib/lib/oauth/providers.js +73 -0
  485. package/dist-lib/lib/oauth/redirect-types.d.ts +19 -0
  486. package/dist-lib/lib/oauth/redirect-types.js +1 -0
  487. package/dist-lib/lib/oauth/register.d.ts +3 -0
  488. package/dist-lib/lib/oauth/register.js +34 -0
  489. package/dist-lib/lib/oauth/resolve.d.ts +17 -0
  490. package/dist-lib/lib/oauth/resolve.js +57 -0
  491. package/dist-lib/lib/oauth/spotify.d.ts +32 -0
  492. package/dist-lib/lib/oauth/spotify.js +73 -0
  493. package/dist-lib/lib/oauth/token-exchange-core.d.ts +6 -0
  494. package/dist-lib/lib/oauth/token-exchange-core.js +97 -0
  495. package/dist-lib/lib/oauth/token-exchange.d.ts +5 -0
  496. package/dist-lib/lib/oauth/token-exchange.js +9 -0
  497. package/dist-lib/lib/oauth/types.d.ts +54 -0
  498. package/dist-lib/lib/oauth/types.js +1 -0
  499. package/dist-lib/lib/oauth.client.d.ts +5 -0
  500. package/dist-lib/lib/oauth.client.js +2 -0
  501. package/dist-lib/lib/oauth.d.ts +14 -0
  502. package/dist-lib/lib/oauth.js +12 -0
  503. package/dist-lib/lib/obsidian-key.d.ts +1 -0
  504. package/dist-lib/lib/obsidian-key.js +1 -0
  505. package/dist-lib/lib/race-resource.d.ts +5 -0
  506. package/dist-lib/lib/race-resource.js +25 -0
  507. package/dist-lib/lib/reconnecting-watch.d.ts +2 -0
  508. package/dist-lib/lib/reconnecting-watch.js +78 -0
  509. package/dist-lib/lib/retry-budget.d.ts +14 -0
  510. package/dist-lib/lib/retry-budget.js +39 -0
  511. package/dist-lib/lib/run-notices.d.ts +23 -0
  512. package/dist-lib/lib/run-notices.js +33 -0
  513. package/dist-lib/lib/run-transcript.d.ts +35 -0
  514. package/dist-lib/lib/run-transcript.js +106 -0
  515. package/dist-lib/lib/skill-readiness.d.ts +2 -0
  516. package/dist-lib/lib/skill-readiness.js +21 -0
  517. package/dist-lib/lib/skill-types.d.ts +70 -0
  518. package/dist-lib/lib/skill-types.js +1 -0
  519. package/dist-lib/lib/spec-loader.d.ts +14 -0
  520. package/dist-lib/lib/spec-loader.js +9 -0
  521. package/dist-lib/lib/suspend-lifecycle.d.ts +17 -0
  522. package/dist-lib/lib/suspend-lifecycle.js +33 -0
  523. package/dist-lib/lib/task.d.ts +26 -0
  524. package/dist-lib/lib/task.js +69 -0
  525. package/dist-lib/lib/unref.d.ts +3 -0
  526. package/dist-lib/lib/unref.js +4 -0
  527. package/dist-lib/lib/wav-duration.d.ts +1 -0
  528. package/dist-lib/lib/wav-duration.js +53 -0
  529. package/dist-lib/lib/write-queue.d.ts +22 -0
  530. package/dist-lib/lib/write-queue.js +39 -0
  531. package/dist-lib/schema/build.d.ts +1 -0
  532. package/dist-lib/schema/build.js +120 -0
  533. package/dist-lib/schema/config.d.ts +4 -0
  534. package/dist-lib/schema/config.js +7 -0
  535. package/dist-lib/schema/content.d.ts +20 -0
  536. package/dist-lib/schema/content.js +122 -0
  537. package/dist-lib/schema/engine.d.ts +2 -0
  538. package/dist-lib/schema/engine.js +2013 -0
  539. package/dist-lib/schema/field-order.d.ts +1 -0
  540. package/dist-lib/schema/field-order.js +95 -0
  541. package/dist-lib/schema/local.d.ts +2 -0
  542. package/dist-lib/schema/local.js +133 -0
  543. package/dist-lib/schema/qvac.d.ts +22 -0
  544. package/dist-lib/schema/qvac.js +722 -0
  545. package/dist-lib/spec/bind.d.ts +2 -0
  546. package/dist-lib/spec/bind.js +520 -0
  547. package/dist-lib/spec/calls.d.ts +3 -0
  548. package/dist-lib/spec/calls.js +129 -0
  549. package/dist-lib/spec/capabilities.d.ts +263 -0
  550. package/dist-lib/spec/config/hyperconf/index.d.ts +15 -0
  551. package/dist-lib/spec/config/hyperconf/index.js +24 -0
  552. package/dist-lib/spec/config/hyperconf/package.json +3 -0
  553. package/dist-lib/spec/config/hyperschema/index.js +81 -0
  554. package/dist-lib/spec/config/hyperschema/schema.json +19 -0
  555. package/dist-lib/spec/hrpc/hrpc.json +1500 -0
  556. package/dist-lib/spec/hrpc/index.d.ts +3 -0
  557. package/dist-lib/spec/hrpc/index.js +1545 -0
  558. package/dist-lib/spec/hrpc/messages.d.ts +4 -0
  559. package/dist-lib/spec/hrpc/messages.js +8373 -0
  560. package/dist-lib/spec/hyperschema/index.d.ts +20 -0
  561. package/dist-lib/spec/hyperschema/index.js +8373 -0
  562. package/dist-lib/spec/hyperschema/schema.json +6202 -0
  563. package/dist-lib/spec/hyperschema/types.d.ts +1545 -0
  564. package/dist-lib/spec/index.d.ts +36 -0
  565. package/dist-lib/spec/index.js +6 -0
  566. package/dist-lib/spec/local/hyperdb/db.json +186 -0
  567. package/dist-lib/spec/local/hyperdb/index.d.ts +9 -0
  568. package/dist-lib/spec/local/hyperdb/index.js +855 -0
  569. package/dist-lib/spec/local/hyperdb/messages.js +2189 -0
  570. package/dist-lib/spec/local/hyperschema/index.js +1208 -0
  571. package/dist-lib/spec/local/hyperschema/schema.json +639 -0
  572. package/dist-lib/spec/local/hyperschema/types.d.ts +159 -0
  573. package/dist-lib/spec/mesh/hyperdb/db.json +702 -0
  574. package/dist-lib/spec/mesh/hyperdb/index.d.ts +9 -0
  575. package/dist-lib/spec/mesh/hyperdb/index.js +2260 -0
  576. package/dist-lib/spec/mesh/hyperdb/messages.js +7453 -0
  577. package/dist-lib/spec/mesh/hyperdispatch/dispatch.json +174 -0
  578. package/dist-lib/spec/mesh/hyperdispatch/index.d.ts +13 -0
  579. package/dist-lib/spec/mesh/hyperdispatch/index.js +566 -0
  580. package/dist-lib/spec/mesh/hyperdispatch/messages.js +5713 -0
  581. package/dist-lib/spec/mesh/hyperschema/index.d.ts +14 -0
  582. package/dist-lib/spec/mesh/hyperschema/index.js +5713 -0
  583. package/dist-lib/spec/mesh/hyperschema/schema.json +3142 -0
  584. package/dist-lib/spec/mesh/hyperschema/types.d.ts +754 -0
  585. package/ducks.png +0 -0
  586. package/package.json +332 -1
@@ -0,0 +1,8 @@
1
+ import type { VectorHit } from '../vector/types.ts';
2
+ export type ScoredDocument = {
3
+ readonly documentId: string;
4
+ readonly title: string;
5
+ readonly score: number;
6
+ readonly hits: ReadonlyArray<VectorHit>;
7
+ };
8
+ export declare function scoreDocuments(hits: ReadonlyArray<VectorHit>, query: string): ReadonlyArray<ScoredDocument>;
@@ -0,0 +1,82 @@
1
+ import { normalize } from 'asenion';
2
+ import { parseRagMetadata } from "../chunk/metadata.js";
3
+ import { extractSalientTerms, isMeaningfulToken } from "./terms.js";
4
+ const SEM_MAX_WEIGHT = 0.7;
5
+ const SEM_MEAN_WEIGHT = 0.3;
6
+ const SEM_TOP_K = 3;
7
+ const LEX_PHRASE_WEIGHT = 1;
8
+ const LEX_ENTITY_WEIGHT = 1;
9
+ const LEX_TOKEN_OVERLAP_WEIGHT = 0.5;
10
+ const TITLE_EXACT_SCORE = 1;
11
+ const TITLE_TOKEN_SCORE = 0.6;
12
+ const DOC_SEMANTIC_WEIGHT = 1;
13
+ const DOC_LEXICAL_WEIGHT = 0.6;
14
+ const DOC_TITLE_WEIGHT = 0.8;
15
+ const ALL_ENTITIES_BOOST = 0.5;
16
+ export function scoreDocuments(hits, query) {
17
+ const terms = extractSalientTerms(query);
18
+ const scored = [];
19
+ for (const [documentId, group] of groupHitsByDocument(hits)) {
20
+ const docHits = [...group.hits].sort((left, right) => right.score - left.score);
21
+ const contentNorm = normalize(docHits.map((hit) => hit.content).join(' '));
22
+ const titleNorm = normalize(group.title);
23
+ const allEntities = terms.entities.length > 0 &&
24
+ terms.entities.every((entity) => contentNorm.includes(entity) || titleNorm.includes(entity));
25
+ const score = DOC_SEMANTIC_WEIGHT * semanticScore(docHits) +
26
+ DOC_LEXICAL_WEIGHT * lexicalScore(terms, contentNorm, titleNorm) +
27
+ DOC_TITLE_WEIGHT * titleScore(terms, query, group.title) +
28
+ (allEntities ? ALL_ENTITIES_BOOST : 0);
29
+ scored.push({ documentId, title: group.title, score, hits: docHits });
30
+ }
31
+ return scored.sort((left, right) => right.score - left.score);
32
+ }
33
+ function groupHitsByDocument(hits) {
34
+ const groups = new Map();
35
+ for (const hit of hits) {
36
+ const metadata = parseRagMetadata(hit.metadataJson);
37
+ if (!metadata)
38
+ continue;
39
+ const group = groups.get(metadata.documentId) ?? { title: metadata.title, hits: [] };
40
+ group.hits.push(hit);
41
+ groups.set(metadata.documentId, group);
42
+ }
43
+ return groups;
44
+ }
45
+ function semanticScore(docHits) {
46
+ if (docHits.length === 0)
47
+ return 0;
48
+ const max = docHits[0]?.score ?? 0;
49
+ const top = docHits.slice(0, SEM_TOP_K);
50
+ const mean = top.reduce((sum, hit) => sum + hit.score, 0) / top.length;
51
+ return SEM_MAX_WEIGHT * max + SEM_MEAN_WEIGHT * mean;
52
+ }
53
+ function lexicalScore(terms, contentNorm, titleNorm) {
54
+ const phrase = terms.quotedPhrases.some((value) => contentNorm.includes(value) || titleNorm.includes(value))
55
+ ? 1
56
+ : 0;
57
+ const entityFraction = terms.entities.length === 0
58
+ ? 0
59
+ : terms.entities.filter((entity) => contentNorm.includes(entity) || titleNorm.includes(entity)).length / terms.entities.length;
60
+ const tokenOverlap = terms.tokens.length === 0 ? 0 : overlapCount(terms.tokens, contentNorm) / terms.tokens.length;
61
+ return (LEX_PHRASE_WEIGHT * phrase +
62
+ LEX_ENTITY_WEIGHT * entityFraction +
63
+ LEX_TOKEN_OVERLAP_WEIGHT * tokenOverlap);
64
+ }
65
+ function titleScore(terms, query, title) {
66
+ const stemTokens = normalize(title.replace(/\.[A-Za-z0-9]+$/, ''))
67
+ .split(' ')
68
+ .filter(isMeaningfulToken);
69
+ if (stemTokens.length === 0)
70
+ return 0;
71
+ const stem = stemTokens.join(' ');
72
+ if (normalize(query).includes(stem))
73
+ return TITLE_EXACT_SCORE;
74
+ const titleTokens = new Set(stemTokens);
75
+ const tokenHit = terms.tokens.some((token) => titleTokens.has(token));
76
+ const entityHit = terms.entities.some((entity) => stem.includes(entity));
77
+ return tokenHit || entityHit ? TITLE_TOKEN_SCORE : 0;
78
+ }
79
+ function overlapCount(tokens, contentNorm) {
80
+ const contentTokens = new Set(contentNorm.split(' '));
81
+ return tokens.filter((token) => contentTokens.has(token)).length;
82
+ }
@@ -0,0 +1,3 @@
1
+ import type { VectorHit } from '../vector/types.ts';
2
+ import type { RagRetrievalDeps, RagRetrievalQuery } from './types.ts';
3
+ export declare function searchRagChunks(query: RagRetrievalQuery, deps: RagRetrievalDeps): Promise<ReadonlyArray<VectorHit>>;
@@ -0,0 +1,46 @@
1
+ import { selectCoverage } from "./coverage.js";
2
+ import { applyPerSourceCap, scopeFilterFor } from "./diversity.js";
3
+ import { scoreDocuments } from "./scoring.js";
4
+ import { selectChunks } from "./selection.js";
5
+ const DEFAULT_LIMIT = 5;
6
+ export async function searchRagChunks(query, deps) {
7
+ const trimmed = query.query.trim();
8
+ if (!trimmed)
9
+ return [];
10
+ if (deps.index.info().chunks === 0)
11
+ return [];
12
+ const embedding = await embedQuery(deps, trimmed);
13
+ const total = deps.index.info().chunks;
14
+ if (total === 0)
15
+ return [];
16
+ const hits = await deps.index.search(embedding, { limit: total, filter: scopeFilterFor(query) });
17
+ if (query.coverage) {
18
+ return selectCoverage(hits, {
19
+ ...(query.chunkBudgetTokens && query.chunkBudgetTokens > 0
20
+ ? { budgetTokens: query.chunkBudgetTokens }
21
+ : {})
22
+ });
23
+ }
24
+ if (useDocumentFirst(query))
25
+ return documentFirstSelect(query, hits);
26
+ return applyPerSourceCap(hits, query.limit ?? DEFAULT_LIMIT);
27
+ }
28
+ async function embedQuery(deps, text) {
29
+ const rows = await deps.embed([text]);
30
+ const embedding = rows[0];
31
+ if (!embedding)
32
+ throw new Error('rag retrieval: the embedder returned no query embedding');
33
+ return embedding;
34
+ }
35
+ function useDocumentFirst(query) {
36
+ return query.documentFirst === true && Boolean(query.chatId) && !query.attachmentIds?.length;
37
+ }
38
+ function documentFirstSelect(query, hits) {
39
+ const ranked = scoreDocuments(hits, query.query);
40
+ return selectChunks(ranked, {
41
+ ...(query.chunkBudgetTokens && query.chunkBudgetTokens > 0
42
+ ? { chunkBudgetTokens: query.chunkBudgetTokens }
43
+ : {}),
44
+ ...(query.perDocChunkCap ? { perDocChunkCap: query.perDocChunkCap } : {})
45
+ });
46
+ }
@@ -0,0 +1,10 @@
1
+ import type { VectorHit } from '../vector/types.ts';
2
+ import type { ScoredDocument } from './scoring.ts';
3
+ export declare const DEFAULT_CHUNK_BUDGET_TOKENS = 3072;
4
+ export declare const MAX_SELECTED_CHUNKS: number;
5
+ export type SelectChunksOptions = {
6
+ readonly maxDocs?: number;
7
+ readonly chunkBudgetTokens?: number;
8
+ readonly perDocChunkCap?: number;
9
+ };
10
+ export declare function selectChunks(ranked: ReadonlyArray<ScoredDocument>, options?: SelectChunksOptions): ReadonlyArray<VectorHit>;
@@ -0,0 +1,63 @@
1
+ import { parseRagMetadata } from "../chunk/metadata.js";
2
+ import { estimateRagTokens } from "../chunk/tokenizer.js";
3
+ const DEFAULT_MAX_DOCS = 8;
4
+ const DEFAULT_PER_DOC_CHUNK_CAP = 4;
5
+ export const DEFAULT_CHUNK_BUDGET_TOKENS = 3072;
6
+ export const MAX_SELECTED_CHUNKS = DEFAULT_MAX_DOCS * DEFAULT_PER_DOC_CHUNK_CAP;
7
+ export function selectChunks(ranked, options = {}) {
8
+ const topDocs = ranked.slice(0, options.maxDocs ?? DEFAULT_MAX_DOCS);
9
+ if (topDocs.length === 0)
10
+ return [];
11
+ const state = {
12
+ topDocs,
13
+ budget: options.chunkBudgetTokens ?? DEFAULT_CHUNK_BUDGET_TOKENS,
14
+ perDocCap: options.perDocChunkCap ?? DEFAULT_PER_DOC_CHUNK_CAP,
15
+ used: new Set(),
16
+ perDocCount: new Map(),
17
+ selected: [],
18
+ usedTokens: 0
19
+ };
20
+ seedCoverage(state);
21
+ fillBudget(state);
22
+ return state.selected
23
+ .sort((left, right) => left.docRank - right.docRank || left.chunkIndex - right.chunkIndex)
24
+ .map((entry) => entry.hit);
25
+ }
26
+ function seedCoverage(state) {
27
+ state.topDocs.forEach((doc, rank) => {
28
+ const best = doc.hits[0];
29
+ if (!best || state.used.has(best.id))
30
+ return;
31
+ if (rank === 0 || state.usedTokens + hitTokens(best) <= state.budget) {
32
+ take(state, rank, best);
33
+ }
34
+ });
35
+ }
36
+ function fillBudget(state) {
37
+ let added = true;
38
+ while (added) {
39
+ added = false;
40
+ state.topDocs.forEach((doc, rank) => {
41
+ if ((state.perDocCount.get(doc.documentId) ?? 0) >= state.perDocCap)
42
+ return;
43
+ const next = doc.hits.find((hit) => !state.used.has(hit.id));
44
+ if (next && state.usedTokens + hitTokens(next) <= state.budget) {
45
+ take(state, rank, next);
46
+ added = true;
47
+ }
48
+ });
49
+ }
50
+ }
51
+ function take(state, docRank, hit) {
52
+ state.used.add(hit.id);
53
+ const documentId = state.topDocs[docRank]?.documentId ?? '';
54
+ state.perDocCount.set(documentId, (state.perDocCount.get(documentId) ?? 0) + 1);
55
+ state.usedTokens += hitTokens(hit);
56
+ state.selected.push({ docRank, chunkIndex: chunkIndexOf(hit), hit });
57
+ }
58
+ function hitTokens(hit) {
59
+ return parseRagMetadata(hit.metadataJson)?.tokenCount ?? estimateRagTokens(hit.content);
60
+ }
61
+ function chunkIndexOf(hit) {
62
+ return parseRagMetadata(hit.metadataJson)?.chunkIndex ?? 0;
63
+ }
@@ -0,0 +1,6 @@
1
+ export type RagSourceTagFilter = {
2
+ readonly add: (sourceNames: ReadonlyArray<string>) => void;
3
+ readonly push: (text: string) => string;
4
+ readonly flush: () => string;
5
+ };
6
+ export declare function createRagSourceTagFilter(): RagSourceTagFilter;
@@ -0,0 +1,79 @@
1
+ const SOURCE_TAG_START = /\[\s*sources?(?:\s+\d+)?\s*:/i;
2
+ const POSSIBLE_SOURCE_TAG_START = /^\[\s*(?:s(?:o(?:u(?:r(?:c(?:e(?:s)?)?)?)?)?)?)?(?:\s+\d*)?\s*$/i;
3
+ export function createRagSourceTagFilter() {
4
+ const state = { buffer: '', hasSources: false };
5
+ return {
6
+ add(sourceNames) {
7
+ if (state.hasSources)
8
+ return;
9
+ for (const name of sourceNames) {
10
+ if (name.trim().length > 0) {
11
+ state.hasSources = true;
12
+ return;
13
+ }
14
+ }
15
+ },
16
+ push(text) {
17
+ state.buffer += text;
18
+ return drain(state);
19
+ },
20
+ flush() {
21
+ const start = SOURCE_TAG_START.exec(state.buffer);
22
+ if (!start) {
23
+ const output = state.buffer;
24
+ state.buffer = '';
25
+ return output;
26
+ }
27
+ const prefix = state.buffer.slice(0, start.index);
28
+ const tag = state.buffer.slice(start.index);
29
+ state.buffer = '';
30
+ if (state.hasSources)
31
+ return prefix.trimEnd();
32
+ return prefix + tag;
33
+ }
34
+ };
35
+ }
36
+ function drain(state) {
37
+ let output = '';
38
+ for (;;) {
39
+ const start = SOURCE_TAG_START.exec(state.buffer);
40
+ if (!start)
41
+ return output + emitNonTagText(state);
42
+ const end = state.buffer.indexOf(']', start.index);
43
+ if (end === -1) {
44
+ const holdStart = trailingWhitespaceStart(state.buffer, start.index);
45
+ output += state.buffer.slice(0, holdStart);
46
+ state.buffer = state.buffer.slice(holdStart);
47
+ return output;
48
+ }
49
+ const prefix = state.buffer.slice(0, start.index);
50
+ const tag = state.buffer.slice(start.index, end + 1);
51
+ state.buffer = state.buffer.slice(end + 1);
52
+ if (state.hasSources)
53
+ output += prefix.trimEnd();
54
+ else
55
+ output += prefix + tag;
56
+ }
57
+ }
58
+ function emitNonTagText(state) {
59
+ const possibleStart = possibleSourceTagStart(state.buffer);
60
+ if (possibleStart === -1) {
61
+ const output = state.buffer;
62
+ state.buffer = '';
63
+ return output;
64
+ }
65
+ const holdStart = trailingWhitespaceStart(state.buffer, possibleStart);
66
+ const output = state.buffer.slice(0, holdStart);
67
+ state.buffer = state.buffer.slice(holdStart);
68
+ return output;
69
+ }
70
+ function possibleSourceTagStart(text) {
71
+ const start = text.lastIndexOf('[');
72
+ return start !== -1 && POSSIBLE_SOURCE_TAG_START.test(text.slice(start)) ? start : -1;
73
+ }
74
+ function trailingWhitespaceStart(text, end) {
75
+ let start = end;
76
+ while (start > 0 && /\s/.test(text[start - 1] ?? ''))
77
+ start--;
78
+ return start;
79
+ }
@@ -0,0 +1,13 @@
1
+ import { RAG_SOURCE_EXCERPT_CHARS } from '../../../../../schema/qvac.ts';
2
+ import type { VectorHit } from '../vector/types.ts';
3
+ export { RAG_SOURCE_EXCERPT_CHARS };
4
+ export type RagSource = {
5
+ readonly documentId: string | null;
6
+ readonly title: string;
7
+ readonly chunkIndex: number;
8
+ readonly excerpt: string;
9
+ readonly attachmentId: string | null;
10
+ readonly artifactId: string | null;
11
+ readonly score: number;
12
+ };
13
+ export declare function sourcesFromHits(hits: ReadonlyArray<VectorHit>): RagSource[];
@@ -0,0 +1,20 @@
1
+ import { MAX_RAG_SOURCES_PER_CHUNK, RAG_SOURCE_EXCERPT_CHARS } from "../../../../../schema/qvac.js";
2
+ import { parseRagMetadata } from "../chunk/metadata.js";
3
+ export { RAG_SOURCE_EXCERPT_CHARS };
4
+ export function sourcesFromHits(hits) {
5
+ return hits.slice(0, MAX_RAG_SOURCES_PER_CHUNK).map((hit, index) => {
6
+ const metadata = parseRagMetadata(hit.metadataJson);
7
+ const chunkIndex = metadata && Number.isSafeInteger(metadata.chunkIndex) && metadata.chunkIndex >= 0
8
+ ? metadata.chunkIndex
9
+ : index;
10
+ return {
11
+ documentId: metadata?.documentId ?? null,
12
+ title: metadata?.title ?? 'document',
13
+ chunkIndex,
14
+ excerpt: hit.content.slice(0, RAG_SOURCE_EXCERPT_CHARS),
15
+ attachmentId: metadata?.attachmentId ?? null,
16
+ artifactId: metadata?.artifactId ?? null,
17
+ score: hit.score
18
+ };
19
+ });
20
+ }
@@ -0,0 +1,13 @@
1
+ export type RagDocumentRef = {
2
+ readonly documentId: string;
3
+ readonly title: string;
4
+ };
5
+ export declare function resolveTargetDocument(query: string, documents: ReadonlyArray<RagDocumentRef>): string | null;
6
+ export declare function referencedDocuments<T extends {
7
+ readonly title: string;
8
+ }>(query: string, documents: ReadonlyArray<T>): ReadonlyArray<T>;
9
+ export declare function referencesPendingFile(query: string, documents: ReadonlyArray<{
10
+ readonly title: string;
11
+ readonly pending: boolean;
12
+ }>): boolean;
13
+ export declare function containsFileName(haystack: string, name: string): boolean;
@@ -0,0 +1,89 @@
1
+ import { has } from 'asenion';
2
+ const TYPE_KEYWORDS = [
3
+ ['pdf', ['pdf']],
4
+ ['html', ['html', 'htm']],
5
+ ['csv', ['csv']],
6
+ ['spreadsheet', ['csv', 'xlsx', 'xls']],
7
+ ['json', ['json']],
8
+ ['markdown', ['md', 'markdown']],
9
+ ['xml', ['xml']],
10
+ ['yaml', ['yaml', 'yml']]
11
+ ];
12
+ const MIN_STEM_LENGTH = 4;
13
+ const STEM_STOPWORDS = new Set([
14
+ 'report',
15
+ 'summary',
16
+ 'notes',
17
+ 'note',
18
+ 'data',
19
+ 'test',
20
+ 'tests',
21
+ 'file',
22
+ 'files',
23
+ 'document',
24
+ 'documents',
25
+ 'draft',
26
+ 'final',
27
+ 'image',
28
+ 'images',
29
+ 'photo',
30
+ 'doc',
31
+ 'docs',
32
+ 'untitled',
33
+ 'example',
34
+ 'sample',
35
+ 'output',
36
+ 'input',
37
+ 'readme',
38
+ 'index',
39
+ 'main',
40
+ 'temp',
41
+ 'guide'
42
+ ]);
43
+ export function resolveTargetDocument(query, documents) {
44
+ const named = documents.filter((document) => mentionsName(query.toLowerCase(), document.title));
45
+ const matches = named.length ? named : referencedDocuments(query, documents);
46
+ return matches.length === 1 ? matches[0].documentId : null;
47
+ }
48
+ export function referencedDocuments(query, documents) {
49
+ const haystack = query.toLowerCase();
50
+ return documents.filter((document) => mentionsName(haystack, document.title) || referencesFileType(haystack, document.title));
51
+ }
52
+ function mentionsName(haystack, title) {
53
+ const name = title.toLowerCase();
54
+ if (containsFileName(haystack, name))
55
+ return true;
56
+ const stem = name.replace(/\.[^.]+$/, '');
57
+ if (stem.length < MIN_STEM_LENGTH || STEM_STOPWORDS.has(stem) || !looksDistinctive(stem)) {
58
+ return false;
59
+ }
60
+ return has(haystack, stem);
61
+ }
62
+ export function referencesPendingFile(query, documents) {
63
+ return referencedDocuments(query, documents).some((document) => document.pending);
64
+ }
65
+ function referencesFileType(haystack, title) {
66
+ const ext = title.toLowerCase().match(/\.([^.]+)$/)?.[1];
67
+ if (!ext)
68
+ return false;
69
+ return TYPE_KEYWORDS.some(([word, exts]) => exts.includes(ext) && referencesTypeWord(haystack, word));
70
+ }
71
+ function referencesTypeWord(haystack, word) {
72
+ const w = word.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
73
+ for (const m of haystack.matchAll(new RegExp(`(^|[^a-z0-9._-])${w}(?=$|[^a-z0-9._-]|\\.(?:$|[^a-z0-9._-]))`, 'g'))) {
74
+ const before = haystack.slice(0, (m.index ?? 0) + m[1].length);
75
+ const after = haystack.slice((m.index ?? 0) + m[0].length);
76
+ const asFormat = /(^|[^a-z0-9])(?:in|to|into|as)\s+(?:an?\s+)?$/.test(before) ||
77
+ /^\s+format(?![a-z0-9])/.test(after);
78
+ if (!asFormat)
79
+ return true;
80
+ }
81
+ return false;
82
+ }
83
+ function looksDistinctive(stem) {
84
+ return /[0-9_\-. ]/.test(stem);
85
+ }
86
+ export function containsFileName(haystack, name) {
87
+ const escaped = name.toLowerCase().replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
88
+ return new RegExp(`(^|[^a-z0-9._-])${escaped}(?=$|[^a-z0-9._-]|\\.(?:$|[^a-z0-9._-]))`).test(haystack.toLowerCase());
89
+ }
@@ -0,0 +1,8 @@
1
+ export type SalientTerms = {
2
+ readonly tokens: ReadonlyArray<string>;
3
+ readonly quotedPhrases: ReadonlyArray<string>;
4
+ readonly entities: ReadonlyArray<string>;
5
+ };
6
+ export declare function isMeaningfulToken(token: string): boolean;
7
+ export declare function extractSalientTerms(query: string): SalientTerms;
8
+ export declare function uniqueStrings(values: ReadonlyArray<string>): ReadonlyArray<string>;
@@ -0,0 +1,70 @@
1
+ import { closedClass, normalize, tag } from 'asenion';
2
+ import { tokenizeForRag } from "../chunk/tokenizer.js";
3
+ const MIN_TERM_LENGTH = 3;
4
+ const GENERIC_WORDS = new Set([
5
+ 'give',
6
+ 'show',
7
+ 'tell',
8
+ 'get',
9
+ 'find',
10
+ 'what',
11
+ 'data',
12
+ 'info',
13
+ 'information',
14
+ 'please',
15
+ 'want'
16
+ ]);
17
+ export function isMeaningfulToken(token) {
18
+ if (token.length < MIN_TERM_LENGTH)
19
+ return false;
20
+ return !closedClass(token) && !GENERIC_WORDS.has(token);
21
+ }
22
+ export function extractSalientTerms(query) {
23
+ const quotedPhrases = [];
24
+ const quotePattern = /"([^"]+)"|'([^']+)'/g;
25
+ let quoted = quotePattern.exec(query);
26
+ while (quoted) {
27
+ const phrase = normalize(quoted[1] ?? quoted[2] ?? '');
28
+ if (phrase)
29
+ quotedPhrases.push(phrase);
30
+ quoted = quotePattern.exec(query);
31
+ }
32
+ const tokens = uniqueStrings(tokenizeForRag(query)
33
+ .map((token) => token.text.trim().toLowerCase())
34
+ .filter((token) => isMeaningfulToken(token) && /[\p{L}\p{N}]/u.test(token)));
35
+ return { tokens, quotedPhrases, entities: extractEntities(query) };
36
+ }
37
+ function extractEntities(query) {
38
+ const words = query.split(/\s+/).filter(Boolean);
39
+ const entities = [];
40
+ let run = [];
41
+ const flush = () => {
42
+ if (run.length >= 2) {
43
+ const normalized = normalize(run.join(' '));
44
+ if (names(normalized))
45
+ entities.push(normalized);
46
+ }
47
+ run = [];
48
+ };
49
+ for (const word of words) {
50
+ if (isCapitalizedWord(word)) {
51
+ run.push(word);
52
+ }
53
+ else {
54
+ flush();
55
+ }
56
+ }
57
+ flush();
58
+ return uniqueStrings(entities);
59
+ }
60
+ function names(run) {
61
+ return tag(run).some(({ word, tag: part }) => isMeaningfulToken(word) && NAMING.has(part));
62
+ }
63
+ const NAMING = new Set(['noun', 'adj', 'num']);
64
+ function isCapitalizedWord(word) {
65
+ const firstLetter = word.match(/[\p{L}]/u)?.[0];
66
+ return Boolean(firstLetter) && firstLetter === firstLetter?.toUpperCase();
67
+ }
68
+ export function uniqueStrings(values) {
69
+ return [...new Set(values)];
70
+ }
@@ -0,0 +1,28 @@
1
+ import type { VectorHit, VectorIndex } from '../vector/types.ts';
2
+ import type { RagScopeFilters } from './diversity.ts';
3
+ import type { RagDocumentRef } from './target.ts';
4
+ export type RagEmbedFn = (texts: string[]) => Promise<number[][]>;
5
+ export type RagRetrievalDeps = {
6
+ readonly index: VectorIndex;
7
+ readonly embed: RagEmbedFn;
8
+ };
9
+ export type RagRetrievalQuery = RagScopeFilters & {
10
+ readonly query: string;
11
+ readonly limit?: number;
12
+ readonly documentFirst?: boolean;
13
+ readonly chunkBudgetTokens?: number;
14
+ readonly coverage?: boolean;
15
+ readonly perDocChunkCap?: number;
16
+ };
17
+ export type RagKnowledgeQuery = {
18
+ readonly query: string;
19
+ readonly chatId: string;
20
+ readonly documents: ReadonlyArray<RagDocumentRef>;
21
+ readonly liveSourceIds?: ReadonlyArray<string>;
22
+ readonly scopeDocumentIds?: ReadonlyArray<string>;
23
+ };
24
+ export type RagKnowledgeResult = {
25
+ readonly hits: ReadonlyArray<VectorHit>;
26
+ readonly targetDocumentId: string | null;
27
+ readonly searchedCount: number;
28
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ import type { RagSource } from './sources.ts';
2
+ type WebRagSource = RagSource & {
3
+ readonly url: string;
4
+ };
5
+ export declare const WEB_TOOLS: string[];
6
+ export declare function webSourcesFromToolResult(result: unknown): WebRagSource[];
7
+ export declare function withoutDataChannel(result: unknown): unknown;
8
+ export {};
@@ -0,0 +1,41 @@
1
+ import { MAX_RAG_SOURCES_PER_CHUNK, MAX_RAG_SOURCE_URL_CHARS, RAG_SOURCE_EXCERPT_CHARS } from "../../../../../schema/qvac.js";
2
+ export const WEB_TOOLS = ['web_search', 'web_fetch'];
3
+ export function webSourcesFromToolResult(result) {
4
+ const results = structuredResults(result);
5
+ const records = [];
6
+ for (const entry of results) {
7
+ if (records.length >= MAX_RAG_SOURCES_PER_CHUNK)
8
+ break;
9
+ if (typeof entry?.url !== 'string' || entry.url.length === 0)
10
+ continue;
11
+ if (entry.url.length > MAX_RAG_SOURCE_URL_CHARS)
12
+ continue;
13
+ records.push({
14
+ documentId: null,
15
+ title: typeof entry.title === 'string' && entry.title ? entry.title : entry.url,
16
+ chunkIndex: records.length,
17
+ excerpt: (typeof entry.content === 'string' ? entry.content : '').slice(0, RAG_SOURCE_EXCERPT_CHARS),
18
+ attachmentId: null,
19
+ artifactId: null,
20
+ score: 0,
21
+ url: entry.url
22
+ });
23
+ }
24
+ return records;
25
+ }
26
+ export function withoutDataChannel(result) {
27
+ if (result && typeof result === 'object' && 'data' in result) {
28
+ const { data: _data, ...rest } = result;
29
+ return rest;
30
+ }
31
+ return result;
32
+ }
33
+ function structuredResults(result) {
34
+ if (!result || typeof result !== 'object')
35
+ return [];
36
+ const data = result.data;
37
+ if (!data || typeof data !== 'object')
38
+ return [];
39
+ const results = data.results;
40
+ return Array.isArray(results) ? results : [];
41
+ }
@@ -0,0 +1 @@
1
+ export declare function isWholeDocumentQuery(query: string): boolean;