@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,451 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JAF ADK Layer - Session Management
|
|
3
|
+
*
|
|
4
|
+
* Functional session management with pluggable providers
|
|
5
|
+
*/
|
|
6
|
+
import { throwSessionError, createSessionError } from '../types';
|
|
7
|
+
// ========== Session Creation ==========
|
|
8
|
+
export const generateSessionId = () => {
|
|
9
|
+
// Use timestamp and random number to match expected pattern /^session_\d+_\d+$/
|
|
10
|
+
return `session_${Date.now()}_${Math.floor(Math.random() * 1000000000)}`;
|
|
11
|
+
};
|
|
12
|
+
export const createSession = (appName, userId, sessionId, metadata) => {
|
|
13
|
+
const id = sessionId || generateSessionId();
|
|
14
|
+
const sessionMetadata = {
|
|
15
|
+
created: new Date(),
|
|
16
|
+
tags: [],
|
|
17
|
+
properties: {},
|
|
18
|
+
...metadata
|
|
19
|
+
};
|
|
20
|
+
return {
|
|
21
|
+
id,
|
|
22
|
+
appName,
|
|
23
|
+
userId,
|
|
24
|
+
messages: [],
|
|
25
|
+
artifacts: {},
|
|
26
|
+
metadata: sessionMetadata
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
// ========== In-Memory Session Provider ==========
|
|
30
|
+
export const createInMemorySessionProvider = () => {
|
|
31
|
+
const sessions = new Map();
|
|
32
|
+
return {
|
|
33
|
+
createSession: async (context) => {
|
|
34
|
+
const session = createSession(context.appName, context.userId, context.sessionId);
|
|
35
|
+
sessions.set(session.id, session);
|
|
36
|
+
return session;
|
|
37
|
+
},
|
|
38
|
+
getSession: async (sessionId) => {
|
|
39
|
+
const session = sessions.get(sessionId);
|
|
40
|
+
if (session) {
|
|
41
|
+
// Update last accessed
|
|
42
|
+
session.metadata.lastAccessed = new Date();
|
|
43
|
+
sessions.set(sessionId, session);
|
|
44
|
+
}
|
|
45
|
+
return session || null;
|
|
46
|
+
},
|
|
47
|
+
updateSession: async (session) => {
|
|
48
|
+
session.metadata.lastAccessed = new Date();
|
|
49
|
+
sessions.set(session.id, session);
|
|
50
|
+
return session;
|
|
51
|
+
},
|
|
52
|
+
listSessions: async (userId) => {
|
|
53
|
+
return Array.from(sessions.values())
|
|
54
|
+
.filter(session => session.userId === userId)
|
|
55
|
+
.sort((a, b) => b.metadata.created.getTime() - a.metadata.created.getTime());
|
|
56
|
+
},
|
|
57
|
+
deleteSession: async (sessionId) => {
|
|
58
|
+
return sessions.delete(sessionId);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
// ========== Redis Session Provider ==========
|
|
63
|
+
// Re-export from the real implementation
|
|
64
|
+
export { createRedisSessionProvider } from './redis-provider.js';
|
|
65
|
+
export const createMockRedisSessionProvider = (config) => {
|
|
66
|
+
let redis; // Will be typed properly when ioredis is added
|
|
67
|
+
let isRealRedis = false;
|
|
68
|
+
// Try to use real Redis if available
|
|
69
|
+
try {
|
|
70
|
+
// Dynamic import to avoid breaking if ioredis not installed
|
|
71
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
72
|
+
const Redis = require('ioredis');
|
|
73
|
+
redis = new Redis({
|
|
74
|
+
host: config.host,
|
|
75
|
+
port: config.port,
|
|
76
|
+
password: config.password,
|
|
77
|
+
db: config.database || 0,
|
|
78
|
+
retryStrategy: (times) => {
|
|
79
|
+
const delay = Math.min(times * 50, 2000);
|
|
80
|
+
return delay;
|
|
81
|
+
},
|
|
82
|
+
enableOfflineQueue: true,
|
|
83
|
+
maxRetriesPerRequest: 3,
|
|
84
|
+
lazyConnect: false
|
|
85
|
+
});
|
|
86
|
+
isRealRedis = true;
|
|
87
|
+
// Handle connection errors
|
|
88
|
+
redis.on('error', (err) => {
|
|
89
|
+
console.error('[ADK:Sessions] Redis connection error:', err);
|
|
90
|
+
});
|
|
91
|
+
redis.on('connect', () => {
|
|
92
|
+
console.log('[ADK:Sessions] Connected to Redis');
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
console.warn('[ADK:Sessions] ioredis not found, falling back to mock implementation');
|
|
97
|
+
// Fallback to mock Map if ioredis not available
|
|
98
|
+
redis = new Map();
|
|
99
|
+
}
|
|
100
|
+
const keyPrefix = config.keyPrefix || 'jaf_adk_session:';
|
|
101
|
+
const getKey = (sessionId) => `${keyPrefix}${sessionId}`;
|
|
102
|
+
const getUserKey = (userId) => `${keyPrefix}user:${userId}`;
|
|
103
|
+
// Helper to deserialize session and restore Date objects
|
|
104
|
+
const deserializeSession = (sessionData) => {
|
|
105
|
+
const session = JSON.parse(sessionData);
|
|
106
|
+
// Restore Date objects from strings
|
|
107
|
+
if (session.metadata.created && typeof session.metadata.created === 'string') {
|
|
108
|
+
session.metadata.created = new Date(session.metadata.created);
|
|
109
|
+
}
|
|
110
|
+
if (session.metadata.lastAccessed && typeof session.metadata.lastAccessed === 'string') {
|
|
111
|
+
session.metadata.lastAccessed = new Date(session.metadata.lastAccessed);
|
|
112
|
+
}
|
|
113
|
+
return session;
|
|
114
|
+
};
|
|
115
|
+
return {
|
|
116
|
+
createSession: async (context) => {
|
|
117
|
+
const session = createSession(context.appName, context.userId, context.sessionId);
|
|
118
|
+
// Store session
|
|
119
|
+
redis.set(getKey(session.id), JSON.stringify(session));
|
|
120
|
+
// Add to user's session list
|
|
121
|
+
const userKey = getUserKey(context.userId);
|
|
122
|
+
const userSessions = redis.get(userKey);
|
|
123
|
+
const sessionIds = userSessions ? JSON.parse(userSessions) : [];
|
|
124
|
+
sessionIds.push(session.id);
|
|
125
|
+
redis.set(userKey, JSON.stringify(sessionIds));
|
|
126
|
+
return session;
|
|
127
|
+
},
|
|
128
|
+
getSession: async (sessionId) => {
|
|
129
|
+
const sessionData = redis.get(getKey(sessionId));
|
|
130
|
+
if (!sessionData) {
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
try {
|
|
134
|
+
const session = deserializeSession(sessionData);
|
|
135
|
+
// Update last accessed
|
|
136
|
+
session.metadata.lastAccessed = new Date();
|
|
137
|
+
redis.set(getKey(sessionId), JSON.stringify(session));
|
|
138
|
+
return session;
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
throwSessionError(`Failed to parse session data: ${error}`, sessionId);
|
|
142
|
+
return null; // This will never be reached due to throwSessionError, but needed for TypeScript
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
updateSession: async (session) => {
|
|
146
|
+
session.metadata.lastAccessed = new Date();
|
|
147
|
+
redis.set(getKey(session.id), JSON.stringify(session));
|
|
148
|
+
return session;
|
|
149
|
+
},
|
|
150
|
+
listSessions: async (userId) => {
|
|
151
|
+
const userKey = getUserKey(userId);
|
|
152
|
+
const sessionIdsData = redis.get(userKey);
|
|
153
|
+
if (!sessionIdsData) {
|
|
154
|
+
return [];
|
|
155
|
+
}
|
|
156
|
+
try {
|
|
157
|
+
const sessionIds = JSON.parse(sessionIdsData);
|
|
158
|
+
const sessions = [];
|
|
159
|
+
for (const sessionId of sessionIds) {
|
|
160
|
+
const sessionData = redis.get(getKey(sessionId));
|
|
161
|
+
if (sessionData) {
|
|
162
|
+
sessions.push(deserializeSession(sessionData));
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return sessions.sort((a, b) => b.metadata.created.getTime() - a.metadata.created.getTime());
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
throwSessionError(`Failed to list sessions for user: ${error}`, undefined, { userId });
|
|
169
|
+
return []; // This will never be reached due to throwSessionError, but needed for TypeScript
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
deleteSession: async (sessionId) => {
|
|
173
|
+
const sessionData = redis.get(getKey(sessionId));
|
|
174
|
+
if (!sessionData) {
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
try {
|
|
178
|
+
const session = JSON.parse(sessionData);
|
|
179
|
+
// Remove from Redis
|
|
180
|
+
redis.delete(getKey(sessionId));
|
|
181
|
+
// Remove from user's session list
|
|
182
|
+
const userKey = getUserKey(session.userId);
|
|
183
|
+
const userSessionsData = redis.get(userKey);
|
|
184
|
+
if (userSessionsData) {
|
|
185
|
+
const sessionIds = JSON.parse(userSessionsData);
|
|
186
|
+
const updatedIds = sessionIds.filter(id => id !== sessionId);
|
|
187
|
+
redis.set(userKey, JSON.stringify(updatedIds));
|
|
188
|
+
}
|
|
189
|
+
return true;
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
throwSessionError(`Failed to delete session: ${error}`, sessionId);
|
|
193
|
+
return false; // This will never be reached due to throwSessionError, but needed for TypeScript
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
};
|
|
198
|
+
// ========== Postgres Session Provider ==========
|
|
199
|
+
// Re-export from the real implementation
|
|
200
|
+
export { createPostgresSessionProvider } from './postgres-provider.js';
|
|
201
|
+
// ========== Session Operations ==========
|
|
202
|
+
export const addMessageToSession = (session, message) => {
|
|
203
|
+
return {
|
|
204
|
+
...session,
|
|
205
|
+
messages: [...session.messages, message],
|
|
206
|
+
metadata: {
|
|
207
|
+
...session.metadata,
|
|
208
|
+
lastAccessed: new Date()
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
};
|
|
212
|
+
export const addArtifactToSession = (session, key, value) => {
|
|
213
|
+
return {
|
|
214
|
+
...session,
|
|
215
|
+
artifacts: {
|
|
216
|
+
...session.artifacts,
|
|
217
|
+
[key]: value
|
|
218
|
+
},
|
|
219
|
+
metadata: {
|
|
220
|
+
...session.metadata,
|
|
221
|
+
lastAccessed: new Date()
|
|
222
|
+
}
|
|
223
|
+
};
|
|
224
|
+
};
|
|
225
|
+
export const removeArtifactFromSession = (session, key) => {
|
|
226
|
+
const { [key]: removed, ...remainingArtifacts } = session.artifacts;
|
|
227
|
+
return {
|
|
228
|
+
...session,
|
|
229
|
+
artifacts: remainingArtifacts,
|
|
230
|
+
metadata: {
|
|
231
|
+
...session.metadata,
|
|
232
|
+
lastAccessed: new Date()
|
|
233
|
+
}
|
|
234
|
+
};
|
|
235
|
+
};
|
|
236
|
+
export const updateSessionMetadata = (session, metadata) => {
|
|
237
|
+
return {
|
|
238
|
+
...session,
|
|
239
|
+
metadata: {
|
|
240
|
+
...session.metadata,
|
|
241
|
+
...metadata,
|
|
242
|
+
lastAccessed: new Date()
|
|
243
|
+
}
|
|
244
|
+
};
|
|
245
|
+
};
|
|
246
|
+
export const clearSessionMessages = (session) => {
|
|
247
|
+
return {
|
|
248
|
+
...session,
|
|
249
|
+
messages: [],
|
|
250
|
+
metadata: {
|
|
251
|
+
...session.metadata,
|
|
252
|
+
lastAccessed: new Date()
|
|
253
|
+
}
|
|
254
|
+
};
|
|
255
|
+
};
|
|
256
|
+
// ========== Session Validation ==========
|
|
257
|
+
export const validateSession = (session) => {
|
|
258
|
+
const errors = [];
|
|
259
|
+
if (!session.id || session.id.trim().length === 0) {
|
|
260
|
+
errors.push('Session ID is required');
|
|
261
|
+
}
|
|
262
|
+
if (!session.appName || session.appName.trim().length === 0) {
|
|
263
|
+
errors.push('App name is required');
|
|
264
|
+
}
|
|
265
|
+
if (!session.userId || session.userId.trim().length === 0) {
|
|
266
|
+
errors.push('User ID is required');
|
|
267
|
+
}
|
|
268
|
+
if (!Array.isArray(session.messages)) {
|
|
269
|
+
errors.push('Messages must be an array');
|
|
270
|
+
}
|
|
271
|
+
if (typeof session.artifacts !== 'object' || session.artifacts === null) {
|
|
272
|
+
errors.push('Artifacts must be an object');
|
|
273
|
+
}
|
|
274
|
+
if (!session.metadata || !session.metadata.created) {
|
|
275
|
+
errors.push('Session metadata with created date is required');
|
|
276
|
+
}
|
|
277
|
+
if (errors.length > 0) {
|
|
278
|
+
return { success: false, errors };
|
|
279
|
+
}
|
|
280
|
+
return { success: true, data: session };
|
|
281
|
+
};
|
|
282
|
+
export const validateSessionContext = (context) => {
|
|
283
|
+
const errors = [];
|
|
284
|
+
if (!context.appName || context.appName.trim().length === 0) {
|
|
285
|
+
errors.push('App name is required');
|
|
286
|
+
}
|
|
287
|
+
if (!context.userId || context.userId.trim().length === 0) {
|
|
288
|
+
errors.push('User ID is required');
|
|
289
|
+
}
|
|
290
|
+
if (errors.length > 0) {
|
|
291
|
+
return { success: false, errors };
|
|
292
|
+
}
|
|
293
|
+
return { success: true, data: context };
|
|
294
|
+
};
|
|
295
|
+
// ========== Session Utilities ==========
|
|
296
|
+
export const getOrCreateSession = async (provider, context) => {
|
|
297
|
+
// If sessionId is provided, try to get existing session
|
|
298
|
+
if (context.sessionId) {
|
|
299
|
+
const existingSession = await provider.getSession(context.sessionId);
|
|
300
|
+
if (existingSession) {
|
|
301
|
+
return existingSession;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
// Create new session
|
|
305
|
+
return await provider.createSession(context);
|
|
306
|
+
};
|
|
307
|
+
export const getSessionStats = (session) => {
|
|
308
|
+
const messageCount = session.messages.length;
|
|
309
|
+
const userMessages = session.messages.filter(m => m.role === 'user').length;
|
|
310
|
+
const modelMessages = session.messages.filter(m => m.role === 'model').length;
|
|
311
|
+
const systemMessages = session.messages.filter(m => m.role === 'system').length;
|
|
312
|
+
const artifactCount = Object.keys(session.artifacts).length;
|
|
313
|
+
const totalTextLength = session.messages
|
|
314
|
+
.flatMap(m => m.parts)
|
|
315
|
+
.filter(p => p.type === 'text' && p.text)
|
|
316
|
+
.reduce((sum, p) => sum + (p.text?.length || 0), 0);
|
|
317
|
+
return {
|
|
318
|
+
id: session.id,
|
|
319
|
+
appName: session.appName,
|
|
320
|
+
userId: session.userId,
|
|
321
|
+
messageCount,
|
|
322
|
+
userMessages,
|
|
323
|
+
modelMessages,
|
|
324
|
+
systemMessages,
|
|
325
|
+
artifactCount,
|
|
326
|
+
totalTextLength,
|
|
327
|
+
created: session.metadata.created,
|
|
328
|
+
lastAccessed: session.metadata.lastAccessed,
|
|
329
|
+
tags: session.metadata.tags
|
|
330
|
+
};
|
|
331
|
+
};
|
|
332
|
+
export const cloneSession = (session, newId) => {
|
|
333
|
+
return {
|
|
334
|
+
...session,
|
|
335
|
+
id: newId || generateSessionId(),
|
|
336
|
+
messages: [...session.messages],
|
|
337
|
+
artifacts: { ...session.artifacts },
|
|
338
|
+
metadata: {
|
|
339
|
+
...session.metadata,
|
|
340
|
+
created: new Date()
|
|
341
|
+
}
|
|
342
|
+
};
|
|
343
|
+
};
|
|
344
|
+
export const mergeSessionArtifacts = (session, artifacts) => {
|
|
345
|
+
return {
|
|
346
|
+
...session,
|
|
347
|
+
artifacts: {
|
|
348
|
+
...session.artifacts,
|
|
349
|
+
...artifacts
|
|
350
|
+
},
|
|
351
|
+
metadata: {
|
|
352
|
+
...session.metadata,
|
|
353
|
+
lastAccessed: new Date()
|
|
354
|
+
}
|
|
355
|
+
};
|
|
356
|
+
};
|
|
357
|
+
// ========== Session Query Functions ==========
|
|
358
|
+
export const getLastUserMessage = (session) => {
|
|
359
|
+
const userMessages = session.messages.filter(m => m.role === 'user');
|
|
360
|
+
return userMessages.length > 0 ? userMessages[userMessages.length - 1] : null;
|
|
361
|
+
};
|
|
362
|
+
export const getLastModelMessage = (session) => {
|
|
363
|
+
const modelMessages = session.messages.filter(m => m.role === 'model');
|
|
364
|
+
return modelMessages.length > 0 ? modelMessages[modelMessages.length - 1] : null;
|
|
365
|
+
};
|
|
366
|
+
export const getMessagesByRole = (session, role) => {
|
|
367
|
+
return session.messages.filter(m => m.role === role);
|
|
368
|
+
};
|
|
369
|
+
export const hasArtifact = (session, key) => {
|
|
370
|
+
return key in session.artifacts;
|
|
371
|
+
};
|
|
372
|
+
export const getArtifact = (session, key) => {
|
|
373
|
+
return session.artifacts[key] || null;
|
|
374
|
+
};
|
|
375
|
+
export const getArtifactKeys = (session) => {
|
|
376
|
+
return Object.keys(session.artifacts);
|
|
377
|
+
};
|
|
378
|
+
// ========== Error Handling ==========
|
|
379
|
+
// Export createSessionError from types for external use
|
|
380
|
+
export { createSessionError };
|
|
381
|
+
export const withSessionErrorHandling = (fn, sessionId) => {
|
|
382
|
+
return async (...args) => {
|
|
383
|
+
try {
|
|
384
|
+
return await fn(...args);
|
|
385
|
+
}
|
|
386
|
+
catch (error) {
|
|
387
|
+
// Check if error is already a SessionError by checking its properties
|
|
388
|
+
// Handle both Error instances and plain SessionErrorObjects
|
|
389
|
+
if (error && typeof error === 'object' &&
|
|
390
|
+
(error.name === 'SessionError' ||
|
|
391
|
+
error.code === 'SESSION_ERROR')) {
|
|
392
|
+
throw error;
|
|
393
|
+
}
|
|
394
|
+
throwSessionError(`Session operation failed: ${error instanceof Error ? error.message : String(error)}`, sessionId, { originalError: error });
|
|
395
|
+
// This will never be reached due to throwSessionError, but needed for TypeScript
|
|
396
|
+
throw error;
|
|
397
|
+
}
|
|
398
|
+
};
|
|
399
|
+
};
|
|
400
|
+
// ========== Session Provider Bridge ==========
|
|
401
|
+
// Bridge JAF memory providers to ADK session providers
|
|
402
|
+
export const createMemoryProviderBridge = (memoryProvider) => {
|
|
403
|
+
return {
|
|
404
|
+
createSession: async (context) => {
|
|
405
|
+
const memory = await memoryProvider.createMemory(context.userId);
|
|
406
|
+
return sessionFromMemory(memory, context);
|
|
407
|
+
},
|
|
408
|
+
getSession: async (sessionId) => {
|
|
409
|
+
const memory = await memoryProvider.getMemory(sessionId);
|
|
410
|
+
return memory ? sessionFromMemory(memory) : null;
|
|
411
|
+
},
|
|
412
|
+
updateSession: async (session) => {
|
|
413
|
+
const memory = memoryFromSession(session);
|
|
414
|
+
await memoryProvider.updateMemory(session.id, memory);
|
|
415
|
+
return session;
|
|
416
|
+
},
|
|
417
|
+
listSessions: async (userId) => {
|
|
418
|
+
const memories = await memoryProvider.listMemories(userId);
|
|
419
|
+
return memories.map((memory) => sessionFromMemory(memory));
|
|
420
|
+
},
|
|
421
|
+
deleteSession: async (sessionId) => {
|
|
422
|
+
return await memoryProvider.deleteMemory(sessionId);
|
|
423
|
+
}
|
|
424
|
+
};
|
|
425
|
+
};
|
|
426
|
+
const sessionFromMemory = (memory, context) => {
|
|
427
|
+
return {
|
|
428
|
+
id: memory.id || generateSessionId(),
|
|
429
|
+
appName: context?.appName || 'unknown',
|
|
430
|
+
userId: memory.userId || context?.userId || 'unknown',
|
|
431
|
+
messages: memory.messages || [],
|
|
432
|
+
artifacts: memory.metadata || {},
|
|
433
|
+
metadata: {
|
|
434
|
+
created: memory.created || new Date(),
|
|
435
|
+
lastAccessed: memory.lastAccessed,
|
|
436
|
+
tags: [],
|
|
437
|
+
properties: {}
|
|
438
|
+
}
|
|
439
|
+
};
|
|
440
|
+
};
|
|
441
|
+
const memoryFromSession = (session) => {
|
|
442
|
+
return {
|
|
443
|
+
id: session.id,
|
|
444
|
+
userId: session.userId,
|
|
445
|
+
messages: session.messages,
|
|
446
|
+
metadata: session.artifacts,
|
|
447
|
+
created: session.metadata.created,
|
|
448
|
+
lastAccessed: session.metadata.lastAccessed
|
|
449
|
+
};
|
|
450
|
+
};
|
|
451
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adk/sessions/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAQL,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAElB,yCAAyC;AAEzC,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAW,EAAE;IAC5C,gFAAgF;IAChF,OAAO,WAAW,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;AAC3E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,OAAe,EACf,MAAc,EACd,SAAkB,EAClB,QAAmC,EAC1B,EAAE;IACX,MAAM,EAAE,GAAG,SAAS,IAAI,iBAAiB,EAAE,CAAC;IAE5C,MAAM,eAAe,GAAoB;QACvC,OAAO,EAAE,IAAI,IAAI,EAAE;QACnB,IAAI,EAAE,EAAE;QACR,UAAU,EAAE,EAAE;QACd,GAAG,QAAQ;KACZ,CAAC;IAEF,OAAO;QACL,EAAE;QACF,OAAO;QACP,MAAM;QACN,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,EAAE;QACb,QAAQ,EAAE,eAAe;KAC1B,CAAC;AACJ,CAAC,CAAC;AAEF,mDAAmD;AAEnD,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAoB,EAAE;IACjE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;IAE5C,OAAO;QACL,aAAa,EAAE,KAAK,EAAE,OAAuB,EAAoB,EAAE;YACjE,MAAM,OAAO,GAAG,aAAa,CAC3B,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,SAAS,CAClB,CAAC;YAEF,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YAClC,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,UAAU,EAAE,KAAK,EAAE,SAAiB,EAA2B,EAAE;YAC/D,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,OAAO,EAAE,CAAC;gBACZ,uBAAuB;gBACvB,OAAO,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;gBAC3C,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACnC,CAAC;YACD,OAAO,OAAO,IAAI,IAAI,CAAC;QACzB,CAAC;QAED,aAAa,EAAE,KAAK,EAAE,OAAgB,EAAoB,EAAE;YAC1D,OAAO,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;YAC3C,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YAClC,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,YAAY,EAAE,KAAK,EAAE,MAAc,EAAsB,EAAE;YACzD,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;iBACjC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC;iBAC5C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACjF,CAAC;QAED,aAAa,EAAE,KAAK,EAAE,SAAiB,EAAoB,EAAE;YAC3D,OAAO,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,+CAA+C;AAE/C,yCAAyC;AACzC,OAAO,EAAE,0BAA0B,EAAoB,MAAM,qBAAqB,CAAC;AAWnF,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,MAAuB,EAAmB,EAAE;IACzF,IAAI,KAAU,CAAC,CAAC,+CAA+C;IAC/D,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,qCAAqC;IACrC,IAAI,CAAC;QACH,4DAA4D;QAC5D,8DAA8D;QAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QACjC,KAAK,GAAG,IAAI,KAAK,CAAC;YAChB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,EAAE,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;YACxB,aAAa,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;gBACzC,OAAO,KAAK,CAAC;YACf,CAAC;YACD,kBAAkB,EAAE,IAAI;YACxB,oBAAoB,EAAE,CAAC;YACvB,WAAW,EAAE,KAAK;SACnB,CAAC,CAAC;QACH,WAAW,GAAG,IAAI,CAAC;QAEnB,2BAA2B;QAC3B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAQ,EAAE,EAAE;YAC7B,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,GAAG,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACvB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;QACtF,gDAAgD;QAChD,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACpC,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,kBAAkB,CAAC;IAEzD,MAAM,MAAM,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC;IACjE,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,GAAG,SAAS,QAAQ,MAAM,EAAE,CAAC;IAEpE,yDAAyD;IACzD,MAAM,kBAAkB,GAAG,CAAC,WAAmB,EAAW,EAAE;QAC1D,MAAM,OAAO,GAAY,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACjD,oCAAoC;QACpC,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,QAAQ,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC7E,OAAO,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,IAAI,OAAO,OAAO,CAAC,QAAQ,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;YACvF,OAAO,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO;QACL,aAAa,EAAE,KAAK,EAAE,OAAuB,EAAoB,EAAE;YACjE,MAAM,OAAO,GAAG,aAAa,CAC3B,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,SAAS,CAClB,CAAC;YAEF,gBAAgB;YAChB,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YAEvD,6BAA6B;YAC7B,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACxC,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5B,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;YAE/C,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,UAAU,EAAE,KAAK,EAAE,SAAiB,EAA2B,EAAE;YAC/D,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;gBAEhD,uBAAuB;gBACvB,OAAO,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;gBAC3C,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;gBAEtD,OAAO,OAAO,CAAC;YACjB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,iBAAiB,CAAC,iCAAiC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;gBACvE,OAAO,IAAI,CAAC,CAAC,iFAAiF;YAChG,CAAC;QACH,CAAC;QAED,aAAa,EAAE,KAAK,EAAE,OAAgB,EAAoB,EAAE;YAC1D,OAAO,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;YAC3C,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YACvD,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,YAAY,EAAE,KAAK,EAAE,MAAc,EAAsB,EAAE;YACzD,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YACnC,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAE1C,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,UAAU,GAAa,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;gBACxD,MAAM,QAAQ,GAAc,EAAE,CAAC;gBAE/B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;oBACnC,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;oBACjD,IAAI,WAAW,EAAE,CAAC;wBAChB,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC;oBACjD,CAAC;gBACH,CAAC;gBAED,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC5B,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAC5D,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,iBAAiB,CAAC,qCAAqC,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;gBACvF,OAAO,EAAE,CAAC,CAAC,iFAAiF;YAC9F,CAAC;QACH,CAAC;QAED,aAAa,EAAE,KAAK,EAAE,SAAiB,EAAoB,EAAE;YAC3D,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,OAAO,GAAY,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAEjD,oBAAoB;gBACpB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;gBAEhC,kCAAkC;gBAClC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC3C,MAAM,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC5C,IAAI,gBAAgB,EAAE,CAAC;oBACrB,MAAM,UAAU,GAAa,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;oBAC1D,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;oBAC7D,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;gBACjD,CAAC;gBAED,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,iBAAiB,CAAC,6BAA6B,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;gBACnE,OAAO,KAAK,CAAC,CAAC,iFAAiF;YACjG,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,kDAAkD;AAElD,yCAAyC;AACzC,OAAO,EAAE,6BAA6B,EAAuB,MAAM,wBAAwB,CAAC;AAE5F,2CAA2C;AAE3C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAgB,EAAE,OAAgB,EAAW,EAAE;IACjF,OAAO;QACL,GAAG,OAAO;QACV,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC;QACxC,QAAQ,EAAE;YACR,GAAG,OAAO,CAAC,QAAQ;YACnB,YAAY,EAAE,IAAI,IAAI,EAAE;SACzB;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,OAAgB,EAChB,GAAW,EACX,KAAc,EACL,EAAE;IACX,OAAO;QACL,GAAG,OAAO;QACV,SAAS,EAAE;YACT,GAAG,OAAO,CAAC,SAAS;YACpB,CAAC,GAAG,CAAC,EAAE,KAAK;SACb;QACD,QAAQ,EAAE;YACR,GAAG,OAAO,CAAC,QAAQ;YACnB,YAAY,EAAE,IAAI,IAAI,EAAE;SACzB;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,OAAgB,EAAE,GAAW,EAAW,EAAE;IAClF,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,kBAAkB,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IAEpE,OAAO;QACL,GAAG,OAAO;QACV,SAAS,EAAE,kBAAkB;QAC7B,QAAQ,EAAE;YACR,GAAG,OAAO,CAAC,QAAQ;YACnB,YAAY,EAAE,IAAI,IAAI,EAAE;SACzB;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,OAAgB,EAChB,QAAkC,EACzB,EAAE;IACX,OAAO;QACL,GAAG,OAAO;QACV,QAAQ,EAAE;YACR,GAAG,OAAO,CAAC,QAAQ;YACnB,GAAG,QAAQ;YACX,YAAY,EAAE,IAAI,IAAI,EAAE;SACzB;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAgB,EAAW,EAAE;IAChE,OAAO;QACL,GAAG,OAAO;QACV,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE;YACR,GAAG,OAAO,CAAC,QAAQ;YACnB,YAAY,EAAE,IAAI,IAAI,EAAE;SACzB;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,2CAA2C;AAE3C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAgB,EAA6B,EAAE;IAC7E,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5D,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1D,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QACxE,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACpC,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC1C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,OAAuB,EAAoC,EAAE;IAClG,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5D,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1D,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACpC,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC1C,CAAC,CAAC;AAEF,0CAA0C;AAE1C,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,QAAyB,EACzB,OAAuB,EACL,EAAE;IACpB,wDAAwD;IACxD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,eAAe,CAAC;QACzB,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,OAAO,MAAM,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAgB,EAAE,EAAE;IAClD,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC7C,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAC5E,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IAC9E,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IAChF,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;IAE5D,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ;SACrC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;SACrB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC;SACxC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEtD,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,YAAY;QACZ,YAAY;QACZ,aAAa;QACb,cAAc;QACd,aAAa;QACb,eAAe;QACf,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO;QACjC,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,YAAY;QAC3C,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;KAC5B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAE,KAAc,EAAW,EAAE;IACxE,OAAO;QACL,GAAG,OAAO;QACV,EAAE,EAAE,KAAK,IAAI,iBAAiB,EAAE;QAChC,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE;QACnC,QAAQ,EAAE;YACR,GAAG,OAAO,CAAC,QAAQ;YACnB,OAAO,EAAE,IAAI,IAAI,EAAE;SACpB;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,OAAgB,EAAE,SAAkC,EAAW,EAAE;IACrG,OAAO;QACL,GAAG,OAAO;QACV,SAAS,EAAE;YACT,GAAG,OAAO,CAAC,SAAS;YACpB,GAAG,SAAS;SACb;QACD,QAAQ,EAAE;YACR,GAAG,OAAO,CAAC,QAAQ;YACnB,YAAY,EAAE,IAAI,IAAI,EAAE;SACzB;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,gDAAgD;AAEhD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAgB,EAAkB,EAAE;IACrE,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IACrE,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAChF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAgB,EAAkB,EAAE;IACtE,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IACvE,OAAO,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACnF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAgB,EAAE,IAAqB,EAAa,EAAE;IACtF,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACvD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAgB,EAAE,GAAW,EAAW,EAAE;IACpE,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;AAClC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAgB,EAAE,GAAW,EAAkB,EAAE;IAC3E,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAgB,EAAY,EAAE;IAC5D,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF,uCAAuC;AAEvC,wDAAwD;AACxD,OAAO,EAAE,kBAAkB,EAAE,CAAA;AAE7B,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,EAA8B,EAC9B,SAAkB,EAClB,EAAE;IACF,OAAO,KAAK,EAAE,GAAG,IAAO,EAAc,EAAE;QACtC,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,sEAAsE;YACtE,4DAA4D;YAC5D,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAClC,CAAE,KAAa,CAAC,IAAI,KAAK,cAAc;oBACrC,KAAa,CAAC,IAAI,KAAK,eAAe,CAAC,EAAE,CAAC;gBAC9C,MAAM,KAAK,CAAC;YACd,CAAC;YAED,iBAAiB,CACf,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACrF,SAAS,EACT,EAAE,aAAa,EAAE,KAAK,EAAE,CACzB,CAAC;YACF,iFAAiF;YACjF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,gDAAgD;AAEhD,uDAAuD;AACvD,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,cAAmB,EAAmB,EAAE;IACjF,OAAO;QACL,aAAa,EAAE,KAAK,EAAE,OAAuB,EAAoB,EAAE;YACjE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACjE,OAAO,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;QAED,UAAU,EAAE,KAAK,EAAE,SAAiB,EAA2B,EAAE;YAC/D,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACzD,OAAO,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,CAAC;QAED,aAAa,EAAE,KAAK,EAAE,OAAgB,EAAoB,EAAE;YAC1D,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACtD,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,YAAY,EAAE,KAAK,EAAE,MAAc,EAAsB,EAAE;YACzD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC3D,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;QAClE,CAAC;QAED,aAAa,EAAE,KAAK,EAAE,SAAiB,EAAoB,EAAE;YAC3D,OAAO,MAAM,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACtD,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,MAAW,EAAE,OAAwB,EAAW,EAAE;IAC3E,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,iBAAiB,EAAE;QACpC,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,SAAS;QACtC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,OAAO,EAAE,MAAM,IAAI,SAAS;QACrD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;QAC/B,SAAS,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;QAChC,QAAQ,EAAE;YACR,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI,IAAI,EAAE;YACrC,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,IAAI,EAAE,EAAE;YACR,UAAU,EAAE,EAAE;SACf;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,OAAgB,EAAO,EAAE;IAClD,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,OAAO,CAAC,SAAS;QAC3B,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO;QACjC,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,YAAY;KAC5C,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Real PostgreSQL Session Provider Implementation
|
|
3
|
+
*
|
|
4
|
+
* This provides a production-ready PostgreSQL-based session provider
|
|
5
|
+
* with proper connection pooling, transactions, and error handling
|
|
6
|
+
*/
|
|
7
|
+
import { SessionProvider } from '../types.js';
|
|
8
|
+
export interface PostgresConfig {
|
|
9
|
+
connectionString: string;
|
|
10
|
+
tableName?: string;
|
|
11
|
+
poolSize?: number;
|
|
12
|
+
idleTimeoutMillis?: number;
|
|
13
|
+
connectionTimeoutMillis?: number;
|
|
14
|
+
}
|
|
15
|
+
export declare const createPostgresSessionProvider: (config: PostgresConfig) => SessionProvider;
|
|
16
|
+
export declare const closePostgresPool: (provider: any) => Promise<void>;
|
|
17
|
+
export declare const getPoolStats: (provider: any) => any;
|
|
18
|
+
export declare const migrateFromRedisToPostgres: (redisProvider: SessionProvider, postgresProvider: SessionProvider, userIds: string[]) => Promise<{
|
|
19
|
+
migrated: number;
|
|
20
|
+
errors: string[];
|
|
21
|
+
}>;
|
|
22
|
+
//# sourceMappingURL=postgres-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres-provider.d.ts","sourceRoot":"","sources":["../../../src/adk/sessions/postgres-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,eAAe,EAIhB,MAAM,aAAa,CAAC;AAMrB,MAAM,WAAW,cAAc;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAmBD,eAAO,MAAM,6BAA6B,GAAI,QAAQ,cAAc,KAAG,eAiQtE,CAAC;AAIF,eAAO,MAAM,iBAAiB,GAAU,UAAU,GAAG,KAAG,OAAO,CAAC,IAAI,CAKnE,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,UAAU,GAAG,KAAG,GAS5C,CAAC;AAGF,eAAO,MAAM,0BAA0B,GACrC,eAAe,eAAe,EAC9B,kBAAkB,eAAe,EACjC,SAAS,MAAM,EAAE,KAChB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAsBhD,CAAC"}
|