@ainetwork/adk-provider-memory-inmemory 0.1.3 → 0.1.4

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/index.cjs CHANGED
@@ -51,7 +51,8 @@ var InMemorySession = class {
51
51
  }
52
52
  return void 0;
53
53
  }
54
- async createSession(userId, sessionId) {
54
+ async createSession(userId, sessionId, title) {
55
+ const now = Date.now();
55
56
  const key = this.generateKey(userId, sessionId);
56
57
  if (!this.userSessionIndex.has(userId)) {
57
58
  this.userSessionIndex.set(userId, /* @__PURE__ */ new Set());
@@ -60,19 +61,17 @@ var InMemorySession = class {
60
61
  this.sessions.set(key, { chats: /* @__PURE__ */ new Map() });
61
62
  const metadata = {
62
63
  sessionId,
63
- createdAt: Date.now(),
64
- updatedAt: Date.now()
64
+ createdAt: now,
65
+ updatedAt: now
65
66
  };
66
67
  this.userSessionIndex.get(userId)?.add(metadata);
67
68
  }
69
+ return { title, sessionId, updatedAt: now };
68
70
  }
69
71
  async addChatToSession(userId, sessionId, chat) {
70
72
  const key = this.generateKey(userId, sessionId);
73
+ await this.createSession(userId, sessionId, "New chat");
71
74
  const newChatId = (0, import_node_crypto.randomUUID)();
72
- if (!this.sessions.has(key)) {
73
- await this.createSession(userId, sessionId);
74
- }
75
- const sessions = this.sessions.get(key);
76
75
  this.sessions.get(key)?.chats.set(newChatId, chat);
77
76
  }
78
77
  async deleteSession(userId, sessionId) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../index.ts","../implements/session.memory.ts","../implements/intent.memory.ts"],"sourcesContent":["export { InMemorySession } from \"./implements/session.memory\";\nexport { InMemoryIntent } from \"./implements/intent.memory\";","import { randomUUID } from \"node:crypto\";\nimport type { ChatObject, SessionObject, SessionMetadata } from \"@ainetwork/adk/types/memory\";\nimport { ISessionMemory } from \"@ainetwork/adk/modules\";\n\ntype InMemorySessionObject = {\n chats: Map<string, ChatObject>\n}\n\ntype InMemorySessionMetadata = {\n sessionId: string;\n title?: string;\n updatedAt: number;\n createdAt: number;\n}\n\nexport class InMemorySession implements ISessionMemory {\n\tpublic sessions: Map<string, InMemorySessionObject> = new Map();\n public userSessionIndex: Map<string, Set<InMemorySessionMetadata>> = new Map();\n\n public async connect(): Promise<void> {}\n public async disconnect(): Promise<void> {}\n public isConnected(): boolean {\n return true;\n }\n\n private generateKey(userId: string, sessionId: string) {\n return `${userId}:${sessionId}`;\n }\n\n public async getSession(userId: string, sessionId: string): Promise<SessionObject | undefined> {\n const key = this.generateKey(userId, sessionId);\n const res = this.sessions.get(key);\n if (res) {\n const sessionObject: SessionObject = {\n chats: Object.fromEntries(res.chats)\n };\n return sessionObject;\n }\n return undefined;\n };\n\n\tpublic async createSession(userId: string, sessionId: string): Promise<void> {\n const key = this.generateKey(userId, sessionId);\n if (!this.userSessionIndex.has(userId)) {\n this.userSessionIndex.set(userId, new Set());\n }\n if (!this.sessions.has(key)) {\n this.sessions.set(key, { chats: new Map() });\n const metadata: InMemorySessionMetadata = {\n sessionId, createdAt: Date.now(), updatedAt: Date.now(),\n }\n this.userSessionIndex.get(userId)?.add(metadata);\n }\n };\n\n\tpublic async addChatToSession(userId: string, sessionId: string, chat: ChatObject): Promise<void> {\n const key = this.generateKey(userId, sessionId);\n const newChatId = randomUUID();\n if (!this.sessions.has(key)) {\n await this.createSession(userId, sessionId);\n }\n const sessions = this.sessions.get(key);\n this.sessions.get(key)?.chats.set(newChatId, chat);\n };\n\n\tpublic async deleteSession(userId: string, sessionId: string): Promise<void> {\n const key = this.generateKey(userId, sessionId);\n this.sessions.delete(key);\n this.userSessionIndex.delete(sessionId);\n };\n\n\tpublic async listSessions(userId: string): Promise<SessionMetadata[]> {\n const sessions = this.userSessionIndex.get(userId);\n if (sessions) {\n return Array.from(sessions);\n }\n return [];\n };\n}","import { randomUUID } from \"node:crypto\";\nimport type { Intent } from \"@ainetwork/adk/types/memory\";\nimport { IIntentMemory } from \"@ainetwork/adk/modules\";\n\nexport class InMemoryIntent implements IIntentMemory {\n\tpublic intents: Map<string, Intent> = new Map();\n\n public async connect(): Promise<void> {}\n public async disconnect(): Promise<void> {}\n public isConnected(): boolean {\n return true;\n }\n\n public async getIntent(intentId: string): Promise<Intent | undefined> {\n return this.intents.get(intentId);\n };\n\n\tpublic async saveIntent(intent: Intent): Promise<void> {\n const newId = randomUUID();\n this.intents.set(newId, intent);\n };\n\n\tpublic async updateIntent(intentId: string, intent: Intent): Promise<void> {\n this.intents.set(intentId, intent);\n };\n\n\tpublic async deleteIntent(intentId: string): Promise<void> {\n this.intents.delete(intentId);\n };\n\n\tpublic async listIntents(): Promise<Intent[]> {\n return Array.from(this.intents.values());\n };\n}"],"mappings":"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","names":["import_node_crypto"]}
