@almadar/server 2.1.0 → 2.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/dist/deepagent/memory.d.ts +1 -2
- package/dist/deepagent/memory.d.ts.map +1 -1
- package/dist/deepagent/session.d.ts +1 -2
- package/dist/deepagent/session.d.ts.map +1 -1
- package/dist/deepagent/skill-agent.d.ts +5 -5
- package/dist/deepagent/skill-agent.d.ts.map +1 -1
- package/dist/index.js +52 -34
- package/dist/index.js.map +1 -1
- package/dist/middleware/multi-user.d.ts.map +1 -1
- package/dist/routes/observability.d.ts.map +1 -1
- package/dist/websocket/state-sync.d.ts +1 -1
- package/dist/websocket/state-sync.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/deepagent/memory.js +0 -48
- package/dist/deepagent/memory.js.map +0 -1
- package/dist/deepagent/session.js +0 -68
- package/dist/deepagent/session.js.map +0 -1
- package/dist/deepagent/skill-agent.js +0 -114
- package/dist/deepagent/skill-agent.js.map +0 -1
- package/dist/middleware/multi-user.js +0 -76
- package/dist/middleware/multi-user.js.map +0 -1
- package/dist/routes/observability.js +0 -62
- package/dist/routes/observability.js.map +0 -1
- package/dist/websocket/state-sync.js +0 -77
- package/dist/websocket/state-sync.js.map +0 -1
|
@@ -5,11 +5,10 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @packageDocumentation
|
|
7
7
|
*/
|
|
8
|
-
import { MemoryManager } from '@almadar-io/agent';
|
|
9
8
|
/**
|
|
10
9
|
* Get or create the MemoryManager singleton
|
|
11
10
|
*/
|
|
12
|
-
export declare function getMemoryManager():
|
|
11
|
+
export declare function getMemoryManager(): Promise<unknown>;
|
|
13
12
|
/**
|
|
14
13
|
* Reset the MemoryManager (useful for testing)
|
|
15
14
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/deepagent/memory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/deepagent/memory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH;;GAEG;AACH,wBAAsB,gBAAgB,qBAgBrC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
|
|
@@ -5,11 +5,10 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @packageDocumentation
|
|
7
7
|
*/
|
|
8
|
-
import { SessionManager } from '@almadar-io/agent';
|
|
9
8
|
/**
|
|
10
9
|
* Get or create the SessionManager singleton
|
|
11
10
|
*/
|
|
12
|
-
export declare function getSessionManager():
|
|
11
|
+
export declare function getSessionManager(): Promise<unknown>;
|
|
13
12
|
/**
|
|
14
13
|
* Reset the SessionManager (useful for testing)
|
|
15
14
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/deepagent/session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/deepagent/session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH;;GAEG;AACH,wBAAsB,iBAAiB,qBAiBtC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
|
|
@@ -5,18 +5,18 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @packageDocumentation
|
|
7
7
|
*/
|
|
8
|
-
import { type SkillAgentOptions, type SkillAgentResult } from '@almadar-io/agent';
|
|
9
8
|
import { getMemoryManager } from './memory.js';
|
|
10
9
|
import { getSessionManager } from './session.js';
|
|
11
|
-
interface ServerSkillAgentOptions
|
|
12
|
-
/** User ID from Firebase Auth */
|
|
10
|
+
interface ServerSkillAgentOptions {
|
|
13
11
|
userId: string;
|
|
14
|
-
/** App/Project ID for context */
|
|
15
12
|
appId?: string;
|
|
13
|
+
threadId?: string;
|
|
14
|
+
skill?: string;
|
|
15
|
+
[key: string]: unknown;
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
18
18
|
* Create a skill agent with full server-side GAP integration
|
|
19
19
|
*/
|
|
20
|
-
export declare function createServerSkillAgent(options: ServerSkillAgentOptions): Promise<
|
|
20
|
+
export declare function createServerSkillAgent(options: ServerSkillAgentOptions): Promise<Record<string, unknown>>;
|
|
21
21
|
export { getMemoryManager, getSessionManager };
|
|
22
22
|
//# sourceMappingURL=skill-agent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-agent.d.ts","sourceRoot":"","sources":["../../src/deepagent/skill-agent.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"skill-agent.d.ts","sourceRoot":"","sources":["../../src/deepagent/skill-agent.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAMjD,UAAU,uBAAuB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,uBAAuB,oCAyDjC;AAGD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import admin from 'firebase-admin';
|
|
2
2
|
export { default as admin } from 'firebase-admin';
|
|
3
|
-
import { MemoryManager, SessionManager, getObservabilityCollector, getMultiUserManager, createWorkflowToolWrapper, createSkillAgent, createUserContext, getStateSyncManager } from '@almadar-io/agent';
|
|
4
3
|
import { Router } from 'express';
|
|
5
4
|
import { z, ZodError } from 'zod';
|
|
6
5
|
import dotenv from 'dotenv';
|
|
@@ -99,8 +98,9 @@ __export(memory_exports, {
|
|
|
99
98
|
getMemoryManager: () => getMemoryManager,
|
|
100
99
|
resetMemoryManager: () => resetMemoryManager
|
|
101
100
|
});
|
|
102
|
-
function getMemoryManager() {
|
|
101
|
+
async function getMemoryManager() {
|
|
103
102
|
if (!memoryManager) {
|
|
103
|
+
const { MemoryManager } = await import('@almadar-io/agent');
|
|
104
104
|
memoryManager = new MemoryManager({
|
|
105
105
|
db,
|
|
106
106
|
usersCollection: "agent_memory_users",
|
|
@@ -132,15 +132,15 @@ __export(session_exports, {
|
|
|
132
132
|
getSessionManager: () => getSessionManager,
|
|
133
133
|
resetSessionManager: () => resetSessionManager
|
|
134
134
|
});
|
|
135
|
-
function
|
|
136
|
-
return firestore;
|
|
137
|
-
}
|
|
138
|
-
function getSessionManager() {
|
|
135
|
+
async function getSessionManager() {
|
|
139
136
|
if (!sessionManager) {
|
|
137
|
+
const { SessionManager } = await import('@almadar-io/agent');
|
|
138
|
+
const firestoreDb = db;
|
|
139
|
+
const memoryManager2 = await getMemoryManager();
|
|
140
140
|
sessionManager = new SessionManager({
|
|
141
141
|
mode: "firestore",
|
|
142
|
-
firestoreDb
|
|
143
|
-
memoryManager:
|
|
142
|
+
firestoreDb,
|
|
143
|
+
memoryManager: memoryManager2,
|
|
144
144
|
// Enable GAP-002D
|
|
145
145
|
compactionConfig: {
|
|
146
146
|
maxTokens: 15e4,
|
|
@@ -170,11 +170,15 @@ __export(skill_agent_exports, {
|
|
|
170
170
|
getMemoryManager: () => getMemoryManager,
|
|
171
171
|
getSessionManager: () => getSessionManager
|
|
172
172
|
});
|
|
173
|
+
async function loadAgent() {
|
|
174
|
+
return import('@almadar-io/agent');
|
|
175
|
+
}
|
|
173
176
|
async function createServerSkillAgent(options) {
|
|
174
|
-
const
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
const
|
|
177
|
+
const agent = await loadAgent();
|
|
178
|
+
const memoryManager2 = await getMemoryManager();
|
|
179
|
+
await getSessionManager();
|
|
180
|
+
const observability = agent.getObservabilityCollector();
|
|
181
|
+
const multiUser = agent.getMultiUserManager();
|
|
178
182
|
if (options.threadId) {
|
|
179
183
|
const access = multiUser.canAccessSession(options.threadId, {
|
|
180
184
|
userId: options.userId,
|
|
@@ -185,14 +189,14 @@ async function createServerSkillAgent(options) {
|
|
|
185
189
|
}
|
|
186
190
|
}
|
|
187
191
|
observability.startSession(options.threadId ?? "new", options.userId);
|
|
188
|
-
const workflowToolWrapper = createWorkflowToolWrapper({
|
|
192
|
+
const workflowToolWrapper = agent.createWorkflowToolWrapper({
|
|
189
193
|
maxRetries: 2,
|
|
190
194
|
enableTelemetry: true,
|
|
191
195
|
timeoutMs: 3e5
|
|
192
196
|
// 5 minutes
|
|
193
197
|
});
|
|
194
198
|
try {
|
|
195
|
-
const result = await createSkillAgent({
|
|
199
|
+
const result = await agent.createSkillAgent({
|
|
196
200
|
...options,
|
|
197
201
|
memoryManager: memoryManager2,
|
|
198
202
|
// GAP-001: Enable memory
|
|
@@ -202,8 +206,9 @@ async function createServerSkillAgent(options) {
|
|
|
202
206
|
toolWrapper: workflowToolWrapper.wrap
|
|
203
207
|
// Always use workflow wrapper for reliability
|
|
204
208
|
});
|
|
205
|
-
|
|
206
|
-
|
|
209
|
+
const threadId = result.threadId;
|
|
210
|
+
if (threadId) {
|
|
211
|
+
multiUser.assignSessionOwnership(threadId, options.userId);
|
|
207
212
|
}
|
|
208
213
|
observability.recordEvent({
|
|
209
214
|
type: "session_start",
|
|
@@ -230,20 +235,24 @@ __export(multi_user_exports, {
|
|
|
230
235
|
multiUserMiddleware: () => multiUserMiddleware,
|
|
231
236
|
verifyFirebaseAuth: () => verifyFirebaseAuth
|
|
232
237
|
});
|
|
238
|
+
async function loadAgent2() {
|
|
239
|
+
return import('@almadar-io/agent');
|
|
240
|
+
}
|
|
233
241
|
async function multiUserMiddleware(req, res, next) {
|
|
234
242
|
const userId = req.user?.uid;
|
|
235
243
|
if (!userId) {
|
|
236
244
|
res.status(401).json({ error: "Authentication required" });
|
|
237
245
|
return;
|
|
238
246
|
}
|
|
239
|
-
|
|
247
|
+
const agent = await loadAgent2();
|
|
248
|
+
req.userContext = agent.createUserContext(userId, {
|
|
240
249
|
orgId: req.user?.orgId,
|
|
241
250
|
roles: req.user?.roles ?? ["user"]
|
|
242
251
|
});
|
|
243
252
|
const originalJson = res.json.bind(res);
|
|
244
253
|
res.json = (body) => {
|
|
245
254
|
if (body && typeof body === "object" && "threadId" in body) {
|
|
246
|
-
const multiUser = getMultiUserManager();
|
|
255
|
+
const multiUser = agent.getMultiUserManager();
|
|
247
256
|
multiUser.assignSessionOwnership(
|
|
248
257
|
body.threadId,
|
|
249
258
|
userId
|
|
@@ -286,8 +295,12 @@ var state_sync_exports = {};
|
|
|
286
295
|
__export(state_sync_exports, {
|
|
287
296
|
setupStateSyncWebSocket: () => setupStateSyncWebSocket
|
|
288
297
|
});
|
|
289
|
-
function
|
|
290
|
-
|
|
298
|
+
async function loadAgent3() {
|
|
299
|
+
return import('@almadar-io/agent');
|
|
300
|
+
}
|
|
301
|
+
async function setupStateSyncWebSocket(io) {
|
|
302
|
+
const agent = await loadAgent3();
|
|
303
|
+
const stateSync = agent.getStateSyncManager();
|
|
291
304
|
io.use(async (socket, next) => {
|
|
292
305
|
try {
|
|
293
306
|
const token = socket.handshake.auth.token;
|
|
@@ -315,7 +328,7 @@ function setupStateSyncWebSocket(io) {
|
|
|
315
328
|
socket.join(`user:${userId}`);
|
|
316
329
|
socket.on("stateChange", (...args) => {
|
|
317
330
|
const event = args[0];
|
|
318
|
-
const multiUser = getMultiUserManager();
|
|
331
|
+
const multiUser = agent.getMultiUserManager();
|
|
319
332
|
if (!multiUser.isSessionOwner(event.threadId, userId)) {
|
|
320
333
|
socket.emit("error", { message: "Not session owner" });
|
|
321
334
|
return;
|
|
@@ -323,7 +336,8 @@ function setupStateSyncWebSocket(io) {
|
|
|
323
336
|
stateSync.receiveRemoteChange(event);
|
|
324
337
|
socket.to(`user:${userId}`).emit("remoteChange", event);
|
|
325
338
|
});
|
|
326
|
-
stateSync.on("syncRequired", (
|
|
339
|
+
stateSync.on("syncRequired", (...args) => {
|
|
340
|
+
const changes = args[0];
|
|
327
341
|
socket.emit("syncBatch", changes);
|
|
328
342
|
});
|
|
329
343
|
socket.on("disconnect", () => {
|
|
@@ -343,13 +357,17 @@ var observability_exports = {};
|
|
|
343
357
|
__export(observability_exports, {
|
|
344
358
|
default: () => observability_default
|
|
345
359
|
});
|
|
360
|
+
async function getObservabilityCollector() {
|
|
361
|
+
const mod = await import('@almadar-io/agent');
|
|
362
|
+
return mod.getObservabilityCollector();
|
|
363
|
+
}
|
|
346
364
|
var router, observability_default;
|
|
347
365
|
var init_observability = __esm({
|
|
348
366
|
"src/routes/observability.ts"() {
|
|
349
367
|
router = Router();
|
|
350
368
|
router.get("/metrics", async (req, res) => {
|
|
351
369
|
try {
|
|
352
|
-
const collector = getObservabilityCollector();
|
|
370
|
+
const collector = await getObservabilityCollector();
|
|
353
371
|
const snapshot = collector.getPerformanceSnapshot();
|
|
354
372
|
res.json(snapshot);
|
|
355
373
|
} catch (error) {
|
|
@@ -359,7 +377,7 @@ var init_observability = __esm({
|
|
|
359
377
|
});
|
|
360
378
|
router.get("/health", async (req, res) => {
|
|
361
379
|
try {
|
|
362
|
-
const collector = getObservabilityCollector();
|
|
380
|
+
const collector = await getObservabilityCollector();
|
|
363
381
|
const health = await collector.healthCheck();
|
|
364
382
|
const allHealthy = health.every((h) => h.status === "healthy");
|
|
365
383
|
res.status(allHealthy ? 200 : 503).json({
|
|
@@ -377,7 +395,7 @@ var init_observability = __esm({
|
|
|
377
395
|
});
|
|
378
396
|
router.get("/sessions/:threadId/telemetry", async (req, res) => {
|
|
379
397
|
try {
|
|
380
|
-
const collector = getObservabilityCollector();
|
|
398
|
+
const collector = await getObservabilityCollector();
|
|
381
399
|
const telemetry = collector.getSessionTelemetry(req.params.threadId);
|
|
382
400
|
if (!telemetry) {
|
|
383
401
|
res.status(404).json({ error: "Session not found" });
|
|
@@ -391,7 +409,7 @@ var init_observability = __esm({
|
|
|
391
409
|
});
|
|
392
410
|
router.get("/active-sessions", async (req, res) => {
|
|
393
411
|
try {
|
|
394
|
-
const collector = getObservabilityCollector();
|
|
412
|
+
const collector = await getObservabilityCollector();
|
|
395
413
|
const sessions = collector.getActiveSessions();
|
|
396
414
|
res.json(sessions);
|
|
397
415
|
} catch (error) {
|
|
@@ -2572,21 +2590,21 @@ async function resetSessionManager2() {
|
|
|
2572
2590
|
const m = await Promise.resolve().then(() => (init_session(), session_exports));
|
|
2573
2591
|
return m.resetSessionManager();
|
|
2574
2592
|
}
|
|
2575
|
-
async function createServerSkillAgent2(
|
|
2593
|
+
async function createServerSkillAgent2(options) {
|
|
2576
2594
|
const m = await Promise.resolve().then(() => (init_skill_agent(), skill_agent_exports));
|
|
2577
|
-
return m.createServerSkillAgent(
|
|
2595
|
+
return m.createServerSkillAgent(options);
|
|
2578
2596
|
}
|
|
2579
|
-
async function multiUserMiddleware2(
|
|
2597
|
+
async function multiUserMiddleware2(req, res, next) {
|
|
2580
2598
|
const m = await Promise.resolve().then(() => (init_multi_user(), multi_user_exports));
|
|
2581
|
-
return m.multiUserMiddleware(
|
|
2599
|
+
return m.multiUserMiddleware(req, res, next);
|
|
2582
2600
|
}
|
|
2583
|
-
async function verifyFirebaseAuth2(
|
|
2601
|
+
async function verifyFirebaseAuth2(req, res, next) {
|
|
2584
2602
|
const m = await Promise.resolve().then(() => (init_multi_user(), multi_user_exports));
|
|
2585
|
-
return m.verifyFirebaseAuth(
|
|
2603
|
+
return m.verifyFirebaseAuth(req, res, next);
|
|
2586
2604
|
}
|
|
2587
|
-
async function setupStateSyncWebSocket2(
|
|
2605
|
+
async function setupStateSyncWebSocket2(io) {
|
|
2588
2606
|
const m = await Promise.resolve().then(() => (init_state_sync(), state_sync_exports));
|
|
2589
|
-
return m.setupStateSyncWebSocket(
|
|
2607
|
+
return m.setupStateSyncWebSocket(io);
|
|
2590
2608
|
}
|
|
2591
2609
|
async function observabilityRouter() {
|
|
2592
2610
|
const m = await Promise.resolve().then(() => (init_observability(), observability_exports));
|