@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,188 @@
1
+ "use strict";
2
+ /**
3
+ * BufferRing Usage Examples
4
+ *
5
+ * This file demonstrates various use cases for the configurable BufferRing utility,
6
+ * particularly for log management, metrics collection, and event handling in the
7
+ * Index Server.
8
+ */
9
+ var __importDefault = (this && this.__importDefault) || function (mod) {
10
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.OverflowStrategy = exports.BufferRingFactory = exports.BufferRing = exports.LogStreamer = exports.LogViewerService = void 0;
14
+ exports.createLogViewerBuffer = createLogViewerBuffer;
15
+ exports.createMetricsCollector = createMetricsCollector;
16
+ exports.createEventTracker = createEventTracker;
17
+ exports.createToolMetricsBuffer = createToolMetricsBuffer;
18
+ exports.createConfiguredBuffer = createConfiguredBuffer;
19
+ const BufferRing_1 = require("./BufferRing");
20
+ Object.defineProperty(exports, "BufferRing", { enumerable: true, get: function () { return BufferRing_1.BufferRing; } });
21
+ Object.defineProperty(exports, "BufferRingFactory", { enumerable: true, get: function () { return BufferRing_1.BufferRingFactory; } });
22
+ Object.defineProperty(exports, "OverflowStrategy", { enumerable: true, get: function () { return BufferRing_1.OverflowStrategy; } });
23
+ const path_1 = __importDefault(require("path"));
24
+ // Example 1: Log Buffer for Real-time Log Viewer
25
+ function createLogViewerBuffer(logDir) {
26
+ const logBuffer = BufferRing_1.BufferRingFactory.createLogBuffer(1000, // Keep last 1000 log entries
27
+ path_1.default.join(logDir, 'log-buffer.json'));
28
+ // Event handling for log monitoring
29
+ logBuffer.on('entry-added', (logEntry) => {
30
+ // Could trigger WebSocket broadcast to connected clients
31
+ console.log(`New log entry: ${logEntry.slice(0, 100)}...`);
32
+ });
33
+ logBuffer.on('buffer-full', () => {
34
+ console.log('Log buffer is full, oldest entries will be dropped');
35
+ });
36
+ return logBuffer;
37
+ }
38
+ // Example 2: Metrics Collection with Periodic Persistence
39
+ function createMetricsCollector(dataDir) {
40
+ const metricsBuffer = BufferRing_1.BufferRingFactory.createMetricsBuffer(500, path_1.default.join(dataDir, 'metrics-buffer.json'));
41
+ // Periodic persistence every 30 seconds
42
+ setInterval(async () => {
43
+ try {
44
+ await metricsBuffer.saveToDisk();
45
+ console.log(`Persisted ${metricsBuffer.getStats().count} metrics entries`);
46
+ }
47
+ catch (error) {
48
+ console.error('Failed to persist metrics:', error);
49
+ }
50
+ }, 30000);
51
+ return metricsBuffer;
52
+ }
53
+ // Example 3: Event Buffer for System Events
54
+ function createEventTracker() {
55
+ const eventBuffer = BufferRing_1.BufferRingFactory.createEventBuffer(200);
56
+ // Track various system events
57
+ eventBuffer.on('entry-added', (event) => {
58
+ if (event.level === 'error') {
59
+ console.error('System error event:', event);
60
+ }
61
+ });
62
+ return eventBuffer;
63
+ }
64
+ // Example 4: Custom Tool Metrics Buffer with Memory Management
65
+ function createToolMetricsBuffer() {
66
+ const toolMetrics = new BufferRing_1.BufferRing({
67
+ capacity: 1000,
68
+ overflowStrategy: BufferRing_1.OverflowStrategy.DROP_OLDEST,
69
+ autoPersist: false,
70
+ enableIntegrityCheck: false,
71
+ serializer: (entry) => {
72
+ const typedEntry = entry;
73
+ return {
74
+ ...entry,
75
+ timestamp: typedEntry.timestamp || new Date().toISOString()
76
+ };
77
+ }
78
+ });
79
+ // Memory cleanup when buffer gets large
80
+ toolMetrics.on('buffer-full', () => {
81
+ // Keep only successful calls from last hour
82
+ const oneHourAgo = new Date(Date.now() - 60 * 60 * 1000).toISOString();
83
+ const recentSuccessful = toolMetrics.filter((entry) => entry.success && entry.timestamp > oneHourAgo);
84
+ toolMetrics.clear();
85
+ recentSuccessful.forEach(entry => toolMetrics.add(entry));
86
+ console.log(`Cleaned tool metrics buffer, retained ${recentSuccessful.length} entries`);
87
+ });
88
+ return toolMetrics;
89
+ }
90
+ function createConfiguredBuffer(config) {
91
+ switch (config.type) {
92
+ case 'log':
93
+ return BufferRing_1.BufferRingFactory.createLogBuffer(config.capacity, config.persistPath);
94
+ case 'metrics':
95
+ return BufferRing_1.BufferRingFactory.createMetricsBuffer(config.capacity, config.persistPath);
96
+ case 'events':
97
+ return BufferRing_1.BufferRingFactory.createEventBuffer(config.capacity);
98
+ case 'custom':
99
+ return new BufferRing_1.BufferRing({
100
+ capacity: config.capacity,
101
+ persistPath: config.persistPath,
102
+ overflowStrategy: config.overflowStrategy || BufferRing_1.OverflowStrategy.DROP_OLDEST,
103
+ autoPersist: config.autoPersist || false,
104
+ enableIntegrityCheck: !!config.persistPath
105
+ });
106
+ default:
107
+ throw new Error(`Unknown buffer type: ${config.type}`);
108
+ }
109
+ }
110
+ // Example 6: Integration with Log Viewer API
111
+ class LogViewerService {
112
+ logBuffer;
113
+ constructor(logDir) {
114
+ this.logBuffer = createLogViewerBuffer(logDir);
115
+ }
116
+ addLogEntry(logLine) {
117
+ this.logBuffer.add(logLine);
118
+ }
119
+ getRecentLogs(count = 100) {
120
+ return this.logBuffer.getLast(count);
121
+ }
122
+ getLogRange(start, end) {
123
+ return this.logBuffer.getRange(start, end);
124
+ }
125
+ searchLogs(pattern) {
126
+ const regex = new RegExp(pattern, 'i');
127
+ return this.logBuffer.filter((line) => regex.test(line));
128
+ }
129
+ getLogStats() {
130
+ const stats = this.logBuffer.getStats();
131
+ return {
132
+ totalLines: stats.count,
133
+ bufferUtilization: stats.utilization,
134
+ memoryUsage: stats.memoryUsage,
135
+ totalProcessed: stats.totalAdded,
136
+ droppedLines: stats.totalDropped
137
+ };
138
+ }
139
+ clearLogs() {
140
+ this.logBuffer.clear();
141
+ }
142
+ async persistLogs() {
143
+ await this.logBuffer.saveToDisk();
144
+ }
145
+ }
146
+ exports.LogViewerService = LogViewerService;
147
+ // Example 7: Real-time Log Streaming with Buffer
148
+ class LogStreamer {
149
+ logBuffer;
150
+ subscribers = new Set();
151
+ constructor(bufferSize = 500) {
152
+ this.logBuffer = new BufferRing_1.BufferRing({
153
+ capacity: bufferSize,
154
+ overflowStrategy: BufferRing_1.OverflowStrategy.DROP_OLDEST
155
+ });
156
+ // Broadcast new entries to all subscribers
157
+ this.logBuffer.on('entry-added', (logEntry) => {
158
+ this.subscribers.forEach(callback => {
159
+ try {
160
+ callback(logEntry);
161
+ }
162
+ catch (error) {
163
+ console.error('Error in log subscriber:', error);
164
+ }
165
+ });
166
+ });
167
+ }
168
+ addLog(logEntry) {
169
+ this.logBuffer.add(logEntry);
170
+ }
171
+ subscribe(callback) {
172
+ this.subscribers.add(callback);
173
+ // Return unsubscribe function
174
+ return () => {
175
+ this.subscribers.delete(callback);
176
+ };
177
+ }
178
+ getBufferSnapshot() {
179
+ return this.logBuffer.getAll();
180
+ }
181
+ getStats() {
182
+ return {
183
+ bufferStats: this.logBuffer.getStats(),
184
+ subscriberCount: this.subscribers.size
185
+ };
186
+ }
187
+ }
188
+ exports.LogStreamer = LogStreamer;
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Utility functions for environment variable parsing
3
+ */
4
+ export declare const TRUTHY_VALUES: readonly ["1", "true", "yes", "on"];
5
+ export declare const FALSY_VALUES: readonly ["0", "false", "no", "off"];
6
+ export declare const FALSY_VALUES_EXTENDED: readonly ["0", "false", "no", "off", "disabled", "none"];
7
+ export declare const TRUTHY_OR_DEFAULT: readonly ["true", "on", "yes", "default"];
8
+ /**
9
+ * Check whether a raw string is a recognised truthy value.
10
+ */
11
+ export declare function isTruthy(value: string | undefined): boolean;
12
+ /**
13
+ * Check whether a raw string is a recognised falsy value.
14
+ */
15
+ export declare function isFalsy(value: string | undefined): boolean;
16
+ /**
17
+ * Extended falsy check that also recognises "disabled" and "none".
18
+ */
19
+ export declare function isFalsyExtended(value: string | undefined): boolean;
20
+ /**
21
+ * Returns true when DEBUG or VERBOSE_LOGGING env flags are set.
22
+ * Consolidates the repeated `process.env.INDEX_SERVER_DEBUG === '1' ||
23
+ * process.env.INDEX_SERVER_VERBOSE_LOGGING === '1'` check.
24
+ */
25
+ export declare function isDebugOrVerbose(): boolean;
26
+ /**
27
+ * Parse a boolean environment variable that accepts multiple truthy/falsy values:
28
+ * - Truthy: "1", "true", "yes", "on" (case insensitive)
29
+ * - Falsy: "0", "false", "no", "off" (case insensitive) or undefined/empty
30
+ *
31
+ * @param envVar - The environment variable value
32
+ * @param defaultValue - Default value if envVar is undefined/empty (default: false)
33
+ * @returns boolean value
34
+ */
35
+ export declare function parseBooleanEnv(envVar: string | undefined, defaultValue?: boolean): boolean;
36
+ /**
37
+ * Get a boolean environment variable with consistent parsing
38
+ * @param name - Environment variable name
39
+ * @param defaultValue - Default value if not set (default: false)
40
+ * @returns boolean value
41
+ */
42
+ export declare function getBooleanEnv(name: string, defaultValue?: boolean): boolean;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ /**
3
+ * Utility functions for environment variable parsing
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TRUTHY_OR_DEFAULT = exports.FALSY_VALUES_EXTENDED = exports.FALSY_VALUES = exports.TRUTHY_VALUES = void 0;
7
+ exports.isTruthy = isTruthy;
8
+ exports.isFalsy = isFalsy;
9
+ exports.isFalsyExtended = isFalsyExtended;
10
+ exports.isDebugOrVerbose = isDebugOrVerbose;
11
+ exports.parseBooleanEnv = parseBooleanEnv;
12
+ exports.getBooleanEnv = getBooleanEnv;
13
+ // ── Canonical truthy / falsy value sets ──────────────────────────────
14
+ exports.TRUTHY_VALUES = ['1', 'true', 'yes', 'on'];
15
+ exports.FALSY_VALUES = ['0', 'false', 'no', 'off'];
16
+ exports.FALSY_VALUES_EXTENDED = ['0', 'false', 'no', 'off', 'disabled', 'none'];
17
+ exports.TRUTHY_OR_DEFAULT = ['true', 'on', 'yes', 'default'];
18
+ /**
19
+ * Check whether a raw string is a recognised truthy value.
20
+ */
21
+ function isTruthy(value) {
22
+ if (!value)
23
+ return false;
24
+ return exports.TRUTHY_VALUES.includes(value.toLowerCase().trim());
25
+ }
26
+ /**
27
+ * Check whether a raw string is a recognised falsy value.
28
+ */
29
+ function isFalsy(value) {
30
+ if (!value)
31
+ return false;
32
+ return exports.FALSY_VALUES.includes(value.toLowerCase().trim());
33
+ }
34
+ /**
35
+ * Extended falsy check that also recognises "disabled" and "none".
36
+ */
37
+ function isFalsyExtended(value) {
38
+ if (!value)
39
+ return false;
40
+ return exports.FALSY_VALUES_EXTENDED.includes(value.toLowerCase().trim());
41
+ }
42
+ /**
43
+ * Returns true when DEBUG or VERBOSE_LOGGING env flags are set.
44
+ * Consolidates the repeated `process.env.INDEX_SERVER_DEBUG === '1' ||
45
+ * process.env.INDEX_SERVER_VERBOSE_LOGGING === '1'` check.
46
+ */
47
+ function isDebugOrVerbose() {
48
+ return process.env.INDEX_SERVER_DEBUG === '1' || process.env.INDEX_SERVER_VERBOSE_LOGGING === '1';
49
+ }
50
+ /**
51
+ * Parse a boolean environment variable that accepts multiple truthy/falsy values:
52
+ * - Truthy: "1", "true", "yes", "on" (case insensitive)
53
+ * - Falsy: "0", "false", "no", "off" (case insensitive) or undefined/empty
54
+ *
55
+ * @param envVar - The environment variable value
56
+ * @param defaultValue - Default value if envVar is undefined/empty (default: false)
57
+ * @returns boolean value
58
+ */
59
+ function parseBooleanEnv(envVar, defaultValue = false) {
60
+ if (!envVar)
61
+ return defaultValue;
62
+ const normalized = envVar.toLowerCase().trim();
63
+ if (exports.TRUTHY_VALUES.includes(normalized)) {
64
+ return true;
65
+ }
66
+ if (exports.FALSY_VALUES.includes(normalized)) {
67
+ return false;
68
+ }
69
+ // Unknown values default to false
70
+ return defaultValue;
71
+ }
72
+ /**
73
+ * Get a boolean environment variable with consistent parsing
74
+ * @param name - Environment variable name
75
+ * @param defaultValue - Default value if not set (default: false)
76
+ * @returns boolean value
77
+ */
78
+ function getBooleanEnv(name, defaultValue = false) {
79
+ return parseBooleanEnv(process.env[name], defaultValue);
80
+ }
@@ -0,0 +1,83 @@
1
+ interface MemorySnapshot {
2
+ timestamp: number;
3
+ heapUsed: number;
4
+ heapTotal: number;
5
+ external: number;
6
+ arrayBuffers: number;
7
+ rss: number;
8
+ pid: number;
9
+ }
10
+ interface MemoryTrend {
11
+ snapshots: MemorySnapshot[];
12
+ leakDetected: boolean;
13
+ growthRate: number;
14
+ recommendation: string;
15
+ }
16
+ declare class MemoryMonitor {
17
+ private snapshots;
18
+ private maxSnapshots;
19
+ private intervalId?;
20
+ private isMonitoring;
21
+ /**
22
+ * Start continuous memory monitoring
23
+ */
24
+ startMonitoring(intervalMs?: number): void;
25
+ /**
26
+ * Stop monitoring
27
+ */
28
+ stopMonitoring(): void;
29
+ /**
30
+ * Take a memory snapshot
31
+ */
32
+ takeSnapshot(): MemorySnapshot;
33
+ /**
34
+ * Get current memory status
35
+ */
36
+ getCurrentStatus(): string;
37
+ /**
38
+ * Analyze memory trends for potential leaks
39
+ */
40
+ analyzeTrends(windowMinutes?: number): MemoryTrend;
41
+ /**
42
+ * Get detailed memory report
43
+ */
44
+ getDetailedReport(): string;
45
+ /**
46
+ * Take heap snapshot (requires --expose-gc)
47
+ */
48
+ takeHeapSnapshot(): string | null;
49
+ /**
50
+ * Monitor event listeners for potential leaks
51
+ */
52
+ checkEventListeners(): string;
53
+ private formatBytes;
54
+ }
55
+ /**
56
+ * Get or create global memory monitor instance
57
+ */
58
+ export declare function getMemoryMonitor(): MemoryMonitor;
59
+ /**
60
+ * Quick memory status check
61
+ */
62
+ export declare function memStatus(): void;
63
+ /**
64
+ * Start memory monitoring
65
+ */
66
+ export declare function startMemWatch(intervalMs?: number): void;
67
+ /**
68
+ * Stop memory monitoring
69
+ */
70
+ export declare function stopMemWatch(): void;
71
+ /**
72
+ * Get memory report
73
+ */
74
+ export declare function memReport(): void;
75
+ /**
76
+ * Force garbage collection and show memory
77
+ */
78
+ export declare function forceGC(): void;
79
+ /**
80
+ * Check event listeners
81
+ */
82
+ export declare function checkListeners(): void;
83
+ export { MemoryMonitor, MemorySnapshot, MemoryTrend };
@@ -0,0 +1,275 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MemoryMonitor = void 0;
4
+ exports.getMemoryMonitor = getMemoryMonitor;
5
+ exports.memStatus = memStatus;
6
+ exports.startMemWatch = startMemWatch;
7
+ exports.stopMemWatch = stopMemWatch;
8
+ exports.memReport = memReport;
9
+ exports.forceGC = forceGC;
10
+ exports.checkListeners = checkListeners;
11
+ /**
12
+ * Memory Monitoring Utilities for MCP Server
13
+ *
14
+ * Provides comprehensive memory leak detection and monitoring tools.
15
+ * Use while attached to debugger for real-time memory analysis.
16
+ */
17
+ const envUtils_1 = require("./envUtils");
18
+ class MemoryMonitor {
19
+ snapshots = [];
20
+ maxSnapshots = 1000;
21
+ intervalId;
22
+ isMonitoring = false;
23
+ /**
24
+ * Start continuous memory monitoring
25
+ */
26
+ startMonitoring(intervalMs = 5000) {
27
+ if (this.isMonitoring) {
28
+ console.error('[MemoryMonitor] Already monitoring');
29
+ return;
30
+ }
31
+ console.error(`[MemoryMonitor] Starting memory monitoring (interval: ${intervalMs}ms)`);
32
+ this.isMonitoring = true;
33
+ this.intervalId = setInterval(() => {
34
+ this.takeSnapshot();
35
+ }, intervalMs);
36
+ // Take initial snapshot
37
+ this.takeSnapshot();
38
+ }
39
+ /**
40
+ * Stop monitoring
41
+ */
42
+ stopMonitoring() {
43
+ if (this.intervalId) {
44
+ clearInterval(this.intervalId);
45
+ this.intervalId = undefined;
46
+ }
47
+ this.isMonitoring = false;
48
+ console.error('[MemoryMonitor] Stopped monitoring');
49
+ }
50
+ /**
51
+ * Take a memory snapshot
52
+ */
53
+ takeSnapshot() {
54
+ const memUsage = process.memoryUsage();
55
+ const snapshot = {
56
+ timestamp: Date.now(),
57
+ heapUsed: memUsage.heapUsed,
58
+ heapTotal: memUsage.heapTotal,
59
+ external: memUsage.external,
60
+ arrayBuffers: memUsage.arrayBuffers,
61
+ rss: memUsage.rss,
62
+ pid: process.pid
63
+ };
64
+ this.snapshots.push(snapshot);
65
+ // Trim old snapshots
66
+ if (this.snapshots.length > this.maxSnapshots) {
67
+ this.snapshots.shift();
68
+ }
69
+ // Log significant changes
70
+ if (this.snapshots.length > 1) {
71
+ const previous = this.snapshots[this.snapshots.length - 2];
72
+ const heapGrowth = snapshot.heapUsed - previous.heapUsed;
73
+ const rssGrowth = snapshot.rss - previous.rss;
74
+ if (Math.abs(heapGrowth) > 1024 * 1024 || Math.abs(rssGrowth) > 5 * 1024 * 1024) {
75
+ const payload = {
76
+ ts: snapshot.timestamp,
77
+ level: 'info',
78
+ src: 'memory',
79
+ event: 'delta',
80
+ heapDelta: heapGrowth,
81
+ heapUsed: snapshot.heapUsed,
82
+ rssDelta: rssGrowth,
83
+ rss: snapshot.rss,
84
+ pid: snapshot.pid
85
+ };
86
+ // Structured logging piggybacks on existing debug/verbose flags to avoid introducing new env flags.
87
+ const wantStructured = (0, envUtils_1.isDebugOrVerbose)();
88
+ try {
89
+ if (wantStructured) {
90
+ console.error(JSON.stringify(payload));
91
+ }
92
+ else {
93
+ // Fallback concise plain text (single line) to preserve readability and avoid multi-line noise.
94
+ console.error(`[MemoryMonitor] heapDelta=${this.formatBytes(heapGrowth)} heapUsed=${this.formatBytes(snapshot.heapUsed)} rssDelta=${this.formatBytes(rssGrowth)} rss=${this.formatBytes(snapshot.rss)}`);
95
+ }
96
+ }
97
+ catch { /* swallow */ }
98
+ }
99
+ }
100
+ return snapshot;
101
+ }
102
+ /**
103
+ * Get current memory status
104
+ */
105
+ getCurrentStatus() {
106
+ const memUsage = process.memoryUsage();
107
+ return `Memory Status (PID: ${process.pid}):
108
+ Heap Used: ${this.formatBytes(memUsage.heapUsed)}
109
+ Heap Total: ${this.formatBytes(memUsage.heapTotal)}
110
+ RSS: ${this.formatBytes(memUsage.rss)}
111
+ External: ${this.formatBytes(memUsage.external)}
112
+ Array Buffers: ${this.formatBytes(memUsage.arrayBuffers)}`;
113
+ }
114
+ /**
115
+ * Analyze memory trends for potential leaks
116
+ */
117
+ analyzeTrends(windowMinutes = 10) {
118
+ const windowMs = windowMinutes * 60 * 1000;
119
+ const cutoff = Date.now() - windowMs;
120
+ const recentSnapshots = this.snapshots.filter(s => s.timestamp >= cutoff);
121
+ if (recentSnapshots.length < 3) {
122
+ return {
123
+ snapshots: recentSnapshots,
124
+ leakDetected: false,
125
+ growthRate: 0,
126
+ recommendation: 'Need more data points for analysis'
127
+ };
128
+ }
129
+ // Calculate growth rate (bytes per second)
130
+ const first = recentSnapshots[0];
131
+ const last = recentSnapshots[recentSnapshots.length - 1];
132
+ const timeDiff = (last.timestamp - first.timestamp) / 1000; // seconds
133
+ const heapGrowth = last.heapUsed - first.heapUsed;
134
+ const growthRate = heapGrowth / timeDiff;
135
+ // Detect potential leak (consistent growth > 100KB/minute)
136
+ const leakThreshold = (100 * 1024) / 60; // bytes per second
137
+ const leakDetected = growthRate > leakThreshold;
138
+ let recommendation = '';
139
+ if (leakDetected) {
140
+ recommendation = `⚠️ Potential memory leak detected! Growth rate: ${this.formatBytes(growthRate * 60)}/minute`;
141
+ }
142
+ else if (growthRate > 0) {
143
+ recommendation = `✅ Memory growth within normal range: ${this.formatBytes(growthRate * 60)}/minute`;
144
+ }
145
+ else {
146
+ recommendation = `✅ Memory usage stable or decreasing`;
147
+ }
148
+ return {
149
+ snapshots: recentSnapshots,
150
+ leakDetected,
151
+ growthRate,
152
+ recommendation
153
+ };
154
+ }
155
+ /**
156
+ * Get detailed memory report
157
+ */
158
+ getDetailedReport() {
159
+ const trend = this.analyzeTrends();
160
+ const current = this.getCurrentStatus();
161
+ return `
162
+ === MEMORY MONITOR REPORT ===
163
+ ${current}
164
+
165
+ === TREND ANALYSIS (10 min window) ===
166
+ ${trend.recommendation}
167
+ Growth Rate: ${this.formatBytes(trend.growthRate * 60)}/minute
168
+ Snapshots: ${trend.snapshots.length}
169
+ Leak Detected: ${trend.leakDetected ? 'YES' : 'NO'}
170
+
171
+ === DEBUGGING TIPS ===
172
+ 1. Force GC: global.gc() (if --expose-gc flag used)
173
+ 2. Heap snapshot: takeHeapSnapshot()
174
+ 3. Check event listeners: process.listeners()
175
+ 4. Monitor specific objects with WeakRef
176
+ `;
177
+ }
178
+ /**
179
+ * Take heap snapshot (requires --expose-gc)
180
+ */
181
+ takeHeapSnapshot() {
182
+ try {
183
+ if (typeof global.gc === 'function') {
184
+ global.gc();
185
+ console.error('[MemoryMonitor] Forced garbage collection');
186
+ }
187
+ // Note: This would require v8 module for actual heap snapshots
188
+ // For now, just return memory usage after GC
189
+ const afterGC = process.memoryUsage();
190
+ return `Heap snapshot taken. Memory after GC: ${this.formatBytes(afterGC.heapUsed)}`;
191
+ }
192
+ catch (error) {
193
+ return `Heap snapshot failed: ${error}. Start with --expose-gc flag for full functionality.`;
194
+ }
195
+ }
196
+ /**
197
+ * Monitor event listeners for potential leaks
198
+ */
199
+ checkEventListeners() {
200
+ const process_listeners = process.eventNames().map(name => ({
201
+ event: String(name),
202
+ count: process.listenerCount(name)
203
+ }));
204
+ return `Event Listeners:
205
+ ${process_listeners.map(l => ` ${l.event}: ${l.count}`).join('\n')}`;
206
+ }
207
+ formatBytes(bytes) {
208
+ if (bytes === 0)
209
+ return '0 B';
210
+ const k = 1024;
211
+ const sizes = ['B', 'KB', 'MB', 'GB'];
212
+ const i = Math.floor(Math.log(Math.abs(bytes)) / Math.log(k));
213
+ const sign = bytes < 0 ? '-' : '';
214
+ return `${sign}${parseFloat((Math.abs(bytes) / Math.pow(k, i)).toFixed(2))} ${sizes[i]}`;
215
+ }
216
+ }
217
+ exports.MemoryMonitor = MemoryMonitor;
218
+ // Global instance
219
+ let globalMemoryMonitor = null;
220
+ /**
221
+ * Get or create global memory monitor instance
222
+ */
223
+ function getMemoryMonitor() {
224
+ if (!globalMemoryMonitor) {
225
+ globalMemoryMonitor = new MemoryMonitor();
226
+ }
227
+ return globalMemoryMonitor;
228
+ }
229
+ /**
230
+ * Quick memory status check
231
+ */
232
+ function memStatus() {
233
+ console.error(getMemoryMonitor().getCurrentStatus());
234
+ }
235
+ /**
236
+ * Start memory monitoring
237
+ */
238
+ function startMemWatch(intervalMs = 5000) {
239
+ getMemoryMonitor().startMonitoring(intervalMs);
240
+ }
241
+ /**
242
+ * Stop memory monitoring
243
+ */
244
+ function stopMemWatch() {
245
+ getMemoryMonitor().stopMonitoring();
246
+ }
247
+ /**
248
+ * Get memory report
249
+ */
250
+ function memReport() {
251
+ console.error(getMemoryMonitor().getDetailedReport());
252
+ }
253
+ /**
254
+ * Force garbage collection and show memory
255
+ */
256
+ function forceGC() {
257
+ const result = getMemoryMonitor().takeHeapSnapshot();
258
+ console.error(result);
259
+ }
260
+ /**
261
+ * Check event listeners
262
+ */
263
+ function checkListeners() {
264
+ console.error(getMemoryMonitor().checkEventListeners());
265
+ }
266
+ // Global exports for debugger console
267
+ if (typeof global !== 'undefined') {
268
+ const globalAny = global;
269
+ globalAny.memStatus = memStatus;
270
+ globalAny.startMemWatch = startMemWatch;
271
+ globalAny.stopMemWatch = stopMemWatch;
272
+ globalAny.memReport = memReport;
273
+ globalAny.forceGC = forceGC;
274
+ globalAny.checkListeners = checkListeners;
275
+ }
@@ -0,0 +1,6 @@
1
+ export declare const SCHEMA_VERSION = "4";
2
+ export interface MigrationResult {
3
+ changed: boolean;
4
+ notes?: string[];
5
+ }
6
+ export declare function migrateInstructionRecord(rec: Record<string, unknown>): MigrationResult;