reflectt-node 0.1.7 → 0.1.11

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 (220) hide show
  1. package/README.md +13 -0
  2. package/defaults/TEAM-ROLES.yaml +317 -5
  3. package/defaults/gitignore.template +23 -0
  4. package/dist/agent-config.d.ts +51 -0
  5. package/dist/agent-config.d.ts.map +1 -0
  6. package/dist/agent-config.js +129 -0
  7. package/dist/agent-config.js.map +1 -0
  8. package/dist/agent-config.test.d.ts +2 -0
  9. package/dist/agent-config.test.d.ts.map +1 -0
  10. package/dist/agent-config.test.js +91 -0
  11. package/dist/agent-config.test.js.map +1 -0
  12. package/dist/agent-memories.d.ts +58 -0
  13. package/dist/agent-memories.d.ts.map +1 -0
  14. package/dist/agent-memories.js +168 -0
  15. package/dist/agent-memories.js.map +1 -0
  16. package/dist/agent-memories.test.d.ts +2 -0
  17. package/dist/agent-memories.test.d.ts.map +1 -0
  18. package/dist/agent-memories.test.js +327 -0
  19. package/dist/agent-memories.test.js.map +1 -0
  20. package/dist/agent-messaging.d.ts +50 -0
  21. package/dist/agent-messaging.d.ts.map +1 -0
  22. package/dist/agent-messaging.js +103 -0
  23. package/dist/agent-messaging.js.map +1 -0
  24. package/dist/agent-messaging.test.d.ts +2 -0
  25. package/dist/agent-messaging.test.d.ts.map +1 -0
  26. package/dist/agent-messaging.test.js +105 -0
  27. package/dist/agent-messaging.test.js.map +1 -0
  28. package/dist/agent-runs.d.ts +158 -0
  29. package/dist/agent-runs.d.ts.map +1 -0
  30. package/dist/agent-runs.js +514 -0
  31. package/dist/agent-runs.js.map +1 -0
  32. package/dist/agent-runs.test.d.ts +2 -0
  33. package/dist/agent-runs.test.d.ts.map +1 -0
  34. package/dist/agent-runs.test.js +386 -0
  35. package/dist/agent-runs.test.js.map +1 -0
  36. package/dist/approval-queue.test.d.ts +2 -0
  37. package/dist/approval-queue.test.d.ts.map +1 -0
  38. package/dist/approval-queue.test.js +118 -0
  39. package/dist/approval-queue.test.js.map +1 -0
  40. package/dist/artifact-store.d.ts +55 -0
  41. package/dist/artifact-store.d.ts.map +1 -0
  42. package/dist/artifact-store.js +128 -0
  43. package/dist/artifact-store.js.map +1 -0
  44. package/dist/artifact-store.test.d.ts +2 -0
  45. package/dist/artifact-store.test.d.ts.map +1 -0
  46. package/dist/artifact-store.test.js +119 -0
  47. package/dist/artifact-store.test.js.map +1 -0
  48. package/dist/boardHealthWorker.d.ts +32 -0
  49. package/dist/boardHealthWorker.d.ts.map +1 -1
  50. package/dist/boardHealthWorker.js +69 -2
  51. package/dist/boardHealthWorker.js.map +1 -1
  52. package/dist/buildInfo.d.ts.map +1 -1
  53. package/dist/buildInfo.js +47 -10
  54. package/dist/buildInfo.js.map +1 -1
  55. package/dist/canvas-input.test.d.ts +2 -0
  56. package/dist/canvas-input.test.d.ts.map +1 -0
  57. package/dist/canvas-input.test.js +96 -0
  58. package/dist/canvas-input.test.js.map +1 -0
  59. package/dist/canvas-render.test.d.ts +2 -0
  60. package/dist/canvas-render.test.d.ts.map +1 -0
  61. package/dist/canvas-render.test.js +95 -0
  62. package/dist/canvas-render.test.js.map +1 -0
  63. package/dist/capabilities/browser.d.ts +75 -0
  64. package/dist/capabilities/browser.d.ts.map +1 -0
  65. package/dist/capabilities/browser.js +172 -0
  66. package/dist/capabilities/browser.js.map +1 -0
  67. package/dist/channels.d.ts +1 -1
  68. package/dist/chat.d.ts +4 -0
  69. package/dist/chat.d.ts.map +1 -1
  70. package/dist/chat.js +6 -2
  71. package/dist/chat.js.map +1 -1
  72. package/dist/cli.js +41 -14
  73. package/dist/cli.js.map +1 -1
  74. package/dist/cloud.d.ts +2 -0
  75. package/dist/cloud.d.ts.map +1 -1
  76. package/dist/cloud.js +151 -64
  77. package/dist/cloud.js.map +1 -1
  78. package/dist/continuity-loop.d.ts.map +1 -1
  79. package/dist/continuity-loop.js +297 -29
  80. package/dist/continuity-loop.js.map +1 -1
  81. package/dist/cost-enforcement.d.ts +38 -0
  82. package/dist/cost-enforcement.d.ts.map +1 -0
  83. package/dist/cost-enforcement.js +84 -0
  84. package/dist/cost-enforcement.js.map +1 -0
  85. package/dist/db.d.ts.map +1 -1
  86. package/dist/db.js +131 -0
  87. package/dist/db.js.map +1 -1
  88. package/dist/deploy-monitor.d.ts +18 -0
  89. package/dist/deploy-monitor.d.ts.map +1 -0
  90. package/dist/deploy-monitor.js +165 -0
  91. package/dist/deploy-monitor.js.map +1 -0
  92. package/dist/e2e-loop-proof.test.d.ts +2 -0
  93. package/dist/e2e-loop-proof.test.d.ts.map +1 -0
  94. package/dist/e2e-loop-proof.test.js +104 -0
  95. package/dist/e2e-loop-proof.test.js.map +1 -0
  96. package/dist/email-sms-send.test.d.ts +2 -0
  97. package/dist/email-sms-send.test.d.ts.map +1 -0
  98. package/dist/email-sms-send.test.js +96 -0
  99. package/dist/email-sms-send.test.js.map +1 -0
  100. package/dist/events.d.ts +1 -1
  101. package/dist/events.d.ts.map +1 -1
  102. package/dist/events.js +2 -0
  103. package/dist/events.js.map +1 -1
  104. package/dist/executionSweeper.d.ts +1 -0
  105. package/dist/executionSweeper.d.ts.map +1 -1
  106. package/dist/executionSweeper.js +43 -7
  107. package/dist/executionSweeper.js.map +1 -1
  108. package/dist/files.d.ts.map +1 -1
  109. package/dist/files.js +17 -3
  110. package/dist/files.js.map +1 -1
  111. package/dist/fingerprint.d.ts +30 -0
  112. package/dist/fingerprint.d.ts.map +1 -0
  113. package/dist/fingerprint.js +117 -0
  114. package/dist/fingerprint.js.map +1 -0
  115. package/dist/github-webhook-attribution.d.ts +38 -0
  116. package/dist/github-webhook-attribution.d.ts.map +1 -0
  117. package/dist/github-webhook-attribution.js +123 -0
  118. package/dist/github-webhook-attribution.js.map +1 -0
  119. package/dist/github-webhook-chat.d.ts +75 -0
  120. package/dist/github-webhook-chat.d.ts.map +1 -0
  121. package/dist/github-webhook-chat.js +108 -0
  122. package/dist/github-webhook-chat.js.map +1 -0
  123. package/dist/handoff-state.test.d.ts +2 -0
  124. package/dist/handoff-state.test.d.ts.map +1 -0
  125. package/dist/handoff-state.test.js +102 -0
  126. package/dist/handoff-state.test.js.map +1 -0
  127. package/dist/health.d.ts +9 -0
  128. package/dist/health.d.ts.map +1 -1
  129. package/dist/health.js +18 -0
  130. package/dist/health.js.map +1 -1
  131. package/dist/host-error-correlation.d.ts +65 -0
  132. package/dist/host-error-correlation.d.ts.map +1 -0
  133. package/dist/host-error-correlation.js +123 -0
  134. package/dist/host-error-correlation.js.map +1 -0
  135. package/dist/inbox.d.ts.map +1 -1
  136. package/dist/inbox.js +4 -0
  137. package/dist/inbox.js.map +1 -1
  138. package/dist/index.js +76 -11
  139. package/dist/index.js.map +1 -1
  140. package/dist/notificationDedupeGuard.d.ts +4 -0
  141. package/dist/notificationDedupeGuard.d.ts.map +1 -1
  142. package/dist/notificationDedupeGuard.js +8 -4
  143. package/dist/notificationDedupeGuard.js.map +1 -1
  144. package/dist/presence.d.ts +37 -5
  145. package/dist/presence.d.ts.map +1 -1
  146. package/dist/presence.js +127 -16
  147. package/dist/presence.js.map +1 -1
  148. package/dist/pulse.d.ts +7 -0
  149. package/dist/pulse.d.ts.map +1 -1
  150. package/dist/pulse.js +15 -0
  151. package/dist/pulse.js.map +1 -1
  152. package/dist/review-sla.d.ts +9 -0
  153. package/dist/review-sla.d.ts.map +1 -0
  154. package/dist/review-sla.js +51 -0
  155. package/dist/review-sla.js.map +1 -0
  156. package/dist/review-state.d.ts +9 -0
  157. package/dist/review-state.d.ts.map +1 -0
  158. package/dist/review-state.js +17 -0
  159. package/dist/review-state.js.map +1 -0
  160. package/dist/routing-enforcement.test.d.ts +2 -0
  161. package/dist/routing-enforcement.test.d.ts.map +1 -0
  162. package/dist/routing-enforcement.test.js +86 -0
  163. package/dist/routing-enforcement.test.js.map +1 -0
  164. package/dist/run-retention.test.d.ts +2 -0
  165. package/dist/run-retention.test.d.ts.map +1 -0
  166. package/dist/run-retention.test.js +57 -0
  167. package/dist/run-retention.test.js.map +1 -0
  168. package/dist/run-stream.test.d.ts +2 -0
  169. package/dist/run-stream.test.d.ts.map +1 -0
  170. package/dist/run-stream.test.js +70 -0
  171. package/dist/run-stream.test.js.map +1 -0
  172. package/dist/schedule.d.ts +60 -0
  173. package/dist/schedule.d.ts.map +1 -0
  174. package/dist/schedule.js +176 -0
  175. package/dist/schedule.js.map +1 -0
  176. package/dist/server.d.ts.map +1 -1
  177. package/dist/server.js +1714 -88
  178. package/dist/server.js.map +1 -1
  179. package/dist/suppression-ledger.d.ts.map +1 -1
  180. package/dist/suppression-ledger.js +12 -3
  181. package/dist/suppression-ledger.js.map +1 -1
  182. package/dist/system-loop-state.d.ts +1 -1
  183. package/dist/system-loop-state.d.ts.map +1 -1
  184. package/dist/system-loop-state.js +1 -0
  185. package/dist/system-loop-state.js.map +1 -1
  186. package/dist/tasks.d.ts +9 -1
  187. package/dist/tasks.d.ts.map +1 -1
  188. package/dist/tasks.js +238 -41
  189. package/dist/tasks.js.map +1 -1
  190. package/dist/todoHoardingGuard.d.ts +17 -0
  191. package/dist/todoHoardingGuard.d.ts.map +1 -1
  192. package/dist/todoHoardingGuard.js +25 -2
  193. package/dist/todoHoardingGuard.js.map +1 -1
  194. package/dist/types.d.ts +1 -1
  195. package/dist/types.d.ts.map +1 -1
  196. package/dist/usage-tracking.d.ts +26 -0
  197. package/dist/usage-tracking.d.ts.map +1 -1
  198. package/dist/usage-tracking.js +91 -4
  199. package/dist/usage-tracking.js.map +1 -1
  200. package/dist/webhook-storage.d.ts +50 -0
  201. package/dist/webhook-storage.d.ts.map +1 -0
  202. package/dist/webhook-storage.js +102 -0
  203. package/dist/webhook-storage.js.map +1 -0
  204. package/dist/webhook-storage.test.d.ts +2 -0
  205. package/dist/webhook-storage.test.d.ts.map +1 -0
  206. package/dist/webhook-storage.test.js +86 -0
  207. package/dist/webhook-storage.test.js.map +1 -0
  208. package/dist/workflow-templates.d.ts +44 -0
  209. package/dist/workflow-templates.d.ts.map +1 -0
  210. package/dist/workflow-templates.js +154 -0
  211. package/dist/workflow-templates.js.map +1 -0
  212. package/dist/workflow-templates.test.d.ts +2 -0
  213. package/dist/workflow-templates.test.d.ts.map +1 -0
  214. package/dist/workflow-templates.test.js +76 -0
  215. package/dist/workflow-templates.test.js.map +1 -0
  216. package/package.json +3 -1
  217. package/public/dashboard.js +130 -37
  218. package/public/design-tokens-platform.md +118 -0
  219. package/public/design-tokens.css +195 -0
  220. package/public/docs.md +145 -2
