kratos-memory 1.5.1 → 1.6.1

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.
Files changed (57) hide show
  1. package/dist/cli/commands/export.d.ts +2 -1
  2. package/dist/cli/commands/export.d.ts.map +1 -1
  3. package/dist/cli/commands/export.js +6 -1
  4. package/dist/cli/commands/export.js.map +1 -1
  5. package/dist/cli/commands/forget.d.ts +2 -1
  6. package/dist/cli/commands/forget.d.ts.map +1 -1
  7. package/dist/cli/commands/forget.js +6 -1
  8. package/dist/cli/commands/forget.js.map +1 -1
  9. package/dist/cli/commands/get.d.ts +2 -1
  10. package/dist/cli/commands/get.d.ts.map +1 -1
  11. package/dist/cli/commands/get.js +6 -2
  12. package/dist/cli/commands/get.js.map +1 -1
  13. package/dist/cli/commands/migrate.d.ts.map +1 -1
  14. package/dist/cli/commands/migrate.js +111 -27
  15. package/dist/cli/commands/migrate.js.map +1 -1
  16. package/dist/cli/commands/pin.d.ts +2 -1
  17. package/dist/cli/commands/pin.d.ts.map +1 -1
  18. package/dist/cli/commands/pin.js +6 -1
  19. package/dist/cli/commands/pin.js.map +1 -1
  20. package/dist/cli/commands/recent.d.ts +2 -1
  21. package/dist/cli/commands/recent.d.ts.map +1 -1
  22. package/dist/cli/commands/recent.js +7 -2
  23. package/dist/cli/commands/recent.js.map +1 -1
  24. package/dist/cli/commands/save.d.ts +2 -1
  25. package/dist/cli/commands/save.d.ts.map +1 -1
  26. package/dist/cli/commands/save.js +10 -3
  27. package/dist/cli/commands/save.js.map +1 -1
  28. package/dist/cli/commands/search.d.ts +2 -1
  29. package/dist/cli/commands/search.d.ts.map +1 -1
  30. package/dist/cli/commands/search.js +15 -8
  31. package/dist/cli/commands/search.js.map +1 -1
  32. package/dist/cli/commands/summary.d.ts +2 -1
  33. package/dist/cli/commands/summary.d.ts.map +1 -1
  34. package/dist/cli/commands/summary.js +8 -1
  35. package/dist/cli/commands/summary.js.map +1 -1
  36. package/dist/cli/commands/update.d.ts +2 -1
  37. package/dist/cli/commands/update.d.ts.map +1 -1
  38. package/dist/cli/commands/update.js +6 -1
  39. package/dist/cli/commands/update.js.map +1 -1
  40. package/dist/cli/core.d.ts +5 -0
  41. package/dist/cli/core.d.ts.map +1 -1
  42. package/dist/cli/core.js +14 -2
  43. package/dist/cli/core.js.map +1 -1
  44. package/dist/cli/index.js +12 -2
  45. package/dist/cli/index.js.map +1 -1
  46. package/dist/cli/output.d.ts +1 -0
  47. package/dist/cli/output.d.ts.map +1 -1
  48. package/dist/cli/output.js +2 -1
  49. package/dist/cli/output.js.map +1 -1
  50. package/dist/memory-server/database.d.ts +11 -0
  51. package/dist/memory-server/database.d.ts.map +1 -1
  52. package/dist/memory-server/database.js +39 -5
  53. package/dist/memory-server/database.js.map +1 -1
  54. package/dist/project-manager.d.ts.map +1 -1
  55. package/dist/project-manager.js +6 -2
  56. package/dist/project-manager.js.map +1 -1
  57. package/package.json +1 -1
@@ -1,5 +1,6 @@
1
- import type { CLIContext } from '../core.js';
1
+ import { type CLIContext } from '../core.js';
2
2
  export declare function exportCommand(ctx: CLIContext, opts: {
3
3
  format?: string;
4
+ global?: boolean;
4
5
  }): Promise<void>;
