@dotsetlabs/dotclaw 1.1.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 (170) hide show
  1. package/.env.example +54 -0
  2. package/LICENSE +21 -0
  3. package/README.md +111 -0
  4. package/config-examples/groups/global/CLAUDE.md +21 -0
  5. package/config-examples/groups/main/CLAUDE.md +47 -0
  6. package/config-examples/mount-allowlist.json +25 -0
  7. package/config-examples/plugin-http.json +18 -0
  8. package/config-examples/runtime.json +30 -0
  9. package/config-examples/tool-budgets.json +24 -0
  10. package/config-examples/tool-policy.json +51 -0
  11. package/container/.dockerignore +6 -0
  12. package/container/Dockerfile +74 -0
  13. package/container/agent-runner/package-lock.json +92 -0
  14. package/container/agent-runner/package.json +20 -0
  15. package/container/agent-runner/src/agent-config.ts +295 -0
  16. package/container/agent-runner/src/container-protocol.ts +73 -0
  17. package/container/agent-runner/src/daemon.ts +91 -0
  18. package/container/agent-runner/src/index.ts +1428 -0
  19. package/container/agent-runner/src/ipc.ts +321 -0
  20. package/container/agent-runner/src/memory.ts +336 -0
  21. package/container/agent-runner/src/prompt-packs.ts +341 -0
  22. package/container/agent-runner/src/tools.ts +1720 -0
  23. package/container/agent-runner/tsconfig.json +19 -0
  24. package/container/build.sh +23 -0
  25. package/container/skills/agent-browser.md +159 -0
  26. package/dist/admin-commands.d.ts +7 -0
  27. package/dist/admin-commands.d.ts.map +1 -0
  28. package/dist/admin-commands.js +87 -0
  29. package/dist/admin-commands.js.map +1 -0
  30. package/dist/agent-context.d.ts +42 -0
  31. package/dist/agent-context.d.ts.map +1 -0
  32. package/dist/agent-context.js +92 -0
  33. package/dist/agent-context.js.map +1 -0
  34. package/dist/agent-execution.d.ts +68 -0
  35. package/dist/agent-execution.d.ts.map +1 -0
  36. package/dist/agent-execution.js +169 -0
  37. package/dist/agent-execution.js.map +1 -0
  38. package/dist/agent-semaphore.d.ts +2 -0
  39. package/dist/agent-semaphore.d.ts.map +1 -0
  40. package/dist/agent-semaphore.js +52 -0
  41. package/dist/agent-semaphore.js.map +1 -0
  42. package/dist/behavior-config.d.ts +14 -0
  43. package/dist/behavior-config.d.ts.map +1 -0
  44. package/dist/behavior-config.js +52 -0
  45. package/dist/behavior-config.js.map +1 -0
  46. package/dist/cli.d.ts +3 -0
  47. package/dist/cli.d.ts.map +1 -0
  48. package/dist/cli.js +626 -0
  49. package/dist/cli.js.map +1 -0
  50. package/dist/config.d.ts +31 -0
  51. package/dist/config.d.ts.map +1 -0
  52. package/dist/config.js +38 -0
  53. package/dist/config.js.map +1 -0
  54. package/dist/container-protocol.d.ts +72 -0
  55. package/dist/container-protocol.d.ts.map +1 -0
  56. package/dist/container-protocol.js +3 -0
  57. package/dist/container-protocol.js.map +1 -0
  58. package/dist/container-runner.d.ts +59 -0
  59. package/dist/container-runner.d.ts.map +1 -0
  60. package/dist/container-runner.js +813 -0
  61. package/dist/container-runner.js.map +1 -0
  62. package/dist/cost.d.ts +9 -0
  63. package/dist/cost.d.ts.map +1 -0
  64. package/dist/cost.js +11 -0
  65. package/dist/cost.js.map +1 -0
  66. package/dist/dashboard.d.ts +58 -0
  67. package/dist/dashboard.d.ts.map +1 -0
  68. package/dist/dashboard.js +471 -0
  69. package/dist/dashboard.js.map +1 -0
  70. package/dist/db.d.ts +99 -0
  71. package/dist/db.d.ts.map +1 -0
  72. package/dist/db.js +423 -0
  73. package/dist/db.js.map +1 -0
  74. package/dist/error-messages.d.ts +17 -0
  75. package/dist/error-messages.d.ts.map +1 -0
  76. package/dist/error-messages.js +109 -0
  77. package/dist/error-messages.js.map +1 -0
  78. package/dist/index.d.ts +2 -0
  79. package/dist/index.d.ts.map +1 -0
  80. package/dist/index.js +2072 -0
  81. package/dist/index.js.map +1 -0
  82. package/dist/locks.d.ts +2 -0
  83. package/dist/locks.d.ts.map +1 -0
  84. package/dist/locks.js +26 -0
  85. package/dist/locks.js.map +1 -0
  86. package/dist/logger.d.ts +4 -0
  87. package/dist/logger.d.ts.map +1 -0
  88. package/dist/logger.js +15 -0
  89. package/dist/logger.js.map +1 -0
  90. package/dist/maintenance.d.ts +13 -0
  91. package/dist/maintenance.d.ts.map +1 -0
  92. package/dist/maintenance.js +151 -0
  93. package/dist/maintenance.js.map +1 -0
  94. package/dist/memory-embeddings.d.ts +13 -0
  95. package/dist/memory-embeddings.d.ts.map +1 -0
  96. package/dist/memory-embeddings.js +126 -0
  97. package/dist/memory-embeddings.js.map +1 -0
  98. package/dist/memory-recall.d.ts +8 -0
  99. package/dist/memory-recall.d.ts.map +1 -0
  100. package/dist/memory-recall.js +127 -0
  101. package/dist/memory-recall.js.map +1 -0
  102. package/dist/memory-store.d.ts +149 -0
  103. package/dist/memory-store.d.ts.map +1 -0
  104. package/dist/memory-store.js +787 -0
  105. package/dist/memory-store.js.map +1 -0
  106. package/dist/metrics.d.ts +12 -0
  107. package/dist/metrics.d.ts.map +1 -0
  108. package/dist/metrics.js +134 -0
  109. package/dist/metrics.js.map +1 -0
  110. package/dist/model-registry.d.ts +67 -0
  111. package/dist/model-registry.d.ts.map +1 -0
  112. package/dist/model-registry.js +230 -0
  113. package/dist/model-registry.js.map +1 -0
  114. package/dist/mount-security.d.ts +37 -0
  115. package/dist/mount-security.d.ts.map +1 -0
  116. package/dist/mount-security.js +284 -0
  117. package/dist/mount-security.js.map +1 -0
  118. package/dist/paths.d.ts +80 -0
  119. package/dist/paths.d.ts.map +1 -0
  120. package/dist/paths.js +149 -0
  121. package/dist/paths.js.map +1 -0
  122. package/dist/personalization.d.ts +6 -0
  123. package/dist/personalization.d.ts.map +1 -0
  124. package/dist/personalization.js +180 -0
  125. package/dist/personalization.js.map +1 -0
  126. package/dist/progress.d.ts +15 -0
  127. package/dist/progress.d.ts.map +1 -0
  128. package/dist/progress.js +92 -0
  129. package/dist/progress.js.map +1 -0
  130. package/dist/runtime-config.d.ts +227 -0
  131. package/dist/runtime-config.d.ts.map +1 -0
  132. package/dist/runtime-config.js +297 -0
  133. package/dist/runtime-config.js.map +1 -0
  134. package/dist/task-scheduler.d.ts +9 -0
  135. package/dist/task-scheduler.d.ts.map +1 -0
  136. package/dist/task-scheduler.js +195 -0
  137. package/dist/task-scheduler.js.map +1 -0
  138. package/dist/telegram-format.d.ts +3 -0
  139. package/dist/telegram-format.d.ts.map +1 -0
  140. package/dist/telegram-format.js +200 -0
  141. package/dist/telegram-format.js.map +1 -0
  142. package/dist/tool-budgets.d.ts +16 -0
  143. package/dist/tool-budgets.d.ts.map +1 -0
  144. package/dist/tool-budgets.js +83 -0
  145. package/dist/tool-budgets.js.map +1 -0
  146. package/dist/tool-policy.d.ts +18 -0
  147. package/dist/tool-policy.d.ts.map +1 -0
  148. package/dist/tool-policy.js +84 -0
  149. package/dist/tool-policy.js.map +1 -0
  150. package/dist/trace-writer.d.ts +39 -0
  151. package/dist/trace-writer.d.ts.map +1 -0
  152. package/dist/trace-writer.js +27 -0
  153. package/dist/trace-writer.js.map +1 -0
  154. package/dist/types.d.ts +81 -0
  155. package/dist/types.d.ts.map +1 -0
  156. package/dist/types.js +2 -0
  157. package/dist/types.js.map +1 -0
  158. package/dist/utils.d.ts +4 -0
  159. package/dist/utils.d.ts.map +1 -0
  160. package/dist/utils.js +30 -0
  161. package/dist/utils.js.map +1 -0
  162. package/launchd/com.dotclaw.plist +32 -0
  163. package/package.json +89 -0
  164. package/scripts/autotune.js +53 -0
  165. package/scripts/bootstrap.js +348 -0
  166. package/scripts/configure.js +200 -0
  167. package/scripts/doctor.js +164 -0
  168. package/scripts/init.js +209 -0
  169. package/scripts/install.sh +219 -0
  170. package/systemd/dotclaw.service +22 -0
