@hasna/mementos 0.4.2 → 0.4.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/cli/index.js CHANGED
@@ -2400,6 +2400,11 @@ var init_database = __esm(() => {
2400
2400
  CREATE INDEX IF NOT EXISTS idx_entity_memories_memory ON entity_memories(memory_id);
2401
2401
 
2402
2402
  INSERT OR IGNORE INTO _migrations (id) VALUES (5);
2403
+ `,
2404
+ `
2405
+ ALTER TABLE agents ADD COLUMN active_project_id TEXT REFERENCES projects(id) ON DELETE SET NULL;
2406
+ CREATE INDEX IF NOT EXISTS idx_agents_active_project ON agents(active_project_id);
2407
+ INSERT OR IGNORE INTO _migrations (id) VALUES (6);
2403
2408
  `
2404
2409
  ];
2405
2410
  });
@@ -2469,6 +2474,7 @@ function parseAgentRow(row) {
2469
2474
  description: row["description"] || null,
2470
2475
  role: row["role"] || null,
2471
2476
  metadata: JSON.parse(row["metadata"] || "{}"),
2477
+ active_project_id: row["active_project_id"] || null,
2472
2478
  created_at: row["created_at"],
2473
2479
  last_seen_at: row["last_seen_at"]
2474
2480
  };
@@ -2545,6 +2551,9 @@ function updateAgent(id, updates, db) {
2545
2551
  if (updates.metadata !== undefined) {
2546
2552
  d.run("UPDATE agents SET metadata = ? WHERE id = ?", [JSON.stringify(updates.metadata), agent.id]);
2547
2553
  }
2554
+ if ("active_project_id" in updates) {
2555
+ d.run("UPDATE agents SET active_project_id = ? WHERE id = ?", [updates.active_project_id ?? null, agent.id]);
2556
+ }
2548
2557
  d.run("UPDATE agents SET last_seen_at = ? WHERE id = ?", [timestamp, agent.id]);
2549
2558
  return getAgent(agent.id, d);
2550
2559
  }
@@ -2586,6 +2595,9 @@ function getProject(idOrPath, db) {
2586
2595
  if (row)
2587
2596
  return parseProjectRow(row);
2588
2597
  row = d.query("SELECT * FROM projects WHERE path = ?").get(idOrPath);
2598
+ if (row)
2599
+ return parseProjectRow(row);
2600
+ row = d.query("SELECT * FROM projects WHERE LOWER(name) = ?").get(idOrPath.toLowerCase());
2589
2601
  if (row)
2590
2602
  return parseProjectRow(row);
2591
2603
  return null;
@@ -3,10 +3,13 @@ import type { Agent } from "../types/index.js";
3
3
  export declare function registerAgent(name: string, description?: string, role?: string, db?: Database): Agent;
4
4
  export declare function getAgent(idOrName: string, db?: Database): Agent | null;
5
5
  export declare function listAgents(db?: Database): Agent[];
6
+ export declare function touchAgent(idOrName: string, db?: Database): void;
7
+ export declare function listAgentsByProject(projectId: string, db?: Database): Agent[];
6
8
  export declare function updateAgent(id: string, updates: {
7
9
  name?: string;
8
10
  description?: string;
9
11
  role?: string;
10
12
  metadata?: Record<string, unknown>;
13
+ active_project_id?: string | null;
11
14
  }, db?: Database): Agent | null;
12
15
  //# sourceMappingURL=agents.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/db/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAe/C,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE,MAAM,EACb,EAAE,CAAC,EAAE,QAAQ,GACZ,KAAK,CAsCP;AAED,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,MAAM,EAChB,EAAE,CAAC,EAAE,QAAQ,GACZ,KAAK,GAAG,IAAI,CAsBd;AAED,wBAAgB,UAAU,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,KAAK,EAAE,CAMjD;AAED,wBAAgB,WAAW,CACzB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,EACnG,EAAE,CAAC,EAAE,QAAQ,GACZ,KAAK,GAAG,IAAI,CAqCd"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/db/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAgB/C,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE,MAAM,EACb,EAAE,CAAC,EAAE,QAAQ,GACZ,KAAK,CAsCP;AAED,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,MAAM,EAChB,EAAE,CAAC,EAAE,QAAQ,GACZ,KAAK,GAAG,IAAI,CAsBd;AAED,wBAAgB,UAAU,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,KAAK,EAAE,CAMjD;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CAKhE;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,KAAK,EAAE,CAM7E;AAED,wBAAgB,WAAW,CACzB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EACtI,EAAE,CAAC,EAAE,QAAQ,GACZ,KAAK,GAAG,IAAI,CAyCd"}
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/db/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAmCtC,wBAAgB,SAAS,IAAI,MAAM,CAkBlC;AAkOD,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAerD;AA+BD,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAED,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAED,wBAAgB,GAAG,IAAI,MAAM,CAE5B;AAED,wBAAgB,IAAI,IAAI,MAAM,CAE7B;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,QAAQ,EACZ,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAef"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/db/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAmCtC,wBAAgB,SAAS,IAAI,MAAM,CAkBlC;AAyOD,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAerD;AA+BD,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAED,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAED,wBAAgB,GAAG,IAAI,MAAM,CAE5B;AAED,wBAAgB,IAAI,IAAI,MAAM,CAE7B;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,QAAQ,EACZ,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAef"}
@@ -1 +1 @@
1
- {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/db/projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAejD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,EACrB,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAyBT;AAED,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,GAAG,IAAI,CAchB;AAED,wBAAgB,YAAY,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,EAAE,CAMrD"}
1
+ {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/db/projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAejD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,EACrB,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAyBT;AAED,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,GAAG,IAAI,CAoBhB;AAED,wBAAgB,YAAY,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,EAAE,CAMrD"}
package/dist/index.js CHANGED
@@ -296,6 +296,11 @@ var MIGRATIONS = [
296
296
  CREATE INDEX IF NOT EXISTS idx_entity_memories_memory ON entity_memories(memory_id);
297
297
 
298
298
  INSERT OR IGNORE INTO _migrations (id) VALUES (5);
299
+ `,
300
+ `
301
+ ALTER TABLE agents ADD COLUMN active_project_id TEXT REFERENCES projects(id) ON DELETE SET NULL;
302
+ CREATE INDEX IF NOT EXISTS idx_agents_active_project ON agents(active_project_id);
303
+ INSERT OR IGNORE INTO _migrations (id) VALUES (6);
299
304
  `
300
305
  ];
301
306
  var _db = null;
@@ -401,6 +406,7 @@ function parseAgentRow(row) {
401
406
  description: row["description"] || null,
402
407
  role: row["role"] || null,
403
408
  metadata: JSON.parse(row["metadata"] || "{}"),
409
+ active_project_id: row["active_project_id"] || null,
404
410
  created_at: row["created_at"],
405
411
  last_seen_at: row["last_seen_at"]
406
412
  };
@@ -477,6 +483,9 @@ function updateAgent(id, updates, db) {
477
483
  if (updates.metadata !== undefined) {
478
484
  d.run("UPDATE agents SET metadata = ? WHERE id = ?", [JSON.stringify(updates.metadata), agent.id]);
479
485
  }
486
+ if ("active_project_id" in updates) {
487
+ d.run("UPDATE agents SET active_project_id = ? WHERE id = ?", [updates.active_project_id ?? null, agent.id]);
488
+ }
480
489
  d.run("UPDATE agents SET last_seen_at = ? WHERE id = ?", [timestamp, agent.id]);
481
490
  return getAgent(agent.id, d);
482
491
  }
@@ -515,6 +524,9 @@ function getProject(idOrPath, db) {
515
524
  if (row)
516
525
  return parseProjectRow(row);
517
526
  row = d.query("SELECT * FROM projects WHERE path = ?").get(idOrPath);
527
+ if (row)
528
+ return parseProjectRow(row);
529
+ row = d.query("SELECT * FROM projects WHERE LOWER(name) = ?").get(idOrPath.toLowerCase());
518
530
  if (row)
519
531
  return parseProjectRow(row);
520
532
  return null;
package/dist/mcp/index.js CHANGED
@@ -4278,6 +4278,11 @@ var MIGRATIONS = [
4278
4278
  CREATE INDEX IF NOT EXISTS idx_entity_memories_memory ON entity_memories(memory_id);
4279
4279
 
4280
4280
  INSERT OR IGNORE INTO _migrations (id) VALUES (5);
4281
+ `,
4282
+ `
4283
+ ALTER TABLE agents ADD COLUMN active_project_id TEXT REFERENCES projects(id) ON DELETE SET NULL;
4284
+ CREATE INDEX IF NOT EXISTS idx_agents_active_project ON agents(active_project_id);
4285
+ INSERT OR IGNORE INTO _migrations (id) VALUES (6);
4281
4286
  `
4282
4287
  ];
4283
4288
  var _db = null;
@@ -4367,6 +4372,7 @@ function parseAgentRow(row) {
4367
4372
  description: row["description"] || null,
4368
4373
  role: row["role"] || null,
4369
4374
  metadata: JSON.parse(row["metadata"] || "{}"),
4375
+ active_project_id: row["active_project_id"] || null,
4370
4376
  created_at: row["created_at"],
4371
4377
  last_seen_at: row["last_seen_at"]
4372
4378
  };
@@ -4418,6 +4424,18 @@ function listAgents(db) {
4418
4424
  const rows = d.query("SELECT * FROM agents ORDER BY last_seen_at DESC").all();
4419
4425
  return rows.map(parseAgentRow);
4420
4426
  }
4427
+ function touchAgent(idOrName, db) {
4428
+ const d = db || getDatabase();
4429
+ const agent = getAgent(idOrName, d);
4430
+ if (!agent)
4431
+ return;
4432
+ d.run("UPDATE agents SET last_seen_at = ? WHERE id = ?", [now(), agent.id]);
4433
+ }
4434
+ function listAgentsByProject(projectId, db) {
4435
+ const d = db || getDatabase();
4436
+ const rows = d.query("SELECT * FROM agents WHERE active_project_id = ? ORDER BY last_seen_at DESC").all(projectId);
4437
+ return rows.map(parseAgentRow);
4438
+ }
4421
4439
  function updateAgent(id, updates, db) {
4422
4440
  const d = db || getDatabase();
4423
4441
  const agent = getAgent(id, d);
@@ -4443,6 +4461,9 @@ function updateAgent(id, updates, db) {
4443
4461
  if (updates.metadata !== undefined) {
4444
4462
  d.run("UPDATE agents SET metadata = ? WHERE id = ?", [JSON.stringify(updates.metadata), agent.id]);
4445
4463
  }
4464
+ if ("active_project_id" in updates) {
4465
+ d.run("UPDATE agents SET active_project_id = ? WHERE id = ?", [updates.active_project_id ?? null, agent.id]);
4466
+ }
4446
4467
  d.run("UPDATE agents SET last_seen_at = ? WHERE id = ?", [timestamp, agent.id]);
4447
4468
  return getAgent(agent.id, d);
4448
4469
  }
@@ -4481,6 +4502,9 @@ function getProject(idOrPath, db) {
4481
4502
  if (row)
4482
4503
  return parseProjectRow(row);
4483
4504
  row = d.query("SELECT * FROM projects WHERE path = ?").get(idOrPath);
4505
+ if (row)
4506
+ return parseProjectRow(row);
4507
+ row = d.query("SELECT * FROM projects WHERE LOWER(name) = ?").get(idOrPath.toLowerCase());
4484
4508
  if (row)
4485
4509
  return parseProjectRow(row);
4486
4510
  return null;
@@ -6059,6 +6083,8 @@ server.tool("memory_save", "Save/upsert a memory. scope: global=all agents, shar
6059
6083
  input.ttl_ms = parseDuration(args.ttl_ms);
6060
6084
  }
6061
6085
  const memory = createMemory(input);
6086
+ if (args.agent_id)
6087
+ touchAgent(args.agent_id);
6062
6088
  return { content: [{ type: "text", text: `Saved: ${memory.key} (${memory.id.slice(0, 8)})` }] };
6063
6089
  } catch (e) {
6064
6090
  return { content: [{ type: "text", text: formatError(e) }], isError: true };
@@ -6076,6 +6102,8 @@ server.tool("memory_recall", "Recall a memory by key. Returns the best matching
6076
6102
  const memory = getMemoryByKey(args.key, args.scope, args.agent_id, args.project_id, args.session_id);
6077
6103
  if (memory) {
6078
6104
  touchMemory(memory.id);
6105
+ if (args.agent_id)
6106
+ touchAgent(args.agent_id);
6079
6107
  return { content: [{ type: "text", text: formatMemory(memory) }] };
6080
6108
  }
6081
6109
  const results = searchMemories(args.key, {
@@ -6424,7 +6452,7 @@ server.tool("list_agents", "List all registered agents", {}, async () => {
6424
6452
  if (agents.length === 0) {
6425
6453
  return { content: [{ type: "text", text: "No agents registered." }] };
6426
6454
  }
6427
- const lines = agents.map((a) => `${a.id} | ${a.name} | ${a.role || "agent"} | last seen: ${a.last_seen_at}`);
6455
+ const lines = agents.map((a) => `${a.id} | ${a.name} | ${a.role || "agent"} | project: ${a.active_project_id || "-"} | last seen: ${a.last_seen_at}`);
6428
6456
  return { content: [{ type: "text", text: `${agents.length} agent(s):
6429
6457
  ${lines.join(`
6430
6458
  `)}` }] };
@@ -6456,12 +6484,13 @@ Last seen: ${agent.last_seen_at}`
6456
6484
  return { content: [{ type: "text", text: formatError(e) }], isError: true };
6457
6485
  }
6458
6486
  });
