@nocobase/app-plugin-agents 1.0.0-beta.29 → 2.0.0-beta.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 (300) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/README.md +8 -19
  3. package/dist/client/api/client.d.ts +2 -2
  4. package/dist/client/api/client.d.ts.map +1 -1
  5. package/dist/client/api/client.js +2 -2
  6. package/dist/client/api/client.js.map +1 -1
  7. package/dist/client/api/runners.d.ts +2 -2
  8. package/dist/client/api/runners.d.ts.map +1 -1
  9. package/dist/client/api/runners.js +5 -2
  10. package/dist/client/api/runners.js.map +1 -1
  11. package/dist/client/chat/api.d.ts +1 -1
  12. package/dist/client/chat/api.d.ts.map +1 -1
  13. package/dist/client/chat/api.js +6 -2
  14. package/dist/client/chat/api.js.map +1 -1
  15. package/dist/client/chat/coalesced-invalidation.d.ts +3 -8
  16. package/dist/client/chat/coalesced-invalidation.d.ts.map +1 -1
  17. package/dist/client/chat/coalesced-invalidation.js +16 -21
  18. package/dist/client/chat/coalesced-invalidation.js.map +1 -1
  19. package/dist/client/chat/controller.d.ts +31 -7
  20. package/dist/client/chat/controller.d.ts.map +1 -1
  21. package/dist/client/chat/controller.js +616 -120
  22. package/dist/client/chat/controller.js.map +1 -1
  23. package/dist/client/chat/provider.d.ts.map +1 -1
  24. package/dist/client/chat/provider.js +7 -4
  25. package/dist/client/chat/provider.js.map +1 -1
  26. package/dist/client/chat/submissions.d.ts +2 -0
  27. package/dist/client/chat/submissions.d.ts.map +1 -1
  28. package/dist/client/chat/submissions.js +1 -0
  29. package/dist/client/chat/submissions.js.map +1 -1
  30. package/dist/client/chat/use-chat.d.ts +4 -2
  31. package/dist/client/chat/use-chat.d.ts.map +1 -1
  32. package/dist/client/chat/use-chat.js +84 -55
  33. package/dist/client/chat/use-chat.js.map +1 -1
  34. package/dist/client/components/ag-tag-tones.d.ts +7 -0
  35. package/dist/client/components/ag-tag-tones.d.ts.map +1 -0
  36. package/dist/client/components/ag-tag-tones.js +14 -0
  37. package/dist/client/components/ag-tag-tones.js.map +1 -0
  38. package/dist/client/components/ag-tag.d.ts +2 -1
  39. package/dist/client/components/ag-tag.d.ts.map +1 -1
  40. package/dist/client/components/ag-tag.js +1 -13
  41. package/dist/client/components/ag-tag.js.map +1 -1
  42. package/dist/client/components/quota-status.d.ts +2 -1
  43. package/dist/client/components/quota-status.d.ts.map +1 -1
  44. package/dist/client/components/quota-status.js +2 -2
  45. package/dist/client/components/quota-status.js.map +1 -1
  46. package/dist/client/components/ui/pagination.d.ts +6 -0
  47. package/dist/client/components/ui/pagination.d.ts.map +1 -0
  48. package/dist/client/components/ui/pagination.js +13 -0
  49. package/dist/client/components/ui/pagination.js.map +1 -0
  50. package/dist/client/hooks/use-notify.d.ts.map +1 -1
  51. package/dist/client/hooks/use-notify.js +4 -0
  52. package/dist/client/hooks/use-notify.js.map +1 -1
  53. package/dist/client/hooks/use-realtime-topic.d.ts +1 -1
  54. package/dist/client/hooks/use-realtime-topic.d.ts.map +1 -1
  55. package/dist/client/hooks/use-realtime-topic.js +8 -4
  56. package/dist/client/hooks/use-realtime-topic.js.map +1 -1
  57. package/dist/client/kit.d.ts.map +1 -1
  58. package/dist/client/kit.js +30 -5
  59. package/dist/client/kit.js.map +1 -1
  60. package/dist/client/locales/de-DE.d.ts.map +1 -1
  61. package/dist/client/locales/de-DE.js +26 -10
  62. package/dist/client/locales/de-DE.js.map +1 -1
  63. package/dist/client/locales/en-US.d.ts +11 -0
  64. package/dist/client/locales/en-US.d.ts.map +1 -1
  65. package/dist/client/locales/en-US.js +21 -10
  66. package/dist/client/locales/en-US.js.map +1 -1
  67. package/dist/client/locales/es-ES.d.ts.map +1 -1
  68. package/dist/client/locales/es-ES.js +26 -10
  69. package/dist/client/locales/es-ES.js.map +1 -1
  70. package/dist/client/locales/fr-FR.d.ts.map +1 -1
  71. package/dist/client/locales/fr-FR.js +26 -10
  72. package/dist/client/locales/fr-FR.js.map +1 -1
  73. package/dist/client/locales/id-ID.d.ts.map +1 -1
  74. package/dist/client/locales/id-ID.js +26 -10
  75. package/dist/client/locales/id-ID.js.map +1 -1
  76. package/dist/client/locales/ja-JP.d.ts.map +1 -1
  77. package/dist/client/locales/ja-JP.js +26 -10
  78. package/dist/client/locales/ja-JP.js.map +1 -1
  79. package/dist/client/locales/pt-BR.d.ts.map +1 -1
  80. package/dist/client/locales/pt-BR.js +26 -10
  81. package/dist/client/locales/pt-BR.js.map +1 -1
  82. package/dist/client/locales/runtimes.en-US.d.ts +5 -0
  83. package/dist/client/locales/runtimes.en-US.d.ts.map +1 -1
  84. package/dist/client/locales/runtimes.en-US.js +5 -0
  85. package/dist/client/locales/runtimes.en-US.js.map +1 -1
  86. package/dist/client/locales/runtimes.zh-CN.d.ts.map +1 -1
  87. package/dist/client/locales/runtimes.zh-CN.js +5 -0
  88. package/dist/client/locales/runtimes.zh-CN.js.map +1 -1
  89. package/dist/client/locales/vi-VN.d.ts.map +1 -1
  90. package/dist/client/locales/vi-VN.js +26 -10
  91. package/dist/client/locales/vi-VN.js.map +1 -1
  92. package/dist/client/locales/zh-CN.d.ts.map +1 -1
  93. package/dist/client/locales/zh-CN.js +21 -10
  94. package/dist/client/locales/zh-CN.js.map +1 -1
  95. package/dist/client/locales/zh-TW.d.ts.map +1 -1
  96. package/dist/client/locales/zh-TW.js +26 -10
  97. package/dist/client/locales/zh-TW.js.map +1 -1
  98. package/dist/client/model-suggestion.d.ts +2 -0
  99. package/dist/client/model-suggestion.d.ts.map +1 -1
  100. package/dist/client/model-suggestion.js +27 -2
  101. package/dist/client/model-suggestion.js.map +1 -1
  102. package/dist/client/pages/agents/agent-dialog.d.ts.map +1 -1
  103. package/dist/client/pages/agents/agent-dialog.js +10 -8
  104. package/dist/client/pages/agents/agent-dialog.js.map +1 -1
  105. package/dist/client/pages/agents/available-models-drawer.d.ts.map +1 -1
  106. package/dist/client/pages/agents/available-models-drawer.js +2 -1
  107. package/dist/client/pages/agents/available-models-drawer.js.map +1 -1
  108. package/dist/client/pages/agents/good-at-templates.d.ts +8 -0
  109. package/dist/client/pages/agents/good-at-templates.d.ts.map +1 -0
  110. package/dist/client/pages/agents/good-at-templates.js +29 -0
  111. package/dist/client/pages/agents/good-at-templates.js.map +1 -0
  112. package/dist/client/pages/runtimes/runner-cells.d.ts.map +1 -1
  113. package/dist/client/pages/runtimes/runner-cells.js +3 -1
  114. package/dist/client/pages/runtimes/runner-cells.js.map +1 -1
  115. package/dist/client/pages/runtimes/runner-pagination.d.ts +15 -0
  116. package/dist/client/pages/runtimes/runner-pagination.d.ts.map +1 -0
  117. package/dist/client/pages/runtimes/runner-pagination.js +9 -0
  118. package/dist/client/pages/runtimes/runner-pagination.js.map +1 -0
  119. package/dist/client/pages/runtimes/runner-runs.d.ts +3 -2
  120. package/dist/client/pages/runtimes/runner-runs.d.ts.map +1 -1
  121. package/dist/client/pages/runtimes/runner-runs.js +38 -15
  122. package/dist/client/pages/runtimes/runner-runs.js.map +1 -1
  123. package/dist/client/pages/runtimes/runner-sheet.js +1 -1
  124. package/dist/client/pages/runtimes/runner-sheet.js.map +1 -1
  125. package/dist/client/pages/runtimes/runner-workspaces.d.ts.map +1 -1
  126. package/dist/client/pages/runtimes/runner-workspaces.js +7 -3
  127. package/dist/client/pages/runtimes/runner-workspaces.js.map +1 -1
  128. package/dist/client/runs/refresh-run.d.ts +4 -0
  129. package/dist/client/runs/refresh-run.d.ts.map +1 -0
  130. package/dist/client/runs/refresh-run.js +8 -0
  131. package/dist/client/runs/refresh-run.js.map +1 -0
  132. package/dist/client/runs/run-hooks.d.ts.map +1 -1
  133. package/dist/client/runs/run-hooks.js +2 -1
  134. package/dist/client/runs/run-hooks.js.map +1 -1
  135. package/dist/database/migrations/.manifest.json +8 -0
  136. package/dist/database/migrations/202611010003_ag_runner_run_history_index.d.ts +4 -0
  137. package/dist/database/migrations/202611010003_ag_runner_run_history_index.d.ts.map +1 -0
  138. package/dist/database/migrations/202611010003_ag_runner_run_history_index.js +17 -0
  139. package/dist/database/migrations/202611010003_ag_runner_run_history_index.js.map +1 -0
  140. package/dist/database/migrations/202611070001_ag_conversation_project.d.ts +4 -0
  141. package/dist/database/migrations/202611070001_ag_conversation_project.d.ts.map +1 -0
  142. package/dist/database/migrations/202611070001_ag_conversation_project.js +17 -0
  143. package/dist/database/migrations/202611070001_ag_conversation_project.js.map +1 -0
  144. package/dist/package.json +4 -6
  145. package/dist/server/composition.d.ts +0 -17
  146. package/dist/server/composition.d.ts.map +1 -1
  147. package/dist/server/composition.js +7 -20
  148. package/dist/server/composition.js.map +1 -1
  149. package/dist/server/core/conversations/conversation.service.d.ts.map +1 -1
  150. package/dist/server/core/conversations/conversation.service.js +174 -22
  151. package/dist/server/core/conversations/conversation.service.js.map +1 -1
  152. package/dist/server/core/conversations/conversation.store.d.ts +1 -0
  153. package/dist/server/core/conversations/conversation.store.d.ts.map +1 -1
  154. package/dist/server/core/conversations/conversation.store.js.map +1 -1
  155. package/dist/server/core/conversations/index.d.ts +1 -1
  156. package/dist/server/core/conversations/index.d.ts.map +1 -1
  157. package/dist/server/core/conversations/index.js.map +1 -1
  158. package/dist/server/core/conversations/links.d.ts +3 -0
  159. package/dist/server/core/conversations/links.d.ts.map +1 -1
  160. package/dist/server/core/conversations/links.js +33 -0
  161. package/dist/server/core/conversations/links.js.map +1 -1
  162. package/dist/server/core/conversations/ports.d.ts +14 -0
  163. package/dist/server/core/conversations/ports.d.ts.map +1 -1
  164. package/dist/server/core/runs/claim.d.ts +7 -1
  165. package/dist/server/core/runs/claim.d.ts.map +1 -1
  166. package/dist/server/core/runs/claim.js +69 -17
  167. package/dist/server/core/runs/claim.js.map +1 -1
  168. package/dist/server/core/runs/ports.d.ts +2 -0
  169. package/dist/server/core/runs/ports.d.ts.map +1 -1
  170. package/dist/server/core/runs/ports.js.map +1 -1
  171. package/dist/server/core/runs/run.service.d.ts +6 -1
  172. package/dist/server/core/runs/run.service.d.ts.map +1 -1
  173. package/dist/server/core/runs/run.service.js +29 -1
  174. package/dist/server/core/runs/run.service.js.map +1 -1
  175. package/dist/server/core/runs/run.store.d.ts +1 -1
  176. package/dist/server/core/runs/run.store.d.ts.map +1 -1
  177. package/dist/server/core/runs/run.store.js +1 -1
  178. package/dist/server/core/runs/run.store.js.map +1 -1
  179. package/dist/server/core/runs/runner-view.d.ts +8 -4
  180. package/dist/server/core/runs/runner-view.d.ts.map +1 -1
  181. package/dist/server/core/runs/runner-view.js +89 -32
  182. package/dist/server/core/runs/runner-view.js.map +1 -1
  183. package/dist/server/kernel/events.d.ts +2 -0
  184. package/dist/server/kernel/events.d.ts.map +1 -1
  185. package/dist/server/kernel/events.js.map +1 -1
  186. package/dist/server/locales/de-DE.d.ts.map +1 -1
  187. package/dist/server/locales/de-DE.js +5 -0
  188. package/dist/server/locales/de-DE.js.map +1 -1
  189. package/dist/server/locales/en-US.d.ts +7 -1
  190. package/dist/server/locales/en-US.d.ts.map +1 -1
  191. package/dist/server/locales/en-US.js +5 -0
  192. package/dist/server/locales/en-US.js.map +1 -1
  193. package/dist/server/locales/es-ES.d.ts.map +1 -1
  194. package/dist/server/locales/es-ES.js +5 -0
  195. package/dist/server/locales/es-ES.js.map +1 -1
  196. package/dist/server/locales/fr-FR.d.ts.map +1 -1
  197. package/dist/server/locales/fr-FR.js +5 -0
  198. package/dist/server/locales/fr-FR.js.map +1 -1
  199. package/dist/server/locales/id-ID.d.ts.map +1 -1
  200. package/dist/server/locales/id-ID.js +5 -0
  201. package/dist/server/locales/id-ID.js.map +1 -1
  202. package/dist/server/locales/ja-JP.d.ts.map +1 -1
  203. package/dist/server/locales/ja-JP.js +5 -0
  204. package/dist/server/locales/ja-JP.js.map +1 -1
  205. package/dist/server/locales/pt-BR.d.ts.map +1 -1
  206. package/dist/server/locales/pt-BR.js +5 -0
  207. package/dist/server/locales/pt-BR.js.map +1 -1
  208. package/dist/server/locales/vi-VN.d.ts.map +1 -1
  209. package/dist/server/locales/vi-VN.js +5 -0
  210. package/dist/server/locales/vi-VN.js.map +1 -1
  211. package/dist/server/locales/zh-CN.d.ts +2 -2
  212. package/dist/server/locales/zh-CN.d.ts.map +1 -1
  213. package/dist/server/locales/zh-CN.js +5 -0
  214. package/dist/server/locales/zh-CN.js.map +1 -1
  215. package/dist/server/locales/zh-TW.d.ts.map +1 -1
  216. package/dist/server/locales/zh-TW.js +5 -0
  217. package/dist/server/locales/zh-TW.js.map +1 -1
  218. package/dist/server/online/agent/native/backend.d.ts.map +1 -1
  219. package/dist/server/online/agent/native/backend.js +2 -0
  220. package/dist/server/online/agent/native/backend.js.map +1 -1
  221. package/dist/server/online/agent/native/session.d.ts.map +1 -1
  222. package/dist/server/online/agent/native/session.js +3 -1
  223. package/dist/server/online/agent/native/session.js.map +1 -1
  224. package/dist/server/online/agent/runner/backend.d.ts.map +1 -1
  225. package/dist/server/online/agent/runner/backend.js +21 -9
  226. package/dist/server/online/agent/runner/backend.js.map +1 -1
  227. package/dist/server/online/agent/runner/projection.d.ts +1 -1
  228. package/dist/server/online/agent/runner/projection.d.ts.map +1 -1
  229. package/dist/server/online/agent/runner/projection.js +33 -3
  230. package/dist/server/online/agent/runner/projection.js.map +1 -1
  231. package/dist/server/online/agent/service.d.ts.map +1 -1
  232. package/dist/server/online/agent/service.js +3 -0
  233. package/dist/server/online/agent/service.js.map +1 -1
  234. package/dist/server/online/agent/types.d.ts +3 -0
  235. package/dist/server/online/agent/types.d.ts.map +1 -1
  236. package/dist/server/providers/agents.d.ts +5 -9
  237. package/dist/server/providers/agents.d.ts.map +1 -1
  238. package/dist/server/providers/agents.js +12 -13
  239. package/dist/server/providers/agents.js.map +1 -1
  240. package/dist/server/routes/chat.d.ts.map +1 -1
  241. package/dist/server/routes/chat.js +37 -0
  242. package/dist/server/routes/chat.js.map +1 -1
  243. package/dist/server/routes/runners/admin.d.ts.map +1 -1
  244. package/dist/server/routes/runners/admin.js +16 -7
  245. package/dist/server/routes/runners/admin.js.map +1 -1
  246. package/dist/server/routes/runners/runner.d.ts.map +1 -1
  247. package/dist/server/routes/runners/runner.js +6 -4
  248. package/dist/server/routes/runners/runner.js.map +1 -1
  249. package/dist/server/routes/schemas.d.ts +8 -2
  250. package/dist/server/routes/schemas.d.ts.map +1 -1
  251. package/dist/server/routes/schemas.js +46 -3
  252. package/dist/server/routes/schemas.js.map +1 -1
  253. package/dist/server/tokens.d.ts +1 -2
  254. package/dist/server/tokens.d.ts.map +1 -1
  255. package/dist/server/tokens.js.map +1 -1
  256. package/dist/shared/conversations.d.ts +20 -0
  257. package/dist/shared/conversations.d.ts.map +1 -1
  258. package/dist/shared/conversations.js.map +1 -1
  259. package/dist/shared/runners.d.ts +18 -2
  260. package/dist/shared/runners.d.ts.map +1 -1
  261. package/dist/shared/runners.js +20 -0
  262. package/dist/shared/runners.js.map +1 -1
  263. package/dist/shared/ui-message.d.ts +4 -2
  264. package/dist/shared/ui-message.d.ts.map +1 -1
  265. package/dist/shared/ui-message.js +2 -1
  266. package/dist/shared/ui-message.js.map +1 -1
  267. package/docs/ui-message-clients.md +5 -1
  268. package/docs/ui-messages.md +3 -1
  269. package/docs/vectors-migration.md +91 -0
  270. package/package.json +14 -16
  271. package/skills/nocobase-app-plugin-agents/SKILL.md +1 -1
  272. package/skills/nocobase-app-plugin-agents/references/extension-points.md +0 -1
  273. package/skills/nocobase-app-plugin-agents/references/model-services.md +3 -3
  274. package/skills/nocobase-app-plugin-agents/references/online-agent.md +6 -0
  275. package/skills/nocobase-app-plugin-agents/references/setup-and-config.md +0 -4
  276. package/skills/nocobase-app-plugin-agents/references/verification-and-troubleshooting.md +0 -2
  277. package/dist/server/vectors/index.d.ts +0 -7
  278. package/dist/server/vectors/index.d.ts.map +0 -1
  279. package/dist/server/vectors/index.js +0 -6
  280. package/dist/server/vectors/index.js.map +0 -1
  281. package/dist/server/vectors/naming.d.ts +0 -6
  282. package/dist/server/vectors/naming.d.ts.map +0 -1
  283. package/dist/server/vectors/naming.js +0 -15
  284. package/dist/server/vectors/naming.js.map +0 -1
  285. package/dist/server/vectors/pgvector.d.ts +0 -26
  286. package/dist/server/vectors/pgvector.d.ts.map +0 -1
  287. package/dist/server/vectors/pgvector.js +0 -346
  288. package/dist/server/vectors/pgvector.js.map +0 -1
  289. package/dist/server/vectors/sqlite-vec.d.ts +0 -14
  290. package/dist/server/vectors/sqlite-vec.d.ts.map +0 -1
  291. package/dist/server/vectors/sqlite-vec.js +0 -286
  292. package/dist/server/vectors/sqlite-vec.js.map +0 -1
  293. package/dist/server/vectors/types.d.ts +0 -256
  294. package/dist/server/vectors/types.d.ts.map +0 -1
  295. package/dist/server/vectors/types.js +0 -2
  296. package/dist/server/vectors/types.js.map +0 -1
  297. package/dist/server/vectors/vectors.d.ts +0 -34
  298. package/dist/server/vectors/vectors.d.ts.map +0 -1
  299. package/dist/server/vectors/vectors.js +0 -866
  300. package/dist/server/vectors/vectors.js.map +0 -1
