shieldcortex 2.0.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 (377) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +282 -0
  3. package/dashboard/components.json +22 -0
  4. package/dashboard/eslint.config.mjs +42 -0
  5. package/dashboard/next.config.ts +7 -0
  6. package/dashboard/package-lock.json +8053 -0
  7. package/dashboard/package.json +44 -0
  8. package/dashboard/postcss.config.mjs +7 -0
  9. package/dashboard/public/file.svg +1 -0
  10. package/dashboard/public/globe.svg +1 -0
  11. package/dashboard/public/next.svg +1 -0
  12. package/dashboard/public/vercel.svg +1 -0
  13. package/dashboard/public/window.svg +1 -0
  14. package/dashboard/scripts/ensure-api.mjs +76 -0
  15. package/dashboard/src/app/error.tsx +49 -0
  16. package/dashboard/src/app/favicon.ico +0 -0
  17. package/dashboard/src/app/globals.css +130 -0
  18. package/dashboard/src/app/layout.tsx +35 -0
  19. package/dashboard/src/app/page.tsx +364 -0
  20. package/dashboard/src/components/Providers.tsx +27 -0
  21. package/dashboard/src/components/brain/ActivityPulseSystem.tsx +229 -0
  22. package/dashboard/src/components/brain/BrainMesh.tsx +133 -0
  23. package/dashboard/src/components/brain/BrainRegions.tsx +254 -0
  24. package/dashboard/src/components/brain/BrainScene.tsx +255 -0
  25. package/dashboard/src/components/brain/CategoryLabels.tsx +103 -0
  26. package/dashboard/src/components/brain/CoreSphere.tsx +215 -0
  27. package/dashboard/src/components/brain/DataFlowParticles.tsx +123 -0
  28. package/dashboard/src/components/brain/DataStreamRings.tsx +161 -0
  29. package/dashboard/src/components/brain/ElectronFlow.tsx +323 -0
  30. package/dashboard/src/components/brain/HolographicGrid.tsx +235 -0
  31. package/dashboard/src/components/brain/MemoryLinks.tsx +271 -0
  32. package/dashboard/src/components/brain/MemoryNode.tsx +245 -0
  33. package/dashboard/src/components/brain/NeuralPathways.tsx +441 -0
  34. package/dashboard/src/components/brain/SynapseNodes.tsx +312 -0
  35. package/dashboard/src/components/brain/TimelineControls.tsx +205 -0
  36. package/dashboard/src/components/chip/ChipScene.tsx +497 -0
  37. package/dashboard/src/components/chip/ChipSubstrate.tsx +238 -0
  38. package/dashboard/src/components/chip/CortexCore.tsx +210 -0
  39. package/dashboard/src/components/chip/DataBus.tsx +416 -0
  40. package/dashboard/src/components/chip/MemoryCell.tsx +225 -0
  41. package/dashboard/src/components/chip/MemoryGrid.tsx +328 -0
  42. package/dashboard/src/components/chip/QuantumCell.tsx +316 -0
  43. package/dashboard/src/components/chip/SectionLabel.tsx +113 -0
  44. package/dashboard/src/components/chip/index.ts +14 -0
  45. package/dashboard/src/components/controls/ControlPanel.tsx +106 -0
  46. package/dashboard/src/components/controls/VersionPanel.tsx +185 -0
  47. package/dashboard/src/components/dashboard/StatsPanel.tsx +164 -0
  48. package/dashboard/src/components/debug/ActivityLog.tsx +250 -0
  49. package/dashboard/src/components/debug/DebugPanel.tsx +101 -0
  50. package/dashboard/src/components/debug/QueryTester.tsx +192 -0
  51. package/dashboard/src/components/debug/RelationshipGraph.tsx +403 -0
  52. package/dashboard/src/components/debug/SqlConsole.tsx +319 -0
  53. package/dashboard/src/components/graph/KnowledgeGraph.tsx +230 -0
  54. package/dashboard/src/components/graph/OntologyGraph.tsx +631 -0
  55. package/dashboard/src/components/insights/ActivityHeatmap.tsx +131 -0
  56. package/dashboard/src/components/insights/InsightsView.tsx +46 -0
  57. package/dashboard/src/components/insights/KnowledgeMapPanel.tsx +80 -0
  58. package/dashboard/src/components/insights/QualityPanel.tsx +116 -0
  59. package/dashboard/src/components/memories/MemoriesView.tsx +150 -0
  60. package/dashboard/src/components/memories/MemoryCard.tsx +103 -0
  61. package/dashboard/src/components/memory/MemoryDetail.tsx +325 -0
  62. package/dashboard/src/components/nav/NavRail.tsx +54 -0
  63. package/dashboard/src/components/ui/button.tsx +62 -0
  64. package/dashboard/src/components/ui/card.tsx +92 -0
  65. package/dashboard/src/components/ui/input.tsx +21 -0
  66. package/dashboard/src/hooks/useDebouncedValue.ts +24 -0
  67. package/dashboard/src/hooks/useMemories.ts +458 -0
  68. package/dashboard/src/hooks/useSuggestions.ts +46 -0
  69. package/dashboard/src/lib/category-colors.ts +84 -0
  70. package/dashboard/src/lib/position-algorithm.ts +177 -0
  71. package/dashboard/src/lib/simplex-noise.ts +217 -0
  72. package/dashboard/src/lib/store.ts +88 -0
  73. package/dashboard/src/lib/utils.ts +6 -0
  74. package/dashboard/src/lib/websocket.ts +249 -0
  75. package/dashboard/src/types/memory.ts +73 -0
  76. package/dashboard/tsconfig.json +34 -0
  77. package/dist/__tests__/consolidation-merge.test.d.ts +9 -0
  78. package/dist/__tests__/consolidation-merge.test.d.ts.map +1 -0
  79. package/dist/__tests__/consolidation-merge.test.js +137 -0
  80. package/dist/__tests__/consolidation-merge.test.js.map +1 -0
  81. package/dist/__tests__/contradictions.test.d.ts +8 -0
  82. package/dist/__tests__/contradictions.test.d.ts.map +1 -0
  83. package/dist/__tests__/contradictions.test.js +78 -0
  84. package/dist/__tests__/contradictions.test.js.map +1 -0
  85. package/dist/__tests__/salience-evolution.test.d.ts +7 -0
  86. package/dist/__tests__/salience-evolution.test.d.ts.map +1 -0
  87. package/dist/__tests__/salience-evolution.test.js +151 -0
  88. package/dist/__tests__/salience-evolution.test.js.map +1 -0
  89. package/dist/__tests__/store.test.d.ts +7 -0
  90. package/dist/__tests__/store.test.d.ts.map +1 -0
  91. package/dist/__tests__/store.test.js +582 -0
  92. package/dist/__tests__/store.test.js.map +1 -0
  93. package/dist/api/control.d.ts +27 -0
  94. package/dist/api/control.d.ts.map +1 -0
  95. package/dist/api/control.js +60 -0
  96. package/dist/api/control.js.map +1 -0
  97. package/dist/api/events.d.ts +159 -0
  98. package/dist/api/events.d.ts.map +1 -0
  99. package/dist/api/events.js +155 -0
  100. package/dist/api/events.js.map +1 -0
  101. package/dist/api/version.d.ts +36 -0
  102. package/dist/api/version.d.ts.map +1 -0
  103. package/dist/api/version.js +146 -0
  104. package/dist/api/version.js.map +1 -0
  105. package/dist/api/visualization-server.d.ts +11 -0
  106. package/dist/api/visualization-server.d.ts.map +1 -0
  107. package/dist/api/visualization-server.js +1186 -0
  108. package/dist/api/visualization-server.js.map +1 -0
  109. package/dist/context/project-context.d.ts +57 -0
  110. package/dist/context/project-context.d.ts.map +1 -0
  111. package/dist/context/project-context.js +135 -0
  112. package/dist/context/project-context.js.map +1 -0
  113. package/dist/database/init.d.ts +49 -0
  114. package/dist/database/init.d.ts.map +1 -0
  115. package/dist/database/init.js +567 -0
  116. package/dist/database/init.js.map +1 -0
  117. package/dist/defence/__tests__/firewall.test.d.ts +8 -0
  118. package/dist/defence/__tests__/firewall.test.d.ts.map +1 -0
  119. package/dist/defence/__tests__/firewall.test.js +123 -0
  120. package/dist/defence/__tests__/firewall.test.js.map +1 -0
  121. package/dist/defence/__tests__/fragmentation.test.d.ts +7 -0
  122. package/dist/defence/__tests__/fragmentation.test.d.ts.map +1 -0
  123. package/dist/defence/__tests__/fragmentation.test.js +51 -0
  124. package/dist/defence/__tests__/fragmentation.test.js.map +1 -0
  125. package/dist/defence/__tests__/pipeline.test.d.ts +8 -0
  126. package/dist/defence/__tests__/pipeline.test.d.ts.map +1 -0
  127. package/dist/defence/__tests__/pipeline.test.js +61 -0
  128. package/dist/defence/__tests__/pipeline.test.js.map +1 -0
  129. package/dist/defence/__tests__/sensitivity.test.d.ts +7 -0
  130. package/dist/defence/__tests__/sensitivity.test.d.ts.map +1 -0
  131. package/dist/defence/__tests__/sensitivity.test.js +61 -0
  132. package/dist/defence/__tests__/sensitivity.test.js.map +1 -0
  133. package/dist/defence/__tests__/trust.test.d.ts +7 -0
  134. package/dist/defence/__tests__/trust.test.d.ts.map +1 -0
  135. package/dist/defence/__tests__/trust.test.js +49 -0
  136. package/dist/defence/__tests__/trust.test.js.map +1 -0
  137. package/dist/defence/audit/index.d.ts +4 -0
  138. package/dist/defence/audit/index.d.ts.map +1 -0
  139. package/dist/defence/audit/index.js +3 -0
  140. package/dist/defence/audit/index.js.map +1 -0
  141. package/dist/defence/audit/logger.d.ts +14 -0
  142. package/dist/defence/audit/logger.d.ts.map +1 -0
  143. package/dist/defence/audit/logger.js +54 -0
  144. package/dist/defence/audit/logger.js.map +1 -0
  145. package/dist/defence/audit/queries.d.ts +33 -0
  146. package/dist/defence/audit/queries.d.ts.map +1 -0
  147. package/dist/defence/audit/queries.js +103 -0
  148. package/dist/defence/audit/queries.js.map +1 -0
  149. package/dist/defence/firewall/anomaly-scorer.d.ts +8 -0
  150. package/dist/defence/firewall/anomaly-scorer.d.ts.map +1 -0
  151. package/dist/defence/firewall/anomaly-scorer.js +58 -0
  152. package/dist/defence/firewall/anomaly-scorer.js.map +1 -0
  153. package/dist/defence/firewall/encoding-detector.d.ts +13 -0
  154. package/dist/defence/firewall/encoding-detector.d.ts.map +1 -0
  155. package/dist/defence/firewall/encoding-detector.js +120 -0
  156. package/dist/defence/firewall/encoding-detector.js.map +1 -0
  157. package/dist/defence/firewall/index.d.ts +21 -0
  158. package/dist/defence/firewall/index.d.ts.map +1 -0
  159. package/dist/defence/firewall/index.js +133 -0
  160. package/dist/defence/firewall/index.js.map +1 -0
  161. package/dist/defence/firewall/instruction-detector.d.ts +12 -0
  162. package/dist/defence/firewall/instruction-detector.d.ts.map +1 -0
  163. package/dist/defence/firewall/instruction-detector.js +99 -0
  164. package/dist/defence/firewall/instruction-detector.js.map +1 -0
  165. package/dist/defence/firewall/privilege-detector.d.ts +13 -0
  166. package/dist/defence/firewall/privilege-detector.d.ts.map +1 -0
  167. package/dist/defence/firewall/privilege-detector.js +89 -0
  168. package/dist/defence/firewall/privilege-detector.js.map +1 -0
  169. package/dist/defence/fragmentation/assembly-detector.d.ts +18 -0
  170. package/dist/defence/fragmentation/assembly-detector.d.ts.map +1 -0
  171. package/dist/defence/fragmentation/assembly-detector.js +72 -0
  172. package/dist/defence/fragmentation/assembly-detector.js.map +1 -0
  173. package/dist/defence/fragmentation/entity-extractor.d.ts +19 -0
  174. package/dist/defence/fragmentation/entity-extractor.d.ts.map +1 -0
  175. package/dist/defence/fragmentation/entity-extractor.js +86 -0
  176. package/dist/defence/fragmentation/entity-extractor.js.map +1 -0
  177. package/dist/defence/fragmentation/index.d.ts +23 -0
  178. package/dist/defence/fragmentation/index.d.ts.map +1 -0
  179. package/dist/defence/fragmentation/index.js +49 -0
  180. package/dist/defence/fragmentation/index.js.map +1 -0
  181. package/dist/defence/fragmentation/temporal-analyzer.d.ts +28 -0
  182. package/dist/defence/fragmentation/temporal-analyzer.d.ts.map +1 -0
  183. package/dist/defence/fragmentation/temporal-analyzer.js +41 -0
  184. package/dist/defence/fragmentation/temporal-analyzer.js.map +1 -0
  185. package/dist/defence/index.d.ts +12 -0
  186. package/dist/defence/index.d.ts.map +1 -0
  187. package/dist/defence/index.js +18 -0
  188. package/dist/defence/index.js.map +1 -0
  189. package/dist/defence/pipeline.d.ts +9 -0
  190. package/dist/defence/pipeline.d.ts.map +1 -0
  191. package/dist/defence/pipeline.js +115 -0
  192. package/dist/defence/pipeline.js.map +1 -0
  193. package/dist/defence/scanner/index.d.ts +5 -0
  194. package/dist/defence/scanner/index.d.ts.map +1 -0
  195. package/dist/defence/scanner/index.js +5 -0
  196. package/dist/defence/scanner/index.js.map +1 -0
  197. package/dist/defence/scanner/scan-existing.d.ts +34 -0
  198. package/dist/defence/scanner/scan-existing.d.ts.map +1 -0
  199. package/dist/defence/scanner/scan-existing.js +136 -0
  200. package/dist/defence/scanner/scan-existing.js.map +1 -0
  201. package/dist/defence/sensitivity/classifier.d.ts +6 -0
  202. package/dist/defence/sensitivity/classifier.d.ts.map +1 -0
  203. package/dist/defence/sensitivity/classifier.js +50 -0
  204. package/dist/defence/sensitivity/classifier.js.map +1 -0
  205. package/dist/defence/sensitivity/index.d.ts +11 -0
  206. package/dist/defence/sensitivity/index.d.ts.map +1 -0
  207. package/dist/defence/sensitivity/index.js +13 -0
  208. package/dist/defence/sensitivity/index.js.map +1 -0
  209. package/dist/defence/sensitivity/patterns.d.ts +14 -0
  210. package/dist/defence/sensitivity/patterns.d.ts.map +1 -0
  211. package/dist/defence/sensitivity/patterns.js +67 -0
  212. package/dist/defence/sensitivity/patterns.js.map +1 -0
  213. package/dist/defence/sensitivity/redaction.d.ts +17 -0
  214. package/dist/defence/sensitivity/redaction.d.ts.map +1 -0
  215. package/dist/defence/sensitivity/redaction.js +47 -0
  216. package/dist/defence/sensitivity/redaction.js.map +1 -0
  217. package/dist/defence/trust/index.d.ts +3 -0
  218. package/dist/defence/trust/index.d.ts.map +1 -0
  219. package/dist/defence/trust/index.js +3 -0
  220. package/dist/defence/trust/index.js.map +1 -0
  221. package/dist/defence/trust/recall-filter.d.ts +10 -0
  222. package/dist/defence/trust/recall-filter.d.ts.map +1 -0
  223. package/dist/defence/trust/recall-filter.js +38 -0
  224. package/dist/defence/trust/recall-filter.js.map +1 -0
  225. package/dist/defence/trust/source-scorer.d.ts +6 -0
  226. package/dist/defence/trust/source-scorer.d.ts.map +1 -0
  227. package/dist/defence/trust/source-scorer.js +34 -0
  228. package/dist/defence/trust/source-scorer.js.map +1 -0
  229. package/dist/defence/types.d.ts +88 -0
  230. package/dist/defence/types.d.ts.map +1 -0
  231. package/dist/defence/types.js +15 -0
  232. package/dist/defence/types.js.map +1 -0
  233. package/dist/embeddings/generator.d.ts +20 -0
  234. package/dist/embeddings/generator.d.ts.map +1 -0
  235. package/dist/embeddings/generator.js +83 -0
  236. package/dist/embeddings/generator.js.map +1 -0
  237. package/dist/embeddings/index.d.ts +2 -0
  238. package/dist/embeddings/index.d.ts.map +1 -0
  239. package/dist/embeddings/index.js +2 -0
  240. package/dist/embeddings/index.js.map +1 -0
  241. package/dist/errors.d.ts +74 -0
  242. package/dist/errors.d.ts.map +1 -0
  243. package/dist/errors.js +131 -0
  244. package/dist/errors.js.map +1 -0
  245. package/dist/graph/backfill.d.ts +6 -0
  246. package/dist/graph/backfill.d.ts.map +1 -0
  247. package/dist/graph/backfill.js +33 -0
  248. package/dist/graph/backfill.js.map +1 -0
  249. package/dist/graph/extract.d.ts +21 -0
  250. package/dist/graph/extract.d.ts.map +1 -0
  251. package/dist/graph/extract.js +231 -0
  252. package/dist/graph/extract.js.map +1 -0
  253. package/dist/graph/resolve.d.ts +6 -0
  254. package/dist/graph/resolve.d.ts.map +1 -0
  255. package/dist/graph/resolve.js +126 -0
  256. package/dist/graph/resolve.js.map +1 -0
  257. package/dist/index.d.ts +31 -0
  258. package/dist/index.d.ts.map +1 -0
  259. package/dist/index.js +248 -0
  260. package/dist/index.js.map +1 -0
  261. package/dist/memory/activation.d.ts +69 -0
  262. package/dist/memory/activation.d.ts.map +1 -0
  263. package/dist/memory/activation.js +168 -0
  264. package/dist/memory/activation.js.map +1 -0
  265. package/dist/memory/consolidate.d.ts +98 -0
  266. package/dist/memory/consolidate.d.ts.map +1 -0
  267. package/dist/memory/consolidate.js +511 -0
  268. package/dist/memory/consolidate.js.map +1 -0
  269. package/dist/memory/contradiction.d.ts +69 -0
  270. package/dist/memory/contradiction.d.ts.map +1 -0
  271. package/dist/memory/contradiction.js +286 -0
  272. package/dist/memory/contradiction.js.map +1 -0
  273. package/dist/memory/decay.d.ts +62 -0
  274. package/dist/memory/decay.d.ts.map +1 -0
  275. package/dist/memory/decay.js +184 -0
  276. package/dist/memory/decay.js.map +1 -0
  277. package/dist/memory/salience.d.ts +36 -0
  278. package/dist/memory/salience.d.ts.map +1 -0
  279. package/dist/memory/salience.js +216 -0
  280. package/dist/memory/salience.js.map +1 -0
  281. package/dist/memory/similarity.d.ts +57 -0
  282. package/dist/memory/similarity.d.ts.map +1 -0
  283. package/dist/memory/similarity.js +114 -0
  284. package/dist/memory/similarity.js.map +1 -0
  285. package/dist/memory/store.d.ts +179 -0
  286. package/dist/memory/store.d.ts.map +1 -0
  287. package/dist/memory/store.js +1184 -0
  288. package/dist/memory/store.js.map +1 -0
  289. package/dist/memory/types.d.ts +97 -0
  290. package/dist/memory/types.d.ts.map +1 -0
  291. package/dist/memory/types.js +30 -0
  292. package/dist/memory/types.js.map +1 -0
  293. package/dist/server.d.ts +12 -0
  294. package/dist/server.d.ts.map +1 -0
  295. package/dist/server.js +568 -0
  296. package/dist/server.js.map +1 -0
  297. package/dist/service/install.d.ts +15 -0
  298. package/dist/service/install.d.ts.map +1 -0
  299. package/dist/service/install.js +178 -0
  300. package/dist/service/install.js.map +1 -0
  301. package/dist/service/templates.d.ts +13 -0
  302. package/dist/service/templates.d.ts.map +1 -0
  303. package/dist/service/templates.js +58 -0
  304. package/dist/service/templates.js.map +1 -0
  305. package/dist/setup/claude-md.d.ts +12 -0
  306. package/dist/setup/claude-md.d.ts.map +1 -0
  307. package/dist/setup/claude-md.js +68 -0
  308. package/dist/setup/claude-md.js.map +1 -0
  309. package/dist/setup/clawdbot.d.ts +15 -0
  310. package/dist/setup/clawdbot.d.ts.map +1 -0
  311. package/dist/setup/clawdbot.js +118 -0
  312. package/dist/setup/clawdbot.js.map +1 -0
  313. package/dist/setup/doctor.d.ts +5 -0
  314. package/dist/setup/doctor.d.ts.map +1 -0
  315. package/dist/setup/doctor.js +141 -0
  316. package/dist/setup/doctor.js.map +1 -0
  317. package/dist/setup/hooks.d.ts +6 -0
  318. package/dist/setup/hooks.d.ts.map +1 -0
  319. package/dist/setup/hooks.js +36 -0
  320. package/dist/setup/hooks.js.map +1 -0
  321. package/dist/setup/migrate.d.ts +16 -0
  322. package/dist/setup/migrate.d.ts.map +1 -0
  323. package/dist/setup/migrate.js +164 -0
  324. package/dist/setup/migrate.js.map +1 -0
  325. package/dist/setup/settings-hooks.d.ts +7 -0
  326. package/dist/setup/settings-hooks.d.ts.map +1 -0
  327. package/dist/setup/settings-hooks.js +83 -0
  328. package/dist/setup/settings-hooks.js.map +1 -0
  329. package/dist/setup/uninstall.d.ts +12 -0
  330. package/dist/setup/uninstall.d.ts.map +1 -0
  331. package/dist/setup/uninstall.js +125 -0
  332. package/dist/setup/uninstall.js.map +1 -0
  333. package/dist/tools/context.d.ts +135 -0
  334. package/dist/tools/context.d.ts.map +1 -0
  335. package/dist/tools/context.js +273 -0
  336. package/dist/tools/context.js.map +1 -0
  337. package/dist/tools/forget.d.ts +53 -0
  338. package/dist/tools/forget.d.ts.map +1 -0
  339. package/dist/tools/forget.js +179 -0
  340. package/dist/tools/forget.js.map +1 -0
  341. package/dist/tools/graph.d.ts +46 -0
  342. package/dist/tools/graph.d.ts.map +1 -0
  343. package/dist/tools/graph.js +206 -0
  344. package/dist/tools/graph.js.map +1 -0
  345. package/dist/tools/recall.d.ts +79 -0
  346. package/dist/tools/recall.d.ts.map +1 -0
  347. package/dist/tools/recall.js +156 -0
  348. package/dist/tools/recall.js.map +1 -0
  349. package/dist/tools/remember.d.ts +83 -0
  350. package/dist/tools/remember.d.ts.map +1 -0
  351. package/dist/tools/remember.js +151 -0
  352. package/dist/tools/remember.js.map +1 -0
  353. package/dist/worker/brain-worker.d.ts +100 -0
  354. package/dist/worker/brain-worker.d.ts.map +1 -0
  355. package/dist/worker/brain-worker.js +283 -0
  356. package/dist/worker/brain-worker.js.map +1 -0
  357. package/dist/worker/link-discovery.d.ts +47 -0
  358. package/dist/worker/link-discovery.d.ts.map +1 -0
  359. package/dist/worker/link-discovery.js +103 -0
  360. package/dist/worker/link-discovery.js.map +1 -0
  361. package/dist/worker/predictive-consolidation.d.ts +46 -0
  362. package/dist/worker/predictive-consolidation.d.ts.map +1 -0
  363. package/dist/worker/predictive-consolidation.js +110 -0
  364. package/dist/worker/predictive-consolidation.js.map +1 -0
  365. package/dist/worker/types.d.ts +91 -0
  366. package/dist/worker/types.d.ts.map +1 -0
  367. package/dist/worker/types.js +22 -0
  368. package/dist/worker/types.js.map +1 -0
  369. package/hooks/clawdbot/cortex-memory/HOOK.md +71 -0
  370. package/hooks/clawdbot/cortex-memory/handler.js +279 -0
  371. package/package.json +73 -0
  372. package/scripts/pre-compact-hook.mjs +716 -0
  373. package/scripts/session-end-hook.mjs +548 -0
  374. package/scripts/session-start-hook.mjs +221 -0
  375. package/scripts/start-dashboard.sh +41 -0
  376. package/scripts/stop-dashboard.sh +21 -0
  377. package/scripts/stop-hook.mjs +163 -0
