@agentuity/runtime 2.0.11 → 3.0.0-alpha.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 (415) hide show
  1. package/dist/index.d.ts +37 -65
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +59 -61
  4. package/dist/index.js.map +1 -1
  5. package/package.json +9 -38
  6. package/src/index.ts +58 -259
  7. package/AGENTS.md +0 -116
  8. package/dist/_config.d.ts +0 -100
  9. package/dist/_config.d.ts.map +0 -1
  10. package/dist/_config.js +0 -147
  11. package/dist/_config.js.map +0 -1
  12. package/dist/_context.d.ts +0 -80
  13. package/dist/_context.d.ts.map +0 -1
  14. package/dist/_context.js +0 -160
  15. package/dist/_context.js.map +0 -1
  16. package/dist/_events.d.ts +0 -64
  17. package/dist/_events.d.ts.map +0 -1
  18. package/dist/_events.js +0 -92
  19. package/dist/_events.js.map +0 -1
  20. package/dist/_globals.d.ts +0 -58
  21. package/dist/_globals.d.ts.map +0 -1
  22. package/dist/_globals.js +0 -71
  23. package/dist/_globals.js.map +0 -1
  24. package/dist/_idle.d.ts +0 -7
  25. package/dist/_idle.d.ts.map +0 -1
  26. package/dist/_idle.js +0 -10
  27. package/dist/_idle.js.map +0 -1
  28. package/dist/_metadata.d.ts +0 -117
  29. package/dist/_metadata.d.ts.map +0 -1
  30. package/dist/_metadata.js +0 -268
  31. package/dist/_metadata.js.map +0 -1
  32. package/dist/_process-protection.d.ts +0 -27
  33. package/dist/_process-protection.d.ts.map +0 -1
  34. package/dist/_process-protection.js +0 -56
  35. package/dist/_process-protection.js.map +0 -1
  36. package/dist/_server.d.ts +0 -50
  37. package/dist/_server.d.ts.map +0 -1
  38. package/dist/_server.js +0 -89
  39. package/dist/_server.js.map +0 -1
  40. package/dist/_services.d.ts +0 -25
  41. package/dist/_services.d.ts.map +0 -1
  42. package/dist/_services.js +0 -286
  43. package/dist/_services.js.map +0 -1
  44. package/dist/_standalone.d.ts +0 -212
  45. package/dist/_standalone.d.ts.map +0 -1
  46. package/dist/_standalone.js +0 -556
  47. package/dist/_standalone.js.map +0 -1
  48. package/dist/_tokens.d.ts +0 -12
  49. package/dist/_tokens.d.ts.map +0 -1
  50. package/dist/_tokens.js +0 -97
  51. package/dist/_tokens.js.map +0 -1
  52. package/dist/_util.d.ts +0 -16
  53. package/dist/_util.d.ts.map +0 -1
  54. package/dist/_util.js +0 -54
  55. package/dist/_util.js.map +0 -1
  56. package/dist/_validation.d.ts +0 -89
  57. package/dist/_validation.d.ts.map +0 -1
  58. package/dist/_validation.js +0 -29
  59. package/dist/_validation.js.map +0 -1
  60. package/dist/_waituntil.d.ts +0 -32
  61. package/dist/_waituntil.d.ts.map +0 -1
  62. package/dist/_waituntil.js +0 -156
  63. package/dist/_waituntil.js.map +0 -1
  64. package/dist/agent.d.ts +0 -1262
  65. package/dist/agent.d.ts.map +0 -1
  66. package/dist/agent.js +0 -981
  67. package/dist/agent.js.map +0 -1
  68. package/dist/app.d.ts +0 -514
  69. package/dist/app.d.ts.map +0 -1
  70. package/dist/app.js +0 -228
  71. package/dist/app.js.map +0 -1
  72. package/dist/bootstrap.d.ts +0 -44
  73. package/dist/bootstrap.d.ts.map +0 -1
  74. package/dist/bootstrap.js +0 -259
  75. package/dist/bootstrap.js.map +0 -1
  76. package/dist/bun-s3-patch.d.ts +0 -37
  77. package/dist/bun-s3-patch.d.ts.map +0 -1
  78. package/dist/bun-s3-patch.js +0 -142
  79. package/dist/bun-s3-patch.js.map +0 -1
  80. package/dist/cors.d.ts +0 -42
  81. package/dist/cors.d.ts.map +0 -1
  82. package/dist/cors.js +0 -117
  83. package/dist/cors.js.map +0 -1
  84. package/dist/dev-patches/aisdk.d.ts +0 -17
  85. package/dist/dev-patches/aisdk.d.ts.map +0 -1
  86. package/dist/dev-patches/aisdk.js +0 -160
  87. package/dist/dev-patches/aisdk.js.map +0 -1
  88. package/dist/dev-patches/gateway.d.ts +0 -16
  89. package/dist/dev-patches/gateway.d.ts.map +0 -1
  90. package/dist/dev-patches/gateway.js +0 -54
  91. package/dist/dev-patches/gateway.js.map +0 -1
  92. package/dist/dev-patches/index.d.ts +0 -21
  93. package/dist/dev-patches/index.d.ts.map +0 -1
  94. package/dist/dev-patches/index.js +0 -33
  95. package/dist/dev-patches/index.js.map +0 -1
  96. package/dist/dev-patches/otel-llm.d.ts +0 -12
  97. package/dist/dev-patches/otel-llm.d.ts.map +0 -1
  98. package/dist/dev-patches/otel-llm.js +0 -352
  99. package/dist/dev-patches/otel-llm.js.map +0 -1
  100. package/dist/devmode.d.ts +0 -3
  101. package/dist/devmode.d.ts.map +0 -1
  102. package/dist/devmode.js +0 -167
  103. package/dist/devmode.js.map +0 -1
  104. package/dist/eval.d.ts +0 -91
  105. package/dist/eval.d.ts.map +0 -1
  106. package/dist/eval.js +0 -16
  107. package/dist/eval.js.map +0 -1
  108. package/dist/handlers/_route-meta.d.ts +0 -22
  109. package/dist/handlers/_route-meta.d.ts.map +0 -1
  110. package/dist/handlers/_route-meta.js +0 -25
  111. package/dist/handlers/_route-meta.js.map +0 -1
  112. package/dist/handlers/cron.d.ts +0 -73
  113. package/dist/handlers/cron.d.ts.map +0 -1
  114. package/dist/handlers/cron.js +0 -43
  115. package/dist/handlers/cron.js.map +0 -1
  116. package/dist/handlers/index.d.ts +0 -6
  117. package/dist/handlers/index.d.ts.map +0 -1
  118. package/dist/handlers/index.js +0 -6
  119. package/dist/handlers/index.js.map +0 -1
  120. package/dist/handlers/sse.d.ts +0 -163
  121. package/dist/handlers/sse.d.ts.map +0 -1
  122. package/dist/handlers/sse.js +0 -175
  123. package/dist/handlers/sse.js.map +0 -1
  124. package/dist/handlers/stream.d.ts +0 -52
  125. package/dist/handlers/stream.d.ts.map +0 -1
  126. package/dist/handlers/stream.js +0 -108
  127. package/dist/handlers/stream.js.map +0 -1
  128. package/dist/handlers/webrtc.d.ts +0 -49
  129. package/dist/handlers/webrtc.d.ts.map +0 -1
  130. package/dist/handlers/webrtc.js +0 -109
  131. package/dist/handlers/webrtc.js.map +0 -1
  132. package/dist/handlers/websocket.d.ts +0 -88
  133. package/dist/handlers/websocket.d.ts.map +0 -1
  134. package/dist/handlers/websocket.js +0 -161
  135. package/dist/handlers/websocket.js.map +0 -1
  136. package/dist/logger/console.d.ts +0 -70
  137. package/dist/logger/console.d.ts.map +0 -1
  138. package/dist/logger/console.js +0 -278
  139. package/dist/logger/console.js.map +0 -1
  140. package/dist/logger/index.d.ts +0 -3
  141. package/dist/logger/index.d.ts.map +0 -1
  142. package/dist/logger/index.js +0 -3
  143. package/dist/logger/index.js.map +0 -1
  144. package/dist/logger/internal.d.ts +0 -79
  145. package/dist/logger/internal.d.ts.map +0 -1
  146. package/dist/logger/internal.js +0 -133
  147. package/dist/logger/internal.js.map +0 -1
  148. package/dist/logger/logger.d.ts +0 -41
  149. package/dist/logger/logger.d.ts.map +0 -1
  150. package/dist/logger/logger.js +0 -2
  151. package/dist/logger/logger.js.map +0 -1
  152. package/dist/logger/user.d.ts +0 -8
  153. package/dist/logger/user.d.ts.map +0 -1
  154. package/dist/logger/user.js +0 -7
  155. package/dist/logger/user.js.map +0 -1
  156. package/dist/logger/util.d.ts +0 -11
  157. package/dist/logger/util.d.ts.map +0 -1
  158. package/dist/logger/util.js +0 -77
  159. package/dist/logger/util.js.map +0 -1
  160. package/dist/middleware.d.ts +0 -105
  161. package/dist/middleware.d.ts.map +0 -1
  162. package/dist/middleware.js +0 -763
  163. package/dist/middleware.js.map +0 -1
  164. package/dist/otel/config.d.ts +0 -19
  165. package/dist/otel/config.d.ts.map +0 -1
  166. package/dist/otel/config.js +0 -26
  167. package/dist/otel/config.js.map +0 -1
  168. package/dist/otel/console.d.ts +0 -33
  169. package/dist/otel/console.d.ts.map +0 -1
  170. package/dist/otel/console.js +0 -86
  171. package/dist/otel/console.js.map +0 -1
  172. package/dist/otel/exporters/index.d.ts +0 -4
  173. package/dist/otel/exporters/index.d.ts.map +0 -1
  174. package/dist/otel/exporters/index.js +0 -4
  175. package/dist/otel/exporters/index.js.map +0 -1
  176. package/dist/otel/exporters/jsonl-log-exporter.d.ts +0 -36
  177. package/dist/otel/exporters/jsonl-log-exporter.d.ts.map +0 -1
  178. package/dist/otel/exporters/jsonl-log-exporter.js +0 -103
  179. package/dist/otel/exporters/jsonl-log-exporter.js.map +0 -1
  180. package/dist/otel/exporters/jsonl-metric-exporter.d.ts +0 -40
  181. package/dist/otel/exporters/jsonl-metric-exporter.d.ts.map +0 -1
  182. package/dist/otel/exporters/jsonl-metric-exporter.js +0 -104
  183. package/dist/otel/exporters/jsonl-metric-exporter.js.map +0 -1
  184. package/dist/otel/exporters/jsonl-trace-exporter.d.ts +0 -36
  185. package/dist/otel/exporters/jsonl-trace-exporter.d.ts.map +0 -1
  186. package/dist/otel/exporters/jsonl-trace-exporter.js +0 -111
  187. package/dist/otel/exporters/jsonl-trace-exporter.js.map +0 -1
  188. package/dist/otel/fetch.d.ts +0 -12
  189. package/dist/otel/fetch.d.ts.map +0 -1
  190. package/dist/otel/fetch.js +0 -82
  191. package/dist/otel/fetch.js.map +0 -1
  192. package/dist/otel/http.d.ts +0 -16
  193. package/dist/otel/http.d.ts.map +0 -1
  194. package/dist/otel/http.js +0 -44
  195. package/dist/otel/http.js.map +0 -1
  196. package/dist/otel/logger.d.ts +0 -37
  197. package/dist/otel/logger.d.ts.map +0 -1
  198. package/dist/otel/logger.js +0 -265
  199. package/dist/otel/logger.js.map +0 -1
  200. package/dist/otel/otel.d.ts +0 -68
  201. package/dist/otel/otel.d.ts.map +0 -1
  202. package/dist/otel/otel.js +0 -245
  203. package/dist/otel/otel.js.map +0 -1
  204. package/dist/otel/tracestate.d.ts +0 -44
  205. package/dist/otel/tracestate.d.ts.map +0 -1
  206. package/dist/otel/tracestate.js +0 -84
  207. package/dist/otel/tracestate.js.map +0 -1
  208. package/dist/router.d.ts +0 -66
  209. package/dist/router.d.ts.map +0 -1
  210. package/dist/router.js +0 -44
  211. package/dist/router.js.map +0 -1
  212. package/dist/services/evalrun/composite.d.ts +0 -21
  213. package/dist/services/evalrun/composite.d.ts.map +0 -1
  214. package/dist/services/evalrun/composite.js +0 -26
  215. package/dist/services/evalrun/composite.js.map +0 -1
  216. package/dist/services/evalrun/http.d.ts +0 -24
  217. package/dist/services/evalrun/http.d.ts.map +0 -1
  218. package/dist/services/evalrun/http.js +0 -115
  219. package/dist/services/evalrun/http.js.map +0 -1
  220. package/dist/services/evalrun/index.d.ts +0 -5
  221. package/dist/services/evalrun/index.d.ts.map +0 -1
  222. package/dist/services/evalrun/index.js +0 -5
  223. package/dist/services/evalrun/index.js.map +0 -1
  224. package/dist/services/evalrun/json.d.ts +0 -21
  225. package/dist/services/evalrun/json.d.ts.map +0 -1
  226. package/dist/services/evalrun/json.js +0 -38
  227. package/dist/services/evalrun/json.js.map +0 -1
  228. package/dist/services/evalrun/local.d.ts +0 -19
  229. package/dist/services/evalrun/local.d.ts.map +0 -1
  230. package/dist/services/evalrun/local.js +0 -22
  231. package/dist/services/evalrun/local.js.map +0 -1
  232. package/dist/services/local/_db.d.ts +0 -4
  233. package/dist/services/local/_db.d.ts.map +0 -1
  234. package/dist/services/local/_db.js +0 -281
  235. package/dist/services/local/_db.js.map +0 -1
  236. package/dist/services/local/_router.d.ts +0 -3
  237. package/dist/services/local/_router.d.ts.map +0 -1
  238. package/dist/services/local/_router.js +0 -28
  239. package/dist/services/local/_router.js.map +0 -1
  240. package/dist/services/local/_util.d.ts +0 -18
  241. package/dist/services/local/_util.d.ts.map +0 -1
  242. package/dist/services/local/_util.js +0 -44
  243. package/dist/services/local/_util.js.map +0 -1
  244. package/dist/services/local/email.d.ts +0 -24
  245. package/dist/services/local/email.d.ts.map +0 -1
  246. package/dist/services/local/email.js +0 -58
  247. package/dist/services/local/email.js.map +0 -1
  248. package/dist/services/local/index.d.ts +0 -10
  249. package/dist/services/local/index.d.ts.map +0 -1
  250. package/dist/services/local/index.js +0 -10
  251. package/dist/services/local/index.js.map +0 -1
  252. package/dist/services/local/keyvalue.d.ts +0 -17
  253. package/dist/services/local/keyvalue.d.ts.map +0 -1
  254. package/dist/services/local/keyvalue.js +0 -133
  255. package/dist/services/local/keyvalue.js.map +0 -1
  256. package/dist/services/local/queue.d.ts +0 -10
  257. package/dist/services/local/queue.d.ts.map +0 -1
  258. package/dist/services/local/queue.js +0 -96
  259. package/dist/services/local/queue.js.map +0 -1
  260. package/dist/services/local/stream.d.ts +0 -12
  261. package/dist/services/local/stream.d.ts.map +0 -1
  262. package/dist/services/local/stream.js +0 -266
  263. package/dist/services/local/stream.js.map +0 -1
  264. package/dist/services/local/task.d.ts +0 -55
  265. package/dist/services/local/task.d.ts.map +0 -1
  266. package/dist/services/local/task.js +0 -1248
  267. package/dist/services/local/task.js.map +0 -1
  268. package/dist/services/local/vector.d.ts +0 -17
  269. package/dist/services/local/vector.d.ts.map +0 -1
  270. package/dist/services/local/vector.js +0 -303
  271. package/dist/services/local/vector.js.map +0 -1
  272. package/dist/services/sandbox/http.d.ts +0 -23
  273. package/dist/services/sandbox/http.d.ts.map +0 -1
  274. package/dist/services/sandbox/http.js +0 -327
  275. package/dist/services/sandbox/http.js.map +0 -1
  276. package/dist/services/sandbox/index.d.ts +0 -2
  277. package/dist/services/sandbox/index.d.ts.map +0 -1
  278. package/dist/services/sandbox/index.js +0 -2
  279. package/dist/services/sandbox/index.js.map +0 -1
  280. package/dist/services/session/composite.d.ts +0 -21
  281. package/dist/services/session/composite.d.ts.map +0 -1
  282. package/dist/services/session/composite.js +0 -26
  283. package/dist/services/session/composite.js.map +0 -1
  284. package/dist/services/session/http.d.ts +0 -34
  285. package/dist/services/session/http.d.ts.map +0 -1
  286. package/dist/services/session/http.js +0 -124
  287. package/dist/services/session/http.js.map +0 -1
  288. package/dist/services/session/index.d.ts +0 -5
  289. package/dist/services/session/index.d.ts.map +0 -1
  290. package/dist/services/session/index.js +0 -5
  291. package/dist/services/session/index.js.map +0 -1
  292. package/dist/services/session/json.d.ts +0 -22
  293. package/dist/services/session/json.d.ts.map +0 -1
  294. package/dist/services/session/json.js +0 -35
  295. package/dist/services/session/json.js.map +0 -1
  296. package/dist/services/session/local.d.ts +0 -19
  297. package/dist/services/session/local.d.ts.map +0 -1
  298. package/dist/services/session/local.js +0 -23
  299. package/dist/services/session/local.js.map +0 -1
  300. package/dist/services/thread/local.d.ts +0 -20
  301. package/dist/services/thread/local.d.ts.map +0 -1
  302. package/dist/services/thread/local.js +0 -158
  303. package/dist/services/thread/local.js.map +0 -1
  304. package/dist/session.d.ts +0 -734
  305. package/dist/session.d.ts.map +0 -1
  306. package/dist/session.js +0 -1140
  307. package/dist/session.js.map +0 -1
  308. package/dist/signature.d.ts +0 -22
  309. package/dist/signature.d.ts.map +0 -1
  310. package/dist/signature.js +0 -63
  311. package/dist/signature.js.map +0 -1
  312. package/dist/validator.d.ts +0 -142
  313. package/dist/validator.d.ts.map +0 -1
  314. package/dist/validator.js +0 -149
  315. package/dist/validator.js.map +0 -1
  316. package/dist/version-check.d.ts +0 -20
  317. package/dist/version-check.d.ts.map +0 -1
  318. package/dist/version-check.js +0 -157
  319. package/dist/version-check.js.map +0 -1
  320. package/dist/web.d.ts +0 -8
  321. package/dist/web.d.ts.map +0 -1
  322. package/dist/web.js +0 -67
  323. package/dist/web.js.map +0 -1
  324. package/dist/webrtc-signaling.d.ts +0 -80
  325. package/dist/webrtc-signaling.d.ts.map +0 -1
  326. package/dist/webrtc-signaling.js +0 -237
  327. package/dist/webrtc-signaling.js.map +0 -1
  328. package/dist/workbench.d.ts +0 -17
  329. package/dist/workbench.d.ts.map +0 -1
  330. package/dist/workbench.js +0 -605
  331. package/dist/workbench.js.map +0 -1
  332. package/src/_config.ts +0 -163
  333. package/src/_context.ts +0 -240
  334. package/src/_events.ts +0 -142
  335. package/src/_globals.ts +0 -92
  336. package/src/_idle.ts +0 -10
  337. package/src/_metadata.ts +0 -407
  338. package/src/_process-protection.ts +0 -71
  339. package/src/_server.ts +0 -109
  340. package/src/_services.ts +0 -379
  341. package/src/_standalone.ts +0 -710
  342. package/src/_tokens.ts +0 -114
  343. package/src/_util.ts +0 -62
  344. package/src/_validation.ts +0 -119
  345. package/src/_waituntil.ts +0 -188
  346. package/src/agent.ts +0 -2739
  347. package/src/app.ts +0 -769
  348. package/src/bootstrap.ts +0 -321
  349. package/src/bun-s3-patch.ts +0 -224
  350. package/src/cors.ts +0 -137
  351. package/src/dev-patches/aisdk.ts +0 -169
  352. package/src/dev-patches/gateway.ts +0 -68
  353. package/src/dev-patches/index.ts +0 -37
  354. package/src/dev-patches/otel-llm.ts +0 -405
  355. package/src/devmode.ts +0 -171
  356. package/src/eval.ts +0 -109
  357. package/src/globals.d.ts +0 -28
  358. package/src/handlers/_route-meta.ts +0 -33
  359. package/src/handlers/cron.ts +0 -141
  360. package/src/handlers/index.ts +0 -18
  361. package/src/handlers/sse.ts +0 -358
  362. package/src/handlers/stream.ts +0 -121
  363. package/src/handlers/webrtc.ts +0 -125
  364. package/src/handlers/websocket.ts +0 -203
  365. package/src/logger/console.ts +0 -323
  366. package/src/logger/index.ts +0 -2
  367. package/src/logger/internal.ts +0 -165
  368. package/src/logger/logger.ts +0 -44
  369. package/src/logger/user.ts +0 -15
  370. package/src/logger/util.ts +0 -80
  371. package/src/middleware.ts +0 -1095
  372. package/src/otel/config.ts +0 -47
  373. package/src/otel/console.ts +0 -91
  374. package/src/otel/exporters/README.md +0 -217
  375. package/src/otel/exporters/index.ts +0 -3
  376. package/src/otel/exporters/jsonl-log-exporter.ts +0 -113
  377. package/src/otel/exporters/jsonl-metric-exporter.ts +0 -120
  378. package/src/otel/exporters/jsonl-trace-exporter.ts +0 -121
  379. package/src/otel/fetch.ts +0 -105
  380. package/src/otel/http.ts +0 -53
  381. package/src/otel/logger.ts +0 -293
  382. package/src/otel/otel.ts +0 -354
  383. package/src/otel/tracestate.ts +0 -108
  384. package/src/router.ts +0 -75
  385. package/src/services/evalrun/composite.ts +0 -34
  386. package/src/services/evalrun/http.ts +0 -167
  387. package/src/services/evalrun/index.ts +0 -4
  388. package/src/services/evalrun/json.ts +0 -46
  389. package/src/services/evalrun/local.ts +0 -28
  390. package/src/services/local/README.md +0 -1576
  391. package/src/services/local/_db.ts +0 -353
  392. package/src/services/local/_router.ts +0 -40
  393. package/src/services/local/_util.ts +0 -55
  394. package/src/services/local/email.ts +0 -91
  395. package/src/services/local/index.ts +0 -9
  396. package/src/services/local/keyvalue.ts +0 -174
  397. package/src/services/local/queue.ts +0 -145
  398. package/src/services/local/stream.ts +0 -358
  399. package/src/services/local/task.ts +0 -1711
  400. package/src/services/local/vector.ts +0 -438
  401. package/src/services/sandbox/http.ts +0 -522
  402. package/src/services/sandbox/index.ts +0 -1
  403. package/src/services/session/composite.ts +0 -33
  404. package/src/services/session/http.ts +0 -167
  405. package/src/services/session/index.ts +0 -4
  406. package/src/services/session/json.ts +0 -42
  407. package/src/services/session/local.ts +0 -33
  408. package/src/services/thread/local.ts +0 -199
  409. package/src/session.ts +0 -1960
  410. package/src/signature.ts +0 -82
  411. package/src/validator.ts +0 -283
  412. package/src/version-check.ts +0 -184
  413. package/src/web.ts +0 -76
  414. package/src/webrtc-signaling.ts +0 -288
  415. package/src/workbench.ts +0 -725