@@ -0,0 +1,91 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ import { describe, it } from 'node:test';
3
+ import assert from 'node:assert/strict';
4
+ // Test the cost cap logic in isolation
5
+ function checkCostCap(config, dailySpend, monthlySpend) {
6
+ if (!config)
7
+ return { allowed: true, action: 'allow' };
8
+ let action = 'allow';
9
+ if (config.costCapDaily !== null) {
10
+ const remaining = config.costCapDaily - dailySpend;
11
+ if (remaining <= 0)
12
+ action = 'deny';
13
+ else if (remaining < config.costCapDaily * 0.1)
14
+ action = 'downgrade';
15
+ else if (remaining < config.costCapDaily * 0.2)
16
+ action = 'warn';
17
+ }
18
+ if (config.costCapMonthly !== null) {
19
+ const remaining = config.costCapMonthly - monthlySpend;
20
+ if (remaining <= 0)
21
+ action = 'deny';
22
+ else if (remaining < config.costCapMonthly * 0.1 && action !== 'deny')
23
+ action = 'downgrade';
24
+ else if (remaining < config.costCapMonthly * 0.2 && action === 'allow')
25
+ action = 'warn';
26
+ }
27
+ return { allowed: action !== 'deny', action };
28
+ }
29
+ describe('agent config cost enforcement', () => {
30
+ it('allows when no config exists', () => {
31
+ const r = checkCostCap(null, 5, 50);
32
+ assert.equal(r.allowed, true);
33
+ assert.equal(r.action, 'allow');
34
+ });
35
+ it('allows when no caps are set', () => {
36
+ const r = checkCostCap({ costCapDaily: null, costCapMonthly: null, model: null, fallbackModel: null }, 5, 50);
37
+ assert.equal(r.allowed, true);
38
+ assert.equal(r.action, 'allow');
39
+ });
40
+ it('allows when well under daily cap', () => {
41
+ const r = checkCostCap({ costCapDaily: 10, costCapMonthly: null, model: 'opus', fallbackModel: 'sonnet' }, 3, 0);
42
+ assert.equal(r.allowed, true);
43
+ assert.equal(r.action, 'allow');
44
+ });
45
+ it('warns at 80% daily spend', () => {
46
+ const r = checkCostCap({ costCapDaily: 10, costCapMonthly: null, model: 'opus', fallbackModel: 'sonnet' }, 8.5, 0);
47
+ assert.equal(r.allowed, true);
48
+ assert.equal(r.action, 'warn');
49
+ });
50
+ it('downgrades at 90% daily spend', () => {
51
+ const r = checkCostCap({ costCapDaily: 10, costCapMonthly: null, model: 'opus', fallbackModel: 'sonnet' }, 9.5, 0);
52
+ assert.equal(r.allowed, true);
53
+ assert.equal(r.action, 'downgrade');
54
+ });
55
+ it('denies at 100% daily spend', () => {
56
+ const r = checkCostCap({ costCapDaily: 10, costCapMonthly: null, model: 'opus', fallbackModel: 'sonnet' }, 10, 0);
57
+ assert.equal(r.allowed, false);
58
+ assert.equal(r.action, 'deny');
59
+ });
60
+ it('denies when over daily cap', () => {
61
+ const r = checkCostCap({ costCapDaily: 10, costCapMonthly: null, model: 'opus', fallbackModel: 'sonnet' }, 12, 0);
62
+ assert.equal(r.allowed, false);
63
+ assert.equal(r.action, 'deny');
64
+ });
65
+ it('monthly cap denies overriding daily allow', () => {
66
+ const r = checkCostCap({ costCapDaily: 10, costCapMonthly: 100, model: null, fallbackModel: null }, 3, 100);
67
+ assert.equal(r.allowed, false);
68
+ assert.equal(r.action, 'deny');
69
+ });
70
+ it('monthly warn when daily is fine', () => {
71
+ const r = checkCostCap({ costCapDaily: null, costCapMonthly: 100, model: null, fallbackModel: null }, 0, 85);
72
+ assert.equal(r.allowed, true);
73
+ assert.equal(r.action, 'warn');
74
+ });
75
+ it('monthly downgrade at 90%', () => {
76
+ const r = checkCostCap({ costCapDaily: null, costCapMonthly: 100, model: null, fallbackModel: null }, 0, 95);
77
+ assert.equal(r.allowed, true);
78
+ assert.equal(r.action, 'downgrade');
79
+ });
80
+ it('both caps — tighter one wins', () => {
81
+ // Daily is at 95% (downgrade), monthly is fine
82
+ const r = checkCostCap({ costCapDaily: 10, costCapMonthly: 1000, model: 'opus', fallbackModel: 'sonnet' }, 9.5, 50);
83
+ assert.equal(r.action, 'downgrade');
84
+ });
85
+ it('zero cap always denies', () => {
86
+ const r = checkCostCap({ costCapDaily: 0, costCapMonthly: null, model: null, fallbackModel: null }, 0, 0);
87
+ assert.equal(r.allowed, false);
88
+ assert.equal(r.action, 'deny');
89
+ });
90
+ });
91
+ //# sourceMappingURL=agent-config.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-config.test.js","sourceRoot":"","sources":["../src/agent-config.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ export interface AgentMemory {
2
+ id: string;
3
+ agentId: string;
4
+ namespace: string;
5
+ key: string;
6
+ content: string;
7
+ tags: string[];
8
+ expiresAt: number | null;
9
+ createdAt: number;
10
+ updatedAt: number;
11
+ }
12
+ /**
13
+ * Store or upsert a memory. If agentId + namespace + key exists, it updates.
14
+ */
15
+ export declare function setMemory(opts: {
16
+ agentId: string;
17
+ namespace?: string;
18
+ key: string;
19
+ content: string;
20
+ tags?: string[];
21
+ expiresAt?: number | null;
22
+ }): AgentMemory;
23
+ /**
24
+ * Get a specific memory by agentId + namespace + key.
25
+ */
26
+ export declare function getMemory(agentId: string, key: string, namespace?: string): AgentMemory | null;
27
+ /**
28
+ * Get a memory by its ID.
29
+ */
30
+ export declare function getMemoryById(id: string): AgentMemory | null;
31
+ /**
32
+ * List memories for an agent with optional filters.
33
+ */
34
+ export declare function listMemories(opts: {
35
+ agentId: string;
36
+ namespace?: string;
37
+ tag?: string;
38
+ search?: string;
39
+ limit?: number;
40
+ includeExpired?: boolean;
41
+ }): AgentMemory[];
42
+ /**
43
+ * Delete a specific memory.
44
+ */
45
+ export declare function deleteMemory(agentId: string, key: string, namespace?: string): boolean;
46
+ /**
47
+ * Delete a memory by ID.
48
+ */
49
+ export declare function deleteMemoryById(id: string): boolean;
50
+ /**
51
+ * Purge all expired memories (housekeeping).
52
+ */
53
+ export declare function purgeExpiredMemories(): number;
54
+ /**
55
+ * Count memories for an agent.
56
+ */
57
+ export declare function countMemories(agentId: string, namespace?: string): number;
58
+ //# sourceMappingURL=agent-memories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-memories.d.ts","sourceRoot":"","sources":["../src/agent-memories.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAsCD;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B,GAAG,WAAW,CAuCd;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAa9F;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAS5D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,GAAG,WAAW,EAAE,CAiChB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAOtF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAIpD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAI7C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAYzE"}
@@ -0,0 +1,168 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (c) Reflectt AI
3
+ /**
4
+ * Agent Memories — Persistent key-value store with tags and expiration.
5
+ *
6
+ * Survives node restarts (SQLite-backed, WAL mode).
7
+ * Supports:
8
+ * - Scoped per agent + namespace
9
+ * - Tag-based filtering (JSONB tags column)
10
+ * - TTL via expires_at
11
+ * - Keyword search on key + content
12
+ *
13
+ * Task: task-1773246466959-qxwos0ffp
14
+ */
15
+ import { getDb, safeJsonParse } from './db.js';
16
+ // ── ID generation ──────────────────────────────────────────────────────────
17
+ function generateMemoryId() {
18
+ return `amem-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
19
+ }
20
+ function rowToMemory(row) {
21
+ return {
22
+ id: row.id,
23
+ agentId: row.agent_id,
24
+ namespace: row.namespace,
25
+ key: row.key,
26
+ content: row.content,
27
+ tags: safeJsonParse(row.tags) ?? [],
28
+ expiresAt: row.expires_at,
29
+ createdAt: row.created_at,
30
+ updatedAt: row.updated_at,
31
+ };
32
+ }
33
+ // ── CRUD ───────────────────────────────────────────────────────────────────
34
+ /**
35
+ * Store or upsert a memory. If agentId + namespace + key exists, it updates.
36
+ */
37
+ export function setMemory(opts) {
38
+ const db = getDb();
39
+ const now = Date.now();
40
+ const namespace = opts.namespace ?? 'default';
41
+ const tags = opts.tags ?? [];
42
+ const expiresAt = opts.expiresAt ?? null;
43
+ // Check for existing
44
+ const existing = db.prepare('SELECT id FROM agent_memories WHERE agent_id = ? AND namespace = ? AND key = ?').get(opts.agentId, namespace, opts.key);
45
+ if (existing) {
46
+ db.prepare(`
47
+ UPDATE agent_memories SET content = ?, tags = ?, expires_at = ?, updated_at = ?
48
+ WHERE id = ?
49
+ `).run(opts.content, JSON.stringify(tags), expiresAt, now, existing.id);
50
+ const row = db.prepare('SELECT * FROM agent_memories WHERE id = ?').get(existing.id);
51
+ return rowToMemory(row);
52
+ }
53
+ const id = generateMemoryId();
54
+ db.prepare(`
55
+ INSERT INTO agent_memories (id, agent_id, namespace, key, content, tags, expires_at, created_at, updated_at)
56
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
57
+ `).run(id, opts.agentId, namespace, opts.key, opts.content, JSON.stringify(tags), expiresAt, now, now);
58
+ return {
59
+ id,
60
+ agentId: opts.agentId,
61
+ namespace,
62
+ key: opts.key,
63
+ content: opts.content,
64
+ tags,
65
+ expiresAt,
66
+ createdAt: now,
67
+ updatedAt: now,
68
+ };
69
+ }
70
+ /**
71
+ * Get a specific memory by agentId + namespace + key.
72
+ */
73
+ export function getMemory(agentId, key, namespace) {
74
+ const db = getDb();
75
+ const ns = namespace ?? 'default';
76
+ const row = db.prepare('SELECT * FROM agent_memories WHERE agent_id = ? AND namespace = ? AND key = ?').get(agentId, ns, key);
77
+ if (!row)
78
+ return null;
79
+ // Check expiration
80
+ if (row.expires_at && row.expires_at <= Date.now()) {
81
+ db.prepare('DELETE FROM agent_memories WHERE id = ?').run(row.id);
82
+ return null;
83
+ }
84
+ return rowToMemory(row);
85
+ }
86
+ /**
87
+ * Get a memory by its ID.
88
+ */
89
+ export function getMemoryById(id) {
90
+ const db = getDb();
91
+ const row = db.prepare('SELECT * FROM agent_memories WHERE id = ?').get(id);
92
+ if (!row)
93
+ return null;
94
+ if (row.expires_at && row.expires_at <= Date.now()) {
95
+ db.prepare('DELETE FROM agent_memories WHERE id = ?').run(row.id);
96
+ return null;
97
+ }
98
+ return rowToMemory(row);
99
+ }
100
+ /**
101
+ * List memories for an agent with optional filters.
102
+ */
103
+ export function listMemories(opts) {
104
+ const db = getDb();
105
+ const limit = opts.limit ?? 100;
106
+ const conditions = ['agent_id = ?'];
107
+ const params = [opts.agentId];
108
+ if (opts.namespace) {
109
+ conditions.push('namespace = ?');
110
+ params.push(opts.namespace);
111
+ }
112
+ if (!opts.includeExpired) {
113
+ conditions.push('(expires_at IS NULL OR expires_at > ?)');
114
+ params.push(Date.now());
115
+ }
116
+ if (opts.tag) {
117
+ // SQLite JSON — check if tag array contains the value
118
+ conditions.push("EXISTS (SELECT 1 FROM json_each(tags) WHERE json_each.value = ?)");
119
+ params.push(opts.tag);
120
+ }
121
+ if (opts.search) {
122
+ conditions.push('(key LIKE ? OR content LIKE ?)');
123
+ const pattern = `%${opts.search}%`;
124
+ params.push(pattern, pattern);
125
+ }
126
+ const sql = `SELECT * FROM agent_memories WHERE ${conditions.join(' AND ')} ORDER BY updated_at DESC LIMIT ?`;
127
+ params.push(limit);
128
+ const rows = db.prepare(sql).all(...params);
129
+ return rows.map(rowToMemory);
130
+ }
131
+ /**
132
+ * Delete a specific memory.
133
+ */
134
+ export function deleteMemory(agentId, key, namespace) {
135
+ const db = getDb();
136
+ const ns = namespace ?? 'default';
137
+ const result = db.prepare('DELETE FROM agent_memories WHERE agent_id = ? AND namespace = ? AND key = ?').run(agentId, ns, key);
138
+ return result.changes > 0;
139
+ }
140
+ /**
141
+ * Delete a memory by ID.
142
+ */
143
+ export function deleteMemoryById(id) {
144
+ const db = getDb();
145
+ const result = db.prepare('DELETE FROM agent_memories WHERE id = ?').run(id);
146
+ return result.changes > 0;
147
+ }
148
+ /**
149
+ * Purge all expired memories (housekeeping).
150
+ */
151
+ export function purgeExpiredMemories() {
152
+ const db = getDb();
153
+ const result = db.prepare('DELETE FROM agent_memories WHERE expires_at IS NOT NULL AND expires_at <= ?').run(Date.now());
154
+ return result.changes;
155
+ }
156
+ /**
157
+ * Count memories for an agent.
158
+ */
159
+ export function countMemories(agentId, namespace) {
160
+ const db = getDb();
161
+ if (namespace) {
162
+ const row = db.prepare('SELECT COUNT(*) as count FROM agent_memories WHERE agent_id = ? AND namespace = ?').get(agentId, namespace);
163
+ return row.count;
164
+ }
165
+ const row = db.prepare('SELECT COUNT(*) as count FROM agent_memories WHERE agent_id = ?').get(agentId);
166
+ return row.count;
167
+ }
168
+ //# sourceMappingURL=agent-memories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-memories.js","sourceRoot":"","sources":["../src/agent-memories.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=agent-memories.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-memories.test.d.ts","sourceRoot":"","sources":["../src/agent-memories.test.ts"],"names":[],"mappings":""}