@qvac/core 0.0.0 → 0.1.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 (589) 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 +47257 -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/helpers.d.ts +28 -0
  542. package/dist-lib/schema/helpers.js +176 -0
  543. package/dist-lib/schema/local.d.ts +2 -0
  544. package/dist-lib/schema/local.js +133 -0
  545. package/dist-lib/schema/qvac.d.ts +22 -0
  546. package/dist-lib/schema/qvac.js +722 -0
  547. package/dist-lib/schema/vendor.d.ts +5 -0
  548. package/dist-lib/spec/bind.d.ts +2 -0
  549. package/dist-lib/spec/bind.js +520 -0
  550. package/dist-lib/spec/calls.d.ts +3 -0
  551. package/dist-lib/spec/calls.js +129 -0
  552. package/dist-lib/spec/capabilities.d.ts +263 -0
  553. package/dist-lib/spec/config/hyperconf/index.d.ts +15 -0
  554. package/dist-lib/spec/config/hyperconf/index.js +24 -0
  555. package/dist-lib/spec/config/hyperconf/package.json +3 -0
  556. package/dist-lib/spec/config/hyperschema/index.js +81 -0
  557. package/dist-lib/spec/config/hyperschema/schema.json +19 -0
  558. package/dist-lib/spec/hrpc/hrpc.json +1500 -0
  559. package/dist-lib/spec/hrpc/index.d.ts +3 -0
  560. package/dist-lib/spec/hrpc/index.js +1545 -0
  561. package/dist-lib/spec/hrpc/messages.d.ts +4 -0
  562. package/dist-lib/spec/hrpc/messages.js +8373 -0
  563. package/dist-lib/spec/hyperschema/index.d.ts +20 -0
  564. package/dist-lib/spec/hyperschema/index.js +8373 -0
  565. package/dist-lib/spec/hyperschema/schema.json +6202 -0
  566. package/dist-lib/spec/hyperschema/types.d.ts +1545 -0
  567. package/dist-lib/spec/index.d.ts +36 -0
  568. package/dist-lib/spec/index.js +6 -0
  569. package/dist-lib/spec/local/hyperdb/db.json +186 -0
  570. package/dist-lib/spec/local/hyperdb/index.d.ts +9 -0
  571. package/dist-lib/spec/local/hyperdb/index.js +855 -0
  572. package/dist-lib/spec/local/hyperdb/messages.js +2189 -0
  573. package/dist-lib/spec/local/hyperschema/index.js +1208 -0
  574. package/dist-lib/spec/local/hyperschema/schema.json +639 -0
  575. package/dist-lib/spec/local/hyperschema/types.d.ts +159 -0
  576. package/dist-lib/spec/mesh/hyperdb/db.json +702 -0
  577. package/dist-lib/spec/mesh/hyperdb/index.d.ts +9 -0
  578. package/dist-lib/spec/mesh/hyperdb/index.js +2260 -0
  579. package/dist-lib/spec/mesh/hyperdb/messages.js +7453 -0
  580. package/dist-lib/spec/mesh/hyperdispatch/dispatch.json +174 -0
  581. package/dist-lib/spec/mesh/hyperdispatch/index.d.ts +13 -0
  582. package/dist-lib/spec/mesh/hyperdispatch/index.js +566 -0
  583. package/dist-lib/spec/mesh/hyperdispatch/messages.js +5713 -0
  584. package/dist-lib/spec/mesh/hyperschema/index.d.ts +14 -0
  585. package/dist-lib/spec/mesh/hyperschema/index.js +5713 -0
  586. package/dist-lib/spec/mesh/hyperschema/schema.json +3142 -0
  587. package/dist-lib/spec/mesh/hyperschema/types.d.ts +754 -0
  588. package/ducks.png +0 -0
  589. package/package.json +336 -1