5
6
  //# sourceMappingURL=export.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/export.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BhB"}
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAGhE,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BhB"}
@@ -1,17 +1,22 @@
1
+ import { getScopedMemoryDb } from '../core.js';
1
2
  import { Output } from '../output.js';
2
3
  export async function exportCommand(ctx, opts) {
3
- const memories = ctx.memoryDb.getAll();
4
+ const memoryDb = getScopedMemoryDb(ctx, opts);
5
+ const scope = memoryDb.getScope();
6
+ const memories = memoryDb.getAll();
4
7
  if (memories.length === 0) {
5
8
  Output.warn('No memories to export');
6
9
  return;
7
10
  }
8
11
  const exported = {
12
+ scope,
9
13
  project: ctx.project.name,
10
14
  project_id: ctx.project.id,
11
15
  exported_at: new Date().toISOString(),
12
16
  count: memories.length,
13
17
  memories: memories.map(m => ({
14
18
  id: m.id,
19
+ scope,
15
20
  summary: m.summary,
16
21
  text: m.text,
17
22
  tags: m.tags,
@@ -1 +1 @@
1
- {"version":3,"file":"export.js","sourceRoot":"","sources":["../../../src/cli/commands/export.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAe,EAAE,IAEpD;IACC,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAEvC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG;QACf,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI;QACzB,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE;QAC1B,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,KAAK,EAAE,QAAQ,CAAC,MAAM;QACtB,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC3B,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,UAAU,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE;YAChD,UAAU,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE;SACjD,CAAC,CAAC;KACJ,CAAC;IAEF,mCAAmC;IACnC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../../src/cli/commands/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAe,EAAE,IAGpD;IACC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;IAEnC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG;QACf,KAAK;QACL,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI;QACzB,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE;QAC1B,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,KAAK,EAAE,QAAQ,CAAC,MAAM;QACtB,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC3B,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,KAAK;YACL,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,UAAU,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE;YAChD,UAAU,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE;SACjD,CAAC,CAAC;KACJ,CAAC;IAEF,mCAAmC;IACnC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC"}
@@ -1,5 +1,6 @@
1
- import type { CLIContext } from '../core.js';
1
+ import { type CLIContext } from '../core.js';
2
2
  export declare function forgetCommand(ctx: CLIContext, id: string, opts?: {
3
3
  json?: boolean;
4
+ global?: boolean;
4
5
  }): Promise<void>;
5
6
  //# sourceMappingURL=forget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"forget.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/forget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,GAAE;IACrE,IAAI,CAAC,EAAE,OAAO,CAAC;CACX,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBrB"}
1
+ {"version":3,"file":"forget.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/forget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAGhE,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,GAAE;IACrE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CACb,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BrB"}
@@ -1,11 +1,15 @@
1
+ import { getScopedMemoryDb } from '../core.js';
1
2
  import { Output } from '../output.js';
2
3
  export async function forgetCommand(ctx, id, opts = {}) {
3
- const result = ctx.memoryDb.forget(id);
4
+ const memoryDb = getScopedMemoryDb(ctx, opts);
5
+ const scope = memoryDb.getScope();
6
+ const result = memoryDb.forget(id);
4
7
  if (result.ok) {
5
8
  if (opts.json) {
6
9
  Output.json({
7
10
  ok: true,
8
11
  id,
12
+ scope,
9
13
  message: result.message || null,
10
14
  });
11
15
  return;
@@ -17,6 +21,7 @@ export async function forgetCommand(ctx, id, opts = {}) {
17
21
  Output.json({
18
22
  ok: false,
19
23
  id,
24
+ scope,
20
25
  error: result.message || `Memory not found: ${id}`,
21
26
  });
22
27
  process.exit(1);
@@ -1 +1 @@
1
- {"version":3,"file":"forget.js","sourceRoot":"","sources":["../../../src/cli/commands/forget.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAe,EAAE,EAAU,EAAE,OAE7D,EAAE;IACJ,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAEvC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,IAAI;gBACR,EAAE;gBACF,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;aAChC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,KAAK;gBACT,EAAE;gBACF,KAAK,EAAE,MAAM,CAAC,OAAO,IAAI,qBAAqB,EAAE,EAAE;aACnD,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,qBAAqB,EAAE,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"forget.js","sourceRoot":"","sources":["../../../src/cli/commands/forget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAe,EAAE,EAAU,EAAE,OAG7D,EAAE;IACJ,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAEnC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,IAAI;gBACR,EAAE;gBACF,KAAK;gBACL,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;aAChC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,KAAK;gBACT,EAAE;gBACF,KAAK;gBACL,KAAK,EAAE,MAAM,CAAC,OAAO,IAAI,qBAAqB,EAAE,EAAE;aACnD,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,qBAAqB,EAAE,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -1,5 +1,6 @@
1
- import type { CLIContext } from '../core.js';
1
+ import { type CLIContext } from '../core.js';
2
2
  export declare function getCommand(ctx: CLIContext, id: string, opts?: {
3
3
  json?: boolean;
4
+ global?: boolean;
4
5
  }): Promise<void>;
5
6
  //# sourceMappingURL=get.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/get.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAsB,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,GAAE;IAClE,IAAI,CAAC,EAAE,OAAO,CAAC;CACX,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCrB"}
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAGhE,wBAAsB,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,GAAE;IAClE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CACb,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCrB"}
@@ -1,17 +1,21 @@
1
+ import { getScopedMemoryDb } from '../core.js';
1
2
  import { Output } from '../output.js';
2
3
  export async function getCommand(ctx, id, opts = {}) {
3
- const memory = ctx.memoryDb.get(id);
4
+ const memoryDb = getScopedMemoryDb(ctx, opts);
5
+ const scope = memoryDb.getScope();
6
+ const memory = memoryDb.get(id);
4
7
  if (!memory) {
5
8
  Output.error(`Memory not found: ${id}`);
6
9
  process.exit(1);
7
10
  }
8
11
  if (opts.json) {
9
- Output.json(memory);
12
+ Output.json({ ...memory, scope });
10
13
  return;
11
14
  }
12
15
  Output.header('Memory Details');
13
16
  console.log('');
14
17
  Output.info(`ID: ${memory.id}`);
18
+ Output.info(`Scope: ${scope}`);
15
19
  Output.info(`Summary: ${memory.summary}`);
16
20
  Output.info(`Importance: ${memory.importance}`);
17
21
  Output.info(`Created: ${new Date(memory.created_at).toLocaleString()}`);
@@ -1 +1 @@
1
- {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/cli/commands/get.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAe,EAAE,EAAU,EAAE,OAE1D,EAAE;IACJ,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEpC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO;IACT,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7C,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAChD,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAC3E,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAE3E,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/cli/commands/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAe,EAAE,EAAU,EAAE,OAG1D,EAAE;IACJ,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAClC,OAAO;IACT,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,CAAC,IAAI,CAAC,eAAe,KAAK,EAAE,CAAC,CAAC;IACpC,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7C,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAChD,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAC3E,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAE3E,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAK7C,wBAAsB,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDhB"}
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAM7C,wBAAsB,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CA6JhB"}
@@ -1,56 +1,140 @@
1
1
  import { Output } from '../output.js';
2
2
  import path from 'path';
3
- import fs from 'fs-extra';
3
+ import fs from 'node:fs';
4
+ import crypto from 'crypto';
4
5
  export async function migrateCommand(ctx, opts) {
5
6
  const kratosHome = opts.from || path.join(process.env.HOME || process.env.USERPROFILE || '', '.kratos');
6
7
  const projectsDir = path.join(kratosHome, 'projects');
7
8
  Output.header('Kratos Data Migration');
8
- if (!await fs.pathExists(projectsDir)) {
9
+ if (!fs.existsSync(projectsDir)) {
9
10
  Output.warn('No existing data found at: ' + projectsDir);
10
11
  Output.dim('If your data is elsewhere, use --from <path>');
11
12
  return;
12
13
  }
13
- const entries = await fs.readdir(projectsDir);
14
+ const entries = fs.readdirSync(projectsDir);
14
15
  let totalMemories = 0;
15
16
  let totalProjects = 0;
17
+ let mergedCount = 0;
18
+ // Build map: canonical (lowercase) project ID → project root
19
+ // Then find orphans: projects whose ID doesn't match the canonical hash of their root
20
+ const Database = (await import('better-sqlite3')).default;
21
+ const orphans = [];
16
22
  for (const entry of entries) {
17
- const dbPath = path.join(projectsDir, entry, 'databases', 'memories.db');
18
23
  const projectJsonPath = path.join(projectsDir, entry, 'project.json');
19
- if (!await fs.pathExists(dbPath))
24
+ const dbPath = path.join(projectsDir, entry, 'databases', 'memories.db');
25
+ if (!fs.existsSync(projectJsonPath))
20
26
  continue;
21
- totalProjects++;
22
- // Read project metadata
23
- let projectName = entry;
27
+ let meta;
24
28
  try {
25
- if (await fs.pathExists(projectJsonPath)) {
26
- const meta = await fs.readJson(projectJsonPath);
27
- projectName = meta.name || entry;
28
- }
29
+ meta = JSON.parse(fs.readFileSync(projectJsonPath, 'utf-8'));
29
30
  }
30
31
  catch {
31
- // Use directory name
32
+ continue;
32
33
  }
33
- // Count memories in the database
34
- try {
35
- const Database = (await import('better-sqlite3')).default;
36
- const db = new Database(dbPath, { readonly: true });
37
- const row = db.prepare('SELECT COUNT(*) as count FROM memories').get();
38
- totalMemories += row.count;
39
- db.close();
40
- Output.success(`${projectName}: ${row.count} memories found`);
34
+ const root = meta.root;
35
+ if (!root)
36
+ continue;
37
+ // Compute canonical ID (lowercase path hash the correct one)
38
+ const canonicalHash = crypto.createHash('sha256')
39
+ .update(root.toLowerCase())
40
+ .digest('hex');
41
+ const canonicalId = `proj_${canonicalHash.substring(0, 12)}`;
42
+ totalProjects++;
43
+ // Count memories
44
+ if (fs.existsSync(dbPath)) {
45
+ try {
46
+ const db = new Database(dbPath, { readonly: true });
47
+ const row = db.prepare('SELECT COUNT(*) as count FROM memories').get();
48
+ totalMemories += row.count;
49
+ db.close();
50
+ }
51
+ catch { /* skip */ }
52
+ }
53
+ // If this project's folder name doesn't match canonical ID, it's an orphan
54
+ if (entry !== canonicalId && fs.existsSync(dbPath)) {
55
+ orphans.push({ dir: entry, name: meta.name || entry, root, canonicalId });
41
56
  }
42
- catch (error) {
43
- Output.warn(`${projectName}: could not read database`);
57
+ }
58
+ if (orphans.length > 0) {
59
+ Output.header('Merging Orphaned Projects');
60
+ Output.dim(`Found ${orphans.length} orphaned project(s) from case-sensitive ID change`);
61
+ console.log('');
62
+ for (const orphan of orphans) {
63
+ const orphanDbPath = path.join(projectsDir, orphan.dir, 'databases', 'memories.db');
64
+ const canonicalDir = path.join(projectsDir, orphan.canonicalId);
65
+ const canonicalDbDir = path.join(canonicalDir, 'databases');
66
+ const canonicalDbPath = path.join(canonicalDbDir, 'memories.db');
67
+ try {
68
+ const srcDb = new Database(orphanDbPath, { readonly: true });
69
+ const memories = srcDb.prepare('SELECT * FROM memories').all();
70
+ srcDb.close();
71
+ if (memories.length === 0) {
72
+ Output.dim(` ${orphan.name} (${orphan.dir}): empty, skipping`);
73
+ continue;
74
+ }
75
+ // Ensure canonical project directory exists
76
+ fs.mkdirSync(canonicalDbDir, { recursive: true });
77
+ // Write project.json if missing
78
+ const canonicalPjPath = path.join(canonicalDir, 'project.json');
79
+ if (!fs.existsSync(canonicalPjPath)) {
80
+ fs.writeFileSync(canonicalPjPath, JSON.stringify({
81
+ id: orphan.canonicalId,
82
+ name: orphan.name,
83
+ root: orphan.root,
84
+ createdAt: new Date(),
85
+ lastAccessed: new Date(),
86
+ }, null, 2));
87
+ }
88
+ // Open or create canonical DB and copy memories
89
+ const dstDb = new Database(canonicalDbPath);
90
+ dstDb.pragma('journal_mode = WAL');
91
+ // Ensure schema exists
92
+ dstDb.exec(`
93
+ CREATE TABLE IF NOT EXISTS memories (
94
+ id TEXT PRIMARY KEY,
95
+ project_id TEXT NOT NULL,
96
+ summary TEXT NOT NULL,
97
+ text TEXT NOT NULL,
98
+ tags TEXT DEFAULT '[]',
99
+ paths TEXT DEFAULT '[]',
100
+ importance INTEGER DEFAULT 3,
101
+ created_at INTEGER NOT NULL,
102
+ updated_at INTEGER NOT NULL,
103
+ ttl INTEGER,
104
+ expires_at INTEGER,
105
+ dedupe_hash TEXT
106
+ )
107
+ `);
108
+ const insert = dstDb.prepare(`
109
+ INSERT OR IGNORE INTO memories (id, project_id, summary, text, tags, paths, importance, created_at, updated_at, ttl, expires_at, dedupe_hash)
110
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
111
+ `);
112
+ let copied = 0;
113
+ for (const mem of memories) {
114
+ const result = insert.run(mem.id, orphan.canonicalId, mem.summary, mem.text, mem.tags, mem.paths, mem.importance, mem.created_at, mem.updated_at, mem.ttl, mem.expires_at, mem.dedupe_hash);
115
+ if (result.changes > 0)
116
+ copied++;
117
+ }
118
+ dstDb.close();
119
+ mergedCount += copied;
120
+ Output.success(` ${orphan.name}: merged ${copied}/${memories.length} memories → ${orphan.canonicalId}`);
121
+ }
122
+ catch (error) {
123
+ Output.warn(` ${orphan.name}: merge failed — ${error instanceof Error ? error.message : 'unknown error'}`);
124
+ }
44
125
  }
45
126
  }
46
127
  console.log('');
47
128
  Output.header('Migration Summary');
48
129
  Output.info(`Projects found: ${totalProjects}`);
49
130
  Output.info(`Total memories: ${totalMemories}`);
131
+ if (mergedCount > 0) {
132
+ Output.success(`Merged memories: ${mergedCount}`);
133
+ }
50
134
  Output.info(`Data location: ${projectsDir}`);
51
- console.log('');
52
- Output.success('Your data is already compatible with the CLI!');
53
- Output.dim('The CLI reads from the same database files — no data copy needed.');
54
- Output.dim('All project isolation is preserved. Each project has its own database.');
135
+ if (orphans.length === 0) {
136
+ console.log('');
137
+ Output.success('All projects are using canonical IDs. No migration needed.');
138
+ }
55
139
  }
56
140
  //# sourceMappingURL=migrate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/cli/commands/migrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/cli/commands/migrate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAe,EAAE,IAErD;IACC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IACxG,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAEtD,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAEvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,6BAA6B,GAAG,WAAW,CAAC,CAAC;QACzD,MAAM,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QAC3D,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,6DAA6D;IAC7D,sFAAsF;IACtF,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1D,MAAM,OAAO,GAAuE,EAAE,CAAC;IAEvF,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;QAEzE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC;YAAE,SAAS;QAE9C,IAAI,IAAS,CAAC;QACd,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC;QAErB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,IAAI;YAAE,SAAS;QAEpB,+DAA+D;QAC/D,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;aAC9C,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;aAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;QACjB,MAAM,WAAW,GAAG,QAAQ,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAE7D,aAAa,EAAE,CAAC;QAEhB,iBAAiB;QACjB,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpD,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,EAAuB,CAAC;gBAC5F,aAAa,IAAI,GAAG,CAAC,KAAK,CAAC;gBAC3B,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,CAAC;YAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;QACxB,CAAC;QAED,2EAA2E;QAC3E,IAAI,KAAK,KAAK,WAAW,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;QAC3C,MAAM,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,MAAM,oDAAoD,CAAC,CAAC;QACxF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;YACpF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;YAChE,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YAC5D,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;YAEjE,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7D,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,GAAG,EAAW,CAAC;gBACxE,KAAK,CAAC,KAAK,EAAE,CAAC;gBAEd,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1B,MAAM,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,GAAG,oBAAoB,CAAC,CAAC;oBAChE,SAAS;gBACX,CAAC;gBAED,4CAA4C;gBAC5C,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAElD,gCAAgC;gBAChC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;gBAChE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;oBACpC,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC;wBAC/C,EAAE,EAAE,MAAM,CAAC,WAAW;wBACtB,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,SAAS,EAAE,IAAI,IAAI,EAAE;wBACrB,YAAY,EAAE,IAAI,IAAI,EAAE;qBACzB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACf,CAAC;gBAED,gDAAgD;gBAChD,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAC;gBAC5C,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBAEnC,uBAAuB;gBACvB,KAAK,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;SAeV,CAAC,CAAC;gBAEH,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;;;SAG5B,CAAC,CAAC;gBAEH,IAAI,MAAM,GAAG,CAAC,CAAC;gBACf,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;oBAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CACvB,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EACjD,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,UAAU,EACnC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EACvD,GAAG,CAAC,WAAW,CAChB,CAAC;oBACF,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC;wBAAE,MAAM,EAAE,CAAC;gBACnC,CAAC;gBAED,KAAK,CAAC,KAAK,EAAE,CAAC;gBACd,WAAW,IAAI,MAAM,CAAC;gBAEtB,MAAM,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,IAAI,YAAY,MAAM,IAAI,QAAQ,CAAC,MAAM,eAAe,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YAC3G,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,oBAAoB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;YAC9G,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACnC,MAAM,CAAC,IAAI,CAAC,oBAAoB,aAAa,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,IAAI,CAAC,oBAAoB,aAAa,EAAE,CAAC,CAAC;IACjD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,CAAC,OAAO,CAAC,oBAAoB,WAAW,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,oBAAoB,WAAW,EAAE,CAAC,CAAC;IAE/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,CAAC,OAAO,CAAC,4DAA4D,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC"}
@@ -1,6 +1,7 @@
1
- import type { CLIContext } from '../core.js';
1
+ import { type CLIContext } from '../core.js';
2
2
  export declare function pinCommand(ctx: CLIContext, id: string, opts: {
3
3
  unpin?: boolean;
4
4
  json?: boolean;
5
+ global?: boolean;
5
6
  }): Promise<void>;
6
7
  //# sourceMappingURL=pin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pin.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/pin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAsB,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;IAClE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BhB"}
1
+ {"version":3,"file":"pin.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/pin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAGhE,wBAAsB,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;IAClE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgChB"}
@@ -1,12 +1,16 @@
1
+ import { getScopedMemoryDb } from '../core.js';
1
2
  import { Output } from '../output.js';
2
3
  export async function pinCommand(ctx, id, opts) {
4
+ const memoryDb = getScopedMemoryDb(ctx, opts);
5
+ const scope = memoryDb.getScope();
3
6
  const pinned = !opts.unpin;
4
- const result = ctx.memoryDb.pin(id, pinned);
7
+ const result = memoryDb.pin(id, pinned);
5
8
  if (result.ok) {
6
9
  if (opts.json) {
7
10
  Output.json({
8
11
  ok: true,
9
12
  id,
13
+ scope,
10
14
  pinned,
11
15
  message: result.message || null,
12
16
  });
@@ -19,6 +23,7 @@ export async function pinCommand(ctx, id, opts) {
19
23
  Output.json({
20
24
  ok: false,
21
25
  id,
26
+ scope,
22
27
  pinned,
23
28
  error: result.message || 'Pin failed',
24
29
  });
@@ -1 +1 @@
1
- {"version":3,"file":"pin.js","sourceRoot":"","sources":["../../../src/cli/commands/pin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAe,EAAE,EAAU,EAAE,IAG7D;IACC,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3B,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAE5C,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,IAAI;gBACR,EAAE;gBACF,MAAM;gBACN,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;aAChC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAQ,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,KAAK;gBACT,EAAE;gBACF,MAAM;gBACN,KAAK,EAAE,MAAM,CAAC,OAAO,IAAI,YAAY;aACtC,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,YAAY,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"pin.js","sourceRoot":"","sources":["../../../src/cli/commands/pin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAe,EAAE,EAAU,EAAE,IAI7D;IACC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAExC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,IAAI;gBACR,EAAE;gBACF,KAAK;gBACL,MAAM;gBACN,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;aAChC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAQ,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,KAAK;gBACT,EAAE;gBACF,KAAK;gBACL,MAAM;gBACN,KAAK,EAAE,MAAM,CAAC,OAAO,IAAI,YAAY;aACtC,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,YAAY,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -1,7 +1,8 @@
1
- import type { CLIContext } from '../core.js';
1
+ import { type CLIContext } from '../core.js';
2
2
  export declare function recentCommand(ctx: CLIContext, opts: {
3
3
  limit?: string;
4
4
  pathPrefix?: string;
5
5
  json?: boolean;
6
+ global?: boolean;
6
7
  }): Promise<void>;
7
8
  //# sourceMappingURL=recent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"recent.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/recent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BhB"}
1
+ {"version":3,"file":"recent.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/recent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAGhE,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkChB"}
@@ -1,15 +1,19 @@
1
+ import { getScopedMemoryDb } from '../core.js';
1
2
  import { Output } from '../output.js';
2
3
  export async function recentCommand(ctx, opts) {
4
+ const memoryDb = getScopedMemoryDb(ctx, opts);
5
+ const scope = memoryDb.getScope();
3
6
  const k = opts.limit ? parseInt(opts.limit, 10) : 10;
4
- const memories = ctx.memoryDb.getRecent({
7
+ const memories = memoryDb.getRecent({
5
8
  k,
6
9
  path_prefix: opts.pathPrefix,
7
10
  });
8
11
  if (opts.json) {
9
12
  Output.json({
13
+ scope,
10
14
  project: ctx.project.name,
11
15
  count: memories.length,
12
- memories,
16
+ memories: memories.map(memory => ({ ...memory, scope })),
13
17
  });
14
18
  return;
15
19
  }
@@ -23,6 +27,7 @@ export async function recentCommand(ctx, opts) {
23
27
  paths: m.paths,
24
28
  importance: m.importance,
25
29
  created_at: m.created_at,
30
+ scope,
26
31
  });
27
32
  }
28
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"recent.js","sourceRoot":"","sources":["../../../src/cli/commands/recent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAe,EAAE,IAIpD;IACC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAErD,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;QACtC,CAAC;QACD,WAAW,EAAE,IAAI,CAAC,UAAU;KAC7B,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC;YACV,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI;YACzB,KAAK,EAAE,QAAQ,CAAC,MAAM;YACtB,QAAQ;SACT,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,oBAAoB,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IACvD,MAAM,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;IAEhE,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,CAAC,UAAU,CAAC;YAChB,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,UAAU,EAAE,CAAC,CAAC,UAAU;SACzB,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"recent.js","sourceRoot":"","sources":["../../../src/cli/commands/recent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAe,EAAE,IAKpD;IACC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAClC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAErD,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC;QAClC,CAAC;QACD,WAAW,EAAE,IAAI,CAAC,UAAU;KAC7B,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC;YACV,KAAK;YACL,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI;YACzB,KAAK,EAAE,QAAQ,CAAC,MAAM;YACtB,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;SACzD,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,oBAAoB,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IACvD,MAAM,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;IAEhE,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,CAAC,UAAU,CAAC;YAChB,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,KAAK;SACN,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -1,9 +1,10 @@
1
- import type { CLIContext } from '../core.js';
1
+ import { type CLIContext } from '../core.js';
2
2
  export declare function saveCommand(ctx: CLIContext, text: string, opts: {
3
3
  tags?: string;
4
4
  paths?: string;
5
5
  importance?: string;
6
6
  compress?: boolean;
7
7
  json?: boolean;
8
+ global?: boolean;
8
9
  }): Promise<void>;
9
10
  //# sourceMappingURL=save.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"save.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/save.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAsB,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8DhB"}
1
+ {"version":3,"file":"save.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/save.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAGhE,wBAAsB,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoEhB"}
@@ -1,5 +1,8 @@
1
+ import { getScopedMemoryDb } from '../core.js';
1
2
  import { Output } from '../output.js';
2
3
  export async function saveCommand(ctx, text, opts) {
4
+ const memoryDb = getScopedMemoryDb(ctx, opts);
5
+ const scope = memoryDb.getScope();
3
6
  const tags = opts.tags ? opts.tags.split(',').map(t => t.trim()) : [];
4
7
  const paths = opts.paths ? opts.paths.split(',').map(p => p.trim()) : [];
5
8
  const importance = opts.importance ? parseInt(opts.importance, 10) : 3;
@@ -20,7 +23,7 @@ export async function saveCommand(ctx, text, opts) {
20
23
  Output.warn('Compression failed, using raw text');
21
24
  }
22
25
  }
23
- const result = ctx.memoryDb.save({
26
+ const result = memoryDb.save({
24
27
  summary,
25
28
  text: fullText,
26
29
  tags,
@@ -32,6 +35,7 @@ export async function saveCommand(ctx, text, opts) {
32
35
  Output.json({
33
36
  ok: true,
34
37
  id,
38
+ scope,
35
39
  project: ctx.project.name,
36
40
  summary,
37
41
  text: fullText,
@@ -48,12 +52,15 @@ export async function saveCommand(ctx, text, opts) {
48
52
  return;
49
53
  }
50
54
  if (scanResult.hasPII || scanResult.hasSecrets) {
51
- Output.warn('PII or secrets detected in memory text. Saving anyway.');
55
+ const warningMessage = scope === 'global'
56
+ ? 'PII or secrets detected. Global memories are visible across ALL projects. Saving anyway.'
57
+ : 'PII or secrets detected in memory text. Saving anyway.';
58
+ Output.warn(warningMessage);
52
59
  for (const finding of scanResult.findings) {
53
60
  Output.dim(` - ${finding.pattern} (${finding.type}, confidence: ${finding.confidence}) -> ${finding.redacted}`);
54
61
  }
55
62
  }
56
63
  Output.success(`Memory saved: ${id}`);
57
- Output.dim(`Project: ${ctx.project.name} | Tags: ${tags.join(', ') || 'none'} | Importance: ${importance}`);
64
+ Output.dim(`${scope === 'global' ? 'Scope: global' : `Project: ${ctx.project.name}`} | Tags: ${tags.join(', ') || 'none'} | Importance: ${importance}`);
58
65
  }
59
66
  //# sourceMappingURL=save.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"save.js","sourceRoot":"","sources":["../../../src/cli/commands/save.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"save.js","sourceRoot":"","sources":["../../../src/cli/commands/save.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
- import type { CLIContext } from '../core.js';
1
+ import { type CLIContext } from '../core.js';
2
2
  export declare function searchCommand(ctx: CLIContext, query: string, opts: {
3
3
  limit?: string;
4
4
  tags?: string;
5
5
  debug?: boolean;
6
6
  pathMatch?: boolean;
7
7
  json?: boolean;
8
+ global?: boolean;
8
9
  }): Promise<void>;
9
10
  //# sourceMappingURL=search.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDhB"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAIhE,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuDhB"}