@ubundi/openclaw-cortex 0.3.7 → 0.5.0

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 (89) hide show
  1. package/README.md +53 -53
  2. package/dist/{cortex → adapters/cortex}/client.d.ts +51 -0
  3. package/dist/adapters/cortex/client.d.ts.map +1 -0
  4. package/dist/{cortex → adapters/cortex}/client.js +54 -2
  5. package/dist/adapters/cortex/client.js.map +1 -0
  6. package/dist/features/capture/handler.d.ts +16 -12
  7. package/dist/features/capture/handler.d.ts.map +1 -1
  8. package/dist/features/capture/handler.js +64 -20
  9. package/dist/features/capture/handler.js.map +1 -1
  10. package/dist/features/recall/formatter.d.ts +2 -2
  11. package/dist/features/recall/formatter.d.ts.map +1 -1
  12. package/dist/features/recall/formatter.js +3 -3
  13. package/dist/features/recall/formatter.js.map +1 -1
  14. package/dist/features/recall/handler.d.ts +10 -4
  15. package/dist/features/recall/handler.d.ts.map +1 -1
  16. package/dist/features/recall/handler.js +25 -11
  17. package/dist/features/recall/handler.js.map +1 -1
  18. package/dist/features/sync/daily-logs-sync.d.ts +4 -3
  19. package/dist/features/sync/daily-logs-sync.d.ts.map +1 -1
  20. package/dist/features/sync/daily-logs-sync.js +13 -7
  21. package/dist/features/sync/daily-logs-sync.js.map +1 -1
  22. package/dist/features/sync/memory-md-sync.d.ts +4 -3
  23. package/dist/features/sync/memory-md-sync.d.ts.map +1 -1
  24. package/dist/features/sync/memory-md-sync.js +14 -8
  25. package/dist/features/sync/memory-md-sync.js.map +1 -1
  26. package/dist/features/sync/transcripts-sync.d.ts +4 -3
  27. package/dist/features/sync/transcripts-sync.d.ts.map +1 -1
  28. package/dist/features/sync/transcripts-sync.js +14 -8
  29. package/dist/features/sync/transcripts-sync.js.map +1 -1
  30. package/dist/features/sync/watcher.d.ts +4 -3
  31. package/dist/features/sync/watcher.d.ts.map +1 -1
  32. package/dist/features/sync/watcher.js +6 -4
  33. package/dist/features/sync/watcher.js.map +1 -1
  34. package/dist/index.d.ts +6 -7
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +6 -7
  37. package/dist/index.js.map +1 -1
  38. package/dist/internal/fs/safe-path.d.ts.map +1 -0
  39. package/dist/internal/fs/safe-path.js.map +1 -0
  40. package/dist/internal/identity/api-key.d.ts +7 -0
  41. package/dist/internal/identity/api-key.d.ts.map +1 -0
  42. package/dist/internal/identity/api-key.js +7 -0
  43. package/dist/internal/identity/api-key.js.map +1 -0
  44. package/dist/internal/identity/user-id.d.ts +8 -0
  45. package/dist/internal/identity/user-id.d.ts.map +1 -0
  46. package/dist/internal/identity/user-id.js +33 -0
  47. package/dist/internal/identity/user-id.js.map +1 -0
  48. package/dist/internal/metrics/latency-metrics.d.ts.map +1 -0
  49. package/dist/internal/metrics/latency-metrics.js.map +1 -0
  50. package/dist/internal/queue/retry-queue.d.ts.map +1 -0
  51. package/dist/internal/queue/retry-queue.js.map +1 -0
  52. package/dist/{shared → internal}/transcript/cleaner.d.ts +1 -1
  53. package/dist/internal/transcript/cleaner.d.ts.map +1 -0
  54. package/dist/internal/transcript/cleaner.js.map +1 -0
  55. package/dist/{core → plugin}/config/schema.d.ts +10 -29
  56. package/dist/plugin/config/schema.d.ts.map +1 -0
  57. package/dist/{core → plugin}/config/schema.js +2 -7
  58. package/dist/plugin/config/schema.js.map +1 -0
  59. package/dist/{core/plugin.d.ts → plugin/index.d.ts} +12 -11
  60. package/dist/plugin/index.d.ts.map +1 -0
  61. package/dist/{core/plugin.js → plugin/index.js} +63 -29
  62. package/dist/plugin/index.js.map +1 -0
  63. package/openclaw.plugin.json +17 -58
  64. package/package.json +2 -2
  65. package/dist/core/config/schema.d.ts.map +0 -1
  66. package/dist/core/config/schema.js.map +0 -1
  67. package/dist/core/plugin.d.ts.map +0 -1
  68. package/dist/core/plugin.js.map +0 -1
  69. package/dist/cortex/client.d.ts.map +0 -1
  70. package/dist/cortex/client.js.map +0 -1
  71. package/dist/features/reflect/service.d.ts +0 -19
  72. package/dist/features/reflect/service.d.ts.map +0 -1
  73. package/dist/features/reflect/service.js +0 -38
  74. package/dist/features/reflect/service.js.map +0 -1
  75. package/dist/shared/fs/safe-path.d.ts.map +0 -1
  76. package/dist/shared/fs/safe-path.js.map +0 -1
  77. package/dist/shared/metrics/latency-metrics.d.ts.map +0 -1
  78. package/dist/shared/metrics/latency-metrics.js.map +0 -1
  79. package/dist/shared/queue/retry-queue.d.ts.map +0 -1
  80. package/dist/shared/queue/retry-queue.js.map +0 -1
  81. package/dist/shared/transcript/cleaner.d.ts.map +0 -1
  82. package/dist/shared/transcript/cleaner.js.map +0 -1
  83. /package/dist/{shared → internal}/fs/safe-path.d.ts +0 -0
  84. /package/dist/{shared → internal}/fs/safe-path.js +0 -0
  85. /package/dist/{shared → internal}/metrics/latency-metrics.d.ts +0 -0
  86. /package/dist/{shared → internal}/metrics/latency-metrics.js +0 -0
  87. /package/dist/{shared → internal}/queue/retry-queue.d.ts +0 -0
  88. /package/dist/{shared → internal}/queue/retry-queue.js +0 -0
  89. /package/dist/{shared → internal}/transcript/cleaner.js +0 -0