1
+ {"version":3,"sources":["../index.ts","../implements/session.memory.ts","../implements/intent.memory.ts"],"sourcesContent":["export { InMemorySession } from \"./implements/session.memory\";\nexport { InMemoryIntent } from \"./implements/intent.memory\";","import { randomUUID } from \"node:crypto\";\nimport type { ChatObject, SessionObject, SessionMetadata } from \"@ainetwork/adk/types/memory\";\nimport { ISessionMemory } from \"@ainetwork/adk/modules\";\n\ntype InMemorySessionObject = {\n chats: Map<string, ChatObject>\n}\n\ntype InMemorySessionMetadata = {\n sessionId: string;\n title?: string;\n updatedAt: number;\n createdAt: number;\n}\n\nexport class InMemorySession implements ISessionMemory {\n\tpublic sessions: Map<string, InMemorySessionObject> = new Map();\n public userSessionIndex: Map<string, Set<InMemorySessionMetadata>> = new Map();\n\n public async connect(): Promise<void> {}\n public async disconnect(): Promise<void> {}\n public isConnected(): boolean {\n return true;\n }\n\n private generateKey(userId: string, sessionId: string) {\n return `${userId}:${sessionId}`;\n }\n\n public async getSession(userId: string, sessionId: string): Promise<SessionObject | undefined> {\n const key = this.generateKey(userId, sessionId);\n const res = this.sessions.get(key);\n if (res) {\n const sessionObject: SessionObject = {\n chats: Object.fromEntries(res.chats)\n };\n return sessionObject;\n }\n return undefined;\n };\n\n\tpublic async createSession(userId: string, sessionId: string, title: string): Promise<SessionMetadata> {\n const now = Date.now();\n const key = this.generateKey(userId, sessionId);\n if (!this.userSessionIndex.has(userId)) {\n this.userSessionIndex.set(userId, new Set());\n }\n if (!this.sessions.has(key)) {\n this.sessions.set(key, { chats: new Map() });\n const metadata: InMemorySessionMetadata = {\n sessionId, createdAt: now, updatedAt: now,\n }\n this.userSessionIndex.get(userId)?.add(metadata);\n }\n\n return { title, sessionId, updatedAt: now };\n };\n\n\tpublic async addChatToSession(userId: string, sessionId: string, chat: ChatObject): Promise<void> {\n const key = this.generateKey(userId, sessionId);\n await this.createSession(userId, sessionId, \"New chat\");\n const newChatId = randomUUID();\n this.sessions.get(key)?.chats.set(newChatId, chat);\n };\n\n\tpublic async deleteSession(userId: string, sessionId: string): Promise<void> {\n const key = this.generateKey(userId, sessionId);\n this.sessions.delete(key);\n this.userSessionIndex.delete(sessionId);\n };\n\n\tpublic async listSessions(userId: string): Promise<SessionMetadata[]> {\n const sessions = this.userSessionIndex.get(userId);\n if (sessions) {\n return Array.from(sessions);\n }\n return [];\n };\n}","import { randomUUID } from \"node:crypto\";\nimport type { Intent } from \"@ainetwork/adk/types/memory\";\nimport { IIntentMemory } from \"@ainetwork/adk/modules\";\n\nexport class InMemoryIntent implements IIntentMemory {\n\tpublic intents: Map<string, Intent> = new Map();\n\n public async connect(): Promise<void> {}\n public async disconnect(): Promise<void> {}\n public isConnected(): boolean {\n return true;\n }\n\n public async getIntent(intentId: string): Promise<Intent | undefined> {\n return this.intents.get(intentId);\n };\n\n\tpublic async saveIntent(intent: Intent): Promise<void> {\n const newId = randomUUID();\n this.intents.set(newId, intent);\n };\n\n\tpublic async updateIntent(intentId: string, intent: Intent): Promise<void> {\n this.intents.set(intentId, intent);\n };\n\n\tpublic async deleteIntent(intentId: string): Promise<void> {\n this.intents.delete(intentId);\n };\n\n\tpublic async listIntents(): Promise<Intent[]> {\n return Array.from(this.intents.values());\n };\n}"],"mappings":"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","names":["import_node_crypto"]}
package/dist/index.d.cts CHANGED
@@ -18,7 +18,7 @@ declare class InMemorySession implements ISessionMemory {
18
18
  isConnected(): boolean;
19
19
  private generateKey;
20
20
  getSession(userId: string, sessionId: string): Promise<SessionObject | undefined>;
21
- createSession(userId: string, sessionId: string): Promise<void>;
21
+ createSession(userId: string, sessionId: string, title: string): Promise<SessionMetadata>;
22
22
  addChatToSession(userId: string, sessionId: string, chat: ChatObject): Promise<void>;
23
23
  deleteSession(userId: string, sessionId: string): Promise<void>;
24
24
  listSessions(userId: string): Promise<SessionMetadata[]>;
package/dist/index.d.ts CHANGED
@@ -18,7 +18,7 @@ declare class InMemorySession implements ISessionMemory {
18
18
  isConnected(): boolean;
19
19
  private generateKey;
20
20
  getSession(userId: string, sessionId: string): Promise<SessionObject | undefined>;
21
- createSession(userId: string, sessionId: string): Promise<void>;
21
+ createSession(userId: string, sessionId: string, title: string): Promise<SessionMetadata>;
22
22
  addChatToSession(userId: string, sessionId: string, chat: ChatObject): Promise<void>;
23
23
  deleteSession(userId: string, sessionId: string): Promise<void>;
24
24
  listSessions(userId: string): Promise<SessionMetadata[]>;
package/dist/index.js CHANGED
@@ -24,7 +24,8 @@ var InMemorySession = class {
24
24
  }
25
25
  return void 0;
26
26
  }
27
- async createSession(userId, sessionId) {
27
+ async createSession(userId, sessionId, title) {
28
+ const now = Date.now();
28
29
  const key = this.generateKey(userId, sessionId);
29
30
  if (!this.userSessionIndex.has(userId)) {
30
31
  this.userSessionIndex.set(userId, /* @__PURE__ */ new Set());
@@ -33,19 +34,17 @@ var InMemorySession = class {
33
34
  this.sessions.set(key, { chats: /* @__PURE__ */ new Map() });
34
35
  const metadata = {
35
36
  sessionId,
36
- createdAt: Date.now(),
37
- updatedAt: Date.now()
37
+ createdAt: now,
38
+ updatedAt: now
38
39
  };
39
40
  this.userSessionIndex.get(userId)?.add(metadata);
40
41
  }
42
+ return { title, sessionId, updatedAt: now };
41
43
  }
42
44
  async addChatToSession(userId, sessionId, chat) {
43
45
  const key = this.generateKey(userId, sessionId);
46
+ await this.createSession(userId, sessionId, "New chat");
44
47
  const newChatId = randomUUID();
45
- if (!this.sessions.has(key)) {
46
- await this.createSession(userId, sessionId);
47
- }
48
- const sessions = this.sessions.get(key);
49
48
  this.sessions.get(key)?.chats.set(newChatId, chat);
50
49
  }
51
50
  async deleteSession(userId, sessionId) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../implements/session.memory.ts","../implements/intent.memory.ts"],"sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport type { ChatObject, SessionObject, SessionMetadata } from \"@ainetwork/adk/types/memory\";\nimport { ISessionMemory } from \"@ainetwork/adk/modules\";\n\ntype InMemorySessionObject = {\n chats: Map<string, ChatObject>\n}\n\ntype InMemorySessionMetadata = {\n sessionId: string;\n title?: string;\n updatedAt: number;\n createdAt: number;\n}\n\nexport class InMemorySession implements ISessionMemory {\n\tpublic sessions: Map<string, InMemorySessionObject> = new Map();\n public userSessionIndex: Map<string, Set<InMemorySessionMetadata>> = new Map();\n\n public async connect(): Promise<void> {}\n public async disconnect(): Promise<void> {}\n public isConnected(): boolean {\n return true;\n }\n\n private generateKey(userId: string, sessionId: string) {\n return `${userId}:${sessionId}`;\n }\n\n public async getSession(userId: string, sessionId: string): Promise<SessionObject | undefined> {\n const key = this.generateKey(userId, sessionId);\n const res = this.sessions.get(key);\n if (res) {\n const sessionObject: SessionObject = {\n chats: Object.fromEntries(res.chats)\n };\n return sessionObject;\n }\n return undefined;\n };\n\n\tpublic async createSession(userId: string, sessionId: string): Promise<void> {\n const key = this.generateKey(userId, sessionId);\n if (!this.userSessionIndex.has(userId)) {\n this.userSessionIndex.set(userId, new Set());\n }\n if (!this.sessions.has(key)) {\n this.sessions.set(key, { chats: new Map() });\n const metadata: InMemorySessionMetadata = {\n sessionId, createdAt: Date.now(), updatedAt: Date.now(),\n }\n this.userSessionIndex.get(userId)?.add(metadata);\n }\n };\n\n\tpublic async addChatToSession(userId: string, sessionId: string, chat: ChatObject): Promise<void> {\n const key = this.generateKey(userId, sessionId);\n const newChatId = randomUUID();\n if (!this.sessions.has(key)) {\n await this.createSession(userId, sessionId);\n }\n const sessions = this.sessions.get(key);\n this.sessions.get(key)?.chats.set(newChatId, chat);\n };\n\n\tpublic async deleteSession(userId: string, sessionId: string): Promise<void> {\n const key = this.generateKey(userId, sessionId);\n this.sessions.delete(key);\n this.userSessionIndex.delete(sessionId);\n };\n\n\tpublic async listSessions(userId: string): Promise<SessionMetadata[]> {\n const sessions = this.userSessionIndex.get(userId);\n if (sessions) {\n return Array.from(sessions);\n }\n return [];\n };\n}","import { randomUUID } from \"node:crypto\";\nimport type { Intent } from \"@ainetwork/adk/types/memory\";\nimport { IIntentMemory } from \"@ainetwork/adk/modules\";\n\nexport class InMemoryIntent implements IIntentMemory {\n\tpublic intents: Map<string, Intent> = new Map();\n\n public async connect(): Promise<void> {}\n public async disconnect(): Promise<void> {}\n public isConnected(): boolean {\n return true;\n }\n\n public async getIntent(intentId: string): Promise<Intent | undefined> {\n return this.intents.get(intentId);\n };\n\n\tpublic async saveIntent(intent: Intent): Promise<void> {\n const newId = randomUUID();\n this.intents.set(newId, intent);\n };\n\n\tpublic async updateIntent(intentId: string, intent: Intent): Promise<void> {\n this.intents.set(intentId, intent);\n };\n\n\tpublic async deleteIntent(intentId: string): Promise<void> {\n this.intents.delete(intentId);\n };\n\n\tpublic async listIntents(): Promise<Intent[]> {\n return Array.from(this.intents.values());\n };\n}"],"mappings":"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","names":["randomUUID"]}
1
+ {"version":3,"sources":["../implements/session.memory.ts","../implements/intent.memory.ts"],"sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport type { ChatObject, SessionObject, SessionMetadata } from \"@ainetwork/adk/types/memory\";\nimport { ISessionMemory } from \"@ainetwork/adk/modules\";\n\ntype InMemorySessionObject = {\n chats: Map<string, ChatObject>\n}\n\ntype InMemorySessionMetadata = {\n sessionId: string;\n title?: string;\n updatedAt: number;\n createdAt: number;\n}\n\nexport class InMemorySession implements ISessionMemory {\n\tpublic sessions: Map<string, InMemorySessionObject> = new Map();\n public userSessionIndex: Map<string, Set<InMemorySessionMetadata>> = new Map();\n\n public async connect(): Promise<void> {}\n public async disconnect(): Promise<void> {}\n public isConnected(): boolean {\n return true;\n }\n\n private generateKey(userId: string, sessionId: string) {\n return `${userId}:${sessionId}`;\n }\n\n public async getSession(userId: string, sessionId: string): Promise<SessionObject | undefined> {\n const key = this.generateKey(userId, sessionId);\n const res = this.sessions.get(key);\n if (res) {\n const sessionObject: SessionObject = {\n chats: Object.fromEntries(res.chats)\n };\n return sessionObject;\n }\n return undefined;\n };\n\n\tpublic async createSession(userId: string, sessionId: string, title: string): Promise<SessionMetadata> {\n const now = Date.now();\n const key = this.generateKey(userId, sessionId);\n if (!this.userSessionIndex.has(userId)) {\n this.userSessionIndex.set(userId, new Set());\n }\n if (!this.sessions.has(key)) {\n this.sessions.set(key, { chats: new Map() });\n const metadata: InMemorySessionMetadata = {\n sessionId, createdAt: now, updatedAt: now,\n }\n this.userSessionIndex.get(userId)?.add(metadata);\n }\n\n return { title, sessionId, updatedAt: now };\n };\n\n\tpublic async addChatToSession(userId: string, sessionId: string, chat: ChatObject): Promise<void> {\n const key = this.generateKey(userId, sessionId);\n await this.createSession(userId, sessionId, \"New chat\");\n const newChatId = randomUUID();\n this.sessions.get(key)?.chats.set(newChatId, chat);\n };\n\n\tpublic async deleteSession(userId: string, sessionId: string): Promise<void> {\n const key = this.generateKey(userId, sessionId);\n this.sessions.delete(key);\n this.userSessionIndex.delete(sessionId);\n };\n\n\tpublic async listSessions(userId: string): Promise<SessionMetadata[]> {\n const sessions = this.userSessionIndex.get(userId);\n if (sessions) {\n return Array.from(sessions);\n }\n return [];\n };\n}","import { randomUUID } from \"node:crypto\";\nimport type { Intent } from \"@ainetwork/adk/types/memory\";\nimport { IIntentMemory } from \"@ainetwork/adk/modules\";\n\nexport class InMemoryIntent implements IIntentMemory {\n\tpublic intents: Map<string, Intent> = new Map();\n\n public async connect(): Promise<void> {}\n public async disconnect(): Promise<void> {}\n public isConnected(): boolean {\n return true;\n }\n\n public async getIntent(intentId: string): Promise<Intent | undefined> {\n return this.intents.get(intentId);\n };\n\n\tpublic async saveIntent(intent: Intent): Promise<void> {\n const newId = randomUUID();\n this.intents.set(newId, intent);\n };\n\n\tpublic async updateIntent(intentId: string, intent: Intent): Promise<void> {\n this.intents.set(intentId, intent);\n };\n\n\tpublic async deleteIntent(intentId: string): Promise<void> {\n this.intents.delete(intentId);\n };\n\n\tpublic async listIntents(): Promise<Intent[]> {\n return Array.from(this.intents.values());\n };\n}"],"mappings":";AAAA,SAAS,kBAAkB;AAepB,IAAM,kBAAN,MAAgD;AAAA,EAC/C,WAA+C,oBAAI,IAAI;AAAA,EACtD,mBAA8D,oBAAI,IAAI;AAAA,EAE7E,MAAa,UAAyB;AAAA,EAAC;AAAA,EACvC,MAAa,aAA4B;AAAA,EAAC;AAAA,EACnC,cAAuB;AAC5B,WAAO;AAAA,EACT;AAAA,EAEQ,YAAY,QAAgB,WAAmB;AACrD,WAAO,GAAG,MAAM,IAAI,SAAS;AAAA,EAC/B;AAAA,EAEA,MAAa,WAAW,QAAgB,WAAuD;AAC7F,UAAM,MAAM,KAAK,YAAY,QAAQ,SAAS;AAC9C,UAAM,MAAM,KAAK,SAAS,IAAI,GAAG;AACjC,QAAI,KAAK;AACP,YAAM,gBAA+B;AAAA,QACnC,OAAO,OAAO,YAAY,IAAI,KAAK;AAAA,MACrC;AACA,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAAA,EAED,MAAa,cAAc,QAAgB,WAAmB,OAAyC;AACpG,UAAM,MAAM,KAAK,IAAI;AACrB,UAAM,MAAM,KAAK,YAAY,QAAQ,SAAS;AAC9C,QAAI,CAAC,KAAK,iBAAiB,IAAI,MAAM,GAAG;AACtC,WAAK,iBAAiB,IAAI,QAAQ,oBAAI,IAAI,CAAC;AAAA,IAC7C;AACA,QAAI,CAAC,KAAK,SAAS,IAAI,GAAG,GAAG;AAC3B,WAAK,SAAS,IAAI,KAAK,EAAE,OAAO,oBAAI,IAAI,EAAE,CAAC;AAC3C,YAAM,WAAoC;AAAA,QACxC;AAAA,QAAW,WAAW;AAAA,QAAK,WAAW;AAAA,MACxC;AACA,WAAK,iBAAiB,IAAI,MAAM,GAAG,IAAI,QAAQ;AAAA,IACjD;AAEA,WAAO,EAAE,OAAO,WAAW,WAAW,IAAI;AAAA,EAC5C;AAAA,EAED,MAAa,iBAAiB,QAAgB,WAAmB,MAAiC;AAC/F,UAAM,MAAM,KAAK,YAAY,QAAQ,SAAS;AAC9C,UAAM,KAAK,cAAc,QAAQ,WAAW,UAAU;AACtD,UAAM,YAAY,WAAW;AAC7B,SAAK,SAAS,IAAI,GAAG,GAAG,MAAM,IAAI,WAAW,IAAI;AAAA,EACnD;AAAA,EAED,MAAa,cAAc,QAAgB,WAAkC;AAC1E,UAAM,MAAM,KAAK,YAAY,QAAQ,SAAS;AAC9C,SAAK,SAAS,OAAO,GAAG;AACxB,SAAK,iBAAiB,OAAO,SAAS;AAAA,EACxC;AAAA,EAED,MAAa,aAAa,QAA4C;AACnE,UAAM,WAAW,KAAK,iBAAiB,IAAI,MAAM;AACjD,QAAI,UAAU;AACZ,aAAO,MAAM,KAAK,QAAQ;AAAA,IAC5B;AACA,WAAO,CAAC;AAAA,EACV;AACF;;;AC9EA,SAAS,cAAAA,mBAAkB;AAIpB,IAAM,iBAAN,MAA8C;AAAA,EAC7C,UAA+B,oBAAI,IAAI;AAAA,EAE7C,MAAa,UAAyB;AAAA,EAAC;AAAA,EACvC,MAAa,aAA4B;AAAA,EAAC;AAAA,EACnC,cAAuB;AAC5B,WAAO;AAAA,EACT;AAAA,EAEA,MAAa,UAAU,UAA+C;AACpE,WAAO,KAAK,QAAQ,IAAI,QAAQ;AAAA,EAClC;AAAA,EAED,MAAa,WAAW,QAA+B;AACpD,UAAM,QAAQA,YAAW;AACzB,SAAK,QAAQ,IAAI,OAAO,MAAM;AAAA,EAChC;AAAA,EAED,MAAa,aAAa,UAAkB,QAA+B;AACxE,SAAK,QAAQ,IAAI,UAAU,MAAM;AAAA,EACnC;AAAA,EAED,MAAa,aAAa,UAAiC;AACxD,SAAK,QAAQ,OAAO,QAAQ;AAAA,EAC9B;AAAA,EAED,MAAa,cAAiC;AAC3C,WAAO,MAAM,KAAK,KAAK,QAAQ,OAAO,CAAC;AAAA,EACzC;AACF;","names":["randomUUID"]}
@@ -39,7 +39,8 @@ export class InMemorySession implements ISessionMemory {
39
39
  return undefined;
40
40
  };
