@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,4 @@
1
+ export { isAudioAttachment as isAudioFile } from './core/audio-attachment.ts';
2
+ export { AUDIO_EXTENSIONS } from '../schema/helpers.js';
3
+ export { wavDurationSeconds } from './wav-duration.ts';
4
+ export declare const MAX_AUDIO_ATTACHMENT_BYTES: number;
@@ -0,0 +1,4 @@
1
+ export { isAudioAttachment as isAudioFile } from "./core/audio-attachment.js";
2
+ export { AUDIO_EXTENSIONS } from '../schema/helpers.js';
3
+ export { wavDurationSeconds } from "./wav-duration.js";
4
+ export const MAX_AUDIO_ATTACHMENT_BYTES = 25 * 1024 * 1024;
@@ -0,0 +1,5 @@
1
+ export declare function isDefaultChatTitle(title: string | null | undefined): boolean;
2
+ export declare function buildTitlePrompt(input: string): string;
3
+ export declare function normalizeModelTitle(raw: string): string | null;
4
+ export declare function parseTitleResponse(raw: string): string | null;
5
+ export declare function deriveChatTitle(content: string): string | null;
@@ -0,0 +1,58 @@
1
+ import { unwrap } from 'asenion';
2
+ const DEFAULT_TITLES = new Set(['New Chat', 'General']);
3
+ const MAX_TITLE_WORDS = 6;
4
+ const DERIVED_TITLE_WORDS = 3;
5
+ const MAX_TITLE_LENGTH = 60;
6
+ export function isDefaultChatTitle(title) {
7
+ return DEFAULT_TITLES.has((title ?? '').trim());
8
+ }
9
+ const TITLE_INSTRUCTION = 'Generate a short, descriptive title of 3 to 6 words for a conversation that begins with the ' +
10
+ 'message below. Name the conversation; do not answer it.';
11
+ export function buildTitlePrompt(input) {
12
+ return `${TITLE_INSTRUCTION}\n\nMessage:\n${input}`;
13
+ }
14
+ export function normalizeModelTitle(raw) {
15
+ const firstLine = raw
16
+ .split(/\r?\n/)
17
+ .map((line) => line.trim())
18
+ .find(Boolean);
19
+ if (!firstLine)
20
+ return null;
21
+ const unlabeled = firstLine.replace(/^title\s*[:\-–]\s*/i, '');
22
+ const unquoted = unwrap(unlabeled)
23
+ .replace(/^["'`]+|["'`]+$/g, '')
24
+ .trim();
25
+ const words = unquoted.split(/\s+/).filter(Boolean).slice(0, MAX_TITLE_WORDS);
26
+ if (words.length === 0)
27
+ return null;
28
+ const title = words
29
+ .join(' ')
30
+ .replace(/[.,;:!?]+$/, '')
31
+ .trim()
32
+ .slice(0, MAX_TITLE_LENGTH)
33
+ .trim();
34
+ return title || null;
35
+ }
36
+ export function parseTitleResponse(raw) {
37
+ const trimmed = raw.trim();
38
+ if (trimmed.startsWith('{')) {
39
+ try {
40
+ const parsed = JSON.parse(trimmed);
41
+ return typeof parsed.title === 'string' ? normalizeModelTitle(parsed.title) : null;
42
+ }
43
+ catch {
44
+ }
45
+ }
46
+ return normalizeModelTitle(trimmed);
47
+ }
48
+ export function deriveChatTitle(content) {
49
+ const words = content
50
+ .replace(/[`*_#[\]()]/g, ' ')
51
+ .split(/\s+/)
52
+ .map((word) => word.replace(/^[^\p{L}\p{N}]+|[^\p{L}\p{N}]+$/gu, ''))
53
+ .filter(Boolean)
54
+ .slice(0, DERIVED_TITLE_WORDS);
55
+ if (words.length === 0)
56
+ return null;
57
+ return words.join(' ').slice(0, MAX_TITLE_LENGTH);
58
+ }
@@ -0,0 +1,25 @@
1
+ import ReadyResource from 'ready-resource';
2
+ import type { Capabilities } from './api/index.ts';
3
+ import type { CapabilityHandlers } from '../spec/capabilities.d.ts';
4
+ import type { Logger } from '../index.ts';
5
+ import { type EngineSpec } from './spec-loader.ts';
6
+ import { type Transport } from '@qvac/harness/rpc';
7
+ export interface ClientOptions {
8
+ logger?: Logger | null;
9
+ spec?: () => Promise<EngineSpec>;
10
+ handlers?: Partial<CapabilityHandlers>;
11
+ }
12
+ export interface Client extends Capabilities {
13
+ }
14
+ export declare class Client extends ReadyResource {
15
+ private readonly _transport;
16
+ private readonly _log;
17
+ private readonly _spec;
18
+ private readonly _handlers;
19
+ private readonly _watches;
20
+ private _stream;
21
+ constructor(transport: Transport, { logger, spec, handlers }?: ClientOptions);
22
+ _open(): Promise<void>;
23
+ private _reconnecting;
24
+ _close(): Promise<void>;
25
+ }
@@ -0,0 +1,53 @@
1
+ import ReadyResource from 'ready-resource';
2
+ import reconnectingWatch from "./reconnecting-watch.js";
3
+ import { openLocalEngineSpec } from "./spec-loader.js";
4
+ import { settleOnClose } from '@qvac/harness/rpc';
5
+ export class Client extends ReadyResource {
6
+ _transport;
7
+ _log;
8
+ _spec;
9
+ _handlers;
10
+ _watches;
11
+ _stream;
12
+ constructor(transport, { logger = null, spec = openLocalEngineSpec, handlers } = {}) {
13
+ super();
14
+ this._transport = transport;
15
+ this._log = logger;
16
+ this._spec = spec;
17
+ this._handlers = handlers;
18
+ this._watches = new Set();
19
+ this._stream = null;
20
+ }
21
+ async _open() {
22
+ this._stream = await this._transport();
23
+ const { bindApi, engineClient, HRPC } = await this._spec();
24
+ const rpc = settleOnClose(new HRPC(this._stream));
25
+ const declined = { storeIdentityPhrase: () => ({ ok: false }) };
26
+ bindApi(rpc, { ...declined, ...this._handlers });
27
+ const capabilities = engineClient(rpc);
28
+ const modelDownloadsWatch = this._reconnecting(capabilities.modelDownloadsWatch, 'model-download');
29
+ const modelCatalogWatch = this._reconnecting(capabilities.modelCatalogWatch, 'model-catalog');
30
+ Object.assign(this, capabilities, { modelCatalogWatch, modelDownloadsWatch });
31
+ this._log?.info('lifecycle', 'client open');
32
+ }
33
+ _reconnecting(open, scope) {
34
+ return (input) => {
35
+ const watch = reconnectingWatch(() => open(input), (error) => this._log?.warn(scope, 'watch disconnected — reopening', error));
36
+ this._watches.add(watch);
37
+ watch.on('close', () => this._watches.delete(watch));
38
+ return watch;
39
+ };
40
+ }
41
+ async _close() {
42
+ for (const watch of this._watches)
43
+ watch.destroy();
44
+ this._watches.clear();
45
+ const stream = this._stream;
46
+ if (stream && !stream.destroyed) {
47
+ const closed = new Promise((resolve) => stream.on('close', resolve));
48
+ stream.destroy();
49
+ await closed;
50
+ }
51
+ this._log?.info('lifecycle', 'client closed');
52
+ }
53
+ }
@@ -0,0 +1,9 @@
1
+ import type { AbortSignal } from 'bare-abort-controller';
2
+ export type ConvertInput = {
3
+ readonly bytes: Uint8Array;
4
+ readonly fileName: string;
5
+ readonly to: string;
6
+ readonly signal?: AbortSignal;
7
+ };
8
+ export declare function convert(input: ConvertInput): Promise<Uint8Array>;
9
+ export declare function convertToText(input: ConvertInput): Promise<string>;
@@ -0,0 +1,62 @@
1
+ import b4a from 'b4a';
2
+ import { randomBytes } from 'crypto';
3
+ import fs from 'fs';
4
+ import os from 'os';
5
+ import path from 'path';
6
+ import { convertInWorker } from "./worker.js";
7
+ const ZIP_SIGNATURE = 0x04034b50;
8
+ const EOCD_SIGNATURE = 0x06054b50;
9
+ const EOCD_SIZE = 22;
10
+ const EOCD_SCAN = 65_535 + EOCD_SIZE;
11
+ export async function convert(input) {
12
+ assertIntactZip(input.bytes);
13
+ const base = path.join(os.tmpdir(), `qvac-collabora-${randomBytes(8).toString('hex')}`);
14
+ const src = `${base}${sourceExtension(input.fileName)}`;
15
+ const out = `${base}.${input.to}`;
16
+ try {
17
+ await fs.promises.writeFile(src, input.bytes);
18
+ await convertInWorker({ src, out, format: input.to }, input.signal);
19
+ return await fs.promises.readFile(out);
20
+ }
21
+ finally {
22
+ await unlinkQuiet(src);
23
+ await unlinkQuiet(out);
24
+ }
25
+ }
26
+ export async function convertToText(input) {
27
+ const bytes = await convert(input);
28
+ return stripBom(b4a.toString(bytes, 'utf8'));
29
+ }
30
+ function assertIntactZip(bytes) {
31
+ const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
32
+ if (bytes.byteLength < EOCD_SIZE || view.getUint32(0, true) !== ZIP_SIGNATURE)
33
+ return;
34
+ const eocd = findEocd(view);
35
+ if (eocd === -1)
36
+ throw new Error('truncated document: the zip central directory is missing');
37
+ const directoryEnd = view.getUint32(eocd + 16, true) + view.getUint32(eocd + 12, true);
38
+ if (directoryEnd > eocd)
39
+ throw new Error('truncated document: zip central directory is cut off');
40
+ }
41
+ function findEocd(view) {
42
+ const from = Math.max(0, view.byteLength - EOCD_SCAN);
43
+ for (let at = view.byteLength - EOCD_SIZE; at >= from; at--) {
44
+ if (view.getUint32(at, true) === EOCD_SIGNATURE)
45
+ return at;
46
+ }
47
+ return -1;
48
+ }
49
+ function sourceExtension(fileName) {
50
+ const ext = path.extname(fileName).toLowerCase();
51
+ return ext || '.doc';
52
+ }
53
+ function stripBom(text) {
54
+ return text.charCodeAt(0) === 0xfeff ? text.slice(1) : text;
55
+ }
56
+ async function unlinkQuiet(file) {
57
+ try {
58
+ await fs.promises.unlink(file);
59
+ }
60
+ catch {
61
+ }
62
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,44 @@
1
+ import { asHostJob } from "./protocol.js";
2
+ async function main() {
3
+ const self = Bare.Thread.self;
4
+ if (!self)
5
+ throw new Error('collabora entry loaded on the main thread');
6
+ const { default: Channel } = await import('bare-channel');
7
+ const port = Channel.from(handleFrom(self.data)).connect();
8
+ const convert = await load();
9
+ for (;;) {
10
+ const job = asHostJob(await port.read());
11
+ if (!job)
12
+ break;
13
+ if (typeof convert === 'string') {
14
+ port.write({ id: job.id, error: convert });
15
+ break;
16
+ }
17
+ port.write(run(convert, job));
18
+ }
19
+ await port.close();
20
+ }
21
+ async function load() {
22
+ try {
23
+ const { Document } = await import('bare-collabora');
24
+ return (job) => void new Document(job.src).saveAs(job.out, job.format);
25
+ }
26
+ catch (error) {
27
+ return `the document engine failed to load: ${error.message}`;
28
+ }
29
+ }
30
+ function run(convert, job) {
31
+ try {
32
+ convert(job);
33
+ return { id: job.id, ok: true };
34
+ }
35
+ catch (error) {
36
+ return { id: job.id, error: error.message };
37
+ }
38
+ }
39
+ function handleFrom(data) {
40
+ if (typeof data === 'object' && data !== null && 'handle' in data)
41
+ return data.handle;
42
+ throw new Error('collabora worker started without a channel handle');
43
+ }
44
+ await main();
@@ -0,0 +1,15 @@
1
+ export type HostJob = {
2
+ readonly id: number;
3
+ readonly src: string;
4
+ readonly out: string;
5
+ readonly format: string;
6
+ };
7
+ export type WorkerReply = {
8
+ readonly id: number;
9
+ readonly ok: true;
10
+ } | {
11
+ readonly id: number;
12
+ readonly error: string;
13
+ };
14
+ export declare function asWorkerReply(value: unknown): WorkerReply | null;
15
+ export declare function asHostJob(value: unknown): HostJob | null;
@@ -0,0 +1,24 @@
1
+ export function asWorkerReply(value) {
2
+ if (typeof value !== 'object' || value === null || !('id' in value))
3
+ return null;
4
+ const id = value.id;
5
+ if (typeof id !== 'number')
6
+ return null;
7
+ if ('ok' in value && value.ok === true)
8
+ return { id, ok: true };
9
+ if ('error' in value && typeof value.error === 'string')
10
+ return { id, error: value.error };
11
+ return null;
12
+ }
13
+ export function asHostJob(value) {
14
+ if (typeof value !== 'object' || value === null)
15
+ return null;
16
+ if (!('id' in value && 'src' in value && 'out' in value && 'format' in value))
17
+ return null;
18
+ const { id, src, out, format } = value;
19
+ if (typeof id !== 'number')
20
+ return null;
21
+ if (typeof src !== 'string' || typeof out !== 'string' || typeof format !== 'string')
22
+ return null;
23
+ return { id, src, out, format };
24
+ }
@@ -0,0 +1,5 @@
1
+ import type { AbortSignal } from 'bare-abort-controller';
2
+ import { type HostJob } from './protocol.ts';
3
+ export type ConvertJob = Omit<HostJob, 'id'>;
4
+ export declare function convertInWorker(job: ConvertJob, signal?: AbortSignal): Promise<void>;
5
+ export declare function closeCollaboraWorker(): void;
@@ -0,0 +1,111 @@
1
+ import process from 'process';
2
+ import ScopeLock from 'scope-lock';
3
+ import safetyCatch from 'safety-catch';
4
+ import { fileURLToPath } from 'url';
5
+ import { asWorkerReply } from "./protocol.js";
6
+ const DEADLINE_MS = 60_000;
7
+ const lock = new ScopeLock();
8
+ let active = null;
9
+ export async function convertInWorker(job, signal) {
10
+ await lock.lock();
11
+ try {
12
+ const worker = active ?? (active = await spawn());
13
+ const id = worker.nextId++;
14
+ worker.link.write({ id, ...job });
15
+ await settle(worker, id, signal);
16
+ }
17
+ finally {
18
+ lock.unlock();
19
+ }
20
+ }
21
+ export function closeCollaboraWorker() {
22
+ if (!active)
23
+ return;
24
+ active.link.kill();
25
+ active = null;
26
+ }
27
+ async function settle(worker, id, signal) {
28
+ const deadline = timeout(deadlineMs());
29
+ const cancel = cancellation(signal);
30
+ try {
31
+ const landed = reply(worker, id).catch((error) => {
32
+ abandon(worker);
33
+ throw error;
34
+ });
35
+ const outcome = await Promise.race([landed, deadline.expired, cancel.cancelled]);
36
+ if (typeof outcome === 'string') {
37
+ abandon(worker);
38
+ throw new Error(outcome === 'deadline' ? 'the document engine stopped responding' : 'conversion cancelled');
39
+ }
40
+ if (outcome.error)
41
+ throw new Error(outcome.error);
42
+ }
43
+ finally {
44
+ deadline.clear();
45
+ cancel.clear();
46
+ }
47
+ }
48
+ async function reply(worker, id) {
49
+ const message = asWorkerReply(await worker.link.read());
50
+ if (!message)
51
+ throw new Error('the document engine closed unexpectedly');
52
+ if (message.id !== id)
53
+ throw new Error('the document engine answered a different conversion');
54
+ return 'error' in message ? { error: message.error } : {};
55
+ }
56
+ function abandon(worker) {
57
+ if (active === worker)
58
+ active = null;
59
+ worker.link.kill();
60
+ }
61
+ async function spawn() {
62
+ if (typeof Bare === 'undefined')
63
+ throw new Error('the document engine needs the Bare runtime');
64
+ const { default: Channel } = await import('bare-channel');
65
+ const channel = new Channel();
66
+ const thread = new Bare.Thread(entry(), { data: { handle: channel.handle } });
67
+ const port = channel.connect();
68
+ return {
69
+ nextId: 1,
70
+ link: {
71
+ read: () => port.read(),
72
+ write: (job) => void port.write(job),
73
+ kill() {
74
+ try {
75
+ thread.terminate();
76
+ }
77
+ catch (error) {
78
+ safetyCatch(error);
79
+ }
80
+ port.close().catch(safetyCatch);
81
+ }
82
+ }
83
+ };
84
+ }
85
+ function entry() {
86
+ return (process.env.QVAC_COLLABORA_WORKER_ENTRY ||
87
+ fileURLToPath(new URL('./entry.ts', import.meta.url).href));
88
+ }
89
+ function deadlineMs() {
90
+ const ms = Number(process.env.QVAC_COLLABORA_TIMEOUT_MS);
91
+ return ms > 0 ? ms : DEADLINE_MS;
92
+ }
93
+ function timeout(ms) {
94
+ let timer;
95
+ const expired = new Promise((resolve) => {
96
+ timer = setTimeout(() => resolve('deadline'), ms);
97
+ });
98
+ return { expired, clear: () => clearTimeout(timer) };
99
+ }
100
+ function cancellation(signal) {
101
+ if (!signal)
102
+ return { cancelled: new Promise(() => { }), clear: () => { } };
103
+ if (signal.aborted)
104
+ return { cancelled: Promise.resolve('aborted'), clear: () => { } };
105
+ let onAbort = () => { };
106
+ const cancelled = new Promise((resolve) => {
107
+ onAbort = () => resolve('aborted');
108
+ signal.addEventListener('abort', onAbort);
109
+ });
110
+ return { cancelled, clear: () => signal.removeEventListener('abort', onAbort) };
111
+ }
@@ -0,0 +1,30 @@
1
+ import type { AssistantChunk } from '../spec/hyperschema/types.d.ts';
2
+ export declare const COMPACTION_KEEP_TURNS = 1;
3
+ export declare const COMPACTION_TURN_PREFIX = "[Summary of the earlier conversation in this chat, written by another model. Treat it as established context, not as a new request.]";
4
+ export declare function compactionTurn(summary: string): string;
5
+ export declare function foldReducesPrompt(folded: ReadonlyArray<{
6
+ readonly content: string;
7
+ }>, summary: string): boolean;
8
+ export declare function canCompact(ctxSize: number | undefined): boolean;
9
+ export declare function buildCompactionPrompt(turns: ReadonlyArray<{
10
+ role: string;
11
+ content: string;
12
+ }>, hasPriorSummary: boolean): string;
13
+ export declare function parseCompactionSummary(text: string): string | null;
14
+ export interface CompactionBoundary {
15
+ throughId: string;
16
+ foldedTurns: number;
17
+ }
18
+ export declare function compactionBoundary(chunks: ReadonlyArray<AssistantChunk>, keepTurns?: number): CompactionBoundary | null;
19
+ export declare function lastCompactedThroughId(chunks: ReadonlyArray<AssistantChunk>): string | null;
20
+ export interface FoldedChunks {
21
+ chunks: ReadonlyArray<AssistantChunk>;
22
+ summary: string | null;
23
+ }
24
+ export declare function foldCompactedChunks(chunks: ReadonlyArray<AssistantChunk>): FoldedChunks;
25
+ export declare const COMPACTION_TRIGGER_RATIO = 0.95;
26
+ export declare const COMPACTION_TRIGGER_RATIO_SMALL = 0.9;
27
+ export declare const COMPACTION_SMALL_CTX_SIZE = 4096;
28
+ export declare function compactionTriggerRatio(ctxSize: number): number;
29
+ export declare function nearContextLimit(cacheTokens: number | undefined, ctxSize: number | undefined): boolean;
30
+ export declare function isContextOverflowFailure(message: string | undefined): boolean;
@@ -0,0 +1,95 @@
1
+ import { CONTEXT_OVERFLOW_MESSAGE } from '@qvac/harness';
2
+ import { COMPACTION_MIN_CTX_SIZE } from "./model-context.js";
3
+ export const COMPACTION_KEEP_TURNS = 1;
4
+ export const COMPACTION_TURN_PREFIX = '[Summary of the earlier conversation in this chat, written by another model. Treat it as established context, not as a new request.]';
5
+ export function compactionTurn(summary) {
6
+ return `${COMPACTION_TURN_PREFIX}\n\n${summary}`;
7
+ }
8
+ export function foldReducesPrompt(folded, summary) {
9
+ const replaced = folded.reduce((total, turn) => total + turn.content.length, 0);
10
+ return compactionTurn(summary).length < replaced;
11
+ }
12
+ export function canCompact(ctxSize) {
13
+ return (ctxSize ?? 0) >= COMPACTION_MIN_CTX_SIZE;
14
+ }
15
+ export function buildCompactionPrompt(turns, hasPriorSummary) {
16
+ const transcript = turns
17
+ .map((turn) => `${turn.role === 'user' ? 'User' : 'Assistant'}: ${turn.content}`)
18
+ .join('\n\n');
19
+ return [
20
+ 'Summarize the conversation below so another model can continue it without seeing it.',
21
+ hasPriorSummary
22
+ ? 'The conversation opens with an earlier summary. Carry everything from it that is still true into your new summary — it is discarded after this, so whatever you leave out is lost — and correct it where the later turns disagree.'
23
+ : null,
24
+ 'Output exactly these four sections, in this order, keeping every heading even when it has nothing under it:',
25
+ '## Objective\n## Facts and decisions\n## State\n## Next steps',
26
+ 'Rules: at most three bullets per section, at most fifteen words per bullet. Preserve names, numbers, file paths and identifiers exactly. Write "(none)" under a heading with nothing to say. Do not continue the conversation, do not answer anything asked in it, and do not mention summarizing.',
27
+ '<conversation>',
28
+ transcript,
29
+ '</conversation>'
30
+ ]
31
+ .filter((part) => part !== null)
32
+ .join('\n\n');
33
+ }
34
+ export function parseCompactionSummary(text) {
35
+ const summary = text.trim();
36
+ return summary.length > 0 ? summary : null;
37
+ }
38
+ export function compactionBoundary(chunks, keepTurns = COMPACTION_KEEP_TURNS) {
39
+ const userTurns = [];
40
+ for (let index = 0; index < chunks.length; index++) {
41
+ if (chunks[index].userMessage)
42
+ userTurns.push(index);
43
+ }
44
+ if (userTurns.length <= keepTurns)
45
+ return null;
46
+ const firstKept = userTurns[userTurns.length - keepTurns];
47
+ let from = firstKept;
48
+ for (let index = firstKept - 1; index > userTurns[userTurns.length - keepTurns - 1]; index--) {
49
+ if (chunks[index].attachment && !chunks[index].runId)
50
+ from = index;
51
+ }
52
+ const boundary = chunks[from - 1];
53
+ if (!boundary)
54
+ return null;
55
+ return { throughId: boundary.id, foldedTurns: userTurns.length - keepTurns };
56
+ }
57
+ function newestCompaction(chunks) {
58
+ let newest = null;
59
+ for (const chunk of chunks) {
60
+ if (chunk.compaction && (!newest || chunk.seq > newest.seq))
61
+ newest = chunk;
62
+ }
63
+ return newest;
64
+ }
65
+ export function lastCompactedThroughId(chunks) {
66
+ return newestCompaction(chunks)?.compaction?.throughId ?? null;
67
+ }
68
+ export function foldCompactedChunks(chunks) {
69
+ const compaction = newestCompaction(chunks)?.compaction;
70
+ if (!compaction)
71
+ return { chunks, summary: null };
72
+ const through = chunks.find((chunk) => chunk.id === compaction.throughId);
73
+ if (!through)
74
+ return { chunks, summary: null };
75
+ return {
76
+ chunks: chunks.filter((chunk) => chunk.seq > through.seq && !chunk.compaction),
77
+ summary: compaction.summary
78
+ };
79
+ }
80
+ export const COMPACTION_TRIGGER_RATIO = 0.95;
81
+ export const COMPACTION_TRIGGER_RATIO_SMALL = 0.9;
82
+ export const COMPACTION_SMALL_CTX_SIZE = 4_096;
83
+ export function compactionTriggerRatio(ctxSize) {
84
+ return ctxSize <= COMPACTION_SMALL_CTX_SIZE
85
+ ? COMPACTION_TRIGGER_RATIO_SMALL
86
+ : COMPACTION_TRIGGER_RATIO;
87
+ }
88
+ export function nearContextLimit(cacheTokens, ctxSize) {
89
+ if (!cacheTokens || !ctxSize)
90
+ return false;
91
+ return cacheTokens >= ctxSize * compactionTriggerRatio(ctxSize);
92
+ }
93
+ export function isContextOverflowFailure(message) {
94
+ return message === CONTEXT_OVERFLOW_MESSAGE;
95
+ }
@@ -0,0 +1,4 @@
1
+ export { COMPACTION_MIN_CTX_SIZE, contextOptionsForModel, DEFAULT_CONTEXT_SIZE, defaultContextForModel, formatTokenCount, MODEL_CONTEXT_TARGET, type ModelContextTarget, maxContextForModel, modelContextTargetForPlatform } from './model-context.ts';
2
+ export declare const CANCELED_CHAT_MESSAGE = "Stopped the current run. Send a follow-up to steer the next step.";
3
+ export declare const HOMEBREW_BIN_DIRS: ReadonlyArray<string>;
4
+ export declare const SAFE_BIN_NAME: RegExp;
@@ -0,0 +1,4 @@
1
+ export { COMPACTION_MIN_CTX_SIZE, contextOptionsForModel, DEFAULT_CONTEXT_SIZE, defaultContextForModel, formatTokenCount, MODEL_CONTEXT_TARGET, maxContextForModel, modelContextTargetForPlatform } from "./model-context.js";
2
+ export const CANCELED_CHAT_MESSAGE = 'Stopped the current run. Send a follow-up to steer the next step.';
3
+ export const HOMEBREW_BIN_DIRS = ['/opt/homebrew/bin', '/usr/local/bin'];
4
+ export const SAFE_BIN_NAME = /^[A-Za-z0-9._-]+$/;
@@ -0,0 +1,15 @@
1
+ import type { AssistantCreateAgentRequest, AssistantUpdateAgentRequest } from '../../spec/hyperschema/types.d.ts';
2
+ import type { QvacAgent } from '../../spec/mesh/hyperschema/types.d.ts';
3
+ import type { Mesh } from './mesh.ts';
4
+ type CreateAgentInput = AssistantCreateAgentRequest;
5
+ type UpdateAgentInput = AssistantUpdateAgentRequest;
6
+ export declare function listAgents(store: Mesh): Promise<QvacAgent[]>;
7
+ export declare function getAgent(store: Mesh, id: string): Promise<QvacAgent | null>;
8
+ export declare function isOrphaned(store: Mesh, agent: QvacAgent): Promise<boolean>;
9
+ export declare function liveProviderIds(store: Mesh): Promise<Set<string>>;
10
+ export declare function mustGetAgent(store: Mesh, id: string): Promise<QvacAgent>;
11
+ export declare function mustGetActiveAgent(store: Mesh, id: string): Promise<QvacAgent>;
12
+ export declare function createAgent(store: Mesh, input: CreateAgentInput): Promise<QvacAgent>;
13
+ export declare function updateAgent(store: Mesh, input: UpdateAgentInput): Promise<QvacAgent>;
14
+ export declare function deleteAgent(store: Mesh, deviceId: Buffer | null, id: string): Promise<QvacAgent>;
15
+ export {};