@@ -0,0 +1,33 @@
1
+ import { readFile, writeFile, mkdir } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { homedir } from "node:os";
4
+ import { randomUUID } from "node:crypto";
5
+ const CONFIG_DIR = join(homedir(), ".openclaw");
6
+ const USER_ID_FILE = join(CONFIG_DIR, "cortex-user-id");
7
+ /**
8
+ * Loads the persistent Cortex user ID for this installation.
9
+ * If it doesn't exist yet, generates a new UUID, persists it, and returns it.
10
+ * The ID is stored at ~/.openclaw/cortex-user-id and survives across sessions
11
+ * and workspace changes.
12
+ */
13
+ export async function loadOrCreateUserId() {
14
+ try {
15
+ const existing = await readFile(USER_ID_FILE, "utf-8");
16
+ const trimmed = existing.trim();
17
+ if (trimmed.length > 0)
18
+ return trimmed;
19
+ }
20
+ catch {
21
+ // File doesn't exist yet — create it
22
+ }
23
+ const newId = randomUUID();
24
+ try {
25
+ await mkdir(CONFIG_DIR, { recursive: true });
26
+ await writeFile(USER_ID_FILE, newId, "utf-8");
27
+ }
28
+ catch {
29
+ // If we can't persist it, still return a generated ID for this session
30
+ }
31
+ return newId;
32
+ }
33
+ //# sourceMappingURL=user-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-id.js","sourceRoot":"","sources":["../../../src/internal/identity/user-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AAChD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;AAExD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,OAAO,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,qCAAqC;IACvC,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,SAAS,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,uEAAuE;IACzE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"latency-metrics.d.ts","sourceRoot":"","sources":["../../../src/internal/metrics/latency-metrics.ts"],"names":[],"mappings":"AAEA,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,UAAU,CAAS;gBAEf,UAAU,SAAsB;IAI5C,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAOhC,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQpC,IAAI,GAAG,IAAI,MAAM,GAAG,IAAI,CAEvB;IAED,IAAI,GAAG,IAAI,MAAM,GAAG,IAAI,CAEvB;IAED,IAAI,GAAG,IAAI,MAAM,GAAG,IAAI,CAEvB;IAED,OAAO,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;IASxF,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"latency-metrics.js","sourceRoot":"","sources":["../../../src/internal/metrics/latency-metrics.ts"],"names":[],"mappings":"AAAA,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC,MAAM,OAAO,cAAc;IACjB,OAAO,GAAa,EAAE,CAAC;IACvB,UAAU,CAAS;IAE3B,YAAY,UAAU,GAAG,mBAAmB;QAC1C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,UAAkB;QACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC1C,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,UAAU,CAAC,CAAS;QAClB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAE3C,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO;QACL,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC;IACJ,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;CACF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry-queue.d.ts","sourceRoot":"","sources":["../../../src/internal/queue/retry-queue.ts"],"names":[],"mappings":"AAAA,KAAK,MAAM,GAAG;IACZ,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CACjC,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AAQD,qBAAa,UAAU;IAQnB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,WAAW;IATrB,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,UAAU,CAAS;gBAGjB,MAAM,EAAE,MAAM,EACd,UAAU,SAAc,EACxB,WAAW,SAAe;IAGpC,KAAK,IAAI,IAAI;IAOb,IAAI,IAAI,IAAI;IAcZ,OAAO,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAmC3D,IAAI,OAAO,IAAI,MAAM,CAEpB;YAEa,KAAK;IAwCnB,OAAO,CAAC,MAAM;CAOf"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry-queue.js","sourceRoot":"","sources":["../../../src/internal/queue/retry-queue.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ConversationMessage } from "../../cortex/client.js";
1
+ import type { ConversationMessage } from "../../adapters/cortex/client.js";
2
2
  /**
3
3
  * Clean a raw JSONL transcript into a conversation suitable for Cortex ingestion.
4
4
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleaner.d.ts","sourceRoot":"","sources":["../../../src/internal/transcript/cleaner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAkE3E;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,EAAE,CA2BxE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG;IACtD,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,cAAc,EAAE,OAAO,CAAC;CACzB,CAQA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleaner.js","sourceRoot":"","sources":["../../../src/internal/transcript/cleaner.ts"],"names":[],"mappings":"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"}
@@ -1,46 +1,33 @@
1
1
  import { z } from "zod";
2
- export declare const RecallMode: z.ZodEnum<["fast", "balanced", "full"]>;
3
- export type RecallMode = z.infer<typeof RecallMode>;
4
- export declare const RecallQueryType: z.ZodEnum<["factual", "emotional", "combined"]>;
5
- export type RecallQueryType = z.infer<typeof RecallQueryType>;
6
2
  export declare const CortexConfigSchema: z.ZodObject<{
7
- apiKey: z.ZodString;
8
3
  baseUrl: z.ZodDefault<z.ZodEffects<z.ZodString, string, string>>;
4
+ userId: z.ZodOptional<z.ZodString>;
9
5
  autoRecall: z.ZodDefault<z.ZodBoolean>;
10
6
  autoCapture: z.ZodDefault<z.ZodBoolean>;
11
- recallTopK: z.ZodDefault<z.ZodNumber>;
7
+ recallLimit: z.ZodDefault<z.ZodNumber>;
12
8
  recallTimeoutMs: z.ZodDefault<z.ZodNumber>;
13
- recallMode: z.ZodDefault<z.ZodEnum<["fast", "balanced", "full"]>>;
14
- recallQueryType: z.ZodDefault<z.ZodEnum<["factual", "emotional", "combined"]>>;
15
9
  fileSync: z.ZodDefault<z.ZodBoolean>;
16
10
  transcriptSync: z.ZodDefault<z.ZodBoolean>;
17
- reflectIntervalMs: z.ZodDefault<z.ZodNumber>;
18
11
  namespace: z.ZodDefault<z.ZodString>;
19
12
  }, "strip", z.ZodTypeAny, {
20
- apiKey: string;
21
13
  baseUrl: string;
22
14
  autoRecall: boolean;
23
15
  autoCapture: boolean;
24
- recallTopK: number;
16
+ recallLimit: number;
25
17
  recallTimeoutMs: number;
26
- recallMode: "fast" | "balanced" | "full";
27
- recallQueryType: "factual" | "emotional" | "combined";
28
18
  fileSync: boolean;
29
19
  transcriptSync: boolean;
30
- reflectIntervalMs: number;
31
20
  namespace: string;
21
+ userId?: string | undefined;
32
22
  }, {
33
- apiKey: string;
34
23
  baseUrl?: string | undefined;
24
+ userId?: string | undefined;
35
25
  autoRecall?: boolean | undefined;
36
26
  autoCapture?: boolean | undefined;
37
- recallTopK?: number | undefined;
27
+ recallLimit?: number | undefined;
38
28
  recallTimeoutMs?: number | undefined;
39
- recallMode?: "fast" | "balanced" | "full" | undefined;
40
- recallQueryType?: "factual" | "emotional" | "combined" | undefined;
41
29
  fileSync?: boolean | undefined;
42
30
  transcriptSync?: boolean | undefined;
43
- reflectIntervalMs?: number | undefined;
44
31
  namespace?: string | undefined;
45
32
  }>;
46
33
  export type CortexConfig = z.infer<typeof CortexConfigSchema>;
@@ -50,31 +37,25 @@ export type CortexConfig = z.infer<typeof CortexConfigSchema>;
50
37
  */
