@jagilber-org/index-server 1.19.1

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 (360) hide show
  1. package/CHANGELOG.md +1218 -0
  2. package/CODE_OF_CONDUCT.md +49 -0
  3. package/CONTRIBUTING.md +75 -0
  4. package/LICENSE +21 -0
  5. package/README.md +523 -0
  6. package/SECURITY.md +50 -0
  7. package/dist/config/configUtils.d.ts +11 -0
  8. package/dist/config/configUtils.js +87 -0
  9. package/dist/config/dashboardConfig.d.ts +45 -0
  10. package/dist/config/dashboardConfig.js +63 -0
  11. package/dist/config/defaultValues.d.ts +61 -0
  12. package/dist/config/defaultValues.js +70 -0
  13. package/dist/config/dirConstants.d.ts +17 -0
  14. package/dist/config/dirConstants.js +28 -0
  15. package/dist/config/featureConfig.d.ts +61 -0
  16. package/dist/config/featureConfig.js +121 -0
  17. package/dist/config/runtimeConfig.d.ts +145 -0
  18. package/dist/config/runtimeConfig.js +334 -0
  19. package/dist/config/serverConfig.d.ts +90 -0
  20. package/dist/config/serverConfig.js +164 -0
  21. package/dist/dashboard/analytics/AnalyticsEngine.d.ts +142 -0
  22. package/dist/dashboard/analytics/AnalyticsEngine.js +373 -0
  23. package/dist/dashboard/analytics/BusinessIntelligence.d.ts +187 -0
  24. package/dist/dashboard/analytics/BusinessIntelligence.js +594 -0
  25. package/dist/dashboard/client/admin.html +2150 -0
  26. package/dist/dashboard/client/chunks/mermaid-layout-elk.esm.min/chunk-SP2CHFBE.mjs +1 -0
  27. package/dist/dashboard/client/chunks/mermaid-layout-elk.esm.min/render-T6MDALS3.mjs +27 -0
  28. package/dist/dashboard/client/css/admin.css +1466 -0
  29. package/dist/dashboard/client/js/admin.boot.js +359 -0
  30. package/dist/dashboard/client/js/admin.config.js +196 -0
  31. package/dist/dashboard/client/js/admin.embeddings.js +425 -0
  32. package/dist/dashboard/client/js/admin.graph.js +583 -0
  33. package/dist/dashboard/client/js/admin.instances.js +120 -0
  34. package/dist/dashboard/client/js/admin.instructions.js +552 -0
  35. package/dist/dashboard/client/js/admin.logs.js +113 -0
  36. package/dist/dashboard/client/js/admin.maintenance.js +354 -0
  37. package/dist/dashboard/client/js/admin.messaging.js +635 -0
  38. package/dist/dashboard/client/js/admin.monitor.js +181 -0
  39. package/dist/dashboard/client/js/admin.overview.js +221 -0
  40. package/dist/dashboard/client/js/admin.performance.js +61 -0
  41. package/dist/dashboard/client/js/admin.sessions.js +293 -0
  42. package/dist/dashboard/client/js/admin.sqlite.js +366 -0
  43. package/dist/dashboard/client/js/admin.utils.js +49 -0
  44. package/dist/dashboard/client/js/chart.umd.js +14 -0
  45. package/dist/dashboard/client/js/elk.bundled.js +6696 -0
  46. package/dist/dashboard/client/js/marked.umd.js +74 -0
  47. package/dist/dashboard/client/js/mermaid.min.js +3022 -0
  48. package/dist/dashboard/client/mermaid-layout-elk.esm.min.mjs +1 -0
  49. package/dist/dashboard/export/DataExporter.d.ts +169 -0
  50. package/dist/dashboard/export/DataExporter.js +737 -0
  51. package/dist/dashboard/export/exporters/csvExporter.d.ts +11 -0
  52. package/dist/dashboard/export/exporters/csvExporter.js +46 -0
  53. package/dist/dashboard/export/exporters/exportTypes.d.ts +89 -0
  54. package/dist/dashboard/export/exporters/exportTypes.js +5 -0
  55. package/dist/dashboard/export/exporters/jsonExporter.d.ts +7 -0
  56. package/dist/dashboard/export/exporters/jsonExporter.js +22 -0
  57. package/dist/dashboard/export/exporters/xmlExporter.d.ts +17 -0
  58. package/dist/dashboard/export/exporters/xmlExporter.js +175 -0
  59. package/dist/dashboard/integration/APIIntegration.d.ts +41 -0
  60. package/dist/dashboard/integration/APIIntegration.js +95 -0
  61. package/dist/dashboard/security/SecurityMonitor.d.ts +167 -0
  62. package/dist/dashboard/security/SecurityMonitor.js +559 -0
  63. package/dist/dashboard/server/AdminPanel.d.ts +183 -0
  64. package/dist/dashboard/server/AdminPanel.js +792 -0
  65. package/dist/dashboard/server/AdminPanelConfig.d.ts +42 -0
  66. package/dist/dashboard/server/AdminPanelConfig.js +80 -0
  67. package/dist/dashboard/server/AdminPanelState.d.ts +47 -0
  68. package/dist/dashboard/server/AdminPanelState.js +214 -0
  69. package/dist/dashboard/server/ApiRoutes.d.ts +17 -0
  70. package/dist/dashboard/server/ApiRoutes.js +149 -0
  71. package/dist/dashboard/server/DashboardServer.d.ts +49 -0
  72. package/dist/dashboard/server/DashboardServer.js +159 -0
  73. package/dist/dashboard/server/FileMetricsStorage.d.ts +49 -0
  74. package/dist/dashboard/server/FileMetricsStorage.js +195 -0
  75. package/dist/dashboard/server/HttpTransport.d.ts +23 -0
  76. package/dist/dashboard/server/HttpTransport.js +116 -0
  77. package/dist/dashboard/server/InstanceManager.d.ts +53 -0
  78. package/dist/dashboard/server/InstanceManager.js +284 -0
  79. package/dist/dashboard/server/KnowledgeStore.d.ts +35 -0
  80. package/dist/dashboard/server/KnowledgeStore.js +105 -0
  81. package/dist/dashboard/server/LeaderElection.d.ts +81 -0
  82. package/dist/dashboard/server/LeaderElection.js +268 -0
  83. package/dist/dashboard/server/MetricsCollector.d.ts +200 -0
  84. package/dist/dashboard/server/MetricsCollector.js +803 -0
  85. package/dist/dashboard/server/SessionPersistenceManager.d.ts +88 -0
  86. package/dist/dashboard/server/SessionPersistenceManager.js +457 -0
  87. package/dist/dashboard/server/ThinClient.d.ts +64 -0
  88. package/dist/dashboard/server/ThinClient.js +237 -0
  89. package/dist/dashboard/server/WebSocketManager.d.ts +161 -0
  90. package/dist/dashboard/server/WebSocketManager.js +463 -0
  91. package/dist/dashboard/server/httpLifecycle.d.ts +17 -0
  92. package/dist/dashboard/server/httpLifecycle.js +35 -0
  93. package/dist/dashboard/server/legacyDashboardHtml.d.ts +9 -0
  94. package/dist/dashboard/server/legacyDashboardHtml.js +618 -0
  95. package/dist/dashboard/server/legacyDashboardStyles.d.ts +5 -0
  96. package/dist/dashboard/server/legacyDashboardStyles.js +490 -0
  97. package/dist/dashboard/server/metricsAggregation.d.ts +252 -0
  98. package/dist/dashboard/server/metricsAggregation.js +206 -0
  99. package/dist/dashboard/server/metricsSerializer.d.ts +25 -0
  100. package/dist/dashboard/server/metricsSerializer.js +195 -0
  101. package/dist/dashboard/server/routes/admin.routes.d.ts +16 -0
  102. package/dist/dashboard/server/routes/admin.routes.js +596 -0
  103. package/dist/dashboard/server/routes/alerts.routes.d.ts +7 -0
  104. package/dist/dashboard/server/routes/alerts.routes.js +93 -0
  105. package/dist/dashboard/server/routes/api.feedback.routes.d.ts +73 -0
  106. package/dist/dashboard/server/routes/api.feedback.routes.js +171 -0
  107. package/dist/dashboard/server/routes/api.instructions.routes.d.ts +101 -0
  108. package/dist/dashboard/server/routes/api.instructions.routes.js +213 -0
  109. package/dist/dashboard/server/routes/api.usage.routes.d.ts +57 -0
  110. package/dist/dashboard/server/routes/api.usage.routes.js +374 -0
  111. package/dist/dashboard/server/routes/embeddings.routes.d.ts +6 -0
  112. package/dist/dashboard/server/routes/embeddings.routes.js +246 -0
  113. package/dist/dashboard/server/routes/graph.routes.d.ts +6 -0
  114. package/dist/dashboard/server/routes/graph.routes.js +280 -0
  115. package/dist/dashboard/server/routes/index.d.ts +38 -0
  116. package/dist/dashboard/server/routes/index.js +194 -0
  117. package/dist/dashboard/server/routes/instances.routes.d.ts +6 -0
  118. package/dist/dashboard/server/routes/instances.routes.js +35 -0
  119. package/dist/dashboard/server/routes/instructions.routes.d.ts +8 -0
  120. package/dist/dashboard/server/routes/instructions.routes.js +336 -0
  121. package/dist/dashboard/server/routes/knowledge.routes.d.ts +6 -0
  122. package/dist/dashboard/server/routes/knowledge.routes.js +82 -0
  123. package/dist/dashboard/server/routes/logs.routes.d.ts +6 -0
  124. package/dist/dashboard/server/routes/logs.routes.js +164 -0
  125. package/dist/dashboard/server/routes/messaging.routes.d.ts +16 -0
  126. package/dist/dashboard/server/routes/messaging.routes.js +293 -0
  127. package/dist/dashboard/server/routes/metrics.routes.d.ts +10 -0
  128. package/dist/dashboard/server/routes/metrics.routes.js +346 -0
  129. package/dist/dashboard/server/routes/scripts.routes.d.ts +9 -0
  130. package/dist/dashboard/server/routes/scripts.routes.js +84 -0
  131. package/dist/dashboard/server/routes/sqlite.routes.d.ts +9 -0
  132. package/dist/dashboard/server/routes/sqlite.routes.js +569 -0
  133. package/dist/dashboard/server/routes/status.routes.d.ts +7 -0
  134. package/dist/dashboard/server/routes/status.routes.js +183 -0
  135. package/dist/dashboard/server/routes/synthetic.routes.d.ts +7 -0
  136. package/dist/dashboard/server/routes/synthetic.routes.js +195 -0
  137. package/dist/dashboard/server/routes/tools.routes.d.ts +6 -0
  138. package/dist/dashboard/server/routes/tools.routes.js +46 -0
  139. package/dist/dashboard/server/routes/usage.routes.d.ts +6 -0
  140. package/dist/dashboard/server/routes/usage.routes.js +25 -0
  141. package/dist/dashboard/server/wsInit.d.ts +16 -0
  142. package/dist/dashboard/server/wsInit.js +35 -0
  143. package/dist/externalClientLib.d.ts +1 -0
  144. package/dist/externalClientLib.js +2 -0
  145. package/dist/minimal/index.d.ts +1 -0
  146. package/dist/minimal/index.js +140 -0
  147. package/dist/models/SessionPersistence.d.ts +115 -0
  148. package/dist/models/SessionPersistence.js +66 -0
  149. package/dist/models/instruction.d.ts +45 -0
  150. package/dist/models/instruction.js +2 -0
  151. package/dist/perf/benchmark.d.ts +1 -0
  152. package/dist/perf/benchmark.js +50 -0
  153. package/dist/portableClientWrapper.d.ts +1 -0
  154. package/dist/portableClientWrapper.js +2 -0
  155. package/dist/schemas/index.d.ts +128 -0
  156. package/dist/schemas/index.js +371 -0
  157. package/dist/scripts/runPerformanceBaseline.d.ts +1 -0
  158. package/dist/scripts/runPerformanceBaseline.js +17 -0
  159. package/dist/server/handshakeManager.d.ts +25 -0
  160. package/dist/server/handshakeManager.js +472 -0
  161. package/dist/server/index-server.d.ts +56 -0
  162. package/dist/server/index-server.js +822 -0
  163. package/dist/server/registry.d.ts +44 -0
  164. package/dist/server/registry.js +236 -0
  165. package/dist/server/sdkServer.d.ts +8 -0
  166. package/dist/server/sdkServer.js +299 -0
  167. package/dist/server/shutdownGuard.d.ts +41 -0
  168. package/dist/server/shutdownGuard.js +52 -0
  169. package/dist/server/thin-client.d.ts +22 -0
  170. package/dist/server/thin-client.js +111 -0
  171. package/dist/server/transport.d.ts +41 -0
  172. package/dist/server/transport.js +312 -0
  173. package/dist/server/transportFactory.d.ts +21 -0
  174. package/dist/server/transportFactory.js +429 -0
  175. package/dist/services/atomicFs.d.ts +22 -0
  176. package/dist/services/atomicFs.js +103 -0
  177. package/dist/services/auditLog.d.ts +38 -0
  178. package/dist/services/auditLog.js +142 -0
  179. package/dist/services/autoBackup.d.ts +14 -0
  180. package/dist/services/autoBackup.js +171 -0
  181. package/dist/services/autoSplit.d.ts +32 -0
  182. package/dist/services/autoSplit.js +113 -0
  183. package/dist/services/backupZip.d.ts +25 -0
  184. package/dist/services/backupZip.js +110 -0
  185. package/dist/services/bootstrapGating.d.ts +123 -0
  186. package/dist/services/bootstrapGating.js +221 -0
  187. package/dist/services/canonical.d.ts +23 -0
  188. package/dist/services/canonical.js +65 -0
  189. package/dist/services/categoryRules.d.ts +7 -0
  190. package/dist/services/categoryRules.js +37 -0
  191. package/dist/services/classificationService.d.ts +42 -0
  192. package/dist/services/classificationService.js +168 -0
  193. package/dist/services/embeddingService.d.ts +62 -0
  194. package/dist/services/embeddingService.js +259 -0
  195. package/dist/services/errors.d.ts +22 -0
  196. package/dist/services/errors.js +31 -0
  197. package/dist/services/featureFlags.d.ts +25 -0
  198. package/dist/services/featureFlags.js +89 -0
  199. package/dist/services/features.d.ts +13 -0
  200. package/dist/services/features.js +35 -0
  201. package/dist/services/handlers/instructions.add.d.ts +1 -0
  202. package/dist/services/handlers/instructions.add.js +496 -0
  203. package/dist/services/handlers/instructions.groom.d.ts +1 -0
  204. package/dist/services/handlers/instructions.groom.js +523 -0
  205. package/dist/services/handlers/instructions.import.d.ts +1 -0
  206. package/dist/services/handlers/instructions.import.js +173 -0
  207. package/dist/services/handlers/instructions.patch.d.ts +1 -0
  208. package/dist/services/handlers/instructions.patch.js +167 -0
  209. package/dist/services/handlers/instructions.query.d.ts +163 -0
  210. package/dist/services/handlers/instructions.query.js +522 -0
  211. package/dist/services/handlers/instructions.reload.d.ts +1 -0
  212. package/dist/services/handlers/instructions.reload.js +13 -0
  213. package/dist/services/handlers/instructions.remove.d.ts +1 -0
  214. package/dist/services/handlers/instructions.remove.js +118 -0
  215. package/dist/services/handlers/instructions.shared.d.ts +31 -0
  216. package/dist/services/handlers/instructions.shared.js +124 -0
  217. package/dist/services/handlers.activation.d.ts +1 -0
  218. package/dist/services/handlers.activation.js +203 -0
  219. package/dist/services/handlers.bootstrap.d.ts +1 -0
  220. package/dist/services/handlers.bootstrap.js +38 -0
  221. package/dist/services/handlers.dashboardConfig.d.ts +34 -0
  222. package/dist/services/handlers.dashboardConfig.js +108 -0
  223. package/dist/services/handlers.diagnostics.d.ts +1 -0
  224. package/dist/services/handlers.diagnostics.js +64 -0
  225. package/dist/services/handlers.feedback.d.ts +15 -0
  226. package/dist/services/handlers.feedback.js +378 -0
  227. package/dist/services/handlers.gates.d.ts +1 -0
  228. package/dist/services/handlers.gates.js +46 -0
  229. package/dist/services/handlers.graph.d.ts +53 -0
  230. package/dist/services/handlers.graph.js +231 -0
  231. package/dist/services/handlers.help.d.ts +1 -0
  232. package/dist/services/handlers.help.js +119 -0
  233. package/dist/services/handlers.instructionSchema.d.ts +1 -0
  234. package/dist/services/handlers.instructionSchema.js +227 -0
  235. package/dist/services/handlers.instructions.d.ts +8 -0
  236. package/dist/services/handlers.instructions.js +14 -0
  237. package/dist/services/handlers.instructionsDiagnostics.d.ts +1 -0
  238. package/dist/services/handlers.instructionsDiagnostics.js +14 -0
  239. package/dist/services/handlers.integrity.d.ts +1 -0
  240. package/dist/services/handlers.integrity.js +35 -0
  241. package/dist/services/handlers.manifest.d.ts +1 -0
  242. package/dist/services/handlers.manifest.js +24 -0
  243. package/dist/services/handlers.messaging.d.ts +12 -0
  244. package/dist/services/handlers.messaging.js +203 -0
  245. package/dist/services/handlers.metrics.d.ts +1 -0
  246. package/dist/services/handlers.metrics.js +43 -0
  247. package/dist/services/handlers.promote.d.ts +1 -0
  248. package/dist/services/handlers.promote.js +306 -0
  249. package/dist/services/handlers.prompt.d.ts +1 -0
  250. package/dist/services/handlers.prompt.js +7 -0
  251. package/dist/services/handlers.search.d.ts +69 -0
  252. package/dist/services/handlers.search.js +645 -0
  253. package/dist/services/handlers.testPrimitive.d.ts +1 -0
  254. package/dist/services/handlers.testPrimitive.js +5 -0
  255. package/dist/services/handlers.trace.d.ts +1 -0
  256. package/dist/services/handlers.trace.js +31 -0
  257. package/dist/services/handlers.usage.d.ts +1 -0
  258. package/dist/services/handlers.usage.js +11 -0
  259. package/dist/services/hotScore.d.ts +137 -0
  260. package/dist/services/hotScore.js +244 -0
  261. package/dist/services/indexContext.d.ts +117 -0
  262. package/dist/services/indexContext.js +968 -0
  263. package/dist/services/indexLoader.d.ts +44 -0
  264. package/dist/services/indexLoader.js +921 -0
  265. package/dist/services/indexRepository.d.ts +32 -0
  266. package/dist/services/indexRepository.js +71 -0
  267. package/dist/services/indexingService.d.ts +1 -0
  268. package/dist/services/indexingService.js +2 -0
  269. package/dist/services/instructions.dispatcher.d.ts +1 -0
  270. package/dist/services/instructions.dispatcher.js +231 -0
  271. package/dist/services/logPrefix.d.ts +1 -0
  272. package/dist/services/logPrefix.js +30 -0
  273. package/dist/services/logger.d.ts +52 -0
  274. package/dist/services/logger.js +268 -0
  275. package/dist/services/manifestManager.d.ts +82 -0
  276. package/dist/services/manifestManager.js +200 -0
  277. package/dist/services/messaging/agentMailbox.d.ts +60 -0
  278. package/dist/services/messaging/agentMailbox.js +353 -0
  279. package/dist/services/messaging/messagingPersistence.d.ts +20 -0
  280. package/dist/services/messaging/messagingPersistence.js +111 -0
  281. package/dist/services/messaging/messagingTypes.d.ts +150 -0
  282. package/dist/services/messaging/messagingTypes.js +66 -0
  283. package/dist/services/ownershipService.d.ts +1 -0
  284. package/dist/services/ownershipService.js +38 -0
  285. package/dist/services/performanceBaseline.d.ts +19 -0
  286. package/dist/services/performanceBaseline.js +210 -0
  287. package/dist/services/preflight.d.ts +12 -0
  288. package/dist/services/preflight.js +79 -0
  289. package/dist/services/promptReviewService.d.ts +44 -0
  290. package/dist/services/promptReviewService.js +101 -0
  291. package/dist/services/responseEnvelope.d.ts +6 -0
  292. package/dist/services/responseEnvelope.js +25 -0
  293. package/dist/services/seedBootstrap.d.ts +34 -0
  294. package/dist/services/seedBootstrap.js +427 -0
  295. package/dist/services/storage/factory.d.ts +17 -0
  296. package/dist/services/storage/factory.js +35 -0
  297. package/dist/services/storage/hashUtils.d.ts +11 -0
  298. package/dist/services/storage/hashUtils.js +35 -0
  299. package/dist/services/storage/index.d.ts +12 -0
  300. package/dist/services/storage/index.js +18 -0
  301. package/dist/services/storage/jsonFileStore.d.ts +32 -0
  302. package/dist/services/storage/jsonFileStore.js +241 -0
  303. package/dist/services/storage/migrationEngine.d.ts +35 -0
  304. package/dist/services/storage/migrationEngine.js +93 -0
  305. package/dist/services/storage/sqliteMessageStore.d.ts +53 -0
  306. package/dist/services/storage/sqliteMessageStore.js +146 -0
  307. package/dist/services/storage/sqliteSchema.d.ts +12 -0
  308. package/dist/services/storage/sqliteSchema.js +122 -0
  309. package/dist/services/storage/sqliteStore.d.ts +41 -0
  310. package/dist/services/storage/sqliteStore.js +339 -0
  311. package/dist/services/storage/sqliteUsageStore.d.ts +35 -0
  312. package/dist/services/storage/sqliteUsageStore.js +94 -0
  313. package/dist/services/storage/types.d.ts +171 -0
  314. package/dist/services/storage/types.js +12 -0
  315. package/dist/services/toolHandlers.d.ts +23 -0
  316. package/dist/services/toolHandlers.js +50 -0
  317. package/dist/services/toolRegistry.d.ts +20 -0
  318. package/dist/services/toolRegistry.js +490 -0
  319. package/dist/services/toolRegistry.zod.d.ts +10 -0
  320. package/dist/services/toolRegistry.zod.js +323 -0
  321. package/dist/services/tracing.d.ts +26 -0
  322. package/dist/services/tracing.js +260 -0
  323. package/dist/services/usageBuckets.d.ts +161 -0
  324. package/dist/services/usageBuckets.js +364 -0
  325. package/dist/services/validationService.d.ts +38 -0
  326. package/dist/services/validationService.js +125 -0
  327. package/dist/utils/BufferRing.d.ts +203 -0
  328. package/dist/utils/BufferRing.js +551 -0
  329. package/dist/utils/BufferRingExamples.d.ts +55 -0
  330. package/dist/utils/BufferRingExamples.js +188 -0
  331. package/dist/utils/envUtils.d.ts +42 -0
  332. package/dist/utils/envUtils.js +80 -0
  333. package/dist/utils/memoryMonitor.d.ts +83 -0
  334. package/dist/utils/memoryMonitor.js +275 -0
  335. package/dist/versioning/schemaVersion.d.ts +6 -0
  336. package/dist/versioning/schemaVersion.js +93 -0
  337. package/package.json +134 -0
  338. package/schemas/README.md +13 -0
  339. package/schemas/feedback-entry.schema.json +27 -0
  340. package/schemas/graph-export-v2.schema.json +60 -0
  341. package/schemas/index-server.code-schema.json +38477 -0
  342. package/schemas/instruction.schema.json +262 -0
  343. package/schemas/json-schema/SessionPersistence-persisted-admin-session.schema.json +54 -0
  344. package/schemas/json-schema/SessionPersistence-persisted-session-history-entry.schema.json +51 -0
  345. package/schemas/json-schema/SessionPersistence-persisted-web-socket-connection.schema.json +54 -0
  346. package/schemas/json-schema/SessionPersistence-session-persistence-config.schema.json +110 -0
  347. package/schemas/json-schema/SessionPersistence-session-persistence-data.schema.json +229 -0
  348. package/schemas/json-schema/SessionPersistence-session-persistence-manifest.schema.json +109 -0
  349. package/schemas/json-schema/SessionPersistence-session-persistence-metadata.schema.json +55 -0
  350. package/schemas/json-schema/instruction-audience-scope.schema.json +14 -0
  351. package/schemas/json-schema/instruction-content-type.schema.json +17 -0
  352. package/schemas/json-schema/instruction-instruction-entry.schema.json +206 -0
  353. package/schemas/json-schema/instruction-requirement-level.schema.json +16 -0
  354. package/schemas/manifest.json +78 -0
  355. package/schemas/manifest.schema.json +33 -0
  356. package/schemas/usage-batch.schema.json +16 -0
  357. package/schemas/usage-buckets.schema.json +30 -0
  358. package/schemas/usage-event.schema.json +17 -0
  359. package/scripts/copy-dashboard-assets.mjs +170 -0
  360. package/scripts/setup-hooks.cjs +28 -0