@@ -1,438 +0,0 @@
1
- import type { Database } from 'bun:sqlite';
2
- import type {
3
- VectorStorage,
4
- VectorUpsertParams,
5
- VectorUpsertResult,
6
- VectorResult,
7
- VectorResultNotFound,
8
- VectorSearchResultWithDocument,
9
- VectorSearchParams,
10
- VectorSearchResult,
11
- VectorNamespaceStats,
12
- VectorNamespaceStatsWithSamples,
13
- VectorGetAllStatsParams,
14
- VectorStatsPaginated,
15
- } from '@agentuity/core';
16
- import { randomUUID } from 'node:crypto';
17
- import { simpleEmbedding, cosineSimilarity, now } from './_util';
18
-
19
- export class LocalVectorStorage implements VectorStorage {
20
- #db: Database;
21
- #projectPath: string;
22
-
23
- constructor(db: Database, projectPath: string) {
24
- this.#db = db;
25
- this.#projectPath = projectPath;
26
- }
27
-
28
- async upsert(name: string, ...documents: VectorUpsertParams[]): Promise<VectorUpsertResult[]> {
29
- if (!name?.trim()) {
30
- throw new Error('Vector storage name is required');
31
- }
32
- if (documents.length === 0) {
33
- throw new Error('At least one document is required');
34
- }
35
-
36
- const results: VectorUpsertResult[] = [];
37
- const stmt = this.#db.prepare(`
38
- INSERT INTO vector_storage (
39
- project_path, name, id, key, embedding, document, metadata, created_at, updated_at
40
- )
41
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
42
- ON CONFLICT(project_path, name, key)
43
- DO UPDATE SET
44
- embedding = excluded.embedding,
45
- document = excluded.document,
46
- metadata = excluded.metadata,
47
- updated_at = excluded.updated_at
48
- `);
49
-
50
- for (const doc of documents) {
51
- if (!doc.key?.trim()) {
52
- throw new Error('Each document must have a non-empty key');
53
- }
54
-
55
- // Generate or use provided embeddings
56
- let embedding: number[];
57
- if ('embeddings' in doc && doc.embeddings) {
58
- if (!Array.isArray(doc.embeddings) || doc.embeddings.length === 0) {
59
- throw new Error('Embeddings must be a non-empty array');
60
- }
61
- embedding = doc.embeddings;
62
- } else if ('document' in doc && doc.document) {
63
- if (!doc.document?.trim()) {
64
- throw new Error('Document text must be non-empty');
65
- }
66
- embedding = simpleEmbedding(doc.document);
67
- } else {
68
- throw new Error('Each document must have either embeddings or document text');
69
- }
70
-
71
- const id = randomUUID();
72
- const timestamp = now();
73
- const embeddingJson = JSON.stringify(embedding);
74
- const documentText = 'document' in doc ? doc.document : null;
75
- const metadata = doc.metadata ? JSON.stringify(doc.metadata) : null;
76
-
77
- stmt.run(
78
- this.#projectPath,
79
- name,
80
- id,
81
- doc.key,
82
- embeddingJson,
83
- documentText ?? null,
84
- metadata ?? null,
85
- timestamp,
86
- timestamp
87
- );
88
-
89
- const row = this.#db
90
- .prepare(
91
- 'SELECT id FROM vector_storage WHERE project_path = ? AND name = ? AND key = ?'
92
- )
93
- .get(this.#projectPath, name, doc.key) as { id: string } | undefined;
94
-
95
- const actualId = row?.id ?? id;
96
- results.push({ key: doc.key, id: actualId });
97
- }
98
-
99
- return results;
100
- }
101
-
102
- async get<T extends Record<string, unknown> = Record<string, unknown>>(
103
- name: string,
104
- key: string
105
- ): Promise<VectorResult<T>> {
106
- if (!name?.trim() || !key?.trim()) {
107
- throw new Error('Vector storage name and key are required');
108
- }
109
-
110
- const query = this.#db.query(`
111
- SELECT id, key, embedding, document, metadata
112
- FROM vector_storage
113
- WHERE project_path = ? AND name = ? AND key = ?
114
- `);
115
-
116
- const row = query.get(this.#projectPath, name, key) as {
117
- id: string;
118
- key: string;
119
- embedding: string;
120
- document: string | null;
121
- metadata: string | null;
122
- } | null;
123
-
124
- if (!row) {
125
- return { exists: false } as VectorResultNotFound;
126
- }
127
-
128
- return {
129
- exists: true,
130
- data: {
131
- id: row.id,
132
- key: row.key,
133
- embeddings: JSON.parse(row.embedding),
134
- document: row.document || undefined,
135
- metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
136
- similarity: 1.0, // Perfect match for direct get
137
- } as VectorSearchResultWithDocument<T>,
138
- };
139
- }
140
-
141
- async getMany<T extends Record<string, unknown> = Record<string, unknown>>(
142
- name: string,
143
- ...keys: string[]
144
- ): Promise<Map<string, VectorSearchResultWithDocument<T>>> {
145
- if (!name?.trim()) {
146
- throw new Error('Vector storage name is required');
147
- }
148
- if (keys.length === 0) {
149
- return new Map();
150
- }
151
-
152
- const results = await Promise.all(
153
- keys.map(async (key) => {
154
- const result = await this.get<T>(name, key);
155
- return { key, result };
156
- })
157
- );
158
-
159
- const map = new Map<string, VectorSearchResultWithDocument<T>>();
160
- for (const { key, result } of results) {
161
- if (result.exists) {
162
- map.set(key, result.data);
163
- }
164
- }
165
-
166
- return map;
167
- }
168
-
169
- async search<T extends Record<string, unknown> = Record<string, unknown>>(
170
- name: string,
171
- params: VectorSearchParams<T>
172
- ): Promise<VectorSearchResult<T>[]> {
173
- if (!name?.trim()) {
174
- throw new Error('Vector storage name is required');
175
- }
176
- if (!params.query?.trim()) {
177
- throw new Error('Query is required');
178
- }
179
-
180
- // Fetch all vectors for this name
181
- const query = this.#db.query(`
182
- SELECT id, key, embedding, metadata
183
- FROM vector_storage
184
- WHERE project_path = ? AND name = ?
185
- `);
186
-
187
- const rows = query.all(this.#projectPath, name) as Array<{
188
- id: string;
189
- key: string;
190
- embedding: string;
191
- metadata: string | null;
192
- }>;
193
-
194
- // If no vectors exist, return empty results
195
- const row = rows[0];
196
- if (!row) {
197
- return [];
198
- }
199
-
200
- // Detect dimensionality from first stored vector
201
- const firstEmbedding = JSON.parse(row.embedding);
202
- const dimensions = firstEmbedding.length;
203
-
204
- // Generate query embedding with matching dimensions
205
- const queryEmbedding = simpleEmbedding(params.query, dimensions);
206
-
207
- // Calculate similarities
208
- const results: Array<VectorSearchResult<T> & { similarity: number }> = [];
209
-
210
- for (const row of rows) {
211
- const embedding = JSON.parse(row.embedding);
212
- const similarity = cosineSimilarity(queryEmbedding, embedding);
213
-
214
- // Apply similarity threshold
215
- if (params.similarity !== undefined && similarity < params.similarity) {
216
- continue;
217
- }
218
-
219
- // Apply metadata filter
220
- if (params.metadata) {
221
- const rowMetadata = row.metadata ? JSON.parse(row.metadata) : {};
222
- const matches = Object.entries(params.metadata).every(
223
- ([key, value]) => rowMetadata[key] === value
224
- );
225
- if (!matches) {
226
- continue;
227
- }
228
- }
229
-
230
- results.push({
231
- id: row.id,
232
- key: row.key,
233
- metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
234
- similarity,
235
- } as VectorSearchResult<T> & { similarity: number });
236
- }
237
-
238
- // Sort by similarity descending
239
- results.sort((a, b) => b.similarity - a.similarity);
240
-
241
- // Apply limit
242
- const limit = params.limit || 10;
243
- return results.slice(0, limit);
244
- }
245
-
246
- async delete(name: string, ...keys: string[]): Promise<number> {
247
- if (!name?.trim()) {
248
- throw new Error('Vector storage name is required');
249
- }
250
- if (keys.length === 0) {
251
- return 0;
252
- }
253
-
254
- const placeholders = keys.map(() => '?').join(', ');
255
- const stmt = this.#db.prepare(`
256
- DELETE FROM vector_storage
257
- WHERE project_path = ? AND name = ? AND key IN (${placeholders})
258
- `);
259
-
260
- const result = stmt.run(this.#projectPath, name, ...keys);
261
- return result.changes;
262
- }
263
-
264
- async exists(name: string): Promise<boolean> {
265
- if (!name?.trim()) {
266
- throw new Error('Vector storage name is required');
267
- }
268
-
269
- const query = this.#db.query(`
270
- SELECT COUNT(*) as count
271
- FROM vector_storage
272
- WHERE project_path = ? AND name = ?
273
- `);
274
-
275
- const { count } = query.get(this.#projectPath, name) as { count: number };
276
- return count > 0;
277
- }
278
-
279
- async getStats(name: string): Promise<VectorNamespaceStatsWithSamples> {
280
- if (!name?.trim()) {
281
- throw new Error('Vector storage name is required');
282
- }
283
-
284
- const countQuery = this.#db.query(`
285
- SELECT COUNT(*) as count,
286
- MIN(created_at) as created_at, MAX(updated_at) as last_used
287
- FROM vector_storage
288
- WHERE project_path = ? AND name = ?
289
- `);
290
-
291
- const stats = countQuery.get(this.#projectPath, name) as {
292
- count: number;
293
- created_at: number | null;
294
- last_used: number | null;
295
- };
296
-
297
- if (stats.count === 0) {
298
- return { sum: 0, count: 0 };
299
- }
300
-
301
- const sampleQuery = this.#db.query(`
302
- SELECT key, embedding, document, metadata, created_at, updated_at
303
- FROM vector_storage
304
- WHERE project_path = ? AND name = ?
305
- LIMIT 20
306
- `);
307
-
308
- const samples = sampleQuery.all(this.#projectPath, name) as Array<{
309
- key: string;
310
- embedding: string;
311
- document: string | null;
312
- metadata: string | null;
313
- created_at: number;
314
- updated_at: number;
315
- }>;
316
-
317
- const encoder = new TextEncoder();
318
- let totalSum = 0;
319
- const sampledResults: VectorNamespaceStatsWithSamples['sampledResults'] = {};
320
- for (const sample of samples) {
321
- const embeddingBytes = encoder.encode(sample.embedding).length;
322
- const documentBytes = sample.document ? encoder.encode(sample.document).length : 0;
323
- const size = embeddingBytes + documentBytes;
324
- totalSum += size;
325
- sampledResults![sample.key] = {
326
- embedding: JSON.parse(sample.embedding),
327
- document: sample.document || undefined,
328
- size,
329
- metadata: sample.metadata ? JSON.parse(sample.metadata) : undefined,
330
- firstUsed: sample.created_at,
331
- lastUsed: sample.updated_at,
332
- };
333
- }
334
-
335
- // Estimate total size based on sampled average if we have more records than samples
336
- const estimatedSum =
337
- stats.count <= samples.length
338
- ? totalSum
339
- : Math.round((totalSum / samples.length) * stats.count);
340
-
341
- return {
342
- sum: estimatedSum,
343
- count: stats.count,
344
- createdAt: stats.created_at || undefined,
345
- lastUsed: stats.last_used || undefined,
346
- sampledResults,
347
- };
348
- }
349
-
350
- async getAllStats(
351
- _params?: VectorGetAllStatsParams
352
- ): Promise<Record<string, VectorNamespaceStats> | VectorStatsPaginated> {
353
- const query = this.#db.query(`
354
- SELECT name, embedding, document
355
- FROM vector_storage
356
- WHERE project_path = ?
357
- `);
358
-
359
- const rows = query.all(this.#projectPath) as Array<{
360
- name: string;
361
- embedding: string;
362
- document: string | null;
363
- }>;
364
-
365
- const encoder = new TextEncoder();
366
- const namespaceStats = new Map<
367
- string,
368
- { sum: number; count: number; createdAt?: number; lastUsed?: number }
369
- >();
370
-
371
- for (const row of rows) {
372
- const embeddingBytes = encoder.encode(row.embedding).length;
373
- const documentBytes = row.document ? encoder.encode(row.document).length : 0;
374
- const size = embeddingBytes + documentBytes;
375
-
376
- const existing = namespaceStats.get(row.name);
377
- if (existing) {
378
- existing.sum += size;
379
- existing.count += 1;
380
- } else {
381
- namespaceStats.set(row.name, { sum: size, count: 1 });
382
- }
383
- }
384
-
385
- // Get timestamps in a separate query
386
- const timestampQuery = this.#db.query(`
387
- SELECT name, MIN(created_at) as created_at, MAX(updated_at) as last_used
388
- FROM vector_storage
389
- WHERE project_path = ?
390
- GROUP BY name
391
- `);
392
-
393
- const timestamps = timestampQuery.all(this.#projectPath) as Array<{
394
- name: string;
395
- created_at: number | null;
396
- last_used: number | null;
397
- }>;
398
-
399
- for (const ts of timestamps) {
400
- const stats = namespaceStats.get(ts.name);
401
- if (stats) {
402
- stats.createdAt = ts.created_at || undefined;
403
- stats.lastUsed = ts.last_used || undefined;
404
- }
405
- }
406
-
407
- const results: Record<string, VectorNamespaceStats> = {};
408
- for (const [name, stats] of namespaceStats) {
409
- results[name] = stats;
410
- }
411
-
412
- return results;
413
- }
414
-
415
- async getNamespaces(): Promise<string[]> {
416
- const query = this.#db.query(`
417
- SELECT DISTINCT name
418
- FROM vector_storage
419
- WHERE project_path = ?
420
- `);
421
-
422
- const rows = query.all(this.#projectPath) as Array<{ name: string }>;
423
- return rows.map((row) => row.name);
424
- }
425
-
426
- async deleteNamespace(name: string): Promise<void> {
427
- if (!name?.trim()) {
428
- throw new Error('Vector storage name is required');
429
- }
430
-
431
- const stmt = this.#db.prepare(`
432
- DELETE FROM vector_storage
433
- WHERE project_path = ? AND name = ?
434
- `);
435
-
436
- stmt.run(this.#projectPath, name);
437
- }
438
- }