51
38
  export declare const configSchema: {
52
39
  safeParse(value: unknown): z.SafeParseReturnType<{
53
- apiKey: string;
54
40
  baseUrl?: string | undefined;
41
+ userId?: string | undefined;
55
42
  autoRecall?: boolean | undefined;
56
43
  autoCapture?: boolean | undefined;
57
- recallTopK?: number | undefined;
44
+ recallLimit?: number | undefined;
58
45
  recallTimeoutMs?: number | undefined;
59
- recallMode?: "fast" | "balanced" | "full" | undefined;
60
- recallQueryType?: "factual" | "emotional" | "combined" | undefined;
61
46
  fileSync?: boolean | undefined;
62
47
  transcriptSync?: boolean | undefined;
63
- reflectIntervalMs?: number | undefined;
64
48
  namespace?: string | undefined;
65
49
  }, {
66
- apiKey: string;
67
50
  baseUrl: string;
68
51
  autoRecall: boolean;
69
52
  autoCapture: boolean;
70
- recallTopK: number;
53
+ recallLimit: number;
71
54
  recallTimeoutMs: number;
72
- recallMode: "fast" | "balanced" | "full";
73
- recallQueryType: "factual" | "emotional" | "combined";
74
55
  fileSync: boolean;
75
56
  transcriptSync: boolean;
76
- reflectIntervalMs: number;
77
57
  namespace: string;
58
+ userId?: string | undefined;
78
59
  }>;
79
60
  };
