@mondaydotcomorg/atp-runtime 0.17.14
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/README.md +389 -0
- package/dist/approval/handler.d.ts +12 -0
- package/dist/approval/handler.d.ts.map +1 -0
- package/dist/approval/handler.js +17 -0
- package/dist/approval/handler.js.map +1 -0
- package/dist/approval/index.d.ts +17 -0
- package/dist/approval/index.d.ts.map +1 -0
- package/dist/approval/index.js +94 -0
- package/dist/approval/index.js.map +1 -0
- package/dist/approval/types.d.ts +21 -0
- package/dist/approval/types.d.ts.map +1 -0
- package/dist/approval/types.js +5 -0
- package/dist/approval/types.js.map +1 -0
- package/dist/cache/backends.d.ts +39 -0
- package/dist/cache/backends.d.ts.map +1 -0
- package/dist/cache/backends.js +167 -0
- package/dist/cache/backends.js.map +1 -0
- package/dist/cache/index.d.ts +32 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +103 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/types.d.ts +20 -0
- package/dist/cache/types.d.ts.map +1 -0
- package/dist/cache/types.js +2 -0
- package/dist/cache/types.js.map +1 -0
- package/dist/embedding/index.d.ts +39 -0
- package/dist/embedding/index.d.ts.map +1 -0
- package/dist/embedding/index.js +162 -0
- package/dist/embedding/index.js.map +1 -0
- package/dist/embedding/types.d.ts +28 -0
- package/dist/embedding/types.d.ts.map +1 -0
- package/dist/embedding/types.js +5 -0
- package/dist/embedding/types.js.map +1 -0
- package/dist/embedding/utils.d.ts +11 -0
- package/dist/embedding/utils.d.ts.map +1 -0
- package/dist/embedding/utils.js +30 -0
- package/dist/embedding/utils.js.map +1 -0
- package/dist/embedding/vector-store.d.ts +64 -0
- package/dist/embedding/vector-store.d.ts.map +1 -0
- package/dist/embedding/vector-store.js +142 -0
- package/dist/embedding/vector-store.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/callback.d.ts +13 -0
- package/dist/llm/callback.d.ts.map +1 -0
- package/dist/llm/callback.js +19 -0
- package/dist/llm/callback.js.map +1 -0
- package/dist/llm/index.d.ts +29 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +118 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/replay.d.ts +47 -0
- package/dist/llm/replay.d.ts.map +1 -0
- package/dist/llm/replay.js +114 -0
- package/dist/llm/replay.js.map +1 -0
- package/dist/llm/types.d.ts +24 -0
- package/dist/llm/types.d.ts.map +1 -0
- package/dist/llm/types.js +2 -0
- package/dist/llm/types.js.map +1 -0
- package/dist/log/index.d.ts +12 -0
- package/dist/log/index.d.ts.map +1 -0
- package/dist/log/index.js +166 -0
- package/dist/log/index.js.map +1 -0
- package/dist/log/types.d.ts +19 -0
- package/dist/log/types.d.ts.map +1 -0
- package/dist/log/types.js +5 -0
- package/dist/log/types.js.map +1 -0
- package/dist/metadata/decorators.d.ts +27 -0
- package/dist/metadata/decorators.d.ts.map +1 -0
- package/dist/metadata/decorators.js +38 -0
- package/dist/metadata/decorators.js.map +1 -0
- package/dist/metadata/generated.d.ts +18 -0
- package/dist/metadata/generated.d.ts.map +1 -0
- package/dist/metadata/generated.js +290 -0
- package/dist/metadata/generated.js.map +1 -0
- package/dist/metadata/index.d.ts +11 -0
- package/dist/metadata/index.d.ts.map +1 -0
- package/dist/metadata/index.js +45 -0
- package/dist/metadata/index.js.map +1 -0
- package/dist/metadata/types.d.ts +22 -0
- package/dist/metadata/types.d.ts.map +1 -0
- package/dist/metadata/types.js +6 -0
- package/dist/metadata/types.js.map +1 -0
- package/dist/pause/index.d.ts +11 -0
- package/dist/pause/index.d.ts.map +1 -0
- package/dist/pause/index.js +15 -0
- package/dist/pause/index.js.map +1 -0
- package/dist/pause/types.d.ts +46 -0
- package/dist/pause/types.d.ts.map +1 -0
- package/dist/pause/types.js +57 -0
- package/dist/pause/types.js.map +1 -0
- package/dist/progress/index.d.ts +19 -0
- package/dist/progress/index.d.ts.map +1 -0
- package/dist/progress/index.js +61 -0
- package/dist/progress/index.js.map +1 -0
- package/dist/progress/types.d.ts +7 -0
- package/dist/progress/types.d.ts.map +1 -0
- package/dist/progress/types.js +2 -0
- package/dist/progress/types.js.map +1 -0
- package/dist/registry.d.ts +16 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +16 -0
- package/dist/registry.js.map +1 -0
- package/dist/utils.d.ts +11 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +31 -0
- package/dist/utils.js.map +1 -0
- package/package.json +51 -0
- package/src/approval/handler.ts +26 -0
- package/src/approval/index.ts +95 -0
- package/src/approval/types.ts +23 -0
- package/src/cache/backends.ts +196 -0
- package/src/cache/index.ts +74 -0
- package/src/cache/types.ts +20 -0
- package/src/embedding/index.ts +153 -0
- package/src/embedding/types.ts +31 -0
- package/src/embedding/utils.ts +34 -0
- package/src/embedding/vector-store.ts +164 -0
- package/src/index.ts +35 -0
- package/src/llm/callback.ts +24 -0
- package/src/llm/index.ts +121 -0
- package/src/llm/replay.ts +141 -0
- package/src/llm/types.ts +29 -0
- package/src/log/index.ts +167 -0
- package/src/log/types.ts +21 -0
- package/src/metadata/decorators.ts +44 -0
- package/src/metadata/generated.ts +293 -0
- package/src/metadata/index.ts +61 -0
- package/src/metadata/types.ts +24 -0
- package/src/pause/index.ts +28 -0
- package/src/pause/types.ts +57 -0
- package/src/progress/index.ts +50 -0
- package/src/progress/types.ts +6 -0
- package/src/registry.ts +22 -0
- package/src/utils.ts +37 -0
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*/
|
|
3
|
+
import NodeCache from 'node-cache';
|
|
4
|
+
/**
|
|
5
|
+
* In-memory cache implementation using node-cache
|
|
6
|
+
*/
|
|
7
|
+
export class MemoryCacheBackend {
|
|
8
|
+
cache;
|
|
9
|
+
constructor(config) {
|
|
10
|
+
this.cache = new NodeCache({
|
|
11
|
+
stdTTL: config?.defaultTTL ?? 600,
|
|
12
|
+
checkperiod: config?.checkPeriod ?? 120,
|
|
13
|
+
maxKeys: config?.maxKeys ?? 1000,
|
|
14
|
+
useClones: false,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
async get(key) {
|
|
18
|
+
const value = this.cache.get(key);
|
|
19
|
+
return value ?? null;
|
|
20
|
+
}
|
|
21
|
+
async set(key, value, ttl) {
|
|
22
|
+
if (ttl) {
|
|
23
|
+
this.cache.set(key, value, ttl);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
this.cache.set(key, value);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async delete(key) {
|
|
30
|
+
this.cache.del(key);
|
|
31
|
+
}
|
|
32
|
+
async has(key) {
|
|
33
|
+
return this.cache.has(key);
|
|
34
|
+
}
|
|
35
|
+
async clear() {
|
|
36
|
+
this.cache.flushAll();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Redis cache implementation (lazy-loaded only if configured)
|
|
41
|
+
*/
|
|
42
|
+
export class RedisCacheBackend {
|
|
43
|
+
client;
|
|
44
|
+
connected = false;
|
|
45
|
+
constructor(config) {
|
|
46
|
+
import('ioredis')
|
|
47
|
+
.then((Redis) => {
|
|
48
|
+
this.client = new Redis.default({
|
|
49
|
+
host: config.host,
|
|
50
|
+
port: config.port,
|
|
51
|
+
password: config.password,
|
|
52
|
+
db: config.db ?? 0,
|
|
53
|
+
retryStrategy: (times) => {
|
|
54
|
+
if (times > 3) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
return Math.min(times * 100, 2000);
|
|
58
|
+
},
|
|
59
|
+
lazyConnect: true,
|
|
60
|
+
});
|
|
61
|
+
this.client
|
|
62
|
+
.connect()
|
|
63
|
+
.then(() => {
|
|
64
|
+
this.connected = true;
|
|
65
|
+
})
|
|
66
|
+
.catch(() => {
|
|
67
|
+
this.connected = false;
|
|
68
|
+
});
|
|
69
|
+
})
|
|
70
|
+
.catch(() => {
|
|
71
|
+
throw new Error('ioredis package not installed. Install it with: yarn add ioredis');
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
async get(key) {
|
|
75
|
+
if (!this.connected) {
|
|
76
|
+
console.warn('[Redis Cache] Not connected, cannot get key:', key);
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
try {
|
|
80
|
+
const value = await this.client.get(key);
|
|
81
|
+
return value ? JSON.parse(value) : null;
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
console.error('[Redis Cache] Failed to get key:', key, error instanceof Error ? error.message : error);
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
async set(key, value, ttl) {
|
|
89
|
+
if (!this.connected) {
|
|
90
|
+
console.warn('[Redis Cache] Not connected, cannot set key:', key);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
try {
|
|
94
|
+
const serialized = JSON.stringify(value);
|
|
95
|
+
if (ttl) {
|
|
96
|
+
await this.client.setex(key, ttl, serialized);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
await this.client.set(key, serialized);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
console.error('[Redis Cache] Failed to set key:', key, error instanceof Error ? error.message : error);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
async delete(key) {
|
|
107
|
+
if (!this.connected) {
|
|
108
|
+
console.warn('[Redis Cache] Not connected, cannot delete key:', key);
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
try {
|
|
112
|
+
await this.client.del(key);
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
console.error('[Redis Cache] Failed to delete key:', key, error instanceof Error ? error.message : error);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
async has(key) {
|
|
119
|
+
if (!this.connected) {
|
|
120
|
+
console.warn('[Redis Cache] Not connected, cannot check key:', key);
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
try {
|
|
124
|
+
const exists = await this.client.exists(key);
|
|
125
|
+
return exists === 1;
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
console.error('[Redis Cache] Failed to check key:', key, error instanceof Error ? error.message : error);
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
async clear() {
|
|
133
|
+
if (!this.connected) {
|
|
134
|
+
console.warn('[Redis Cache] Not connected, cannot clear cache');
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
try {
|
|
138
|
+
await this.client.flushdb();
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
console.error('[Redis Cache] Failed to clear cache:', error instanceof Error ? error.message : error);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
let cacheBackend = new MemoryCacheBackend();
|
|
146
|
+
/**
|
|
147
|
+
* Initializes the cache system with configuration
|
|
148
|
+
*/
|
|
149
|
+
export function initializeCache(config) {
|
|
150
|
+
if (config.type === 'redis' && config.redis) {
|
|
151
|
+
cacheBackend = new RedisCacheBackend(config.redis);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
cacheBackend = new MemoryCacheBackend({
|
|
155
|
+
maxKeys: config.maxKeys,
|
|
156
|
+
defaultTTL: config.defaultTTL,
|
|
157
|
+
checkPeriod: config.checkPeriod,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Get the current cache backend
|
|
163
|
+
*/
|
|
164
|
+
export function getCacheBackend() {
|
|
165
|
+
return cacheBackend;
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=backends.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backends.js","sourceRoot":"","sources":["../../src/cache/backends.ts"],"names":[],"mappings":"AAAA;GACG;AACH,OAAO,SAAS,MAAM,YAAY,CAAC;AAGnC;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACtB,KAAK,CAAY;IAEzB,YAAY,MAAwE;QACnF,IAAI,CAAC,KAAK,GAAG,IAAI,SAAS,CAAC;YAC1B,MAAM,EAAE,MAAM,EAAE,UAAU,IAAI,GAAG;YACjC,WAAW,EAAE,MAAM,EAAE,WAAW,IAAI,GAAG;YACvC,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,IAAI;YAChC,SAAS,EAAE,KAAK;SAChB,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,GAAW;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;QACrC,OAAO,KAAK,IAAI,IAAI,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAc,EAAE,GAAY;QAClD,IAAI,GAAG,EAAE,CAAC;YACT,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5B,CAAC;IACF,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,KAAK;QACV,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IACvB,CAAC;CACD;AAED;;GAEG;AACH,MAAM,OAAO,iBAAiB;IACrB,MAAM,CAAM;IACZ,SAAS,GAAY,KAAK,CAAC;IAEnC,YAAY,MAAyC;QACpD,MAAM,CAAC,SAAS,CAAC;aACf,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC;gBAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC;gBAClB,aAAa,EAAE,CAAC,KAAa,EAAE,EAAE;oBAChC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;wBACf,OAAO,IAAI,CAAC;oBACb,CAAC;oBACD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;gBACpC,CAAC;gBACD,WAAW,EAAE,IAAI;aACjB,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM;iBACT,OAAO,EAAE;iBACT,IAAI,CAAC,GAAG,EAAE;gBACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACvB,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,EAAE;gBACX,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACxB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,GAAW;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,8CAA8C,EAAE,GAAG,CAAC,CAAC;YAClE,OAAO,IAAI,CAAC;QACb,CAAC;QACD,IAAI,CAAC;YACJ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzC,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CACZ,kCAAkC,EAClC,GAAG,EACH,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAC9C,CAAC;YACF,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAc,EAAE,GAAY;QAClD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,8CAA8C,EAAE,GAAG,CAAC,CAAC;YAClE,OAAO;QACR,CAAC;QACD,IAAI,CAAC;YACJ,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,GAAG,EAAE,CAAC;gBACT,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACP,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YACxC,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CACZ,kCAAkC,EAClC,GAAG,EACH,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAC9C,CAAC;QACH,CAAC;IACF,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,iDAAiD,EAAE,GAAG,CAAC,CAAC;YACrE,OAAO;QACR,CAAC;QACD,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CACZ,qCAAqC,EACrC,GAAG,EACH,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAC9C,CAAC;QACH,CAAC;IACF,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACpB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,gDAAgD,EAAE,GAAG,CAAC,CAAC;YACpE,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7C,OAAO,MAAM,KAAK,CAAC,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CACZ,oCAAoC,EACpC,GAAG,EACH,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAC9C,CAAC;YACF,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IAED,KAAK,CAAC,KAAK;QACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;YAChE,OAAO;QACR,CAAC;QACD,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CACZ,sCAAsC,EACtC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAC9C,CAAC;QACH,CAAC;IACF,CAAC;CACD;AAED,IAAI,YAAY,GAAiB,IAAI,kBAAkB,EAAE,CAAC;AAE1D;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAAmB;IAClD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAC7C,YAAY,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACP,YAAY,GAAG,IAAI,kBAAkB,CAAC;YACrC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;SAC/B,CAAC,CAAC;IACJ,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC9B,OAAO,YAAY,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export type { CacheConfig, CacheBackend } from './types';
|
|
2
|
+
export { MemoryCacheBackend, RedisCacheBackend, initializeCache } from './backends.js';
|
|
3
|
+
/**
|
|
4
|
+
* Cache Runtime API
|
|
5
|
+
*
|
|
6
|
+
* Store and retrieve data with optional TTL (Time To Live).
|
|
7
|
+
* Supports in-memory (node-cache) and Redis backends.
|
|
8
|
+
*/
|
|
9
|
+
declare class CacheAPI {
|
|
10
|
+
/**
|
|
11
|
+
* Gets a value from cache
|
|
12
|
+
*/
|
|
13
|
+
get<T>(key: string): Promise<T | null>;
|
|
14
|
+
/**
|
|
15
|
+
* Sets a value in cache with optional TTL in seconds
|
|
16
|
+
*/
|
|
17
|
+
set(key: string, value: unknown, ttl?: number): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Deletes a value from cache
|
|
20
|
+
*/
|
|
21
|
+
delete(key: string): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Checks if a key exists in cache
|
|
24
|
+
*/
|
|
25
|
+
has(key: string): Promise<boolean>;
|
|
26
|
+
/**
|
|
27
|
+
* Clears all cache entries
|
|
28
|
+
*/
|
|
29
|
+
clear(): Promise<void>;
|
|
30
|
+
}
|
|
31
|
+
export declare const cache: CacheAPI;
|
|
32
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAWA,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEvF;;;;;GAKG;AACH,cACM,QAAQ;IACb;;OAEG;IAIG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAI5C;;OAEG;IAMG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInE;;OAEG;IAIG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC;;OAEG;IAIG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIxC;;OAEG;IAEG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B;AAED,eAAO,MAAM,KAAK,UAAiB,CAAC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Cache API - Clean refactored version with decorators and extracted modules
|
|
12
|
+
*
|
|
13
|
+
* Benefits:
|
|
14
|
+
* - No duplication between implementation and metadata
|
|
15
|
+
* - Types auto-detected from TypeScript signatures
|
|
16
|
+
* - Clean separation of concerns (backends, API)
|
|
17
|
+
*/
|
|
18
|
+
import { RuntimeAPI, RuntimeMethod } from '../metadata/decorators.js';
|
|
19
|
+
import { getCacheBackend } from './backends.js';
|
|
20
|
+
export { MemoryCacheBackend, RedisCacheBackend, initializeCache } from './backends.js';
|
|
21
|
+
/**
|
|
22
|
+
* Cache Runtime API
|
|
23
|
+
*
|
|
24
|
+
* Store and retrieve data with optional TTL (Time To Live).
|
|
25
|
+
* Supports in-memory (node-cache) and Redis backends.
|
|
26
|
+
*/
|
|
27
|
+
let CacheAPI = class CacheAPI {
|
|
28
|
+
/**
|
|
29
|
+
* Gets a value from cache
|
|
30
|
+
*/
|
|
31
|
+
async get(key) {
|
|
32
|
+
return getCacheBackend().get(key);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Sets a value in cache with optional TTL in seconds
|
|
36
|
+
*/
|
|
37
|
+
async set(key, value, ttl) {
|
|
38
|
+
return getCacheBackend().set(key, value, ttl);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Deletes a value from cache
|
|
42
|
+
*/
|
|
43
|
+
async delete(key) {
|
|
44
|
+
return getCacheBackend().delete(key);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Checks if a key exists in cache
|
|
48
|
+
*/
|
|
49
|
+
async has(key) {
|
|
50
|
+
return getCacheBackend().has(key);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Clears all cache entries
|
|
54
|
+
*/
|
|
55
|
+
async clear() {
|
|
56
|
+
return getCacheBackend().clear();
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
__decorate([
|
|
60
|
+
RuntimeMethod('Get a value from cache by key', {
|
|
61
|
+
key: { description: 'Cache key' },
|
|
62
|
+
}),
|
|
63
|
+
__metadata("design:type", Function),
|
|
64
|
+
__metadata("design:paramtypes", [String]),
|
|
65
|
+
__metadata("design:returntype", Promise)
|
|
66
|
+
], CacheAPI.prototype, "get", null);
|
|
67
|
+
__decorate([
|
|
68
|
+
RuntimeMethod('Set a value in cache with optional TTL', {
|
|
69
|
+
key: { description: 'Cache key' },
|
|
70
|
+
value: { description: 'Value to cache', type: 'unknown' },
|
|
71
|
+
ttl: { description: 'Time to live in seconds', optional: true },
|
|
72
|
+
}),
|
|
73
|
+
__metadata("design:type", Function),
|
|
74
|
+
__metadata("design:paramtypes", [String, Object, Number]),
|
|
75
|
+
__metadata("design:returntype", Promise)
|
|
76
|
+
], CacheAPI.prototype, "set", null);
|
|
77
|
+
__decorate([
|
|
78
|
+
RuntimeMethod('Delete a value from cache', {
|
|
79
|
+
key: { description: 'Cache key to delete' },
|
|
80
|
+
}),
|
|
81
|
+
__metadata("design:type", Function),
|
|
82
|
+
__metadata("design:paramtypes", [String]),
|
|
83
|
+
__metadata("design:returntype", Promise)
|
|
84
|
+
], CacheAPI.prototype, "delete", null);
|
|
85
|
+
__decorate([
|
|
86
|
+
RuntimeMethod('Check if a key exists in cache', {
|
|
87
|
+
key: { description: 'Cache key to check' },
|
|
88
|
+
}),
|
|
89
|
+
__metadata("design:type", Function),
|
|
90
|
+
__metadata("design:paramtypes", [String]),
|
|
91
|
+
__metadata("design:returntype", Promise)
|
|
92
|
+
], CacheAPI.prototype, "has", null);
|
|
93
|
+
__decorate([
|
|
94
|
+
RuntimeMethod('Clear all cache entries'),
|
|
95
|
+
__metadata("design:type", Function),
|
|
96
|
+
__metadata("design:paramtypes", []),
|
|
97
|
+
__metadata("design:returntype", Promise)
|
|
98
|
+
], CacheAPI.prototype, "clear", null);
|
|
99
|
+
CacheAPI = __decorate([
|
|
100
|
+
RuntimeAPI('cache', 'Cache API - Store and retrieve data with optional TTL')
|
|
101
|
+
], CacheAPI);
|
|
102
|
+
export const cache = new CacheAPI();
|
|
103
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEvF;;;;;GAKG;AAEH,IAAM,QAAQ,GAAd,MAAM,QAAQ;IACb;;OAEG;IAIG,AAAN,KAAK,CAAC,GAAG,CAAI,GAAW;QACvB,OAAO,eAAe,EAAE,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IAMG,AAAN,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAc,EAAE,GAAY;QAClD,OAAO,eAAe,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IAIG,AAAN,KAAK,CAAC,MAAM,CAAC,GAAW;QACvB,OAAO,eAAe,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IAIG,AAAN,KAAK,CAAC,GAAG,CAAC,GAAW;QACpB,OAAO,eAAe,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IAEG,AAAN,KAAK,CAAC,KAAK;QACV,OAAO,eAAe,EAAE,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;CACD,CAAA;AA3CM;IAHL,aAAa,CAAC,+BAA+B,EAAE;QAC/C,GAAG,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE;KACjC,CAAC;;;;mCAGD;AAUK;IALL,aAAa,CAAC,wCAAwC,EAAE;QACxD,GAAG,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE;QACjC,KAAK,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE;QACzD,GAAG,EAAE,EAAE,WAAW,EAAE,yBAAyB,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC/D,CAAC;;;;mCAGD;AAQK;IAHL,aAAa,CAAC,2BAA2B,EAAE;QAC3C,GAAG,EAAE,EAAE,WAAW,EAAE,qBAAqB,EAAE;KAC3C,CAAC;;;;sCAGD;AAQK;IAHL,aAAa,CAAC,gCAAgC,EAAE;QAChD,GAAG,EAAE,EAAE,WAAW,EAAE,oBAAoB,EAAE;KAC1C,CAAC;;;;mCAGD;AAMK;IADL,aAAa,CAAC,yBAAyB,CAAC;;;;qCAGxC;AAjDI,QAAQ;IADb,UAAU,CAAC,OAAO,EAAE,uDAAuD,CAAC;GACvE,QAAQ,CAkDb;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface CacheConfig {
|
|
2
|
+
type: 'memory' | 'redis';
|
|
3
|
+
redis?: {
|
|
4
|
+
host: string;
|
|
5
|
+
port: number;
|
|
6
|
+
password?: string;
|
|
7
|
+
db?: number;
|
|
8
|
+
};
|
|
9
|
+
maxKeys?: number;
|
|
10
|
+
defaultTTL?: number;
|
|
11
|
+
checkPeriod?: number;
|
|
12
|
+
}
|
|
13
|
+
export interface CacheBackend {
|
|
14
|
+
get<T>(key: string): Promise<T | null>;
|
|
15
|
+
set(key: string, value: unknown, ttl?: number): Promise<void>;
|
|
16
|
+
delete(key: string): Promise<void>;
|
|
17
|
+
has(key: string): Promise<boolean>;
|
|
18
|
+
clear(): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cache/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,EAAE,CAAC,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC5B,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACvC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cache/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { EmbeddingRecord, SearchOptions, SearchResult } from './types';
|
|
2
|
+
export type { EmbeddingOptions, EmbeddingRecord, SearchOptions, SearchResult } from './types';
|
|
3
|
+
export { VectorStore, initializeVectorStore, clearVectorStore, getVectorStore, setVectorStoreExecutionId, clearVectorStoreExecutionId, } from './vector-store.js';
|
|
4
|
+
export { cosineSimilarity, generateEmbeddingId } from './utils.js';
|
|
5
|
+
/**
|
|
6
|
+
* Embedding Runtime API
|
|
7
|
+
*
|
|
8
|
+
* Decorators automatically:
|
|
9
|
+
* - Extract parameter names and types
|
|
10
|
+
* - Generate metadata for type definitions
|
|
11
|
+
* - Maintain single source of truth
|
|
12
|
+
*/
|
|
13
|
+
declare class EmbeddingAPI {
|
|
14
|
+
/**
|
|
15
|
+
* Request client to generate embedding and store it
|
|
16
|
+
* For batch inputs, returns array of IDs for stored embeddings
|
|
17
|
+
*/
|
|
18
|
+
embed(input: string | string[], metadata?: Record<string, unknown>): Promise<string | string[]>;
|
|
19
|
+
/**
|
|
20
|
+
* Search stored embeddings by similarity
|
|
21
|
+
* Query must be embedded first via embed()
|
|
22
|
+
*/
|
|
23
|
+
search(query: string, options?: Omit<SearchOptions, 'query'>): Promise<SearchResult[]>;
|
|
24
|
+
/**
|
|
25
|
+
* Calculate cosine similarity between two embedding vectors
|
|
26
|
+
* This is a utility function that doesn't require client interaction
|
|
27
|
+
*/
|
|
28
|
+
similarity(embedding1: number[], embedding2: number[]): number;
|
|
29
|
+
/**
|
|
30
|
+
* Get all stored embeddings (useful for debugging)
|
|
31
|
+
*/
|
|
32
|
+
getAll(): EmbeddingRecord[];
|
|
33
|
+
/**
|
|
34
|
+
* Get count of stored embeddings
|
|
35
|
+
*/
|
|
36
|
+
count(): number;
|
|
37
|
+
}
|
|
38
|
+
export declare const embedding: EmbeddingAPI;
|
|
39
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/embedding/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5E,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC9F,OAAO,EACN,WAAW,EACX,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,yBAAyB,EACzB,2BAA2B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEnE;;;;;;;GAOG;AACH,cACM,YAAY;IACjB;;;OAGG;IAYG,KAAK,CACV,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;IA8B7B;;;OAGG;IAWG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAiC5F;;;OAGG;IAKH,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM;IAI9D;;OAEG;IAEH,MAAM,IAAI,eAAe,EAAE;IAI3B;;OAEG;IAEH,KAAK,IAAI,MAAM;CAGf;AAED,eAAO,MAAM,SAAS,cAAqB,CAAC"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { pauseForCallback, CallbackType, EmbeddingOperation } from '../pause/index.js';
|
|
11
|
+
import { RuntimeAPI, RuntimeMethod } from '../metadata/decorators.js';
|
|
12
|
+
import { getVectorStore } from './vector-store.js';
|
|
13
|
+
import { cosineSimilarity, generateEmbeddingId } from './utils.js';
|
|
14
|
+
import { nextSequenceNumber, getCachedResult, shouldPauseForClient } from '../llm/replay.js';
|
|
15
|
+
export { VectorStore, initializeVectorStore, clearVectorStore, getVectorStore, setVectorStoreExecutionId, clearVectorStoreExecutionId, } from './vector-store.js';
|
|
16
|
+
export { cosineSimilarity, generateEmbeddingId } from './utils.js';
|
|
17
|
+
/**
|
|
18
|
+
* Embedding Runtime API
|
|
19
|
+
*
|
|
20
|
+
* Decorators automatically:
|
|
21
|
+
* - Extract parameter names and types
|
|
22
|
+
* - Generate metadata for type definitions
|
|
23
|
+
* - Maintain single source of truth
|
|
24
|
+
*/
|
|
25
|
+
let EmbeddingAPI = class EmbeddingAPI {
|
|
26
|
+
/**
|
|
27
|
+
* Request client to generate embedding and store it
|
|
28
|
+
* For batch inputs, returns array of IDs for stored embeddings
|
|
29
|
+
*/
|
|
30
|
+
async embed(input, metadata) {
|
|
31
|
+
const isBatch = Array.isArray(input);
|
|
32
|
+
const texts = isBatch ? input : [input];
|
|
33
|
+
const ids = texts.map((_, i) => generateEmbeddingId(i));
|
|
34
|
+
const currentSequence = nextSequenceNumber();
|
|
35
|
+
const cachedResult = getCachedResult(currentSequence);
|
|
36
|
+
if (cachedResult !== undefined && cachedResult !== null) {
|
|
37
|
+
const vectorStore = getVectorStore();
|
|
38
|
+
const embedding = cachedResult;
|
|
39
|
+
for (let i = 0; i < texts.length; i++) {
|
|
40
|
+
vectorStore.store(ids[i], texts[i], embedding, metadata);
|
|
41
|
+
}
|
|
42
|
+
return isBatch ? ids : ids[0];
|
|
43
|
+
}
|
|
44
|
+
if (shouldPauseForClient()) {
|
|
45
|
+
pauseForCallback(CallbackType.EMBEDDING, EmbeddingOperation.EMBED, {
|
|
46
|
+
text: isBatch ? texts.join('\n') : texts[0],
|
|
47
|
+
input,
|
|
48
|
+
ids,
|
|
49
|
+
metadata,
|
|
50
|
+
sequenceNumber: currentSequence,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
throw new Error('Embedding service not provided by client');
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Search stored embeddings by similarity
|
|
57
|
+
* Query must be embedded first via embed()
|
|
58
|
+
*/
|
|
59
|
+
async search(query, options) {
|
|
60
|
+
const currentSequence = nextSequenceNumber();
|
|
61
|
+
const vectorStore = getVectorStore();
|
|
62
|
+
const cachedQueryEmbedding = getCachedResult(currentSequence);
|
|
63
|
+
if (cachedQueryEmbedding !== undefined && cachedQueryEmbedding !== null) {
|
|
64
|
+
vectorStore.setQueryEmbedding(cachedQueryEmbedding);
|
|
65
|
+
const searchOptions = { ...options, query };
|
|
66
|
+
if (options?.collection) {
|
|
67
|
+
searchOptions.filter = {
|
|
68
|
+
...searchOptions.filter,
|
|
69
|
+
collection: options.collection,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
return vectorStore.search(searchOptions);
|
|
73
|
+
}
|
|
74
|
+
if (shouldPauseForClient()) {
|
|
75
|
+
pauseForCallback(CallbackType.EMBEDDING, EmbeddingOperation.SEARCH, {
|
|
76
|
+
query,
|
|
77
|
+
options: {
|
|
78
|
+
...options,
|
|
79
|
+
query,
|
|
80
|
+
},
|
|
81
|
+
sequenceNumber: currentSequence,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
throw new Error('Embedding service not provided by client');
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Calculate cosine similarity between two embedding vectors
|
|
88
|
+
* This is a utility function that doesn't require client interaction
|
|
89
|
+
*/
|
|
90
|
+
similarity(embedding1, embedding2) {
|
|
91
|
+
return cosineSimilarity(embedding1, embedding2);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Get all stored embeddings (useful for debugging)
|
|
95
|
+
*/
|
|
96
|
+
getAll() {
|
|
97
|
+
return getVectorStore().getAll();
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Get count of stored embeddings
|
|
101
|
+
*/
|
|
102
|
+
count() {
|
|
103
|
+
return getVectorStore().count();
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
__decorate([
|
|
107
|
+
RuntimeMethod('Request client to generate and store embeddings', {
|
|
108
|
+
input: {
|
|
109
|
+
description: 'Text(s) to embed',
|
|
110
|
+
type: 'string | string[]',
|
|
111
|
+
},
|
|
112
|
+
metadata: {
|
|
113
|
+
description: 'Optional metadata to store with embeddings',
|
|
114
|
+
optional: true,
|
|
115
|
+
type: 'Record<string, unknown>',
|
|
116
|
+
},
|
|
117
|
+
}),
|
|
118
|
+
__metadata("design:type", Function),
|
|
119
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
120
|
+
__metadata("design:returntype", Promise)
|
|
121
|
+
], EmbeddingAPI.prototype, "embed", null);
|
|
122
|
+
__decorate([
|
|
123
|
+
RuntimeMethod('Search stored embeddings by similarity', {
|
|
124
|
+
query: {
|
|
125
|
+
description: 'Search query text (will be embedded by client)',
|
|
126
|
+
},
|
|
127
|
+
options: {
|
|
128
|
+
description: 'Search options (topK, minSimilarity, filter)',
|
|
129
|
+
optional: true,
|
|
130
|
+
type: 'SearchOptions',
|
|
131
|
+
},
|
|
132
|
+
}),
|
|
133
|
+
__metadata("design:type", Function),
|
|
134
|
+
__metadata("design:paramtypes", [String, Object]),
|
|
135
|
+
__metadata("design:returntype", Promise)
|
|
136
|
+
], EmbeddingAPI.prototype, "search", null);
|
|
137
|
+
__decorate([
|
|
138
|
+
RuntimeMethod('Calculate cosine similarity between two embedding vectors', {
|
|
139
|
+
embedding1: { description: 'First embedding vector', type: 'number[]' },
|
|
140
|
+
embedding2: { description: 'Second embedding vector', type: 'number[]' },
|
|
141
|
+
}),
|
|
142
|
+
__metadata("design:type", Function),
|
|
143
|
+
__metadata("design:paramtypes", [Array, Array]),
|
|
144
|
+
__metadata("design:returntype", Number)
|
|
145
|
+
], EmbeddingAPI.prototype, "similarity", null);
|
|
146
|
+
__decorate([
|
|
147
|
+
RuntimeMethod('Get all stored embeddings'),
|
|
148
|
+
__metadata("design:type", Function),
|
|
149
|
+
__metadata("design:paramtypes", []),
|
|
150
|
+
__metadata("design:returntype", Array)
|
|
151
|
+
], EmbeddingAPI.prototype, "getAll", null);
|
|
152
|
+
__decorate([
|
|
153
|
+
RuntimeMethod('Get count of stored embeddings'),
|
|
154
|
+
__metadata("design:type", Function),
|
|
155
|
+
__metadata("design:paramtypes", []),
|
|
156
|
+
__metadata("design:returntype", Number)
|
|
157
|
+
], EmbeddingAPI.prototype, "count", null);
|
|
158
|
+
EmbeddingAPI = __decorate([
|
|
159
|
+
RuntimeAPI('embedding', 'Embedding API - Client-side embedding with server-side vector storage')
|
|
160
|
+
], EmbeddingAPI);
|
|
161
|
+
export const embedding = new EmbeddingAPI();
|
|
162
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/embedding/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embedding API Types
|
|
3
|
+
*/
|
|
4
|
+
export interface EmbeddingOptions {
|
|
5
|
+
input: string | string[];
|
|
6
|
+
model?: string;
|
|
7
|
+
dimensions?: number;
|
|
8
|
+
context?: Record<string, unknown>;
|
|
9
|
+
}
|
|
10
|
+
export interface EmbeddingRecord {
|
|
11
|
+
id: string;
|
|
12
|
+
text: string;
|
|
13
|
+
embedding: number[];
|
|
14
|
+
metadata?: Record<string, unknown>;
|
|
15
|
+
}
|
|
16
|
+
export interface SearchOptions {
|
|
17
|
+
query: string;
|
|
18
|
+
topK?: number;
|
|
19
|
+
minSimilarity?: number;
|
|
20
|
+
filter?: Record<string, unknown>;
|
|
21
|
+
}
|
|
22
|
+
export interface SearchResult {
|
|
23
|
+
id: string;
|
|
24
|
+
text: string;
|
|
25
|
+
similarity: number;
|
|
26
|
+
metadata?: Record<string, unknown>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/embedding/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/embedding/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Calculate cosine similarity between two vectors
|
|
5
|
+
*/
|
|
6
|
+
export declare function cosineSimilarity(vec1: number[], vec2: number[]): number;
|
|
7
|
+
/**
|
|
8
|
+
* Generate a unique ID for an embedding
|
|
9
|
+
*/
|
|
10
|
+
export declare function generateEmbeddingId(index?: number): string;
|
|
11
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/embedding/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAqBvE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,GAAE,MAAU,GAAG,MAAM,CAE7D"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Calculate cosine similarity between two vectors
|
|
5
|
+
*/
|
|
6
|
+
export function cosineSimilarity(vec1, vec2) {
|
|
7
|
+
if (vec1.length !== vec2.length) {
|
|
8
|
+
throw new Error(`Vectors must have the same length (${vec1.length} vs ${vec2.length})`);
|
|
9
|
+
}
|
|
10
|
+
let dotProduct = 0;
|
|
11
|
+
let norm1 = 0;
|
|
12
|
+
let norm2 = 0;
|
|
13
|
+
for (let i = 0; i < vec1.length; i++) {
|
|
14
|
+
dotProduct += vec1[i] * vec2[i];
|
|
15
|
+
norm1 += vec1[i] * vec1[i];
|
|
16
|
+
norm2 += vec2[i] * vec2[i];
|
|
17
|
+
}
|
|
18
|
+
const denominator = Math.sqrt(norm1) * Math.sqrt(norm2);
|
|
19
|
+
if (denominator === 0) {
|
|
20
|
+
return 0;
|
|
21
|
+
}
|
|
22
|
+
return dotProduct / denominator;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Generate a unique ID for an embedding
|
|
26
|
+
*/
|
|
27
|
+
export function generateEmbeddingId(index = 0) {
|
|
28
|
+
return `emb_${Date.now()}_${index}_${Math.random().toString(36).slice(2)}`;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=utils.js.map
|