@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,31 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const registry_1 = require("../server/registry");
7
+ const tracing_1 = require("./tracing");
8
+ const runtimeConfig_1 = require("../config/runtimeConfig");
9
+ const path_1 = __importDefault(require("path"));
10
+ const fs_1 = __importDefault(require("fs"));
11
+ // trace_dump: writes current in-memory ring buffer (if enabled) to a file and returns summary.
12
+ // Params: { file?: string }
13
+ (0, registry_1.registerHandler)('trace_dump', (p) => {
14
+ const tracingCfg = (0, runtimeConfig_1.getRuntimeConfig)().tracing;
15
+ const fallback = path_1.default.join(process.cwd(), 'snapshots', 'trace-buffer.json');
16
+ const file = p?.file || tracingCfg.buffer.file || fallback;
17
+ (0, tracing_1.dumpTraceBufferNow)(file);
18
+ let size = 0;
19
+ let bytes = 0;
20
+ try {
21
+ if (fs_1.default.existsSync(file)) {
22
+ const stat = fs_1.default.statSync(file);
23
+ bytes = stat.size;
24
+ const raw = JSON.parse(fs_1.default.readFileSync(file, 'utf8'));
25
+ if (raw && Array.isArray(raw.records))
26
+ size = raw.records.length;
27
+ }
28
+ }
29
+ catch { /* ignore */ }
30
+ return { dumped: true, file, records: size, bytes, env: (0, tracing_1.summarizeTraceEnv)(), bufferEnabled: (0, tracing_1.getTraceBuffer)().length > 0 };
31
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const registry_1 = require("../server/registry");
4
+ const indexContext_1 = require("./indexContext");
5
+ (0, registry_1.registerHandler)('usage_track', (p) => { if (!p.id)
6
+ return { error: 'missing id' }; const opts = { action: p.action, signal: p.signal, comment: p.comment }; const r = (0, indexContext_1.incrementUsage)(p.id, opts); if (!r)
7
+ return { notFound: true }; return r; });
8
+ (0, registry_1.registerHandler)('usage_hotset', (p) => { const st = (0, indexContext_1.ensureLoaded)(); const snap = (0, indexContext_1.loadUsageSnapshot)(); const limit = Math.max(1, Math.min(p.limit ?? 10, 100)); const items = [...st.list].filter(e => (e.usageCount ?? 0) > 0).sort((a, b) => { const ua = a.usageCount ?? 0, ub = b.usageCount ?? 0; if (ub !== ua)
9
+ return ub - ua; return (b.lastUsedAt || '').localeCompare(a.lastUsedAt || ''); }).slice(0, limit).map(e => { const rec = snap[e.id] || {}; const item = { id: e.id, usageCount: e.usageCount, lastUsedAt: e.lastUsedAt }; if (rec.lastSignal)
10
+ item.lastSignal = rec.lastSignal; if (rec.lastComment)
11
+ item.lastComment = rec.lastComment; return item; }); return { hash: st.hash, count: items.length, items, limit }; });
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Phase 3: Hotness/Ranking System - Core Hot Score Algorithm
3
+ *
4
+ * Implements instruction ranking based on temporal usage patterns,
5
+ * recency weighting, and usage frequency with configurable decay parameters.
6
+ *
7
+ * Hot Score Formula:
8
+ * hotScore = (recentUsage * recencyWeight) + (historicalUsage * historyWeight) + bonuses
9
+ *
10
+ * @module HotScore
11
+ * @version 1.0.0
12
+ * @since Phase 3 Implementation
13
+ */
14
+ /**
15
+ * Configuration parameters for hot score calculation
16
+ */
17
+ export interface HotScoreConfig {
18
+ /** Weight for recent usage (last 24 hours). Default: 0.7 */
19
+ recencyWeight: number;
20
+ /** Weight for historical usage (beyond 24 hours). Default: 0.3 */
21
+ historyWeight: number;
22
+ /** Decay factor per hour for temporal weighting. Default: 0.95 */
23
+ temporalDecay: number;
24
+ /** Minimum score threshold for ranking inclusion. Default: 0.01 */
25
+ minScoreThreshold: number;
26
+ /** Maximum lookback hours for historical analysis. Default: 168 (7 days) */
27
+ maxLookbackHours: number;
28
+ /** Bonus points for first-time usage. Default: 0.1 */
29
+ firstUseBonus: number;
30
+ /** Bonus points for diverse usage patterns. Default: 0.05 */
31
+ diversityBonus: number;
32
+ }
33
+ /**
34
+ * Usage data point for hot score calculation
35
+ */
36
+ export interface UsagePoint {
37
+ /** Timestamp of usage event (Unix epoch ms) */
38
+ timestamp: number;
39
+ /** Usage count at this point */
40
+ count: number;
41
+ /** Optional context metadata */
42
+ context?: Record<string, string | number | boolean>;
43
+ }
44
+ /**
45
+ * Computed hot score result with breakdown
46
+ */
47
+ export interface HotScoreResult {
48
+ /** Final computed hot score */
49
+ score: number;
50
+ /** Breakdown of score components */
51
+ breakdown: {
52
+ recentUsage: number;
53
+ historicalUsage: number;
54
+ recencyContribution: number;
55
+ historyContribution: number;
56
+ bonuses: number;
57
+ };
58
+ /** Ranking metadata */
59
+ metadata: {
60
+ totalUsageEvents: number;
61
+ uniqueHours: number;
62
+ firstUsage?: number;
63
+ lastUsage?: number;
64
+ usageTrend: 'increasing' | 'decreasing' | 'stable';
65
+ };
66
+ }
67
+ /**
68
+ * Default hot score configuration optimized for enterprise usage patterns
69
+ */
70
+ export declare const DEFAULT_HOT_SCORE_CONFIG: HotScoreConfig;
71
+ /**
72
+ * Hot score calculation service
73
+ *
74
+ * Provides sophisticated instruction ranking based on temporal usage patterns
75
+ * with configurable weighting, decay factors, and bonus systems.
76
+ */
77
+ export declare class HotScoreService {
78
+ private config;
79
+ /**
80
+ * Initialize hot score service with configuration
81
+ *
82
+ * @param config - Hot score calculation parameters
83
+ */
84
+ constructor(config?: HotScoreConfig);
85
+ /**
86
+ * Calculate hot score for instruction based on usage history
87
+ *
88
+ * @param instructionId - Unique identifier for instruction
89
+ * @param usageHistory - Temporal usage data points
90
+ * @param currentTime - Current timestamp for recency calculation (defaults to now)
91
+ * @returns Hot score result with detailed breakdown
92
+ */
93
+ calculateHotScore(instructionId: string, usageHistory: UsagePoint[], _currentTime?: number): HotScoreResult;
94
+ /**
95
+ * Calculate usage score for a specific time window with temporal decay
96
+ */
97
+ private calculateTimeWindowUsage;
98
+ /**
99
+ * Calculate bonus points for special usage patterns
100
+ */
101
+ private calculateBonuses;
102
+ /**
103
+ * Generate ranking metadata for analysis and debugging
104
+ */
105
+ private generateMetadata;
106
+ /**
107
+ * Create empty result for instructions with no usage history
108
+ */
109
+ private createEmptyResult;
110
+ /**
111
+ * Update configuration parameters
112
+ *
113
+ * @param newConfig - Updated configuration parameters
114
+ */
115
+ updateConfig(newConfig: Partial<HotScoreConfig>): void;
116
+ /**
117
+ * Get current configuration
118
+ *
119
+ * @returns Current hot score configuration
120
+ */
121
+ getConfig(): HotScoreConfig;
122
+ /**
123
+ * Batch calculate hot scores for multiple instructions
124
+ *
125
+ * @param instructionUsage - Map of instruction ID to usage history
126
+ * @param currentTime - Current timestamp for calculations
127
+ * @returns Map of instruction ID to hot score results
128
+ */
129
+ calculateBatchHotScores(instructionUsage: Map<string, UsagePoint[]>, _currentTime?: number): Map<string, HotScoreResult>;
130
+ }
131
+ /**
132
+ * Utility function to create hot score service with default configuration
133
+ *
134
+ * @param overrides - Configuration overrides
135
+ * @returns Configured hot score service instance
136
+ */
137
+ export declare function createHotScoreService(overrides?: Partial<HotScoreConfig>): HotScoreService;
@@ -0,0 +1,244 @@
1
+ "use strict";
2
+ /**
3
+ * Phase 3: Hotness/Ranking System - Core Hot Score Algorithm
4
+ *
5
+ * Implements instruction ranking based on temporal usage patterns,
6
+ * recency weighting, and usage frequency with configurable decay parameters.
7
+ *
8
+ * Hot Score Formula:
9
+ * hotScore = (recentUsage * recencyWeight) + (historicalUsage * historyWeight) + bonuses
10
+ *
11
+ * @module HotScore
12
+ * @version 1.0.0
13
+ * @since Phase 3 Implementation
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.HotScoreService = exports.DEFAULT_HOT_SCORE_CONFIG = void 0;
17
+ exports.createHotScoreService = createHotScoreService;
18
+ const logger_js_1 = require("./logger.js");
19
+ /**
20
+ * Default hot score configuration optimized for enterprise usage patterns
21
+ */
22
+ exports.DEFAULT_HOT_SCORE_CONFIG = {
23
+ recencyWeight: 0.7, // Favor recent activity
24
+ historyWeight: 0.3, // But consider historical patterns
25
+ temporalDecay: 0.95, // 5% decay per hour
26
+ minScoreThreshold: 0.01, // Filter very low scores
27
+ maxLookbackHours: 168, // 7 days historical window
28
+ firstUseBonus: 0.1, // Encourage exploration
29
+ diversityBonus: 0.05 // Reward varied usage
30
+ };
31
+ /**
32
+ * Hot score calculation service
33
+ *
34
+ * Provides sophisticated instruction ranking based on temporal usage patterns
35
+ * with configurable weighting, decay factors, and bonus systems.
36
+ */
37
+ class HotScoreService {
38
+ config;
39
+ /**
40
+ * Initialize hot score service with configuration
41
+ *
42
+ * @param config - Hot score calculation parameters
43
+ */
44
+ constructor(config = exports.DEFAULT_HOT_SCORE_CONFIG) {
45
+ this.config = { ...config };
46
+ (0, logger_js_1.logInfo)('[hotScore] HotScoreService initialized', {
47
+ recencyWeight: this.config.recencyWeight,
48
+ historyWeight: this.config.historyWeight,
49
+ temporalDecay: this.config.temporalDecay,
50
+ maxLookbackHours: this.config.maxLookbackHours
51
+ });
52
+ }
53
+ /**
54
+ * Calculate hot score for instruction based on usage history
55
+ *
56
+ * @param instructionId - Unique identifier for instruction
57
+ * @param usageHistory - Temporal usage data points
58
+ * @param currentTime - Current timestamp for recency calculation (defaults to now)
59
+ * @returns Hot score result with detailed breakdown
60
+ */
61
+ calculateHotScore(instructionId, usageHistory, _currentTime = Date.now()) {
62
+ if (!usageHistory.length) {
63
+ return this.createEmptyResult();
64
+ }
65
+ const currentTime = _currentTime; // internal alias; parameter intentionally prefixed underscore to satisfy lint
66
+ const sortedHistory = usageHistory
67
+ .filter(point => point.timestamp <= currentTime)
68
+ .sort((a, b) => b.timestamp - a.timestamp); // Most recent first
69
+ const cutoffTime = currentTime - (this.config.maxLookbackHours * 60 * 60 * 1000);
70
+ const relevantHistory = sortedHistory.filter(point => point.timestamp >= cutoffTime);
71
+ if (!relevantHistory.length) {
72
+ return this.createEmptyResult();
73
+ }
74
+ // Calculate temporal weights and usage components
75
+ const recentBoundary = currentTime - (24 * 60 * 60 * 1000); // 24 hours ago
76
+ const recentUsage = this.calculateTimeWindowUsage(relevantHistory, recentBoundary, currentTime);
77
+ const historicalUsage = this.calculateTimeWindowUsage(relevantHistory, cutoffTime, recentBoundary);
78
+ // Apply configuration weights
79
+ const recencyContribution = recentUsage * this.config.recencyWeight;
80
+ const historyContribution = historicalUsage * this.config.historyWeight;
81
+ // Calculate bonuses
82
+ const bonuses = this.calculateBonuses(instructionId, relevantHistory, currentTime);
83
+ // Compute final score
84
+ const score = recencyContribution + historyContribution + bonuses;
85
+ // Generate metadata
86
+ const metadata = this.generateMetadata(relevantHistory, currentTime);
87
+ const result = {
88
+ score: Math.max(0, score),
89
+ breakdown: {
90
+ recentUsage,
91
+ historicalUsage,
92
+ recencyContribution,
93
+ historyContribution,
94
+ bonuses
95
+ },
96
+ metadata
97
+ };
98
+ (0, logger_js_1.logDebug)('[hotScore] Hot score calculated', {
99
+ instructionId,
100
+ score: result.score,
101
+ usagePoints: relevantHistory.length,
102
+ ...result.breakdown
103
+ });
104
+ return result;
105
+ }
106
+ /**
107
+ * Calculate usage score for a specific time window with temporal decay
108
+ */
109
+ calculateTimeWindowUsage(history, windowStart, windowEnd) {
110
+ const windowHistory = history.filter(point => point.timestamp >= windowStart && point.timestamp < windowEnd);
111
+ if (!windowHistory.length)
112
+ return 0;
113
+ let totalScore = 0;
114
+ for (const point of windowHistory) {
115
+ const hoursFromEnd = (windowEnd - point.timestamp) / (60 * 60 * 1000);
116
+ const decayFactor = Math.pow(this.config.temporalDecay, hoursFromEnd);
117
+ totalScore += point.count * decayFactor;
118
+ }
119
+ return totalScore;
120
+ }
121
+ /**
122
+ * Calculate bonus points for special usage patterns
123
+ */
124
+ calculateBonuses(instructionId, history, _currentTime) {
125
+ let bonuses = 0;
126
+ // First use bonus (encourages exploration)
127
+ const totalUsage = history.reduce((sum, point) => sum + point.count, 0);
128
+ if (totalUsage === 1) {
129
+ bonuses += this.config.firstUseBonus;
130
+ }
131
+ // Diversity bonus (rewards varied usage patterns)
132
+ const uniqueHours = new Set(history.map(point => Math.floor(point.timestamp / (60 * 60 * 1000)))).size;
133
+ if (uniqueHours >= 3) {
134
+ bonuses += this.config.diversityBonus;
135
+ }
136
+ return bonuses;
137
+ }
138
+ /**
139
+ * Generate ranking metadata for analysis and debugging
140
+ */
141
+ generateMetadata(history, _currentTime) {
142
+ const timestamps = history.map(p => p.timestamp);
143
+ const totalUsageEvents = history.reduce((sum, point) => sum + point.count, 0);
144
+ const uniqueHours = new Set(history.map(point => Math.floor(point.timestamp / (60 * 60 * 1000)))).size;
145
+ const firstUsage = Math.min(...timestamps);
146
+ const lastUsage = Math.max(...timestamps);
147
+ // Simple trend analysis (last quarter vs previous quarter)
148
+ const quarterDuration = (_currentTime - firstUsage) / 4;
149
+ const lastQuarterStart = _currentTime - quarterDuration;
150
+ const lastQuarterUsage = history
151
+ .filter(p => p.timestamp >= lastQuarterStart)
152
+ .reduce((sum, point) => sum + point.count, 0);
153
+ const previousQuarterEnd = lastQuarterStart;
154
+ const previousQuarterStart = previousQuarterEnd - quarterDuration;
155
+ const previousQuarterUsage = history
156
+ .filter(p => p.timestamp >= previousQuarterStart && p.timestamp < previousQuarterEnd)
157
+ .reduce((sum, point) => sum + point.count, 0);
158
+ let usageTrend = 'stable';
159
+ if (lastQuarterUsage > previousQuarterUsage * 1.1) {
160
+ usageTrend = 'increasing';
161
+ }
162
+ else if (lastQuarterUsage < previousQuarterUsage * 0.9) {
163
+ usageTrend = 'decreasing';
164
+ }
165
+ return {
166
+ totalUsageEvents,
167
+ uniqueHours,
168
+ firstUsage,
169
+ lastUsage,
170
+ usageTrend
171
+ };
172
+ }
173
+ /**
174
+ * Create empty result for instructions with no usage history
175
+ */
176
+ createEmptyResult() {
177
+ return {
178
+ score: 0,
179
+ breakdown: {
180
+ recentUsage: 0,
181
+ historicalUsage: 0,
182
+ recencyContribution: 0,
183
+ historyContribution: 0,
184
+ bonuses: 0
185
+ },
186
+ metadata: {
187
+ totalUsageEvents: 0,
188
+ uniqueHours: 0,
189
+ usageTrend: 'stable'
190
+ }
191
+ };
192
+ }
193
+ /**
194
+ * Update configuration parameters
195
+ *
196
+ * @param newConfig - Updated configuration parameters
197
+ */
198
+ updateConfig(newConfig) {
199
+ this.config = { ...this.config, ...newConfig };
200
+ (0, logger_js_1.logInfo)('[hotScore] Hot score configuration updated', newConfig);
201
+ }
202
+ /**
203
+ * Get current configuration
204
+ *
205
+ * @returns Current hot score configuration
206
+ */
207
+ getConfig() {
208
+ return { ...this.config };
209
+ }
210
+ /**
211
+ * Batch calculate hot scores for multiple instructions
212
+ *
213
+ * @param instructionUsage - Map of instruction ID to usage history
214
+ * @param currentTime - Current timestamp for calculations
215
+ * @returns Map of instruction ID to hot score results
216
+ */
217
+ calculateBatchHotScores(instructionUsage, _currentTime = Date.now()) {
218
+ const results = new Map();
219
+ for (const [instructionId, usageHistory] of instructionUsage) {
220
+ const result = this.calculateHotScore(instructionId, usageHistory, _currentTime);
221
+ // Apply minimum threshold filter
222
+ if (result.score >= this.config.minScoreThreshold) {
223
+ results.set(instructionId, result);
224
+ }
225
+ }
226
+ (0, logger_js_1.logInfo)('[hotScore] Batch hot scores calculated', {
227
+ totalInstructions: instructionUsage.size,
228
+ qualifyingInstructions: results.size,
229
+ minThreshold: this.config.minScoreThreshold
230
+ });
231
+ return results;
232
+ }
233
+ }
234
+ exports.HotScoreService = HotScoreService;
235
+ /**
236
+ * Utility function to create hot score service with default configuration
237
+ *
238
+ * @param overrides - Configuration overrides
239
+ * @returns Configured hot score service instance
240
+ */
241
+ function createHotScoreService(overrides) {
242
+ const config = overrides ? { ...exports.DEFAULT_HOT_SCORE_CONFIG, ...overrides } : exports.DEFAULT_HOT_SCORE_CONFIG;
243
+ return new HotScoreService(config);
244
+ }
@@ -0,0 +1,117 @@
1
+ import { InstructionEntry } from '../models/instruction';
2
+ export interface IndexState {
3
+ loadedAt: string;
4
+ hash: string;
5
+ byId: Map<string, InstructionEntry>;
6
+ list: InstructionEntry[];
7
+ fileCount: number;
8
+ versionMTime: number;
9
+ versionToken: string;
10
+ loadErrors?: {
11
+ file: string;
12
+ error: string;
13
+ }[];
14
+ loadDebug?: {
15
+ scanned: number;
16
+ accepted: number;
17
+ skipped: number;
18
+ trace?: {
19
+ file: string;
20
+ accepted: boolean;
21
+ reason?: string;
22
+ }[];
23
+ };
24
+ loadSummary?: {
25
+ scanned: number;
26
+ accepted: number;
27
+ skipped: number;
28
+ reasons: Record<string, number>;
29
+ cacheHits?: number;
30
+ hashHits?: number;
31
+ };
32
+ }
33
+ export interface UsagePersistRecord {
34
+ usageCount?: number;
35
+ firstSeenTs?: string;
36
+ lastUsedAt?: string;
37
+ lastAction?: string;
38
+ lastSignal?: string;
39
+ lastComment?: string;
40
+ }
41
+ export interface UsageTrackOptions {
42
+ action?: string;
43
+ signal?: string;
44
+ comment?: string;
45
+ }
46
+ export declare function clearUsageRateLimit(id?: string): void;
47
+ export declare function loadUsageSnapshot(): Record<string, UsagePersistRecord>;
48
+ export declare function getInstructionsDir(): string;
49
+ export declare function diagnoseInstructionsDir(): {
50
+ dir: string;
51
+ exists: boolean;
52
+ writable: boolean;
53
+ error: string | null;
54
+ };
55
+ export declare function touchIndexVersion(): void;
56
+ export declare function markindexDirty(): void;
57
+ export declare function ensureLoaded(): IndexState;
58
+ export interface IndexPollerOptions {
59
+ intervalMs?: number;
60
+ proactive?: boolean;
61
+ }
62
+ export declare function startIndexVersionPoller(opts?: IndexPollerOptions): void;
63
+ export declare function stopIndexVersionPoller(): void;
64
+ export declare function invalidate(): void;
65
+ export declare function getIndexState(): IndexState;
66
+ export declare function getDebugIndexSnapshot(): {
67
+ dir: string;
68
+ fileCountOnDisk: number;
69
+ fileNames: string[];
70
+ indexLoaded: boolean;
71
+ indexCount: number;
72
+ dirtyFlag: boolean;
73
+ missingIds: string[];
74
+ extraLoaded: string[];
75
+ loadedAt: string | undefined;
76
+ versionMTime: number | undefined;
77
+ };
78
+ export declare function getIndexDiagnostics(opts?: {
79
+ includeTrace?: boolean;
80
+ }): {
81
+ dir: string;
82
+ loadedAt: string;
83
+ hash: string;
84
+ scanned: number;
85
+ accepted: number;
86
+ skipped: number;
87
+ fileCountOnDisk: number;
88
+ indexCount: number;
89
+ missingOnIndexCount: number;
90
+ missingOnIndex: string[];
91
+ reasons: Record<string, number>;
92
+ errorSamples: {
93
+ file: string;
94
+ error: string;
95
+ }[];
96
+ traceSample: {
97
+ file: string;
98
+ accepted: boolean;
99
+ reason?: string;
100
+ }[] | undefined;
101
+ };
102
+ export declare function projectGovernance(e: InstructionEntry): {
103
+ id: string;
104
+ title: string;
105
+ version: string;
106
+ owner: string;
107
+ priorityTier: "P1" | "P2" | "P3" | "P4";
108
+ nextReviewDue: string;
109
+ semanticSummarySha256: string;
110
+ changeLogLength: number;
111
+ };
112
+ export declare function computeGovernanceHash(entries: InstructionEntry[]): string;
113
+ export declare function writeEntry(entry: InstructionEntry): void;
114
+ export declare function removeEntry(id: string): void;
115
+ export declare function scheduleUsagePersist(): void;
116
+ export declare function incrementUsage(id: string, opts?: UsageTrackOptions): Record<string, unknown> | null;
117
+ export declare function __testResetUsageState(): void;