@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.
@@ -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(): MemoryManager;
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;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKlD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAehD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
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(): SessionManager;
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;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAcnD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,CAclD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
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 extends SkillAgentOptions {
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<SkillAgentResult>;
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,EAKL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,UAAU,uBAAwB,SAAQ,iBAAiB;IACzD,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,gBAAgB,CAAC,CAsD3B;AAGD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAC"}
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 createFirestoreAdapter(firestore) {
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: createFirestoreAdapter(db),
143
- memoryManager: getMemoryManager(),
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 memoryManager2 = getMemoryManager();
175
- getSessionManager();
176
- const observability = getObservabilityCollector();
177
- const multiUser = getMultiUserManager();
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
- if (result.threadId) {
206
- multiUser.assignSessionOwnership(result.threadId, options.userId);
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
- req.userContext = createUserContext(userId, {
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 setupStateSyncWebSocket(io) {
290
- const stateSync = getStateSyncManager();
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", (changes) => {
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(...args) {
2593
+ async function createServerSkillAgent2(options) {
2576
2594
  const m = await Promise.resolve().then(() => (init_skill_agent(), skill_agent_exports));
2577
- return m.createServerSkillAgent(...args);
2595
+ return m.createServerSkillAgent(options);
2578
2596
  }
2579
- async function multiUserMiddleware2(...args) {
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(...args);
2599
+ return m.multiUserMiddleware(req, res, next);
2582
2600
  }
2583
- async function verifyFirebaseAuth2(...args) {
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(...args);
2603
+ return m.verifyFirebaseAuth(req, res, next);
2586
2604
  }
2587
- async function setupStateSyncWebSocket2(...args) {
2605
+ async function setupStateSyncWebSocket2(io) {
2588
2606
  const m = await Promise.resolve().then(() => (init_state_sync(), state_sync_exports));
2589
- return m.setupStateSyncWebSocket(...args);
2607
+ return m.setupStateSyncWebSocket(io);
2590
2608
  }
2591
2609
  async function observabilityRouter() {
2592
2610
  const m = await Promise.resolve().then(() => (init_observability(), observability_exports));