41
41
 
42
- public async createSession(userId: string, sessionId: string): Promise<void> {
42
+ public async createSession(userId: string, sessionId: string, title: string): Promise<SessionMetadata> {
43
+ const now = Date.now();
43
44
  const key = this.generateKey(userId, sessionId);
44
45
  if (!this.userSessionIndex.has(userId)) {
45
46
  this.userSessionIndex.set(userId, new Set());
@@ -47,19 +48,18 @@ export class InMemorySession implements ISessionMemory {
47
48
  if (!this.sessions.has(key)) {
48
49
  this.sessions.set(key, { chats: new Map() });
49
50
  const metadata: InMemorySessionMetadata = {
50
- sessionId, createdAt: Date.now(), updatedAt: Date.now(),
51
+ sessionId, createdAt: now, updatedAt: now,
51
52
  }
52
53
  this.userSessionIndex.get(userId)?.add(metadata);
53
54
  }
55
+
56
+ return { title, sessionId, updatedAt: now };
54
57
  };
55
58
 
56
59
  public async addChatToSession(userId: string, sessionId: string, chat: ChatObject): Promise<void> {
57
60
  const key = this.generateKey(userId, sessionId);
61
+ await this.createSession(userId, sessionId, "New chat");
58
62
  const newChatId = randomUUID();
59
- if (!this.sessions.has(key)) {
60
- await this.createSession(userId, sessionId);
61
- }
62
- const sessions = this.sessions.get(key);
63
63
  this.sessions.get(key)?.chats.set(newChatId, chat);
64
64
  };
65
65
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ainetwork/adk-provider-memory-inmemory",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "author": "AI Network (https://ainetwork.ai)",
5
5
  "type": "module",
6
6
  "engines": {
@@ -21,7 +21,7 @@
21
21
  "clean": "rm -rf dist"
22
22
  },
23
23
  "dependencies": {
24
- "@ainetwork/adk": "^0.1.7"
24
+ "@ainetwork/adk": "^0.1.9"
25
25
  },
26
26
  "devDependencies": {
27
27
  "typescript": "^5.0.0"
@@ -30,5 +30,5 @@
30
30
  "publishConfig": {
31
31
  "access": "public"
32
32
  },
33
- "gitHead": "179c9e22bac074444e9a1ddf656eb52d6fe8d34a"
33
+ "gitHead": "66a5fbc5f9a509bd412ff8dc91b002862133fbae"
34
34
  }