@@ -0,0 +1,79 @@
1
+ import { randomId } from "./id.js";
2
+ const CHAT_GROUPS = '@qvac/chat-groups';
3
+ const ACTIVE_CHAT_GROUPS = '@qvac/active-chat-groups';
4
+ const NAME_MAX_LENGTH = 100;
5
+ export function byGroupOrder(a, b) {
6
+ return b.createdAt - a.createdAt || (a.id < b.id ? -1 : 1);
7
+ }
8
+ export async function listChatGroupsIn(snap) {
9
+ const groups = await snap.find(ACTIVE_CHAT_GROUPS).toArray();
10
+ return groups.sort(byGroupOrder);
11
+ }
12
+ export async function listChatGroups(store) {
13
+ const snap = store.view.snapshot();
14
+ try {
15
+ return await listChatGroupsIn(snap);
16
+ }
17
+ finally {
18
+ await snap.close();
19
+ }
20
+ }
21
+ export async function getChatGroup(store, id) {
22
+ const snap = store.view.snapshot();
23
+ try {
24
+ const group = await snap.get(CHAT_GROUPS, { id });
25
+ return group;
26
+ }
27
+ finally {
28
+ await snap.close();
29
+ }
30
+ }
31
+ export async function mustGetChatGroup(store, id) {
32
+ const group = await getChatGroup(store, id);
33
+ if (!group)
34
+ throw new Error(`chat group not found: ${id}`);
35
+ return group;
36
+ }
37
+ export async function mustGetActiveChatGroup(store, id) {
38
+ const group = await mustGetChatGroup(store, id);
39
+ if (group.deletedAt)
40
+ throw new Error(`chat group not found: ${id}`);
41
+ return group;
42
+ }
43
+ function assertGroupName(name) {
44
+ const trimmed = name.trim();
45
+ if (!trimmed)
46
+ throw new Error('chat group name is required');
47
+ if (trimmed.length > NAME_MAX_LENGTH) {
48
+ throw new Error(`chat group name exceeds ${NAME_MAX_LENGTH} characters`);
49
+ }
50
+ return trimmed;
51
+ }
52
+ export async function createChatGroup(store, input) {
53
+ const now = Date.now();
54
+ const group = {
55
+ id: randomId(),
56
+ name: assertGroupName(input.name),
57
+ createdAt: now,
58
+ updatedAt: now,
59
+ deletedAt: undefined
60
+ };
61
+ await store.dispatch('put-chat-group', { group });
62
+ return group;
63
+ }
64
+ async function patchChatGroup(store, id, patch) {
65
+ const current = await mustGetActiveChatGroup(store, id);
66
+ const updated = { ...current, ...patch, updatedAt: Date.now() };
67
+ await store.dispatch('put-chat-group', { group: updated });
68
+ return updated;
69
+ }
70
+ export async function renameChatGroup(store, id, name) {
71
+ return patchChatGroup(store, id, { name: assertGroupName(name) });
72
+ }
73
+ export async function deleteChatGroup(store, id) {
74
+ const current = await mustGetChatGroup(store, id);
75
+ const now = Date.now();
76
+ const deleted = { ...current, deletedAt: now, updatedAt: now };
77
+ await store.dispatch('put-chat-group', { group: deleted });
78
+ return deleted;
79
+ }
@@ -0,0 +1,17 @@
1
+ import type { AbortSignal } from 'bare-abort-controller';
2
+ import { type ChatListing } from './chat.ts';
3
+ import type { Mesh } from './mesh.ts';
4
+ export type ChatSearchMatch = 'title' | 'content';
5
+ export type ChatSearchHit = {
6
+ readonly chat: ChatListing;
7
+ readonly match: ChatSearchMatch;
8
+ readonly snippet: string;
9
+ readonly chunkId: string;
10
+ readonly runId: string;
11
+ };
12
+ export type ChatSearchInput = {
13
+ readonly query: string;
14
+ readonly limit?: number;
15
+ readonly signal?: AbortSignal;
16
+ };
17
+ export declare function searchChats(store: Mesh, input: ChatSearchInput): Promise<ReadonlyArray<ChatSearchHit>>;
@@ -0,0 +1,199 @@
1
+ import { diagramRepairAccepted, diagramRepairLinks, isDiagramRepairPrompt } from '@qvac/harness/lib/diagram-repair.ts';
2
+ import { chunkTypeOrdinal } from '../../schema/helpers.js';
3
+ import { enrichAll, lastActivity, liveGroupIds } from "./chat.js";
4
+ import { foldSearchText } from "./search-fold.js";
5
+ const ACTIVE_CHATS = '@qvac/active-chats';
6
+ const CHUNKS_BY_TYPE = '@qvac/chunks-by-type';
7
+ const DEFAULT_LIMIT = 100;
8
+ const PER_CHAT_LIMIT = 20;
9
+ const SNIPPET_PAD = 40;
10
+ export async function searchChats(store, input) {
11
+ const needle = foldSearchText(input.query.trim());
12
+ if (!needle)
13
+ return [];
14
+ const limit = input.limit || DEFAULT_LIMIT;
15
+ const snap = store.view.snapshot();
16
+ try {
17
+ const rows = sortChatsNewestFirst(await snap.find(ACTIVE_CHATS).toArray());
18
+ const [activity, groups] = await Promise.all([lastActivity(snap), liveGroupIds(snap)]);
19
+ const chats = enrichAll(rows, activity, groups);
20
+ const titled = [];
21
+ const untitled = [];
22
+ for (const chat of chats) {
23
+ if (foldSearchText(chat.title).includes(needle))
24
+ titled.push(chat);
25
+ else
26
+ untitled.push(chat);
27
+ }
28
+ const hits = [];
29
+ for (const chat of titled) {
30
+ hits.push(titleHit(chat));
31
+ if (hits.length >= limit)
32
+ return hits;
33
+ }
34
+ for (const chat of [...titled, ...untitled]) {
35
+ if (input.signal?.aborted)
36
+ break;
37
+ hits.push(...(await contentHits(snap, chat, needle, remainingCap(hits.length, limit))));
38
+ if (hits.length >= limit)
39
+ break;
40
+ }
41
+ return hits;
42
+ }
43
+ finally {
44
+ await snap.close();
45
+ }
46
+ }
47
+ function remainingCap(used, limit) {
48
+ return Math.min(PER_CHAT_LIMIT, limit - used);
49
+ }
50
+ function titleHit(chat) {
51
+ return { chat, match: 'title', snippet: '', chunkId: '', runId: '' };
52
+ }
53
+ async function contentHits(snap, chat, needle, cap) {
54
+ if (cap <= 0)
55
+ return [];
56
+ const [users, content, attachments, requests, statuses] = await Promise.all([
57
+ chunksOfType(snap, chat.id, 'user-message'),
58
+ chunksOfType(snap, chat.id, 'content'),
59
+ chunksOfType(snap, chat.id, 'attachment'),
60
+ chunksOfType(snap, chat.id, 'run-request'),
61
+ chunksOfType(snap, chat.id, 'run-status')
62
+ ]);
63
+ const repairs = diagramRepairLinks([...users, ...requests], (chunk) => {
64
+ return chunk.userMessage?.text ?? null;
65
+ });
66
+ const hiddenPromptIds = new Set(users.filter((user) => isDiagramRepairPrompt(user.userMessage?.text ?? '')).map((u) => u.id));
67
+ const repairText = (target) => content
68
+ .filter((chunk) => chunk.runId === target)
69
+ .map((chunk) => chunk.content?.text ?? '')
70
+ .join('');
71
+ const completedRunIds = new Set(statuses
72
+ .filter((status) => status.runStatus?.state === 'completed' && status.runId)
73
+ .map((status) => status.runId));
74
+ const hiddenRunIds = new Set();
75
+ const redactedRunIds = new Set();
76
+ for (const repair of repairs) {
77
+ const parentRunId = requests.find((request) => request.id === repair.parentId)?.runId;
78
+ if (completedRunIds.has(repair.runId) && diagramRepairAccepted(repairText(repair.runId))) {
79
+ if (parentRunId)
80
+ hiddenRunIds.add(parentRunId);
81
+ }
82
+ else {
83
+ hiddenRunIds.add(repair.runId);
84
+ if (parentRunId)
85
+ redactedRunIds.add(parentRunId);
86
+ }
87
+ }
88
+ const matches = [
89
+ ...matchUserMessages(users, needle, cap, hiddenPromptIds),
90
+ ...matchJoinedContent(content, needle, cap, { hidden: hiddenRunIds, redacted: redactedRunIds }),
91
+ ...matchAttachments(attachments, needle, cap)
92
+ ];
93
+ return matches
94
+ .sort((left, right) => left.seq - right.seq)
95
+ .slice(0, cap)
96
+ .map((found) => ({
97
+ chat,
98
+ match: 'content',
99
+ snippet: found.snippet,
100
+ chunkId: found.chunkId,
101
+ runId: found.runId
102
+ }));
103
+ }
104
+ async function chunksOfType(snap, chatId, type) {
105
+ const ordinal = chunkTypeOrdinal(type);
106
+ return snap
107
+ .find(CHUNKS_BY_TYPE, {
108
+ gte: { chatId, type: ordinal },
109
+ lte: { chatId, type: ordinal }
110
+ })
111
+ .toArray();
112
+ }
113
+ function matchUserMessages(chunks, needle, cap, hiddenIds) {
114
+ const matches = [];
115
+ for (const chunk of chunks) {
116
+ if (matches.length >= cap)
117
+ break;
118
+ const text = chunk.userMessage?.text;
119
+ if (!text || hiddenIds.has(chunk.id))
120
+ continue;
121
+ const found = locate(text, needle);
122
+ if (!found)
123
+ continue;
124
+ matches.push({ seq: chunk.seq, snippet: found, chunkId: chunk.id, runId: chunk.runId ?? '' });
125
+ }
126
+ return matches;
127
+ }
128
+ function matchJoinedContent(chunks, needle, cap, runs) {
129
+ const byRun = new Map();
130
+ const order = [];
131
+ for (const chunk of chunks) {
132
+ const runId = chunk.runId;
133
+ if (!runId || runs.hidden.has(runId))
134
+ continue;
135
+ const group = byRun.get(runId);
136
+ if (group) {
137
+ group.push(chunk);
138
+ continue;
139
+ }
140
+ byRun.set(runId, [chunk]);
141
+ order.push(runId);
142
+ }
143
+ const matches = [];
144
+ for (const runId of order) {
145
+ if (matches.length >= cap)
146
+ break;
147
+ const group = byRun.get(runId);
148
+ const first = group?.[0];
149
+ if (!group || !first)
150
+ continue;
151
+ const content = group.map((chunk) => chunk.content?.text ?? '').join('');
152
+ const text = runs.redacted.has(runId) ? withoutMermaidDiagrams(content) : content;
153
+ const found = locate(text, needle);
154
+ if (!found)
155
+ continue;
156
+ matches.push({ seq: first.seq, snippet: found, chunkId: first.id, runId });
157
+ }
158
+ return matches;
159
+ }
160
+ function withoutMermaidDiagrams(content) {
161
+ return content.replace(/^[ \t]{0,3}(`{3,}|~{3,})[ \t]*mermaid[ \t]*\r?\n[\s\S]*?(?:^[ \t]{0,3}\1[ \t]*$|(?![\s\S]))/gm, '');
162
+ }
163
+ function matchAttachments(chunks, needle, cap) {
164
+ const matches = [];
165
+ for (const chunk of chunks) {
166
+ if (matches.length >= cap)
167
+ break;
168
+ const attachment = chunk.attachment;
169
+ if (!attachment || (attachment.deletedAt ?? 0) > 0)
170
+ continue;
171
+ const found = locate(attachment.fileName, needle);
172
+ if (!found)
173
+ continue;
174
+ matches.push({ seq: chunk.seq, snippet: found, chunkId: chunk.id, runId: chunk.runId ?? '' });
175
+ }
176
+ return matches;
177
+ }
178
+ function locate(text, needle) {
179
+ if (!text)
180
+ return null;
181
+ const index = foldSearchText(text).indexOf(needle);
182
+ if (index < 0)
183
+ return null;
184
+ return snippetAround(text, index, needle.length);
185
+ }
186
+ function snippetAround(text, index, needleLength) {
187
+ const start = Math.max(0, index - SNIPPET_PAD);
188
+ const end = Math.min(text.length, index + needleLength + SNIPPET_PAD);
189
+ const body = text.slice(start, end).replace(/\s+/g, ' ').trim();
190
+ const prefix = start > 0 ? '...' : '';
191
+ const suffix = end < text.length ? '...' : '';
192
+ return `${prefix}${body}${suffix}`;
193
+ }
194
+ function sortChatsNewestFirst(chats) {
195
+ return [...chats].sort((left, right) => chatRecency(right) - chatRecency(left));
196
+ }
197
+ function chatRecency(chat) {
198
+ return chat.updatedAt || chat.createdAt;
199
+ }
@@ -0,0 +1,37 @@
1
+ import type HyperDB from 'hyperdb';
2
+ import type { QvacChat, QvacChatGroup } from '../../spec/mesh/hyperschema/types.d.ts';
3
+ import type { Mesh } from './mesh.ts';
4
+ export interface ChatListing extends QvacChat {
5
+ readonly lastActivityAt: number;
6
+ }
7
+ export interface Sidebar {
8
+ readonly chats: ChatListing[];
9
+ readonly groups: QvacChatGroup[];
10
+ }
11
+ export declare function liveGroupIds(snap: HyperDB): Promise<Set<string>>;
12
+ export declare function lastActivity(snap: HyperDB): Promise<Map<string, number>>;
13
+ export declare function enrichChat(store: Mesh, chat: QvacChat): Promise<ChatListing>;
14
+ export declare function enrichIn(snap: HyperDB, chat: QvacChat): Promise<ChatListing>;
15
+ export declare function enrichAll(chats: ReadonlyArray<QvacChat>, activity: Map<string, number>, liveGroups: Set<string>): ChatListing[];
16
+ export declare function listSidebar(store: Mesh): Promise<Sidebar>;
17
+ export declare function listChats(store: Mesh): Promise<ChatListing[]>;
18
+ export declare function getChat(store: Mesh, id: string): Promise<QvacChat | null>;
19
+ export declare function mustGetChat(store: Mesh, id: string): Promise<QvacChat>;
20
+ export declare function mustGetActiveChat(store: Mesh, id: string): Promise<QvacChat>;
21
+ export declare function mustGetActiveChatListing(store: Mesh, id: string): Promise<ChatListing>;
22
+ export declare function buildChat(input: {
23
+ agentId: string;
24
+ title: string;
25
+ }): QvacChat;
26
+ export declare function createChat(store: Mesh, input: {
27
+ agentId: string;
28
+ title: string;
29
+ }): Promise<ChatListing>;
30
+ export declare function renameChat(store: Mesh, id: string, title: string): Promise<ChatListing>;
31
+ export declare function setChatRagEnabled(store: Mesh, id: string, ragEnabled: boolean): Promise<ChatListing>;
32
+ export declare function setChatGroup(store: Mesh, id: string, groupId: string | null | undefined): Promise<ChatListing>;
33
+ export declare function setChatWebSearchEnabled(store: Mesh, id: string, webSearchEnabled: boolean): Promise<ChatListing>;
34
+ export declare function removeChatKnowledge(store: Mesh, chatId: string, at: number): Promise<void>;
35
+ export declare function removeChatAttachments(store: Mesh, deviceId: Buffer, chatId: string, at: number): Promise<void>;
36
+ export declare function deleteChat(store: Mesh, deviceId: Buffer | null, id: string): Promise<ChatListing>;
37
+ export declare function softDeleteChatsForAgent(store: Mesh, deviceId: Buffer | null, agentId: string): Promise<void>;
@@ -0,0 +1,196 @@
1
+ import { listChatGroupsIn, mustGetActiveChatGroup } from "./chat-group.js";
2
+ import { appendChunk, listChunks, updateOp } from "./chunk.js";
3
+ import { randomId } from "./id.js";
4
+ import { assertRemovableAt } from "./files/index.js";
5
+ const CHATS = '@qvac/chats';
6
+ const CHAT_GROUPS = '@qvac/chat-groups';
7
+ const ACTIVE_CHATS = '@qvac/active-chats';
8
+ const ACTIVE_CHATS_BY_AGENT = '@qvac/active-chats-by-agent';
9
+ const ACTIVE_CHAT_GROUPS = '@qvac/active-chat-groups';
10
+ const CHUNK_COUNTERS = '@qvac/chunk-counters';
11
+ const TERMINAL_RUN_STATES = new Set(['completed', 'failed', 'canceled']);
12
+ function byChatOrder(a, b) {
13
+ return a.lastActivityAt - b.lastActivityAt || (a.id < b.id ? -1 : 1);
14
+ }
15
+ export async function liveGroupIds(snap) {
16
+ const groups = await snap.find(ACTIVE_CHAT_GROUPS).toArray();
17
+ return new Set(groups.map((group) => group.id));
18
+ }
19
+ export async function lastActivity(snap) {
20
+ const counters = await snap.find(CHUNK_COUNTERS).toArray();
21
+ return new Map(counters.map((counter) => [counter.chatId, counter.lastActivityAt ?? 0]));
22
+ }
23
+ function listingOf(chat, inLiveGroup, activityAt) {
24
+ return {
25
+ ...chat,
26
+ groupId: inLiveGroup ? chat.groupId : undefined,
27
+ lastActivityAt: activityAt || chat.createdAt
28
+ };
29
+ }
30
+ export async function enrichChat(store, chat) {
31
+ const snap = store.view.snapshot();
32
+ try {
33
+ return await enrichIn(snap, chat);
34
+ }
35
+ finally {
36
+ await snap.close();
37
+ }
38
+ }
39
+ export async function enrichIn(snap, chat) {
40
+ const [group, counter] = await Promise.all([
41
+ chat.groupId
42
+ ? snap.get(CHAT_GROUPS, { id: chat.groupId })
43
+ : Promise.resolve(null),
44
+ snap.get(CHUNK_COUNTERS, { chatId: chat.id })
45
+ ]);
46
+ return listingOf(chat, Boolean(group) && !group?.deletedAt, counter?.lastActivityAt);
47
+ }
48
+ export function enrichAll(chats, activity, liveGroups) {
49
+ return chats.map((chat) => listingOf(chat, Boolean(chat.groupId && liveGroups.has(chat.groupId)), activity.get(chat.id)));
50
+ }
51
+ export async function listSidebar(store) {
52
+ const snap = store.view.snapshot();
53
+ try {
54
+ const chats = await snap.find(ACTIVE_CHATS).toArray();
55
+ const [activity, groups] = await Promise.all([lastActivity(snap), listChatGroupsIn(snap)]);
56
+ const live = new Set(groups.map((group) => group.id));
57
+ return { chats: enrichAll(chats, activity, live).sort(byChatOrder), groups };
58
+ }
59
+ finally {
60
+ await snap.close();
61
+ }
62
+ }
63
+ export async function listChats(store) {
64
+ return (await listSidebar(store)).chats;
65
+ }
66
+ export async function getChat(store, id) {
67
+ const snap = store.view.snapshot();
68
+ try {
69
+ const chat = await snap.get(CHATS, { id });
70
+ return chat;
71
+ }
72
+ finally {
73
+ await snap.close();
74
+ }
75
+ }
76
+ export async function mustGetChat(store, id) {
77
+ const chat = await getChat(store, id);
78
+ if (!chat)
79
+ throw new Error(`chat not found: ${id}`);
80
+ return chat;
81
+ }
82
+ export async function mustGetActiveChat(store, id) {
83
+ const chat = await mustGetChat(store, id);
84
+ if (chat.deletedAt)
85
+ throw new Error(`chat not found: ${id}`);
86
+ return chat;
87
+ }
88
+ export async function mustGetActiveChatListing(store, id) {
89
+ return enrichChat(store, await mustGetActiveChat(store, id));
90
+ }
91
+ export function buildChat(input) {
92
+ const now = Date.now();
93
+ return {
94
+ id: randomId(),
95
+ agentId: input.agentId,
96
+ title: input.title,
97
+ ragEnabled: false,
98
+ webSearchEnabled: true,
99
+ createdAt: now,
100
+ updatedAt: now,
101
+ deletedAt: undefined
102
+ };
103
+ }
104
+ export async function createChat(store, input) {
105
+ const chat = buildChat(input);
106
+ await store.dispatch('put-chat', { chat });
107
+ return listingOf(chat, false, undefined);
108
+ }
109
+ async function patchChat(store, id, patch) {
110
+ const current = await mustGetActiveChat(store, id);
111
+ const updated = { ...current, ...patch, updatedAt: Date.now() };
112
+ await store.dispatch('put-chat', { chat: updated });
113
+ return enrichChat(store, updated);
114
+ }
115
+ export function renameChat(store, id, title) {
116
+ return patchChat(store, id, { title });
117
+ }
118
+ export function setChatRagEnabled(store, id, ragEnabled) {
119
+ return patchChat(store, id, { ragEnabled });
120
+ }
121
+ export async function setChatGroup(store, id, groupId) {
122
+ if (groupId)
123
+ await mustGetActiveChatGroup(store, groupId);
124
+ return patchChat(store, id, { groupId: groupId || undefined });
125
+ }
126
+ export function setChatWebSearchEnabled(store, id, webSearchEnabled) {
127
+ return patchChat(store, id, { webSearchEnabled });
128
+ }
129
+ async function cancelActiveRuns(store, deviceId, chatId) {
130
+ const statuses = await listChunks(store, { chatId, type: 'run-status' });
131
+ const terminal = new Set(statuses.filter((c) => TERMINAL_RUN_STATES.has(c.runStatus?.state ?? '')).map((c) => c.runId));
132
+ const requests = await listChunks(store, { chatId, type: 'run-request' });
133
+ const runIds = new Set(requests.map((c) => c.runId).filter((id) => Boolean(id)));
134
+ const batch = store.batch();
135
+ for (const runId of runIds) {
136
+ if (terminal.has(runId))
137
+ continue;
138
+ await appendChunk(store, {
139
+ chatId,
140
+ runId,
141
+ type: 'run-status',
142
+ runStatus: { state: 'canceled' },
143
+ originDeviceId: deviceId
144
+ }, batch);
145
+ }
146
+ await batch.flush();
147
+ }
148
+ export async function removeChatKnowledge(store, chatId, at) {
149
+ assertRemovableAt(at);
150
+ const batch = store.batch();
151
+ for (const row of await store.files.listKnowledge(chatId)) {
152
+ batch.dispatch('remove-knowledge', { knowledgeId: row.id, at });
153
+ }
154
+ await batch.flush();
155
+ }
156
+ export async function removeChatAttachments(store, deviceId, chatId, at) {
157
+ const batch = store.batch();
158
+ for (const chunk of await listChunks(store, { chatId, type: 'attachment' })) {
159
+ const attachment = chunk.attachment;
160
+ if (!attachment || attachment.deletedAt)
161
+ continue;
162
+ if (!chunk.originDeviceId.equals(deviceId))
163
+ continue;
164
+ const tombstone = { ...attachment, deletedAt: at };
165
+ batch.dispatch('update-chunk', updateOp(chunk, { id: chunk.id, attachment: tombstone }));
166
+ }
167
+ await batch.flush();
168
+ }
169
+ export async function deleteChat(store, deviceId, id) {
170
+ const current = await mustGetChat(store, id);
171
+ const now = Date.now();
172
+ if (deviceId) {
173
+ await cancelActiveRuns(store, deviceId, id);
174
+ await removeChatAttachments(store, deviceId, id, now);
175
+ }
176
+ await removeChatKnowledge(store, id, now);
177
+ const deleted = { ...current, deletedAt: now, updatedAt: now };
178
+ await store.dispatch('put-chat', { chat: deleted });
179
+ return enrichChat(store, deleted);
180
+ }
181
+ export async function softDeleteChatsForAgent(store, deviceId, agentId) {
182
+ const snap = store.view.snapshot();
183
+ try {
184
+ for await (const chat of snap.find(ACTIVE_CHATS_BY_AGENT, {
185
+ gte: { agentId },
186
+ lte: { agentId }
187
+ })) {
188
+ if (store.closing)
189
+ return;
190
+ await deleteChat(store, deviceId, chat.id);
191
+ }
192
+ }
193
+ finally {
194
+ await snap.close();
195
+ }
196
+ }
@@ -0,0 +1,61 @@
1
+ import type HyperDB from 'hyperdb';
2
+ import type { QvacChunk } from '../../spec/mesh/hyperschema/types.d.ts';
3
+ import type { Mesh, MeshDispatcher } from './mesh.ts';
4
+ type ChunkPayload = Pick<QvacChunk, 'userMessage' | 'content' | 'thinking' | 'toolCall' | 'toolResult' | 'attachment' | 'approvalRequest' | 'runStatus' | 'runRequest' | 'sources' | 'compaction'>;
5
+ type AppendChunkInput = Pick<QvacChunk, 'chatId' | 'runId' | 'type' | 'originDeviceId' | 'parentId' | 'effect' | 'intent' | 'display' | 'rawCall'> & ChunkPayload & {
6
+ id?: string;
7
+ };
8
+ type UpdateChunkInput = Pick<QvacChunk, 'id' | 'runStatus' | 'attachment'>;
9
+ export declare const HISTORY_CHUNK_TYPES: QvacChunk['type'][];
10
+ type MediaKind = 'audio' | 'image' | 'video' | 'other';
11
+ type AttachmentOrigin = 'uploaded' | 'generated';
12
+ type ListAttachmentsByKindInput = {
13
+ kind: MediaKind;
14
+ origin?: AttachmentOrigin;
15
+ fromCreatedAt?: number;
16
+ reverse?: boolean;
17
+ limit?: number;
18
+ };
19
+ export type ReadChunk = QvacChunk & {
20
+ readonly attachment?: (NonNullable<QvacChunk['attachment']> & {
21
+ readonly url?: string;
22
+ }) | null;
23
+ };
24
+ type ListChunksInput = {
25
+ chatId: string;
26
+ type?: QvacChunk['type'];
27
+ types?: ReadonlyArray<QvacChunk['type']>;
28
+ fromSeq?: number;
29
+ reverse?: boolean;
30
+ limit?: number;
31
+ };
32
+ export declare function findChunksOfType(snap: HyperDB, chatId: string, type: QvacChunk['type'], { fromSeq, toSeq }?: {
33
+ fromSeq?: number;
34
+ toSeq?: number;
35
+ }): Promise<QvacChunk[]>;
36
+ export declare function listChunks(store: Mesh, { chatId, type, types, fromSeq, reverse, limit }: ListChunksInput): Promise<ReadChunk[]>;
37
+ export declare function listAttachmentsByKind(store: Mesh, { kind, origin, fromCreatedAt, reverse, limit }: ListAttachmentsByKindInput): Promise<ReadChunk[]>;
38
+ export declare function getChunk(store: Mesh, id: string): Promise<QvacChunk | null>;
39
+ export declare function appendChunk(store: Mesh, { id, chatId, runId, type, originDeviceId, parentId, effect, intent, display, rawCall, ...payload }: AppendChunkInput, into?: MeshDispatcher): Promise<{
40
+ id: string;
41
+ }>;
42
+ export declare function updateChunk(store: Mesh, { id, runStatus, attachment }: UpdateChunkInput): Promise<QvacChunk>;
43
+ export declare function updateOp(chunk: QvacChunk, { id, runStatus, attachment }: UpdateChunkInput): {
44
+ id: string;
45
+ runStatus: import("../../spec/index").QvacChunkContentRunStatus;
46
+ updatedAt: number;
47
+ attachment?: undefined;
48
+ } | {
49
+ id: string;
50
+ attachment: import("../../spec/index").QvacChunkContentAttachment;
51
+ updatedAt: number;
52
+ runStatus?: undefined;
53
+ };
54
+ export declare function resolveApproval(store: Mesh, { id, approved, scope, expiresAt, agentId }: {
55
+ id: string;
56
+ approved: boolean;
57
+ scope?: 'once' | 'always';
58
+ expiresAt?: number;
59
+ agentId?: string;
60
+ }): Promise<QvacChunk>;
61
+ export {};