@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.
- package/dist/index.d.ts +37 -65
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +59 -61
- package/dist/index.js.map +1 -1
- package/package.json +9 -38
- package/src/index.ts +58 -259
- package/AGENTS.md +0 -116
- package/dist/_config.d.ts +0 -100
- package/dist/_config.d.ts.map +0 -1
- package/dist/_config.js +0 -147
- package/dist/_config.js.map +0 -1
- package/dist/_context.d.ts +0 -80
- package/dist/_context.d.ts.map +0 -1
- package/dist/_context.js +0 -160
- package/dist/_context.js.map +0 -1
- package/dist/_events.d.ts +0 -64
- package/dist/_events.d.ts.map +0 -1
- package/dist/_events.js +0 -92
- package/dist/_events.js.map +0 -1
- package/dist/_globals.d.ts +0 -58
- package/dist/_globals.d.ts.map +0 -1
- package/dist/_globals.js +0 -71
- package/dist/_globals.js.map +0 -1
- package/dist/_idle.d.ts +0 -7
- package/dist/_idle.d.ts.map +0 -1
- package/dist/_idle.js +0 -10
- package/dist/_idle.js.map +0 -1
- package/dist/_metadata.d.ts +0 -117
- package/dist/_metadata.d.ts.map +0 -1
- package/dist/_metadata.js +0 -268
- package/dist/_metadata.js.map +0 -1
- package/dist/_process-protection.d.ts +0 -27
- package/dist/_process-protection.d.ts.map +0 -1
- package/dist/_process-protection.js +0 -56
- package/dist/_process-protection.js.map +0 -1
- package/dist/_server.d.ts +0 -50
- package/dist/_server.d.ts.map +0 -1
- package/dist/_server.js +0 -89
- package/dist/_server.js.map +0 -1
- package/dist/_services.d.ts +0 -25
- package/dist/_services.d.ts.map +0 -1
- package/dist/_services.js +0 -286
- package/dist/_services.js.map +0 -1
- package/dist/_standalone.d.ts +0 -212
- package/dist/_standalone.d.ts.map +0 -1
- package/dist/_standalone.js +0 -556
- package/dist/_standalone.js.map +0 -1
- package/dist/_tokens.d.ts +0 -12
- package/dist/_tokens.d.ts.map +0 -1
- package/dist/_tokens.js +0 -97
- package/dist/_tokens.js.map +0 -1
- package/dist/_util.d.ts +0 -16
- package/dist/_util.d.ts.map +0 -1
- package/dist/_util.js +0 -54
- package/dist/_util.js.map +0 -1
- package/dist/_validation.d.ts +0 -89
- package/dist/_validation.d.ts.map +0 -1
- package/dist/_validation.js +0 -29
- package/dist/_validation.js.map +0 -1
- package/dist/_waituntil.d.ts +0 -32
- package/dist/_waituntil.d.ts.map +0 -1
- package/dist/_waituntil.js +0 -156
- package/dist/_waituntil.js.map +0 -1
- package/dist/agent.d.ts +0 -1262
- package/dist/agent.d.ts.map +0 -1
- package/dist/agent.js +0 -981
- package/dist/agent.js.map +0 -1
- package/dist/app.d.ts +0 -514
- package/dist/app.d.ts.map +0 -1
- package/dist/app.js +0 -228
- package/dist/app.js.map +0 -1
- package/dist/bootstrap.d.ts +0 -44
- package/dist/bootstrap.d.ts.map +0 -1
- package/dist/bootstrap.js +0 -259
- package/dist/bootstrap.js.map +0 -1
- package/dist/bun-s3-patch.d.ts +0 -37
- package/dist/bun-s3-patch.d.ts.map +0 -1
- package/dist/bun-s3-patch.js +0 -142
- package/dist/bun-s3-patch.js.map +0 -1
- package/dist/cors.d.ts +0 -42
- package/dist/cors.d.ts.map +0 -1
- package/dist/cors.js +0 -117
- package/dist/cors.js.map +0 -1
- package/dist/dev-patches/aisdk.d.ts +0 -17
- package/dist/dev-patches/aisdk.d.ts.map +0 -1
- package/dist/dev-patches/aisdk.js +0 -160
- package/dist/dev-patches/aisdk.js.map +0 -1
- package/dist/dev-patches/gateway.d.ts +0 -16
- package/dist/dev-patches/gateway.d.ts.map +0 -1
- package/dist/dev-patches/gateway.js +0 -54
- package/dist/dev-patches/gateway.js.map +0 -1
- package/dist/dev-patches/index.d.ts +0 -21
- package/dist/dev-patches/index.d.ts.map +0 -1
- package/dist/dev-patches/index.js +0 -33
- package/dist/dev-patches/index.js.map +0 -1
- package/dist/dev-patches/otel-llm.d.ts +0 -12
- package/dist/dev-patches/otel-llm.d.ts.map +0 -1
- package/dist/dev-patches/otel-llm.js +0 -352
- package/dist/dev-patches/otel-llm.js.map +0 -1
- package/dist/devmode.d.ts +0 -3
- package/dist/devmode.d.ts.map +0 -1
- package/dist/devmode.js +0 -167
- package/dist/devmode.js.map +0 -1
- package/dist/eval.d.ts +0 -91
- package/dist/eval.d.ts.map +0 -1
- package/dist/eval.js +0 -16
- package/dist/eval.js.map +0 -1
- package/dist/handlers/_route-meta.d.ts +0 -22
- package/dist/handlers/_route-meta.d.ts.map +0 -1
- package/dist/handlers/_route-meta.js +0 -25
- package/dist/handlers/_route-meta.js.map +0 -1
- package/dist/handlers/cron.d.ts +0 -73
- package/dist/handlers/cron.d.ts.map +0 -1
- package/dist/handlers/cron.js +0 -43
- package/dist/handlers/cron.js.map +0 -1
- package/dist/handlers/index.d.ts +0 -6
- package/dist/handlers/index.d.ts.map +0 -1
- package/dist/handlers/index.js +0 -6
- package/dist/handlers/index.js.map +0 -1
- package/dist/handlers/sse.d.ts +0 -163
- package/dist/handlers/sse.d.ts.map +0 -1
- package/dist/handlers/sse.js +0 -175
- package/dist/handlers/sse.js.map +0 -1
- package/dist/handlers/stream.d.ts +0 -52
- package/dist/handlers/stream.d.ts.map +0 -1
- package/dist/handlers/stream.js +0 -108
- package/dist/handlers/stream.js.map +0 -1
- package/dist/handlers/webrtc.d.ts +0 -49
- package/dist/handlers/webrtc.d.ts.map +0 -1
- package/dist/handlers/webrtc.js +0 -109
- package/dist/handlers/webrtc.js.map +0 -1
- package/dist/handlers/websocket.d.ts +0 -88
- package/dist/handlers/websocket.d.ts.map +0 -1
- package/dist/handlers/websocket.js +0 -161
- package/dist/handlers/websocket.js.map +0 -1
- package/dist/logger/console.d.ts +0 -70
- package/dist/logger/console.d.ts.map +0 -1
- package/dist/logger/console.js +0 -278
- package/dist/logger/console.js.map +0 -1
- package/dist/logger/index.d.ts +0 -3
- package/dist/logger/index.d.ts.map +0 -1
- package/dist/logger/index.js +0 -3
- package/dist/logger/index.js.map +0 -1
- package/dist/logger/internal.d.ts +0 -79
- package/dist/logger/internal.d.ts.map +0 -1
- package/dist/logger/internal.js +0 -133
- package/dist/logger/internal.js.map +0 -1
- package/dist/logger/logger.d.ts +0 -41
- package/dist/logger/logger.d.ts.map +0 -1
- package/dist/logger/logger.js +0 -2
- package/dist/logger/logger.js.map +0 -1
- package/dist/logger/user.d.ts +0 -8
- package/dist/logger/user.d.ts.map +0 -1
- package/dist/logger/user.js +0 -7
- package/dist/logger/user.js.map +0 -1
- package/dist/logger/util.d.ts +0 -11
- package/dist/logger/util.d.ts.map +0 -1
- package/dist/logger/util.js +0 -77
- package/dist/logger/util.js.map +0 -1
- package/dist/middleware.d.ts +0 -105
- package/dist/middleware.d.ts.map +0 -1
- package/dist/middleware.js +0 -763
- package/dist/middleware.js.map +0 -1
- package/dist/otel/config.d.ts +0 -19
- package/dist/otel/config.d.ts.map +0 -1
- package/dist/otel/config.js +0 -26
- package/dist/otel/config.js.map +0 -1
- package/dist/otel/console.d.ts +0 -33
- package/dist/otel/console.d.ts.map +0 -1
- package/dist/otel/console.js +0 -86
- package/dist/otel/console.js.map +0 -1
- package/dist/otel/exporters/index.d.ts +0 -4
- package/dist/otel/exporters/index.d.ts.map +0 -1
- package/dist/otel/exporters/index.js +0 -4
- package/dist/otel/exporters/index.js.map +0 -1
- package/dist/otel/exporters/jsonl-log-exporter.d.ts +0 -36
- package/dist/otel/exporters/jsonl-log-exporter.d.ts.map +0 -1
- package/dist/otel/exporters/jsonl-log-exporter.js +0 -103
- package/dist/otel/exporters/jsonl-log-exporter.js.map +0 -1
- package/dist/otel/exporters/jsonl-metric-exporter.d.ts +0 -40
- package/dist/otel/exporters/jsonl-metric-exporter.d.ts.map +0 -1
- package/dist/otel/exporters/jsonl-metric-exporter.js +0 -104
- package/dist/otel/exporters/jsonl-metric-exporter.js.map +0 -1
- package/dist/otel/exporters/jsonl-trace-exporter.d.ts +0 -36
- package/dist/otel/exporters/jsonl-trace-exporter.d.ts.map +0 -1
- package/dist/otel/exporters/jsonl-trace-exporter.js +0 -111
- package/dist/otel/exporters/jsonl-trace-exporter.js.map +0 -1
- package/dist/otel/fetch.d.ts +0 -12
- package/dist/otel/fetch.d.ts.map +0 -1
- package/dist/otel/fetch.js +0 -82
- package/dist/otel/fetch.js.map +0 -1
- package/dist/otel/http.d.ts +0 -16
- package/dist/otel/http.d.ts.map +0 -1
- package/dist/otel/http.js +0 -44
- package/dist/otel/http.js.map +0 -1
- package/dist/otel/logger.d.ts +0 -37
- package/dist/otel/logger.d.ts.map +0 -1
- package/dist/otel/logger.js +0 -265
- package/dist/otel/logger.js.map +0 -1
- package/dist/otel/otel.d.ts +0 -68
- package/dist/otel/otel.d.ts.map +0 -1
- package/dist/otel/otel.js +0 -245
- package/dist/otel/otel.js.map +0 -1
- package/dist/otel/tracestate.d.ts +0 -44
- package/dist/otel/tracestate.d.ts.map +0 -1
- package/dist/otel/tracestate.js +0 -84
- package/dist/otel/tracestate.js.map +0 -1
- package/dist/router.d.ts +0 -66
- package/dist/router.d.ts.map +0 -1
- package/dist/router.js +0 -44
- package/dist/router.js.map +0 -1
- package/dist/services/evalrun/composite.d.ts +0 -21
- package/dist/services/evalrun/composite.d.ts.map +0 -1
- package/dist/services/evalrun/composite.js +0 -26
- package/dist/services/evalrun/composite.js.map +0 -1
- package/dist/services/evalrun/http.d.ts +0 -24
- package/dist/services/evalrun/http.d.ts.map +0 -1
- package/dist/services/evalrun/http.js +0 -115
- package/dist/services/evalrun/http.js.map +0 -1
- package/dist/services/evalrun/index.d.ts +0 -5
- package/dist/services/evalrun/index.d.ts.map +0 -1
- package/dist/services/evalrun/index.js +0 -5
- package/dist/services/evalrun/index.js.map +0 -1
- package/dist/services/evalrun/json.d.ts +0 -21
- package/dist/services/evalrun/json.d.ts.map +0 -1
- package/dist/services/evalrun/json.js +0 -38
- package/dist/services/evalrun/json.js.map +0 -1
- package/dist/services/evalrun/local.d.ts +0 -19
- package/dist/services/evalrun/local.d.ts.map +0 -1
- package/dist/services/evalrun/local.js +0 -22
- package/dist/services/evalrun/local.js.map +0 -1
- package/dist/services/local/_db.d.ts +0 -4
- package/dist/services/local/_db.d.ts.map +0 -1
- package/dist/services/local/_db.js +0 -281
- package/dist/services/local/_db.js.map +0 -1
- package/dist/services/local/_router.d.ts +0 -3
- package/dist/services/local/_router.d.ts.map +0 -1
- package/dist/services/local/_router.js +0 -28
- package/dist/services/local/_router.js.map +0 -1
- package/dist/services/local/_util.d.ts +0 -18
- package/dist/services/local/_util.d.ts.map +0 -1
- package/dist/services/local/_util.js +0 -44
- package/dist/services/local/_util.js.map +0 -1
- package/dist/services/local/email.d.ts +0 -24
- package/dist/services/local/email.d.ts.map +0 -1
- package/dist/services/local/email.js +0 -58
- package/dist/services/local/email.js.map +0 -1
- package/dist/services/local/index.d.ts +0 -10
- package/dist/services/local/index.d.ts.map +0 -1
- package/dist/services/local/index.js +0 -10
- package/dist/services/local/index.js.map +0 -1
- package/dist/services/local/keyvalue.d.ts +0 -17
- package/dist/services/local/keyvalue.d.ts.map +0 -1
- package/dist/services/local/keyvalue.js +0 -133
- package/dist/services/local/keyvalue.js.map +0 -1
- package/dist/services/local/queue.d.ts +0 -10
- package/dist/services/local/queue.d.ts.map +0 -1
- package/dist/services/local/queue.js +0 -96
- package/dist/services/local/queue.js.map +0 -1
- package/dist/services/local/stream.d.ts +0 -12
- package/dist/services/local/stream.d.ts.map +0 -1
- package/dist/services/local/stream.js +0 -266
- package/dist/services/local/stream.js.map +0 -1
- package/dist/services/local/task.d.ts +0 -55
- package/dist/services/local/task.d.ts.map +0 -1
- package/dist/services/local/task.js +0 -1248
- package/dist/services/local/task.js.map +0 -1
- package/dist/services/local/vector.d.ts +0 -17
- package/dist/services/local/vector.d.ts.map +0 -1
- package/dist/services/local/vector.js +0 -303
- package/dist/services/local/vector.js.map +0 -1
- package/dist/services/sandbox/http.d.ts +0 -23
- package/dist/services/sandbox/http.d.ts.map +0 -1
- package/dist/services/sandbox/http.js +0 -327
- package/dist/services/sandbox/http.js.map +0 -1
- package/dist/services/sandbox/index.d.ts +0 -2
- package/dist/services/sandbox/index.d.ts.map +0 -1
- package/dist/services/sandbox/index.js +0 -2
- package/dist/services/sandbox/index.js.map +0 -1
- package/dist/services/session/composite.d.ts +0 -21
- package/dist/services/session/composite.d.ts.map +0 -1
- package/dist/services/session/composite.js +0 -26
- package/dist/services/session/composite.js.map +0 -1
- package/dist/services/session/http.d.ts +0 -34
- package/dist/services/session/http.d.ts.map +0 -1
- package/dist/services/session/http.js +0 -124
- package/dist/services/session/http.js.map +0 -1
- package/dist/services/session/index.d.ts +0 -5
- package/dist/services/session/index.d.ts.map +0 -1
- package/dist/services/session/index.js +0 -5
- package/dist/services/session/index.js.map +0 -1
- package/dist/services/session/json.d.ts +0 -22
- package/dist/services/session/json.d.ts.map +0 -1
- package/dist/services/session/json.js +0 -35
- package/dist/services/session/json.js.map +0 -1
- package/dist/services/session/local.d.ts +0 -19
- package/dist/services/session/local.d.ts.map +0 -1
- package/dist/services/session/local.js +0 -23
- package/dist/services/session/local.js.map +0 -1
- package/dist/services/thread/local.d.ts +0 -20
- package/dist/services/thread/local.d.ts.map +0 -1
- package/dist/services/thread/local.js +0 -158
- package/dist/services/thread/local.js.map +0 -1
- package/dist/session.d.ts +0 -734
- package/dist/session.d.ts.map +0 -1
- package/dist/session.js +0 -1140
- package/dist/session.js.map +0 -1
- package/dist/signature.d.ts +0 -22
- package/dist/signature.d.ts.map +0 -1
- package/dist/signature.js +0 -63
- package/dist/signature.js.map +0 -1
- package/dist/validator.d.ts +0 -142
- package/dist/validator.d.ts.map +0 -1
- package/dist/validator.js +0 -149
- package/dist/validator.js.map +0 -1
- package/dist/version-check.d.ts +0 -20
- package/dist/version-check.d.ts.map +0 -1
- package/dist/version-check.js +0 -157
- package/dist/version-check.js.map +0 -1
- package/dist/web.d.ts +0 -8
- package/dist/web.d.ts.map +0 -1
- package/dist/web.js +0 -67
- package/dist/web.js.map +0 -1
- package/dist/webrtc-signaling.d.ts +0 -80
- package/dist/webrtc-signaling.d.ts.map +0 -1
- package/dist/webrtc-signaling.js +0 -237
- package/dist/webrtc-signaling.js.map +0 -1
- package/dist/workbench.d.ts +0 -17
- package/dist/workbench.d.ts.map +0 -1
- package/dist/workbench.js +0 -605
- package/dist/workbench.js.map +0 -1
- package/src/_config.ts +0 -163
- package/src/_context.ts +0 -240
- package/src/_events.ts +0 -142
- package/src/_globals.ts +0 -92
- package/src/_idle.ts +0 -10
- package/src/_metadata.ts +0 -407
- package/src/_process-protection.ts +0 -71
- package/src/_server.ts +0 -109
- package/src/_services.ts +0 -379
- package/src/_standalone.ts +0 -710
- package/src/_tokens.ts +0 -114
- package/src/_util.ts +0 -62
- package/src/_validation.ts +0 -119
- package/src/_waituntil.ts +0 -188
- package/src/agent.ts +0 -2739
- package/src/app.ts +0 -769
- package/src/bootstrap.ts +0 -321
- package/src/bun-s3-patch.ts +0 -224
- package/src/cors.ts +0 -137
- package/src/dev-patches/aisdk.ts +0 -169
- package/src/dev-patches/gateway.ts +0 -68
- package/src/dev-patches/index.ts +0 -37
- package/src/dev-patches/otel-llm.ts +0 -405
- package/src/devmode.ts +0 -171
- package/src/eval.ts +0 -109
- package/src/globals.d.ts +0 -28
- package/src/handlers/_route-meta.ts +0 -33
- package/src/handlers/cron.ts +0 -141
- package/src/handlers/index.ts +0 -18
- package/src/handlers/sse.ts +0 -358
- package/src/handlers/stream.ts +0 -121
- package/src/handlers/webrtc.ts +0 -125
- package/src/handlers/websocket.ts +0 -203
- package/src/logger/console.ts +0 -323
- package/src/logger/index.ts +0 -2
- package/src/logger/internal.ts +0 -165
- package/src/logger/logger.ts +0 -44
- package/src/logger/user.ts +0 -15
- package/src/logger/util.ts +0 -80
- package/src/middleware.ts +0 -1095
- package/src/otel/config.ts +0 -47
- package/src/otel/console.ts +0 -91
- package/src/otel/exporters/README.md +0 -217
- package/src/otel/exporters/index.ts +0 -3
- package/src/otel/exporters/jsonl-log-exporter.ts +0 -113
- package/src/otel/exporters/jsonl-metric-exporter.ts +0 -120
- package/src/otel/exporters/jsonl-trace-exporter.ts +0 -121
- package/src/otel/fetch.ts +0 -105
- package/src/otel/http.ts +0 -53
- package/src/otel/logger.ts +0 -293
- package/src/otel/otel.ts +0 -354
- package/src/otel/tracestate.ts +0 -108
- package/src/router.ts +0 -75
- package/src/services/evalrun/composite.ts +0 -34
- package/src/services/evalrun/http.ts +0 -167
- package/src/services/evalrun/index.ts +0 -4
- package/src/services/evalrun/json.ts +0 -46
- package/src/services/evalrun/local.ts +0 -28
- package/src/services/local/README.md +0 -1576
- package/src/services/local/_db.ts +0 -353
- package/src/services/local/_router.ts +0 -40
- package/src/services/local/_util.ts +0 -55
- package/src/services/local/email.ts +0 -91
- package/src/services/local/index.ts +0 -9
- package/src/services/local/keyvalue.ts +0 -174
- package/src/services/local/queue.ts +0 -145
- package/src/services/local/stream.ts +0 -358
- package/src/services/local/task.ts +0 -1711
- package/src/services/local/vector.ts +0 -438
- package/src/services/sandbox/http.ts +0 -522
- package/src/services/sandbox/index.ts +0 -1
- package/src/services/session/composite.ts +0 -33
- package/src/services/session/http.ts +0 -167
- package/src/services/session/index.ts +0 -4
- package/src/services/session/json.ts +0 -42
- package/src/services/session/local.ts +0 -33
- package/src/services/thread/local.ts +0 -199
- package/src/session.ts +0 -1960
- package/src/signature.ts +0 -82
- package/src/validator.ts +0 -283
- package/src/version-check.ts +0 -184
- package/src/web.ts +0 -76
- package/src/webrtc-signaling.ts +0 -288
- 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
|
-
}
|