80
61
  //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/plugin/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAwBxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAY7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;;GAGG;AACH,eAAO,MAAM,YAAY;qBACN,OAAO;;;;;;;;;;;;;;;;;;;;;CAGzB,CAAC"}
@@ -1,6 +1,4 @@
1
1
  import { z } from "zod";
2
- export const RecallMode = z.enum(["fast", "balanced", "full"]);
3
- export const RecallQueryType = z.enum(["factual", "emotional", "combined"]);
4
2
  /**
5
3
  * Validates that a URL uses HTTPS, with an exception for localhost in development.
6
4
  */
@@ -19,17 +17,14 @@ const httpsUrl = z
19
17
  return false;
20
18
  }, { message: "baseUrl must use HTTPS (http allowed only for localhost)" });
21
19
  export const CortexConfigSchema = z.object({
22
- apiKey: z.string().min(1, "apiKey is required"),
23
20
  baseUrl: httpsUrl.default("https://q5p64iw9c9.execute-api.us-east-1.amazonaws.com/prod"),
21
+ userId: z.string().min(1).optional(),
24
22
  autoRecall: z.boolean().default(true),
25
23
  autoCapture: z.boolean().default(true),
26
- recallTopK: z.number().int().min(1).max(20).default(5),
24
+ recallLimit: z.number().int().min(1).max(50).default(10),
27
25
  recallTimeoutMs: z.number().int().min(100).max(10000).default(2000),
28
- recallMode: RecallMode.default("fast"),
29
- recallQueryType: RecallQueryType.default("combined"),
30
26
  fileSync: z.boolean().default(true),
31
27
  transcriptSync: z.boolean().default(true),
32
- reflectIntervalMs: z.number().int().min(0).default(3_600_000),
33
28
  namespace: z.string().min(1).default("openclaw"),
34
29
  });