@@ -0,0 +1,582 @@
1
+ /**
2
+ * Memory Store Tests
3
+ *
4
+ * Tests for core memory operations, salience detection, and decay calculations.
5
+ */
6
+ import { describe, it, expect } from '@jest/globals';
7
+ import { jaccardSimilarity } from '../memory/similarity.js';
8
+ import { cosineSimilarity } from '../embeddings/generator.js';
9
+ describe('Memory Types', () => {
10
+ describe('DEFAULT_CONFIG', () => {
11
+ it('should have sensible default values', async () => {
12
+ const { DEFAULT_CONFIG } = await import('../memory/types.js');
13
+ expect(DEFAULT_CONFIG.decayRate).toBeGreaterThan(0);
14
+ expect(DEFAULT_CONFIG.decayRate).toBeLessThan(1);
15
+ expect(DEFAULT_CONFIG.reinforcementFactor).toBeGreaterThan(1);
16
+ expect(DEFAULT_CONFIG.salienceThreshold).toBeGreaterThan(0);
17
+ expect(DEFAULT_CONFIG.salienceThreshold).toBeLessThan(1);
18
+ expect(DEFAULT_CONFIG.maxShortTermMemories).toBeGreaterThan(0);
19
+ expect(DEFAULT_CONFIG.maxLongTermMemories).toBeGreaterThan(0);
20
+ });
21
+ it('should have valid thresholds', async () => {
22
+ const { DEFAULT_CONFIG } = await import('../memory/types.js');
23
+ // Consolidation threshold should be higher than deletion threshold
24
+ expect(DEFAULT_CONFIG.consolidationThreshold).toBeGreaterThan(DEFAULT_CONFIG.salienceThreshold);
25
+ });
26
+ });
27
+ describe('DELETION_THRESHOLDS', () => {
28
+ it('should have thresholds for all categories', async () => {
29
+ const { DELETION_THRESHOLDS } = await import('../memory/types.js');
30
+ const expectedCategories = [
31
+ 'architecture',
32
+ 'pattern',
33
+ 'preference',
34
+ 'error',
35
+ 'context',
36
+ 'learning',
37
+ 'todo',
38
+ 'note',
39
+ 'relationship',
40
+ 'custom',
41
+ ];
42
+ for (const category of expectedCategories) {
43
+ expect(DELETION_THRESHOLDS[category]).toBeDefined();
44
+ expect(DELETION_THRESHOLDS[category]).toBeGreaterThan(0);
45
+ expect(DELETION_THRESHOLDS[category]).toBeLessThan(1);
46
+ }
47
+ });
48
+ it('should prioritize architecture and error over notes', async () => {
49
+ const { DELETION_THRESHOLDS } = await import('../memory/types.js');
50
+ // Lower threshold = harder to delete
51
+ expect(DELETION_THRESHOLDS.architecture).toBeLessThan(DELETION_THRESHOLDS.note);
52
+ expect(DELETION_THRESHOLDS.error).toBeLessThan(DELETION_THRESHOLDS.note);
53
+ });
54
+ });
55
+ });
56
+ describe('Salience Detection', () => {
57
+ describe('calculateSalience', () => {
58
+ it('should return higher salience for explicit remember requests', async () => {
59
+ const { calculateSalience } = await import('../memory/salience.js');
60
+ const explicitResult = calculateSalience({
61
+ title: 'Test Memory',
62
+ content: 'Remember this important information',
63
+ });
64
+ const implicitResult = calculateSalience({
65
+ title: 'Test Memory',
66
+ content: 'Some random text without markers',
67
+ });
68
+ expect(explicitResult).toBeGreaterThanOrEqual(implicitResult);
69
+ });
70
+ it('should detect architecture decisions', async () => {
71
+ const { calculateSalience } = await import('../memory/salience.js');
72
+ const result = calculateSalience({
73
+ title: 'Database Choice',
74
+ content: 'We decided to use PostgreSQL for better JSON support',
75
+ });
76
+ expect(result).toBeGreaterThan(0.3);
77
+ });
78
+ it('should detect error resolutions', async () => {
79
+ const { calculateSalience } = await import('../memory/salience.js');
80
+ const result = calculateSalience({
81
+ title: 'Bug Fix',
82
+ content: 'Fixed by updating the dependency to version 2.0',
83
+ });
84
+ expect(result).toBeGreaterThan(0.3);
85
+ });
86
+ it('should return values between 0 and 1', async () => {
87
+ const { calculateSalience } = await import('../memory/salience.js');
88
+ const result = calculateSalience({
89
+ title: 'Test',
90
+ content: 'Any content',
91
+ });
92
+ expect(result).toBeGreaterThanOrEqual(0);
93
+ expect(result).toBeLessThanOrEqual(1);
94
+ });
95
+ });
96
+ describe('suggestCategory', () => {
97
+ it('should suggest architecture for design decisions', async () => {
98
+ const { suggestCategory } = await import('../memory/salience.js');
99
+ const result = suggestCategory({
100
+ title: 'System Design',
101
+ content: 'Using microservices architecture with API gateway',
102
+ });
103
+ expect(result).toBe('architecture');
104
+ });
105
+ it('should suggest error for bug fixes', async () => {
106
+ const { suggestCategory } = await import('../memory/salience.js');
107
+ const result = suggestCategory({
108
+ title: 'Bug Resolution',
109
+ content: 'The error was caused by null pointer exception',
110
+ });
111
+ expect(result).toBe('error');
112
+ });
113
+ it('should suggest preference for user preferences', async () => {
114
+ const { suggestCategory } = await import('../memory/salience.js');
115
+ const result = suggestCategory({
116
+ title: 'User Setting',
117
+ content: 'User prefers TypeScript strict mode always',
118
+ });
119
+ expect(result).toBe('preference');
120
+ });
121
+ it('should return a valid category', async () => {
122
+ const { suggestCategory } = await import('../memory/salience.js');
123
+ const validCategories = [
124
+ 'architecture',
125
+ 'pattern',
126
+ 'preference',
127
+ 'error',
128
+ 'context',
129
+ 'learning',
130
+ 'todo',
131
+ 'note',
132
+ 'relationship',
133
+ 'custom',
134
+ ];
135
+ const result = suggestCategory({
136
+ title: 'Test',
137
+ content: 'Generic content',
138
+ });
139
+ expect(validCategories).toContain(result);
140
+ });
141
+ });
142
+ describe('extractTags', () => {
143
+ it('should extract hashtags from content', async () => {
144
+ const { extractTags } = await import('../memory/salience.js');
145
+ const result = extractTags({
146
+ title: 'Test',
147
+ content: 'This is about #typescript and #react',
148
+ });
149
+ expect(result).toContain('typescript');
150
+ expect(result).toContain('react');
151
+ });
152
+ it('should include provided tags', async () => {
153
+ const { extractTags } = await import('../memory/salience.js');
154
+ const result = extractTags({
155
+ title: 'Test',
156
+ content: 'Some content',
157
+ tags: ['existing-tag'],
158
+ });
159
+ expect(result).toContain('existing-tag');
160
+ });
161
+ it('should return an array', async () => {
162
+ const { extractTags } = await import('../memory/salience.js');
163
+ const result = extractTags({
164
+ title: 'Test',
165
+ content: 'Content without hashtags',
166
+ });
167
+ expect(Array.isArray(result)).toBe(true);
168
+ });
169
+ });
170
+ });
171
+ describe('Temporal Decay', () => {
172
+ // Helper to create a valid Memory object for testing
173
+ function createTestMemory(overrides = {}) {
174
+ return {
175
+ id: 1,
176
+ type: 'short_term',
177
+ category: 'note',
178
+ title: 'Test Memory',
179
+ content: 'Test content for decay testing',
180
+ salience: 0.8,
181
+ lastAccessed: new Date(),
182
+ createdAt: new Date(),
183
+ accessCount: 1,
184
+ project: 'test-project',
185
+ tags: [],
186
+ metadata: {},
187
+ decayedScore: 0.8,
188
+ scope: 'project',
189
+ transferable: false,
190
+ ...overrides,
191
+ };
192
+ }
193
+ describe('calculateDecayedScore', () => {
194
+ it('should decay score over time', async () => {
195
+ const { calculateDecayedScore } = await import('../memory/decay.js');
196
+ const memory = createTestMemory({
197
+ lastAccessed: new Date(Date.now() - 24 * 60 * 60 * 1000), // 24 hours ago
198
+ });
199
+ const decayedScore = calculateDecayedScore(memory);
200
+ // Score should be less than original salience after 24 hours
201
+ expect(decayedScore).toBeLessThan(memory.salience);
202
+ expect(decayedScore).toBeGreaterThan(0);
203
+ });
204
+ it('should not decay recently accessed memories significantly', async () => {
205
+ const { calculateDecayedScore } = await import('../memory/decay.js');
206
+ const memory = createTestMemory({
207
+ lastAccessed: new Date(), // Just now
208
+ });
209
+ const decayedScore = calculateDecayedScore(memory);
210
+ // Score should be very close to original for recently accessed
211
+ expect(decayedScore).toBeCloseTo(memory.salience, 1);
212
+ });
213
+ it('should decay long-term memories slower than short-term', async () => {
214
+ const { calculateDecayedScore } = await import('../memory/decay.js');
215
+ const hoursSinceAccess = 24;
216
+ const lastAccessed = new Date(Date.now() - hoursSinceAccess * 60 * 60 * 1000);
217
+ const shortTermMemory = createTestMemory({
218
+ type: 'short_term',
219
+ lastAccessed,
220
+ });
221
+ const longTermMemory = createTestMemory({
222
+ type: 'long_term',
223
+ lastAccessed,
224
+ });
225
+ const shortTermScore = calculateDecayedScore(shortTermMemory);
226
+ const longTermScore = calculateDecayedScore(longTermMemory);
227
+ // Long-term should retain more score than short-term
228
+ expect(longTermScore).toBeGreaterThan(shortTermScore);
229
+ });
230
+ it('should return value between 0 and 1', async () => {
231
+ const { calculateDecayedScore } = await import('../memory/decay.js');
232
+ const memory = createTestMemory({
233
+ lastAccessed: new Date(Date.now() - 1000 * 60 * 60 * 24 * 365), // 1 year ago
234
+ });
235
+ const decayedScore = calculateDecayedScore(memory);
236
+ expect(decayedScore).toBeGreaterThanOrEqual(0);
237
+ expect(decayedScore).toBeLessThanOrEqual(1);
238
+ });
239
+ });
240
+ describe('calculateReinforcementBoost', () => {
241
+ it('should boost score on access', async () => {
242
+ const { calculateReinforcementBoost } = await import('../memory/decay.js');
243
+ const memory = createTestMemory({ salience: 0.5 });
244
+ const boost = calculateReinforcementBoost(memory);
245
+ expect(boost).toBeGreaterThan(memory.salience);
246
+ expect(boost).toBeLessThanOrEqual(1.0);
247
+ });
248
+ it('should cap boost at 1.0', async () => {
249
+ const { calculateReinforcementBoost } = await import('../memory/decay.js');
250
+ const memory = createTestMemory({ salience: 0.95 });
251
+ const boost = calculateReinforcementBoost(memory);
252
+ expect(boost).toBeLessThanOrEqual(1.0);
253
+ });
254
+ });
255
+ });
256
+ describe('Text Similarity', () => {
257
+ describe('jaccardSimilarity', () => {
258
+ it('should return 1.0 for identical texts', async () => {
259
+ const { jaccardSimilarity } = await import('../memory/similarity.js');
260
+ const result = jaccardSimilarity('the quick brown fox', 'the quick brown fox');
261
+ expect(result).toBe(1.0);
262
+ });
263
+ it('should return 0.0 for completely different texts', async () => {
264
+ const { jaccardSimilarity } = await import('../memory/similarity.js');
265
+ const result = jaccardSimilarity('apple banana cherry', 'dog elephant frog');
266
+ expect(result).toBe(0.0);
267
+ });
268
+ it('should return value between 0 and 1 for partial overlap', async () => {
269
+ const { jaccardSimilarity } = await import('../memory/similarity.js');
270
+ const result = jaccardSimilarity('the quick brown fox', 'the lazy brown dog');
271
+ expect(result).toBeGreaterThan(0);
272
+ expect(result).toBeLessThan(1);
273
+ });
274
+ it('should be symmetric', async () => {
275
+ const { jaccardSimilarity } = await import('../memory/similarity.js');
276
+ const result1 = jaccardSimilarity('hello world', 'world hello');
277
+ const result2 = jaccardSimilarity('world hello', 'hello world');
278
+ expect(result1).toBeCloseTo(result2, 10);
279
+ });
280
+ });
281
+ describe('tokenize', () => {
282
+ it('should lowercase text', async () => {
283
+ const { tokenize } = await import('../memory/similarity.js');
284
+ const result = tokenize('HELLO World');
285
+ expect(result.has('hello')).toBe(true);
286
+ expect(result.has('world')).toBe(true);
287
+ expect(result.has('HELLO')).toBe(false);
288
+ });
289
+ it('should remove punctuation', async () => {
290
+ const { tokenize } = await import('../memory/similarity.js');
291
+ const result = tokenize('hello, world! how are you?');
292
+ expect(result.has('hello')).toBe(true);
293
+ expect(result.has('world')).toBe(true);
294
+ expect(result.has('hello,')).toBe(false);
295
+ });
296
+ it('should filter short words', async () => {
297
+ const { tokenize } = await import('../memory/similarity.js');
298
+ const result = tokenize('a an the and or but');
299
+ // Words with 2 or fewer characters should be filtered
300
+ expect(result.has('a')).toBe(false);
301
+ expect(result.has('an')).toBe(false);
302
+ expect(result.has('the')).toBe(true); // 3 chars
303
+ expect(result.has('and')).toBe(true); // 3 chars
304
+ });
305
+ });
306
+ });
307
+ describe('Content Truncation', () => {
308
+ it('should define MAX_CONTENT_SIZE constant', () => {
309
+ const MAX_CONTENT_SIZE = 10 * 1024; // 10KB
310
+ expect(MAX_CONTENT_SIZE).toBe(10240);
311
+ });
312
+ it('should handle content under the limit', () => {
313
+ const content = 'Short content';
314
+ const MAX_CONTENT_SIZE = 10 * 1024;
315
+ expect(content.length).toBeLessThan(MAX_CONTENT_SIZE);
316
+ });
317
+ it('should identify content over the limit', () => {
318
+ const MAX_CONTENT_SIZE = 10 * 1024;
319
+ const longContent = 'x'.repeat(MAX_CONTENT_SIZE + 100);
320
+ expect(longContent.length).toBeGreaterThan(MAX_CONTENT_SIZE);
321
+ });
322
+ });
323
+ describe('Semantic Linking', () => {
324
+ describe('cosineSimilarity for embedding-based linking', () => {
325
+ it('should return 1.0 for identical vectors', () => {
326
+ const a = new Float32Array([1, 2, 3]);
327
+ const b = new Float32Array([1, 2, 3]);
328
+ expect(cosineSimilarity(a, b)).toBeCloseTo(1.0, 5);
329
+ });
330
+ it('should return 0.0 for orthogonal vectors', () => {
331
+ const a = new Float32Array([1, 0, 0]);
332
+ const b = new Float32Array([0, 1, 0]);
333
+ expect(cosineSimilarity(a, b)).toBeCloseTo(0.0, 5);
334
+ });
335
+ it('should return high similarity for similar vectors', () => {
336
+ const a = new Float32Array([1, 2, 3]);
337
+ const b = new Float32Array([1.1, 2.1, 3.1]);
338
+ expect(cosineSimilarity(a, b)).toBeGreaterThan(0.99);
339
+ });
340
+ });
341
+ describe('jaccardSimilarity for FTS fallback linking', () => {
342
+ it('should link memories with similar content but different tags', () => {
343
+ // Two memories about the same topic (SQLite performance) but with different tags
344
+ const memoryA = 'SQLite database performance optimization using WAL mode and busy timeout';
345
+ const memoryB = 'SQLite performance tuning with WAL journal mode and connection pooling';
346
+ const similarity = jaccardSimilarity(memoryA, memoryB);
347
+ // Should exceed the 0.3 threshold for FTS fallback linking
348
+ expect(similarity).toBeGreaterThanOrEqual(0.3);
349
+ });
350
+ it('should not link unrelated memories', () => {
351
+ const memoryA = 'React component lifecycle hooks and state management';
352
+ const memoryB = 'PostgreSQL database backup and restore procedures';
353
+ const similarity = jaccardSimilarity(memoryA, memoryB);
354
+ // Should be below the 0.3 threshold
355
+ expect(similarity).toBeLessThan(0.3);
356
+ });
357
+ it('should compute correct strength: min(0.7, sim + 0.2)', () => {
358
+ const memoryA = 'SQLite WAL mode performance optimization database';
359
+ const memoryB = 'SQLite WAL mode performance tuning database';
360
+ const sim = jaccardSimilarity(memoryA, memoryB);
361
+ const strength = Math.min(0.7, sim + 0.2);
362
+ expect(strength).toBeGreaterThan(0.2);
363
+ expect(strength).toBeLessThanOrEqual(0.7);
364
+ });
365
+ });
366
+ describe('Search Reinforcement and Co-Search Linking', () => {
367
+ it('should increase salience after repeated searches', async () => {
368
+ const { initDatabase, closeDatabase } = await import('../database/init.js');
369
+ const { addMemory, searchMemories, getMemoryById, deleteMemory } = await import('../memory/store.js');
370
+ closeDatabase();
371
+ initDatabase(':memory:');
372
+ let memoryId;
373
+ try {
374
+ const memory = addMemory({
375
+ title: 'Unique Reinforcement Test Target',
376
+ content: 'This memory is about reinforcement testing with a unique keyword xyzzyplugh',
377
+ tags: ['reinforcement-test'],
378
+ project: 'test-project',
379
+ });
380
+ memoryId = memory.id;
381
+ const initialSalience = memory.salience;
382
+ // Search 3 times for this memory
383
+ for (let i = 0; i < 3; i++) {
384
+ await searchMemories({ query: 'xyzzyplugh', project: 'test-project' });
385
+ }
386
+ const updated = getMemoryById(memoryId);
387
+ expect(updated).not.toBeNull();
388
+ expect(updated.salience).toBeGreaterThan(initialSalience);
389
+ }
390
+ finally {
391
+ if (memoryId) {
392
+ try {
393
+ deleteMemory(memoryId);
394
+ }
395
+ catch { /* ignore */ }
396
+ }
397
+ closeDatabase();
398
+ }
399
+ });
400
+ it('should link memories that co-appear in search results', async () => {
401
+ const { initDatabase, closeDatabase } = await import('../database/init.js');
402
+ const { addMemory, searchMemories, getRelatedMemories, deleteMemory } = await import('../memory/store.js');
403
+ closeDatabase();
404
+ initDatabase(':memory:');
405
+ let idA;
406
+ let idB;
407
+ try {
408
+ const memA = addMemory({
409
+ title: 'Co-search Link Memory Alpha',
410
+ content: 'Shared topic cosearchunique for linking test alpha variant',
411
+ tags: ['cosearch-test'],
412
+ project: 'test-project',
413
+ });
414
+ idA = memA.id;
415
+ const memB = addMemory({
416
+ title: 'Co-search Link Memory Beta',
417
+ content: 'Shared topic cosearchunique for linking test beta variant',
418
+ tags: ['cosearch-test'],
419
+ project: 'test-project',
420
+ });
421
+ idB = memB.id;
422
+ // Search for a term that matches both
423
+ await searchMemories({ query: 'cosearchunique', project: 'test-project' });
424
+ // Verify they got linked
425
+ const relatedToA = getRelatedMemories(idA);
426
+ const linkToB = relatedToA.find(r => r.memory.id === idB);
427
+ expect(linkToB).toBeDefined();
428
+ if (linkToB) {
429
+ expect(linkToB.relationship).toBe('related');
430
+ expect(linkToB.strength).toBeGreaterThan(0);
431
+ }
432
+ }
433
+ finally {
434
+ if (idA) {
435
+ try {
436
+ deleteMemory(idA);
437
+ }
438
+ catch { /* ignore */ }
439
+ }
440
+ if (idB) {
441
+ try {
442
+ deleteMemory(idB);
443
+ }
444
+ catch { /* ignore */ }
445
+ }
446
+ closeDatabase();
447
+ }
448
+ });
449
+ });
450
+ describe('Integration: detectRelationships via addMemory', () => {
451
+ it('should auto-link related memories with different tags', async () => {
452
+ const { initDatabase, closeDatabase } = await import('../database/init.js');
453
+ const { addMemory, getRelatedMemories, deleteMemory } = await import('../memory/store.js');
454
+ // Close any existing database connection first
455
+ closeDatabase();
456
+ // Initialize a fresh test database
457
+ const testDbPath = ':memory:';
458
+ initDatabase(testDbPath);
459
+ let memoryAId;
460
+ let memoryBId;
461
+ try {
462
+ // Create first memory tagged "database"
463
+ const memoryA = addMemory({
464
+ title: 'SQLite Performance Optimization',
465
+ content: 'SQLite database performance optimization using WAL mode and busy timeout for concurrent access',
466
+ tags: ['database'],
467
+ project: 'test-project',
468
+ });
469
+ memoryAId = memoryA.id;
470
+ // Create second memory tagged "backend" with similar content
471
+ // This triggers detectRelationships internally, which should find memoryA
472
+ const memoryB = addMemory({
473
+ title: 'Backend Database Tuning',
474
+ content: 'SQLite performance tuning with WAL journal mode and connection pooling for better throughput',
475
+ tags: ['backend'],
476
+ project: 'test-project',
477
+ });
478
+ memoryBId = memoryB.id;
479
+ // Wait a bit for async embedding generation (though FTS fallback should work immediately)
480
+ await new Promise(resolve => setTimeout(resolve, 100));
481
+ // Verify that memoryB is linked to memoryA
482
+ const relatedToB = getRelatedMemories(memoryB.id);
483
+ // Should have at least one link
484
+ expect(relatedToB.length).toBeGreaterThan(0);
485
+ // Should contain a link to memoryA
486
+ const linkToA = relatedToB.find(rel => rel.memory.id === memoryA.id);
487
+ expect(linkToA).toBeDefined();
488
+ if (linkToA) {
489
+ // Verify the relationship properties
490
+ expect(linkToA.relationship).toBe('related');
491
+ expect(linkToA.strength).toBeGreaterThan(0);
492
+ expect(linkToA.strength).toBeLessThanOrEqual(1);
493
+ expect(linkToA.direction).toBe('outgoing');
494
+ }
495
+ }
496
+ finally {
497
+ // Cleanup: delete test memories
498
+ if (memoryAId) {
499
+ try {
500
+ deleteMemory(memoryAId);
501
+ }
502
+ catch (e) { /* ignore */ }
503
+ }
504
+ if (memoryBId) {
505
+ try {
506
+ deleteMemory(memoryBId);
507
+ }
508
+ catch (e) { /* ignore */ }
509
+ }
510
+ // Close the database connection
511
+ closeDatabase();
512
+ }
513
+ });
514
+ });
515
+ describe('enrichMemory', () => {
516
+ it('should enrich a memory with new related context', async () => {
517
+ const { initDatabase, closeDatabase } = await import('../database/init.js');
518
+ const { addMemory, enrichMemory, getMemoryById, deleteMemory } = await import('../memory/store.js');
519
+ closeDatabase();
520
+ initDatabase(':memory:');
521
+ let memoryId;
522
+ try {
523
+ const memory = addMemory({
524
+ title: 'JWT token authentication',
525
+ content: 'We use JWT tokens for authentication in our API server with rate limiting',
526
+ category: 'architecture',
527
+ tags: ['auth', 'jwt'],
528
+ project: 'test-project',
529
+ type: 'long_term',
530
+ });
531
+ memoryId = memory.id;
532
+ const result = enrichMemory(memoryId, 'We use JWT tokens for authentication in our API server with rate limiting and also need Redis caching', 'search');
533
+ expect(result.enriched).toBe(true);
534
+ const updated = getMemoryById(memoryId);
535
+ expect(updated).toBeDefined();
536
+ expect(updated.content).toContain('rate limiting');
537
+ expect(updated.content).toContain('search:');
538
+ }
539
+ finally {
540
+ if (memoryId) {
541
+ try {
542
+ deleteMemory(memoryId);
543
+ }
544
+ catch { /* ignore */ }
545
+ }
546
+ closeDatabase();
547
+ }
548
+ });
549
+ it('should reject enrichment when context is too similar', async () => {
550
+ const { initDatabase, closeDatabase } = await import('../database/init.js');
551
+ const { addMemory, enrichMemory, deleteMemory } = await import('../memory/store.js');
552
+ closeDatabase();
553
+ initDatabase(':memory:');
554
+ let memoryId;
555
+ try {
556
+ const memory = addMemory({
557
+ title: 'JWT token authentication',
558
+ content: 'We use JWT tokens for authentication with RS256 signing',
559
+ category: 'architecture',
560
+ tags: ['auth'],
561
+ project: 'test-project',
562
+ type: 'long_term',
563
+ });
564
+ memoryId = memory.id;
565
+ const result = enrichMemory(memoryId, 'We use JWT tokens for authentication with RS256 signing', 'search');
566
+ expect(result.enriched).toBe(false);
567
+ // May fail due to cooldown (shared process state) or similarity
568
+ expect(result.reason).toMatch(/similar|cooldown/);
569
+ }
570
+ finally {
571
+ if (memoryId) {
572
+ try {
573
+ deleteMemory(memoryId);
574
+ }
575
+ catch { /* ignore */ }
576
+ }
577
+ closeDatabase();
578
+ }
579
+ });
580
+ });
581
+ });
582
+ //# sourceMappingURL=store.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.test.js","sourceRoot":"","sources":["../../src/__tests__/store.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Control State Module
3
+ *
4
+ * Manages global control state for the ShieldCortex system.
5
+ * Currently handles pause/resume functionality for memory creation.
6
+ */
7
+ /**
8
+ * Check if memory creation is paused
9
+ */
10
+ export declare function isPaused(): boolean;
11
+ /**
12
+ * Pause memory creation
13
+ */
14
+ export declare function pause(): void;
15
+ /**
16
+ * Resume memory creation
17
+ */
18
+ export declare function resume(): void;
19
+ /**
20
+ * Get control status
21
+ */
22
+ export declare function getControlStatus(): {
23
+ paused: boolean;
24
+ uptime: number;
25
+ uptimeFormatted: string;
26
+ };
27
+ //# sourceMappingURL=control.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"control.d.ts","sourceRoot":"","sources":["../../src/api/control.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH;;GAEG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAED;;GAEG;AACH,wBAAgB,KAAK,IAAI,IAAI,CAG5B;AAED;;GAEG;AACH,wBAAgB,MAAM,IAAI,IAAI,CAG7B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;CACzB,CAyBA"}