@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,145 @@
1
+ import { LogLevel } from './configUtils';
2
+ import type { ServerConfig, LoggingConfig, MetricsConfig, AtomicFsConfig, PreflightConfig, TracingConfig } from './serverConfig';
3
+ import type { DashboardConfig } from './dashboardConfig';
4
+ import type { FeatureFlagsConfig, FeedbackConfig, MessagingConfig, SemanticConfig, MinimalConfig, BootstrapSeedConfig, ValidationConfig, DynamicConfig, GraphConfig, StorageConfig } from './featureConfig';
5
+ export type IndexMode = 'normal' | 'memoize' | 'memoize+hash' | 'reload' | 'reload+memo';
6
+ export type { LogLevel };
7
+ export type { MessagingConfig } from './featureConfig';
8
+ export type { StorageConfig } from './featureConfig';
9
+ interface TimingMap {
10
+ [key: string]: number;
11
+ }
12
+ interface BufferRingConfig {
13
+ append: boolean;
14
+ preload: boolean;
15
+ }
16
+ interface CoverageConfig {
17
+ hardMin?: number;
18
+ target?: number;
19
+ fastMode: boolean;
20
+ strictMode: boolean;
21
+ }
22
+ interface IndexReadRetriesConfig {
23
+ attempts: number;
24
+ backoffMs: number;
25
+ }
26
+ interface IndexGovernanceConfig {
27
+ trailingNewline: boolean;
28
+ hashHardeningEnabled: boolean;
29
+ hashCanonVariants: number;
30
+ hashImportSetSize: number;
31
+ }
32
+ interface IndexConfig {
33
+ mode: IndexMode;
34
+ baseDir: string;
35
+ reloadAlways: boolean;
36
+ memoize: boolean;
37
+ memoizeDisabledExplicitly: boolean;
38
+ memoizeHash: boolean;
39
+ normalizationLog?: string | boolean;
40
+ fileTrace: boolean;
41
+ eventSilent: boolean;
42
+ readRetries: IndexReadRetriesConfig;
43
+ usageFlushMs: number;
44
+ disableUsageClamp: boolean;
45
+ govHash: IndexGovernanceConfig;
46
+ maxFiles?: number;
47
+ loadWarningThreshold?: number;
48
+ bodyMaxLength: number;
49
+ autoSplitOversized: boolean;
50
+ autoUsageTrack: boolean;
51
+ }
52
+ interface InstructionsManifestConfig {
53
+ writeEnabled: boolean;
54
+ fastload: boolean;
55
+ }
56
+ interface InstructionsCIContextConfig {
57
+ inCI: boolean;
58
+ githubActions: boolean;
59
+ tfBuild: boolean;
60
+ }
61
+ interface InstructionsAuditLogConfig {
62
+ enabled: boolean;
63
+ file?: string;
64
+ rawValue?: string;
65
+ usesDefault: boolean;
66
+ }
67
+ interface InstructionsListValidationConfig {
68
+ forceFullScan: boolean;
69
+ allowSampling: boolean;
70
+ effectiveSampleSize?: number;
71
+ sampleSeed?: number;
72
+ concurrency: number;
73
+ maxDurationMs: number;
74
+ }
75
+ interface InstructionsConfig {
76
+ workspaceId?: string;
77
+ agentId?: string;
78
+ canonicalDisable: boolean;
79
+ strictVisibility: boolean;
80
+ strictCreate: boolean;
81
+ strictRemove: boolean;
82
+ requireCategory: boolean;
83
+ traceQueryDiag: boolean;
84
+ manifest: InstructionsManifestConfig;
85
+ ciContext: InstructionsCIContextConfig;
86
+ auditLog: InstructionsAuditLogConfig;
87
+ listValidation: InstructionsListValidationConfig;
88
+ }
89
+ interface MutationConfig {
90
+ enabled: boolean;
91
+ dispatcherTiming: boolean;
92
+ maxBulkDelete: number;
93
+ backupBeforeBulkDelete: boolean;
94
+ autoBackupEnabled: boolean;
95
+ autoBackupIntervalMs: number;
96
+ autoBackupMaxCount: number;
97
+ }
98
+ export interface RuntimeConfig {
99
+ profile: string;
100
+ testMode: string | undefined;
101
+ index: IndexConfig;
102
+ mutationEnabled: boolean;
103
+ logLevel: LogLevel;
104
+ trace: Set<string>;
105
+ initFeatures: Set<string>;
106
+ bufferRing: BufferRingConfig;
107
+ timing: (key: string, fallback?: number) => number | undefined;
108
+ rawTiming: TimingMap;
109
+ coverage: CoverageConfig;
110
+ dashboard: DashboardConfig;
111
+ server: ServerConfig;
112
+ logging: LoggingConfig;
113
+ metrics: MetricsConfig;
114
+ instructions: InstructionsConfig;
115
+ tracing: TracingConfig;
116
+ mutation: MutationConfig;
117
+ featureFlags: FeatureFlagsConfig;
118
+ feedback: FeedbackConfig;
119
+ messaging: MessagingConfig;
120
+ semantic: SemanticConfig;
121
+ minimal: MinimalConfig;
122
+ bootstrapSeed: BootstrapSeedConfig;
123
+ atomicFs: AtomicFsConfig;
124
+ preflight: PreflightConfig;
125
+ validation: ValidationConfig;
126
+ dynamic: DynamicConfig;
127
+ graph: GraphConfig;
128
+ storage: StorageConfig;
129
+ }
130
+ /**
131
+ * Parse all environment variables and construct a fresh {@link RuntimeConfig} object.
132
+ * Prefer {@link getRuntimeConfig} for normal use — this function always re-parses.
133
+ * @returns Fully resolved runtime configuration object
134
+ */
135
+ export declare function loadRuntimeConfig(): RuntimeConfig;
136
+ /**
137
+ * Return the cached singleton {@link RuntimeConfig}, loading it on first call.
138
+ * @returns The application-wide runtime configuration
139
+ */
140
+ export declare function getRuntimeConfig(): RuntimeConfig;
141
+ /**
142
+ * Force a reload of the runtime configuration by discarding the cache and re-parsing all env vars.
143
+ * @returns The freshly loaded runtime configuration
144
+ */
145
+ export declare function reloadRuntimeConfig(): RuntimeConfig;
@@ -0,0 +1,334 @@
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
+ exports.loadRuntimeConfig = loadRuntimeConfig;
7
+ exports.getRuntimeConfig = getRuntimeConfig;
8
+ exports.reloadRuntimeConfig = reloadRuntimeConfig;
9
+ /**
10
+ * Unified runtime configuration loader — thin aggregate.
11
+ *
12
+ * All configuration is driven by INDEX_SERVER_ prefixed env vars.
13
+ * See docs/configuration.md for the full reference.
14
+ *
15
+ * Domain modules handle parsing for their respective areas:
16
+ * - serverConfig.ts : MCP server, bootstrap, transport, logging, metrics, tracing
17
+ * - dashboardConfig.ts : HTTP server, TLS, WebSocket, persistence
18
+ * - featureConfig.ts : feature flags, feedback, messaging, semantic, graph, storage
19
+ */
20
+ const fs_1 = __importDefault(require("fs"));
21
+ const path_1 = __importDefault(require("path"));
22
+ const envUtils_1 = require("../utils/envUtils");
23
+ const configUtils_1 = require("./configUtils");
24
+ const dirConstants_1 = require("./dirConstants");
25
+ const defaultValues_1 = require("./defaultValues");
26
+ const serverConfig_1 = require("./serverConfig");
27
+ const dashboardConfig_1 = require("./dashboardConfig");
28
+ const featureConfig_1 = require("./featureConfig");
29
+ function parseTiming() {
30
+ const map = {};
31
+ const timingSrc = process.env.INDEX_SERVER_TIMING_JSON;
32
+ if (timingSrc) {
33
+ let obj;
34
+ if (timingSrc.startsWith('{'))
35
+ obj = (0, configUtils_1.parseJSONMaybe)(timingSrc);
36
+ else if (fs_1.default.existsSync(timingSrc))
37
+ obj = (0, configUtils_1.parseJSONMaybe)(fs_1.default.readFileSync(timingSrc, 'utf8'));
38
+ if (obj && typeof obj === 'object') {
39
+ for (const [k, v] of Object.entries(obj)) {
40
+ if (typeof v === 'number' && Number.isFinite(v))
41
+ map[k] = v;
42
+ }
43
+ }
44
+ }
45
+ return map;
46
+ }
47
+ function deriveIndexMode() {
48
+ const explicit = process.env.INDEX_SERVER_CACHE_MODE;
49
+ if (explicit)
50
+ return explicit;
51
+ const memo = process.env.INDEX_SERVER_MEMOIZE === '1';
52
+ const hash = process.env.INDEX_SERVER_MEMOIZE_HASH === '1';
53
+ const reload = process.env.INDEX_SERVER_ALWAYS_RELOAD === '1';
54
+ if (reload && memo && hash)
55
+ return 'reload+memo';
56
+ if (reload && memo)
57
+ return 'reload+memo';
58
+ if (reload)
59
+ return 'reload';
60
+ if (memo && hash)
61
+ return 'memoize+hash';
62
+ if (memo)
63
+ return 'memoize';
64
+ return 'normal';
65
+ }
66
+ function parseTrace() {
67
+ const set = new Set();
68
+ const raw = process.env.INDEX_SERVER_TRACE;
69
+ if (raw) {
70
+ raw.split(',').map(s => s.trim()).filter(Boolean).forEach(v => set.add(v));
71
+ }
72
+ return set;
73
+ }
74
+ function parseInitFeatures() {
75
+ const set = new Set();
76
+ const raw = process.env.INDEX_SERVER_INIT_FEATURES;
77
+ if (raw) {
78
+ raw.split(',').map(s => s.trim()).filter(Boolean).forEach(v => set.add(v));
79
+ }
80
+ return set;
81
+ }
82
+ function parseLogLevel(traceSet) {
83
+ const raw = process.env.INDEX_SERVER_LOG_LEVEL?.toLowerCase();
84
+ const valid = ['error', 'warn', 'info', 'debug', 'trace'];
85
+ if (raw && valid.includes(raw))
86
+ return raw;
87
+ if (traceSet.has('verbose'))
88
+ return 'trace';
89
+ if ((0, envUtils_1.isDebugOrVerbose)())
90
+ return 'debug';
91
+ return 'info';
92
+ }
93
+ function parseBufferRing() {
94
+ let append;
95
+ let preload = false;
96
+ const appendRaw = process.env.INDEX_SERVER_BUFFER_RING_APPEND;
97
+ const preloadRaw = process.env.INDEX_SERVER_BUFFER_RING_PRELOAD;
98
+ if (appendRaw === '0')
99
+ append = false;
100
+ else if (appendRaw === '1')
101
+ append = true;
102
+ if (preloadRaw === '1')
103
+ preload = true;
104
+ return { append: append ?? true, preload };
105
+ }
106
+ function parseMutation() {
107
+ if (process.env.INDEX_SERVER_MUTATION) {
108
+ if (process.env.INDEX_SERVER_MUTATION === '1' || process.env.INDEX_SERVER_MUTATION === 'true')
109
+ return true;
110
+ return false;
111
+ }
112
+ return false;
113
+ }
114
+ function parseCoverage() {
115
+ const fast = process.env.INDEX_SERVER_COVERAGE_FAST === '1' || process.env.INDEX_SERVER_TEST_MODE === 'coverage-fast';
116
+ const hardMinRaw = process.env.INDEX_SERVER_COVERAGE_HARD_MIN;
117
+ const targetRaw = process.env.INDEX_SERVER_COVERAGE_TARGET;
118
+ const hardMin = hardMinRaw ? Number(hardMinRaw) : undefined;
119
+ const target = targetRaw ? Number(targetRaw) : undefined;
120
+ const strictMode = (0, envUtils_1.parseBooleanEnv)(process.env.INDEX_SERVER_COVERAGE_STRICT, process.env.INDEX_SERVER_TEST_MODE === 'coverage-strict');
121
+ return { hardMin, target, fastMode: fast, strictMode };
122
+ }
123
+ function resolveInstructionsAuditLog() {
124
+ const defaultPath = (0, configUtils_1.toAbsolute)(path_1.default.join(dirConstants_1.DIR.LOGS_AUDIT));
125
+ const raw = process.env.INDEX_SERVER_AUDIT_LOG;
126
+ if (raw === undefined || raw.trim().length === 0) {
127
+ return { enabled: true, file: defaultPath, rawValue: undefined, usesDefault: true };
128
+ }
129
+ const trimmed = raw.trim();
130
+ if ((0, envUtils_1.isFalsyExtended)(trimmed)) {
131
+ return { enabled: false, rawValue: raw, usesDefault: false };
132
+ }
133
+ const defaultRequested = trimmed === '1' || envUtils_1.TRUTHY_OR_DEFAULT.includes(trimmed.toLowerCase());
134
+ return {
135
+ enabled: true,
136
+ file: defaultRequested ? defaultPath : (0, configUtils_1.toAbsolute)(trimmed),
137
+ rawValue: raw,
138
+ usesDefault: defaultRequested || trimmed.length === 0,
139
+ };
140
+ }
141
+ function resolveInstructionsDir() {
142
+ const raw = process.env.INDEX_SERVER_DIR;
143
+ const fallback = path_1.default.join(configUtils_1.CWD, dirConstants_1.DIR.INSTRUCTIONS);
144
+ return (0, configUtils_1.toAbsolute)(raw, fallback);
145
+ }
146
+ function parseIndexConfig() {
147
+ const baseDir = resolveInstructionsDir();
148
+ const normalizationRaw = process.env.INDEX_SERVER_NORMALIZATION_LOG;
149
+ let normalizationLog;
150
+ if (normalizationRaw) {
151
+ if ((0, envUtils_1.isFalsy)(normalizationRaw))
152
+ normalizationLog = false;
153
+ else if ((0, envUtils_1.isTruthy)(normalizationRaw))
154
+ normalizationLog = (0, configUtils_1.toAbsolute)(path_1.default.join(dirConstants_1.DIR.LOGS_NORMALIZATION));
155
+ else
156
+ normalizationLog = (0, configUtils_1.toAbsolute)(normalizationRaw);
157
+ }
158
+ const memoizeRaw = process.env.INDEX_SERVER_MEMOIZE;
159
+ const attempts = (0, configUtils_1.numberFromEnv)('INDEX_SERVER_READ_RETRIES', defaultValues_1.DEFAULT_LIMITS.READ_RETRIES);
160
+ const backoffMs = (0, configUtils_1.numberFromEnv)('INDEX_SERVER_READ_BACKOFF_MS', defaultValues_1.DEFAULT_LIMITS.READ_BACKOFF_MS);
161
+ const usageFlushMs = (0, configUtils_1.numberFromEnv)('INDEX_SERVER_USAGE_FLUSH_MS', defaultValues_1.DEFAULT_GOVERNANCE.USAGE_FLUSH_MS);
162
+ const hashHardeningEnabled = (0, envUtils_1.parseBooleanEnv)(process.env.INDEX_SERVER_GOV_HASH_HARDENING, true);
163
+ const canonVariantsRaw = (0, configUtils_1.optionalIntFromEnv)('INDEX_SERVER_GOV_HASH_CANON_VARIANTS');
164
+ const importSetSizeRaw = (0, configUtils_1.optionalIntFromEnv)('INDEX_SERVER_GOV_HASH_IMPORT_SET_SIZE');
165
+ const hashCanonVariants = (0, configUtils_1.clamp)(canonVariantsRaw ?? defaultValues_1.DEFAULT_GOVERNANCE.HASH_CANON_VARIANTS, 1, defaultValues_1.DEFAULT_GOVERNANCE.HASH_CANON_VARIANTS_MAX);
166
+ const hashImportSetSize = (0, configUtils_1.clamp)(importSetSizeRaw ?? defaultValues_1.DEFAULT_GOVERNANCE.HASH_IMPORT_SET_SIZE, 2, defaultValues_1.DEFAULT_GOVERNANCE.HASH_IMPORT_SET_SIZE_MAX);
167
+ const maxFiles = (0, configUtils_1.optionalIntFromEnv)('INDEX_SERVER_MAX_FILES');
168
+ const loadWarningThreshold = (0, configUtils_1.optionalIntFromEnv)('INDEX_SERVER_LOAD_WARN_MS');
169
+ const bodyMaxLength = (0, configUtils_1.clamp)((0, configUtils_1.numberFromEnv)('INDEX_SERVER_BODY_MAX_LENGTH', defaultValues_1.DEFAULT_LIMITS.BODY_MAX_LENGTH), defaultValues_1.DEFAULT_LIMITS.BODY_MIN_LENGTH, defaultValues_1.DEFAULT_LIMITS.BODY_ABS_MAX_LENGTH);
170
+ return {
171
+ mode: deriveIndexMode(),
172
+ baseDir,
173
+ reloadAlways: (0, envUtils_1.getBooleanEnv)('INDEX_SERVER_ALWAYS_RELOAD'),
174
+ memoize: (0, envUtils_1.getBooleanEnv)('INDEX_SERVER_MEMOIZE'),
175
+ memoizeDisabledExplicitly: memoizeRaw !== undefined ? (0, envUtils_1.isFalsy)(memoizeRaw) : false,
176
+ memoizeHash: (0, envUtils_1.getBooleanEnv)('INDEX_SERVER_MEMOIZE_HASH'),
177
+ normalizationLog,
178
+ fileTrace: (0, envUtils_1.getBooleanEnv)('INDEX_SERVER_FILE_TRACE'),
179
+ eventSilent: (0, envUtils_1.getBooleanEnv)('INDEX_SERVER_EVENT_SILENT'),
180
+ readRetries: { attempts, backoffMs },
181
+ usageFlushMs,
182
+ disableUsageClamp: (0, envUtils_1.getBooleanEnv)('INDEX_SERVER_DISABLE_USAGE_CLAMP'),
183
+ govHash: {
184
+ trailingNewline: (0, envUtils_1.getBooleanEnv)('GOV_HASH_TRAILING_NEWLINE'),
185
+ hashHardeningEnabled,
186
+ hashCanonVariants,
187
+ hashImportSetSize,
188
+ },
189
+ maxFiles,
190
+ loadWarningThreshold,
191
+ bodyMaxLength,
192
+ autoSplitOversized: (0, envUtils_1.getBooleanEnv)('INDEX_SERVER_AUTO_SPLIT_OVERSIZED'),
193
+ autoUsageTrack: (0, envUtils_1.parseBooleanEnv)(process.env.INDEX_SERVER_AUTO_USAGE_TRACK, true),
194
+ };
195
+ }
196
+ function parseInstructionsConfig(_mutationEnabled) {
197
+ const auditLog = resolveInstructionsAuditLog();
198
+ const workspaceId = process.env.INDEX_SERVER_WORKSPACE;
199
+ const manifestWriteRaw = process.env.INDEX_SERVER_MANIFEST_WRITE;
200
+ const manifestWriteEnabled = manifestWriteRaw === undefined ? true : !(0, envUtils_1.isFalsy)(manifestWriteRaw);
201
+ const forceFullList = (0, envUtils_1.getBooleanEnv)('FULL_LIST_GET') || (0, envUtils_1.getBooleanEnv)('INDEX_SERVER_STRESS_MODE');
202
+ const sampleOverride = (0, configUtils_1.optionalIntFromEnv)('LIST_GET_SAMPLE_SIZE');
203
+ const effectiveSampleSize = sampleOverride;
204
+ const sampleSeed = (0, configUtils_1.optionalIntFromEnv)('LIST_GET_SAMPLE_SEED');
205
+ const concurrency = (0, configUtils_1.clamp)((0, configUtils_1.optionalIntFromEnv)('LIST_GET_CONCURRENCY') ?? 8, 1, 64);
206
+ const maxDurationMs = Math.max(500, (0, configUtils_1.optionalIntFromEnv)('LIST_GET_MAX_DURATION_MS') ?? 7000);
207
+ return {
208
+ workspaceId: workspaceId && workspaceId.trim().length ? workspaceId : undefined,
209
+ agentId: process.env.INDEX_SERVER_AGENT_ID || undefined,
210
+ canonicalDisable: (0, envUtils_1.getBooleanEnv)('INDEX_SERVER_CANONICAL_DISABLE'),
211
+ strictVisibility: (0, envUtils_1.getBooleanEnv)('INDEX_SERVER_TEST_STRICT_VISIBILITY'),
212
+ strictCreate: (0, envUtils_1.getBooleanEnv)('INDEX_SERVER_STRICT_CREATE'),
213
+ strictRemove: (0, envUtils_1.getBooleanEnv)('INDEX_SERVER_STRICT_REMOVE'),
214
+ requireCategory: (0, envUtils_1.getBooleanEnv)('INDEX_SERVER_REQUIRE_CATEGORY'),
215
+ traceQueryDiag: (0, envUtils_1.getBooleanEnv)('INDEX_SERVER_TRACE_QUERY_DIAG'),
216
+ manifest: {
217
+ writeEnabled: manifestWriteEnabled,
218
+ fastload: (0, envUtils_1.getBooleanEnv)('INDEX_SERVER_MANIFEST_FASTLOAD'),
219
+ },
220
+ ciContext: {
221
+ inCI: !!process.env.CI,
222
+ githubActions: !!process.env.GITHUB_ACTIONS,
223
+ tfBuild: !!process.env.TF_BUILD,
224
+ },
225
+ auditLog,
226
+ listValidation: {
227
+ forceFullScan: forceFullList,
228
+ allowSampling: !forceFullList,
229
+ effectiveSampleSize,
230
+ sampleSeed,
231
+ concurrency,
232
+ maxDurationMs,
233
+ },
234
+ };
235
+ }
236
+ function parseMutationConfig(mutationEnabled) {
237
+ return {
238
+ enabled: mutationEnabled,
239
+ dispatcherTiming: (0, envUtils_1.getBooleanEnv)('INDEX_SERVER_ADD_TIMING'),
240
+ maxBulkDelete: (0, configUtils_1.numberFromEnv)('INDEX_SERVER_MAX_BULK_DELETE', defaultValues_1.DEFAULT_LIMITS.MAX_BULK_DELETE),
241
+ backupBeforeBulkDelete: process.env.INDEX_SERVER_BACKUP_BEFORE_BULK_DELETE === undefined ? true : (0, envUtils_1.getBooleanEnv)('INDEX_SERVER_BACKUP_BEFORE_BULK_DELETE'),
242
+ autoBackupEnabled: (0, envUtils_1.getBooleanEnv)('INDEX_SERVER_AUTO_BACKUP'),
243
+ autoBackupIntervalMs: (0, configUtils_1.numberFromEnv)('INDEX_SERVER_AUTO_BACKUP_INTERVAL_MS', defaultValues_1.DEFAULT_TIMEOUTS_MS.AUTO_BACKUP_INTERVAL),
244
+ autoBackupMaxCount: (0, configUtils_1.numberFromEnv)('INDEX_SERVER_AUTO_BACKUP_MAX_COUNT', defaultValues_1.DEFAULT_LIMITS.AUTO_BACKUP_MAX_COUNT),
245
+ };
246
+ }
247
+ /**
248
+ * Parse all environment variables and construct a fresh {@link RuntimeConfig} object.
249
+ * Prefer {@link getRuntimeConfig} for normal use — this function always re-parses.
250
+ * @returns Fully resolved runtime configuration object
251
+ */
252
+ function loadRuntimeConfig() {
253
+ const profile = process.env.INDEX_SERVER_PROFILE || 'default';
254
+ const testMode = process.env.INDEX_SERVER_TEST_MODE;
255
+ const rawTiming = parseTiming();
256
+ const trace = parseTrace();
257
+ const initFeatures = parseInitFeatures();
258
+ const logLevel = parseLogLevel(trace);
259
+ const mutationEnabled = parseMutation();
260
+ const index = parseIndexConfig();
261
+ const dashboard = (0, dashboardConfig_1.parseDashboardConfig)(mutationEnabled, index.baseDir);
262
+ const server = (0, serverConfig_1.parseServerConfig)();
263
+ const logging = (0, serverConfig_1.parseLoggingConfig)(logLevel);
264
+ const metrics = (0, serverConfig_1.parseMetricsConfig)();
265
+ const instructions = parseInstructionsConfig(mutationEnabled);
266
+ const tracing = (0, serverConfig_1.parseTracingConfig)(trace, logLevel);
267
+ const mutation = parseMutationConfig(mutationEnabled);
268
+ const featureFlags = (0, featureConfig_1.parseFeatureFlagsConfig)();
269
+ const feedback = (0, featureConfig_1.parseFeedbackConfig)();
270
+ const messaging = (0, featureConfig_1.parseMessagingConfig)();
271
+ const semantic = (0, featureConfig_1.parseSemanticConfig)();
272
+ const minimal = (0, featureConfig_1.parseMinimalConfig)();
273
+ const bootstrapSeed = (0, featureConfig_1.parseBootstrapSeedConfig)();
274
+ const atomicFs = (0, serverConfig_1.parseAtomicFsConfig)();
275
+ const preflight = (0, serverConfig_1.parsePreflightConfig)();
276
+ const validation = (0, featureConfig_1.parseValidationConfig)();
277
+ const dynamic = (0, featureConfig_1.parseDynamicConfig)();
278
+ const graph = (0, featureConfig_1.parseGraphConfig)();
279
+ const storage = (0, featureConfig_1.parseStorageConfig)();
280
+ return {
281
+ profile,
282
+ testMode,
283
+ index,
284
+ mutationEnabled: mutation.enabled,
285
+ logLevel,
286
+ trace,
287
+ initFeatures,
288
+ bufferRing: parseBufferRing(),
289
+ timing: (key, fallback) => rawTiming[key] ?? fallback,
290
+ rawTiming,
291
+ coverage: parseCoverage(),
292
+ dashboard,
293
+ server,
294
+ logging,
295
+ metrics,
296
+ instructions,
297
+ tracing,
298
+ mutation,
299
+ featureFlags,
300
+ feedback,
301
+ messaging,
302
+ semantic,
303
+ minimal,
304
+ bootstrapSeed,
305
+ atomicFs,
306
+ preflight,
307
+ validation,
308
+ dynamic,
309
+ graph,
310
+ storage,
311
+ };
312
+ }
313
+ let _cached;
314
+ /**
315
+ * Return the cached singleton {@link RuntimeConfig}, loading it on first call.
316
+ * @returns The application-wide runtime configuration
317
+ */
318
+ function getRuntimeConfig() {
319
+ if (!_cached)
320
+ _cached = loadRuntimeConfig();
321
+ return _cached;
322
+ }
323
+ /**
324
+ * Force a reload of the runtime configuration by discarding the cache and re-parsing all env vars.
325
+ * @returns The freshly loaded runtime configuration
326
+ */
327
+ function reloadRuntimeConfig() {
328
+ _cached = loadRuntimeConfig();
329
+ return _cached;
330
+ }
331
+ if (require.main === module) {
332
+ // eslint-disable-next-line no-console
333
+ console.log(JSON.stringify(getRuntimeConfig(), null, 2));
334
+ }
@@ -0,0 +1,90 @@
1
+ import { LogLevel } from './configUtils';
2
+ export type { LogLevel };
3
+ interface ServerBootstrapConfig {
4
+ autoconfirm: boolean;
5
+ tokenTtlSec: number;
6
+ referenceMode: boolean;
7
+ }
8
+ interface ServerindexPollingConfig {
9
+ enabled: boolean;
10
+ proactive: boolean;
11
+ intervalMs: number;
12
+ }
13
+ export interface ServerConfig {
14
+ disableEarlyStdinBuffer: boolean;
15
+ fatalExitDelayMs: number;
16
+ idleKeepaliveMs: number;
17
+ sharedSentinel?: string;
18
+ bootstrap: ServerBootstrapConfig;
19
+ indexPolling: ServerindexPollingConfig;
20
+ multicoreTrace: boolean;
21
+ /** Multi-instance mode: standalone (default), leader, follower, auto [EXPERIMENTAL] */
22
+ instanceMode: 'standalone' | 'leader' | 'follower' | 'auto';
23
+ /** HTTP port for leader's MCP transport (thin clients connect here) */
24
+ leaderPort: number;
25
+ /** Leader heartbeat interval (ms) */
26
+ heartbeatIntervalMs: number;
27
+ /** Stale leader threshold (ms) — follower promotes after this */
28
+ staleThresholdMs: number;
29
+ }
30
+ export interface LoggingConfig {
31
+ level: LogLevel;
32
+ verbose: boolean;
33
+ json: boolean;
34
+ sync: boolean;
35
+ diagnostics: boolean;
36
+ protocol: boolean;
37
+ file?: string;
38
+ rawFileValue?: string;
39
+ sentinelRequested: boolean;
40
+ }
41
+ interface MetricsToolcallConfig {
42
+ chunkSize: number;
43
+ flushMs: number;
44
+ compactMs: number;
45
+ appendLogEnabled: boolean;
46
+ }
47
+ interface MetricsHealthConfig {
48
+ memoryThreshold: number;
49
+ errorRateThreshold: number;
50
+ minUptimeMs: number;
51
+ }
52
+ export interface MetricsConfig {
53
+ dir: string;
54
+ resourceCapacity: number;
55
+ sampleIntervalMs: number;
56
+ toolcall: MetricsToolcallConfig;
57
+ health: MetricsHealthConfig;
58
+ fileStorage: boolean;
59
+ }
60
+ export interface AtomicFsConfig {
61
+ retries: number;
62
+ backoffMs: number;
63
+ }
64
+ export interface PreflightConfig {
65
+ modules: string[];
66
+ strict: boolean;
67
+ }
68
+ interface TracingBufferConfig {
69
+ file?: string;
70
+ sizeBytes: number;
71
+ dumpOnExit: boolean;
72
+ }
73
+ export interface TracingConfig {
74
+ level: LogLevel | 'verbose';
75
+ categories: Set<string>;
76
+ buffer: TracingBufferConfig;
77
+ file?: string;
78
+ persist: boolean;
79
+ dir: string;
80
+ fsync: boolean;
81
+ maxFileSizeBytes: number;
82
+ sessionId?: string;
83
+ callsite: boolean;
84
+ }
85
+ export declare function parseServerConfig(): ServerConfig;
86
+ export declare function parseLoggingConfig(level: LogLevel): LoggingConfig;
87
+ export declare function parseMetricsConfig(): MetricsConfig;
88
+ export declare function parseAtomicFsConfig(): AtomicFsConfig;
89
+ export declare function parsePreflightConfig(): PreflightConfig;
90
+ export declare function parseTracingConfig(traceSet: Set<string>, fallbackLevel: LogLevel): TracingConfig;