35
30
  /**
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/plugin/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,QAAQ,GAAG,CAAC;KACf,MAAM,EAAE;KACR,GAAG,CAAC,6BAA6B,CAAC;KAClC,MAAM,CACL,CAAC,GAAG,EAAE,EAAE;IACN,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC9C,wDAAwD;IACxD,IACE,MAAM,CAAC,QAAQ,KAAK,OAAO;QAC3B,CAAC,MAAM,CAAC,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAC,EACpE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,EACD,EAAE,OAAO,EAAE,0DAA0D,EAAE,CACxE,CAAC;AAEJ,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,QAAQ,CAAC,OAAO,CACvB,6DAA6D,CAC9D;IACD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACpC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACrC,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACtC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACxD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACnE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACnC,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACzC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;CACjD,CAAC,CAAC;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,SAAS,CAAC,KAAc;QACtB,OAAO,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;CACF,CAAC"}
@@ -1,3 +1,10 @@
1
+ export interface KnowledgeState {
2
+ hasMemories: boolean;
3
+ totalSessions: number;
4
+ maturity: "cold" | "warming" | "mature" | "unknown";
5
+ lastChecked: number;
6
+ }
7
+ export declare function deriveTier(totalSessions: number): 1 | 2 | 3;
1
8
  interface PluginApi {
2
9
  pluginConfig?: Record<string, unknown>;
3
10
  logger: {
@@ -27,34 +34,28 @@ declare const plugin: {
27
34
  kind: "memory";
28
35
  configSchema: {
29
36
  safeParse(value: unknown): import("zod").SafeParseReturnType<{
30
- apiKey: string;
31
37
  baseUrl?: string | undefined;
38
+ userId?: string | undefined;
32
39
  autoRecall?: boolean | undefined;
33
40
  autoCapture?: boolean | undefined;
34
- recallTopK?: number | undefined;
41
+ recallLimit?: number | undefined;
35
42
  recallTimeoutMs?: number | undefined;
36
- recallMode?: "fast" | "balanced" | "full" | undefined;
37
- recallQueryType?: "factual" | "emotional" | "combined" | undefined;
38
43
  fileSync?: boolean | undefined;
39
44
  transcriptSync?: boolean | undefined;
40
- reflectIntervalMs?: number | undefined;
41
45
  namespace?: string | undefined;
42
46
  }, {
43
- apiKey: string;
44
47
  baseUrl: string;
45
48
  autoRecall: boolean;
46
49
  autoCapture: boolean;
47
- recallTopK: number;
50
+ recallLimit: number;
48
51
  recallTimeoutMs: number;
49
- recallMode: "fast" | "balanced" | "full";
50
- recallQueryType: "factual" | "emotional" | "combined";
51
52
  fileSync: boolean;
52
53
  transcriptSync: boolean;
53
- reflectIntervalMs: number;
54
54
  namespace: string;
55
+ userId?: string | undefined;
55
56
  }>;
56
57
  };
57
58
  register(api: PluginApi): void;
58
59
  };
59
60
  export default plugin;
60
- //# sourceMappingURL=plugin.d.ts.map
61
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IACpD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAI3D;AAaD,UAAU,SAAS;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,MAAM,EAAE;QACN,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAC/B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;KACjC,CAAC;IACF,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3F,eAAe,CAAC,OAAO,EAAE;QACvB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE;YAAE,YAAY,CAAC,EAAE,MAAM,CAAA;SAAE,KAAK,IAAI,CAAC;QACjD,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE;YAAE,YAAY,CAAC,EAAE,MAAM,CAAA;SAAE,KAAK,IAAI,CAAC;KACjD,GAAG,IAAI,CAAC;CACV;AAuDD,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBASI,SAAS;CA+HxB,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -1,14 +1,22 @@
1
1
  import { basename } from "node:path";
2
- import { createHash } from "node:crypto";
2
+ import { createHash, randomUUID } from "node:crypto";
3
3
  import { version } from "../../package.json" with { type: "json" };
4
4
  import { CortexConfigSchema, configSchema } from "./config/schema.js";
5
- import { CortexClient } from "../cortex/client.js";
5
+ import { CortexClient } from "../adapters/cortex/client.js";
6
6
  import { createRecallHandler } from "../features/recall/handler.js";
7
7
  import { createCaptureHandler } from "../features/capture/handler.js";
8
8
  import { FileSyncWatcher } from "../features/sync/watcher.js";
9
- import { RetryQueue } from "../shared/queue/retry-queue.js";
10
- import { LatencyMetrics } from "../shared/metrics/latency-metrics.js";
11
- import { PeriodicReflect } from "../features/reflect/service.js";
9
+ import { RetryQueue } from "../internal/queue/retry-queue.js";
10
+ import { LatencyMetrics } from "../internal/metrics/latency-metrics.js";
11
+ import { loadOrCreateUserId } from "../internal/identity/user-id.js";
12
+ import { BAKED_API_KEY } from "../internal/identity/api-key.js";
13
+ export function deriveTier(totalSessions) {
14
+ if (totalSessions >= 30)
15
+ return 3;
16
+ if (totalSessions >= 15)
17
+ return 2;
18
+ return 1;
19
+ }
12
20
  /**
13
21
  * Derives a workspace-scoped namespace from the workspace directory path.
14
22
  * Uses the directory basename plus a short hash of the full path to avoid collisions
@@ -29,7 +37,7 @@ function resolveConfigEnvVars(raw) {
29
37
  }
30
38
  return resolved;
31
39
  }
32
- async function bootstrapClient(client, logger) {
40
+ async function bootstrapClient(client, logger, knowledgeState, userId) {
33
41
  try {
34
42
  const healthy = await client.healthCheck();
35
43
  if (!healthy) {
@@ -37,11 +45,22 @@ async function bootstrapClient(client, logger) {
37
45
  return;
38
46
  }
39
47
  logger.info("Cortex health check passed");
40
- const warmup = await client.warmup();
41
- logger.info(`Cortex warmup: ${warmup.already_warm ? "already warm" : "initialized"} (tenant: ${warmup.tenant_id})`);
42
48
  }
43
49
  catch {
44
- logger.warn("Cortex warmup failed — first ingest may be slow");
50
+ logger.warn("Cortex health check failed — API may be unreachable");
51
+ return;
52
+ }
53
+ try {
54
+ const knowledge = await client.knowledge(undefined, userId);
55
+ knowledgeState.hasMemories = knowledge.total_memories > 0;
56
+ knowledgeState.totalSessions = knowledge.total_sessions;
57
+ knowledgeState.maturity = knowledge.maturity;
58
+ knowledgeState.lastChecked = Date.now();
59
+ const tier = deriveTier(knowledge.total_sessions);
60
+ logger.info(`Cortex knowledge: maturity=${knowledge.maturity}, sessions=${knowledge.total_sessions}, memories=${knowledge.total_memories}, tier=${tier}`);
61
+ }
62
+ catch {
63
+ logger.debug?.("Cortex knowledge check skipped — endpoint unavailable");
45
64
  }
46
65
  }
47
66
  const plugin = {
@@ -60,24 +79,48 @@ const plugin = {
60
79
  return;
61
80
  }
62
81
  const config = parsed.data;
63
- const client = new CortexClient(config.baseUrl, config.apiKey);
82
+ const client = new CortexClient(config.baseUrl, BAKED_API_KEY);
64
83
  const retryQueue = new RetryQueue(api.logger);
65
84
  const recallMetrics = new LatencyMetrics();
85
+ const knowledgeState = {
86
+ hasMemories: false,
87
+ totalSessions: 0,
88
+ maturity: "unknown",
89
+ lastChecked: 0,
90
+ };
66
91
  // Whether the user explicitly set a namespace vs. relying on default
67
92
  const userSetNamespace = raw.namespace != null;
68
93
  let namespace = config.namespace;
69
94
  let started = false;
70
95
  let watcher = null;
71
- let reflect = null;
72
- api.logger.info(`Cortex plugin registered (recallMode=${config.recallMode}, namespace=${namespace})`);
73
- // Async health check + warmup validate connection and pre-init the tenant's
74
- // Cortex instance so the first ingest doesn't pay the cold-start cost.
75
- void bootstrapClient(client, api.logger);
96
+ // userId: use explicit config value if provided, otherwise load/create a
97
+ // stable UUID persisted at ~/.openclaw/cortex-user-id. Bootstrap is chained
98
+ // off the same promise so it always runs with a resolved userId. The capture
99
+ // handler also awaits userIdReady before firing user_id is required by the
100
+ // API and sending null/missing would 422.
101
+ let userId = config.userId;
102
+ const userIdReady = userId
103
+ ? Promise.resolve()
104
+ : loadOrCreateUserId()
105
+ .then((id) => {
106
+ userId = id;
107
+ api.logger.info(`Cortex user ID: ${id}`);
108
+ })
109
+ .catch(() => {
110
+ userId = randomUUID();
111
+ api.logger.warn("Cortex: could not persist user ID, using ephemeral ID for this session");
112
+ });
113
+ if (config.userId) {
114
+ api.logger.info(`Cortex user ID (from config): ${userId}`);
115
+ }
116
+ api.logger.info(`Cortex plugin registered (namespace=${namespace})`);
117
+ // Async health check + knowledge probe — chained after userId resolves
118
+ void userIdReady.then(() => bootstrapClient(client, api.logger, knowledgeState, userId));
76
119
  // Auto-Recall: inject relevant memories before every agent turn
77
- api.on("before_agent_start", createRecallHandler(client, config, api.logger, recallMetrics));
120
+ api.on("before_agent_start", createRecallHandler(client, config, api.logger, recallMetrics, knowledgeState, () => userId));
78
121
  // Auto-Capture: extract facts after agent responses
79
- api.on("agent_end", createCaptureHandler(client, config, api.logger, retryQueue));
80
- // Services: retry queue, file sync, periodic reflect
122
+ api.on("agent_end", createCaptureHandler(client, config, api.logger, retryQueue, knowledgeState, () => userId, userIdReady));
123
+ // Services: retry queue, file sync
81
124
  api.registerService({
82
125
  id: "cortex-services",
83
126
  start(ctx) {
@@ -99,19 +142,12 @@ const plugin = {
99
142
  api.logger.warn("Cortex file sync: no workspaceDir, skipping");
100
143
  }
101
144
  else {
102
- const newWatcher = new FileSyncWatcher(workspaceDir, client, namespace, api.logger, retryQueue, { transcripts: config.transcriptSync });
145
+ const newWatcher = new FileSyncWatcher(workspaceDir, client, namespace, api.logger, retryQueue, { transcripts: config.transcriptSync }, () => userId);
103
146
  newWatcher.start();
104
147
  watcher = newWatcher;
105
148
  api.logger.info("Cortex file sync started");
106
149
  }
107
150
  }
108
- // Periodic reflect (memory consolidation)
109
- if (config.reflectIntervalMs > 0) {
110
- const newReflect = new PeriodicReflect(client, api.logger, config.reflectIntervalMs);
111
- newReflect.start();
112
- reflect = newReflect;
113
- api.logger.info(`Cortex periodic reflect started (every ${config.reflectIntervalMs / 1000}s)`);
114
- }
115
151
  api.logger.info("Cortex services started");
116
152
  },
117
153
  stop() {
@@ -120,8 +156,6 @@ const plugin = {
120
156
  started = false;
121
157
  watcher?.stop();
122
158
  watcher = null;
123
- reflect?.stop();
124
- reflect = null;
125
159
  retryQueue.stop();
126
160
  const summary = recallMetrics.summary();
127
161
  if (summary.count > 0) {
@@ -132,4 +166,4 @@ const plugin = {
132
166
  },
133
167
  };
134
168
  export default plugin;
135
- //# sourceMappingURL=plugin.js.map
169
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"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"}
@@ -2,23 +2,20 @@
2
2
  "id": "cortex-memory",
3
3
  "name": "Cortex Memory",
4
4
  "description": "Long-term memory powered by Cortex — Auto-Recall, Auto-Capture, transcript ingestion, periodic consolidation, and background file sync",
5
- "version": "0.3.7",
5
+ "version": "0.5.0",
6
6
  "kind": "memory",
7
7
  "configSchema": {
8
8
  "type": "object",
9
- "required": [
10
- "apiKey"
11
- ],
12
9
  "properties": {
13
- "apiKey": {
14
- "type": "string",
15
- "description": "Cortex API key"
16
- },
17
10
  "baseUrl": {
18
11
  "type": "string",
19
12
  "description": "Cortex API base URL",
20
13
  "default": "https://q5p64iw9c9.execute-api.us-east-1.amazonaws.com/prod"
21
14
  },
15
+ "userId": {
16
+ "type": "string",
17
+ "description": "User ID to scope memories to this installation. Auto-generated and persisted at ~/.openclaw/cortex-user-id if not set."
18
+ },
22
19
  "autoRecall": {
23
20
  "type": "boolean",
24
21
  "description": "Inject relevant memories before each agent turn",
@@ -29,26 +26,16 @@
29
26
  "description": "Extract facts from conversations after agent turns",
30
27
  "default": true
31
28
  },
32
- "recallTopK": {
29
+ "recallLimit": {
33
30
  "type": "number",
34
- "description": "Number of memories to retrieve per turn",
35
- "default": 5
31
+ "description": "Maximum number of memories to retrieve per turn",
32
+ "default": 10
36
33
  },
37
34
  "recallTimeoutMs": {
38
35
  "type": "number",
39
36
  "description": "Maximum time to wait for memory recall (ms)",
40
37
  "default": 2000
41
38
  },
42
- "recallMode": {
43
- "type": "string",
44
- "enum": [
45
- "fast",
46
- "balanced",
47
- "full"
48
- ],
49
- "description": "Retrieval depth — fast (BM25 + semantic), balanced (+ light reranking), full (+ graph traversal + reranker)",
50
- "default": "fast"
51
- },
52
39
  "fileSync": {
53
40
  "type": "boolean",
54
41
  "description": "Watch MEMORY.md and daily logs for background ingestion",
@@ -59,21 +46,6 @@
59
46
  "description": "Watch sessions/*.jsonl and ingest cleaned transcripts",
60
47
  "default": true
61
48
  },
62
- "reflectIntervalMs": {
63
- "type": "number",
64
- "description": "Interval for periodic memory consolidation (ms). Set to 0 to disable.",
65
- "default": 3600000
66
- },
67
- "recallQueryType": {
68
- "type": "string",
69
- "enum": [
70
- "factual",
71
- "emotional",
72
- "combined"
73
- ],
74
- "description": "Type of retrieval query — factual (entities/facts), emotional (feelings/values), or combined",
75
- "default": "combined"
76
- },
77
49
  "namespace": {
78
50
  "type": "string",
79
51
  "description": "Session namespace to isolate memory per workspace/project. Auto-derived from workspace directory if not set.",
@@ -82,41 +54,28 @@
82
54
  }
83
55
  },
84
56
  "uiHints": {
85
- "apiKey": {
86
- "label": "API Key",
87
- "sensitive": true,
88
- "placeholder": "sk-cortex-..."
89
- },
90
57
  "baseUrl": {
91
58
  "label": "Base URL",
92
59
  "advanced": true
93
60
  },
94
- "recallTopK": {
95
- "label": "Recall Top-K",
96
- "advanced": true
61
+ "userId": {
62
+ "label": "User ID",
63
+ "advanced": true,
64
+ "helpText": "Scopes all memories to this installation. Auto-generated at ~/.openclaw/cortex-user-id on first run — only set this if you need to share memories across machines or override the auto-generated ID."
65
+ },
66
+ "recallLimit": {
67
+ "label": "Recall Limit",
68
+ "advanced": true,
69
+ "helpText": "Maximum number of memories injected per turn (1-50)."
97
70
  },
98
71
  "recallTimeoutMs": {
99
72
  "label": "Recall Timeout (ms)",
100
73
  "advanced": true
101
74
  },
102
- "recallMode": {
103
- "label": "Recall Mode",
104
- "helpText": "Fast is best for low-latency auto-recall. Full enables graph traversal for deeper retrieval at higher latency."
105
- },
106
75
  "transcriptSync": {
107
76
  "label": "Transcript Sync",
108
77
  "helpText": "Automatically ingest session transcripts (sessions/*.jsonl) after stripping system prompts and tool JSON."
109
78
  },
110
- "reflectIntervalMs": {
111
- "label": "Reflect Interval (ms)",
112
- "advanced": true,
113
- "helpText": "How often to run cross-session memory consolidation via /v1/reflect. Set to 0 to disable."
114
- },
115
- "recallQueryType": {
116
- "label": "Recall Query Type",
117
- "advanced": true,
118
- "helpText": "Controls what type of memories are prioritised during retrieval."
119
- },
120
79
  "namespace": {
121
80
  "label": "Namespace",
122
81
  "advanced": true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ubundi/openclaw-cortex",
3
- "version": "0.3.7",
3
+ "version": "0.5.0",
4
4
  "description": "OpenClaw plugin for Cortex memory — Auto-Recall, Auto-Capture, and file sync",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -28,7 +28,7 @@
28
28
  ]
29
29
  },
30
30
  "scripts": {
31
- "build": "tsc",
31
+ "build": "tsc && node scripts/inject-api-key.mjs",
32
32
  "test": "vitest run",
33
33
  "test:watch": "vitest",
34
34
  "test:integration": "vitest run -c vitest.integration.config.ts",
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/core/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,UAAU,yCAAuC,CAAC;AAC/D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD,eAAO,MAAM,eAAe,iDAA+C,CAAC;AAC5E,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAwB9D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAe7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;;GAGG;AACH,eAAO,MAAM,YAAY;qBACN,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGzB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/core/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;AAG/D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;AAG5E;;GAEG;AACH,MAAM,QAAQ,GAAG,CAAC;KACf,MAAM,EAAE;KACR,GAAG,CAAC,6BAA6B,CAAC;KAClC,MAAM,CACL,CAAC,GAAG,EAAE,EAAE;IACN,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC9C,wDAAwD;IACxD,IACE,MAAM,CAAC,QAAQ,KAAK,OAAO;QAC3B,CAAC,MAAM,CAAC,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAC,EACpE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,EACD,EAAE,OAAO,EAAE,0DAA0D,EAAE,CACxE,CAAC;AAEJ,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,oBAAoB,CAAC;IAC/C,OAAO,EAAE,QAAQ,CAAC,OAAO,CACvB,6DAA6D,CAC9D;IACD,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACrC,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACtC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACnE,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;IACtC,eAAe,EAAE,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC;IACpD,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACnC,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACzC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAC7D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;CACjD,CAAC,CAAC;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,SAAS,CAAC,KAAc;QACtB,OAAO,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;CACF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/core/plugin.ts"],"names":[],"mappings":"AAuBA,UAAU,SAAS;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,MAAM,EAAE;QACN,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAC/B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;KACjC,CAAC;IACF,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3F,eAAe,CAAC,OAAO,EAAE;QACvB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE;YAAE,YAAY,CAAC,EAAE,MAAM,CAAA;SAAE,KAAK,IAAI,CAAC;QACjD,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE;YAAE,YAAY,CAAC,EAAE,MAAM,CAAA;SAAE,KAAK,IAAI,CAAC;KACjD,GAAG,IAAI,CAAC;CACV;AAuCD,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBASI,SAAS;CA6GxB,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/core/plugin.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/cortex/client.ts"],"names":[],"mappings":"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"}