@nocobase/app-plugin-agents 1.0.0-beta.29 → 2.0.0-beta.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 (278) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.md +2 -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/controller.d.ts +7 -5
  16. package/dist/client/chat/controller.d.ts.map +1 -1
  17. package/dist/client/chat/controller.js +186 -65
  18. package/dist/client/chat/controller.js.map +1 -1
  19. package/dist/client/chat/submissions.d.ts +2 -0
  20. package/dist/client/chat/submissions.d.ts.map +1 -1
  21. package/dist/client/chat/submissions.js +1 -0
  22. package/dist/client/chat/submissions.js.map +1 -1
  23. package/dist/client/chat/use-chat.d.ts.map +1 -1
  24. package/dist/client/chat/use-chat.js +2 -4
  25. package/dist/client/chat/use-chat.js.map +1 -1
  26. package/dist/client/components/ag-tag-tones.d.ts +7 -0
  27. package/dist/client/components/ag-tag-tones.d.ts.map +1 -0
  28. package/dist/client/components/ag-tag-tones.js +14 -0
  29. package/dist/client/components/ag-tag-tones.js.map +1 -0
  30. package/dist/client/components/ag-tag.d.ts +2 -1
  31. package/dist/client/components/ag-tag.d.ts.map +1 -1
  32. package/dist/client/components/ag-tag.js +1 -13
  33. package/dist/client/components/ag-tag.js.map +1 -1
  34. package/dist/client/components/quota-status.d.ts +2 -1
  35. package/dist/client/components/quota-status.d.ts.map +1 -1
  36. package/dist/client/components/quota-status.js +2 -2
  37. package/dist/client/components/quota-status.js.map +1 -1
  38. package/dist/client/components/ui/pagination.d.ts +6 -0
  39. package/dist/client/components/ui/pagination.d.ts.map +1 -0
  40. package/dist/client/components/ui/pagination.js +13 -0
  41. package/dist/client/components/ui/pagination.js.map +1 -0
  42. package/dist/client/hooks/use-notify.d.ts.map +1 -1
  43. package/dist/client/hooks/use-notify.js +4 -0
  44. package/dist/client/hooks/use-notify.js.map +1 -1
  45. package/dist/client/locales/de-DE.d.ts.map +1 -1
  46. package/dist/client/locales/de-DE.js +26 -10
  47. package/dist/client/locales/de-DE.js.map +1 -1
  48. package/dist/client/locales/en-US.d.ts +11 -0
  49. package/dist/client/locales/en-US.d.ts.map +1 -1
  50. package/dist/client/locales/en-US.js +21 -10
  51. package/dist/client/locales/en-US.js.map +1 -1
  52. package/dist/client/locales/es-ES.d.ts.map +1 -1
  53. package/dist/client/locales/es-ES.js +26 -10
  54. package/dist/client/locales/es-ES.js.map +1 -1
  55. package/dist/client/locales/fr-FR.d.ts.map +1 -1
  56. package/dist/client/locales/fr-FR.js +26 -10
  57. package/dist/client/locales/fr-FR.js.map +1 -1
  58. package/dist/client/locales/id-ID.d.ts.map +1 -1
  59. package/dist/client/locales/id-ID.js +26 -10
  60. package/dist/client/locales/id-ID.js.map +1 -1
  61. package/dist/client/locales/ja-JP.d.ts.map +1 -1
  62. package/dist/client/locales/ja-JP.js +26 -10
  63. package/dist/client/locales/ja-JP.js.map +1 -1
  64. package/dist/client/locales/pt-BR.d.ts.map +1 -1
  65. package/dist/client/locales/pt-BR.js +26 -10
  66. package/dist/client/locales/pt-BR.js.map +1 -1
  67. package/dist/client/locales/runtimes.en-US.d.ts +5 -0
  68. package/dist/client/locales/runtimes.en-US.d.ts.map +1 -1
  69. package/dist/client/locales/runtimes.en-US.js +5 -0
  70. package/dist/client/locales/runtimes.en-US.js.map +1 -1
  71. package/dist/client/locales/runtimes.zh-CN.d.ts.map +1 -1
  72. package/dist/client/locales/runtimes.zh-CN.js +5 -0
  73. package/dist/client/locales/runtimes.zh-CN.js.map +1 -1
  74. package/dist/client/locales/vi-VN.d.ts.map +1 -1
  75. package/dist/client/locales/vi-VN.js +26 -10
  76. package/dist/client/locales/vi-VN.js.map +1 -1
  77. package/dist/client/locales/zh-CN.d.ts.map +1 -1
  78. package/dist/client/locales/zh-CN.js +21 -10
  79. package/dist/client/locales/zh-CN.js.map +1 -1
  80. package/dist/client/locales/zh-TW.d.ts.map +1 -1
  81. package/dist/client/locales/zh-TW.js +26 -10
  82. package/dist/client/locales/zh-TW.js.map +1 -1
  83. package/dist/client/model-suggestion.d.ts +2 -0
  84. package/dist/client/model-suggestion.d.ts.map +1 -1
  85. package/dist/client/model-suggestion.js +27 -2
  86. package/dist/client/model-suggestion.js.map +1 -1
  87. package/dist/client/pages/agents/agent-dialog.d.ts.map +1 -1
  88. package/dist/client/pages/agents/agent-dialog.js +6 -7
  89. package/dist/client/pages/agents/agent-dialog.js.map +1 -1
  90. package/dist/client/pages/agents/available-models-drawer.d.ts.map +1 -1
  91. package/dist/client/pages/agents/available-models-drawer.js +2 -1
  92. package/dist/client/pages/agents/available-models-drawer.js.map +1 -1
  93. package/dist/client/pages/agents/good-at-templates.d.ts +8 -0
  94. package/dist/client/pages/agents/good-at-templates.d.ts.map +1 -0
  95. package/dist/client/pages/agents/good-at-templates.js +29 -0
  96. package/dist/client/pages/agents/good-at-templates.js.map +1 -0
  97. package/dist/client/pages/runtimes/runner-cells.d.ts.map +1 -1
  98. package/dist/client/pages/runtimes/runner-cells.js +3 -1
  99. package/dist/client/pages/runtimes/runner-cells.js.map +1 -1
  100. package/dist/client/pages/runtimes/runner-pagination.d.ts +15 -0
  101. package/dist/client/pages/runtimes/runner-pagination.d.ts.map +1 -0
  102. package/dist/client/pages/runtimes/runner-pagination.js +9 -0
  103. package/dist/client/pages/runtimes/runner-pagination.js.map +1 -0
  104. package/dist/client/pages/runtimes/runner-runs.d.ts +3 -2
  105. package/dist/client/pages/runtimes/runner-runs.d.ts.map +1 -1
  106. package/dist/client/pages/runtimes/runner-runs.js +38 -15
  107. package/dist/client/pages/runtimes/runner-runs.js.map +1 -1
  108. package/dist/client/pages/runtimes/runner-sheet.js +1 -1
  109. package/dist/client/pages/runtimes/runner-sheet.js.map +1 -1
  110. package/dist/client/pages/runtimes/runner-workspaces.d.ts.map +1 -1
  111. package/dist/client/pages/runtimes/runner-workspaces.js +7 -3
  112. package/dist/client/pages/runtimes/runner-workspaces.js.map +1 -1
  113. package/dist/client/runs/refresh-run.d.ts +4 -0
  114. package/dist/client/runs/refresh-run.d.ts.map +1 -0
  115. package/dist/client/runs/refresh-run.js +8 -0
  116. package/dist/client/runs/refresh-run.js.map +1 -0
  117. package/dist/client/runs/run-hooks.d.ts.map +1 -1
  118. package/dist/client/runs/run-hooks.js +2 -1
  119. package/dist/client/runs/run-hooks.js.map +1 -1
  120. package/dist/database/migrations/.manifest.json +8 -0
  121. package/dist/database/migrations/202611010003_ag_runner_run_history_index.d.ts +4 -0
  122. package/dist/database/migrations/202611010003_ag_runner_run_history_index.d.ts.map +1 -0
  123. package/dist/database/migrations/202611010003_ag_runner_run_history_index.js +17 -0
  124. package/dist/database/migrations/202611010003_ag_runner_run_history_index.js.map +1 -0
  125. package/dist/database/migrations/202611070001_ag_conversation_project.d.ts +4 -0
  126. package/dist/database/migrations/202611070001_ag_conversation_project.d.ts.map +1 -0
  127. package/dist/database/migrations/202611070001_ag_conversation_project.js +17 -0
  128. package/dist/database/migrations/202611070001_ag_conversation_project.js.map +1 -0
  129. package/dist/package.json +4 -6
  130. package/dist/server/composition.d.ts +0 -17
  131. package/dist/server/composition.d.ts.map +1 -1
  132. package/dist/server/composition.js +7 -20
  133. package/dist/server/composition.js.map +1 -1
  134. package/dist/server/core/conversations/conversation.service.d.ts.map +1 -1
  135. package/dist/server/core/conversations/conversation.service.js +160 -19
  136. package/dist/server/core/conversations/conversation.service.js.map +1 -1
  137. package/dist/server/core/conversations/conversation.store.d.ts +1 -0
  138. package/dist/server/core/conversations/conversation.store.d.ts.map +1 -1
  139. package/dist/server/core/conversations/conversation.store.js.map +1 -1
  140. package/dist/server/core/conversations/index.d.ts +1 -1
  141. package/dist/server/core/conversations/index.d.ts.map +1 -1
  142. package/dist/server/core/conversations/index.js.map +1 -1
  143. package/dist/server/core/conversations/ports.d.ts +14 -0
  144. package/dist/server/core/conversations/ports.d.ts.map +1 -1
  145. package/dist/server/core/runs/claim.d.ts +7 -1
  146. package/dist/server/core/runs/claim.d.ts.map +1 -1
  147. package/dist/server/core/runs/claim.js +69 -17
  148. package/dist/server/core/runs/claim.js.map +1 -1
  149. package/dist/server/core/runs/ports.d.ts +2 -0
  150. package/dist/server/core/runs/ports.d.ts.map +1 -1
  151. package/dist/server/core/runs/ports.js.map +1 -1
  152. package/dist/server/core/runs/run.service.d.ts +5 -0
  153. package/dist/server/core/runs/run.service.d.ts.map +1 -1
  154. package/dist/server/core/runs/run.service.js +22 -0
  155. package/dist/server/core/runs/run.service.js.map +1 -1
  156. package/dist/server/core/runs/run.store.d.ts +1 -1
  157. package/dist/server/core/runs/run.store.d.ts.map +1 -1
  158. package/dist/server/core/runs/run.store.js +1 -1
  159. package/dist/server/core/runs/run.store.js.map +1 -1
  160. package/dist/server/core/runs/runner-view.d.ts +8 -4
  161. package/dist/server/core/runs/runner-view.d.ts.map +1 -1
  162. package/dist/server/core/runs/runner-view.js +89 -32
  163. package/dist/server/core/runs/runner-view.js.map +1 -1
  164. package/dist/server/locales/de-DE.d.ts.map +1 -1
  165. package/dist/server/locales/de-DE.js +5 -0
  166. package/dist/server/locales/de-DE.js.map +1 -1
  167. package/dist/server/locales/en-US.d.ts +7 -1
  168. package/dist/server/locales/en-US.d.ts.map +1 -1
  169. package/dist/server/locales/en-US.js +5 -0
  170. package/dist/server/locales/en-US.js.map +1 -1
  171. package/dist/server/locales/es-ES.d.ts.map +1 -1
  172. package/dist/server/locales/es-ES.js +5 -0
  173. package/dist/server/locales/es-ES.js.map +1 -1
  174. package/dist/server/locales/fr-FR.d.ts.map +1 -1
  175. package/dist/server/locales/fr-FR.js +5 -0
  176. package/dist/server/locales/fr-FR.js.map +1 -1
  177. package/dist/server/locales/id-ID.d.ts.map +1 -1
  178. package/dist/server/locales/id-ID.js +5 -0
  179. package/dist/server/locales/id-ID.js.map +1 -1
  180. package/dist/server/locales/ja-JP.d.ts.map +1 -1
  181. package/dist/server/locales/ja-JP.js +5 -0
  182. package/dist/server/locales/ja-JP.js.map +1 -1
  183. package/dist/server/locales/pt-BR.d.ts.map +1 -1
  184. package/dist/server/locales/pt-BR.js +5 -0
  185. package/dist/server/locales/pt-BR.js.map +1 -1
  186. package/dist/server/locales/vi-VN.d.ts.map +1 -1
  187. package/dist/server/locales/vi-VN.js +5 -0
  188. package/dist/server/locales/vi-VN.js.map +1 -1
  189. package/dist/server/locales/zh-CN.d.ts +2 -2
  190. package/dist/server/locales/zh-CN.d.ts.map +1 -1
  191. package/dist/server/locales/zh-CN.js +5 -0
  192. package/dist/server/locales/zh-CN.js.map +1 -1
  193. package/dist/server/locales/zh-TW.d.ts.map +1 -1
  194. package/dist/server/locales/zh-TW.js +5 -0
  195. package/dist/server/locales/zh-TW.js.map +1 -1
  196. package/dist/server/online/agent/native/backend.d.ts.map +1 -1
  197. package/dist/server/online/agent/native/backend.js +2 -0
  198. package/dist/server/online/agent/native/backend.js.map +1 -1
  199. package/dist/server/online/agent/native/session.d.ts.map +1 -1
  200. package/dist/server/online/agent/native/session.js +3 -1
  201. package/dist/server/online/agent/native/session.js.map +1 -1
  202. package/dist/server/online/agent/runner/backend.d.ts.map +1 -1
  203. package/dist/server/online/agent/runner/backend.js +4 -1
  204. package/dist/server/online/agent/runner/backend.js.map +1 -1
  205. package/dist/server/online/agent/runner/projection.d.ts +1 -1
  206. package/dist/server/online/agent/runner/projection.d.ts.map +1 -1
  207. package/dist/server/online/agent/runner/projection.js +33 -3
  208. package/dist/server/online/agent/runner/projection.js.map +1 -1
  209. package/dist/server/online/agent/service.d.ts.map +1 -1
  210. package/dist/server/online/agent/service.js +3 -0
  211. package/dist/server/online/agent/service.js.map +1 -1
  212. package/dist/server/online/agent/types.d.ts +3 -0
  213. package/dist/server/online/agent/types.d.ts.map +1 -1
  214. package/dist/server/providers/agents.d.ts +5 -9
  215. package/dist/server/providers/agents.d.ts.map +1 -1
  216. package/dist/server/providers/agents.js +9 -13
  217. package/dist/server/providers/agents.js.map +1 -1
  218. package/dist/server/routes/chat.d.ts.map +1 -1
  219. package/dist/server/routes/chat.js +37 -0
  220. package/dist/server/routes/chat.js.map +1 -1
  221. package/dist/server/routes/runners/admin.d.ts.map +1 -1
  222. package/dist/server/routes/runners/admin.js +16 -7
  223. package/dist/server/routes/runners/admin.js.map +1 -1
  224. package/dist/server/routes/runners/runner.d.ts.map +1 -1
  225. package/dist/server/routes/runners/runner.js +6 -4
  226. package/dist/server/routes/runners/runner.js.map +1 -1
  227. package/dist/server/routes/schemas.d.ts +7 -1
  228. package/dist/server/routes/schemas.d.ts.map +1 -1
  229. package/dist/server/routes/schemas.js +41 -1
  230. package/dist/server/routes/schemas.js.map +1 -1
  231. package/dist/server/tokens.d.ts +1 -2
  232. package/dist/server/tokens.d.ts.map +1 -1
  233. package/dist/server/tokens.js.map +1 -1
  234. package/dist/shared/conversations.d.ts +16 -0
  235. package/dist/shared/conversations.d.ts.map +1 -1
  236. package/dist/shared/conversations.js.map +1 -1
  237. package/dist/shared/runners.d.ts +18 -2
  238. package/dist/shared/runners.d.ts.map +1 -1
  239. package/dist/shared/runners.js +20 -0
  240. package/dist/shared/runners.js.map +1 -1
  241. package/dist/shared/ui-message.d.ts +2 -0
  242. package/dist/shared/ui-message.d.ts.map +1 -1
  243. package/dist/shared/ui-message.js +1 -0
  244. package/dist/shared/ui-message.js.map +1 -1
  245. package/docs/ui-message-clients.md +5 -1
  246. package/docs/ui-messages.md +3 -1
  247. package/docs/vectors-migration.md +91 -0
  248. package/package.json +8 -10
  249. package/skills/nocobase-app-plugin-agents/SKILL.md +1 -1
  250. package/skills/nocobase-app-plugin-agents/references/extension-points.md +0 -1
  251. package/skills/nocobase-app-plugin-agents/references/model-services.md +3 -3
  252. package/skills/nocobase-app-plugin-agents/references/online-agent.md +6 -0
  253. package/skills/nocobase-app-plugin-agents/references/setup-and-config.md +0 -4
  254. package/skills/nocobase-app-plugin-agents/references/verification-and-troubleshooting.md +0 -2
  255. package/dist/server/vectors/index.d.ts +0 -7
  256. package/dist/server/vectors/index.d.ts.map +0 -1
  257. package/dist/server/vectors/index.js +0 -6
  258. package/dist/server/vectors/index.js.map +0 -1
  259. package/dist/server/vectors/naming.d.ts +0 -6
  260. package/dist/server/vectors/naming.d.ts.map +0 -1
  261. package/dist/server/vectors/naming.js +0 -15
  262. package/dist/server/vectors/naming.js.map +0 -1
  263. package/dist/server/vectors/pgvector.d.ts +0 -26
  264. package/dist/server/vectors/pgvector.d.ts.map +0 -1
  265. package/dist/server/vectors/pgvector.js +0 -346
  266. package/dist/server/vectors/pgvector.js.map +0 -1
  267. package/dist/server/vectors/sqlite-vec.d.ts +0 -14
  268. package/dist/server/vectors/sqlite-vec.d.ts.map +0 -1
  269. package/dist/server/vectors/sqlite-vec.js +0 -286
  270. package/dist/server/vectors/sqlite-vec.js.map +0 -1
  271. package/dist/server/vectors/types.d.ts +0 -256
  272. package/dist/server/vectors/types.d.ts.map +0 -1
  273. package/dist/server/vectors/types.js +0 -2
  274. package/dist/server/vectors/types.js.map +0 -1
  275. package/dist/server/vectors/vectors.d.ts +0 -34
  276. package/dist/server/vectors/vectors.d.ts.map +0 -1
  277. package/dist/server/vectors/vectors.js +0 -866
  278. package/dist/server/vectors/vectors.js.map +0 -1