@@ -0,0 +1,11 @@
1
+ /**
2
+ * CSV and Excel format exporters for the DataExporter system.
3
+ */
4
+ /**
5
+ * Write data to a CSV file, optionally compressing afterwards.
6
+ */
7
+ export declare function exportCSV(data: unknown[], outputPath: string, compress: boolean): Promise<void>;
8
+ /**
9
+ * Export data as Excel (simplified — delegates to CSV with a .csv extension).
10
+ */
11
+ export declare function exportExcel(data: unknown[], outputPath: string, compress: boolean): Promise<void>;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ /**
3
+ * CSV and Excel format exporters for the DataExporter system.
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.exportCSV = exportCSV;
10
+ exports.exportExcel = exportExcel;
11
+ const fs_1 = __importDefault(require("fs"));
12
+ const path_1 = __importDefault(require("path"));
13
+ /**
14
+ * Write data to a CSV file, optionally compressing afterwards.
15
+ */
16
+ async function exportCSV(data, outputPath, compress) {
17
+ if (!data.length) {
18
+ await fs_1.default.promises.writeFile(outputPath, '', 'utf8');
19
+ return;
20
+ }
21
+ await fs_1.default.promises.mkdir(path_1.default.dirname(outputPath), { recursive: true });
22
+ const headers = Object.keys(data[0]);
23
+ const csvRows = [
24
+ headers.join(','),
25
+ ...data.map(row => {
26
+ const rowRecord = row;
27
+ return headers.map(header => {
28
+ const value = rowRecord[header];
29
+ const stringValue = String(value || '');
30
+ return stringValue.includes(',') || stringValue.includes('"')
31
+ ? `"${stringValue.replace(/"/g, '""')}"`
32
+ : stringValue;
33
+ }).join(',');
34
+ })
35
+ ];
36
+ await fs_1.default.promises.writeFile(outputPath, csvRows.join('\n'), 'utf8');
37
+ if (compress) {
38
+ console.log(`Compressing file: ${outputPath}`);
39
+ }
40
+ }
41
+ /**
42
+ * Export data as Excel (simplified — delegates to CSV with a .csv extension).
43
+ */
44
+ async function exportExcel(data, outputPath, compress) {
45
+ await exportCSV(data, outputPath.replace('.excel', '.csv'), compress);
46
+ }
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Shared types for the DataExporter and format-specific exporter modules.
3
+ */
4
+ export interface ExportConfig {
5
+ id: string;
6
+ name: string;
7
+ format: 'json' | 'csv' | 'excel' | 'pdf' | 'xml';
8
+ dataSource: 'metrics' | 'analytics' | 'security' | 'feedback' | 'instructions' | 'custom';
9
+ filters: ExportFilter[];
10
+ columns: ExportColumn[];
11
+ schedule?: ExportSchedule;
12
+ template?: string;
13
+ compression: boolean;
14
+ encryption: boolean;
15
+ destination: ExportDestination;
16
+ }
17
+ export interface ExportFilter {
18
+ field: string;
19
+ operator: 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'greater_than' | 'less_than' | 'between' | 'in' | 'not_in';
20
+ value: unknown;
21
+ values?: unknown[];
22
+ }
23
+ export interface ExportColumn {
24
+ field: string;
25
+ header: string;
26
+ type: 'string' | 'number' | 'date' | 'boolean' | 'json';
27
+ format?: string;
28
+ aggregation?: 'sum' | 'avg' | 'count' | 'min' | 'max' | 'group';
29
+ }
30
+ export interface ExportSchedule {
31
+ enabled: boolean;
32
+ frequency: 'hourly' | 'daily' | 'weekly' | 'monthly' | 'custom';
33
+ interval: number;
34
+ time?: string;
35
+ dayOfWeek?: number;
36
+ dayOfMonth?: number;
37
+ timezone: string;
38
+ lastRun?: number;
39
+ nextRun?: number;
40
+ }
41
+ export interface ExportDestination {
42
+ type: 'local' | 'email' | 'ftp' | 'sftp' | 's3' | 'azure_blob' | 'webhook';
43
+ config: Record<string, unknown>;
44
+ }
45
+ export interface ExportJob {
46
+ id: string;
47
+ configId: string;
48
+ status: 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';
49
+ progress: number;
50
+ recordsProcessed: number;
51
+ totalRecords: number;
52
+ startTime: number;
53
+ endTime?: number;
54
+ error?: string;
55
+ outputPath?: string;
56
+ fileSize?: number;
57
+ }
58
+ export interface ReportTemplate {
59
+ id: string;
60
+ name: string;
61
+ description: string;
62
+ type: 'dashboard_summary' | 'security_report' | 'performance_analysis' | 'custom';
63
+ sections: ReportSection[];
64
+ formatting: ReportFormatting;
65
+ }
66
+ export interface ReportSection {
67
+ id: string;
68
+ title: string;
69
+ type: 'text' | 'table' | 'chart' | 'metrics' | 'raw_data';
70
+ dataSource: string;
71
+ config: Record<string, unknown>;
72
+ order: number;
73
+ }
74
+ export interface ReportFormatting {
75
+ pageSize: 'A4' | 'Letter' | 'Legal' | 'A3';
76
+ orientation: 'portrait' | 'landscape';
77
+ margins: {
78
+ top: number;
79
+ right: number;
80
+ bottom: number;
81
+ left: number;
82
+ };
83
+ fontSize: number;
84
+ fontFamily: string;
85
+ includeHeader: boolean;
86
+ includeFooter: boolean;
87
+ headerText?: string;
88
+ footerText?: string;
89
+ }
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ /**
3
+ * Shared types for the DataExporter and format-specific exporter modules.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ /**
2
+ * JSON format exporter for the DataExporter system.
3
+ */
4
+ /**
5
+ * Write data to a JSON file, optionally compressing afterwards.
6
+ */
7
+ export declare function exportJSON(data: unknown[], outputPath: string, compress: boolean): Promise<void>;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ /**
3
+ * JSON format exporter for the DataExporter system.
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.exportJSON = exportJSON;
10
+ const fs_1 = __importDefault(require("fs"));
11
+ const path_1 = __importDefault(require("path"));
12
+ /**
13
+ * Write data to a JSON file, optionally compressing afterwards.
14
+ */
15
+ async function exportJSON(data, outputPath, compress) {
16
+ await fs_1.default.promises.mkdir(path_1.default.dirname(outputPath), { recursive: true });
17
+ const jsonData = JSON.stringify(data, null, 2);
18
+ await fs_1.default.promises.writeFile(outputPath, jsonData, 'utf8');
19
+ if (compress) {
20
+ console.log(`Compressing file: ${outputPath}`);
21
+ }
22
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * XML and PDF (HTML) format exporters for the DataExporter system.
3
+ * Handles structured document output including template-based report rendering.
4
+ */
5
+ import type { ReportTemplate } from './exportTypes.js';
6
+ /**
7
+ * Write data to an XML file, optionally compressing afterwards.
8
+ */
9
+ export declare function exportXML(data: unknown[], outputPath: string, compress: boolean): Promise<void>;
10
+ /**
11
+ * Write data as a PDF-placeholder HTML file.
12
+ * When a resolved ReportTemplate is provided the output uses the full template;
13
+ * otherwise a simple tabular layout is generated.
14
+ */
15
+ export declare function exportPDF(data: unknown[], outputPath: string, template?: ReportTemplate): Promise<void>;
16
+ export declare function generateReportHTML(template: ReportTemplate, data: unknown[]): string;
17
+ export declare function generateSimplePDFContent(data: unknown[]): string;
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ /**
3
+ * XML and PDF (HTML) format exporters for the DataExporter system.
4
+ * Handles structured document output including template-based report rendering.
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.exportXML = exportXML;
11
+ exports.exportPDF = exportPDF;
12
+ exports.generateReportHTML = generateReportHTML;
13
+ exports.generateSimplePDFContent = generateSimplePDFContent;
14
+ const fs_1 = __importDefault(require("fs"));
15
+ const path_1 = __importDefault(require("path"));
16
+ /**
17
+ * Write data to an XML file, optionally compressing afterwards.
18
+ */
19
+ async function exportXML(data, outputPath, compress) {
20
+ await fs_1.default.promises.mkdir(path_1.default.dirname(outputPath), { recursive: true });
21
+ const xmlContent = convertToXML(data);
22
+ await fs_1.default.promises.writeFile(outputPath, xmlContent, 'utf8');
23
+ if (compress) {
24
+ console.log(`Compressing file: ${outputPath}`);
25
+ }
26
+ }
27
+ /**
28
+ * Write data as a PDF-placeholder HTML file.
29
+ * When a resolved ReportTemplate is provided the output uses the full template;
30
+ * otherwise a simple tabular layout is generated.
31
+ */
32
+ async function exportPDF(data, outputPath, template) {
33
+ await fs_1.default.promises.mkdir(path_1.default.dirname(outputPath), { recursive: true });
34
+ const content = template
35
+ ? generateReportHTML(template, data)
36
+ : generateSimplePDFContent(data);
37
+ // In a real implementation a PDF library (puppeteer, pdfkit) would be used.
38
+ await fs_1.default.promises.writeFile(outputPath.replace('.pdf', '.html'), content, 'utf8');
39
+ }
40
+ // ---------------------------------------------------------------------------
41
+ // Internal helpers
42
+ // ---------------------------------------------------------------------------
43
+ function convertToXML(data) {
44
+ const xmlRows = data.map(item => {
45
+ const itemRecord = item;
46
+ const xmlFields = Object.entries(itemRecord)
47
+ .map(([key, value]) => ` <${key}>${escapeXML(String(value))}</${key}>`)
48
+ .join('\n');
49
+ return ` <record>\n${xmlFields}\n </record>`;
50
+ });
51
+ return `<?xml version="1.0" encoding="UTF-8"?>\n<data>\n${xmlRows.join('\n')}\n</data>`;
52
+ }
53
+ function escapeXML(text) {
54
+ return text
55
+ .replace(/&/g, '&amp;')
56
+ .replace(/</g, '&lt;')
57
+ .replace(/>/g, '&gt;')
58
+ .replace(/"/g, '&quot;')
59
+ .replace(/'/g, '&apos;');
60
+ }
61
+ function generateReportHTML(template, data) {
62
+ let html = `<!DOCTYPE html>
63
+ <html>
64
+ <head>
65
+ <title>${template.name}</title>
66
+ <meta charset="UTF-8">
67
+ <style>
68
+ body { font-family: ${template.formatting.fontFamily}; font-size: ${template.formatting.fontSize}px; }
69
+ .header { text-align: center; border-bottom: 1px solid #ccc; padding-bottom: 10px; margin-bottom: 20px; }
70
+ .footer { text-align: center; border-top: 1px solid #ccc; padding-top: 10px; margin-top: 20px; }
71
+ .section { margin-bottom: 30px; }
72
+ .section-title { font-size: 16px; font-weight: bold; margin-bottom: 10px; }
73
+ table { width: 100%; border-collapse: collapse; margin-bottom: 15px; }
74
+ th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
75
+ th { background-color: #f2f2f2; }
76
+ </style>
77
+ </head>
78
+ <body>`;
79
+ if (template.formatting.includeHeader) {
80
+ const headerText = replaceTemplateVariables(template.formatting.headerText || '');
81
+ html += `<div class="header">${headerText}</div>`;
82
+ }
83
+ const sortedSections = template.sections.sort((a, b) => a.order - b.order);
84
+ for (const section of sortedSections) {
85
+ html += `<div class="section">`;
86
+ html += `<div class="section-title">${section.title}</div>`;
87
+ switch (section.type) {
88
+ case 'table':
89
+ html += generateTableSection(data, section);
90
+ break;
91
+ case 'metrics':
92
+ html += generateMetricsSection(data, section);
93
+ break;
94
+ case 'text':
95
+ html += generateTextSection(data, section);
96
+ break;
97
+ default:
98
+ html += `<p>Section type "${section.type}" not implemented</p>`;
99
+ }
100
+ html += `</div>`;
101
+ }
102
+ if (template.formatting.includeFooter) {
103
+ const footerText = replaceTemplateVariables(template.formatting.footerText || '');
104
+ html += `<div class="footer">${footerText}</div>`;
105
+ }
106
+ html += `</body></html>`;
107
+ return html;
108
+ }
109
+ function generateSimplePDFContent(data) {
110
+ if (!data.length)
111
+ return '<html><body><p>No data to export</p></body></html>';
112
+ const headers = Object.keys(data[0]);
113
+ let html = `<!DOCTYPE html>
114
+ <html>
115
+ <head>
116
+ <title>Data Export</title>
117
+ <style>
118
+ body { font-family: Arial, sans-serif; }
119
+ table { width: 100%; border-collapse: collapse; }
120
+ th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
121
+ th { background-color: #f2f2f2; }
122
+ </style>
123
+ </head>
124
+ <body>
125
+ <h1>Data Export</h1>
126
+ <table>
127
+ <thead>
128
+ <tr>${headers.map(h => `<th>${h}</th>`).join('')}</tr>
129
+ </thead>
130
+ <tbody>`;
131
+ data.forEach(row => {
132
+ const rowRecord = row;
133
+ html += `<tr>${headers.map(h => `<td>${String(rowRecord[h] || '')}</td>`).join('')}</tr>`;
134
+ });
135
+ html += ` </tbody>
136
+ </table>
137
+ </body>
138
+ </html>`;
139
+ return html;
140
+ }
141
+ function generateTableSection(data, _section) {
142
+ if (!data.length)
143
+ return '<p>No data available</p>';
144
+ const headers = Object.keys(data[0]);
145
+ let html = '<table><thead><tr>';
146
+ headers.forEach(header => { html += `<th>${header}</th>`; });
147
+ html += '</tr></thead><tbody>';
148
+ data.forEach(row => {
149
+ const rowRecord = row;
150
+ html += '<tr>';
151
+ headers.forEach(header => { html += `<td>${String(rowRecord[header] || '')}</td>`; });
152
+ html += '</tr>';
153
+ });
154
+ html += '</tbody></table>';
155
+ return html;
156
+ }
157
+ function generateMetricsSection(data, _section) {
158
+ return `<div>
159
+ <p><strong>Total Records:</strong> ${data.length}</p>
160
+ <p><strong>Generated:</strong> ${new Date().toLocaleString()}</p>
161
+ </div>`;
162
+ }
163
+ function generateTextSection(data, section) {
164
+ return `<p>This is a ${section.dataSource} section with ${data.length} records.</p>`;
165
+ }
166
+ function replaceTemplateVariables(text) {
167
+ const now = new Date();
168
+ return text
169
+ .replace(/\{\{date\}\}/g, now.toLocaleDateString())
170
+ .replace(/\{\{time\}\}/g, now.toLocaleTimeString())
171
+ .replace(/\{\{datetime\}\}/g, now.toLocaleString())
172
+ .replace(/\{\{page\}\}/g, '1')
173
+ .replace(/\{\{totalPages\}\}/g, '1')
174
+ .replace(/\{\{dateRange\}\}/g, 'Last 7 days');
175
+ }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * APIIntegration - Phase 4 API Integration & External Connectors
3
+ *
4
+ * Thin coordinator that composes three domain modules:
5
+ * - EndpointManager (api.instructions.routes) — endpoint configuration & rate-limiting
6
+ * - UsageManager (api.usage.routes) — request execution & monitoring
7
+ * - FeedbackManager (api.feedback.routes) — webhooks & external connectors
8
+ */
9
+ import type { APIEndpoint } from '../server/routes/api.instructions.routes.js';
10
+ import type { APIRequest, APIResponse, APIMonitoringEvent } from '../server/routes/api.usage.routes.js';
11
+ import type { WebhookConfig, ExternalConnector } from '../server/routes/api.feedback.routes.js';
12
+ export type { APIEndpoint, APIRequest, APIResponse, APIMonitoringEvent, WebhookConfig, ExternalConnector };
13
+ export declare class APIIntegration {
14
+ private readonly endpointMgr;
15
+ private readonly usageMgr;
16
+ private readonly feedbackMgr;
17
+ constructor();
18
+ private startBackgroundTasks;
19
+ executeRequest(endpointId: string, data?: unknown, overrides?: Partial<APIRequest>): Promise<APIResponse>;
20
+ createEndpoint(endpoint: Omit<APIEndpoint, 'id'>): string;
21
+ getEndpoint(id: string): APIEndpoint | undefined;
22
+ listEndpoints(): APIEndpoint[];
23
+ updateEndpoint(id: string, updates: Partial<APIEndpoint>): boolean;
24
+ deleteEndpoint(id: string): boolean;
25
+ getConfiguredEndpoints(): APIEndpoint[];
26
+ createWebhook(webhook: Omit<WebhookConfig, 'id'>): string;
27
+ triggerWebhook(id: string, event: string, data: unknown): Promise<boolean>;
28
+ createConnector(connector: Omit<ExternalConnector, 'id' | 'status' | 'metrics'>): string;
29
+ getConnectorStatus(id: string): ExternalConnector | undefined;
30
+ listConnectors(): ExternalConnector[];
31
+ onAPIEvent(callback: (event: APIMonitoringEvent) => void): void;
32
+ getAPIStatistics(): {
33
+ endpoints: number;
34
+ webhooks: number;
35
+ connectors: number;
36
+ activeConnections: number;
37
+ totalRequests: number;
38
+ errorRate: number;
39
+ };
40
+ }
41
+ export declare function getAPIIntegration(): APIIntegration;
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ /**
3
+ * APIIntegration - Phase 4 API Integration & External Connectors
4
+ *
5
+ * Thin coordinator that composes three domain modules:
6
+ * - EndpointManager (api.instructions.routes) — endpoint configuration & rate-limiting
7
+ * - UsageManager (api.usage.routes) — request execution & monitoring
8
+ * - FeedbackManager (api.feedback.routes) — webhooks & external connectors
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.APIIntegration = void 0;
12
+ exports.getAPIIntegration = getAPIIntegration;
13
+ const api_instructions_routes_js_1 = require("../server/routes/api.instructions.routes.js");
14
+ const api_usage_routes_js_1 = require("../server/routes/api.usage.routes.js");
15
+ const api_feedback_routes_js_1 = require("../server/routes/api.feedback.routes.js");
16
+ class APIIntegration {
17
+ endpointMgr;
18
+ usageMgr;
19
+ feedbackMgr;
20
+ constructor() {
21
+ this.endpointMgr = new api_instructions_routes_js_1.EndpointManager();
22
+ this.usageMgr = new api_usage_routes_js_1.UsageManager(this.endpointMgr);
23
+ this.feedbackMgr = new api_feedback_routes_js_1.FeedbackManager(this.usageMgr);
24
+ this.startBackgroundTasks();
25
+ }
26
+ startBackgroundTasks() {
27
+ setInterval(() => { this.usageMgr.processRequestQueues(); }, 100);
28
+ setInterval(() => { this.endpointMgr.cleanupCache(); }, 60000);
29
+ setInterval(() => { this.endpointMgr.resetRateLimiters(); }, 60000);
30
+ setInterval(() => { this.feedbackMgr.performHealthChecks(); }, 30000);
31
+ }
32
+ // ── Endpoint management ──────────────────────────────────────────────────────────
33
+ async executeRequest(endpointId, data, overrides) {
34
+ return this.usageMgr.executeRequest(endpointId, data, overrides);
35
+ }
36
+ createEndpoint(endpoint) {
37
+ return this.endpointMgr.createEndpoint(endpoint);
38
+ }
39
+ getEndpoint(id) {
40
+ return this.endpointMgr.getEndpoint(id);
41
+ }
42
+ listEndpoints() {
43
+ return this.endpointMgr.listEndpoints();
44
+ }
45
+ updateEndpoint(id, updates) {
46
+ return this.endpointMgr.updateEndpoint(id, updates);
47
+ }
48
+ deleteEndpoint(id) {
49
+ return this.endpointMgr.deleteEndpoint(id);
50
+ }
51
+ getConfiguredEndpoints() {
52
+ return this.endpointMgr.getConfiguredEndpoints();
53
+ }
54
+ // ── Webhook management ───────────────────────────────────────────────────────────
55
+ createWebhook(webhook) {
56
+ return this.feedbackMgr.createWebhook(webhook);
57
+ }
58
+ async triggerWebhook(id, event, data) {
59
+ return this.feedbackMgr.triggerWebhook(id, event, data);
60
+ }
61
+ // ── Connector management ─────────────────────────────────────────────────────────
62
+ createConnector(connector) {
63
+ return this.feedbackMgr.createConnector(connector);
64
+ }
65
+ getConnectorStatus(id) {
66
+ return this.feedbackMgr.getConnectorStatus(id);
67
+ }
68
+ listConnectors() {
69
+ return this.feedbackMgr.listConnectors();
70
+ }
71
+ // ── Monitoring ───────────────────────────────────────────────────────────────────
72
+ onAPIEvent(callback) {
73
+ this.usageMgr.onAPIEvent(callback);
74
+ }
75
+ getAPIStatistics() {
76
+ const stats = this.feedbackMgr.getStats();
77
+ return {
78
+ endpoints: this.endpointMgr.endpoints.size,
79
+ webhooks: stats.webhookCount,
80
+ connectors: stats.connectorCount,
81
+ activeConnections: stats.activeConnections,
82
+ totalRequests: stats.totalRequests,
83
+ errorRate: stats.totalRequests > 0 ? stats.totalErrors / stats.totalRequests : 0
84
+ };
85
+ }
86
+ }
87
+ exports.APIIntegration = APIIntegration;
88
+ // Singleton instance
89
+ let apiIntegration = null;
90
+ function getAPIIntegration() {
91
+ if (!apiIntegration) {
92
+ apiIntegration = new APIIntegration();
93
+ }
94
+ return apiIntegration;
95
+ }
@@ -0,0 +1,167 @@
1
+ interface SecurityThreat {
2
+ id: string;
3
+ type: 'authentication_failure' | 'rate_limit_exceeded' | 'suspicious_activity' | 'data_breach_attempt' | 'injection_attack';
4
+ severity: 'low' | 'medium' | 'high' | 'critical';
5
+ source: string;
6
+ timestamp: number;
7
+ details: Record<string, unknown>;
8
+ status: 'active' | 'mitigated' | 'resolved';
9
+ actionTaken?: string;
10
+ }
11
+ interface PerformanceMetric {
12
+ id: string;
13
+ type: 'cpu' | 'memory' | 'disk' | 'network' | 'database' | 'api_latency';
14
+ value: number;
15
+ unit: string;
16
+ timestamp: number;
17
+ threshold: {
18
+ warning: number;
19
+ critical: number;
20
+ };
21
+ trend: 'increasing' | 'decreasing' | 'stable';
22
+ }
23
+ interface SystemHealth {
24
+ overall: 'healthy' | 'warning' | 'critical' | 'down';
25
+ services: Array<{
26
+ name: string;
27
+ status: 'up' | 'down' | 'degraded';
28
+ latency: number;
29
+ uptime: number;
30
+ lastCheck: number;
31
+ }>;
32
+ alerts: SecurityThreat[];
33
+ performance: PerformanceMetric[];
34
+ }
35
+ interface SecurityRule {
36
+ id: string;
37
+ name: string;
38
+ type: 'rate_limit' | 'ip_blocking' | 'pattern_detection' | 'anomaly_detection';
39
+ enabled: boolean;
40
+ config: Record<string, unknown>;
41
+ lastTriggered?: number;
42
+ triggerCount: number;
43
+ }
44
+ export declare class SecurityMonitor {
45
+ private threats;
46
+ private performanceMetrics;
47
+ private securityRules;
48
+ private monitoringInterval;
49
+ private alertCallbacks;
50
+ constructor();
51
+ /**
52
+ * Anonymize a real user identifier (IP, username, etc.) for PH-3 compliance.
53
+ * Returns the first 16 hex characters of the SHA-256 hash of the identifier.
54
+ * @param identifier - Raw user identifier to anonymize
55
+ * @returns Anonymized identifier string (not reversible)
56
+ */
57
+ private anonymize;
58
+ /**
59
+ * Initialize default security rules
60
+ */
61
+ private initializeSecurityRules;
62
+ /**
63
+ * Start continuous monitoring
64
+ */
65
+ private startMonitoring;
66
+ /**
67
+ * Stop monitoring
68
+ */
69
+ stopMonitoring(): void;
70
+ /**
71
+ * Collect system performance metrics
72
+ */
73
+ private collectPerformanceMetrics;
74
+ /**
75
+ * Add performance metric and analyze trends
76
+ */
77
+ private addPerformanceMetric;
78
+ /**
79
+ * Calculate trend from values
80
+ */
81
+ private calculateTrend;
82
+ /**
83
+ * Check performance thresholds and create alerts
84
+ */
85
+ private checkPerformanceThresholds;
86
+ /**
87
+ * Analyze current security threats
88
+ */
89
+ private analyzeSecurityThreats;
90
+ /**
91
+ * Detect anomalous patterns in system activity
92
+ */
93
+ private detectAnomalousPatterns;
94
+ /**
95
+ * Check rate limiting violations
96
+ */
97
+ private checkRateLimits;
98
+ /**
99
+ * Validate authentication attempts
100
+ */
101
+ private validateAuthenticationAttempts;
102
+ /**
103
+ * Report a security threat
104
+ */
105
+ reportThreat(threat: SecurityThreat): void;
106
+ /**
107
+ * Log security event to audit trail
108
+ */
109
+ private logSecurityEvent;
110
+ /**
111
+ * Get current system health status
112
+ */
113
+ getSystemHealth(): SystemHealth;
114
+ /**
115
+ * Get service statuses
116
+ */
117
+ private getServiceStatuses;
118
+ /**
119
+ * Get recent performance metrics
120
+ */
121
+ private getRecentPerformanceMetrics;
122
+ /**
123
+ * Register alert callback
124
+ */
125
+ onThreatDetected(callback: (threat: SecurityThreat) => void): void;
126
+ /**
127
+ * Mitigate a threat
128
+ */
129
+ mitigateThreat(threatId: string, action: string): boolean;
130
+ /**
131
+ * Resolve a threat
132
+ */
133
+ resolveThreat(threatId: string): boolean;
134
+ /**
135
+ * Get list of active threats
136
+ */
137
+ getActiveThreats(): SecurityThreat[];
138
+ /**
139
+ * Clean up old data
140
+ */
141
+ private cleanupOldData;
142
+ private getCPUUsage;
143
+ private getAverageAPILatency;
144
+ private checkForSuspiciousPatterns;
145
+ private checkRateLimitViolation;
146
+ private checkAuthenticationAnomaly;
147
+ /**
148
+ * Get security rules configuration
149
+ */
150
+ getSecurityRules(): SecurityRule[];
151
+ /**
152
+ * Update security rule
153
+ */
154
+ updateSecurityRule(ruleId: string, updates: Partial<SecurityRule>): boolean;
155
+ /**
156
+ * Get threat statistics
157
+ */
158
+ getThreatStatistics(): {
159
+ total: number;
160
+ active: number;
161
+ resolved: number;
162
+ byType: Record<string, number>;
163
+ bySeverity: Record<string, number>;
164
+ };
165
+ }
166
+ export declare function getSecurityMonitor(): SecurityMonitor;
167
+ export {};