@@ -1,286 +0,0 @@
1
- /**
2
- * The `sqlite-vec` vector store, the default: a SQLite file of its own (`agents.vectors.path`, `storage/vectors.sqlite`
3
- * by default) opened with better-sqlite3 and the sqlite-vec extension, so vectors work with no service to run. It is
4
- * local to the instance: an application running several instances keeps vectors in pgvector instead.
5
- *
6
- * One table per index (`agv_<index>`): `id` text primary key, `embedding` as a float32 blob, `metadata` JSON text, and an
7
- * index on each filterable key's text value; `agv__meta` keeps each index's metric and dimension. A query is exact:
8
- * it filters in its WHERE clause, orders what passes by sqlite-vec's distance and takes `topK`, so a filter always
9
- * applies before the limit.
10
- */
11
- import { mkdirSync } from 'node:fs';
12
- import { createRequire } from 'node:module';
13
- import { dirname, isAbsolute, relative, resolve } from 'node:path';
14
- import { keyOf, tableOf } from './naming.js';
15
- export const SQLITE_VEC = 'sqlite-vec';
16
- /** The file under the application's storage directory when `path` is not set. */
17
- export const SQLITE_VEC_FILE = 'vectors.sqlite';
18
- const DIMENSION_MAX = 16000;
19
- const require = createRequire(import.meta.url);
20
- const META = 'agv__meta';
21
- const quote = (identifier) => `"${identifier.replace(/"/gu, '""')}"`;
22
- /** The text value of a metadata key, as filters compare it (and its index is on). */
23
- const fieldOf = (key) => `cast(json_extract(metadata, '$."${keyOf(key)}"') as text)`;
24
- /** A filter value as the text `fieldOf` answers: SQLite keeps JSON booleans as 1 and 0. */
25
- const textOf = (value) => typeof value === 'boolean' ? (value ? '1' : '0') : String(value);
26
- /** The WHERE condition of a filter, with its parameters. */
27
- export function sqliteWhereOf(filter) {
28
- const parts = [];
29
- const params = [];
30
- for (const [key, value] of Object.entries(filter ?? {})) {
31
- if (typeof value === 'object' && value !== null) {
32
- if (value.in.length === 0) {
33
- parts.push('0');
34
- continue;
35
- }
36
- parts.push(`${fieldOf(key)} in (select value from json_each(?))`);
37
- params.push(JSON.stringify(value.in.map(textOf)));
38
- }
39
- else {
40
- parts.push(`${fieldOf(key)} = ?`);
41
- params.push(textOf(value));
42
- }
43
- }
44
- return { sql: parts.length > 0 ? parts.join(' and ') : '1', params };
45
- }
46
- const blobOf = (vector) => {
47
- const values = new Float32Array(vector.length);
48
- vector.forEach((value, at) => {
49
- if (!Number.isFinite(value))
50
- throw new Error('A vector holds a value that is not a finite number.');
51
- values[at] = value;
52
- });
53
- return Buffer.from(values.buffer);
54
- };
55
- const floatsOf = (value) => Buffer.isBuffer(value)
56
- ? new Float32Array(value.buffer.slice(value.byteOffset, value.byteOffset + value.length))
57
- : null;
58
- function metadataOf(value) {
59
- if (typeof value !== 'string')
60
- return {};
61
- try {
62
- return JSON.parse(value);
63
- }
64
- catch {
65
- return {};
66
- }
67
- }
68
- /** The file of the store: `path` against the application root, else `storage/vectors.sqlite`. */
69
- export function sqliteVecFileOf(context) {
70
- const configured = context.config.path;
71
- return typeof configured === 'string' && configured.trim()
72
- ? resolve(context.paths.root, configured)
73
- : resolve(context.paths.storage, SQLITE_VEC_FILE);
74
- }
75
- /** The file as people see it: relative to the application root when it is inside it. */
76
- function targetOf(file, root) {
77
- const inside = relative(root, file);
78
- return inside && !inside.startsWith('..') && !isAbsolute(inside)
79
- ? inside.split('\\').join('/')
80
- : file;
81
- }
82
- const messageOf = (error) => error instanceof Error ? error.message : String(error);
83
- export function createSqliteVecStore(context) {
84
- const file = sqliteVecFileOf(context);
85
- const metrics = new Map();
86
- let opened = null;
87
- let db = null;
88
- async function open() {
89
- let Database;
90
- let extension;
91
- try {
92
- // better-sqlite3 ships no type declarations; this store needs only the methods `SqliteDatabase` names.
93
- Database = require('better-sqlite3');
94
- extension = await import('sqlite-vec');
95
- }
96
- catch (error) {
97
- throw Object.assign(new Error(messageOf(error)), {
98
- code: 'SQLITE_VEC_UNSUPPORTED',
99
- });
100
- }
101
- let handle;
102
- try {
103
- mkdirSync(dirname(file), { recursive: true });
104
- handle = new Database(file);
105
- handle.pragma('journal_mode = WAL');
106
- handle.pragma('busy_timeout = 5000');
107
- }
108
- catch (error) {
109
- throw Object.assign(new Error(messageOf(error)), {
110
- code: 'SQLITE_VEC_OPEN_FAILED',
111
- });
112
- }
113
- try {
114
- handle.loadExtension(extension.getLoadablePath());
115
- }
116
- catch (error) {
117
- handle.close();
118
- throw Object.assign(new Error(messageOf(error)), {
119
- code: 'SQLITE_VEC_UNSUPPORTED',
120
- });
121
- }
122
- // sqlite-vec has no inner-product distance; the dot product of two float32 blobs, for `ip` indexes.
123
- handle.function('agv_ip', { deterministic: true }, (a, b) => {
124
- const x = floatsOf(a);
125
- const y = floatsOf(b);
126
- if (!x || !y || x.length !== y.length)
127
- return null;
128
- let dot = 0;
129
- for (let at = 0; at < x.length; at += 1)
130
- dot += x[at] * y[at];
131
- return dot;
132
- });
133
- handle.exec(`create table if not exists ${META} (name text primary key, dimension integer not null, metric text not null)`);
134
- db = handle;
135
- return handle;
136
- }
137
- /** The database, opened once; a failed open is tried again next time. */
138
- function database() {
139
- opened ??= open().catch((error) => {
140
- opened = null;
141
- throw error;
142
- });
143
- return opened;
144
- }
145
- async function metricOf(index) {
146
- const table = tableOf(index);
147
- const known = metrics.get(table);
148
- if (known)
149
- return known;
150
- const row = (await database())
151
- .prepare(`select metric from ${META} where name = ?`)
152
- .get(table);
153
- if (!row)
154
- throw new Error(`The vector index ${index} is not there.`);
155
- metrics.set(table, row.metric);
156
- return row.metric;
157
- }
158
- return {
159
- type: SQLITE_VEC,
160
- target: targetOf(file, context.paths.root),
161
- async available() {
162
- try {
163
- await database();
164
- return { ok: true };
165
- }
166
- catch (error) {
167
- const code = error.code;
168
- return {
169
- ok: false,
170
- code: code === 'SQLITE_VEC_OPEN_FAILED'
171
- ? 'SQLITE_VEC_OPEN_FAILED'
172
- : 'SQLITE_VEC_UNSUPPORTED',
173
- message: `sqlite-vec could not open ${file}: ${messageOf(error)}`,
174
- };
175
- }
176
- },
177
- async createIndex(spec) {
178
- const table = tableOf(spec.name);
179
- const dimension = Math.trunc(spec.dimension);
180
- if (!(dimension > 0 && dimension <= DIMENSION_MAX))
181
- throw new Error(`A vector dimension of ${spec.dimension} is not usable.`);
182
- if (!['cosine', 'l2', 'ip'].includes(spec.metric))
183
- throw new Error(`The vector metric ${spec.metric} is not known.`);
184
- const sql = await database();
185
- sql.transaction(() => {
186
- sql.exec(`create table if not exists ${quote(table)} (
187
- id text primary key,
188
- embedding blob not null,
189
- metadata text not null default '{}'
190
- )`);
191
- sql
192
- .prepare(`insert into ${META} (name, dimension, metric) values (?, ?, ?)
193
- on conflict (name) do update set dimension = excluded.dimension, metric = excluded.metric`)
194
- .run(table, dimension, spec.metric);
195
- for (const [at, key] of (spec.filterable ?? []).entries())
196
- sql.exec(`create index if not exists ${quote(`${table}_k${at}`)} on ${quote(table)} (${fieldOf(key)})`);
197
- })();
198
- metrics.set(table, spec.metric);
199
- },
200
- async dropIndex(name) {
201
- const table = tableOf(name);
202
- const sql = await database();
203
- sql.transaction(() => {
204
- sql.exec(`drop table if exists ${quote(table)}`);
205
- sql.prepare(`delete from ${META} where name = ?`).run(table);
206
- })();
207
- metrics.delete(table);
208
- },
209
- async upsert(index, items) {
210
- if (items.length === 0)
211
- return;
212
- const sql = await database();
213
- const insert = sql.prepare(`insert into ${quote(tableOf(index))} (id, embedding, metadata) values (?, ?, ?)
214
- on conflict (id) do update set embedding = excluded.embedding, metadata = excluded.metadata`);
215
- sql.transaction(() => {
216
- for (const item of items)
217
- insert.run(item.id, blobOf(item.vector), JSON.stringify(item.metadata));
218
- })();
219
- },
220
- async update(index, items) {
221
- if (items.length === 0)
222
- return;
223
- const sql = await database();
224
- const update = sql.prepare(`update ${quote(tableOf(index))} set metadata = ? where id = ?`);
225
- sql.transaction(() => {
226
- for (const item of items)
227
- update.run(JSON.stringify(item.metadata), item.id);
228
- })();
229
- },
230
- async query(index, request) {
231
- const table = tableOf(index);
232
- const metric = await metricOf(index);
233
- const topK = Math.max(1, Math.min(Math.trunc(request.topK), 1000));
234
- const where = sqliteWhereOf(request.filter);
235
- const distance = metric === 'cosine'
236
- ? 'vec_distance_cosine(embedding, ?)'
237
- : metric === 'l2'
238
- ? 'vec_distance_l2(embedding, ?)'
239
- : '-agv_ip(embedding, ?)';
240
- const rows = (await database())
241
- .prepare(`select id, ${distance} as distance, metadata
242
- from ${quote(table)}
243
- where ${where.sql}
244
- order by distance
245
- limit ${topK}`)
246
- .all(blobOf(request.vector), ...where.params);
247
- return rows.map((row) => {
248
- const distance = Number(row.distance);
249
- return {
250
- id: row.id,
251
- score: metric === 'cosine' ? 1 - distance : -distance,
252
- metadata: metadataOf(row.metadata),
253
- };
254
- });
255
- },
256
- async delete(index, target) {
257
- const table = quote(tableOf(index));
258
- const sql = await database();
259
- if ('ids' in target) {
260
- if (target.ids.length === 0)
261
- return;
262
- sql
263
- .prepare(`delete from ${table} where id in (select value from json_each(?))`)
264
- .run(JSON.stringify(target.ids));
265
- return;
266
- }
267
- const where = sqliteWhereOf(target.filter);
268
- sql
269
- .prepare(`delete from ${table} where ${where.sql}`)
270
- .run(...where.params);
271
- },
272
- close() {
273
- const handle = db;
274
- db = null;
275
- opened = null;
276
- metrics.clear();
277
- handle?.close();
278
- return Promise.resolve();
279
- },
280
- };
281
- }
282
- export const sqliteVecStoreType = {
283
- type: SQLITE_VEC,
284
- create: createSqliteVecStore,
285
- };
286
- //# sourceMappingURL=sqlite-vec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sqlite-vec.js","sourceRoot":"","sources":["../../../server/vectors/sqlite-vec.ts"],"names":[],"mappings":"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"}
@@ -1,256 +0,0 @@
1
- /**
2
- * The vector side of the plugin, as the application uses it: a pluggable vector store (`VectorStore`, one type per
3
- * implementation, registered like model providers), and vector collections over it (`VectorCollection`): items of
4
- * text the application names, embedded with the embedding model it chooses, kept in an index of that model and
5
- * dimension, and searched by meaning. See `vectors.ts`.
6
- */
7
- import type { ModelRef } from '../../shared/models.js';
8
- export type VectorMetric = 'cosine' | 'l2' | 'ip';
9
- export type VectorValue = string | number | boolean | null;
10
- export type VectorMetadata = Readonly<Record<string, VectorValue>>;
11
- /** Every key must match: equal to the value, or one of `in`. */
12
- export type VectorFilter = Readonly<Record<string, string | number | boolean | {
13
- readonly in: readonly (string | number)[];
14
- }>>;
15
- export interface VectorItem {
16
- readonly id: string;
17
- readonly vector: readonly number[];
18
- readonly metadata: VectorMetadata;
19
- }
20
- export interface VectorMatch {
21
- readonly id: string;
22
- /** Similarity: higher is closer (1 - cosine distance, the negative L2 distance, or the inner product). */
23
- readonly score: number;
24
- readonly metadata: VectorMetadata;
25
- }
26
- /**
27
- * Why vectors cannot be used, as a stable code the interface translates: vectors turned off, a store type nobody
28
- * registered, sqlite-vec unable to load or to open its file, pgvector without connection settings, unreachable, or
29
- * without the `vector` extension; `VECTOR_STORE_FAILED` for anything else a store reports.
30
- */
31
- export type VectorUnavailableCode = 'VECTORS_OFF' | 'VECTOR_STORE_UNKNOWN' | 'SQLITE_VEC_UNSUPPORTED' | 'SQLITE_VEC_OPEN_FAILED' | 'PGVECTOR_NOT_CONFIGURED' | 'PGVECTOR_CONNECTION_FAILED' | 'PGVECTOR_EXTENSION_MISSING' | 'VECTOR_STORE_FAILED';
32
- /** A store that cannot be used: `code` for people (translated), `message` for logs (English, may name the cause). */
33
- export interface VectorProblem {
34
- readonly code: VectorUnavailableCode;
35
- readonly message: string;
36
- }
37
- export type VectorAvailability = {
38
- readonly ok: true;
39
- } | ({
40
- readonly ok: false;
41
- } & VectorProblem);
42
- export interface VectorIndexSpec {
43
- readonly name: string;
44
- readonly dimension: number;
45
- readonly metric: VectorMetric;
46
- /** Metadata keys filters name, which the store may index. */
47
- readonly filterable?: readonly string[];
48
- }
49
- /** Where vectors are kept and searched. Every index name is the store's own to map to its storage. */
50
- export interface VectorStore {
51
- readonly type: string;
52
- /**
53
- * Where the vectors are, with no secret: a file path, or `postgres://user@host:port/database`. Part of every index's
54
- * identity, so pointing the store elsewhere builds the indexes again there.
55
- */
56
- readonly target: string;
57
- available(): Promise<VectorAvailability>;
58
- /** Idempotent. */
59
- createIndex(spec: VectorIndexSpec): Promise<void>;
60
- dropIndex(name: string): Promise<void>;
61
- upsert(index: string, items: readonly VectorItem[]): Promise<void>;
62
- /** Replaces the metadata of items already there. */
63
- update(index: string, items: readonly {
64
- readonly id: string;
65
- readonly metadata: VectorMetadata;
66
- }[]): Promise<void>;
67
- /** The `topK` closest items that pass `filter`, closest first; the filter applies before the limit. */
68
- query(index: string, request: {
69
- readonly vector: readonly number[];
70
- readonly topK: number;
71
- readonly filter?: VectorFilter;
72
- }): Promise<VectorMatch[]>;
73
- delete(index: string, target: {
74
- readonly ids: readonly string[];
75
- } | {
76
- readonly filter: VectorFilter;
77
- }): Promise<void>;
78
- close?(): Promise<void>;
79
- }
80
- export interface VectorStoreContext {
81
- /** `agents.vectors` of the configuration. */
82
- readonly config: Readonly<Record<string, unknown>>;
83
- /** The application's root and storage directories, which relative paths of the configuration resolve against. */
84
- readonly paths: {
85
- readonly root: string;
86
- readonly storage: string;
87
- };
88
- }
89
- export interface VectorStoreType {
90
- readonly type: string;
91
- create(context: VectorStoreContext): VectorStore;
92
- }
93
- export interface VectorStoreRegistry {
94
- /** Answers what removes it again. */
95
- register(type: VectorStoreType): () => void;
96
- get(type: string): VectorStoreType | undefined;
97
- }
98
- /** An item of a collection as the application gives it. */
99
- export interface VectorSourceItem {
100
- readonly id: string;
101
- readonly text: string;
102
- readonly metadata: VectorMetadata;
103
- /** Part of the text hash, such as `ctx` when the text gets a context sentence before it is embedded. */
104
- readonly variant?: string;
105
- }
106
- export interface VectorCollectionSpec {
107
- /** `[a-z0-9-]{1,40}`. */
108
- readonly name: string;
109
- /** What embedding calls are recorded as used for. */
110
- readonly source: string;
111
- /** The embedding model now; null for none (search answers null, nothing is queued). */
112
- model(): Promise<ModelRef | null>;
113
- /** Every item, in batches, for a rebuild. */
114
- items(): AsyncIterable<readonly VectorSourceItem[]>;
115
- readonly filterable?: readonly string[];
116
- /** Cosine by default. */
117
- readonly metric?: VectorMetric;
118
- /**
119
- * The texts actually embedded, in the same order (with a context sentence, say). Called by the worker; a failure
120
- * is retried as an embedding failure is.
121
- */
122
- prepare?(items: readonly VectorSourceItem[], signal: AbortSignal): Promise<readonly string[]>;
123
- }
124
- export interface VectorIndexInfo {
125
- readonly name: string;
126
- readonly modelService: string;
127
- readonly model: string;
128
- readonly dimension: number;
129
- readonly status: 'building' | 'ready';
130
- readonly createdAt: string;
131
- readonly readyAt: string | null;
132
- /** Items embedded into it, of `total` it holds or is about to. */
133
- readonly indexed: number;
134
- readonly total: number;
135
- }
136
- export interface VectorCollectionStatus {
137
- /** Whether the vector store can be used. */
138
- readonly available: boolean;
139
- /** The store configured; null when vectors are turned off. */
140
- readonly store: VectorStoreInfo | null;
141
- /** Why not. */
142
- readonly reason: VectorProblem | null;
143
- /** The embedding model now. */
144
- readonly model: ModelRef | null;
145
- /** The index searches read. */
146
- readonly active: VectorIndexInfo | null;
147
- /** The index being built for the model now, while `active` serves. */
148
- readonly building: VectorIndexInfo | null;
149
- /** Items waiting to be embedded, over both. */
150
- readonly pending: number;
151
- /** Items whose embedding failed after every attempt. */
152
- readonly failed: number;
153
- }
154
- /** Where one item stands in the index searches read: embedded, waiting, or failed after every attempt (with why). */
155
- export interface VectorItemState {
156
- readonly id: string;
157
- readonly state: 'pending' | 'done' | 'failed';
158
- /** The last embedding failure, when it failed. */
159
- readonly error: string | null;
160
- readonly metadata: VectorMetadata;
161
- }
162
- export interface VectorCollection {
163
- status(): Promise<VectorCollectionStatus>;
164
- /**
165
- * The state of each of `ids` that has an entry, in the index searches read (the one being built while none is
166
- * ready); null when there is no store, model or index. An item without an entry is not there yet.
167
- */
168
- states(ids: readonly string[]): Promise<Map<string, VectorItemState> | null>;
169
- /**
170
- * The items still pending or failed in that index, whose metadata passes `filter`, at most `limit`, failed first;
171
- * null as `states` is.
172
- */
173
- unfinished(options: {
174
- readonly filter?: VectorFilter;
175
- readonly limit: number;
176
- }): Promise<VectorItemState[] | null>;
177
- /** Queues the items; an item whose text is unchanged only has its metadata updated. */
178
- upsert(items: readonly VectorSourceItem[]): Promise<void>;
179
- /** Upserts the items and removes the other items of `scope`. */
180
- replace(scope: VectorFilter, items: readonly VectorSourceItem[]): Promise<void>;
181
- remove(target: {
182
- readonly ids: readonly string[];
183
- } | {
184
- readonly filter: VectorFilter;
185
- }): Promise<void>;
186
- /** The closest items; null when the store is unavailable, there is no model, or no index is ready yet. */
187
- search(query: string, options: {
188
- readonly topK: number;
189
- readonly filter?: VectorFilter;
190
- readonly signal?: AbortSignal;
191
- }): Promise<VectorMatch[] | null>;
192
- /**
193
- * Reads the model again: when its index (model and dimension) is not there, builds it in the background from
194
- * `items()` while the ready one serves, then retires the old one.
195
- */
196
- sync(): Promise<void>;
197
- /** Stops working for this collection; what is stored stays. */
198
- close(): void;
199
- }
200
- /** The store configured, as people may see it. */
201
- export interface VectorStoreInfo {
202
- readonly type: string;
203
- /** `VectorStore.target`; null when the store type is not registered. */
204
- readonly target: string | null;
205
- }
206
- export interface VectorsStatus {
207
- readonly available: boolean;
208
- /** The store configured; null when vectors are turned off. */
209
- readonly store: VectorStoreInfo | null;
210
- readonly reason: VectorProblem | null;
211
- }
212
- export interface Vectors {
213
- /** The store types; `sqlite-vec` and `pgvector` are registered by default. */
214
- readonly stores: VectorStoreRegistry;
215
- status(): Promise<VectorsStatus>;
216
- collection(spec: VectorCollectionSpec): VectorCollection;
217
- /** Starts this instance's embedding worker. */
218
- start(): void;
219
- /** Stops the worker and closes the store (it opens again when next used). */
220
- stop(): Promise<void>;
221
- /** Embeds everything due now, then returns; for tests and maintenance. */
222
- drain(): Promise<void>;
223
- }
224
- /** Embeds `values` with `model`; throws on failure. */
225
- export type Embedder = (request: {
226
- readonly model: ModelRef;
227
- readonly values: readonly string[];
228
- readonly source: string;
229
- readonly signal?: AbortSignal;
230
- }) => Promise<{
231
- readonly embeddings: number[][];
232
- readonly dimension: number;
233
- readonly model: string;
234
- readonly tokens: number;
235
- }>;
236
- /**
237
- * `agents.vectors` of the configuration: where vectors are kept, apart from the application's database.
238
- *
239
- * - `store`: `sqlite-vec` (the default), `pgvector`, another registered type, or `false` to turn vectors off.
240
- * - `sqlite-vec`: `path`, the database file (relative to the application root; `storage/vectors.sqlite` by default).
241
- * - `pgvector`: its own PostgreSQL, never the application's connection: `url` (`postgres://user:password@host:port/db`),
242
- * or `host`, `port`, `database`, `user`, `password`; `ssl` (true, or the `pg` driver's TLS options) with either.
243
- */
244
- export interface VectorsConfig {
245
- readonly store?: string | false;
246
- readonly path?: string;
247
- readonly url?: string;
248
- readonly host?: string;
249
- readonly port?: number;
250
- readonly database?: string;
251
- readonly user?: string;
252
- readonly password?: string;
253
- readonly ssl?: boolean | Readonly<Record<string, unknown>>;
254
- readonly [key: string]: unknown;
255
- }
256
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../server/vectors/types.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../server/vectors/types.ts"],"names":[],"mappings":""}
@@ -1,34 +0,0 @@
1
- import type { ModelRef } from '../../shared/models.js';
2
- import type { Clock } from '../kernel/clock.js';
3
- import type { IdSource } from '../kernel/ids.js';
4
- import type { TxRunner } from '../kernel/tx.js';
5
- import type { Embedder, VectorFilter, VectorMetadata, Vectors, VectorsConfig, VectorSourceItem, VectorStoreRegistry } from './types.js';
6
- /** Values per embedding call. */
7
- export declare const BATCH = 64;
8
- export declare const MAX_ATTEMPTS = 5;
9
- /** The first retry's delay; each further one doubles, up to `BACKOFF_MAX_MS`. */
10
- export declare const BACKOFF_MS = 5000;
11
- export interface VectorsDeps {
12
- readonly tx: TxRunner;
13
- readonly ids: IdSource;
14
- readonly clock: Clock;
15
- readonly embed: Embedder;
16
- /** The dimension a model is configured to answer, when the application knows it. */
17
- readonly dimensionsOf?: (ref: ModelRef) => Promise<number | null>;
18
- readonly config?: VectorsConfig;
19
- /** The application's root and storage directories; the working directory and its `storage` by default. */
20
- readonly paths?: {
21
- readonly root: string;
22
- readonly storage: string;
23
- };
24
- readonly onError?: (message: string, error: unknown) => void;
25
- /** How often an idle worker looks; for tests. */
26
- readonly pollMs?: number;
27
- }
28
- /** The hash an entry keeps of an item's text. */
29
- export declare function hashOf(item: Pick<VectorSourceItem, 'text' | 'variant'>): string;
30
- /** Whether metadata passes a filter. */
31
- export declare function matches(metadata: VectorMetadata, filter: VectorFilter): boolean;
32
- export declare function createVectorStoreRegistry(): VectorStoreRegistry;
33
- export declare function createVectors(deps: VectorsDeps): Vectors;
34
- //# sourceMappingURL=vectors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vectors.d.ts","sourceRoot":"","sources":["../../../server/vectors/vectors.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,KAAK,EACV,QAAQ,EAIR,YAAY,EAIZ,cAAc,EAGd,OAAO,EACP,aAAa,EACb,gBAAgB,EAGhB,mBAAmB,EAEpB,MAAM,YAAY,CAAC;AAKpB,iCAAiC;AACjC,eAAO,MAAM,KAAK,KAAK,CAAC;AACxB,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,iFAAiF;AACjF,eAAO,MAAM,UAAU,OAAQ,CAAC;AA0ChC,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,oFAAoF;IACpF,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAClE,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;IAChC,0GAA0G;IAC1G,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACrE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7D,iDAAiD;IACjD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAsBD,iDAAiD;AACjD,wBAAgB,MAAM,CACpB,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC,GAC/C,MAAM,CAIR;AAUD,wCAAwC;AACxC,wBAAgB,OAAO,CACrB,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,YAAY,GACnB,OAAO,CAOT;AA4BD,wBAAgB,yBAAyB,IAAI,mBAAmB,CAW/D;AAQD,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CA21BxD"}