@xynehq/jaf 0.1.2
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/LICENSE +21 -0
- package/README.md +596 -0
- package/dist/a2a/agent-card.d.ts +28 -0
- package/dist/a2a/agent-card.d.ts.map +1 -0
- package/dist/a2a/agent-card.js +250 -0
- package/dist/a2a/agent-card.js.map +1 -0
- package/dist/a2a/agent.d.ts +38 -0
- package/dist/a2a/agent.d.ts.map +1 -0
- package/dist/a2a/agent.js +223 -0
- package/dist/a2a/agent.js.map +1 -0
- package/dist/a2a/client.d.ts +35 -0
- package/dist/a2a/client.d.ts.map +1 -0
- package/dist/a2a/client.js +337 -0
- package/dist/a2a/client.js.map +1 -0
- package/dist/a2a/examples/client-example.d.ts +104 -0
- package/dist/a2a/examples/client-example.d.ts.map +1 -0
- package/dist/a2a/examples/client-example.js +232 -0
- package/dist/a2a/examples/client-example.js.map +1 -0
- package/dist/a2a/examples/server-example.d.ts +9 -0
- package/dist/a2a/examples/server-example.d.ts.map +1 -0
- package/dist/a2a/examples/server-example.js +209 -0
- package/dist/a2a/examples/server-example.js.map +1 -0
- package/dist/a2a/examples/weather-agent.d.ts +8 -0
- package/dist/a2a/examples/weather-agent.d.ts.map +1 -0
- package/dist/a2a/examples/weather-agent.js +232 -0
- package/dist/a2a/examples/weather-agent.js.map +1 -0
- package/dist/a2a/executor.d.ts +43 -0
- package/dist/a2a/executor.d.ts.map +1 -0
- package/dist/a2a/executor.js +507 -0
- package/dist/a2a/executor.js.map +1 -0
- package/dist/a2a/index.d.ts +378 -0
- package/dist/a2a/index.d.ts.map +1 -0
- package/dist/a2a/index.js +72 -0
- package/dist/a2a/index.js.map +1 -0
- package/dist/a2a/memory/cleanup.d.ts +58 -0
- package/dist/a2a/memory/cleanup.d.ts.map +1 -0
- package/dist/a2a/memory/cleanup.js +281 -0
- package/dist/a2a/memory/cleanup.js.map +1 -0
- package/dist/a2a/memory/factory.d.ts +38 -0
- package/dist/a2a/memory/factory.d.ts.map +1 -0
- package/dist/a2a/memory/factory.js +369 -0
- package/dist/a2a/memory/factory.js.map +1 -0
- package/dist/a2a/memory/index.d.ts +13 -0
- package/dist/a2a/memory/index.d.ts.map +1 -0
- package/dist/a2a/memory/index.js +16 -0
- package/dist/a2a/memory/index.js.map +1 -0
- package/dist/a2a/memory/providers/in-memory.d.ts +10 -0
- package/dist/a2a/memory/providers/in-memory.d.ts.map +1 -0
- package/dist/a2a/memory/providers/in-memory.js +539 -0
- package/dist/a2a/memory/providers/in-memory.js.map +1 -0
- package/dist/a2a/memory/providers/postgres.d.ts +10 -0
- package/dist/a2a/memory/providers/postgres.d.ts.map +1 -0
- package/dist/a2a/memory/providers/postgres.js +404 -0
- package/dist/a2a/memory/providers/postgres.js.map +1 -0
- package/dist/a2a/memory/providers/redis.d.ts +10 -0
- package/dist/a2a/memory/providers/redis.d.ts.map +1 -0
- package/dist/a2a/memory/providers/redis.js +435 -0
- package/dist/a2a/memory/providers/redis.js.map +1 -0
- package/dist/a2a/memory/serialization.d.ts +53 -0
- package/dist/a2a/memory/serialization.d.ts.map +1 -0
- package/dist/a2a/memory/serialization.js +233 -0
- package/dist/a2a/memory/serialization.js.map +1 -0
- package/dist/a2a/memory/types.d.ts +395 -0
- package/dist/a2a/memory/types.d.ts.map +1 -0
- package/dist/a2a/memory/types.js +85 -0
- package/dist/a2a/memory/types.js.map +1 -0
- package/dist/a2a/protocol.d.ts +38 -0
- package/dist/a2a/protocol.d.ts.map +1 -0
- package/dist/a2a/protocol.js +211 -0
- package/dist/a2a/protocol.js.map +1 -0
- package/dist/a2a/server.d.ts +343 -0
- package/dist/a2a/server.d.ts.map +1 -0
- package/dist/a2a/server.js +362 -0
- package/dist/a2a/server.js.map +1 -0
- package/dist/a2a/types.d.ts +730 -0
- package/dist/a2a/types.d.ts.map +1 -0
- package/dist/a2a/types.js +73 -0
- package/dist/a2a/types.js.map +1 -0
- package/dist/adk/agents/index.d.ts +48 -0
- package/dist/adk/agents/index.d.ts.map +1 -0
- package/dist/adk/agents/index.js +277 -0
- package/dist/adk/agents/index.js.map +1 -0
- package/dist/adk/artifacts/index.d.ts +62 -0
- package/dist/adk/artifacts/index.d.ts.map +1 -0
- package/dist/adk/artifacts/index.js +394 -0
- package/dist/adk/artifacts/index.js.map +1 -0
- package/dist/adk/config/llm-config.d.ts +75 -0
- package/dist/adk/config/llm-config.d.ts.map +1 -0
- package/dist/adk/config/llm-config.js +422 -0
- package/dist/adk/config/llm-config.js.map +1 -0
- package/dist/adk/content/index.d.ts +58 -0
- package/dist/adk/content/index.d.ts.map +1 -0
- package/dist/adk/content/index.js +220 -0
- package/dist/adk/content/index.js.map +1 -0
- package/dist/adk/examples/advanced-features.d.ts +22 -0
- package/dist/adk/examples/advanced-features.d.ts.map +1 -0
- package/dist/adk/examples/advanced-features.js +380 -0
- package/dist/adk/examples/advanced-features.js.map +1 -0
- package/dist/adk/examples/basic-agent.d.ts +28 -0
- package/dist/adk/examples/basic-agent.d.ts.map +1 -0
- package/dist/adk/examples/basic-agent.js +207 -0
- package/dist/adk/examples/basic-agent.js.map +1 -0
- package/dist/adk/examples/multi-agent.d.ts +24 -0
- package/dist/adk/examples/multi-agent.d.ts.map +1 -0
- package/dist/adk/examples/multi-agent.js +321 -0
- package/dist/adk/examples/multi-agent.js.map +1 -0
- package/dist/adk/examples/streaming-example.d.ts +9 -0
- package/dist/adk/examples/streaming-example.d.ts.map +1 -0
- package/dist/adk/examples/streaming-example.js +193 -0
- package/dist/adk/examples/streaming-example.js.map +1 -0
- package/dist/adk/index.d.ts +65 -0
- package/dist/adk/index.d.ts.map +1 -0
- package/dist/adk/index.js +251 -0
- package/dist/adk/index.js.map +1 -0
- package/dist/adk/models.d.ts +338 -0
- package/dist/adk/models.d.ts.map +1 -0
- package/dist/adk/models.js +466 -0
- package/dist/adk/models.js.map +1 -0
- package/dist/adk/providers/error-handler.d.ts +100 -0
- package/dist/adk/providers/error-handler.d.ts.map +1 -0
- package/dist/adk/providers/error-handler.js +289 -0
- package/dist/adk/providers/error-handler.js.map +1 -0
- package/dist/adk/providers/llm-service.d.ts +41 -0
- package/dist/adk/providers/llm-service.d.ts.map +1 -0
- package/dist/adk/providers/llm-service.js +520 -0
- package/dist/adk/providers/llm-service.js.map +1 -0
- package/dist/adk/providers/type-converters.d.ts +34 -0
- package/dist/adk/providers/type-converters.d.ts.map +1 -0
- package/dist/adk/providers/type-converters.js +436 -0
- package/dist/adk/providers/type-converters.js.map +1 -0
- package/dist/adk/runners/index.d.ts +33 -0
- package/dist/adk/runners/index.d.ts.map +1 -0
- package/dist/adk/runners/index.js +466 -0
- package/dist/adk/runners/index.js.map +1 -0
- package/dist/adk/schemas/index.d.ts +85 -0
- package/dist/adk/schemas/index.d.ts.map +1 -0
- package/dist/adk/schemas/index.js +363 -0
- package/dist/adk/schemas/index.js.map +1 -0
- package/dist/adk/sessions/examples/session-provider-usage.d.ts +10 -0
- package/dist/adk/sessions/examples/session-provider-usage.d.ts.map +1 -0
- package/dist/adk/sessions/examples/session-provider-usage.js +145 -0
- package/dist/adk/sessions/examples/session-provider-usage.js.map +1 -0
- package/dist/adk/sessions/index.d.ts +53 -0
- package/dist/adk/sessions/index.d.ts.map +1 -0
- package/dist/adk/sessions/index.js +451 -0
- package/dist/adk/sessions/index.js.map +1 -0
- package/dist/adk/sessions/postgres-provider.d.ts +22 -0
- package/dist/adk/sessions/postgres-provider.d.ts.map +1 -0
- package/dist/adk/sessions/postgres-provider.js +293 -0
- package/dist/adk/sessions/postgres-provider.js.map +1 -0
- package/dist/adk/sessions/redis-provider.d.ts +19 -0
- package/dist/adk/sessions/redis-provider.d.ts.map +1 -0
- package/dist/adk/sessions/redis-provider.js +237 -0
- package/dist/adk/sessions/redis-provider.js.map +1 -0
- package/dist/adk/streaming/index.d.ts +76 -0
- package/dist/adk/streaming/index.d.ts.map +1 -0
- package/dist/adk/streaming/index.js +419 -0
- package/dist/adk/streaming/index.js.map +1 -0
- package/dist/adk/tools/index.d.ts +27 -0
- package/dist/adk/tools/index.d.ts.map +1 -0
- package/dist/adk/tools/index.js +506 -0
- package/dist/adk/tools/index.js.map +1 -0
- package/dist/adk/types.d.ts +351 -0
- package/dist/adk/types.d.ts.map +1 -0
- package/dist/adk/types.js +107 -0
- package/dist/adk/types.js.map +1 -0
- package/dist/core/engine.d.ts +3 -0
- package/dist/core/engine.d.ts.map +1 -0
- package/dist/core/engine.js +438 -0
- package/dist/core/engine.js.map +1 -0
- package/dist/core/errors.d.ts +8 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +84 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/tool-results.d.ts +57 -0
- package/dist/core/tool-results.d.ts.map +1 -0
- package/dist/core/tool-results.js +133 -0
- package/dist/core/tool-results.js.map +1 -0
- package/dist/core/tracing.d.ts +32 -0
- package/dist/core/tracing.d.ts.map +1 -0
- package/dist/core/tracing.js +132 -0
- package/dist/core/tracing.js.map +1 -0
- package/dist/core/types.d.ts +165 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +3 -0
- package/dist/core/types.js.map +1 -0
- package/dist/demo/agents.d.ts +23 -0
- package/dist/demo/agents.d.ts.map +1 -0
- package/dist/demo/agents.js +69 -0
- package/dist/demo/agents.js.map +1 -0
- package/dist/demo/index.d.ts +2 -0
- package/dist/demo/index.d.ts.map +1 -0
- package/dist/demo/index.js +250 -0
- package/dist/demo/index.js.map +1 -0
- package/dist/demo/mock-provider.d.ts +22 -0
- package/dist/demo/mock-provider.d.ts.map +1 -0
- package/dist/demo/mock-provider.js +138 -0
- package/dist/demo/mock-provider.js.map +1 -0
- package/dist/demo/tools.d.ts +14 -0
- package/dist/demo/tools.d.ts.map +1 -0
- package/dist/demo/tools.js +115 -0
- package/dist/demo/tools.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/factory.d.ts +22 -0
- package/dist/memory/factory.d.ts.map +1 -0
- package/dist/memory/factory.js +88 -0
- package/dist/memory/factory.js.map +1 -0
- package/dist/memory/providers/in-memory.d.ts +7 -0
- package/dist/memory/providers/in-memory.d.ts.map +1 -0
- package/dist/memory/providers/in-memory.js +287 -0
- package/dist/memory/providers/in-memory.js.map +1 -0
- package/dist/memory/providers/postgres.d.ts +15 -0
- package/dist/memory/providers/postgres.d.ts.map +1 -0
- package/dist/memory/providers/postgres.js +495 -0
- package/dist/memory/providers/postgres.js.map +1 -0
- package/dist/memory/providers/redis.d.ts +18 -0
- package/dist/memory/providers/redis.d.ts.map +1 -0
- package/dist/memory/providers/redis.js +354 -0
- package/dist/memory/providers/redis.js.map +1 -0
- package/dist/memory/types.d.ts +296 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +93 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/policies/handoff.d.ts +16 -0
- package/dist/policies/handoff.d.ts.map +1 -0
- package/dist/policies/handoff.js +20 -0
- package/dist/policies/handoff.js.map +1 -0
- package/dist/policies/validation.d.ts +14 -0
- package/dist/policies/validation.d.ts.map +1 -0
- package/dist/policies/validation.js +92 -0
- package/dist/policies/validation.js.map +1 -0
- package/dist/providers/mcp.d.ts +17 -0
- package/dist/providers/mcp.d.ts.map +1 -0
- package/dist/providers/mcp.js +111 -0
- package/dist/providers/mcp.js.map +1 -0
- package/dist/providers/model.d.ts +3 -0
- package/dist/providers/model.d.ts.map +1 -0
- package/dist/providers/model.js +113 -0
- package/dist/providers/model.js.map +1 -0
- package/dist/server/index.d.ts +35 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +66 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/server.d.ts +12 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +394 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/types.d.ts +456 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/types.js +75 -0
- package/dist/server/types.js.map +1 -0
- package/dist/test-utils/db-setup.d.ts +34 -0
- package/dist/test-utils/db-setup.d.ts.map +1 -0
- package/dist/test-utils/db-setup.js +149 -0
- package/dist/test-utils/db-setup.js.map +1 -0
- package/dist/utils/logger.d.ts +63 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +199 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/safe-math.d.ts +31 -0
- package/dist/utils/safe-math.d.ts.map +1 -0
- package/dist/utils/safe-math.js +86 -0
- package/dist/utils/safe-math.js.map +1 -0
- package/dist/visualization/example.d.ts +9 -0
- package/dist/visualization/example.d.ts.map +1 -0
- package/dist/visualization/example.js +236 -0
- package/dist/visualization/example.js.map +1 -0
- package/dist/visualization/graphviz.d.ts +42 -0
- package/dist/visualization/graphviz.d.ts.map +1 -0
- package/dist/visualization/graphviz.js +403 -0
- package/dist/visualization/graphviz.js.map +1 -0
- package/dist/visualization/index.d.ts +10 -0
- package/dist/visualization/index.d.ts.map +1 -0
- package/dist/visualization/index.js +12 -0
- package/dist/visualization/index.js.map +1 -0
- package/package.json +99 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { MemoryProvider, MemoryProviderConfig, RedisConfig, PostgresConfig } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Create a memory provider from configuration
|
|
4
|
+
*/
|
|
5
|
+
export declare function createMemoryProvider(config: MemoryProviderConfig, externalClients?: {
|
|
6
|
+
redis?: any;
|
|
7
|
+
postgres?: any;
|
|
8
|
+
}): Promise<MemoryProvider>;
|
|
9
|
+
/**
|
|
10
|
+
* Create provider from environment variables
|
|
11
|
+
*/
|
|
12
|
+
export declare function createMemoryProviderFromEnv(externalClients?: {
|
|
13
|
+
redis?: any;
|
|
14
|
+
postgres?: any;
|
|
15
|
+
}): Promise<MemoryProvider>;
|
|
16
|
+
/**
|
|
17
|
+
* Helper function to create memory provider with sensible defaults
|
|
18
|
+
*/
|
|
19
|
+
export declare function createSimpleMemoryProvider(type: 'memory'): Promise<MemoryProvider>;
|
|
20
|
+
export declare function createSimpleMemoryProvider(type: 'redis', redisClient: any, config?: Partial<RedisConfig>): Promise<MemoryProvider>;
|
|
21
|
+
export declare function createSimpleMemoryProvider(type: 'postgres', postgresClient: any, config?: Partial<PostgresConfig>): Promise<MemoryProvider>;
|
|
22
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/memory/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,oBAAoB,EAEpB,WAAW,EACX,cAAc,EAEf,MAAM,SAAS,CAAC;AAKjB;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,oBAAoB,EAC5B,eAAe,CAAC,EAAE;IAChB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB,GACA,OAAO,CAAC,cAAc,CAAC,CA0BzB;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,eAAe,CAAC,EAAE;IAChB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB,GACA,OAAO,CAAC,cAAc,CAAC,CAkDzB;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,cAAc,CAAC,CAAC;AAC3B,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,GAAG,EAChB,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAC5B,OAAO,CAAC,cAAc,CAAC,CAAC;AAC3B,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,UAAU,EAChB,cAAc,EAAE,GAAG,EACnB,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAC/B,OAAO,CAAC,cAAc,CAAC,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { createMemoryConnectionError } from './types';
|
|
2
|
+
import { createInMemoryProvider } from './providers/in-memory';
|
|
3
|
+
import { createRedisProvider } from './providers/redis';
|
|
4
|
+
import { createPostgresProvider } from './providers/postgres';
|
|
5
|
+
/**
|
|
6
|
+
* Create a memory provider from configuration
|
|
7
|
+
*/
|
|
8
|
+
export async function createMemoryProvider(config, externalClients) {
|
|
9
|
+
switch (config.type) {
|
|
10
|
+
case 'memory':
|
|
11
|
+
return createInMemoryProvider(config);
|
|
12
|
+
case 'redis':
|
|
13
|
+
if (!externalClients?.redis) {
|
|
14
|
+
throw createMemoryConnectionError('Redis', new Error('Redis client instance required. Please provide a Redis client in externalClients.redis'));
|
|
15
|
+
}
|
|
16
|
+
return await createRedisProvider(config, externalClients.redis);
|
|
17
|
+
case 'postgres':
|
|
18
|
+
if (!externalClients?.postgres) {
|
|
19
|
+
throw createMemoryConnectionError('PostgreSQL', new Error('PostgreSQL client instance required. Please provide a PostgreSQL client in externalClients.postgres'));
|
|
20
|
+
}
|
|
21
|
+
return await createPostgresProvider(config, externalClients.postgres);
|
|
22
|
+
default:
|
|
23
|
+
throw new Error(`Unknown memory provider type: ${config.type}`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Create provider from environment variables
|
|
28
|
+
*/
|
|
29
|
+
export async function createMemoryProviderFromEnv(externalClients) {
|
|
30
|
+
const memoryType = process.env.JAF_MEMORY_TYPE || 'memory';
|
|
31
|
+
switch (memoryType) {
|
|
32
|
+
case 'memory':
|
|
33
|
+
return createInMemoryProvider({
|
|
34
|
+
type: 'memory',
|
|
35
|
+
maxConversations: parseInt(process.env.JAF_MEMORY_MAX_CONVERSATIONS || '1000'),
|
|
36
|
+
maxMessagesPerConversation: parseInt(process.env.JAF_MEMORY_MAX_MESSAGES || '1000')
|
|
37
|
+
});
|
|
38
|
+
case 'redis':
|
|
39
|
+
if (!externalClients?.redis) {
|
|
40
|
+
throw createMemoryConnectionError('Redis', new Error('Redis client required for Redis memory provider'));
|
|
41
|
+
}
|
|
42
|
+
return await createRedisProvider({
|
|
43
|
+
type: 'redis',
|
|
44
|
+
host: process.env.JAF_REDIS_HOST || 'localhost',
|
|
45
|
+
port: parseInt(process.env.JAF_REDIS_PORT || '6379'),
|
|
46
|
+
password: process.env.JAF_REDIS_PASSWORD,
|
|
47
|
+
db: parseInt(process.env.JAF_REDIS_DB || '0'),
|
|
48
|
+
keyPrefix: process.env.JAF_REDIS_PREFIX || 'jaf:memory:',
|
|
49
|
+
ttl: process.env.JAF_REDIS_TTL ? parseInt(process.env.JAF_REDIS_TTL) : undefined
|
|
50
|
+
}, externalClients.redis);
|
|
51
|
+
case 'postgres':
|
|
52
|
+
if (!externalClients?.postgres) {
|
|
53
|
+
throw createMemoryConnectionError('PostgreSQL', new Error('PostgreSQL client required for PostgreSQL memory provider'));
|
|
54
|
+
}
|
|
55
|
+
return await createPostgresProvider({
|
|
56
|
+
type: 'postgres',
|
|
57
|
+
host: process.env.JAF_POSTGRES_HOST || 'localhost',
|
|
58
|
+
port: parseInt(process.env.JAF_POSTGRES_PORT || '5432'),
|
|
59
|
+
database: process.env.JAF_POSTGRES_DB || 'jaf_memory',
|
|
60
|
+
username: process.env.JAF_POSTGRES_USER || 'postgres',
|
|
61
|
+
password: process.env.JAF_POSTGRES_PASSWORD,
|
|
62
|
+
ssl: process.env.JAF_POSTGRES_SSL === 'true',
|
|
63
|
+
tableName: process.env.JAF_POSTGRES_TABLE || 'conversations',
|
|
64
|
+
maxConnections: parseInt(process.env.JAF_POSTGRES_MAX_CONNECTIONS || '10')
|
|
65
|
+
}, externalClients.postgres);
|
|
66
|
+
default:
|
|
67
|
+
throw new Error(`Unknown memory provider type: ${memoryType}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export async function createSimpleMemoryProvider(type, client, config) {
|
|
71
|
+
switch (type) {
|
|
72
|
+
case 'memory':
|
|
73
|
+
return createInMemoryProvider({ type: 'memory', ...config });
|
|
74
|
+
case 'redis':
|
|
75
|
+
if (!client) {
|
|
76
|
+
throw new Error('Redis client required for Redis memory provider');
|
|
77
|
+
}
|
|
78
|
+
return await createRedisProvider({ type: 'redis', ...config }, client);
|
|
79
|
+
case 'postgres':
|
|
80
|
+
if (!client) {
|
|
81
|
+
throw new Error('PostgreSQL client required for PostgreSQL memory provider');
|
|
82
|
+
}
|
|
83
|
+
return await createPostgresProvider({ type: 'postgres', ...config }, client);
|
|
84
|
+
default:
|
|
85
|
+
throw new Error(`Unknown memory provider type: ${type}`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/memory/factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { MemoryProvider, InMemoryConfig } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* In-memory memory provider - no persistence across server restarts
|
|
4
|
+
* Best for development, testing, or temporary conversations
|
|
5
|
+
*/
|
|
6
|
+
export declare function createInMemoryProvider(config?: InMemoryConfig): MemoryProvider;
|
|
7
|
+
//# sourceMappingURL=in-memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in-memory.d.ts","sourceRoot":"","sources":["../../../src/memory/providers/in-memory.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EAGd,cAAc,EAMf,MAAM,UAAU,CAAC;AAElB;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,GAAE,cAA6F,GAAG,cAAc,CA+U5J"}
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
import { createSuccess, createFailure, createMemoryNotFoundError, createMemoryStorageError } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* In-memory memory provider - no persistence across server restarts
|
|
4
|
+
* Best for development, testing, or temporary conversations
|
|
5
|
+
*/
|
|
6
|
+
export function createInMemoryProvider(config = { type: 'memory', maxConversations: 1000, maxMessagesPerConversation: 1000 }) {
|
|
7
|
+
const fullConfig = {
|
|
8
|
+
...config,
|
|
9
|
+
type: 'memory',
|
|
10
|
+
maxConversations: config.maxConversations ?? 1000,
|
|
11
|
+
maxMessagesPerConversation: config.maxMessagesPerConversation ?? 1000
|
|
12
|
+
};
|
|
13
|
+
const conversations = new Map();
|
|
14
|
+
console.log(`[MEMORY:InMemory] Initialized with max ${fullConfig.maxConversations} conversations, ${fullConfig.maxMessagesPerConversation} messages each`);
|
|
15
|
+
const enforceMemoryLimits = () => {
|
|
16
|
+
if (conversations.size <= fullConfig.maxConversations) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
// Sort by last activity and remove oldest conversations
|
|
20
|
+
const sorted = Array.from(conversations.entries())
|
|
21
|
+
.sort(([, a], [, b]) => {
|
|
22
|
+
const aTime = a.metadata?.lastActivity?.getTime() || 0;
|
|
23
|
+
const bTime = b.metadata?.lastActivity?.getTime() || 0;
|
|
24
|
+
return aTime - bTime; // Oldest first
|
|
25
|
+
});
|
|
26
|
+
const toRemove = sorted.slice(0, conversations.size - fullConfig.maxConversations);
|
|
27
|
+
for (const [id] of toRemove) {
|
|
28
|
+
conversations.delete(id);
|
|
29
|
+
}
|
|
30
|
+
console.log(`[MEMORY:InMemory] Enforced memory limits, removed ${toRemove.length} oldest conversations`);
|
|
31
|
+
};
|
|
32
|
+
const storeMessages = async (conversationId, messages, metadata) => {
|
|
33
|
+
try {
|
|
34
|
+
const now = new Date();
|
|
35
|
+
const conversation = {
|
|
36
|
+
conversationId,
|
|
37
|
+
userId: metadata?.userId,
|
|
38
|
+
messages,
|
|
39
|
+
metadata: {
|
|
40
|
+
createdAt: now,
|
|
41
|
+
updatedAt: now,
|
|
42
|
+
totalMessages: messages.length,
|
|
43
|
+
lastActivity: now,
|
|
44
|
+
traceId: metadata?.traceId,
|
|
45
|
+
...metadata
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
conversations.set(conversationId, conversation);
|
|
49
|
+
enforceMemoryLimits();
|
|
50
|
+
console.log(`[MEMORY:InMemory] Stored ${messages.length} messages for conversation ${conversationId}`);
|
|
51
|
+
return createSuccess(undefined);
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
return createFailure(createMemoryStorageError('store messages', 'InMemory', error));
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
const getConversation = async (conversationId) => {
|
|
58
|
+
try {
|
|
59
|
+
const conversation = conversations.get(conversationId);
|
|
60
|
+
if (!conversation) {
|
|
61
|
+
return createSuccess(null);
|
|
62
|
+
}
|
|
63
|
+
// Update last activity
|
|
64
|
+
const updatedConversation = {
|
|
65
|
+
...conversation,
|
|
66
|
+
metadata: {
|
|
67
|
+
...conversation.metadata,
|
|
68
|
+
lastActivity: new Date()
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
conversations.set(conversationId, updatedConversation);
|
|
72
|
+
console.log(`[MEMORY:InMemory] Retrieved conversation ${conversationId} with ${conversation.messages.length} messages`);
|
|
73
|
+
return createSuccess(updatedConversation);
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
return createFailure(createMemoryStorageError('get conversation', 'InMemory', error));
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
const appendMessages = async (conversationId, messages, metadata) => {
|
|
80
|
+
try {
|
|
81
|
+
const existing = conversations.get(conversationId);
|
|
82
|
+
if (!existing) {
|
|
83
|
+
return createFailure(createMemoryNotFoundError(conversationId, 'InMemory'));
|
|
84
|
+
}
|
|
85
|
+
const updatedMessages = [...existing.messages, ...messages];
|
|
86
|
+
// Enforce per-conversation message limit
|
|
87
|
+
const finalMessages = updatedMessages.length > fullConfig.maxMessagesPerConversation
|
|
88
|
+
? updatedMessages.slice(-fullConfig.maxMessagesPerConversation)
|
|
89
|
+
: updatedMessages;
|
|
90
|
+
const now = new Date();
|
|
91
|
+
const updatedConversation = {
|
|
92
|
+
...existing,
|
|
93
|
+
messages: finalMessages,
|
|
94
|
+
metadata: {
|
|
95
|
+
...existing.metadata,
|
|
96
|
+
updatedAt: now,
|
|
97
|
+
lastActivity: now,
|
|
98
|
+
totalMessages: finalMessages.length,
|
|
99
|
+
traceId: metadata?.traceId || existing.metadata?.traceId,
|
|
100
|
+
...metadata
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
conversations.set(conversationId, updatedConversation);
|
|
104
|
+
console.log(`[MEMORY:InMemory] Appended ${messages.length} messages to conversation ${conversationId} (total: ${finalMessages.length})`);
|
|
105
|
+
return createSuccess(undefined);
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
return createFailure(createMemoryStorageError('append messages', 'InMemory', error));
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
const findConversations = async (query) => {
|
|
112
|
+
try {
|
|
113
|
+
const results = [];
|
|
114
|
+
for (const [id, conversation] of conversations) {
|
|
115
|
+
let matches = true;
|
|
116
|
+
if (query.conversationId && id !== query.conversationId) {
|
|
117
|
+
matches = false;
|
|
118
|
+
}
|
|
119
|
+
if (query.userId && conversation.userId !== query.userId) {
|
|
120
|
+
matches = false;
|
|
121
|
+
}
|
|
122
|
+
if (query.traceId && conversation.metadata?.traceId !== query.traceId) {
|
|
123
|
+
matches = false;
|
|
124
|
+
}
|
|
125
|
+
if (query.since && conversation.metadata?.createdAt && conversation.metadata.createdAt < query.since) {
|
|
126
|
+
matches = false;
|
|
127
|
+
}
|
|
128
|
+
if (query.until && conversation.metadata?.createdAt && conversation.metadata.createdAt > query.until) {
|
|
129
|
+
matches = false;
|
|
130
|
+
}
|
|
131
|
+
if (matches) {
|
|
132
|
+
results.push(conversation);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// Sort by last activity (most recent first)
|
|
136
|
+
results.sort((a, b) => {
|
|
137
|
+
const aTime = a.metadata?.lastActivity?.getTime() || 0;
|
|
138
|
+
const bTime = b.metadata?.lastActivity?.getTime() || 0;
|
|
139
|
+
return bTime - aTime;
|
|
140
|
+
});
|
|
141
|
+
// Apply pagination
|
|
142
|
+
const offset = query.offset || 0;
|
|
143
|
+
const limit = query.limit || results.length;
|
|
144
|
+
const paginatedResults = results.slice(offset, offset + limit);
|
|
145
|
+
console.log(`[MEMORY:InMemory] Found ${paginatedResults.length} conversations matching query`);
|
|
146
|
+
return createSuccess(paginatedResults);
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
return createFailure(createMemoryStorageError('find conversations', 'InMemory', error));
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
const getRecentMessages = async (conversationId, limit = 50) => {
|
|
153
|
+
const conversationResult = await getConversation(conversationId);
|
|
154
|
+
if (!conversationResult.success) {
|
|
155
|
+
return conversationResult;
|
|
156
|
+
}
|
|
157
|
+
if (!conversationResult.data) {
|
|
158
|
+
return createSuccess([]);
|
|
159
|
+
}
|
|
160
|
+
const messages = conversationResult.data.messages.slice(-limit);
|
|
161
|
+
console.log(`[MEMORY:InMemory] Retrieved ${messages.length} recent messages for conversation ${conversationId}`);
|
|
162
|
+
return createSuccess(messages);
|
|
163
|
+
};
|
|
164
|
+
const deleteConversation = async (conversationId) => {
|
|
165
|
+
try {
|
|
166
|
+
const existed = conversations.has(conversationId);
|
|
167
|
+
conversations.delete(conversationId);
|
|
168
|
+
console.log(`[MEMORY:InMemory] ${existed ? 'Deleted' : 'Attempted to delete non-existent'} conversation ${conversationId}`);
|
|
169
|
+
return createSuccess(existed);
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
return createFailure(createMemoryStorageError('delete conversation', 'InMemory', error));
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
const clearUserConversations = async (userId) => {
|
|
176
|
+
try {
|
|
177
|
+
let deletedCount = 0;
|
|
178
|
+
for (const [id, conversation] of conversations) {
|
|
179
|
+
if (conversation.userId === userId) {
|
|
180
|
+
conversations.delete(id);
|
|
181
|
+
deletedCount++;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
console.log(`[MEMORY:InMemory] Cleared ${deletedCount} conversations for user ${userId}`);
|
|
185
|
+
return createSuccess(deletedCount);
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
return createFailure(createMemoryStorageError('clear user conversations', 'InMemory', error));
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
const getStats = async (userId) => {
|
|
192
|
+
try {
|
|
193
|
+
let totalConversations = 0;
|
|
194
|
+
let totalMessages = 0;
|
|
195
|
+
let oldestDate;
|
|
196
|
+
let newestDate;
|
|
197
|
+
for (const conversation of conversations.values()) {
|
|
198
|
+
if (userId && conversation.userId !== userId) {
|
|
199
|
+
continue;
|
|
200
|
+
}
|
|
201
|
+
totalConversations++;
|
|
202
|
+
totalMessages += conversation.messages.length;
|
|
203
|
+
const createdAt = conversation.metadata?.createdAt;
|
|
204
|
+
if (createdAt) {
|
|
205
|
+
if (!oldestDate || createdAt < oldestDate) {
|
|
206
|
+
oldestDate = createdAt;
|
|
207
|
+
}
|
|
208
|
+
if (!newestDate || createdAt > newestDate) {
|
|
209
|
+
newestDate = createdAt;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return createSuccess({
|
|
214
|
+
totalConversations,
|
|
215
|
+
totalMessages,
|
|
216
|
+
oldestConversation: oldestDate,
|
|
217
|
+
newestConversation: newestDate
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
return createFailure(createMemoryStorageError('get stats', 'InMemory', error));
|
|
222
|
+
}
|
|
223
|
+
};
|
|
224
|
+
const healthCheck = async () => {
|
|
225
|
+
const start = Date.now();
|
|
226
|
+
try {
|
|
227
|
+
// Simple operation to test functionality
|
|
228
|
+
const testId = `health-check-${Date.now()}`;
|
|
229
|
+
const storeResult = await storeMessages(testId, [{ role: 'user', content: 'health check' }]);
|
|
230
|
+
if (!storeResult.success) {
|
|
231
|
+
return createSuccess({
|
|
232
|
+
healthy: false,
|
|
233
|
+
latencyMs: Date.now() - start,
|
|
234
|
+
error: storeResult.error.message
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
const getResult = await getConversation(testId);
|
|
238
|
+
if (!getResult.success) {
|
|
239
|
+
return createSuccess({
|
|
240
|
+
healthy: false,
|
|
241
|
+
latencyMs: Date.now() - start,
|
|
242
|
+
error: getResult.error.message
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
const deleteResult = await deleteConversation(testId);
|
|
246
|
+
if (!deleteResult.success) {
|
|
247
|
+
return createSuccess({
|
|
248
|
+
healthy: false,
|
|
249
|
+
latencyMs: Date.now() - start,
|
|
250
|
+
error: deleteResult.error.message
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
const latencyMs = Date.now() - start;
|
|
254
|
+
return createSuccess({ healthy: true, latencyMs });
|
|
255
|
+
}
|
|
256
|
+
catch (error) {
|
|
257
|
+
return createSuccess({
|
|
258
|
+
healthy: false,
|
|
259
|
+
latencyMs: Date.now() - start,
|
|
260
|
+
error: error instanceof Error ? error.message : 'Unknown error'
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
const close = async () => {
|
|
265
|
+
try {
|
|
266
|
+
console.log(`[MEMORY:InMemory] Closing provider, clearing ${conversations.size} conversations`);
|
|
267
|
+
conversations.clear();
|
|
268
|
+
return createSuccess(undefined);
|
|
269
|
+
}
|
|
270
|
+
catch (error) {
|
|
271
|
+
return createFailure(createMemoryStorageError('close provider', 'InMemory', error));
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
return {
|
|
275
|
+
storeMessages,
|
|
276
|
+
getConversation,
|
|
277
|
+
appendMessages,
|
|
278
|
+
findConversations,
|
|
279
|
+
getRecentMessages,
|
|
280
|
+
deleteConversation,
|
|
281
|
+
clearUserConversations,
|
|
282
|
+
getStats,
|
|
283
|
+
healthCheck,
|
|
284
|
+
close
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
//# sourceMappingURL=in-memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in-memory.js","sourceRoot":"","sources":["../../../src/memory/providers/in-memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { MemoryProvider, PostgresConfig } from '../types';
|
|
2
|
+
interface PostgresClient {
|
|
3
|
+
query(sql: string, params?: any[]): Promise<{
|
|
4
|
+
rows: any[];
|
|
5
|
+
rowCount: number;
|
|
6
|
+
}>;
|
|
7
|
+
end(): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* PostgreSQL memory provider - fully persistent with advanced querying
|
|
11
|
+
* Best for production environments requiring complex queries and full persistence
|
|
12
|
+
*/
|
|
13
|
+
export declare function createPostgresProvider(config: PostgresConfig, postgresClient: PostgresClient): Promise<MemoryProvider>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=postgres.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../../src/memory/providers/postgres.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EAGd,cAAc,EAOf,MAAM,UAAU,CAAC;AAGlB,UAAU,cAAc;IACtB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/E,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAmiB5H"}
|