@cogitator-ai/core 0.11.5 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +119 -0
- package/dist/cache/cache-key.d.ts +11 -0
- package/dist/cache/cache-key.d.ts.map +1 -0
- package/dist/cache/cache-key.js +68 -0
- package/dist/cache/cache-key.js.map +1 -0
- package/dist/cache/index.d.ts +6 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +5 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/storage/index.d.ts +4 -0
- package/dist/cache/storage/index.d.ts.map +1 -0
- package/dist/cache/storage/index.js +3 -0
- package/dist/cache/storage/index.js.map +1 -0
- package/dist/cache/storage/memory.d.ts +24 -0
- package/dist/cache/storage/memory.d.ts.map +1 -0
- package/dist/cache/storage/memory.js +108 -0
- package/dist/cache/storage/memory.js.map +1 -0
- package/dist/cache/storage/redis.d.ts +32 -0
- package/dist/cache/storage/redis.d.ts.map +1 -0
- package/dist/cache/storage/redis.js +127 -0
- package/dist/cache/storage/redis.js.map +1 -0
- package/dist/cache/tool-cache.d.ts +8 -0
- package/dist/cache/tool-cache.d.ts.map +1 -0
- package/dist/cache/tool-cache.js +130 -0
- package/dist/cache/tool-cache.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -994,6 +994,125 @@ breaker.onStateChange((state) => {
|
|
|
994
994
|
});
|
|
995
995
|
```
|
|
996
996
|
|
|
997
|
+
---
|
|
998
|
+
|
|
999
|
+
## Tool Caching
|
|
1000
|
+
|
|
1001
|
+
Cache tool results to avoid redundant API calls with exact or semantic matching:
|
|
1002
|
+
|
|
1003
|
+
### Exact Match Caching
|
|
1004
|
+
|
|
1005
|
+
```typescript
|
|
1006
|
+
import { tool, withCache } from '@cogitator-ai/core';
|
|
1007
|
+
import { z } from 'zod';
|
|
1008
|
+
|
|
1009
|
+
const webSearch = tool({
|
|
1010
|
+
name: 'web_search',
|
|
1011
|
+
description: 'Search the web',
|
|
1012
|
+
parameters: z.object({ query: z.string() }),
|
|
1013
|
+
execute: async ({ query }) => {
|
|
1014
|
+
return await searchApi(query);
|
|
1015
|
+
},
|
|
1016
|
+
});
|
|
1017
|
+
|
|
1018
|
+
const cachedSearch = withCache(webSearch, {
|
|
1019
|
+
strategy: 'exact',
|
|
1020
|
+
ttl: '1h',
|
|
1021
|
+
maxSize: 1000,
|
|
1022
|
+
storage: 'memory',
|
|
1023
|
+
});
|
|
1024
|
+
|
|
1025
|
+
await cachedSearch.execute({ query: 'weather in Paris' }, ctx);
|
|
1026
|
+
await cachedSearch.execute({ query: 'weather in Paris' }, ctx); // cache hit
|
|
1027
|
+
|
|
1028
|
+
console.log(cachedSearch.cache.stats());
|
|
1029
|
+
// { hits: 1, misses: 1, size: 1, evictions: 0, hitRate: 0.5 }
|
|
1030
|
+
```
|
|
1031
|
+
|
|
1032
|
+
### Semantic Caching
|
|
1033
|
+
|
|
1034
|
+
Similar queries hit the cache based on embedding similarity:
|
|
1035
|
+
|
|
1036
|
+
```typescript
|
|
1037
|
+
import { withCache } from '@cogitator-ai/core';
|
|
1038
|
+
import type { EmbeddingService } from '@cogitator-ai/types';
|
|
1039
|
+
|
|
1040
|
+
const embeddingService: EmbeddingService = {
|
|
1041
|
+
embed: async (text) => openai.embeddings.create({ input: text }),
|
|
1042
|
+
embedBatch: async (texts) => /* ... */,
|
|
1043
|
+
dimensions: 1536,
|
|
1044
|
+
model: 'text-embedding-3-small',
|
|
1045
|
+
};
|
|
1046
|
+
|
|
1047
|
+
const cachedSearch = withCache(webSearch, {
|
|
1048
|
+
strategy: 'semantic',
|
|
1049
|
+
similarity: 0.95, // 95% similarity threshold
|
|
1050
|
+
ttl: '1h',
|
|
1051
|
+
maxSize: 1000,
|
|
1052
|
+
storage: 'memory',
|
|
1053
|
+
embeddingService,
|
|
1054
|
+
});
|
|
1055
|
+
|
|
1056
|
+
await cachedSearch.execute({ query: 'weather in Paris' }, ctx);
|
|
1057
|
+
await cachedSearch.execute({ query: 'Paris weather forecast' }, ctx); // semantic hit
|
|
1058
|
+
```
|
|
1059
|
+
|
|
1060
|
+
### Redis Storage
|
|
1061
|
+
|
|
1062
|
+
For production with persistence:
|
|
1063
|
+
|
|
1064
|
+
```typescript
|
|
1065
|
+
import { withCache, RedisToolCacheStorage } from '@cogitator-ai/core';
|
|
1066
|
+
|
|
1067
|
+
const cachedTool = withCache(webSearch, {
|
|
1068
|
+
strategy: 'semantic',
|
|
1069
|
+
similarity: 0.95,
|
|
1070
|
+
ttl: '1h',
|
|
1071
|
+
maxSize: 1000,
|
|
1072
|
+
storage: 'redis',
|
|
1073
|
+
redisClient: redisClient, // ioredis compatible client
|
|
1074
|
+
keyPrefix: 'myapp:cache',
|
|
1075
|
+
embeddingService,
|
|
1076
|
+
});
|
|
1077
|
+
```
|
|
1078
|
+
|
|
1079
|
+
### Cache Management
|
|
1080
|
+
|
|
1081
|
+
```typescript
|
|
1082
|
+
const cached = withCache(tool, config);
|
|
1083
|
+
|
|
1084
|
+
// Get statistics
|
|
1085
|
+
const stats = cached.cache.stats();
|
|
1086
|
+
|
|
1087
|
+
// Invalidate specific entry
|
|
1088
|
+
await cached.cache.invalidate({ query: 'specific query' });
|
|
1089
|
+
|
|
1090
|
+
// Clear all entries
|
|
1091
|
+
await cached.cache.clear();
|
|
1092
|
+
|
|
1093
|
+
// Pre-warm cache
|
|
1094
|
+
await cached.cache.warmup([
|
|
1095
|
+
{ params: { query: 'common query 1' }, result: { data: '...' } },
|
|
1096
|
+
{ params: { query: 'common query 2' }, result: { data: '...' } },
|
|
1097
|
+
]);
|
|
1098
|
+
```
|
|
1099
|
+
|
|
1100
|
+
### Cache Callbacks
|
|
1101
|
+
|
|
1102
|
+
```typescript
|
|
1103
|
+
const cached = withCache(tool, {
|
|
1104
|
+
strategy: 'exact',
|
|
1105
|
+
ttl: '1h',
|
|
1106
|
+
maxSize: 100,
|
|
1107
|
+
storage: 'memory',
|
|
1108
|
+
onHit: (key, params) => console.log('Cache hit:', key),
|
|
1109
|
+
onMiss: (key, params) => console.log('Cache miss:', key),
|
|
1110
|
+
onEvict: (key) => console.log('Evicted:', key),
|
|
1111
|
+
});
|
|
1112
|
+
```
|
|
1113
|
+
|
|
1114
|
+
---
|
|
1115
|
+
|
|
997
1116
|
### Fallback Patterns
|
|
998
1117
|
|
|
999
1118
|
```typescript
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface CacheKeyOptions {
|
|
2
|
+
toolName: string;
|
|
3
|
+
params: unknown;
|
|
4
|
+
prefix?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function generateCacheKey(options: CacheKeyOptions): string;
|
|
7
|
+
export declare function stableStringify(obj: unknown): string;
|
|
8
|
+
export declare function paramsToQueryString(params: unknown): string;
|
|
9
|
+
export declare function cosineSimilarity(a: number[], b: number[]): number;
|
|
10
|
+
export declare function parseDuration(duration: string): number;
|
|
11
|
+
//# sourceMappingURL=cache-key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-key.d.ts","sourceRoot":"","sources":["../../src/cache/cache-key.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAQjE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAepD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAe3D;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAejE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAmBtD"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { createHash } from 'crypto';
|
|
2
|
+
export function generateCacheKey(options) {
|
|
3
|
+
const { toolName, params, prefix = 'toolcache' } = options;
|
|
4
|
+
const paramsStr = stableStringify(params);
|
|
5
|
+
const hash = createHash('sha256')
|
|
6
|
+
.update(`${toolName}:${paramsStr}`)
|
|
7
|
+
.digest('hex')
|
|
8
|
+
.slice(0, 16);
|
|
9
|
+
return `${prefix}:${toolName}:${hash}`;
|
|
10
|
+
}
|
|
11
|
+
export function stableStringify(obj) {
|
|
12
|
+
if (obj === null || typeof obj !== 'object') {
|
|
13
|
+
return JSON.stringify(obj);
|
|
14
|
+
}
|
|
15
|
+
if (Array.isArray(obj)) {
|
|
16
|
+
return '[' + obj.map(stableStringify).join(',') + ']';
|
|
17
|
+
}
|
|
18
|
+
const keys = Object.keys(obj).sort();
|
|
19
|
+
const pairs = keys.map((k) => `${JSON.stringify(k)}:${stableStringify(obj[k])}`);
|
|
20
|
+
return '{' + pairs.join(',') + '}';
|
|
21
|
+
}
|
|
22
|
+
export function paramsToQueryString(params) {
|
|
23
|
+
if (typeof params === 'string')
|
|
24
|
+
return params;
|
|
25
|
+
if (typeof params === 'object' && params !== null) {
|
|
26
|
+
const obj = params;
|
|
27
|
+
const queryFields = ['query', 'q', 'search', 'text', 'input', 'prompt', 'question'];
|
|
28
|
+
for (const field of queryFields) {
|
|
29
|
+
if (typeof obj[field] === 'string') {
|
|
30
|
+
return obj[field];
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return JSON.stringify(params);
|
|
34
|
+
}
|
|
35
|
+
return String(params);
|
|
36
|
+
}
|
|
37
|
+
export function cosineSimilarity(a, b) {
|
|
38
|
+
if (a.length !== b.length)
|
|
39
|
+
return 0;
|
|
40
|
+
let dotProduct = 0;
|
|
41
|
+
let normA = 0;
|
|
42
|
+
let normB = 0;
|
|
43
|
+
for (let i = 0; i < a.length; i++) {
|
|
44
|
+
dotProduct += a[i] * b[i];
|
|
45
|
+
normA += a[i] * a[i];
|
|
46
|
+
normB += b[i] * b[i];
|
|
47
|
+
}
|
|
48
|
+
const magnitude = Math.sqrt(normA) * Math.sqrt(normB);
|
|
49
|
+
return magnitude === 0 ? 0 : dotProduct / magnitude;
|
|
50
|
+
}
|
|
51
|
+
export function parseDuration(duration) {
|
|
52
|
+
const match = /^(\d+(?:\.\d+)?)\s*(ms|s|m|h|d|w)$/i.exec(duration);
|
|
53
|
+
if (!match) {
|
|
54
|
+
throw new Error(`Invalid duration format: ${duration}`);
|
|
55
|
+
}
|
|
56
|
+
const value = parseFloat(match[1]);
|
|
57
|
+
const unit = match[2].toLowerCase();
|
|
58
|
+
const multipliers = {
|
|
59
|
+
ms: 1,
|
|
60
|
+
s: 1000,
|
|
61
|
+
m: 60_000,
|
|
62
|
+
h: 3600_000,
|
|
63
|
+
d: 86400_000,
|
|
64
|
+
w: 604800_000,
|
|
65
|
+
};
|
|
66
|
+
return Math.floor(value * multipliers[unit]);
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=cache-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-key.js","sourceRoot":"","sources":["../../src/cache/cache-key.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { withCache, createToolCacheStorage } from './tool-cache';
|
|
2
|
+
export { InMemoryToolCacheStorage } from './storage/memory';
|
|
3
|
+
export { RedisToolCacheStorage } from './storage/redis';
|
|
4
|
+
export type { RedisToolCacheStorageConfig } from './storage/redis';
|
|
5
|
+
export { generateCacheKey, paramsToQueryString, stableStringify, cosineSimilarity, parseDuration, } from './cache-key';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,YAAY,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,aAAa,GACd,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { withCache, createToolCacheStorage } from './tool-cache';
|
|
2
|
+
export { InMemoryToolCacheStorage } from './storage/memory';
|
|
3
|
+
export { RedisToolCacheStorage } from './storage/redis';
|
|
4
|
+
export { generateCacheKey, paramsToQueryString, stableStringify, cosineSimilarity, parseDuration, } from './cache-key';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,aAAa,GACd,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cache/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAChD,YAAY,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cache/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { CacheEntry, CacheStats, ToolCacheStorage } from '@cogitator-ai/types';
|
|
2
|
+
export declare class InMemoryToolCacheStorage implements ToolCacheStorage {
|
|
3
|
+
private cache;
|
|
4
|
+
private maxSize;
|
|
5
|
+
private stats;
|
|
6
|
+
constructor(maxSize?: number);
|
|
7
|
+
private updateHitRate;
|
|
8
|
+
recordHit(): void;
|
|
9
|
+
recordMiss(): void;
|
|
10
|
+
recordEviction(): void;
|
|
11
|
+
getStats(): CacheStats;
|
|
12
|
+
get(key: string): Promise<CacheEntry | null>;
|
|
13
|
+
set(key: string, entry: CacheEntry): Promise<void>;
|
|
14
|
+
delete(key: string): Promise<void>;
|
|
15
|
+
has(key: string): Promise<boolean>;
|
|
16
|
+
clear(): Promise<void>;
|
|
17
|
+
getOldest(): Promise<CacheEntry | null>;
|
|
18
|
+
size(): Promise<number>;
|
|
19
|
+
findSimilar(embedding: number[], threshold: number, limit?: number): Promise<Array<CacheEntry & {
|
|
20
|
+
score: number;
|
|
21
|
+
}>>;
|
|
22
|
+
private evictOldest;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/cache/storage/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGpF,qBAAa,wBAAyB,YAAW,gBAAgB;IAC/D,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAMX;gBAEU,OAAO,GAAE,MAAa;IAIlC,OAAO,CAAC,aAAa;IAKrB,SAAS,IAAI,IAAI;IAKjB,UAAU,IAAI,IAAI;IAKlB,cAAc,IAAI,IAAI;IAItB,QAAQ,IAAI,UAAU;IAIhB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAe5C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,SAAS,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAYvC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAIvB,WAAW,CACf,SAAS,EAAE,MAAM,EAAE,EACnB,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;YAiBnC,WAAW;CAQ1B"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { cosineSimilarity } from '../cache-key';
|
|
2
|
+
export class InMemoryToolCacheStorage {
|
|
3
|
+
cache = new Map();
|
|
4
|
+
maxSize;
|
|
5
|
+
stats = {
|
|
6
|
+
hits: 0,
|
|
7
|
+
misses: 0,
|
|
8
|
+
size: 0,
|
|
9
|
+
evictions: 0,
|
|
10
|
+
hitRate: 0,
|
|
11
|
+
};
|
|
12
|
+
constructor(maxSize = 1000) {
|
|
13
|
+
this.maxSize = maxSize;
|
|
14
|
+
}
|
|
15
|
+
updateHitRate() {
|
|
16
|
+
const total = this.stats.hits + this.stats.misses;
|
|
17
|
+
this.stats.hitRate = total > 0 ? this.stats.hits / total : 0;
|
|
18
|
+
}
|
|
19
|
+
recordHit() {
|
|
20
|
+
this.stats.hits++;
|
|
21
|
+
this.updateHitRate();
|
|
22
|
+
}
|
|
23
|
+
recordMiss() {
|
|
24
|
+
this.stats.misses++;
|
|
25
|
+
this.updateHitRate();
|
|
26
|
+
}
|
|
27
|
+
recordEviction() {
|
|
28
|
+
this.stats.evictions++;
|
|
29
|
+
}
|
|
30
|
+
getStats() {
|
|
31
|
+
return { ...this.stats };
|
|
32
|
+
}
|
|
33
|
+
async get(key) {
|
|
34
|
+
const entry = this.cache.get(key);
|
|
35
|
+
if (!entry)
|
|
36
|
+
return null;
|
|
37
|
+
if (Date.now() > entry.expiresAt) {
|
|
38
|
+
this.cache.delete(key);
|
|
39
|
+
this.stats.size = this.cache.size;
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
entry.hits++;
|
|
43
|
+
entry.lastAccessedAt = Date.now();
|
|
44
|
+
return entry;
|
|
45
|
+
}
|
|
46
|
+
async set(key, entry) {
|
|
47
|
+
while (this.cache.size >= this.maxSize) {
|
|
48
|
+
await this.evictOldest();
|
|
49
|
+
}
|
|
50
|
+
this.cache.set(key, entry);
|
|
51
|
+
this.stats.size = this.cache.size;
|
|
52
|
+
}
|
|
53
|
+
async delete(key) {
|
|
54
|
+
this.cache.delete(key);
|
|
55
|
+
this.stats.size = this.cache.size;
|
|
56
|
+
}
|
|
57
|
+
async has(key) {
|
|
58
|
+
const entry = this.cache.get(key);
|
|
59
|
+
if (!entry)
|
|
60
|
+
return false;
|
|
61
|
+
if (Date.now() > entry.expiresAt) {
|
|
62
|
+
this.cache.delete(key);
|
|
63
|
+
this.stats.size = this.cache.size;
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
async clear() {
|
|
69
|
+
this.cache.clear();
|
|
70
|
+
this.stats.size = 0;
|
|
71
|
+
}
|
|
72
|
+
async getOldest() {
|
|
73
|
+
let oldest = null;
|
|
74
|
+
for (const entry of this.cache.values()) {
|
|
75
|
+
if (!oldest || entry.lastAccessedAt < oldest.lastAccessedAt) {
|
|
76
|
+
oldest = entry;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return oldest;
|
|
80
|
+
}
|
|
81
|
+
async size() {
|
|
82
|
+
return this.cache.size;
|
|
83
|
+
}
|
|
84
|
+
async findSimilar(embedding, threshold, limit = 1) {
|
|
85
|
+
const results = [];
|
|
86
|
+
const now = Date.now();
|
|
87
|
+
for (const entry of this.cache.values()) {
|
|
88
|
+
if (now > entry.expiresAt)
|
|
89
|
+
continue;
|
|
90
|
+
if (!entry.embedding)
|
|
91
|
+
continue;
|
|
92
|
+
const score = cosineSimilarity(embedding, entry.embedding);
|
|
93
|
+
if (score >= threshold) {
|
|
94
|
+
results.push({ ...entry, score });
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return results.sort((a, b) => b.score - a.score).slice(0, limit);
|
|
98
|
+
}
|
|
99
|
+
async evictOldest() {
|
|
100
|
+
const oldest = await this.getOldest();
|
|
101
|
+
if (oldest) {
|
|
102
|
+
this.cache.delete(oldest.key);
|
|
103
|
+
this.stats.size = this.cache.size;
|
|
104
|
+
this.recordEviction();
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/cache/storage/memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { CacheEntry, CacheStats, ToolCacheStorage, RedisClientLike } from '@cogitator-ai/types';
|
|
2
|
+
export interface RedisToolCacheStorageConfig {
|
|
3
|
+
client: RedisClientLike;
|
|
4
|
+
keyPrefix?: string;
|
|
5
|
+
maxSize?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare class RedisToolCacheStorage implements ToolCacheStorage {
|
|
8
|
+
private client;
|
|
9
|
+
private prefix;
|
|
10
|
+
private maxSize;
|
|
11
|
+
private lruKey;
|
|
12
|
+
private stats;
|
|
13
|
+
constructor(config: RedisToolCacheStorageConfig);
|
|
14
|
+
private entryKey;
|
|
15
|
+
private updateHitRate;
|
|
16
|
+
recordHit(): void;
|
|
17
|
+
recordMiss(): void;
|
|
18
|
+
recordEviction(): void;
|
|
19
|
+
getStats(): CacheStats;
|
|
20
|
+
get(key: string): Promise<CacheEntry | null>;
|
|
21
|
+
set(key: string, entry: CacheEntry): Promise<void>;
|
|
22
|
+
delete(key: string): Promise<void>;
|
|
23
|
+
has(key: string): Promise<boolean>;
|
|
24
|
+
clear(): Promise<void>;
|
|
25
|
+
getOldest(): Promise<CacheEntry | null>;
|
|
26
|
+
size(): Promise<number>;
|
|
27
|
+
findSimilar(embedding: number[], threshold: number, limit?: number): Promise<Array<CacheEntry & {
|
|
28
|
+
score: number;
|
|
29
|
+
}>>;
|
|
30
|
+
private evictOldest;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=redis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../src/cache/storage/redis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAG7B,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,qBAAsB,YAAW,gBAAgB;IAC5D,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAMX;gBAEU,MAAM,EAAE,2BAA2B;IAO/C,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,aAAa;IAKrB,SAAS,IAAI,IAAI;IAKjB,UAAU,IAAI,IAAI;IAKlB,cAAc,IAAI,IAAI;IAItB,QAAQ,IAAI,UAAU;IAIhB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAuB5C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAelD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQtB,SAAS,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAMvC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAKvB,WAAW,CACf,SAAS,EAAE,MAAM,EAAE,EACnB,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;YAyBnC,WAAW;CAO1B"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { cosineSimilarity } from '../cache-key';
|
|
2
|
+
export class RedisToolCacheStorage {
|
|
3
|
+
client;
|
|
4
|
+
prefix;
|
|
5
|
+
maxSize;
|
|
6
|
+
lruKey;
|
|
7
|
+
stats = {
|
|
8
|
+
hits: 0,
|
|
9
|
+
misses: 0,
|
|
10
|
+
size: 0,
|
|
11
|
+
evictions: 0,
|
|
12
|
+
hitRate: 0,
|
|
13
|
+
};
|
|
14
|
+
constructor(config) {
|
|
15
|
+
this.client = config.client;
|
|
16
|
+
this.prefix = config.keyPrefix ?? 'toolcache:';
|
|
17
|
+
this.maxSize = config.maxSize ?? 1000;
|
|
18
|
+
this.lruKey = `${this.prefix}lru`;
|
|
19
|
+
}
|
|
20
|
+
entryKey(key) {
|
|
21
|
+
return `${this.prefix}entry:${key}`;
|
|
22
|
+
}
|
|
23
|
+
updateHitRate() {
|
|
24
|
+
const total = this.stats.hits + this.stats.misses;
|
|
25
|
+
this.stats.hitRate = total > 0 ? this.stats.hits / total : 0;
|
|
26
|
+
}
|
|
27
|
+
recordHit() {
|
|
28
|
+
this.stats.hits++;
|
|
29
|
+
this.updateHitRate();
|
|
30
|
+
}
|
|
31
|
+
recordMiss() {
|
|
32
|
+
this.stats.misses++;
|
|
33
|
+
this.updateHitRate();
|
|
34
|
+
}
|
|
35
|
+
recordEviction() {
|
|
36
|
+
this.stats.evictions++;
|
|
37
|
+
}
|
|
38
|
+
getStats() {
|
|
39
|
+
return { ...this.stats };
|
|
40
|
+
}
|
|
41
|
+
async get(key) {
|
|
42
|
+
const data = await this.client.get(this.entryKey(key));
|
|
43
|
+
if (!data)
|
|
44
|
+
return null;
|
|
45
|
+
const entry = JSON.parse(data);
|
|
46
|
+
if (Date.now() > entry.expiresAt) {
|
|
47
|
+
await this.delete(key);
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
entry.hits++;
|
|
51
|
+
entry.lastAccessedAt = Date.now();
|
|
52
|
+
const ttlSeconds = Math.ceil((entry.expiresAt - Date.now()) / 1000);
|
|
53
|
+
if (ttlSeconds > 0) {
|
|
54
|
+
await this.client.setex(this.entryKey(key), ttlSeconds, JSON.stringify(entry));
|
|
55
|
+
await this.client.zadd(this.lruKey, entry.lastAccessedAt, key);
|
|
56
|
+
}
|
|
57
|
+
return entry;
|
|
58
|
+
}
|
|
59
|
+
async set(key, entry) {
|
|
60
|
+
const currentSize = await this.size();
|
|
61
|
+
if (currentSize >= this.maxSize) {
|
|
62
|
+
await this.evictOldest();
|
|
63
|
+
}
|
|
64
|
+
const ttlSeconds = Math.ceil((entry.expiresAt - Date.now()) / 1000);
|
|
65
|
+
if (ttlSeconds > 0) {
|
|
66
|
+
await this.client.setex(this.entryKey(key), ttlSeconds, JSON.stringify(entry));
|
|
67
|
+
await this.client.zadd(this.lruKey, entry.lastAccessedAt, key);
|
|
68
|
+
}
|
|
69
|
+
this.stats.size = await this.size();
|
|
70
|
+
}
|
|
71
|
+
async delete(key) {
|
|
72
|
+
await this.client.del(this.entryKey(key));
|
|
73
|
+
await this.client.zrem(this.lruKey, key);
|
|
74
|
+
this.stats.size = await this.size();
|
|
75
|
+
}
|
|
76
|
+
async has(key) {
|
|
77
|
+
const data = await this.client.get(this.entryKey(key));
|
|
78
|
+
return data !== null;
|
|
79
|
+
}
|
|
80
|
+
async clear() {
|
|
81
|
+
const keys = await this.client.keys(`${this.prefix}*`);
|
|
82
|
+
if (keys.length > 0) {
|
|
83
|
+
await this.client.del(...keys);
|
|
84
|
+
}
|
|
85
|
+
this.stats.size = 0;
|
|
86
|
+
}
|
|
87
|
+
async getOldest() {
|
|
88
|
+
const keys = await this.client.zrange(this.lruKey, 0, 0);
|
|
89
|
+
if (keys.length === 0)
|
|
90
|
+
return null;
|
|
91
|
+
return this.get(keys[0]);
|
|
92
|
+
}
|
|
93
|
+
async size() {
|
|
94
|
+
const keys = await this.client.keys(`${this.prefix}entry:*`);
|
|
95
|
+
return keys.length;
|
|
96
|
+
}
|
|
97
|
+
async findSimilar(embedding, threshold, limit = 1) {
|
|
98
|
+
const keys = await this.client.keys(`${this.prefix}entry:*`);
|
|
99
|
+
if (keys.length === 0)
|
|
100
|
+
return [];
|
|
101
|
+
const results = [];
|
|
102
|
+
const now = Date.now();
|
|
103
|
+
const values = await this.client.mget(...keys);
|
|
104
|
+
for (const data of values) {
|
|
105
|
+
if (!data)
|
|
106
|
+
continue;
|
|
107
|
+
const entry = JSON.parse(data);
|
|
108
|
+
if (now > entry.expiresAt)
|
|
109
|
+
continue;
|
|
110
|
+
if (!entry.embedding)
|
|
111
|
+
continue;
|
|
112
|
+
const score = cosineSimilarity(embedding, entry.embedding);
|
|
113
|
+
if (score >= threshold) {
|
|
114
|
+
results.push({ ...entry, score });
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return results.sort((a, b) => b.score - a.score).slice(0, limit);
|
|
118
|
+
}
|
|
119
|
+
async evictOldest() {
|
|
120
|
+
const keys = await this.client.zrange(this.lruKey, 0, 0);
|
|
121
|
+
if (keys.length > 0) {
|
|
122
|
+
await this.delete(keys[0]);
|
|
123
|
+
this.recordEviction();
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=redis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis.js","sourceRoot":"","sources":["../../../src/cache/storage/redis.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Tool, CachedTool, ToolCacheStorage, WithCacheOptions, RedisClientLike } from '@cogitator-ai/types';
|
|
2
|
+
export declare function withCache<TParams, TResult>(tool: Tool<TParams, TResult>, config: WithCacheOptions): CachedTool<TParams, TResult>;
|
|
3
|
+
export declare function createToolCacheStorage(type: 'memory' | 'redis', options?: {
|
|
4
|
+
maxSize?: number;
|
|
5
|
+
redisClient?: RedisClientLike;
|
|
6
|
+
keyPrefix?: string;
|
|
7
|
+
}): ToolCacheStorage;
|
|
8
|
+
//# sourceMappingURL=tool-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-cache.d.ts","sourceRoot":"","sources":["../../src/cache/tool-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EAEJ,UAAU,EAEV,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAK7B,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,EACxC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAC5B,MAAM,EAAE,gBAAgB,GACvB,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAqI9B;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,QAAQ,GAAG,OAAO,EACxB,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACf,GACL,gBAAgB,CAalB"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { parseDuration, generateCacheKey, paramsToQueryString } from './cache-key';
|
|
2
|
+
import { InMemoryToolCacheStorage } from './storage/memory';
|
|
3
|
+
import { RedisToolCacheStorage } from './storage/redis';
|
|
4
|
+
export function withCache(tool, config) {
|
|
5
|
+
const ttlMs = parseDuration(config.ttl);
|
|
6
|
+
const similarity = config.similarity ?? 0.95;
|
|
7
|
+
const prefix = config.keyPrefix ?? 'toolcache';
|
|
8
|
+
const storage = config.storage === 'redis'
|
|
9
|
+
? new RedisToolCacheStorage({
|
|
10
|
+
client: config.redisClient,
|
|
11
|
+
keyPrefix: prefix,
|
|
12
|
+
maxSize: config.maxSize,
|
|
13
|
+
})
|
|
14
|
+
: new InMemoryToolCacheStorage(config.maxSize);
|
|
15
|
+
const cachedExecute = async (params, context) => {
|
|
16
|
+
const cacheKey = generateCacheKey({
|
|
17
|
+
toolName: tool.name,
|
|
18
|
+
params,
|
|
19
|
+
prefix,
|
|
20
|
+
});
|
|
21
|
+
const exactMatch = await storage.get(cacheKey);
|
|
22
|
+
if (exactMatch) {
|
|
23
|
+
storage.recordHit();
|
|
24
|
+
config.onHit?.(cacheKey, params);
|
|
25
|
+
return exactMatch.result;
|
|
26
|
+
}
|
|
27
|
+
if (config.strategy === 'semantic' && config.embeddingService && storage.findSimilar) {
|
|
28
|
+
try {
|
|
29
|
+
const queryStr = paramsToQueryString(params);
|
|
30
|
+
const queryEmbedding = await config.embeddingService.embed(queryStr);
|
|
31
|
+
const similar = await storage.findSimilar(queryEmbedding, similarity, 1);
|
|
32
|
+
if (similar.length > 0) {
|
|
33
|
+
storage.recordHit();
|
|
34
|
+
config.onHit?.(similar[0].key, params);
|
|
35
|
+
await storage.get(similar[0].key);
|
|
36
|
+
return similar[0].result;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
storage.recordMiss();
|
|
43
|
+
config.onMiss?.(cacheKey, params);
|
|
44
|
+
const result = await tool.execute(params, context);
|
|
45
|
+
const now = Date.now();
|
|
46
|
+
const entry = {
|
|
47
|
+
key: cacheKey,
|
|
48
|
+
result,
|
|
49
|
+
createdAt: now,
|
|
50
|
+
expiresAt: now + ttlMs,
|
|
51
|
+
hits: 0,
|
|
52
|
+
lastAccessedAt: now,
|
|
53
|
+
};
|
|
54
|
+
if (config.strategy === 'semantic' && config.embeddingService) {
|
|
55
|
+
try {
|
|
56
|
+
const queryStr = paramsToQueryString(params);
|
|
57
|
+
entry.embedding = await config.embeddingService.embed(queryStr);
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
await storage.set(cacheKey, entry);
|
|
63
|
+
return result;
|
|
64
|
+
};
|
|
65
|
+
const cachedTool = {
|
|
66
|
+
...tool,
|
|
67
|
+
execute: cachedExecute,
|
|
68
|
+
cache: {
|
|
69
|
+
stats: () => storage.getStats(),
|
|
70
|
+
clear: async () => {
|
|
71
|
+
await storage.clear();
|
|
72
|
+
},
|
|
73
|
+
invalidate: async (params) => {
|
|
74
|
+
const key = generateCacheKey({
|
|
75
|
+
toolName: tool.name,
|
|
76
|
+
params,
|
|
77
|
+
prefix,
|
|
78
|
+
});
|
|
79
|
+
const existed = await storage.has(key);
|
|
80
|
+
if (existed) {
|
|
81
|
+
await storage.delete(key);
|
|
82
|
+
config.onEvict?.(key);
|
|
83
|
+
}
|
|
84
|
+
return existed;
|
|
85
|
+
},
|
|
86
|
+
warmup: async (entries) => {
|
|
87
|
+
const now = Date.now();
|
|
88
|
+
for (const { params, result } of entries) {
|
|
89
|
+
const key = generateCacheKey({
|
|
90
|
+
toolName: tool.name,
|
|
91
|
+
params,
|
|
92
|
+
prefix,
|
|
93
|
+
});
|
|
94
|
+
const entry = {
|
|
95
|
+
key,
|
|
96
|
+
result,
|
|
97
|
+
createdAt: now,
|
|
98
|
+
expiresAt: now + ttlMs,
|
|
99
|
+
hits: 0,
|
|
100
|
+
lastAccessedAt: now,
|
|
101
|
+
};
|
|
102
|
+
if (config.strategy === 'semantic' && config.embeddingService) {
|
|
103
|
+
try {
|
|
104
|
+
const queryStr = paramsToQueryString(params);
|
|
105
|
+
entry.embedding = await config.embeddingService.embed(queryStr);
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
await storage.set(key, entry);
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
return cachedTool;
|
|
116
|
+
}
|
|
117
|
+
export function createToolCacheStorage(type, options = {}) {
|
|
118
|
+
if (type === 'redis') {
|
|
119
|
+
if (!options.redisClient) {
|
|
120
|
+
throw new Error('redisClient required for redis storage');
|
|
121
|
+
}
|
|
122
|
+
return new RedisToolCacheStorage({
|
|
123
|
+
client: options.redisClient,
|
|
124
|
+
keyPrefix: options.keyPrefix,
|
|
125
|
+
maxSize: options.maxSize,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
return new InMemoryToolCacheStorage(options.maxSize);
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=tool-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-cache.js","sourceRoot":"","sources":["../../src/cache/tool-cache.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -42,4 +42,7 @@ export type { CausalRelationType, VariableType, EquationType, StructuralEquation
|
|
|
42
42
|
export { DEFAULT_CAUSAL_CONFIG } from '@cogitator-ai/types';
|
|
43
43
|
export { LangfuseExporter, createLangfuseExporter, OTLPExporter, createOTLPExporter, } from './observability/index';
|
|
44
44
|
export type { LangfuseConfig, OTLPExporterConfig } from './observability/index';
|
|
45
|
+
export { withCache, createToolCacheStorage, InMemoryToolCacheStorage, RedisToolCacheStorage, generateCacheKey, paramsToQueryString, cosineSimilarity, parseDuration, } from './cache/index';
|
|
46
|
+
export type { RedisToolCacheStorageConfig } from './cache/index';
|
|
47
|
+
export type { CacheStrategy, DurationString, ToolCacheConfig, CacheEntry, CacheStats, ToolCacheStorage, CachedTool, WithCacheOptions, RedisClientLike, } from '@cogitator-ai/types';
|
|
45
48
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -25,4 +25,5 @@ export { DEFAULT_COST_ROUTING_CONFIG } from '@cogitator-ai/types';
|
|
|
25
25
|
export { CausalReasoner, CausalGraphImpl, CausalGraphBuilder, CausalInferenceEngine, CausalExtractor, CausalHypothesisGenerator, CausalValidator, CausalEffectPredictor, CausalExplainer, CausalPlanner, CounterfactualReasoner, InMemoryCausalGraphStore, InMemoryCausalPatternStore, InMemoryInterventionLog, dSeparation, findMinimalSeparatingSet, findBackdoorAdjustment, findFrontdoorAdjustment, findAllAdjustmentSets, evaluateCounterfactual, getTripleType, } from './causal/index';
|
|
26
26
|
export { DEFAULT_CAUSAL_CONFIG } from '@cogitator-ai/types';
|
|
27
27
|
export { LangfuseExporter, createLangfuseExporter, OTLPExporter, createOTLPExporter, } from './observability/index';
|
|
28
|
+
export { withCache, createToolCacheStorage, InMemoryToolCacheStorage, RedisToolCacheStorage, generateCacheKey, paramsToQueryString, cosineSimilarity, parseDuration, } from './cache/index';
|
|
28
29
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEnE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGtE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG5E,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAG1F,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAQ1B,OAAO,EACL,UAAU,EACV,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,EACf,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAQ7B,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAShC,OAAO,EACL,eAAe,EACf,YAAY,EACZ,aAAa,EACb,WAAW,EACX,cAAc,GACf,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,SAAS,EACT,SAAS,EACT,cAAc,EACd,sBAAsB,EACtB,YAAY,EACZ,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AAUvB,OAAO,EACL,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,GACd,MAAM,qBAAqB,CAAC;AA0D7B,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,qBAAqB,CAAC;AA+B7B,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAc/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,EACL,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,yBAAyB,EACzB,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,aAAa,EACb,sBAAsB,EACtB,wBAAwB,EACxB,0BAA0B,EAC1B,uBAAuB,EACvB,WAAW,EACX,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,GACd,MAAM,gBAAgB,CAAC;AAiDxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,GACnB,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cogitator-ai/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "Core runtime for Cogitator AI agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -22,9 +22,9 @@
|
|
|
22
22
|
"openai": "^4.24.0",
|
|
23
23
|
"zod": "^3.22.4",
|
|
24
24
|
"zod-to-json-schema": "^3.22.4",
|
|
25
|
-
"@cogitator-ai/memory": "0.6.
|
|
26
|
-
"@cogitator-ai/
|
|
27
|
-
"@cogitator-ai/
|
|
25
|
+
"@cogitator-ai/memory": "0.6.3",
|
|
26
|
+
"@cogitator-ai/models": "11.0.0",
|
|
27
|
+
"@cogitator-ai/types": "0.13.0"
|
|
28
28
|
},
|
|
29
29
|
"optionalDependencies": {
|
|
30
30
|
"pg": "^8.11.3"
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"peerDependencies": {
|
|
38
38
|
"@aws-sdk/client-bedrock-runtime": "^3.0.0",
|
|
39
39
|
"pg": "^8.0.0",
|
|
40
|
-
"@cogitator-ai/sandbox": "0.2.
|
|
40
|
+
"@cogitator-ai/sandbox": "0.2.13"
|
|
41
41
|
},
|
|
42
42
|
"peerDependenciesMeta": {
|
|
43
43
|
"@aws-sdk/client-bedrock-runtime": {
|