6459
- server.tool("update_agent", "Update agent name, description, role, or metadata.", {
6487
+ server.tool("update_agent", "Update agent name, description, role, metadata, or active_project_id.", {
6460
6488
  id: exports_external.string(),
6461
6489
  name: exports_external.string().optional(),
6462
6490
  description: exports_external.string().optional(),
6463
6491
  role: exports_external.string().optional(),
6464
- metadata: exports_external.record(exports_external.unknown()).optional()
6492
+ metadata: exports_external.record(exports_external.unknown()).optional(),
6493
+ active_project_id: exports_external.string().nullable().optional()
6465
6494
  }, async (args) => {
6466
6495
  try {
6467
6496
  const { id, ...updates } = args;
@@ -6477,7 +6506,7 @@ ID: ${agent.id}
6477
6506
  Name: ${agent.name}
6478
6507
  Description: ${agent.description || "-"}
6479
6508
  Role: ${agent.role || "agent"}
6480
- Metadata: ${JSON.stringify(agent.metadata)}
6509
+ Active project: ${agent.active_project_id || "-"}
6481
6510
  Last seen: ${agent.last_seen_at}`
6482
6511
  }]
6483
6512
  };
@@ -6485,6 +6514,22 @@ Last seen: ${agent.last_seen_at}`
6485
6514
  return { content: [{ type: "text", text: formatError(e) }], isError: true };
6486
6515
  }
6487
6516
  });
6517
+ server.tool("list_agents_by_project", "List agents currently active on a project.", {
6518
+ project_id: exports_external.string()
6519
+ }, async (args) => {
6520
+ try {
6521
+ const agents = listAgentsByProject(args.project_id);
6522
+ if (agents.length === 0) {
6523
+ return { content: [{ type: "text", text: `No active agents for project: ${args.project_id}` }] };
6524
+ }
6525
+ const lines = agents.map((a) => `${a.id} | ${a.name} | ${a.role || "agent"} | last seen: ${a.last_seen_at}`);
6526
+ return { content: [{ type: "text", text: `${agents.length} agent(s) on project ${args.project_id}:
6527
+ ${lines.join(`
6528
+ `)}` }] };
6529
+ } catch (e) {
6530
+ return { content: [{ type: "text", text: formatError(e) }], isError: true };
6531
+ }
6532
+ });
6488
6533
  server.tool("register_project", "Register a project for memory scoping", {
6489
6534
  name: exports_external.string(),
6490
6535
  path: exports_external.string(),
@@ -6998,16 +7043,25 @@ var FULL_SCHEMAS = {
6998
7043
  example: '{"id":"maximus"}'
6999
7044
  },
7000
7045
  update_agent: {
7001
- description: "Update agent name, description, role, or metadata.",
7046
+ description: "Update agent name, description, role, metadata, or active_project_id. Call on session start to bind agent to current project.",
7002
7047
  category: "agent",
7003
7048
  params: {
7004
- id: { type: "string", description: "Agent UUID", required: true },
7049
+ id: { type: "string", description: "Agent UUID or name", required: true },
7005
7050
  name: { type: "string", description: "New name" },
7006
7051
  description: { type: "string", description: "New description" },
7007
7052
  role: { type: "string", description: "New role" },
7008
- metadata: { type: "object", description: "New metadata" }
7053
+ metadata: { type: "object", description: "New metadata" },
7054
+ active_project_id: { type: "string", description: "Project ID this agent is currently working on (null to clear)" }
7055
+ },
7056
+ example: '{"id":"galba","active_project_id":"80a0be92-e0cc-4710-bce4-fb8a2e78e69e"}'
7057
+ },
7058
+ list_agents_by_project: {
7059
+ description: "List all agents currently active on a specific project.",
7060
+ category: "agent",
7061
+ params: {
7062
+ project_id: { type: "string", description: "Project ID", required: true }
7009
7063
  },
7010
- example: '{"id":"agent-uuid","role":"senior-developer"}'
7064
+ example: '{"project_id":"80a0be92-e0cc-4710-bce4-fb8a2e78e69e"}'
7011
7065
  },
7012
7066
  register_project: {
7013
7067
  description: "Register a project for memory scoping. Idempotent by name.",
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAm4BH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAoG9C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AA87BH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAoG9C"}
@@ -289,6 +289,11 @@ var MIGRATIONS = [
289
289
  CREATE INDEX IF NOT EXISTS idx_entity_memories_memory ON entity_memories(memory_id);
290
290
 
291
291
  INSERT OR IGNORE INTO _migrations (id) VALUES (5);
292
+ `,
293
+ `
294
+ ALTER TABLE agents ADD COLUMN active_project_id TEXT REFERENCES projects(id) ON DELETE SET NULL;
295
+ CREATE INDEX IF NOT EXISTS idx_agents_active_project ON agents(active_project_id);
296
+ INSERT OR IGNORE INTO _migrations (id) VALUES (6);
292
297
  `
293
298
  ];
294
299
  var _db = null;
@@ -367,6 +372,7 @@ function parseAgentRow(row) {
367
372
  description: row["description"] || null,
368
373
  role: row["role"] || null,
369
374
  metadata: JSON.parse(row["metadata"] || "{}"),
375
+ active_project_id: row["active_project_id"] || null,
370
376
  created_at: row["created_at"],
371
377
  last_seen_at: row["last_seen_at"]
372
378
  };
@@ -418,6 +424,42 @@ function listAgents(db) {
418
424
  const rows = d.query("SELECT * FROM agents ORDER BY last_seen_at DESC").all();
419
425
  return rows.map(parseAgentRow);
420
426
  }
427
+ function listAgentsByProject(projectId, db) {
428
+ const d = db || getDatabase();
429
+ const rows = d.query("SELECT * FROM agents WHERE active_project_id = ? ORDER BY last_seen_at DESC").all(projectId);
430
+ return rows.map(parseAgentRow);
431
+ }
432
+ function updateAgent(id, updates, db) {
433
+ const d = db || getDatabase();
434
+ const agent = getAgent(id, d);
435
+ if (!agent)
436
+ return null;
437
+ const timestamp = now();
438
+ if (updates.name) {
439
+ const normalizedNewName = updates.name.trim().toLowerCase();
440
+ if (normalizedNewName !== agent.name) {
441
+ const existing = d.query("SELECT id FROM agents WHERE LOWER(name) = ? AND id != ?").get(normalizedNewName, agent.id);
442
+ if (existing) {
443
+ throw new Error(`Agent name already taken: ${normalizedNewName}`);
444
+ }
445
+ d.run("UPDATE agents SET name = ? WHERE id = ?", [normalizedNewName, agent.id]);
446
+ }
447
+ }
448
+ if (updates.description !== undefined) {
449
+ d.run("UPDATE agents SET description = ? WHERE id = ?", [updates.description, agent.id]);
450
+ }
451
+ if (updates.role !== undefined) {
452
+ d.run("UPDATE agents SET role = ? WHERE id = ?", [updates.role, agent.id]);
453
+ }
454
+ if (updates.metadata !== undefined) {
455
+ d.run("UPDATE agents SET metadata = ? WHERE id = ?", [JSON.stringify(updates.metadata), agent.id]);
456
+ }
457
+ if ("active_project_id" in updates) {
458
+ d.run("UPDATE agents SET active_project_id = ? WHERE id = ?", [updates.active_project_id ?? null, agent.id]);
459
+ }
460
+ d.run("UPDATE agents SET last_seen_at = ? WHERE id = ?", [timestamp, agent.id]);
461
+ return getAgent(agent.id, d);
462
+ }
421
463
 
422
464
  // src/db/projects.ts
423
465
  function parseProjectRow(row) {
@@ -453,6 +495,9 @@ function getProject(idOrPath, db) {
453
495
  if (row)
454
496
  return parseProjectRow(row);
455
497
  row = d.query("SELECT * FROM projects WHERE path = ?").get(idOrPath);
498
+ if (row)
499
+ return parseProjectRow(row);
500
+ row = d.query("SELECT * FROM projects WHERE LOWER(name) = ?").get(idOrPath.toLowerCase());
456
501
  if (row)
457
502
  return parseProjectRow(row);
458
503
  return null;
@@ -2198,8 +2243,9 @@ addRoute("DELETE", "/api/memories/:id", (_req, _url, params) => {
2198
2243
  }
2199
2244
  return json({ deleted: true });
2200
2245
  });
2201
- addRoute("GET", "/api/agents", () => {
2202
- const agents = listAgents();
2246
+ addRoute("GET", "/api/agents", (_req, url) => {
2247
+ const q = getSearchParams(url);
2248
+ const agents = q["project_id"] ? listAgentsByProject(q["project_id"]) : listAgents();
2203
2249
  return json({ agents, count: agents.length });
2204
2250
  });
2205
2251
  addRoute("POST", "/api/agents", async (req) => {
@@ -2217,6 +2263,31 @@ addRoute("GET", "/api/agents/:id", (_req, _url, params) => {
2217
2263
  }
2218
2264
  return json(agent);
2219
2265
  });
2266
+ addRoute("PATCH", "/api/agents/:id", async (req, _url, params) => {
2267
+ const body = await readJson(req);
2268
+ if (!body) {
2269
+ return errorResponse("Invalid JSON body", 400);
2270
+ }
2271
+ const updates = {};
2272
+ if (body["name"] !== undefined)
2273
+ updates.name = body["name"];
2274
+ if (body["description"] !== undefined)
2275
+ updates.description = body["description"];
2276
+ if (body["role"] !== undefined)
2277
+ updates.role = body["role"];
2278
+ if (body["metadata"] !== undefined)
2279
+ updates.metadata = body["metadata"];
2280
+ if ("active_project_id" in body)
2281
+ updates.active_project_id = body["active_project_id"] ?? null;
2282
+ try {
2283
+ const agent = updateAgent(params["id"], updates);
2284
+ if (!agent)
2285
+ return errorResponse("Agent not found", 404);
2286
+ return json(agent);
2287
+ } catch (e) {
2288
+ return errorResponse(e instanceof Error ? e.message : "Update failed", 400);
2289
+ }
2290
+ });
2220
2291
  addRoute("GET", "/api/projects", () => {
2221
2292
  const projects = listProjects();
2222
2293
  return json({ projects, count: projects.length });
@@ -2229,6 +2300,19 @@ addRoute("POST", "/api/projects", async (req) => {
2229
2300
  const project = registerProject(body["name"], body["path"], body["description"], body["memory_prefix"]);
2230
2301
  return json(project, 201);
2231
2302
  });
2303
+ addRoute("GET", "/api/projects/:id", (_req, _url, params) => {
2304
+ const project = getProject(params["id"]);
2305
+ if (!project)
2306
+ return errorResponse("Project not found", 404);
2307
+ return json(project);
2308
+ });
2309
+ addRoute("GET", "/api/projects/:id/agents", (_req, _url, params) => {
2310
+ const project = getProject(params["id"]);
2311
+ if (!project)
2312
+ return errorResponse("Project not found", 404);
2313
+ const agents = listAgentsByProject(project.id);
2314
+ return json({ agents, count: agents.length });
2315
+ });
2232
2316
  addRoute("GET", "/api/inject", (_req, url) => {
2233
2317
  const q = getSearchParams(url);
2234
2318
  const maxTokens = q["max_tokens"] ? parseInt(q["max_tokens"], 10) : 500;
@@ -2285,8 +2369,16 @@ addRoute("GET", "/api/inject", (_req, url) => {
2285
2369
  const charBudget = maxTokens * 4;
2286
2370
  const lines = [];
2287
2371
  let totalChars = 0;
2372
+ const format = q["format"] || "xml";
2288
2373
  for (const m of unique) {
2289
- const line = `- [${m.scope}/${m.category}] ${m.key}: ${m.value}`;
2374
+ let line;
2375
+ if (format === "compact") {
2376
+ line = `${m.key}: ${m.value}`;
2377
+ } else if (format === "json") {
2378
+ line = JSON.stringify({ key: m.key, value: m.value, scope: m.scope, category: m.category, importance: m.importance });
2379
+ } else {
2380
+ line = `- [${m.scope}/${m.category}] ${m.key}: ${m.value}`;
2381
+ }
2290
2382
  if (totalChars + line.length > charBudget)
2291
2383
  break;
2292
2384
  lines.push(line);
@@ -2296,10 +2388,23 @@ addRoute("GET", "/api/inject", (_req, url) => {
2296
2388
  if (lines.length === 0) {
2297
2389
  return json({ context: "", memories_count: 0 });
2298
2390
  }
2299
- const context = `<agent-memories>
2391
+ let context;
2392
+ if (format === "compact") {
2393
+ context = lines.join(`
2394
+ `);
2395
+ } else if (format === "json") {
2396
+ context = `[${lines.join(",")}]`;
2397
+ } else if (format === "markdown") {
2398
+ context = `## Agent Memories
2399
+
2400
+ ${lines.join(`
2401
+ `)}`;
2402
+ } else {
2403
+ context = `<agent-memories>
2300
2404
  ${lines.join(`
2301
2405
  `)}
2302
2406
  </agent-memories>`;
2407
+ }
2303
2408
  return json({ context, memories_count: lines.length });
2304
2409
  });
2305
2410
  addRoute("GET", "/api/entities", (_req, url) => {
@@ -88,6 +88,7 @@ export interface Agent {
88
88
  description: string | null;
89
89
  role: string | null;
90
90
  metadata: Record<string, unknown>;
91
+ active_project_id: string | null;
91
92
  created_at: string;
92
93
  last_seen_at: string;
93
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hasna/mementos",
3
- "version": "0.4.2",
3
+ "version": "0.4.4",
4
4
  "description": "Universal memory system for AI agents - CLI + MCP server + library API",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",