@@ -1,26 +0,0 @@
1
- import type { VectorFilter, VectorStore, VectorStoreContext, VectorStoreType } from './types.js';
2
- /** What this store needs of its client (knex). */
3
- interface SqlClient {
4
- raw(sql: string, bindings?: readonly unknown[]): Promise<unknown>;
5
- transaction<T>(fn: (trx: SqlClient) => Promise<T>): Promise<T>;
6
- }
7
- interface KnexClient extends SqlClient {
8
- destroy(): Promise<void>;
9
- }
10
- type KnexFactory = (config: Record<string, unknown>) => KnexClient;
11
- export declare const PGVECTOR = "pgvector";
12
- /** The WHERE condition of a filter, with its bindings. */
13
- export declare function whereOf(filter: VectorFilter | undefined): {
14
- sql: string;
15
- bindings: unknown[];
16
- };
17
- /** The `pg` connection settings of `agents.vectors`; null when it names no database server. */
18
- export declare function pgvectorConnectionOf(config: Readonly<Record<string, unknown>>): Record<string, unknown> | null;
19
- /** Where the store points, with no password and no query: `postgres://user@host:port/database`. */
20
- export declare function pgvectorTargetOf(config: Readonly<Record<string, unknown>>): string;
21
- export declare function createPgvectorStore(context: VectorStoreContext,
22
- /** Makes the client; knex by default (for tests). */
23
- connect?: KnexFactory): VectorStore;
24
- export declare const pgvectorStoreType: VectorStoreType;
25
- export {};
26
- //# sourceMappingURL=pgvector.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pgvector.d.ts","sourceRoot":"","sources":["../../../server/vectors/pgvector.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAEV,YAAY,EAKZ,WAAW,EACX,kBAAkB,EAClB,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,kDAAkD;AAClD,UAAU,SAAS;IACjB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAChE;AAED,UAAU,UAAW,SAAQ,SAAS;IACpC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,KAAK,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,UAAU,CAAC;AAEnE,eAAO,MAAM,QAAQ,aAAa,CAAC;AAsCnC,0DAA0D;AAC1D,wBAAgB,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG;IACzD,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB,CAkBA;AAoBD,+FAA+F;AAC/F,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACxC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAoBhC;AAED,mGAAmG;AACnG,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACxC,MAAM,CAiBR;AAKD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,kBAAkB;AAC3B,qDAAqD;AACrD,OAAO,CAAC,EAAE,WAAW,GACpB,WAAW,CA2Qb;AAED,eAAO,MAAM,iBAAiB,EAAE,eAG/B,CAAC"}
@@ -1,346 +0,0 @@
1
- /**
2
- * The `pgvector` vector store: SQL over a PostgreSQL database of its own with the `vector` extension, reached with the
3
- * connection settings of `agents.vectors` (`url`, or `host`, `port`, `database`, `user`, `password`; `ssl`), never the
4
- * application's database connection. It is available once that database answers and the extension is there or can
5
- * be created.
6
- *
7
- * One table per index (`agv_<index>`): `id` text primary key, `embedding` as `vector(<dimension>)` (`halfvec` from
8
- * 2001 to 4000 dimensions, which HNSW indexes only up to then; above 4000 it is `vector` without an index, searched
9
- * exactly), `metadata` jsonb. An HNSW index with the metric's operator class, and a btree index on
10
- * `metadata->>'<key>'` for each filterable key. A query filters in its WHERE clause before ordering by distance and
11
- * taking `topK`, in a transaction that turns on pgvector's iterative index scans (0.8 and later; ignored before) so a
12
- * selective filter still finds `topK` items. A large delete vacuums the table, so the HNSW graph forgets the rows.
13
- */
14
- import { keyOf, tableOf } from './naming.js';
15
- export const PGVECTOR = 'pgvector';
16
- /** The largest dimension `vector` takes an HNSW index at. */
17
- const VECTOR_HNSW_MAX = 2000;
18
- /** The largest dimension `halfvec` takes an HNSW index at. */
19
- const HALFVEC_HNSW_MAX = 4000;
20
- /** Deleting this many rows at once (or as many as are left) vacuums the table. */
21
- const VACUUM_AFTER = 500;
22
- const OPERATORS = {
23
- cosine: '<=>',
24
- l2: '<->',
25
- ip: '<#>',
26
- };
27
- const OPCLASS = {
28
- cosine: 'cosine_ops',
29
- l2: 'l2_ops',
30
- ip: 'ip_ops',
31
- };
32
- const rowsOf = (result) => result?.rows ?? [];
33
- const quote = (identifier) => `"${identifier.replace(/"/gu, '""')}"`;
34
- /** A metadata key as an SQL literal, so a filter matches its expression index; only plain keys are taken. */
35
- function keyLiteral(key) {
36
- return `'${keyOf(key)}'`;
37
- }
38
- const vectorText = (vector) => {
39
- for (const value of vector)
40
- if (!Number.isFinite(value))
41
- throw new Error('A vector holds a value that is not a finite number.');
42
- return `[${vector.join(',')}]`;
43
- };
44
- /** The WHERE condition of a filter, with its bindings. */
45
- export function whereOf(filter) {
46
- const parts = [];
47
- const bindings = [];
48
- for (const [key, value] of Object.entries(filter ?? {})) {
49
- const field = `metadata->>${keyLiteral(key)}`;
50
- if (typeof value === 'object' && value !== null) {
51
- if (value.in.length === 0) {
52
- parts.push('false');
53
- continue;
54
- }
55
- parts.push(`${field} = any(?::text[])`);
56
- bindings.push(value.in.map(String));
57
- }
58
- else {
59
- parts.push(`${field} = ?`);
60
- bindings.push(String(value));
61
- }
62
- }
63
- return { sql: parts.length > 0 ? parts.join(' and ') : 'true', bindings };
64
- }
65
- function metadataOf(value) {
66
- if (typeof value === 'string')
67
- try {
68
- return JSON.parse(value);
69
- }
70
- catch {
71
- return {};
72
- }
73
- return value && typeof value === 'object' ? value : {};
74
- }
75
- const text = (value) => typeof value === 'string' && value.trim() ? value.trim() : undefined;
76
- /** The `pg` connection settings of `agents.vectors`; null when it names no database server. */
77
- export function pgvectorConnectionOf(config) {
78
- const ssl = config.ssl === true || (config.ssl && typeof config.ssl === 'object')
79
- ? { ssl: config.ssl }
80
- : {};
81
- const url = text(config.url);
82
- if (url)
83
- return { connectionString: url, ...ssl };
84
- const host = text(config.host);
85
- if (!host)
86
- return null;
87
- const port = Number(config.port);
88
- return {
89
- host,
90
- ...(Number.isInteger(port) && port > 0 ? { port } : {}),
91
- ...(text(config.database) ? { database: text(config.database) } : {}),
92
- ...(text(config.user) ? { user: text(config.user) } : {}),
93
- ...(typeof config.password === 'string'
94
- ? { password: config.password }
95
- : {}),
96
- ...ssl,
97
- };
98
- }
99
- /** Where the store points, with no password and no query: `postgres://user@host:port/database`. */
100
- export function pgvectorTargetOf(config) {
101
- const url = text(config.url);
102
- if (url) {
103
- try {
104
- const parsed = new URL(url);
105
- const user = parsed.username ? `${parsed.username}@` : '';
106
- return `postgres://${user}${parsed.hostname}:${parsed.port || '5432'}${parsed.pathname === '/' ? '' : parsed.pathname}`;
107
- }
108
- catch {
109
- return 'postgres://(invalid url)';
110
- }
111
- }
112
- const host = text(config.host);
113
- if (!host)
114
- return 'postgres://(not configured)';
115
- const user = text(config.user);
116
- const port = Number(config.port);
117
- const database = text(config.database);
118
- return `postgres://${user ? `${encodeURIComponent(user)}@` : ''}${host}:${Number.isInteger(port) && port > 0 ? port : 5432}${database ? `/${encodeURIComponent(database)}` : ''}`;
119
- }
120
- const messageOf = (error) => error instanceof Error ? error.message : String(error);
121
- export function createPgvectorStore(context,
122
- /** Makes the client; knex by default (for tests). */
123
- connect) {
124
- const settings = pgvectorConnectionOf(context.config);
125
- const tables = new Map();
126
- let ready = null;
127
- let made = null;
128
- function client() {
129
- made ??= (async () => {
130
- if (!settings)
131
- throw new Error('pgvector has no connection settings.');
132
- const factory = connect ?? (await import('knex')).default;
133
- return factory({
134
- client: 'pg',
135
- connection: settings,
136
- pool: { min: 0, max: 4 },
137
- });
138
- })().catch((error) => {
139
- made = null;
140
- throw error;
141
- });
142
- return made;
143
- }
144
- async function check() {
145
- if (!settings)
146
- return {
147
- ok: false,
148
- code: 'PGVECTOR_NOT_CONFIGURED',
149
- message: 'pgvector needs agents.vectors.url, or agents.vectors.host and the rest of its connection settings.',
150
- };
151
- let sql;
152
- let present;
153
- try {
154
- sql = await client();
155
- present = rowsOf(await sql.raw("select extversion from pg_extension where extname = 'vector'"));
156
- }
157
- catch (error) {
158
- return {
159
- ok: false,
160
- code: 'PGVECTOR_CONNECTION_FAILED',
161
- message: `pgvector could not reach ${pgvectorTargetOf(context.config)}: ${messageOf(error)}`,
162
- };
163
- }
164
- if (present.length > 0)
165
- return { ok: true };
166
- try {
167
- await sql.raw('create extension if not exists vector');
168
- return { ok: true };
169
- }
170
- catch (error) {
171
- return {
172
- ok: false,
173
- code: 'PGVECTOR_EXTENSION_MISSING',
174
- message: `The pgvector extension is not installed in ${pgvectorTargetOf(context.config)} and could not be created: ${messageOf(error)}`,
175
- };
176
- }
177
- }
178
- /** The column type and metric of an index's table, read once. */
179
- async function infoOf(index) {
180
- const table = tableOf(index);
181
- const known = tables.get(table);
182
- if (known)
183
- return known;
184
- const sql = await client();
185
- const rows = rowsOf(await sql.raw(`select format_type(a.atttypid, a.atttypmod) as type, obj_description(c.oid, 'pg_class') as comment
186
- from pg_attribute a join pg_class c on c.oid = a.attrelid
187
- where c.oid = to_regclass(?) and a.attname = 'embedding'`, [table]));
188
- const row = rows[0];
189
- if (!row)
190
- throw new Error(`The vector index ${index} is not there.`);
191
- const metric = (row.comment ?? 'cosine');
192
- const info = {
193
- type: row.type.startsWith('halfvec') ? 'halfvec' : 'vector',
194
- metric: metric in OPERATORS ? metric : 'cosine',
195
- };
196
- tables.set(table, info);
197
- return info;
198
- }
199
- /**
200
- * After a large delete, vacuums the table: until then an HNSW scan still walks the deleted rows' graph nodes and can
201
- * answer fewer rows than there are (or none, when most of the table went).
202
- */
203
- async function settle(table, result) {
204
- const deleted = result?.rowCount ?? 0;
205
- if (deleted === 0)
206
- return;
207
- const sql = await client();
208
- try {
209
- const left = Number(rowsOf(await sql.raw(`select count(*) as count from ${quote(table)}`))[0]?.count ?? 0);
210
- if (deleted >= VACUUM_AFTER || deleted >= left)
211
- await sql.raw(`vacuum ${quote(table)}`);
212
- }
213
- catch {
214
- // Autovacuum gets there in the end.
215
- }
216
- }
217
- return {
218
- type: PGVECTOR,
219
- target: pgvectorTargetOf(context.config),
220
- available() {
221
- // A failed check is tried again next time; a successful one holds.
222
- ready ??= check().then((result) => {
223
- if (!result.ok)
224
- ready = null;
225
- return result;
226
- });
227
- return ready;
228
- },
229
- async createIndex(spec) {
230
- const table = tableOf(spec.name);
231
- const dimension = Math.trunc(spec.dimension);
232
- if (!(dimension > 0 && dimension <= 16000))
233
- throw new Error(`A vector dimension of ${spec.dimension} is not usable.`);
234
- if (!(spec.metric in OPERATORS))
235
- throw new Error(`The vector metric ${spec.metric} is not known.`);
236
- const type = dimension > VECTOR_HNSW_MAX && dimension <= HALFVEC_HNSW_MAX
237
- ? 'halfvec'
238
- : 'vector';
239
- const sql = await client();
240
- await sql.raw(`create table if not exists ${quote(table)} (
241
- id text primary key,
242
- embedding ${type}(${dimension}) not null,
243
- metadata jsonb not null default '{}'::jsonb
244
- )`);
245
- await sql.raw(`comment on table ${quote(table)} is '${spec.metric}'`);
246
- if (dimension <= HALFVEC_HNSW_MAX)
247
- // `vector` up to 2000 dimensions, `halfvec` up to 4000; beyond, the table is searched exactly.
248
- await sql.raw(`create index if not exists ${quote(`${table}_hnsw`)} on ${quote(table)} using hnsw (embedding ${type}_${OPCLASS[spec.metric]})`);
249
- for (const [at, key] of (spec.filterable ?? []).entries())
250
- await sql.raw(`create index if not exists ${quote(`${table}_k${at}`)} on ${quote(table)} ((metadata->>${keyLiteral(key)}))`);
251
- tables.set(table, { type, metric: spec.metric });
252
- },
253
- async dropIndex(name) {
254
- const table = tableOf(name);
255
- await (await client()).raw(`drop table if exists ${quote(table)}`);
256
- tables.delete(table);
257
- },
258
- async upsert(index, items) {
259
- if (items.length === 0)
260
- return;
261
- const table = tableOf(index);
262
- const sql = await client();
263
- for (let at = 0; at < items.length; at += 200) {
264
- const batch = items.slice(at, at + 200);
265
- await sql.raw(`insert into ${quote(table)} (id, embedding, metadata) values ${batch.map(() => '(?, ?, ?::jsonb)').join(', ')}
266
- on conflict (id) do update set embedding = excluded.embedding, metadata = excluded.metadata`, batch.flatMap((item) => [
267
- item.id,
268
- vectorText(item.vector),
269
- JSON.stringify(item.metadata),
270
- ]));
271
- }
272
- },
273
- async update(index, items) {
274
- if (items.length === 0)
275
- return;
276
- const table = tableOf(index);
277
- const sql = await client();
278
- await sql.transaction(async (trx) => {
279
- for (const item of items)
280
- await trx.raw(`update ${quote(table)} set metadata = ?::jsonb where id = ?`, [JSON.stringify(item.metadata), item.id]);
281
- });
282
- },
283
- async query(index, request) {
284
- const table = tableOf(index);
285
- const info = await infoOf(index);
286
- const topK = Math.max(1, Math.min(Math.trunc(request.topK), 1000));
287
- const where = whereOf(request.filter);
288
- const operator = OPERATORS[info.metric];
289
- const score = info.metric === 'cosine'
290
- ? `1 - (embedding ${operator} ?::${info.type})`
291
- : `-(embedding ${operator} ?::${info.type})`;
292
- const literal = vectorText(request.vector);
293
- const sql = await client();
294
- return sql.transaction(async (trx) => {
295
- await trx.raw(`select set_config('hnsw.ef_search', ?, true)`, [
296
- String(Math.min(1000, Math.max(40, topK * 2))),
297
- ]);
298
- // pgvector 0.8 and later scan the index further when the filter drops candidates; an earlier one has no such
299
- // setting and refuses it, which leaves the query as it was.
300
- await trx.raw('savepoint agv_iterative');
301
- try {
302
- await trx.raw(`select set_config('hnsw.iterative_scan', 'strict_order', true)`);
303
- await trx.raw('release savepoint agv_iterative');
304
- }
305
- catch {
306
- await trx.raw('rollback to savepoint agv_iterative');
307
- }
308
- const rows = rowsOf(await trx.raw(`select id, ${score} as score, metadata
309
- from ${quote(table)}
310
- where ${where.sql}
311
- order by embedding ${operator} ?::${info.type}
312
- limit ${topK}`, [literal, ...where.bindings, literal]));
313
- return rows.map((row) => ({
314
- id: row.id,
315
- score: Number(row.score),
316
- metadata: metadataOf(row.metadata),
317
- }));
318
- });
319
- },
320
- async delete(index, target) {
321
- const table = tableOf(index);
322
- const sql = await client();
323
- if ('ids' in target) {
324
- if (target.ids.length === 0)
325
- return;
326
- await settle(table, await sql.raw(`delete from ${quote(table)} where id = any(?::text[])`, [[...target.ids]]));
327
- return;
328
- }
329
- const where = whereOf(target.filter);
330
- await settle(table, await sql.raw(`delete from ${quote(table)} where ${where.sql}`, where.bindings));
331
- },
332
- async close() {
333
- const pending = made;
334
- made = null;
335
- ready = null;
336
- tables.clear();
337
- if (pending)
338
- await (await pending.catch(() => null))?.destroy();
339
- },
340
- };
341
- }
342
- export const pgvectorStoreType = {
343
- type: PGVECTOR,
344
- create: (context) => createPgvectorStore(context),
345
- };
346
- //# sourceMappingURL=pgvector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pgvector.js","sourceRoot":"","sources":["../../../server/vectors/pgvector.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import type { VectorFilter, VectorStore, VectorStoreContext, VectorStoreType } from './types.js';
2
- export declare const SQLITE_VEC = "sqlite-vec";
3
- /** The file under the application's storage directory when `path` is not set. */
4
- export declare const SQLITE_VEC_FILE = "vectors.sqlite";
5
- /** The WHERE condition of a filter, with its parameters. */
6
- export declare function sqliteWhereOf(filter: VectorFilter | undefined): {
7
- sql: string;
8
- params: unknown[];
9
- };
10
- /** The file of the store: `path` against the application root, else `storage/vectors.sqlite`. */
11
- export declare function sqliteVecFileOf(context: VectorStoreContext): string;
12
- export declare function createSqliteVecStore(context: VectorStoreContext): VectorStore;
13
- export declare const sqliteVecStoreType: VectorStoreType;
14
- //# sourceMappingURL=sqlite-vec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sqlite-vec.d.ts","sourceRoot":"","sources":["../../../server/vectors/sqlite-vec.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAEV,YAAY,EAKZ,WAAW,EACX,kBAAkB,EAClB,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,iFAAiF;AACjF,eAAO,MAAM,eAAe,mBAAmB,CAAC;AAoChD,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG;IAC/D,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,EAAE,CAAC;CACnB,CAiBA;AA4BD,iGAAiG;AACjG,wBAAgB,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAKnE;AAaD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,CAmO7E;AAED,eAAO,MAAM,kBAAkB,EAAE,eAGhC,CAAC"}