@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,394 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JAF ADK Layer - Artifact Storage System
|
|
3
|
+
*
|
|
4
|
+
* Provides persistent key-value storage for agent conversations
|
|
5
|
+
* with support for multiple storage backends
|
|
6
|
+
*/
|
|
7
|
+
// ========== In-Memory Storage ==========
|
|
8
|
+
export const createMemoryArtifactStorage = (config) => {
|
|
9
|
+
const storage = new Map();
|
|
10
|
+
const maxSize = config?.maxSize || 10 * 1024 * 1024; // 10MB default
|
|
11
|
+
const ttl = config?.ttl; // Optional TTL
|
|
12
|
+
// Helper to get session storage
|
|
13
|
+
const getSessionStorage = (sessionId) => {
|
|
14
|
+
if (!storage.has(sessionId)) {
|
|
15
|
+
storage.set(sessionId, new Map());
|
|
16
|
+
}
|
|
17
|
+
return storage.get(sessionId);
|
|
18
|
+
};
|
|
19
|
+
// Helper to check TTL
|
|
20
|
+
const isExpired = (artifact) => {
|
|
21
|
+
if (!ttl)
|
|
22
|
+
return false;
|
|
23
|
+
const age = Date.now() - artifact.metadata.lastModified.getTime();
|
|
24
|
+
return age > ttl * 1000;
|
|
25
|
+
};
|
|
26
|
+
// Helper to estimate size
|
|
27
|
+
const estimateSize = (value) => {
|
|
28
|
+
try {
|
|
29
|
+
return JSON.stringify(value).length;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return 0;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
return {
|
|
36
|
+
get: async (sessionId, key) => {
|
|
37
|
+
const sessionStorage = getSessionStorage(sessionId);
|
|
38
|
+
const artifact = sessionStorage.get(key);
|
|
39
|
+
if (!artifact)
|
|
40
|
+
return null;
|
|
41
|
+
if (isExpired(artifact)) {
|
|
42
|
+
sessionStorage.delete(key);
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
return artifact;
|
|
46
|
+
},
|
|
47
|
+
set: async (sessionId, key, value, metadata) => {
|
|
48
|
+
const sessionStorage = getSessionStorage(sessionId);
|
|
49
|
+
const size = estimateSize(value);
|
|
50
|
+
if (size > maxSize) {
|
|
51
|
+
throw new Error(`Artifact size (${size} bytes) exceeds maximum allowed size (${maxSize} bytes)`);
|
|
52
|
+
}
|
|
53
|
+
const now = new Date();
|
|
54
|
+
const artifact = {
|
|
55
|
+
key,
|
|
56
|
+
value,
|
|
57
|
+
metadata: {
|
|
58
|
+
created: metadata?.created || sessionStorage.get(key)?.metadata.created || now,
|
|
59
|
+
lastModified: now,
|
|
60
|
+
contentType: metadata?.contentType,
|
|
61
|
+
size,
|
|
62
|
+
tags: metadata?.tags
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
sessionStorage.set(key, artifact);
|
|
66
|
+
return artifact;
|
|
67
|
+
},
|
|
68
|
+
delete: async (sessionId, key) => {
|
|
69
|
+
const sessionStorage = getSessionStorage(sessionId);
|
|
70
|
+
return sessionStorage.delete(key);
|
|
71
|
+
},
|
|
72
|
+
list: async (sessionId) => {
|
|
73
|
+
const sessionStorage = getSessionStorage(sessionId);
|
|
74
|
+
const artifacts = [];
|
|
75
|
+
for (const [key, artifact] of sessionStorage.entries()) {
|
|
76
|
+
if (!isExpired(artifact)) {
|
|
77
|
+
artifacts.push(artifact);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
sessionStorage.delete(key);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return artifacts;
|
|
84
|
+
},
|
|
85
|
+
clear: async (sessionId) => {
|
|
86
|
+
storage.delete(sessionId);
|
|
87
|
+
},
|
|
88
|
+
exists: async (sessionId, key) => {
|
|
89
|
+
const sessionStorage = getSessionStorage(sessionId);
|
|
90
|
+
const artifact = sessionStorage.get(key);
|
|
91
|
+
if (!artifact)
|
|
92
|
+
return false;
|
|
93
|
+
if (isExpired(artifact)) {
|
|
94
|
+
sessionStorage.delete(key);
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
// ========== Redis Storage ==========
|
|
102
|
+
export const createRedisArtifactStorage = (config) => {
|
|
103
|
+
let redis;
|
|
104
|
+
const keyPrefix = config.keyPrefix || 'jaf:artifacts:';
|
|
105
|
+
const maxSize = config.maxSize || 10 * 1024 * 1024; // 10MB default
|
|
106
|
+
const ttl = config.ttl; // Optional TTL in seconds
|
|
107
|
+
try {
|
|
108
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
109
|
+
const Redis = require('ioredis');
|
|
110
|
+
redis = new Redis({
|
|
111
|
+
host: config.host,
|
|
112
|
+
port: config.port,
|
|
113
|
+
password: config.password,
|
|
114
|
+
db: config.database || 0
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
throw new Error('Redis artifact storage requires ioredis to be installed');
|
|
119
|
+
}
|
|
120
|
+
const getKey = (sessionId, key) => `${keyPrefix}${sessionId}:${key}`;
|
|
121
|
+
const getSessionPattern = (sessionId) => `${keyPrefix}${sessionId}:*`;
|
|
122
|
+
return {
|
|
123
|
+
get: async (sessionId, key) => {
|
|
124
|
+
const redisKey = getKey(sessionId, key);
|
|
125
|
+
const data = await redis.get(redisKey);
|
|
126
|
+
if (!data)
|
|
127
|
+
return null;
|
|
128
|
+
try {
|
|
129
|
+
return JSON.parse(data);
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
set: async (sessionId, key, value, metadata) => {
|
|
136
|
+
const now = new Date();
|
|
137
|
+
const artifact = {
|
|
138
|
+
key,
|
|
139
|
+
value,
|
|
140
|
+
metadata: {
|
|
141
|
+
created: metadata?.created || now,
|
|
142
|
+
lastModified: now,
|
|
143
|
+
contentType: metadata?.contentType,
|
|
144
|
+
size: JSON.stringify(value).length,
|
|
145
|
+
tags: metadata?.tags
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
const serialized = JSON.stringify(artifact);
|
|
149
|
+
if (serialized.length > maxSize) {
|
|
150
|
+
throw new Error(`Artifact size exceeds maximum allowed size`);
|
|
151
|
+
}
|
|
152
|
+
const redisKey = getKey(sessionId, key);
|
|
153
|
+
if (ttl) {
|
|
154
|
+
await redis.setex(redisKey, ttl, serialized);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
await redis.set(redisKey, serialized);
|
|
158
|
+
}
|
|
159
|
+
return artifact;
|
|
160
|
+
},
|
|
161
|
+
delete: async (sessionId, key) => {
|
|
162
|
+
const redisKey = getKey(sessionId, key);
|
|
163
|
+
const result = await redis.del(redisKey);
|
|
164
|
+
return result > 0;
|
|
165
|
+
},
|
|
166
|
+
list: async (sessionId) => {
|
|
167
|
+
const pattern = getSessionPattern(sessionId);
|
|
168
|
+
const keys = await redis.keys(pattern);
|
|
169
|
+
if (keys.length === 0)
|
|
170
|
+
return [];
|
|
171
|
+
const values = await redis.mget(...keys);
|
|
172
|
+
const artifacts = [];
|
|
173
|
+
for (const value of values) {
|
|
174
|
+
if (value) {
|
|
175
|
+
try {
|
|
176
|
+
artifacts.push(JSON.parse(value));
|
|
177
|
+
}
|
|
178
|
+
catch {
|
|
179
|
+
// Skip invalid artifacts
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return artifacts;
|
|
184
|
+
},
|
|
185
|
+
clear: async (sessionId) => {
|
|
186
|
+
const pattern = getSessionPattern(sessionId);
|
|
187
|
+
const keys = await redis.keys(pattern);
|
|
188
|
+
if (keys.length > 0) {
|
|
189
|
+
await redis.del(...keys);
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
exists: async (sessionId, key) => {
|
|
193
|
+
const redisKey = getKey(sessionId, key);
|
|
194
|
+
const exists = await redis.exists(redisKey);
|
|
195
|
+
return exists > 0;
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
};
|
|
199
|
+
// ========== PostgreSQL Storage ==========
|
|
200
|
+
export const createPostgresArtifactStorage = (config) => {
|
|
201
|
+
let pool;
|
|
202
|
+
const tableName = config.tableName || 'jaf_artifacts';
|
|
203
|
+
// const maxSize = config.maxSize || 10 * 1024 * 1024; // TODO: Implement size limit checking
|
|
204
|
+
const ttl = config.ttl;
|
|
205
|
+
try {
|
|
206
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
207
|
+
const { Pool } = require('pg');
|
|
208
|
+
pool = new Pool({
|
|
209
|
+
connectionString: config.connectionString
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
throw new Error('PostgreSQL artifact storage requires pg to be installed');
|
|
214
|
+
}
|
|
215
|
+
async function initializeTable() {
|
|
216
|
+
const query = `
|
|
217
|
+
CREATE TABLE IF NOT EXISTS ${tableName} (
|
|
218
|
+
session_id VARCHAR(255) NOT NULL,
|
|
219
|
+
key VARCHAR(255) NOT NULL,
|
|
220
|
+
value JSONB NOT NULL,
|
|
221
|
+
metadata JSONB NOT NULL,
|
|
222
|
+
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
|
223
|
+
modified_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
|
224
|
+
expires_at TIMESTAMP WITH TIME ZONE,
|
|
225
|
+
PRIMARY KEY (session_id, key)
|
|
226
|
+
);
|
|
227
|
+
CREATE INDEX IF NOT EXISTS idx_session_id ON ${tableName} (session_id);
|
|
228
|
+
CREATE INDEX IF NOT EXISTS idx_expires_at ON ${tableName} (expires_at);
|
|
229
|
+
`;
|
|
230
|
+
await pool.query(query);
|
|
231
|
+
}
|
|
232
|
+
// Initialize table asynchronously
|
|
233
|
+
const initPromise = initializeTable().catch(error => {
|
|
234
|
+
console.error('Failed to initialize PostgreSQL artifact storage table:', error);
|
|
235
|
+
throw error;
|
|
236
|
+
});
|
|
237
|
+
return {
|
|
238
|
+
get: async (sessionId, key) => {
|
|
239
|
+
await initPromise; // Ensure table exists
|
|
240
|
+
const query = `
|
|
241
|
+
SELECT * FROM ${tableName}
|
|
242
|
+
WHERE session_id = $1 AND key = $2
|
|
243
|
+
AND (expires_at IS NULL OR expires_at > NOW())
|
|
244
|
+
`;
|
|
245
|
+
const result = await pool.query(query, [sessionId, key]);
|
|
246
|
+
if (result.rows.length === 0)
|
|
247
|
+
return null;
|
|
248
|
+
const row = result.rows[0];
|
|
249
|
+
return {
|
|
250
|
+
key: row.key,
|
|
251
|
+
value: row.value,
|
|
252
|
+
metadata: {
|
|
253
|
+
...row.metadata,
|
|
254
|
+
created: new Date(row.created_at),
|
|
255
|
+
lastModified: new Date(row.modified_at)
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
},
|
|
259
|
+
set: async (sessionId, key, value, metadata) => {
|
|
260
|
+
await initPromise; // Ensure table exists
|
|
261
|
+
const now = new Date();
|
|
262
|
+
const expiresAt = ttl ? new Date(now.getTime() + ttl * 1000) : null;
|
|
263
|
+
const artifact = {
|
|
264
|
+
key,
|
|
265
|
+
value,
|
|
266
|
+
metadata: {
|
|
267
|
+
created: metadata?.created || now,
|
|
268
|
+
lastModified: now,
|
|
269
|
+
contentType: metadata?.contentType,
|
|
270
|
+
size: JSON.stringify(value).length,
|
|
271
|
+
tags: metadata?.tags
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
const query = `
|
|
275
|
+
INSERT INTO ${tableName} (session_id, key, value, metadata, created_at, modified_at, expires_at)
|
|
276
|
+
VALUES ($1, $2, $3, $4, $5, $6, $7)
|
|
277
|
+
ON CONFLICT (session_id, key)
|
|
278
|
+
DO UPDATE SET
|
|
279
|
+
value = $3,
|
|
280
|
+
metadata = $4,
|
|
281
|
+
modified_at = $6,
|
|
282
|
+
expires_at = $7
|
|
283
|
+
RETURNING *
|
|
284
|
+
`;
|
|
285
|
+
await pool.query(query, [
|
|
286
|
+
sessionId,
|
|
287
|
+
key,
|
|
288
|
+
JSON.stringify(value),
|
|
289
|
+
JSON.stringify(artifact.metadata),
|
|
290
|
+
artifact.metadata.created,
|
|
291
|
+
now,
|
|
292
|
+
expiresAt
|
|
293
|
+
]);
|
|
294
|
+
return artifact;
|
|
295
|
+
},
|
|
296
|
+
delete: async (sessionId, key) => {
|
|
297
|
+
await initPromise; // Ensure table exists
|
|
298
|
+
const query = `
|
|
299
|
+
DELETE FROM ${tableName}
|
|
300
|
+
WHERE session_id = $1 AND key = $2
|
|
301
|
+
`;
|
|
302
|
+
const result = await pool.query(query, [sessionId, key]);
|
|
303
|
+
return result.rowCount > 0;
|
|
304
|
+
},
|
|
305
|
+
list: async (sessionId) => {
|
|
306
|
+
await initPromise; // Ensure table exists
|
|
307
|
+
const query = `
|
|
308
|
+
SELECT * FROM ${tableName}
|
|
309
|
+
WHERE session_id = $1
|
|
310
|
+
AND (expires_at IS NULL OR expires_at > NOW())
|
|
311
|
+
ORDER BY modified_at DESC
|
|
312
|
+
`;
|
|
313
|
+
const result = await pool.query(query, [sessionId]);
|
|
314
|
+
return result.rows.map((row) => ({
|
|
315
|
+
key: row.key,
|
|
316
|
+
value: row.value,
|
|
317
|
+
metadata: {
|
|
318
|
+
...row.metadata,
|
|
319
|
+
created: new Date(row.created_at),
|
|
320
|
+
lastModified: new Date(row.modified_at)
|
|
321
|
+
}
|
|
322
|
+
}));
|
|
323
|
+
},
|
|
324
|
+
clear: async (sessionId) => {
|
|
325
|
+
await initPromise; // Ensure table exists
|
|
326
|
+
const query = `
|
|
327
|
+
DELETE FROM ${tableName}
|
|
328
|
+
WHERE session_id = $1
|
|
329
|
+
`;
|
|
330
|
+
await pool.query(query, [sessionId]);
|
|
331
|
+
},
|
|
332
|
+
exists: async (sessionId, key) => {
|
|
333
|
+
await initPromise; // Ensure table exists
|
|
334
|
+
const query = `
|
|
335
|
+
SELECT 1 FROM ${tableName}
|
|
336
|
+
WHERE session_id = $1 AND key = $2
|
|
337
|
+
AND (expires_at IS NULL OR expires_at > NOW())
|
|
338
|
+
LIMIT 1
|
|
339
|
+
`;
|
|
340
|
+
const result = await pool.query(query, [sessionId, key]);
|
|
341
|
+
return result.rows.length > 0;
|
|
342
|
+
}
|
|
343
|
+
};
|
|
344
|
+
};
|
|
345
|
+
// ========== Session Integration ==========
|
|
346
|
+
/**
|
|
347
|
+
* Helper functions to integrate artifacts with sessions
|
|
348
|
+
*/
|
|
349
|
+
export const getSessionArtifact = (session, key) => {
|
|
350
|
+
return session.artifacts[key] || null;
|
|
351
|
+
};
|
|
352
|
+
export const setSessionArtifact = (session, key, value) => {
|
|
353
|
+
return {
|
|
354
|
+
...session,
|
|
355
|
+
artifacts: {
|
|
356
|
+
...session.artifacts,
|
|
357
|
+
[key]: value
|
|
358
|
+
}
|
|
359
|
+
};
|
|
360
|
+
};
|
|
361
|
+
export const deleteSessionArtifact = (session, key) => {
|
|
362
|
+
const { [key]: _, ...rest } = session.artifacts;
|
|
363
|
+
return {
|
|
364
|
+
...session,
|
|
365
|
+
artifacts: rest
|
|
366
|
+
};
|
|
367
|
+
};
|
|
368
|
+
export const clearSessionArtifacts = (session) => {
|
|
369
|
+
return {
|
|
370
|
+
...session,
|
|
371
|
+
artifacts: {}
|
|
372
|
+
};
|
|
373
|
+
};
|
|
374
|
+
export const listSessionArtifacts = (session) => {
|
|
375
|
+
return Object.keys(session.artifacts);
|
|
376
|
+
};
|
|
377
|
+
// ========== Factory Function ==========
|
|
378
|
+
export const createArtifactStorage = (config) => {
|
|
379
|
+
switch (config.type) {
|
|
380
|
+
case 'memory':
|
|
381
|
+
return createMemoryArtifactStorage(config.config);
|
|
382
|
+
case 'redis':
|
|
383
|
+
return createRedisArtifactStorage(config.config);
|
|
384
|
+
case 'postgres':
|
|
385
|
+
return createPostgresArtifactStorage(config.config);
|
|
386
|
+
case 's3':
|
|
387
|
+
throw new Error('S3 artifact storage not yet implemented');
|
|
388
|
+
case 'gcs':
|
|
389
|
+
throw new Error('GCS artifact storage not yet implemented');
|
|
390
|
+
default:
|
|
391
|
+
throw new Error(`Unknown artifact storage type: ${config.type}`);
|
|
392
|
+
}
|
|
393
|
+
};
|
|
394
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adk/artifacts/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JAF ADK Layer - LLM Configuration Bridge
|
|
3
|
+
*
|
|
4
|
+
* Functional configuration system for LLM providers following JAF patterns
|
|
5
|
+
*/
|
|
6
|
+
import { Model } from '../types.js';
|
|
7
|
+
import type { AdkLLMServiceConfig } from '../providers/llm-service.js';
|
|
8
|
+
export interface AdkLLMConfig {
|
|
9
|
+
provider: 'litellm' | 'openai' | 'anthropic' | 'google';
|
|
10
|
+
baseUrl?: string;
|
|
11
|
+
apiKey?: string;
|
|
12
|
+
defaultModel?: Model | string;
|
|
13
|
+
timeout?: number;
|
|
14
|
+
retries?: number;
|
|
15
|
+
temperature?: number;
|
|
16
|
+
maxTokens?: number;
|
|
17
|
+
streaming?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface AdkProviderConfig {
|
|
20
|
+
name: string;
|
|
21
|
+
baseUrl: string;
|
|
22
|
+
apiKey: string;
|
|
23
|
+
models: AdkModelConfig[];
|
|
24
|
+
rateLimits?: AdkRateLimitConfig;
|
|
25
|
+
features?: AdkProviderFeatures;
|
|
26
|
+
}
|
|
27
|
+
export interface AdkModelConfig {
|
|
28
|
+
name: string;
|
|
29
|
+
displayName: string;
|
|
30
|
+
contextWindow: number;
|
|
31
|
+
maxTokens: number;
|
|
32
|
+
supportsFunctionCalling: boolean;
|
|
33
|
+
supportsStreaming: boolean;
|
|
34
|
+
costPer1KTokens?: {
|
|
35
|
+
input: number;
|
|
36
|
+
output: number;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export interface AdkRateLimitConfig {
|
|
40
|
+
requestsPerMinute?: number;
|
|
41
|
+
tokensPerMinute?: number;
|
|
42
|
+
concurrent?: number;
|
|
43
|
+
}
|
|
44
|
+
export interface AdkProviderFeatures {
|
|
45
|
+
streaming: boolean;
|
|
46
|
+
functionCalling: boolean;
|
|
47
|
+
multimodal: boolean;
|
|
48
|
+
vision: boolean;
|
|
49
|
+
jsonMode: boolean;
|
|
50
|
+
}
|
|
51
|
+
export interface AdkEnvironmentConfig {
|
|
52
|
+
litellmUrl?: string;
|
|
53
|
+
litellmApiKey?: string;
|
|
54
|
+
openaiApiKey?: string;
|
|
55
|
+
anthropicApiKey?: string;
|
|
56
|
+
googleApiKey?: string;
|
|
57
|
+
azureApiKey?: string;
|
|
58
|
+
azureEndpoint?: string;
|
|
59
|
+
defaultProvider?: string;
|
|
60
|
+
defaultModel?: string;
|
|
61
|
+
}
|
|
62
|
+
export declare const DEFAULT_PROVIDER_CONFIGS: Record<string, AdkProviderConfig>;
|
|
63
|
+
export declare const loadEnvironmentConfig: () => AdkEnvironmentConfig;
|
|
64
|
+
export declare const createAdkLLMConfig: (provider: string, overrides?: Partial<AdkLLMConfig>) => AdkLLMConfig;
|
|
65
|
+
export declare const createAdkLLMServiceConfig: (config: AdkLLMConfig) => AdkLLMServiceConfig;
|
|
66
|
+
export declare const getModelConfig: (modelName: string) => AdkModelConfig | undefined;
|
|
67
|
+
export declare const getModelsForProvider: (provider: string) => AdkModelConfig[];
|
|
68
|
+
export declare const getAllAvailableModels: () => AdkModelConfig[];
|
|
69
|
+
export declare const getProviderForModel: (modelName: string) => string | undefined;
|
|
70
|
+
export declare const mapAdkModelToProviderModel: (adkModel: Model | string) => string;
|
|
71
|
+
export declare const validateAdkLLMConfig: (config: AdkLLMConfig) => string[];
|
|
72
|
+
export declare const createDefaultAdkLLMConfig: () => AdkLLMConfig;
|
|
73
|
+
export declare const createAdkLLMConfigFromEnvironment: () => AdkLLMConfig;
|
|
74
|
+
export declare const debugAdkLLMConfig: (config: AdkLLMConfig) => void;
|
|
75
|
+
//# sourceMappingURL=llm-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-config.d.ts","sourceRoot":"","sources":["../../../src/adk/config/llm-config.ts"],"names":[],"mappings":"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"}
|