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,60 @@
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
+ // Server start time for uptime calculation
8
+ const startTime = Date.now();
9
+ // Global pause state
10
+ let paused = false;
11
+ /**
12
+ * Check if memory creation is paused
13
+ */
14
+ export function isPaused() {
15
+ return paused;
16
+ }
17
+ /**
18
+ * Pause memory creation
19
+ */
20
+ export function pause() {
21
+ paused = true;
22
+ console.log('[shieldcortex] Memory creation PAUSED');
23
+ }
24
+ /**
25
+ * Resume memory creation
26
+ */
27
+ export function resume() {
28
+ paused = false;
29
+ console.log('[shieldcortex] Memory creation RESUMED');
30
+ }
31
+ /**
32
+ * Get control status
33
+ */
34
+ export function getControlStatus() {
35
+ const uptime = Date.now() - startTime;
36
+ // Format uptime as human-readable
37
+ const seconds = Math.floor(uptime / 1000);
38
+ const minutes = Math.floor(seconds / 60);
39
+ const hours = Math.floor(minutes / 60);
40
+ const days = Math.floor(hours / 24);
41
+ let uptimeFormatted;
42
+ if (days > 0) {
43
+ uptimeFormatted = `${days}d ${hours % 24}h ${minutes % 60}m`;
44
+ }
45
+ else if (hours > 0) {
46
+ uptimeFormatted = `${hours}h ${minutes % 60}m ${seconds % 60}s`;
47
+ }
48
+ else if (minutes > 0) {
49
+ uptimeFormatted = `${minutes}m ${seconds % 60}s`;
50
+ }
51
+ else {
52
+ uptimeFormatted = `${seconds}s`;
53
+ }
54
+ return {
55
+ paused,
56
+ uptime,
57
+ uptimeFormatted,
58
+ };
59
+ }
60
+ //# sourceMappingURL=control.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"control.js","sourceRoot":"","sources":["../../src/api/control.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,2CAA2C;AAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAE7B,qBAAqB;AACrB,IAAI,MAAM,GAAG,KAAK,CAAC;AAEnB;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK;IACnB,MAAM,GAAG,IAAI,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM;IACpB,MAAM,GAAG,KAAK,CAAC;IACf,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAK9B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAEtC,kCAAkC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IAEpC,IAAI,eAAuB,CAAC;IAC5B,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACb,eAAe,GAAG,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,OAAO,GAAG,EAAE,GAAG,CAAC;IAC/D,CAAC;SAAM,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACrB,eAAe,GAAG,GAAG,KAAK,KAAK,OAAO,GAAG,EAAE,KAAK,OAAO,GAAG,EAAE,GAAG,CAAC;IAClE,CAAC;SAAM,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QACvB,eAAe,GAAG,GAAG,OAAO,KAAK,OAAO,GAAG,EAAE,GAAG,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,eAAe,GAAG,GAAG,OAAO,GAAG,CAAC;IAClC,CAAC;IAED,OAAO;QACL,MAAM;QACN,MAAM;QACN,eAAe;KAChB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Event Emitter for Memory Events
3
+ *
4
+ * Broadcasts memory changes to connected WebSocket clients
5
+ * for real-time visualization updates.
6
+ */
7
+ import { EventEmitter } from 'events';
8
+ import { Memory, ConsolidationResult } from '../memory/types.js';
9
+ export type MemoryEventType = 'memory_created' | 'memory_accessed' | 'memory_updated' | 'memory_deleted' | 'consolidation_complete' | 'decay_tick' | 'session_started' | 'session_ended' | 'worker_light_tick' | 'worker_medium_tick' | 'link_discovered' | 'predictive_consolidation' | 'update_started' | 'update_complete' | 'update_failed' | 'server_restarting';
10
+ export interface MemoryEvent {
11
+ type: MemoryEventType;
12
+ timestamp: string;
13
+ data: unknown;
14
+ }
15
+ export interface MemoryCreatedEvent extends MemoryEvent {
16
+ type: 'memory_created';
17
+ data: {
18
+ memory: Memory;
19
+ };
20
+ }
21
+ export interface MemoryAccessedEvent extends MemoryEvent {
22
+ type: 'memory_accessed';
23
+ data: {
24
+ memoryId: number;
25
+ memory: Memory;
26
+ newSalience: number;
27
+ };
28
+ }
29
+ export interface MemoryUpdatedEvent extends MemoryEvent {
30
+ type: 'memory_updated';
31
+ data: {
32
+ memory: Memory;
33
+ };
34
+ }
35
+ export interface MemoryDeletedEvent extends MemoryEvent {
36
+ type: 'memory_deleted';
37
+ data: {
38
+ memoryId: number;
39
+ title: string;
40
+ };
41
+ }
42
+ export interface ConsolidationEvent extends MemoryEvent {
43
+ type: 'consolidation_complete';
44
+ data: ConsolidationResult & {
45
+ promotedMemories: number[];
46
+ deletedMemories: number[];
47
+ };
48
+ }
49
+ export interface DecayTickEvent extends MemoryEvent {
50
+ type: 'decay_tick';
51
+ data: {
52
+ updates: Array<{
53
+ memoryId: number;
54
+ oldScore: number;
55
+ newScore: number;
56
+ }>;
57
+ };
58
+ }
59
+ export interface WorkerLightTickEvent extends MemoryEvent {
60
+ type: 'worker_light_tick';
61
+ data: {
62
+ activationsPruned: number;
63
+ predictiveConsolidation: ConsolidationResult | null;
64
+ timestamp: string;
65
+ };
66
+ }
67
+ export interface WorkerMediumTickEvent extends MemoryEvent {
68
+ type: 'worker_medium_tick';
69
+ data: {
70
+ linksDiscovered: number;
71
+ contradictionsFound: number;
72
+ contradictionsLinked: number;
73
+ memoriesScanned: number;
74
+ timestamp: string;
75
+ };
76
+ }
77
+ export interface LinkDiscoveredEvent extends MemoryEvent {
78
+ type: 'link_discovered';
79
+ data: {
80
+ sourceId: number;
81
+ targetId: number;
82
+ relationship: string;
83
+ strength: number;
84
+ };
85
+ }
86
+ export interface PredictiveConsolidationEvent extends MemoryEvent {
87
+ type: 'predictive_consolidation';
88
+ data: {
89
+ trigger: string;
90
+ urgency: string;
91
+ result: ConsolidationResult;
92
+ };
93
+ }
94
+ declare class MemoryEventEmitter extends EventEmitter {
95
+ emit(event: MemoryEventType, data: MemoryEvent['data']): boolean;
96
+ onMemoryEvent(callback: (event: MemoryEvent) => void): void;
97
+ offMemoryEvent(callback: (event: MemoryEvent) => void): void;
98
+ }
99
+ export declare const memoryEvents: MemoryEventEmitter;
100
+ export declare function emitMemoryCreated(memory: Memory): void;
101
+ export declare function emitMemoryAccessed(memory: Memory, newSalience: number): void;
102
+ export declare function emitMemoryUpdated(memory: Memory): void;
103
+ export declare function emitMemoryDeleted(memoryId: number, title: string): void;
104
+ export declare function emitConsolidation(result: ConsolidationResult, promotedMemories?: number[], deletedMemories?: number[]): void;
105
+ export declare function emitDecayTick(updates: Array<{
106
+ memoryId: number;
107
+ oldScore: number;
108
+ newScore: number;
109
+ }>): void;
110
+ export declare function emitWorkerLightTick(data: {
111
+ activationsPruned: number;
112
+ predictiveConsolidation: ConsolidationResult | null;
113
+ timestamp: Date;
114
+ }): void;
115
+ export declare function emitWorkerMediumTick(data: {
116
+ linksDiscovered: number;
117
+ contradictionsFound: number;
118
+ contradictionsLinked: number;
119
+ memoriesScanned: number;
120
+ timestamp: Date;
121
+ }): void;
122
+ export declare function emitLinkDiscovered(data: {
123
+ sourceId: number;
124
+ targetId: number;
125
+ relationship: string;
126
+ strength: number;
127
+ }): void;
128
+ export declare function emitPredictiveConsolidation(data: {
129
+ trigger: string;
130
+ urgency: string;
131
+ result: ConsolidationResult;
132
+ }): void;
133
+ /**
134
+ * Persist event to database for cross-process IPC.
135
+ * Called by MCP server when tools are invoked.
136
+ * The API server polls for these events and broadcasts to WebSocket clients.
137
+ */
138
+ export declare function persistEvent(type: MemoryEventType, data?: unknown): void;
139
+ /**
140
+ * Get unprocessed events from database.
141
+ * Called by API server to poll for new events from MCP process.
142
+ */
143
+ export declare function getUnprocessedEvents(limit?: number): Array<{
144
+ id: number;
145
+ type: MemoryEventType;
146
+ data: unknown;
147
+ timestamp: string;
148
+ }>;
149
+ /**
150
+ * Mark events as processed after broadcasting.
151
+ */
152
+ export declare function markEventsProcessed(ids: number[]): void;
153
+ /**
154
+ * Cleanup old processed events (keep last 24 hours).
155
+ * Called periodically by API server.
156
+ */
157
+ export declare function cleanupOldEvents(): void;
158
+ export {};
159
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/api/events.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGjE,MAAM,MAAM,eAAe,GACvB,gBAAgB,GAChB,iBAAiB,GACjB,gBAAgB,GAChB,gBAAgB,GAChB,wBAAwB,GACxB,YAAY,GACZ,iBAAiB,GACjB,eAAe,GAEf,mBAAmB,GACnB,oBAAoB,GACpB,iBAAiB,GACjB,0BAA0B,GAE1B,gBAAgB,GAChB,iBAAiB,GACjB,eAAe,GACf,mBAAmB,CAAC;AAExB,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,IAAI,EAAE,wBAAwB,CAAC;IAC/B,IAAI,EAAE,mBAAmB,GAAG;QAC1B,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,eAAe,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;CACH;AAED,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE;QACJ,OAAO,EAAE,KAAK,CAAC;YACb,QAAQ,EAAE,MAAM,CAAC;YACjB,QAAQ,EAAE,MAAM,CAAC;YACjB,QAAQ,EAAE,MAAM,CAAC;SAClB,CAAC,CAAC;KACJ,CAAC;CACH;AAGD,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,IAAI,EAAE,mBAAmB,CAAC;IAC1B,IAAI,EAAE;QACJ,iBAAiB,EAAE,MAAM,CAAC;QAC1B,uBAAuB,EAAE,mBAAmB,GAAG,IAAI,CAAC;QACpD,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,qBAAsB,SAAQ,WAAW;IACxD,IAAI,EAAE,oBAAoB,CAAC;IAC3B,IAAI,EAAE;QACJ,eAAe,EAAE,MAAM,CAAC;QACxB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,oBAAoB,EAAE,MAAM,CAAC;QAC7B,eAAe,EAAE,MAAM,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,4BAA6B,SAAQ,WAAW;IAC/D,IAAI,EAAE,0BAA0B,CAAC;IACjC,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,mBAAmB,CAAC;KAC7B,CAAC;CACH;AAGD,cAAM,kBAAmB,SAAQ,YAAY;IAC3C,IAAI,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO;IAShE,aAAa,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAI3D,cAAc,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;CAG7D;AAGD,eAAO,MAAM,YAAY,oBAA2B,CAAC;AAGrD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAEtD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAM5E;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAEtD;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAEvE;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,mBAAmB,EAC3B,gBAAgB,GAAE,MAAM,EAAO,EAC/B,eAAe,GAAE,MAAM,EAAO,GAC7B,IAAI,CAMN;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GACvE,IAAI,CAEN;AAGD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uBAAuB,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACpD,SAAS,EAAE,IAAI,CAAC;CACjB,GAAG,IAAI,CAKP;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,IAAI,CAAC;CACjB,GAAG,IAAI,CAKP;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,IAAI,CAEP;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,mBAAmB,CAAC;CAC7B,GAAG,IAAI,CAEP;AAMD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAYxE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,SAAM,GAAG,KAAK,CAAC;IACvD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CA0BD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CASvD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAWvC"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Event Emitter for Memory Events
3
+ *
4
+ * Broadcasts memory changes to connected WebSocket clients
5
+ * for real-time visualization updates.
6
+ */
7
+ import { EventEmitter } from 'events';
8
+ import { getDatabase } from '../database/init.js';
9
+ // Global event emitter for memory events
10
+ class MemoryEventEmitter extends EventEmitter {
11
+ emit(event, data) {
12
+ const payload = {
13
+ type: event,
14
+ timestamp: new Date().toISOString(),
15
+ data,
16
+ };
17
+ return super.emit('memory_event', payload);
18
+ }
19
+ onMemoryEvent(callback) {
20
+ this.on('memory_event', callback);
21
+ }
22
+ offMemoryEvent(callback) {
23
+ this.off('memory_event', callback);
24
+ }
25
+ }
26
+ // Singleton instance
27
+ export const memoryEvents = new MemoryEventEmitter();
28
+ // Helper functions to emit events
29
+ export function emitMemoryCreated(memory) {
30
+ memoryEvents.emit('memory_created', { memory });
31
+ }
32
+ export function emitMemoryAccessed(memory, newSalience) {
33
+ memoryEvents.emit('memory_accessed', {
34
+ memoryId: memory.id,
35
+ memory,
36
+ newSalience,
37
+ });
38
+ }
39
+ export function emitMemoryUpdated(memory) {
40
+ memoryEvents.emit('memory_updated', { memory });
41
+ }
42
+ export function emitMemoryDeleted(memoryId, title) {
43
+ memoryEvents.emit('memory_deleted', { memoryId, title });
44
+ }
45
+ export function emitConsolidation(result, promotedMemories = [], deletedMemories = []) {
46
+ memoryEvents.emit('consolidation_complete', {
47
+ ...result,
48
+ promotedMemories,
49
+ deletedMemories,
50
+ });
51
+ }
52
+ export function emitDecayTick(updates) {
53
+ memoryEvents.emit('decay_tick', { updates });
54
+ }
55
+ // Phase 4: Worker event emitters
56
+ export function emitWorkerLightTick(data) {
57
+ memoryEvents.emit('worker_light_tick', {
58
+ ...data,
59
+ timestamp: data.timestamp.toISOString(),
60
+ });
61
+ }
62
+ export function emitWorkerMediumTick(data) {
63
+ memoryEvents.emit('worker_medium_tick', {
64
+ ...data,
65
+ timestamp: data.timestamp.toISOString(),
66
+ });
67
+ }
68
+ export function emitLinkDiscovered(data) {
69
+ memoryEvents.emit('link_discovered', data);
70
+ }
71
+ export function emitPredictiveConsolidation(data) {
72
+ memoryEvents.emit('predictive_consolidation', data);
73
+ }
74
+ // ============================================================================
75
+ // Cross-Process IPC via Database
76
+ // ============================================================================
77
+ /**
78
+ * Persist event to database for cross-process IPC.
79
+ * Called by MCP server when tools are invoked.
80
+ * The API server polls for these events and broadcasts to WebSocket clients.
81
+ */
82
+ export function persistEvent(type, data) {
83
+ try {
84
+ const db = getDatabase();
85
+ const stmt = db.prepare(`
86
+ INSERT INTO events (type, data, timestamp)
87
+ VALUES (?, ?, ?)
88
+ `);
89
+ stmt.run(type, data ? JSON.stringify(data) : null, new Date().toISOString());
90
+ }
91
+ catch (error) {
92
+ // Log but don't throw - event persistence is best-effort
93
+ console.error('[Events] Failed to persist event:', error);
94
+ }
95
+ }
96
+ /**
97
+ * Get unprocessed events from database.
98
+ * Called by API server to poll for new events from MCP process.
99
+ */
100
+ export function getUnprocessedEvents(limit = 100) {
101
+ try {
102
+ const db = getDatabase();
103
+ const stmt = db.prepare(`
104
+ SELECT id, type, data, timestamp
105
+ FROM events
106
+ WHERE processed = 0
107
+ ORDER BY id ASC
108
+ LIMIT ?
109
+ `);
110
+ const rows = stmt.all(limit);
111
+ return rows.map(row => ({
112
+ id: row.id,
113
+ type: row.type,
114
+ data: row.data ? JSON.parse(row.data) : null,
115
+ timestamp: row.timestamp,
116
+ }));
117
+ }
118
+ catch (error) {
119
+ console.error('[Events] Failed to get events:', error);
120
+ return [];
121
+ }
122
+ }
123
+ /**
124
+ * Mark events as processed after broadcasting.
125
+ */
126
+ export function markEventsProcessed(ids) {
127
+ if (ids.length === 0)
128
+ return;
129
+ try {
130
+ const db = getDatabase();
131
+ const placeholders = ids.map(() => '?').join(',');
132
+ db.prepare(`UPDATE events SET processed = 1 WHERE id IN (${placeholders})`).run(...ids);
133
+ }
134
+ catch (error) {
135
+ console.error('[Events] Failed to mark events processed:', error);
136
+ }
137
+ }
138
+ /**
139
+ * Cleanup old processed events (keep last 24 hours).
140
+ * Called periodically by API server.
141
+ */
142
+ export function cleanupOldEvents() {
143
+ try {
144
+ const db = getDatabase();
145
+ const cutoff = new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString();
146
+ const result = db.prepare(`DELETE FROM events WHERE processed = 1 AND timestamp < ?`).run(cutoff);
147
+ if (result.changes > 0) {
148
+ console.log(`[Events] Cleaned up ${result.changes} old events`);
149
+ }
150
+ }
151
+ catch (error) {
152
+ console.error('[Events] Failed to cleanup events:', error);
153
+ }
154
+ }
155
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/api/events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Version Management Module
3
+ *
4
+ * Handles version checking, updates, and server restart functionality.
5
+ */
6
+ export interface VersionInfo {
7
+ currentVersion: string;
8
+ latestVersion: string | null;
9
+ updateAvailable: boolean;
10
+ checkedAt: string;
11
+ cacheHit: boolean;
12
+ }
13
+ export interface UpdateResult {
14
+ success: boolean;
15
+ previousVersion: string;
16
+ newVersion: string | null;
17
+ error?: string;
18
+ requiresRestart: boolean;
19
+ }
20
+ /**
21
+ * Get current installed version from package.json
22
+ */
23
+ export declare function getCurrentVersion(): string;
24
+ /**
25
+ * Check npm registry for latest version (with caching)
26
+ */
27
+ export declare function checkForUpdates(forceRefresh?: boolean): Promise<VersionInfo>;
28
+ /**
29
+ * Perform npm update (runs in background)
30
+ */
31
+ export declare function performUpdate(): Promise<UpdateResult>;
32
+ /**
33
+ * Schedule server restart (with delay for client notification)
34
+ */
35
+ export declare function scheduleRestart(delayMs?: number): void;
36
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/api/version.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmBH,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAO1C;AAiBD;;GAEG;AACH,wBAAsB,eAAe,CAAC,YAAY,UAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CA8ChF;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAAC,YAAY,CAAC,CAiDrD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,SAAO,GAAG,IAAI,CAOpD"}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Version Management Module
3
+ *
4
+ * Handles version checking, updates, and server restart functionality.
5
+ */
6
+ import { execSync, exec } from 'child_process';
7
+ import { readFileSync } from 'fs';
8
+ import { fileURLToPath } from 'url';
9
+ import path from 'path';
10
+ // Get package.json path relative to this module
11
+ const __filename = fileURLToPath(import.meta.url);
12
+ const __dirname = path.dirname(__filename);
13
+ const packageJsonPath = path.resolve(__dirname, '../../package.json');
14
+ // Cache for npm registry check (5 minute TTL)
15
+ let versionCache = null;
16
+ const CACHE_TTL = 5 * 60 * 1000; // 5 minutes
17
+ /**
18
+ * Get current installed version from package.json
19
+ */
20
+ export function getCurrentVersion() {
21
+ try {
22
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
23
+ return packageJson.version;
24
+ }
25
+ catch {
26
+ return 'unknown';
27
+ }
28
+ }
29
+ /**
30
+ * Compare semver versions
31
+ * Returns true if latest is newer than current
32
+ */
33
+ function isNewerVersion(latest, current) {
34
+ const latestParts = latest.split('.').map(Number);
35
+ const currentParts = current.split('.').map(Number);
36
+ for (let i = 0; i < 3; i++) {
37
+ if ((latestParts[i] || 0) > (currentParts[i] || 0))
38
+ return true;
39
+ if ((latestParts[i] || 0) < (currentParts[i] || 0))
40
+ return false;
41
+ }
42
+ return false;
43
+ }
44
+ /**
45
+ * Check npm registry for latest version (with caching)
46
+ */
47
+ export async function checkForUpdates(forceRefresh = false) {
48
+ const currentVersion = getCurrentVersion();
49
+ const now = Date.now();
50
+ // Return cached result if still valid
51
+ if (!forceRefresh && versionCache && now - versionCache.checkedAt < CACHE_TTL) {
52
+ return {
53
+ currentVersion,
54
+ latestVersion: versionCache.latestVersion,
55
+ updateAvailable: versionCache.latestVersion
56
+ ? isNewerVersion(versionCache.latestVersion, currentVersion)
57
+ : false,
58
+ checkedAt: new Date(versionCache.checkedAt).toISOString(),
59
+ cacheHit: true,
60
+ };
61
+ }
62
+ // Query npm registry
63
+ try {
64
+ const result = execSync('npm view shieldcortex version', {
65
+ encoding: 'utf-8',
66
+ timeout: 10000, // 10 second timeout
67
+ }).trim();
68
+ versionCache = {
69
+ latestVersion: result,
70
+ checkedAt: now,
71
+ };
72
+ return {
73
+ currentVersion,
74
+ latestVersion: result,
75
+ updateAvailable: isNewerVersion(result, currentVersion),
76
+ checkedAt: new Date(now).toISOString(),
77
+ cacheHit: false,
78
+ };
79
+ }
80
+ catch {
81
+ // Network error or npm not available
82
+ return {
83
+ currentVersion,
84
+ latestVersion: null,
85
+ updateAvailable: false,
86
+ checkedAt: new Date(now).toISOString(),
87
+ cacheHit: false,
88
+ };
89
+ }
90
+ }
91
+ /**
92
+ * Perform npm update (runs in background)
93
+ */
94
+ export function performUpdate() {
95
+ const previousVersion = getCurrentVersion();
96
+ return new Promise(resolve => {
97
+ exec('npm update -g shieldcortex', {
98
+ timeout: 120000, // 2 minute timeout
99
+ }, (error, _stdout, stderr) => {
100
+ if (error) {
101
+ // Check for common permission errors
102
+ const errorMessage = stderr || error.message;
103
+ let userFriendlyError = errorMessage;
104
+ if (errorMessage.includes('EACCES') || errorMessage.includes('permission denied')) {
105
+ userFriendlyError =
106
+ 'Permission denied. Try running with sudo: sudo npm update -g shieldcortex';
107
+ }
108
+ else if (errorMessage.includes('ENOENT')) {
109
+ userFriendlyError = 'npm not found. Make sure Node.js is installed.';
110
+ }
111
+ else if (errorMessage.includes('ETIMEDOUT') || errorMessage.includes('network')) {
112
+ userFriendlyError = 'Network error. Check your internet connection.';
113
+ }
114
+ resolve({
115
+ success: false,
116
+ previousVersion,
117
+ newVersion: null,
118
+ error: userFriendlyError,
119
+ requiresRestart: false,
120
+ });
121
+ return;
122
+ }
123
+ // Clear version cache to force refresh
124
+ versionCache = null;
125
+ // Get new version
126
+ const newVersion = getCurrentVersion();
127
+ resolve({
128
+ success: true,
129
+ previousVersion,
130
+ newVersion,
131
+ requiresRestart: newVersion !== previousVersion,
132
+ });
133
+ });
134
+ });
135
+ }
136
+ /**
137
+ * Schedule server restart (with delay for client notification)
138
+ */
139
+ export function scheduleRestart(delayMs = 3000) {
140
+ console.log(`[shieldcortex] Server restart scheduled in ${delayMs}ms`);
141
+ setTimeout(() => {
142
+ console.log('[shieldcortex] Restarting server...');
143
+ process.exit(0); // Clean exit - systemd/pm2/nodemon will restart
144
+ }, delayMs);
145
+ }
146
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/api/version.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Visualization API Server
3
+ *
4
+ * Provides REST endpoints and WebSocket for the Brain Dashboard.
5
+ * Runs alongside or instead of the MCP server.
6
+ */
7
+ /**
8
+ * Start the visualization API server
9
+ */
10
+ export declare function startVisualizationServer(dbPath?: string): void;
11
+ //# sourceMappingURL=visualization-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visualization-server.d.ts","sourceRoot":"","sources":["../../src/api/visualization-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA+CH;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CA2wC9D"}