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,88 @@
1
+ /**
2
+ * Defence layer type definitions
3
+ *
4
+ * Backend-agnostic security types that define the interface for protecting
5
+ * any memory backend, not just the built-in Cortex store.
6
+ */
7
+ export type SensitivityLevel = 'PUBLIC' | 'INTERNAL' | 'CONFIDENTIAL' | 'RESTRICTED';
8
+ export type FirewallResult = 'ALLOW' | 'BLOCK' | 'QUARANTINE';
9
+ export type ThreatIndicator = 'instruction_injection' | 'privilege_escalation' | 'encoding_obfuscation' | 'credential_leak' | 'external_url' | 'fragmented_payload';
10
+ export interface DefenceSource {
11
+ type: 'user' | 'email' | 'web' | 'agent' | 'file' | 'api';
12
+ identifier: string;
13
+ }
14
+ export interface FirewallAnalysis {
15
+ result: FirewallResult;
16
+ reason: string;
17
+ threatIndicators: ThreatIndicator[];
18
+ anomalyScore: number;
19
+ blockedPatterns: string[];
20
+ }
21
+ export interface FragmentationAnalysis {
22
+ score: number;
23
+ relatedMemoryIds: number[];
24
+ suspiciousEntities: string[];
25
+ assemblyRisk: string;
26
+ }
27
+ export interface SensitivityClassification {
28
+ level: SensitivityLevel;
29
+ confidence: number;
30
+ detectedPatterns: string[];
31
+ redactionRequired: boolean;
32
+ }
33
+ export interface TrustScore {
34
+ score: number;
35
+ source: DefenceSource;
36
+ hierarchy: string[];
37
+ }
38
+ export interface DefencePipelineResult {
39
+ allowed: boolean;
40
+ firewall: FirewallAnalysis;
41
+ fragmentation: FragmentationAnalysis | null;
42
+ sensitivity: SensitivityClassification;
43
+ trust: TrustScore;
44
+ auditId: number;
45
+ }
46
+ export interface DefenceConfig {
47
+ mode: 'strict' | 'balanced' | 'permissive';
48
+ enableFragmentationDetection: boolean;
49
+ fragmentationWindowHours: number;
50
+ trustThresholdForActions: number;
51
+ autoQuarantineThreshold: number;
52
+ flagThreshold: number;
53
+ }
54
+ export declare const DEFAULT_DEFENCE_CONFIG: DefenceConfig;
55
+ export interface QuarantineEntry {
56
+ id: number;
57
+ original_content: string;
58
+ original_title: string | null;
59
+ source_type: string;
60
+ source_identifier: string;
61
+ reason: string;
62
+ threat_indicators: string;
63
+ anomaly_score: number;
64
+ firewall_result: 'BLOCK' | 'QUARANTINE';
65
+ status: 'pending' | 'approved' | 'rejected' | 'expired';
66
+ reviewed_at: string | null;
67
+ reviewed_by: string | null;
68
+ created_at: string;
69
+ expires_at: string | null;
70
+ audit_id: number | null;
71
+ }
72
+ export interface AuditEntry {
73
+ id: number;
74
+ memory_id: number | null;
75
+ timestamp: string;
76
+ source_type: string;
77
+ source_identifier: string;
78
+ trust_score: number;
79
+ sensitivity_level: string;
80
+ firewall_result: FirewallResult;
81
+ anomaly_score: number;
82
+ threat_indicators: string;
83
+ blocked_patterns: string;
84
+ reason: string | null;
85
+ fragmentation_score: number | null;
86
+ pipeline_duration_ms: number | null;
87
+ }
88
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/defence/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Defence layer type definitions
3
+ *
4
+ * Backend-agnostic security types that define the interface for protecting
5
+ * any memory backend, not just the built-in Cortex store.
6
+ */
7
+ export const DEFAULT_DEFENCE_CONFIG = {
8
+ mode: 'balanced',
9
+ enableFragmentationDetection: true,
10
+ fragmentationWindowHours: 24,
11
+ trustThresholdForActions: 0.7,
12
+ autoQuarantineThreshold: 0.3,
13
+ flagThreshold: 0.5,
14
+ };
15
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/defence/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAuEH,MAAM,CAAC,MAAM,sBAAsB,GAAkB;IACnD,IAAI,EAAE,UAAU;IAChB,4BAA4B,EAAE,IAAI;IAClC,wBAAwB,EAAE,EAAE;IAC5B,wBAAwB,EAAE,GAAG;IAC7B,uBAAuB,EAAE,GAAG;IAC5B,aAAa,EAAE,GAAG;CACnB,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Generate embedding vector for text
3
+ * @param text - Text to embed (title + content recommended)
4
+ * @returns Float32Array of 384 dimensions
5
+ */
6
+ export declare function generateEmbedding(text: string): Promise<Float32Array>;
7
+ /**
8
+ * Calculate cosine similarity between two embeddings
9
+ * @returns Similarity score 0-1 (1 = identical)
10
+ */
11
+ export declare function cosineSimilarity(a: Float32Array, b: Float32Array): number;
12
+ /**
13
+ * Check if embedding model is loaded
14
+ */
15
+ export declare function isModelLoaded(): boolean;
16
+ /**
17
+ * Preload the model (call during startup if desired)
18
+ */
19
+ export declare function preloadModel(): Promise<void>;
20
+ //# sourceMappingURL=generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/embeddings/generator.ts"],"names":[],"mappings":"AAoCA;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAgB3E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAmBzE;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAElD"}
@@ -0,0 +1,83 @@
1
+ import { pipeline, env } from '@huggingface/transformers';
2
+ // Configure for operation
3
+ env.allowRemoteModels = true;
4
+ env.allowLocalModels = true;
5
+ let embeddingPipeline = null;
6
+ let isLoading = false;
7
+ let loadPromise = null;
8
+ /**
9
+ * Lazy-load the embedding model
10
+ * Model: all-MiniLM-L6-v2 (22MB, 384 dimensions)
11
+ * Uses @huggingface/transformers (successor to @xenova/transformers)
12
+ * with better ARM64 Linux support
13
+ */
14
+ async function getEmbeddingPipeline() {
15
+ if (embeddingPipeline)
16
+ return embeddingPipeline;
17
+ if (isLoading && loadPromise) {
18
+ return loadPromise;
19
+ }
20
+ isLoading = true;
21
+ loadPromise = pipeline('feature-extraction', 'Xenova/all-MiniLM-L6-v2');
22
+ try {
23
+ embeddingPipeline = await loadPromise;
24
+ return embeddingPipeline;
25
+ }
26
+ finally {
27
+ isLoading = false;
28
+ loadPromise = null;
29
+ }
30
+ }
31
+ /**
32
+ * Generate embedding vector for text
33
+ * @param text - Text to embed (title + content recommended)
34
+ * @returns Float32Array of 384 dimensions
35
+ */
36
+ export async function generateEmbedding(text) {
37
+ const extractor = await getEmbeddingPipeline();
38
+ // Truncate to ~512 tokens worth (~2000 chars) for model limits
39
+ const truncated = text.slice(0, 2000);
40
+ const output = await extractor(truncated, {
41
+ pooling: 'mean',
42
+ normalize: true,
43
+ });
44
+ // Handle both Tensor objects (new @huggingface/transformers) and plain objects
45
+ const data = typeof output.tolist === 'function'
46
+ ? new Float32Array(output.tolist().flat(Infinity))
47
+ : new Float32Array(output.data);
48
+ return data;
49
+ }
50
+ /**
51
+ * Calculate cosine similarity between two embeddings
52
+ * @returns Similarity score 0-1 (1 = identical)
53
+ */
54
+ export function cosineSimilarity(a, b) {
55
+ if (a.length !== b.length) {
56
+ throw new Error(`Embedding dimension mismatch: ${a.length} vs ${b.length}`);
57
+ }
58
+ let dotProduct = 0;
59
+ let normA = 0;
60
+ let normB = 0;
61
+ for (let i = 0; i < a.length; i++) {
62
+ dotProduct += a[i] * b[i];
63
+ normA += a[i] * a[i];
64
+ normB += b[i] * b[i];
65
+ }
66
+ const magnitude = Math.sqrt(normA) * Math.sqrt(normB);
67
+ if (magnitude === 0)
68
+ return 0;
69
+ return dotProduct / magnitude;
70
+ }
71
+ /**
72
+ * Check if embedding model is loaded
73
+ */
74
+ export function isModelLoaded() {
75
+ return embeddingPipeline !== null;
76
+ }
77
+ /**
78
+ * Preload the model (call during startup if desired)
79
+ */
80
+ export async function preloadModel() {
81
+ await getEmbeddingPipeline();
82
+ }
83
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/embeddings/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { generateEmbedding, cosineSimilarity, isModelLoaded, preloadModel } from './generator.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/embeddings/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { generateEmbedding, cosineSimilarity, isModelLoaded, preloadModel } from './generator.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/embeddings/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Custom Error Classes
3
+ *
4
+ * Provides actionable error messages that help users understand
5
+ * what went wrong and how to fix it.
6
+ */
7
+ /**
8
+ * Base class for ShieldCortex errors
9
+ */
10
+ export declare class MemoryError extends Error {
11
+ readonly code: string;
12
+ readonly suggestion: string;
13
+ constructor(message: string, code: string, suggestion: string);
14
+ toUserMessage(): string;
15
+ }
16
+ /**
17
+ * Database blocked due to size limits
18
+ */
19
+ export declare class DatabaseBlockedError extends MemoryError {
20
+ constructor(currentSize: string);
21
+ }
22
+ /**
23
+ * Database size warning (approaching limit)
24
+ */
25
+ export declare class DatabaseSizeWarning extends MemoryError {
26
+ constructor(currentSize: string);
27
+ }
28
+ /**
29
+ * Memory not found
30
+ */
31
+ export declare class MemoryNotFoundError extends MemoryError {
32
+ constructor(id: number);
33
+ }
34
+ /**
35
+ * Invalid search query
36
+ */
37
+ export declare class InvalidQueryError extends MemoryError {
38
+ constructor(query: string, reason: string);
39
+ }
40
+ /**
41
+ * Content too large
42
+ */
43
+ export declare class ContentTooLargeError extends MemoryError {
44
+ constructor(contentSize: number, maxSize: number);
45
+ }
46
+ /**
47
+ * Bulk delete safety guard
48
+ */
49
+ export declare class BulkDeleteSafetyError extends MemoryError {
50
+ constructor(count: number);
51
+ }
52
+ /**
53
+ * Database not initialized
54
+ */
55
+ export declare class DatabaseNotInitializedError extends MemoryError {
56
+ constructor();
57
+ }
58
+ /**
59
+ * Session not found
60
+ */
61
+ export declare class SessionNotFoundError extends MemoryError {
62
+ constructor(sessionId: number);
63
+ }
64
+ /**
65
+ * Invalid memory relationship
66
+ */
67
+ export declare class InvalidRelationshipError extends MemoryError {
68
+ constructor(sourceId: number, targetId: number, reason: string);
69
+ }
70
+ /**
71
+ * Format error for MCP tool output
72
+ */
73
+ export declare function formatErrorForMcp(error: unknown): string;
74
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;IACpC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,UAAU,EAAE,MAAM,CAAC;gBAEvB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAO7D,aAAa,IAAI,MAAM;CAGxB;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,WAAW;gBACvC,WAAW,EAAE,MAAM;CAQhC;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,WAAW;gBACtC,WAAW,EAAE,MAAM;CAQhC;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,WAAW;gBACtC,EAAE,EAAE,MAAM;CAQvB;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;gBACpC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAQ1C;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,WAAW;gBACvC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAUjD;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,WAAW;gBACxC,KAAK,EAAE,MAAM;CAQ1B;AAED;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,WAAW;;CAS3D;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,WAAW;gBACvC,SAAS,EAAE,MAAM;CAQ9B;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,WAAW;gBAC3C,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAQ/D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAwBxD"}
package/dist/errors.js ADDED
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Custom Error Classes
3
+ *
4
+ * Provides actionable error messages that help users understand
5
+ * what went wrong and how to fix it.
6
+ */
7
+ /**
8
+ * Base class for ShieldCortex errors
9
+ */
10
+ export class MemoryError extends Error {
11
+ code;
12
+ suggestion;
13
+ constructor(message, code, suggestion) {
14
+ super(message);
15
+ this.name = 'MemoryError';
16
+ this.code = code;
17
+ this.suggestion = suggestion;
18
+ }
19
+ toUserMessage() {
20
+ return `${this.message}\n\nSuggestion: ${this.suggestion}`;
21
+ }
22
+ }
23
+ /**
24
+ * Database blocked due to size limits
25
+ */
26
+ export class DatabaseBlockedError extends MemoryError {
27
+ constructor(currentSize) {
28
+ super(`Database blocked: ${currentSize} exceeds the 100MB limit`, 'DB_BLOCKED', 'Run "consolidate" to clean up old memories, or use "forget" to remove memories you no longer need.');
29
+ this.name = 'DatabaseBlockedError';
30
+ }
31
+ }
32
+ /**
33
+ * Database size warning (approaching limit)
34
+ */
35
+ export class DatabaseSizeWarning extends MemoryError {
36
+ constructor(currentSize) {
37
+ super(`Database size warning: ${currentSize} is approaching the 100MB limit`, 'DB_SIZE_WARNING', 'Consider running "consolidate" to clean up old memories before reaching the limit.');
38
+ this.name = 'DatabaseSizeWarning';
39
+ }
40
+ }
41
+ /**
42
+ * Memory not found
43
+ */
44
+ export class MemoryNotFoundError extends MemoryError {
45
+ constructor(id) {
46
+ super(`Memory with ID ${id} not found`, 'MEMORY_NOT_FOUND', 'Use "recall" to search for existing memories, or check if the memory was deleted by consolidation.');
47
+ this.name = 'MemoryNotFoundError';
48
+ }
49
+ }
50
+ /**
51
+ * Invalid search query
52
+ */
53
+ export class InvalidQueryError extends MemoryError {
54
+ constructor(query, reason) {
55
+ super(`Invalid search query "${query}": ${reason}`, 'INVALID_QUERY', 'Try simpler search terms. Avoid special characters like *, ^, ( ). Use quotes around phrases.');
56
+ this.name = 'InvalidQueryError';
57
+ }
58
+ }
59
+ /**
60
+ * Content too large
61
+ */
62
+ export class ContentTooLargeError extends MemoryError {
63
+ constructor(contentSize, maxSize) {
64
+ const sizeKB = (contentSize / 1024).toFixed(1);
65
+ const maxKB = (maxSize / 1024).toFixed(1);
66
+ super(`Content size (${sizeKB}KB) exceeds maximum allowed (${maxKB}KB)`, 'CONTENT_TOO_LARGE', 'Split large content into multiple smaller memories. Focus on the key points rather than storing everything.');
67
+ this.name = 'ContentTooLargeError';
68
+ }
69
+ }
70
+ /**
71
+ * Bulk delete safety guard
72
+ */
73
+ export class BulkDeleteSafetyError extends MemoryError {
74
+ constructor(count) {
75
+ super(`Bulk delete blocked: ${count} memories would be deleted`, 'BULK_DELETE_BLOCKED', 'This operation would delete many memories. Use "dryRun: true" first to preview what would be deleted, then set "confirm: true" to proceed.');
76
+ this.name = 'BulkDeleteSafetyError';
77
+ }
78
+ }
79
+ /**
80
+ * Database not initialized
81
+ */
82
+ export class DatabaseNotInitializedError extends MemoryError {
83
+ constructor() {
84
+ super('Database not initialized', 'DB_NOT_INIT', 'This usually means the MCP server failed to start properly. Check that the database path is accessible and try restarting the server.');
85
+ this.name = 'DatabaseNotInitializedError';
86
+ }
87
+ }
88
+ /**
89
+ * Session not found
90
+ */
91
+ export class SessionNotFoundError extends MemoryError {
92
+ constructor(sessionId) {
93
+ super(`Session ${sessionId} not found`, 'SESSION_NOT_FOUND', 'The session may have already ended or was never started. Use "start_session" to begin a new session.');
94
+ this.name = 'SessionNotFoundError';
95
+ }
96
+ }
97
+ /**
98
+ * Invalid memory relationship
99
+ */
100
+ export class InvalidRelationshipError extends MemoryError {
101
+ constructor(sourceId, targetId, reason) {
102
+ super(`Cannot create relationship between memory ${sourceId} and ${targetId}: ${reason}`, 'INVALID_RELATIONSHIP', 'Ensure both memories exist and are not the same memory. Use "get_memory" to verify the memory IDs.');
103
+ this.name = 'InvalidRelationshipError';
104
+ }
105
+ }
106
+ /**
107
+ * Format error for MCP tool output
108
+ */
109
+ export function formatErrorForMcp(error) {
110
+ if (error instanceof MemoryError) {
111
+ return error.toUserMessage();
112
+ }
113
+ if (error instanceof Error) {
114
+ // Try to make common errors more helpful
115
+ if (error.message.includes('SQLITE_BUSY')) {
116
+ return 'Database is busy (another operation in progress). Please try again in a moment.';
117
+ }
118
+ if (error.message.includes('SQLITE_LOCKED')) {
119
+ return 'Database is locked. This may happen if multiple processes are accessing the database. Wait a moment and try again.';
120
+ }
121
+ if (error.message.includes('SQLITE_CORRUPT')) {
122
+ return 'Database corruption detected. Try running "consolidate" to repair, or restore from backup.';
123
+ }
124
+ if (error.message.includes('no such table')) {
125
+ return 'Database schema error. The database may need to be reinitialized. Try restarting the MCP server.';
126
+ }
127
+ return `Error: ${error.message}`;
128
+ }
129
+ return 'An unknown error occurred. Please try again or check the server logs.';
130
+ }
131
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function backfillGraph(): {
2
+ entities: number;
3
+ triples: number;
4
+ memoriesProcessed: number;
5
+ };
6
+ //# sourceMappingURL=backfill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backfill.d.ts","sourceRoot":"","sources":["../../src/graph/backfill.ts"],"names":[],"mappings":"AAIA,wBAAgB,aAAa,IAAI;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,CAqChG"}
@@ -0,0 +1,33 @@
1
+ import { getDatabase } from '../database/init.js';
2
+ import { extractFromMemory } from './extract.js';
3
+ import { processExtractionResult } from './resolve.js';
4
+ export function backfillGraph() {
5
+ const db = getDatabase();
6
+ const memories = db.prepare('SELECT id, title, content, category FROM memories ORDER BY id').all();
7
+ let entitiesBefore = db.prepare('SELECT COUNT(*) as c FROM entities').get().c;
8
+ let triplesBefore = db.prepare('SELECT COUNT(*) as c FROM triples').get().c;
9
+ let processed = 0;
10
+ for (const mem of memories) {
11
+ try {
12
+ const extraction = extractFromMemory(mem.title, mem.content, mem.category);
13
+ if (extraction.entities.length > 0) {
14
+ processExtractionResult(extraction, mem.id);
15
+ }
16
+ }
17
+ catch (e) {
18
+ console.error(`[backfill] Failed on memory #${mem.id}: ${e}`);
19
+ }
20
+ processed++;
21
+ if (processed % 50 === 0) {
22
+ console.log(`[backfill] Processed ${processed}/${memories.length} memories...`);
23
+ }
24
+ }
25
+ const entitiesAfter = db.prepare('SELECT COUNT(*) as c FROM entities').get().c;
26
+ const triplesAfter = db.prepare('SELECT COUNT(*) as c FROM triples').get().c;
27
+ return {
28
+ entities: entitiesAfter - entitiesBefore,
29
+ triples: triplesAfter - triplesBefore,
30
+ memoriesProcessed: processed,
31
+ };
32
+ }
33
+ //# sourceMappingURL=backfill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backfill.js","sourceRoot":"","sources":["../../src/graph/backfill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,UAAU,aAAa;IAC3B,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAEzB,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,+DAA+D,CAAC,CAAC,GAAG,EAK9F,CAAC;IAEH,IAAI,cAAc,GAAI,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,EAAoB,CAAC,CAAC,CAAC;IACjG,IAAI,aAAa,GAAI,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,EAAoB,CAAC,CAAC,CAAC;IAE/F,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC3E,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnC,uBAAuB,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,gCAAgC,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,SAAS,EAAE,CAAC;QACZ,IAAI,SAAS,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,wBAAwB,SAAS,IAAI,QAAQ,CAAC,MAAM,cAAc,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAI,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,EAAoB,CAAC,CAAC,CAAC;IAClG,MAAM,YAAY,GAAI,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,EAAoB,CAAC,CAAC,CAAC;IAEhG,OAAO;QACL,QAAQ,EAAE,aAAa,GAAG,cAAc;QACxC,OAAO,EAAE,YAAY,GAAG,aAAa;QACrC,iBAAiB,EAAE,SAAS;KAC7B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Pattern-based entity and triple extraction engine.
3
+ * Extracts entities (files, languages, tools, people, concepts) and
4
+ * relationship triples from memory title + content using pure regex matching.
5
+ */
6
+ export type EntityType = 'person' | 'tool' | 'concept' | 'file' | 'language' | 'service' | 'pattern';
7
+ export interface ExtractedEntity {
8
+ name: string;
9
+ type: EntityType;
10
+ }
11
+ export interface ExtractedTriple {
12
+ subject: string;
13
+ predicate: string;
14
+ object: string;
15
+ }
16
+ export interface ExtractionResult {
17
+ entities: ExtractedEntity[];
18
+ triples: ExtractedTriple[];
19
+ }
20
+ export declare function extractFromMemory(title: string, content: string, category: string): ExtractionResult;
21
+ //# sourceMappingURL=extract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/graph/extract.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAErG,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAoED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAsLpG"}