@@ -0,0 +1,127 @@
1
+ import { searchMemories, listEmbeddedMemories, recordMemoryAccess } from './memory-store.js';
2
+ import { EMBEDDINGS_ENABLED, EMBEDDING_MAX_CANDIDATES, EMBEDDING_MIN_ITEMS, EMBEDDING_MIN_QUERY_CHARS, EMBEDDING_WEIGHT, getQueryEmbedding } from './memory-embeddings.js';
3
+ function cosineSimilarity(a, b) {
4
+ if (a.length === 0 || b.length === 0 || a.length !== b.length)
5
+ return 0;
6
+ let dot = 0;
7
+ let normA = 0;
8
+ let normB = 0;
9
+ for (let i = 0; i < a.length; i += 1) {
10
+ dot += a[i] * b[i];
11
+ normA += a[i] * a[i];
12
+ normB += b[i] * b[i];
13
+ }
14
+ if (normA === 0 || normB === 0)
15
+ return 0;
16
+ return dot / (Math.sqrt(normA) * Math.sqrt(normB));
17
+ }
18
+ function estimateTokens(text) {
19
+ if (!text)
20
+ return 0;
21
+ return Math.ceil(Buffer.byteLength(text, 'utf-8') / 4);
22
+ }
23
+ function rankEmbeddingCandidates(params) {
24
+ const now = Date.now();
25
+ const baseWeight = Math.max(0, 1 - EMBEDDING_WEIGHT);
26
+ const importanceWeight = baseWeight * 0.6;
27
+ const recencyWeight = baseWeight * 0.4;
28
+ const scored = [];
29
+ for (const candidate of params.candidates) {
30
+ let embedding;
31
+ try {
32
+ embedding = JSON.parse(candidate.embedding_json);
33
+ }
34
+ catch {
35
+ continue;
36
+ }
37
+ if (!Array.isArray(embedding) || embedding.length === 0)
38
+ continue;
39
+ const similarity = cosineSimilarity(params.queryEmbedding, embedding);
40
+ const ageDays = candidate.updated_at
41
+ ? (now - new Date(candidate.updated_at).getTime()) / (1000 * 60 * 60 * 24)
42
+ : 365;
43
+ const recency = Math.exp(-ageDays / 30);
44
+ const score = (similarity * EMBEDDING_WEIGHT)
45
+ + (candidate.importance * importanceWeight)
46
+ + (recency * recencyWeight);
47
+ scored.push({
48
+ id: candidate.id,
49
+ content: candidate.content,
50
+ type: candidate.type,
51
+ score
52
+ });
53
+ }
54
+ scored.sort((a, b) => b.score - a.score);
55
+ return scored;
56
+ }
57
+ function mergeResults(params) {
58
+ const merged = new Map();
59
+ for (const item of params.fts) {
60
+ merged.set(item.id, {
61
+ id: item.id,
62
+ content: item.content,
63
+ type: item.type,
64
+ score: item.score
65
+ });
66
+ }
67
+ for (const item of params.semantic) {
68
+ const existing = merged.get(item.id);
69
+ if (!existing || item.score > existing.score) {
70
+ merged.set(item.id, item);
71
+ }
72
+ }
73
+ return Array.from(merged.values()).sort((a, b) => b.score - a.score);
74
+ }
75
+ export async function buildHybridMemoryRecall(params) {
76
+ const maxResults = params.maxResults || 8;
77
+ const maxTokens = params.maxTokens || 1200;
78
+ const ftsResults = searchMemories({
79
+ groupFolder: params.groupFolder,
80
+ userId: params.userId,
81
+ query: params.query,
82
+ limit: maxResults * 2
83
+ });
84
+ let semanticResults = [];
85
+ if (EMBEDDINGS_ENABLED && params.query.trim().length >= EMBEDDING_MIN_QUERY_CHARS) {
86
+ const candidates = listEmbeddedMemories({
87
+ groupFolder: params.groupFolder,
88
+ userId: params.userId,
89
+ limit: EMBEDDING_MAX_CANDIDATES
90
+ });
91
+ if (candidates.length >= EMBEDDING_MIN_ITEMS) {
92
+ const queryEmbedding = await getQueryEmbedding(params.query);
93
+ if (queryEmbedding && queryEmbedding.length > 0) {
94
+ semanticResults = rankEmbeddingCandidates({
95
+ queryEmbedding,
96
+ candidates
97
+ }).slice(0, maxResults * 3);
98
+ }
99
+ }
100
+ }
101
+ const merged = mergeResults({ fts: ftsResults, semantic: semanticResults });
102
+ const recall = [];
103
+ const accessedIds = [];
104
+ let tokens = 0;
105
+ for (const item of merged) {
106
+ if (recall.length >= maxResults)
107
+ break;
108
+ const line = `(${item.type}) ${item.content}`;
109
+ const estimate = estimateTokens(line);
110
+ if (tokens + estimate > maxTokens)
111
+ break;
112
+ recall.push(line);
113
+ accessedIds.push(item.id);
114
+ tokens += estimate;
115
+ }
116
+ // Record access for recalled memories (boosts importance)
117
+ if (accessedIds.length > 0) {
118
+ try {
119
+ recordMemoryAccess(accessedIds);
120
+ }
121
+ catch {
122
+ // Don't fail recall if access recording fails
123
+ }
124
+ }
125
+ return recall;
126
+ }
127
+ //# sourceMappingURL=memory-recall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-recall.js","sourceRoot":"","sources":["../src/memory-recall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,kBAAkB,EAAsB,MAAM,mBAAmB,CAAC;AACjH,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAShC,SAAS,gBAAgB,CAAC,CAAW,EAAE,CAAW;IAChD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC;IACxE,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACzC,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC;IACpB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,uBAAuB,CAAC,MAGhC;IACC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC;IACrD,MAAM,gBAAgB,GAAG,UAAU,GAAG,GAAG,CAAC;IAC1C,MAAM,aAAa,GAAG,UAAU,GAAG,GAAG,CAAC;IACvC,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QAC1C,IAAI,SAAmB,CAAC;QACxB,IAAI,CAAC;YACH,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,CAAa,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAClE,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QACtE,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU;YAClC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;YAC1E,CAAC,CAAC,GAAG,CAAC;QACR,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,CAAC,UAAU,GAAG,gBAAgB,CAAC;cACzC,CAAC,SAAS,CAAC,UAAU,GAAG,gBAAgB,CAAC;cACzC,CAAC,OAAO,GAAG,aAAa,CAAC,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,SAAS,CAAC,EAAE;YAChB,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,MAGrB;IACC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC/C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE;YAClB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;YAC7C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,MAM7C;IACC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;IAE3C,MAAM,UAAU,GAAG,cAAc,CAAC;QAChC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,UAAU,GAAG,CAAC;KACtB,CAAC,CAAC;IAEH,IAAI,eAAe,GAAmB,EAAE,CAAC;IACzC,IAAI,kBAAkB,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,yBAAyB,EAAE,CAAC;QAClF,MAAM,UAAU,GAAG,oBAAoB,CAAC;YACtC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,wBAAwB;SAChC,CAAC,CAAC;QACH,IAAI,UAAU,CAAC,MAAM,IAAI,mBAAmB,EAAE,CAAC;YAC7C,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7D,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChD,eAAe,GAAG,uBAAuB,CAAC;oBACxC,cAAc;oBACd,UAAU;iBACX,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,IAAI,MAAM,CAAC,MAAM,IAAI,UAAU;YAAE,MAAM;QACvC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,MAAM,GAAG,QAAQ,GAAG,SAAS;YAAE,MAAM;QACzC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,IAAI,QAAQ,CAAC;IACrB,CAAC;IAED,0DAA0D;IAC1D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,8CAA8C;QAChD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,149 @@
1
+ export type MemoryScope = 'user' | 'group' | 'global';
2
+ export type MemoryType = 'identity' | 'preference' | 'fact' | 'relationship' | 'project' | 'task' | 'note' | 'archive';
3
+ export type MemoryKind = 'semantic' | 'episodic' | 'procedural' | 'preference';
4
+ export interface MemoryItemInput {
5
+ scope: MemoryScope;
6
+ subject_id?: string | null;
7
+ type: MemoryType;
8
+ kind?: MemoryKind;
9
+ conflict_key?: string | null;
10
+ content: string;
11
+ importance?: number;
12
+ confidence?: number;
13
+ tags?: string[];
14
+ ttl_days?: number | null;
15
+ source?: string | null;
16
+ metadata?: Record<string, unknown> | null;
17
+ }
18
+ export interface MemoryItem extends MemoryItemInput {
19
+ id: string;
20
+ group_folder: string;
21
+ normalized: string;
22
+ importance: number;
23
+ confidence: number;
24
+ tags_text: string;
25
+ created_at: string;
26
+ updated_at: string;
27
+ last_accessed_at: string | null;
28
+ expires_at: string | null;
29
+ embedding_json?: string | null;
30
+ embedding_model?: string | null;
31
+ embedding_updated_at?: string | null;
32
+ }
33
+ export interface MemorySearchResult extends MemoryItem {
34
+ bm25: number;
35
+ score: number;
36
+ }
37
+ export interface PreferenceMemory {
38
+ conflict_key: string;
39
+ content: string;
40
+ tags: string[];
41
+ metadata: Record<string, unknown> | null;
42
+ scope: MemoryScope;
43
+ subject_id?: string | null;
44
+ updated_at: string;
45
+ importance: number;
46
+ }
47
+ export declare function initMemoryStore(): void;
48
+ export declare function upsertMemoryItems(groupFolder: string, items: MemoryItemInput[], source: string): MemoryItem[];
49
+ export declare function searchMemories(params: {
50
+ groupFolder: string;
51
+ userId?: string | null;
52
+ query: string;
53
+ limit?: number;
54
+ }): MemorySearchResult[];
55
+ export declare function listMemories(params: {
56
+ groupFolder: string;
57
+ scope?: MemoryScope;
58
+ userId?: string | null;
59
+ type?: MemoryType;
60
+ limit?: number;
61
+ }): MemoryItem[];
62
+ export declare function forgetMemories(params: {
63
+ groupFolder: string;
64
+ ids?: string[];
65
+ content?: string;
66
+ scope?: MemoryScope;
67
+ userId?: string | null;
68
+ }): number;
69
+ export declare function getMemoryStats(params: {
70
+ groupFolder: string;
71
+ userId?: string | null;
72
+ }): {
73
+ total: number;
74
+ user: number;
75
+ group: number;
76
+ global: number;
77
+ };
78
+ export declare function cleanupExpiredMemories(): number;
79
+ /**
80
+ * Record memory access: update last_accessed_at, increment access_count, and boost importance
81
+ * Called when memories are recalled for context
82
+ */
83
+ export declare function recordMemoryAccess(ids: string[]): void;
84
+ /**
85
+ * Decay importance for memories not accessed recently
86
+ * Reduces importance by 1% for memories not accessed in 30+ days (minimum 0.1)
87
+ * Also doesn't decay critical priority memories
88
+ */
89
+ export declare function decayUnusedMemories(): number;
90
+ /**
91
+ * Set priority for a memory item
92
+ * Priority values: 'critical', 'normal', 'low'
93
+ * Critical memories are never pruned
94
+ */
95
+ export declare function setMemoryPriority(id: string, priority: 'critical' | 'normal' | 'low'): boolean;
96
+ /**
97
+ * Get memory by ID
98
+ */
99
+ export declare function getMemoryById(id: string): MemoryItem | null;
100
+ export declare function pruneMemoryOverflow(params: {
101
+ maxItems: number;
102
+ importanceThreshold: number;
103
+ }): number;
104
+ export declare function runMemoryMaintenance(): {
105
+ expired: number;
106
+ pruned: number;
107
+ decayed: number;
108
+ vacuumed: boolean;
109
+ analyzed: boolean;
110
+ };
111
+ export declare function buildUserProfile(params: {
112
+ groupFolder: string;
113
+ userId?: string | null;
114
+ limit?: number;
115
+ }): string | null;
116
+ export declare function listMemoriesMissingEmbeddings(params: {
117
+ groupFolder?: string;
118
+ limit?: number;
119
+ }): Array<{
120
+ id: string;
121
+ content: string;
122
+ group_folder: string;
123
+ }>;
124
+ export declare function countMemoriesMissingEmbeddings(params: {
125
+ groupFolder?: string;
126
+ }): number;
127
+ export declare function updateMemoryEmbedding(params: {
128
+ id: string;
129
+ embedding: number[];
130
+ model: string;
131
+ }): void;
132
+ export declare function listEmbeddedMemories(params: {
133
+ groupFolder: string;
134
+ userId?: string | null;
135
+ limit?: number;
136
+ }): Array<{
137
+ id: string;
138
+ content: string;
139
+ type: MemoryType;
140
+ importance: number;
141
+ updated_at: string;
142
+ embedding_json: string;
143
+ }>;
144
+ export declare function listPreferenceMemories(params: {
145
+ groupFolder: string;
146
+ userId?: string | null;
147
+ limit?: number;
148
+ }): PreferenceMemory[];
149
+ //# sourceMappingURL=memory-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-store.d.ts","sourceRoot":"","sources":["../src/memory-store.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AACtD,MAAM,MAAM,UAAU,GAClB,UAAU,GACV,YAAY,GACZ,MAAM,GACN,cAAc,GACd,SAAS,GACT,MAAM,GACN,MAAM,GACN,SAAS,CAAC;AACd,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,YAAY,CAAC;AAE/E,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3C;AAED,MAAM,WAAW,UAAW,SAAQ,eAAe;IACjD,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAED,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAoFD,wBAAgB,eAAe,IAAI,IAAI,CA+EtC;AA8ED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,CA6L7G;AASD,wBAAgB,cAAc,CAAC,MAAM,EAAE;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,kBAAkB,EAAE,CAiCvB;AAqDD,wBAAgB,YAAY,CAAC,MAAM,EAAE;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,UAAU,EAAE,CA0Bf;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,GAAG,MAAM,CA2BT;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE;;;;;EAuBrF;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAK/C;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CActD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAU5C;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,CAI9F;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAI3D;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAyCrG;AAED,wBAAgB,oBAAoB,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CA8CjI;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,GAAG,IAAI,CAchB;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAsB/D;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAmBvF;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,IAAI,CASP;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC,CAc3H;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,gBAAgB,EAAE,CAiDrB"}