@marinoscar/platform-api 0.0.0-stage → 0.1.0-next.3

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 (616) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/LICENSE +21 -0
  3. package/README.md +106 -2
  4. package/dist/core/crypto/encryption-key-startup-check.d.ts +29 -0
  5. package/dist/core/crypto/encryption-key-startup-check.d.ts.map +1 -0
  6. package/dist/core/crypto/encryption-key-startup-check.js +221 -0
  7. package/dist/core/crypto/encryption-key-startup-check.js.map +1 -0
  8. package/dist/core/crypto/secret-cipher.d.ts +151 -0
  9. package/dist/core/crypto/secret-cipher.d.ts.map +1 -0
  10. package/dist/core/crypto/secret-cipher.js +452 -0
  11. package/dist/core/crypto/secret-cipher.js.map +1 -0
  12. package/dist/core/data-access/index.d.ts +6 -0
  13. package/dist/core/data-access/index.d.ts.map +1 -0
  14. package/dist/core/data-access/index.js +19 -0
  15. package/dist/core/data-access/index.js.map +1 -0
  16. package/dist/core/data-access/scoped-access.error.d.ts +35 -0
  17. package/dist/core/data-access/scoped-access.error.d.ts.map +1 -0
  18. package/dist/core/data-access/scoped-access.error.js +43 -0
  19. package/dist/core/data-access/scoped-access.error.js.map +1 -0
  20. package/dist/core/data-access/scoped-client.d.ts +104 -0
  21. package/dist/core/data-access/scoped-client.d.ts.map +1 -0
  22. package/dist/core/data-access/scoped-client.js +270 -0
  23. package/dist/core/data-access/scoped-client.js.map +1 -0
  24. package/dist/core/data-access/types.d.ts +85 -0
  25. package/dist/core/data-access/types.d.ts.map +1 -0
  26. package/dist/core/data-access/types.js +12 -0
  27. package/dist/core/data-access/types.js.map +1 -0
  28. package/dist/core/data-access/user-owned-data.registry.d.ts +60 -0
  29. package/dist/core/data-access/user-owned-data.registry.d.ts.map +1 -0
  30. package/dist/core/data-access/user-owned-data.registry.js +140 -0
  31. package/dist/core/data-access/user-owned-data.registry.js.map +1 -0
  32. package/dist/core/errors/database-seed.exception.d.ts +23 -0
  33. package/dist/core/errors/database-seed.exception.d.ts.map +1 -0
  34. package/dist/core/errors/database-seed.exception.js +49 -0
  35. package/dist/core/errors/database-seed.exception.js.map +1 -0
  36. package/dist/core/errors/error.dto.d.ts +47 -0
  37. package/dist/core/errors/error.dto.d.ts.map +1 -0
  38. package/dist/core/errors/error.dto.js +121 -0
  39. package/dist/core/errors/error.dto.js.map +1 -0
  40. package/dist/core/errors/http-exception.filter.d.ts +63 -0
  41. package/dist/core/errors/http-exception.filter.d.ts.map +1 -0
  42. package/dist/core/errors/http-exception.filter.js +234 -0
  43. package/dist/core/errors/http-exception.filter.js.map +1 -0
  44. package/dist/core/errors/verbatim-error-body.exception.d.ts +46 -0
  45. package/dist/core/errors/verbatim-error-body.exception.d.ts.map +1 -0
  46. package/dist/core/errors/verbatim-error-body.exception.js +135 -0
  47. package/dist/core/errors/verbatim-error-body.exception.js.map +1 -0
  48. package/dist/core/host/index.d.ts +7 -0
  49. package/dist/core/host/index.d.ts.map +1 -0
  50. package/dist/core/host/index.js +14 -0
  51. package/dist/core/host/index.js.map +1 -0
  52. package/dist/core/host/platform-host.d.ts +58 -0
  53. package/dist/core/host/platform-host.d.ts.map +1 -0
  54. package/dist/core/host/platform-host.js +104 -0
  55. package/dist/core/host/platform-host.js.map +1 -0
  56. package/dist/core/host/platform-host.module.d.ts +53 -0
  57. package/dist/core/host/platform-host.module.d.ts.map +1 -0
  58. package/dist/core/host/platform-host.module.js +90 -0
  59. package/dist/core/host/platform-host.module.js.map +1 -0
  60. package/dist/core/host/ports.d.ts +132 -0
  61. package/dist/core/host/ports.d.ts.map +1 -0
  62. package/dist/core/host/ports.js +48 -0
  63. package/dist/core/host/ports.js.map +1 -0
  64. package/dist/core/index.d.ts +15 -0
  65. package/dist/core/index.d.ts.map +1 -0
  66. package/dist/core/index.js +77 -0
  67. package/dist/core/index.js.map +1 -0
  68. package/dist/core/openapi/openapi-tag.registry.d.ts +80 -0
  69. package/dist/core/openapi/openapi-tag.registry.d.ts.map +1 -0
  70. package/dist/core/openapi/openapi-tag.registry.js +72 -0
  71. package/dist/core/openapi/openapi-tag.registry.js.map +1 -0
  72. package/dist/core/principal/index.d.ts +6 -0
  73. package/dist/core/principal/index.d.ts.map +1 -0
  74. package/dist/core/principal/index.js +3 -0
  75. package/dist/core/principal/index.js.map +1 -0
  76. package/dist/core/principal/principal.types.d.ts +222 -0
  77. package/dist/core/principal/principal.types.d.ts.map +1 -0
  78. package/dist/core/principal/principal.types.js +22 -0
  79. package/dist/core/principal/principal.types.js.map +1 -0
  80. package/dist/core/registry/index.d.ts +4 -0
  81. package/dist/core/registry/index.d.ts.map +1 -0
  82. package/dist/core/registry/index.js +19 -0
  83. package/dist/core/registry/index.js.map +1 -0
  84. package/dist/core/registry/registry-freeze.service.d.ts +14 -0
  85. package/dist/core/registry/registry-freeze.service.d.ts.map +1 -0
  86. package/dist/core/registry/registry-freeze.service.js +55 -0
  87. package/dist/core/registry/registry-freeze.service.js.map +1 -0
  88. package/dist/core/registry/registry.d.ts +268 -0
  89. package/dist/core/registry/registry.d.ts.map +1 -0
  90. package/dist/core/registry/registry.js +351 -0
  91. package/dist/core/registry/registry.js.map +1 -0
  92. package/dist/core/registry/testing.d.ts +29 -0
  93. package/dist/core/registry/testing.d.ts.map +1 -0
  94. package/dist/core/registry/testing.js +63 -0
  95. package/dist/core/registry/testing.js.map +1 -0
  96. package/dist/doctor/doctor-check.interface.d.ts +100 -0
  97. package/dist/doctor/doctor-check.interface.d.ts.map +1 -0
  98. package/dist/doctor/doctor-check.interface.js +95 -0
  99. package/dist/doctor/doctor-check.interface.js.map +1 -0
  100. package/dist/doctor/doctor-check.registry.d.ts +37 -0
  101. package/dist/doctor/doctor-check.registry.d.ts.map +1 -0
  102. package/dist/doctor/doctor-check.registry.js +96 -0
  103. package/dist/doctor/doctor-check.registry.js.map +1 -0
  104. package/dist/doctor/doctor.controller.factory.d.ts +29 -0
  105. package/dist/doctor/doctor.controller.factory.d.ts.map +1 -0
  106. package/dist/doctor/doctor.controller.factory.js +121 -0
  107. package/dist/doctor/doctor.controller.factory.js.map +1 -0
  108. package/dist/doctor/doctor.module.d.ts +78 -0
  109. package/dist/doctor/doctor.module.d.ts.map +1 -0
  110. package/dist/doctor/doctor.module.js +158 -0
  111. package/dist/doctor/doctor.module.js.map +1 -0
  112. package/dist/doctor/doctor.options.d.ts +39 -0
  113. package/dist/doctor/doctor.options.d.ts.map +1 -0
  114. package/dist/doctor/doctor.options.js +21 -0
  115. package/dist/doctor/doctor.options.js.map +1 -0
  116. package/dist/doctor/doctor.service.d.ts +80 -0
  117. package/dist/doctor/doctor.service.d.ts.map +1 -0
  118. package/dist/doctor/doctor.service.js +301 -0
  119. package/dist/doctor/doctor.service.js.map +1 -0
  120. package/dist/doctor/dto/doctor-query.dto.d.ts +15 -0
  121. package/dist/doctor/dto/doctor-query.dto.d.ts.map +1 -0
  122. package/dist/doctor/dto/doctor-query.dto.js +16 -0
  123. package/dist/doctor/dto/doctor-query.dto.js.map +1 -0
  124. package/dist/doctor/dto/doctor-report.dto.d.ts +27 -0
  125. package/dist/doctor/dto/doctor-report.dto.d.ts.map +1 -0
  126. package/dist/doctor/dto/doctor-report.dto.js +23 -0
  127. package/dist/doctor/dto/doctor-report.dto.js.map +1 -0
  128. package/dist/doctor/egress/classify-host.d.ts +73 -0
  129. package/dist/doctor/egress/classify-host.d.ts.map +1 -0
  130. package/dist/doctor/egress/classify-host.js +210 -0
  131. package/dist/doctor/egress/classify-host.js.map +1 -0
  132. package/dist/doctor/egress/egress.registry.d.ts +34 -0
  133. package/dist/doctor/egress/egress.registry.d.ts.map +1 -0
  134. package/dist/doctor/egress/egress.registry.js +70 -0
  135. package/dist/doctor/egress/egress.registry.js.map +1 -0
  136. package/dist/doctor/egress/egress.types.d.ts +135 -0
  137. package/dist/doctor/egress/egress.types.d.ts.map +1 -0
  138. package/dist/doctor/egress/egress.types.js +42 -0
  139. package/dist/doctor/egress/egress.types.js.map +1 -0
  140. package/dist/doctor/egress/index.d.ts +6 -0
  141. package/dist/doctor/egress/index.d.ts.map +1 -0
  142. package/dist/doctor/egress/index.js +23 -0
  143. package/dist/doctor/egress/index.js.map +1 -0
  144. package/dist/doctor/egress/network-egress.doctor-check.d.ts +78 -0
  145. package/dist/doctor/egress/network-egress.doctor-check.d.ts.map +1 -0
  146. package/dist/doctor/egress/network-egress.doctor-check.js +226 -0
  147. package/dist/doctor/egress/network-egress.doctor-check.js.map +1 -0
  148. package/dist/doctor/index.d.ts +19 -0
  149. package/dist/doctor/index.d.ts.map +1 -0
  150. package/dist/doctor/index.js +66 -0
  151. package/dist/doctor/index.js.map +1 -0
  152. package/dist/doctor/support-bundle/index.d.ts +12 -0
  153. package/dist/doctor/support-bundle/index.d.ts.map +1 -0
  154. package/dist/doctor/support-bundle/index.js +32 -0
  155. package/dist/doctor/support-bundle/index.js.map +1 -0
  156. package/dist/doctor/support-bundle/redact.d.ts +76 -0
  157. package/dist/doctor/support-bundle/redact.d.ts.map +1 -0
  158. package/dist/doctor/support-bundle/redact.js +236 -0
  159. package/dist/doctor/support-bundle/redact.js.map +1 -0
  160. package/dist/doctor/support-bundle/sections/doctor.section.d.ts +81 -0
  161. package/dist/doctor/support-bundle/sections/doctor.section.d.ts.map +1 -0
  162. package/dist/doctor/support-bundle/sections/doctor.section.js +83 -0
  163. package/dist/doctor/support-bundle/sections/doctor.section.js.map +1 -0
  164. package/dist/doctor/support-bundle/sections/egress.section.d.ts +73 -0
  165. package/dist/doctor/support-bundle/sections/egress.section.d.ts.map +1 -0
  166. package/dist/doctor/support-bundle/sections/egress.section.js +97 -0
  167. package/dist/doctor/support-bundle/sections/egress.section.js.map +1 -0
  168. package/dist/doctor/support-bundle/sections/meta.section.d.ts +39 -0
  169. package/dist/doctor/support-bundle/sections/meta.section.d.ts.map +1 -0
  170. package/dist/doctor/support-bundle/sections/meta.section.js +89 -0
  171. package/dist/doctor/support-bundle/sections/meta.section.js.map +1 -0
  172. package/dist/doctor/support-bundle/support-bundle-section.interface.d.ts +100 -0
  173. package/dist/doctor/support-bundle/support-bundle-section.interface.d.ts.map +1 -0
  174. package/dist/doctor/support-bundle/support-bundle-section.interface.js +59 -0
  175. package/dist/doctor/support-bundle/support-bundle-section.interface.js.map +1 -0
  176. package/dist/doctor/support-bundle/support-bundle.controller.d.ts +57 -0
  177. package/dist/doctor/support-bundle/support-bundle.controller.d.ts.map +1 -0
  178. package/dist/doctor/support-bundle/support-bundle.controller.js +141 -0
  179. package/dist/doctor/support-bundle/support-bundle.controller.js.map +1 -0
  180. package/dist/doctor/support-bundle/support-bundle.options.d.ts +92 -0
  181. package/dist/doctor/support-bundle/support-bundle.options.d.ts.map +1 -0
  182. package/dist/doctor/support-bundle/support-bundle.options.js +100 -0
  183. package/dist/doctor/support-bundle/support-bundle.options.js.map +1 -0
  184. package/dist/doctor/support-bundle/support-bundle.registry.d.ts +38 -0
  185. package/dist/doctor/support-bundle/support-bundle.registry.d.ts.map +1 -0
  186. package/dist/doctor/support-bundle/support-bundle.registry.js +90 -0
  187. package/dist/doctor/support-bundle/support-bundle.registry.js.map +1 -0
  188. package/dist/doctor/support-bundle/support-bundle.service.d.ts +63 -0
  189. package/dist/doctor/support-bundle/support-bundle.service.d.ts.map +1 -0
  190. package/dist/doctor/support-bundle/support-bundle.service.js +244 -0
  191. package/dist/doctor/support-bundle/support-bundle.service.js.map +1 -0
  192. package/dist/index.d.ts +11 -0
  193. package/dist/index.d.ts.map +1 -0
  194. package/dist/index.js +14 -0
  195. package/dist/index.js.map +1 -0
  196. package/dist/otel-core/index.d.ts +9 -0
  197. package/dist/otel-core/index.d.ts.map +1 -0
  198. package/dist/otel-core/index.js +58 -0
  199. package/dist/otel-core/index.js.map +1 -0
  200. package/dist/otel-core/metrics/gauge-provider.d.ts +44 -0
  201. package/dist/otel-core/metrics/gauge-provider.d.ts.map +1 -0
  202. package/dist/otel-core/metrics/gauge-provider.js +37 -0
  203. package/dist/otel-core/metrics/gauge-provider.js.map +1 -0
  204. package/dist/otel-core/metrics/labels.d.ts +79 -0
  205. package/dist/otel-core/metrics/labels.d.ts.map +1 -0
  206. package/dist/otel-core/metrics/labels.js +135 -0
  207. package/dist/otel-core/metrics/labels.js.map +1 -0
  208. package/dist/otel-core/metrics/metric-name.registry.d.ts +130 -0
  209. package/dist/otel-core/metrics/metric-name.registry.d.ts.map +1 -0
  210. package/dist/otel-core/metrics/metric-name.registry.js +134 -0
  211. package/dist/otel-core/metrics/metric-name.registry.js.map +1 -0
  212. package/dist/otel-core/metrics/metrics-host.service.d.ts +163 -0
  213. package/dist/otel-core/metrics/metrics-host.service.d.ts.map +1 -0
  214. package/dist/otel-core/metrics/metrics-host.service.js +344 -0
  215. package/dist/otel-core/metrics/metrics-host.service.js.map +1 -0
  216. package/dist/otel-core/metrics/otel-metrics.module.d.ts +54 -0
  217. package/dist/otel-core/metrics/otel-metrics.module.d.ts.map +1 -0
  218. package/dist/otel-core/metrics/otel-metrics.module.js +83 -0
  219. package/dist/otel-core/metrics/otel-metrics.module.js.map +1 -0
  220. package/dist/otel-core/sdk/index.d.ts +5 -0
  221. package/dist/otel-core/sdk/index.d.ts.map +1 -0
  222. package/dist/otel-core/sdk/index.js +27 -0
  223. package/dist/otel-core/sdk/index.js.map +1 -0
  224. package/dist/otel-core/sdk/initialize-otel.d.ts +126 -0
  225. package/dist/otel-core/sdk/initialize-otel.d.ts.map +1 -0
  226. package/dist/otel-core/sdk/initialize-otel.js +204 -0
  227. package/dist/otel-core/sdk/initialize-otel.js.map +1 -0
  228. package/dist/otel-core/sdk/instance-id.d.ts +29 -0
  229. package/dist/otel-core/sdk/instance-id.d.ts.map +1 -0
  230. package/dist/otel-core/sdk/instance-id.js +65 -0
  231. package/dist/otel-core/sdk/instance-id.js.map +1 -0
  232. package/dist/otel-core/sdk/service-name.d.ts +28 -0
  233. package/dist/otel-core/sdk/service-name.d.ts.map +1 -0
  234. package/dist/otel-core/sdk/service-name.js +63 -0
  235. package/dist/otel-core/sdk/service-name.js.map +1 -0
  236. package/dist/otel-core/sdk/telemetry-gate.d.ts +116 -0
  237. package/dist/otel-core/sdk/telemetry-gate.d.ts.map +1 -0
  238. package/dist/otel-core/sdk/telemetry-gate.js +297 -0
  239. package/dist/otel-core/sdk/telemetry-gate.js.map +1 -0
  240. package/dist/otel-core/spans/request-span-attributes.d.ts +58 -0
  241. package/dist/otel-core/spans/request-span-attributes.d.ts.map +1 -0
  242. package/dist/otel-core/spans/request-span-attributes.js +155 -0
  243. package/dist/otel-core/spans/request-span-attributes.js.map +1 -0
  244. package/dist/otel-core/spans/trace.decorator.d.ts +36 -0
  245. package/dist/otel-core/spans/trace.decorator.d.ts.map +1 -0
  246. package/dist/otel-core/spans/trace.decorator.js +74 -0
  247. package/dist/otel-core/spans/trace.decorator.js.map +1 -0
  248. package/dist/telemetry/assistant/telemetry-ai-enabled.guard.d.ts +15 -0
  249. package/dist/telemetry/assistant/telemetry-ai-enabled.guard.d.ts.map +1 -0
  250. package/dist/telemetry/assistant/telemetry-ai-enabled.guard.js +50 -0
  251. package/dist/telemetry/assistant/telemetry-ai-enabled.guard.js.map +1 -0
  252. package/dist/telemetry/assistant/telemetry-assistant.controller.d.ts +14 -0
  253. package/dist/telemetry/assistant/telemetry-assistant.controller.d.ts.map +1 -0
  254. package/dist/telemetry/assistant/telemetry-assistant.controller.js +178 -0
  255. package/dist/telemetry/assistant/telemetry-assistant.controller.js.map +1 -0
  256. package/dist/telemetry/assistant/telemetry-assistant.metrics.d.ts +147 -0
  257. package/dist/telemetry/assistant/telemetry-assistant.metrics.d.ts.map +1 -0
  258. package/dist/telemetry/assistant/telemetry-assistant.metrics.js +495 -0
  259. package/dist/telemetry/assistant/telemetry-assistant.metrics.js.map +1 -0
  260. package/dist/telemetry/assistant/telemetry-assistant.service.d.ts +216 -0
  261. package/dist/telemetry/assistant/telemetry-assistant.service.d.ts.map +1 -0
  262. package/dist/telemetry/assistant/telemetry-assistant.service.js +1256 -0
  263. package/dist/telemetry/assistant/telemetry-assistant.service.js.map +1 -0
  264. package/dist/telemetry/assistant/telemetry-assistant.sql.d.ts +69 -0
  265. package/dist/telemetry/assistant/telemetry-assistant.sql.d.ts.map +1 -0
  266. package/dist/telemetry/assistant/telemetry-assistant.sql.js +471 -0
  267. package/dist/telemetry/assistant/telemetry-assistant.sql.js.map +1 -0
  268. package/dist/telemetry/assistant/telemetry-assistant.sse.d.ts +15 -0
  269. package/dist/telemetry/assistant/telemetry-assistant.sse.d.ts.map +1 -0
  270. package/dist/telemetry/assistant/telemetry-assistant.sse.js +68 -0
  271. package/dist/telemetry/assistant/telemetry-assistant.sse.js.map +1 -0
  272. package/dist/telemetry/connection/dto/telemetry-connection.dto.d.ts +92 -0
  273. package/dist/telemetry/connection/dto/telemetry-connection.dto.d.ts.map +1 -0
  274. package/dist/telemetry/connection/dto/telemetry-connection.dto.js +41 -0
  275. package/dist/telemetry/connection/dto/telemetry-connection.dto.js.map +1 -0
  276. package/dist/telemetry/connection/telemetry-connection-admin.service.d.ts +45 -0
  277. package/dist/telemetry/connection/telemetry-connection-admin.service.d.ts.map +1 -0
  278. package/dist/telemetry/connection/telemetry-connection-admin.service.js +303 -0
  279. package/dist/telemetry/connection/telemetry-connection-admin.service.js.map +1 -0
  280. package/dist/telemetry/connection/telemetry-connection-test.service.d.ts +41 -0
  281. package/dist/telemetry/connection/telemetry-connection-test.service.d.ts.map +1 -0
  282. package/dist/telemetry/connection/telemetry-connection-test.service.js +187 -0
  283. package/dist/telemetry/connection/telemetry-connection-test.service.js.map +1 -0
  284. package/dist/telemetry/connection/telemetry-connection.controller.d.ts +14 -0
  285. package/dist/telemetry/connection/telemetry-connection.controller.d.ts.map +1 -0
  286. package/dist/telemetry/connection/telemetry-connection.controller.js +192 -0
  287. package/dist/telemetry/connection/telemetry-connection.controller.js.map +1 -0
  288. package/dist/telemetry/connection/telemetry-connection.schema.d.ts +28 -0
  289. package/dist/telemetry/connection/telemetry-connection.schema.d.ts.map +1 -0
  290. package/dist/telemetry/connection/telemetry-connection.schema.js +106 -0
  291. package/dist/telemetry/connection/telemetry-connection.schema.js.map +1 -0
  292. package/dist/telemetry/connection/telemetry-connection.service.d.ts +197 -0
  293. package/dist/telemetry/connection/telemetry-connection.service.d.ts.map +1 -0
  294. package/dist/telemetry/connection/telemetry-connection.service.js +461 -0
  295. package/dist/telemetry/connection/telemetry-connection.service.js.map +1 -0
  296. package/dist/telemetry/dashboard/sql-literals.d.ts +19 -0
  297. package/dist/telemetry/dashboard/sql-literals.d.ts.map +1 -0
  298. package/dist/telemetry/dashboard/sql-literals.js +75 -0
  299. package/dist/telemetry/dashboard/sql-literals.js.map +1 -0
  300. package/dist/telemetry/dashboard/telemetry-dashboard.controller.d.ts +14 -0
  301. package/dist/telemetry/dashboard/telemetry-dashboard.controller.d.ts.map +1 -0
  302. package/dist/telemetry/dashboard/telemetry-dashboard.controller.js +277 -0
  303. package/dist/telemetry/dashboard/telemetry-dashboard.controller.js.map +1 -0
  304. package/dist/telemetry/dashboard/telemetry-dashboard.service.d.ts +112 -0
  305. package/dist/telemetry/dashboard/telemetry-dashboard.service.d.ts.map +1 -0
  306. package/dist/telemetry/dashboard/telemetry-dashboard.service.js +904 -0
  307. package/dist/telemetry/dashboard/telemetry-dashboard.service.js.map +1 -0
  308. package/dist/telemetry/dashboard/telemetry-dashboard.sql.d.ts +212 -0
  309. package/dist/telemetry/dashboard/telemetry-dashboard.sql.d.ts.map +1 -0
  310. package/dist/telemetry/dashboard/telemetry-dashboard.sql.js +486 -0
  311. package/dist/telemetry/dashboard/telemetry-dashboard.sql.js.map +1 -0
  312. package/dist/telemetry/dashboard/telemetry-dashboard.verdict.d.ts +235 -0
  313. package/dist/telemetry/dashboard/telemetry-dashboard.verdict.d.ts.map +1 -0
  314. package/dist/telemetry/dashboard/telemetry-dashboard.verdict.js +269 -0
  315. package/dist/telemetry/dashboard/telemetry-dashboard.verdict.js.map +1 -0
  316. package/dist/telemetry/dashboard/verdict-policy.d.ts +51 -0
  317. package/dist/telemetry/dashboard/verdict-policy.d.ts.map +1 -0
  318. package/dist/telemetry/dashboard/verdict-policy.js +77 -0
  319. package/dist/telemetry/dashboard/verdict-policy.js.map +1 -0
  320. package/dist/telemetry/doctor/egress/greptimedb.egress.contributor.d.ts +21 -0
  321. package/dist/telemetry/doctor/egress/greptimedb.egress.contributor.d.ts.map +1 -0
  322. package/dist/telemetry/doctor/egress/greptimedb.egress.contributor.js +59 -0
  323. package/dist/telemetry/doctor/egress/greptimedb.egress.contributor.js.map +1 -0
  324. package/dist/telemetry/doctor/telemetry-connection.doctor-check.d.ts +23 -0
  325. package/dist/telemetry/doctor/telemetry-connection.doctor-check.d.ts.map +1 -0
  326. package/dist/telemetry/doctor/telemetry-connection.doctor-check.js +69 -0
  327. package/dist/telemetry/doctor/telemetry-connection.doctor-check.js.map +1 -0
  328. package/dist/telemetry/doctor/telemetry-export.doctor-check.d.ts +33 -0
  329. package/dist/telemetry/doctor/telemetry-export.doctor-check.d.ts.map +1 -0
  330. package/dist/telemetry/doctor/telemetry-export.doctor-check.js +105 -0
  331. package/dist/telemetry/doctor/telemetry-export.doctor-check.js.map +1 -0
  332. package/dist/telemetry/doctor/telemetry-freshness.doctor-check.d.ts +38 -0
  333. package/dist/telemetry/doctor/telemetry-freshness.doctor-check.d.ts.map +1 -0
  334. package/dist/telemetry/doctor/telemetry-freshness.doctor-check.js +104 -0
  335. package/dist/telemetry/doctor/telemetry-freshness.doctor-check.js.map +1 -0
  336. package/dist/telemetry/doctor/telemetry-reachable.doctor-check.d.ts +23 -0
  337. package/dist/telemetry/doctor/telemetry-reachable.doctor-check.d.ts.map +1 -0
  338. package/dist/telemetry/doctor/telemetry-reachable.doctor-check.js +65 -0
  339. package/dist/telemetry/doctor/telemetry-reachable.doctor-check.js.map +1 -0
  340. package/dist/telemetry/doctor/telemetry-tables.doctor-check.d.ts +23 -0
  341. package/dist/telemetry/doctor/telemetry-tables.doctor-check.d.ts.map +1 -0
  342. package/dist/telemetry/doctor/telemetry-tables.doctor-check.js +91 -0
  343. package/dist/telemetry/doctor/telemetry-tables.doctor-check.js.map +1 -0
  344. package/dist/telemetry/dto/telemetry-assistant.dto.d.ts +14 -0
  345. package/dist/telemetry/dto/telemetry-assistant.dto.d.ts.map +1 -0
  346. package/dist/telemetry/dto/telemetry-assistant.dto.js +29 -0
  347. package/dist/telemetry/dto/telemetry-assistant.dto.js.map +1 -0
  348. package/dist/telemetry/dto/telemetry-config.dto.d.ts +59 -0
  349. package/dist/telemetry/dto/telemetry-config.dto.d.ts.map +1 -0
  350. package/dist/telemetry/dto/telemetry-config.dto.js +18 -0
  351. package/dist/telemetry/dto/telemetry-config.dto.js.map +1 -0
  352. package/dist/telemetry/dto/telemetry-dashboard.dto.d.ts +397 -0
  353. package/dist/telemetry/dto/telemetry-dashboard.dto.d.ts.map +1 -0
  354. package/dist/telemetry/dto/telemetry-dashboard.dto.js +118 -0
  355. package/dist/telemetry/dto/telemetry-dashboard.dto.js.map +1 -0
  356. package/dist/telemetry/dto/telemetry-query.dto.d.ts +44 -0
  357. package/dist/telemetry/dto/telemetry-query.dto.d.ts.map +1 -0
  358. package/dist/telemetry/dto/telemetry-query.dto.js +42 -0
  359. package/dist/telemetry/dto/telemetry-query.dto.js.map +1 -0
  360. package/dist/telemetry/dto/telemetry-status.dto.d.ts +22 -0
  361. package/dist/telemetry/dto/telemetry-status.dto.d.ts.map +1 -0
  362. package/dist/telemetry/dto/telemetry-status.dto.js +12 -0
  363. package/dist/telemetry/dto/telemetry-status.dto.js.map +1 -0
  364. package/dist/telemetry/export/parquet-writer.loader.d.ts +13 -0
  365. package/dist/telemetry/export/parquet-writer.loader.d.ts.map +1 -0
  366. package/dist/telemetry/export/parquet-writer.loader.js +29 -0
  367. package/dist/telemetry/export/parquet-writer.loader.js.map +1 -0
  368. package/dist/telemetry/export/telemetry-export.service.d.ts +39 -0
  369. package/dist/telemetry/export/telemetry-export.service.d.ts.map +1 -0
  370. package/dist/telemetry/export/telemetry-export.service.js +185 -0
  371. package/dist/telemetry/export/telemetry-export.service.js.map +1 -0
  372. package/dist/telemetry/greptime/greptime-host.d.ts +44 -0
  373. package/dist/telemetry/greptime/greptime-host.d.ts.map +1 -0
  374. package/dist/telemetry/greptime/greptime-host.js +114 -0
  375. package/dist/telemetry/greptime/greptime-host.js.map +1 -0
  376. package/dist/telemetry/greptime/greptime.client.d.ts +171 -0
  377. package/dist/telemetry/greptime/greptime.client.d.ts.map +1 -0
  378. package/dist/telemetry/greptime/greptime.client.js +352 -0
  379. package/dist/telemetry/greptime/greptime.client.js.map +1 -0
  380. package/dist/telemetry/greptime/greptime.errors.d.ts +59 -0
  381. package/dist/telemetry/greptime/greptime.errors.d.ts.map +1 -0
  382. package/dist/telemetry/greptime/greptime.errors.js +100 -0
  383. package/dist/telemetry/greptime/greptime.errors.js.map +1 -0
  384. package/dist/telemetry/handlers/telemetry-retention.handler.d.ts +27 -0
  385. package/dist/telemetry/handlers/telemetry-retention.handler.d.ts.map +1 -0
  386. package/dist/telemetry/handlers/telemetry-retention.handler.js +123 -0
  387. package/dist/telemetry/handlers/telemetry-retention.handler.js.map +1 -0
  388. package/dist/telemetry/index.d.ts +37 -0
  389. package/dist/telemetry/index.d.ts.map +1 -0
  390. package/dist/telemetry/index.js +97 -0
  391. package/dist/telemetry/index.js.map +1 -0
  392. package/dist/telemetry/internal/blank-secret.d.ts +3 -0
  393. package/dist/telemetry/internal/blank-secret.d.ts.map +1 -0
  394. package/dist/telemetry/internal/blank-secret.js +14 -0
  395. package/dist/telemetry/internal/blank-secret.js.map +1 -0
  396. package/dist/telemetry/internal/csv.d.ts +9 -0
  397. package/dist/telemetry/internal/csv.d.ts.map +1 -0
  398. package/dist/telemetry/internal/csv.js +23 -0
  399. package/dist/telemetry/internal/csv.js.map +1 -0
  400. package/dist/telemetry/internal/sse.d.ts +23 -0
  401. package/dist/telemetry/internal/sse.d.ts.map +1 -0
  402. package/dist/telemetry/internal/sse.js +43 -0
  403. package/dist/telemetry/internal/sse.js.map +1 -0
  404. package/dist/telemetry/metrics/groups/database.metric-group.d.ts +7 -0
  405. package/dist/telemetry/metrics/groups/database.metric-group.d.ts.map +1 -0
  406. package/dist/telemetry/metrics/groups/database.metric-group.js +159 -0
  407. package/dist/telemetry/metrics/groups/database.metric-group.js.map +1 -0
  408. package/dist/telemetry/metrics/groups/host.metric-group.d.ts +7 -0
  409. package/dist/telemetry/metrics/groups/host.metric-group.d.ts.map +1 -0
  410. package/dist/telemetry/metrics/groups/host.metric-group.js +146 -0
  411. package/dist/telemetry/metrics/groups/host.metric-group.js.map +1 -0
  412. package/dist/telemetry/metrics/groups/nodes.metric-group.d.ts +7 -0
  413. package/dist/telemetry/metrics/groups/nodes.metric-group.d.ts.map +1 -0
  414. package/dist/telemetry/metrics/groups/nodes.metric-group.js +159 -0
  415. package/dist/telemetry/metrics/groups/nodes.metric-group.js.map +1 -0
  416. package/dist/telemetry/metrics/groups/pipeline.metric-group.d.ts +7 -0
  417. package/dist/telemetry/metrics/groups/pipeline.metric-group.d.ts.map +1 -0
  418. package/dist/telemetry/metrics/groups/pipeline.metric-group.js +144 -0
  419. package/dist/telemetry/metrics/groups/pipeline.metric-group.js.map +1 -0
  420. package/dist/telemetry/metrics/groups/queue.metric-group.d.ts +7 -0
  421. package/dist/telemetry/metrics/groups/queue.metric-group.d.ts.map +1 -0
  422. package/dist/telemetry/metrics/groups/queue.metric-group.js +163 -0
  423. package/dist/telemetry/metrics/groups/queue.metric-group.js.map +1 -0
  424. package/dist/telemetry/metrics/groups/uptime.metric-group.d.ts +7 -0
  425. package/dist/telemetry/metrics/groups/uptime.metric-group.d.ts.map +1 -0
  426. package/dist/telemetry/metrics/groups/uptime.metric-group.js +103 -0
  427. package/dist/telemetry/metrics/groups/uptime.metric-group.js.map +1 -0
  428. package/dist/telemetry/metrics/metric-catalog.d.ts +324 -0
  429. package/dist/telemetry/metrics/metric-catalog.d.ts.map +1 -0
  430. package/dist/telemetry/metrics/metric-catalog.helpers.d.ts +30 -0
  431. package/dist/telemetry/metrics/metric-catalog.helpers.d.ts.map +1 -0
  432. package/dist/telemetry/metrics/metric-catalog.helpers.js +37 -0
  433. package/dist/telemetry/metrics/metric-catalog.helpers.js.map +1 -0
  434. package/dist/telemetry/metrics/metric-catalog.js +180 -0
  435. package/dist/telemetry/metrics/metric-catalog.js.map +1 -0
  436. package/dist/telemetry/metrics/metric-group-registry.service.d.ts +59 -0
  437. package/dist/telemetry/metrics/metric-group-registry.service.d.ts.map +1 -0
  438. package/dist/telemetry/metrics/metric-group-registry.service.js +99 -0
  439. package/dist/telemetry/metrics/metric-group-registry.service.js.map +1 -0
  440. package/dist/telemetry/metrics/metric-group.d.ts +113 -0
  441. package/dist/telemetry/metrics/metric-group.d.ts.map +1 -0
  442. package/dist/telemetry/metrics/metric-group.js +647 -0
  443. package/dist/telemetry/metrics/metric-group.js.map +1 -0
  444. package/dist/telemetry/metrics/metric-group.manifest.d.ts +2 -0
  445. package/dist/telemetry/metrics/metric-group.manifest.d.ts.map +1 -0
  446. package/dist/telemetry/metrics/metric-group.manifest.js +30 -0
  447. package/dist/telemetry/metrics/metric-group.manifest.js.map +1 -0
  448. package/dist/telemetry/metrics/metric-group.registry.d.ts +109 -0
  449. package/dist/telemetry/metrics/metric-group.registry.d.ts.map +1 -0
  450. package/dist/telemetry/metrics/metric-group.registry.js +181 -0
  451. package/dist/telemetry/metrics/metric-group.registry.js.map +1 -0
  452. package/dist/telemetry/metrics/metric-sql.d.ts +98 -0
  453. package/dist/telemetry/metrics/metric-sql.d.ts.map +1 -0
  454. package/dist/telemetry/metrics/metric-sql.js +259 -0
  455. package/dist/telemetry/metrics/metric-sql.js.map +1 -0
  456. package/dist/telemetry/metrics/metric-values.d.ts +19 -0
  457. package/dist/telemetry/metrics/metric-values.d.ts.map +1 -0
  458. package/dist/telemetry/metrics/metric-values.js +97 -0
  459. package/dist/telemetry/metrics/metric-values.js.map +1 -0
  460. package/dist/telemetry/metrics/metric-verdict.d.ts +20 -0
  461. package/dist/telemetry/metrics/metric-verdict.d.ts.map +1 -0
  462. package/dist/telemetry/metrics/metric-verdict.js +218 -0
  463. package/dist/telemetry/metrics/metric-verdict.js.map +1 -0
  464. package/dist/telemetry/ports.d.ts +575 -0
  465. package/dist/telemetry/ports.d.ts.map +1 -0
  466. package/dist/telemetry/ports.js +78 -0
  467. package/dist/telemetry/ports.js.map +1 -0
  468. package/dist/telemetry/query/sql-guard.d.ts +71 -0
  469. package/dist/telemetry/query/sql-guard.d.ts.map +1 -0
  470. package/dist/telemetry/query/sql-guard.js +258 -0
  471. package/dist/telemetry/query/sql-guard.js.map +1 -0
  472. package/dist/telemetry/query/telemetry-availability.d.ts +11 -0
  473. package/dist/telemetry/query/telemetry-availability.d.ts.map +1 -0
  474. package/dist/telemetry/query/telemetry-availability.js +55 -0
  475. package/dist/telemetry/query/telemetry-availability.js.map +1 -0
  476. package/dist/telemetry/query/telemetry-query.errors.d.ts +48 -0
  477. package/dist/telemetry/query/telemetry-query.errors.d.ts.map +1 -0
  478. package/dist/telemetry/query/telemetry-query.errors.js +100 -0
  479. package/dist/telemetry/query/telemetry-query.errors.js.map +1 -0
  480. package/dist/telemetry/query/telemetry-query.service.d.ts +57 -0
  481. package/dist/telemetry/query/telemetry-query.service.d.ts.map +1 -0
  482. package/dist/telemetry/query/telemetry-query.service.js +194 -0
  483. package/dist/telemetry/query/telemetry-query.service.js.map +1 -0
  484. package/dist/telemetry/query/telemetry-schema.service.d.ts +36 -0
  485. package/dist/telemetry/query/telemetry-schema.service.d.ts.map +1 -0
  486. package/dist/telemetry/query/telemetry-schema.service.js +154 -0
  487. package/dist/telemetry/query/telemetry-schema.service.js.map +1 -0
  488. package/dist/telemetry/stack/dto/telemetry-stack.dto.d.ts +29 -0
  489. package/dist/telemetry/stack/dto/telemetry-stack.dto.d.ts.map +1 -0
  490. package/dist/telemetry/stack/dto/telemetry-stack.dto.js +27 -0
  491. package/dist/telemetry/stack/dto/telemetry-stack.dto.js.map +1 -0
  492. package/dist/telemetry/stack/stack-agent.client.d.ts +76 -0
  493. package/dist/telemetry/stack/stack-agent.client.d.ts.map +1 -0
  494. package/dist/telemetry/stack/stack-agent.client.js +208 -0
  495. package/dist/telemetry/stack/stack-agent.client.js.map +1 -0
  496. package/dist/telemetry/stack/telemetry-stack-deploy.handler.d.ts +43 -0
  497. package/dist/telemetry/stack/telemetry-stack-deploy.handler.d.ts.map +1 -0
  498. package/dist/telemetry/stack/telemetry-stack-deploy.handler.js +159 -0
  499. package/dist/telemetry/stack/telemetry-stack-deploy.handler.js.map +1 -0
  500. package/dist/telemetry/stack/telemetry-stack.controller.d.ts +14 -0
  501. package/dist/telemetry/stack/telemetry-stack.controller.d.ts.map +1 -0
  502. package/dist/telemetry/stack/telemetry-stack.controller.js +107 -0
  503. package/dist/telemetry/stack/telemetry-stack.controller.js.map +1 -0
  504. package/dist/telemetry/stack/telemetry-stack.service.d.ts +19 -0
  505. package/dist/telemetry/stack/telemetry-stack.service.d.ts.map +1 -0
  506. package/dist/telemetry/stack/telemetry-stack.service.js +122 -0
  507. package/dist/telemetry/stack/telemetry-stack.service.js.map +1 -0
  508. package/dist/telemetry/tasks/telemetry-retention.task.d.ts +8 -0
  509. package/dist/telemetry/tasks/telemetry-retention.task.d.ts.map +1 -0
  510. package/dist/telemetry/tasks/telemetry-retention.task.js +61 -0
  511. package/dist/telemetry/tasks/telemetry-retention.task.js.map +1 -0
  512. package/dist/telemetry/telemetry-admin.controller.d.ts +14 -0
  513. package/dist/telemetry/telemetry-admin.controller.d.ts.map +1 -0
  514. package/dist/telemetry/telemetry-admin.controller.js +148 -0
  515. package/dist/telemetry/telemetry-admin.controller.js.map +1 -0
  516. package/dist/telemetry/telemetry-config.controller.d.ts +14 -0
  517. package/dist/telemetry/telemetry-config.controller.d.ts.map +1 -0
  518. package/dist/telemetry/telemetry-config.controller.js +73 -0
  519. package/dist/telemetry/telemetry-config.controller.js.map +1 -0
  520. package/dist/telemetry/telemetry-explorer.controller.d.ts +14 -0
  521. package/dist/telemetry/telemetry-explorer.controller.d.ts.map +1 -0
  522. package/dist/telemetry/telemetry-explorer.controller.js +193 -0
  523. package/dist/telemetry/telemetry-explorer.controller.js.map +1 -0
  524. package/dist/telemetry/telemetry-settings.service.d.ts +85 -0
  525. package/dist/telemetry/telemetry-settings.service.d.ts.map +1 -0
  526. package/dist/telemetry/telemetry-settings.service.js +278 -0
  527. package/dist/telemetry/telemetry-settings.service.js.map +1 -0
  528. package/dist/telemetry/telemetry-status.service.d.ts +28 -0
  529. package/dist/telemetry/telemetry-status.service.d.ts.map +1 -0
  530. package/dist/telemetry/telemetry-status.service.js +185 -0
  531. package/dist/telemetry/telemetry-status.service.js.map +1 -0
  532. package/dist/telemetry/telemetry-support-bundle.section.d.ts +163 -0
  533. package/dist/telemetry/telemetry-support-bundle.section.d.ts.map +1 -0
  534. package/dist/telemetry/telemetry-support-bundle.section.js +187 -0
  535. package/dist/telemetry/telemetry-support-bundle.section.js.map +1 -0
  536. package/dist/telemetry/telemetry.module.d.ts +35 -0
  537. package/dist/telemetry/telemetry.module.d.ts.map +1 -0
  538. package/dist/telemetry/telemetry.module.js +210 -0
  539. package/dist/telemetry/telemetry.module.js.map +1 -0
  540. package/dist/telemetry/telemetry.options.d.ts +176 -0
  541. package/dist/telemetry/telemetry.options.d.ts.map +1 -0
  542. package/dist/telemetry/telemetry.options.js +246 -0
  543. package/dist/telemetry/telemetry.options.js.map +1 -0
  544. package/dist/telemetry/telemetry.permissions.d.ts +76 -0
  545. package/dist/telemetry/telemetry.permissions.d.ts.map +1 -0
  546. package/dist/telemetry/telemetry.permissions.js +85 -0
  547. package/dist/telemetry/telemetry.permissions.js.map +1 -0
  548. package/dist/telemetry/telemetry.settings.d.ts +79 -0
  549. package/dist/telemetry/telemetry.settings.d.ts.map +1 -0
  550. package/dist/telemetry/telemetry.settings.js +92 -0
  551. package/dist/telemetry/telemetry.settings.js.map +1 -0
  552. package/dist/telemetry/testing/coach-metric-group.fixture.d.ts +17 -0
  553. package/dist/telemetry/testing/coach-metric-group.fixture.d.ts.map +1 -0
  554. package/dist/telemetry/testing/coach-metric-group.fixture.js +128 -0
  555. package/dist/telemetry/testing/coach-metric-group.fixture.js.map +1 -0
  556. package/dist/telemetry/testing/conformance.d.ts +257 -0
  557. package/dist/telemetry/testing/conformance.d.ts.map +1 -0
  558. package/dist/telemetry/testing/conformance.js +626 -0
  559. package/dist/telemetry/testing/conformance.js.map +1 -0
  560. package/dist/telemetry/testing/index.d.ts +10 -0
  561. package/dist/telemetry/testing/index.d.ts.map +1 -0
  562. package/dist/telemetry/testing/index.js +41 -0
  563. package/dist/telemetry/testing/index.js.map +1 -0
  564. package/dist/telemetry/testing/metric-schema.fixture.d.ts +73 -0
  565. package/dist/telemetry/testing/metric-schema.fixture.d.ts.map +1 -0
  566. package/dist/telemetry/testing/metric-schema.fixture.js +362 -0
  567. package/dist/telemetry/testing/metric-schema.fixture.js.map +1 -0
  568. package/dist/telemetry/testing/stub-ports.d.ts +46 -0
  569. package/dist/telemetry/testing/stub-ports.d.ts.map +1 -0
  570. package/dist/telemetry/testing/stub-ports.js +119 -0
  571. package/dist/telemetry/testing/stub-ports.js.map +1 -0
  572. package/dist/testing/conformance-suite.d.ts +106 -0
  573. package/dist/testing/conformance-suite.d.ts.map +1 -0
  574. package/dist/testing/conformance-suite.js +8 -0
  575. package/dist/testing/conformance-suite.js.map +1 -0
  576. package/dist/testing/conformance-suites.d.ts +14 -0
  577. package/dist/testing/conformance-suites.d.ts.map +1 -0
  578. package/dist/testing/conformance-suites.js +27 -0
  579. package/dist/testing/conformance-suites.js.map +1 -0
  580. package/dist/testing/host/in-memory-audit-sink.d.ts +23 -0
  581. package/dist/testing/host/in-memory-audit-sink.d.ts.map +1 -0
  582. package/dist/testing/host/in-memory-audit-sink.js +30 -0
  583. package/dist/testing/host/in-memory-audit-sink.js.map +1 -0
  584. package/dist/testing/host/in-memory-system-settings-store.d.ts +31 -0
  585. package/dist/testing/host/in-memory-system-settings-store.d.ts.map +1 -0
  586. package/dist/testing/host/in-memory-system-settings-store.js +54 -0
  587. package/dist/testing/host/in-memory-system-settings-store.js.map +1 -0
  588. package/dist/testing/host/index.d.ts +4 -0
  589. package/dist/testing/host/index.d.ts.map +1 -0
  590. package/dist/testing/host/index.js +13 -0
  591. package/dist/testing/host/index.js.map +1 -0
  592. package/dist/testing/host/test-platform-host.d.ts +35 -0
  593. package/dist/testing/host/test-platform-host.d.ts.map +1 -0
  594. package/dist/testing/host/test-platform-host.js +81 -0
  595. package/dist/testing/host/test-platform-host.js.map +1 -0
  596. package/dist/testing/index.d.ts +12 -0
  597. package/dist/testing/index.d.ts.map +1 -0
  598. package/dist/testing/index.js +32 -0
  599. package/dist/testing/index.js.map +1 -0
  600. package/dist/testing/prisma-schema.d.ts +99 -0
  601. package/dist/testing/prisma-schema.d.ts.map +1 -0
  602. package/dist/testing/prisma-schema.js +175 -0
  603. package/dist/testing/prisma-schema.js.map +1 -0
  604. package/dist/testing/run-platform-conformance.d.ts +70 -0
  605. package/dist/testing/run-platform-conformance.d.ts.map +1 -0
  606. package/dist/testing/run-platform-conformance.js +77 -0
  607. package/dist/testing/run-platform-conformance.js.map +1 -0
  608. package/dist/testing/suites/cron-enqueue-only.d.ts +46 -0
  609. package/dist/testing/suites/cron-enqueue-only.d.ts.map +1 -0
  610. package/dist/testing/suites/cron-enqueue-only.js +177 -0
  611. package/dist/testing/suites/cron-enqueue-only.js.map +1 -0
  612. package/dist/testing/suites/user-owned-data.d.ts +86 -0
  613. package/dist/testing/suites/user-owned-data.d.ts.map +1 -0
  614. package/dist/testing/suites/user-owned-data.js +329 -0
  615. package/dist/testing/suites/user-owned-data.js.map +1 -0
  616. package/package.json +129 -4
@@ -0,0 +1,904 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var TelemetryDashboardService_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.UNKNOWN_ROUTES_TOP_N = exports.TelemetryDashboardService = exports.SharedTtlCache = exports.TELEMETRY_DASHBOARD_AUDIT_ACTION = exports.DASHBOARD_LOG_Q_MAX = exports.RUNTIME_MIN_BUCKET_SECONDS = exports.LAST_DATA_LOOKBACK_MS = exports.DASHBOARD_CACHE_MAX_ENTRIES = exports.DASHBOARD_DISTINCT_CACHE_MS = exports.DASHBOARD_RESULT_CACHE_MS = void 0;
17
+ exports.resolveWindow = resolveWindow;
18
+ exports.catalogOf = catalogOf;
19
+ exports.encodeCursor = encodeCursor;
20
+ exports.decodeCursor = decodeCursor;
21
+ exports.nsToMs = nsToMs;
22
+ exports.toDate = toDate;
23
+ exports.bucketStarts = bucketStarts;
24
+ exports.unknownRoutesOf = unknownRoutesOf;
25
+ exports.parseSeverities = parseSeverities;
26
+ exports.auditParams = auditParams;
27
+ const common_1 = require("@nestjs/common");
28
+ const telemetry_dashboard_dto_1 = require("../dto/telemetry-dashboard.dto");
29
+ const greptime_client_1 = require("../greptime/greptime.client");
30
+ const sql_guard_1 = require("../query/sql-guard");
31
+ const telemetry_availability_1 = require("../query/telemetry-availability");
32
+ const telemetry_query_errors_1 = require("../query/telemetry-query.errors");
33
+ const telemetry_schema_service_1 = require("../query/telemetry-schema.service");
34
+ const ports_1 = require("../ports");
35
+ const telemetry_settings_service_1 = require("../telemetry-settings.service");
36
+ const metric_catalog_1 = require("../metrics/metric-catalog");
37
+ const metric_group_1 = require("../metrics/metric-group");
38
+ const metric_sql_1 = require("../metrics/metric-sql");
39
+ const metric_verdict_1 = require("../metrics/metric-verdict");
40
+ const telemetry_dashboard_sql_1 = require("./telemetry-dashboard.sql");
41
+ const telemetry_options_1 = require("../telemetry.options");
42
+ const telemetry_dashboard_verdict_1 = require("./telemetry-dashboard.verdict");
43
+ const verdict_policy_1 = require("./verdict-policy");
44
+ // =============================================================================
45
+ // TelemetryDashboardService — the fixed dashboard over the telemetry store
46
+ // (issue #577, epic #576)
47
+ // =============================================================================
48
+ //
49
+ // Unlike the explorer, NOTHING here is caller-supplied SQL: every statement is
50
+ // a template of `telemetry-dashboard.sql.ts`, filled with validated values.
51
+ // The flow of every route:
52
+ //
53
+ // 1. preconditions (`requireQueryablePolicy`): 503 not configured, 409
54
+ // disabled — checked before the cache, so a disabled store never serves
55
+ // a cached answer;
56
+ // 2. the window: `range` (relative to now) or `from`/`to`, bucket size =
57
+ // span/buckets rounded UP to an allowed size; the previous window is the
58
+ // same span ending at `from`;
59
+ // 3. the 15-second RESULT CACHE, keyed by route + normalized params (a
60
+ // relative range keys by its name, not its instants), with concurrent
61
+ // identical requests sharing one in-flight promise;
62
+ // 4. on a miss: which tables/columns exist (`TelemetrySchemaService`,
63
+ // cached 30 s) so a fresh store degrades to empty panels rather than
64
+ // failing; `service`/`instance` checked against the DISTINCT values seen
65
+ // in the range (cached 60 s) → 400 TELEMETRY_DASHBOARD_BAD_FILTER; then
66
+ // the statements, through the READ-ONLY reader pool with the policy's
67
+ // client-side timeout (summary: all at once, `Promise.all`);
68
+ // 5. an audit row per store read (`telemetry:dashboard`), failures too. A
69
+ // cache hit is not audited: nothing was read from the store.
70
+ //
71
+ // NOT A QUEUE JOB (CLAUDE.md): every statement is bounded by the policy
72
+ // timeout and a literal LIMIT, and none outlives the request. No @Cron, no
73
+ // @OnEvent, no detached promise; the caches expire lazily on read.
74
+ //
75
+ // ⚠ Never log `q` beyond 64 characters, and never log rows.
76
+ // =============================================================================
77
+ exports.DASHBOARD_RESULT_CACHE_MS = 15_000;
78
+ exports.DASHBOARD_DISTINCT_CACHE_MS = 60_000;
79
+ /** Entries each cache keeps at most (oldest evicted first). */
80
+ exports.DASHBOARD_CACHE_MAX_ENTRIES = 500;
81
+ /** How far back "latest data" looks. */
82
+ exports.LAST_DATA_LOOKBACK_MS = 7 * 24 * 60 * 60_000;
83
+ /** Runtime metrics are exported every 60 s: a finer bucket would be half empty. */
84
+ exports.RUNTIME_MIN_BUCKET_SECONDS = 60;
85
+ /** How much of `q` an audit row or log line keeps. */
86
+ exports.DASHBOARD_LOG_Q_MAX = 64;
87
+ exports.TELEMETRY_DASHBOARD_AUDIT_ACTION = 'telemetry:dashboard';
88
+ /** The request's window at `now`. The DTO has already refused conflicting or oversized windows. */
89
+ function resolveWindow(query, now = Date.now()) {
90
+ const buckets = Number(query.buckets ?? telemetry_dashboard_dto_1.DASHBOARD_BUCKET_COUNTS[telemetry_dashboard_dto_1.DASHBOARD_BUCKET_COUNTS.length - 1]);
91
+ let from;
92
+ let to;
93
+ let key;
94
+ if (query.from && query.to) {
95
+ from = new Date(query.from);
96
+ to = new Date(query.to);
97
+ key = `from=${from.toISOString()}&to=${to.toISOString()}`;
98
+ }
99
+ else {
100
+ const range = query.range ?? telemetry_dashboard_dto_1.DEFAULT_DASHBOARD_RANGE;
101
+ to = new Date(now);
102
+ from = new Date(now - telemetry_dashboard_dto_1.DASHBOARD_RANGE_MS[range]);
103
+ key = `range=${range}`;
104
+ }
105
+ const spanMs = to.getTime() - from.getTime();
106
+ return {
107
+ from,
108
+ to,
109
+ spanMs,
110
+ previousFrom: new Date(from.getTime() - spanMs),
111
+ bucketSeconds: (0, telemetry_dashboard_sql_1.bucketSecondsFor)(spanMs, buckets),
112
+ key: `${key}&buckets=${buckets}`,
113
+ spanKey: key,
114
+ };
115
+ }
116
+ /** A TTL cache whose concurrent misses for one key share one promise. Failures are not cached. */
117
+ class SharedTtlCache {
118
+ ttlMs;
119
+ maxEntries;
120
+ entries = new Map();
121
+ inflight = new Map();
122
+ constructor(ttlMs, maxEntries = exports.DASHBOARD_CACHE_MAX_ENTRIES) {
123
+ this.ttlMs = ttlMs;
124
+ this.maxEntries = maxEntries;
125
+ }
126
+ get(key, load) {
127
+ const hit = this.entries.get(key);
128
+ if (hit && Date.now() - hit.at < this.ttlMs)
129
+ return Promise.resolve(hit.value);
130
+ if (hit)
131
+ this.entries.delete(key);
132
+ const pending = this.inflight.get(key);
133
+ if (pending)
134
+ return pending;
135
+ const promise = load()
136
+ .then((value) => {
137
+ this.entries.set(key, { value, at: Date.now() });
138
+ this.evict();
139
+ return value;
140
+ })
141
+ .finally(() => {
142
+ this.inflight.delete(key);
143
+ });
144
+ this.inflight.set(key, promise);
145
+ return promise;
146
+ }
147
+ clear() {
148
+ this.entries.clear();
149
+ }
150
+ evict() {
151
+ const now = Date.now();
152
+ for (const [key, entry] of this.entries) {
153
+ if (now - entry.at >= this.ttlMs)
154
+ this.entries.delete(key);
155
+ }
156
+ while (this.entries.size > this.maxEntries) {
157
+ const oldest = this.entries.keys().next().value;
158
+ this.entries.delete(oldest);
159
+ }
160
+ }
161
+ }
162
+ exports.SharedTtlCache = SharedTtlCache;
163
+ function catalogOf(schema) {
164
+ const columns = (table) => {
165
+ const found = schema.tables.find((t) => t.name === table);
166
+ return found ? new Set(found.columns.map((c) => c.name)) : null;
167
+ };
168
+ const traces = columns(telemetry_dashboard_sql_1.TRACES_TABLE);
169
+ const logs = columns(telemetry_dashboard_sql_1.LOGS_TABLE);
170
+ return {
171
+ traces: !!traces && telemetry_dashboard_sql_1.REQUIRED_TRACE_COLUMNS.every((c) => traces.has(c)),
172
+ tracesHaveInstance: !!traces && traces.has(telemetry_dashboard_sql_1.TRACE_COLUMNS.instance),
173
+ tracesHaveRouteMatched: !!traces && traces.has(telemetry_dashboard_sql_1.TRACE_COLUMNS.routeMatched),
174
+ tracesHaveBearer: !!traces && traces.has(telemetry_dashboard_sql_1.TRACE_COLUMNS.bearer),
175
+ logs: !!logs && telemetry_dashboard_sql_1.REQUIRED_LOG_COLUMNS.every((c) => logs.has(c)),
176
+ heap: columns(telemetry_dashboard_sql_1.HEAP_USED_TABLE) !== null,
177
+ eventLoop: columns(telemetry_dashboard_sql_1.EVENT_LOOP_P99_TABLE) !== null,
178
+ };
179
+ }
180
+ // ---- cursor ------------------------------------------------------------------
181
+ function encodeCursor(cursor) {
182
+ return Buffer.from(JSON.stringify({ ts: cursor.ts, spanId: cursor.spanId }), 'utf8').toString('base64url');
183
+ }
184
+ /** Strictly decodes a cursor, or throws 400 TELEMETRY_DASHBOARD_BAD_CURSOR. */
185
+ function decodeCursor(raw) {
186
+ const bad = () => new telemetry_query_errors_1.TelemetryHttpError(telemetry_query_errors_1.TELEMETRY_ERROR_REASONS.DASHBOARD_BAD_CURSOR, 'The events cursor is not valid.');
187
+ if (!/^[A-Za-z0-9_-]+$/.test(raw))
188
+ throw bad();
189
+ let parsed;
190
+ try {
191
+ parsed = JSON.parse(Buffer.from(raw, 'base64url').toString('utf8'));
192
+ }
193
+ catch {
194
+ throw bad();
195
+ }
196
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed))
197
+ throw bad();
198
+ const keys = Object.keys(parsed).sort();
199
+ if (keys.length !== 2 || keys[0] !== 'spanId' || keys[1] !== 'ts')
200
+ throw bad();
201
+ const { ts, spanId } = parsed;
202
+ if (typeof ts !== 'string' || typeof spanId !== 'string')
203
+ throw bad();
204
+ if (!telemetry_dashboard_sql_1.EVENT_CURSOR_TS_PATTERN.test(ts) || !telemetry_dashboard_sql_1.EVENT_CURSOR_SPAN_PATTERN.test(spanId))
205
+ throw bad();
206
+ if (!Number.isFinite(Date.parse(toIsoText(ts))))
207
+ throw bad();
208
+ return { ts, spanId };
209
+ }
210
+ // ---- value conversion ----------------------------------------------------------
211
+ function num(value) {
212
+ const n = typeof value === 'number' ? value : Number(value);
213
+ return Number.isFinite(n) ? n : 0;
214
+ }
215
+ /** ns (number or UInt64 text) → ms rounded to 0.1, or null. */
216
+ function nsToMs(value) {
217
+ if (value === null || value === undefined || value === '')
218
+ return null;
219
+ const n = Number(value);
220
+ return Number.isFinite(n) ? Math.round(n / 1e5) / 10 : null;
221
+ }
222
+ function round2(value) {
223
+ return Math.round(value * 100) / 100;
224
+ }
225
+ /** The store's timestamp text (`2026-09-27 22:21:00.000000`, UTC) as ISO with `T` and `Z`, full precision. */
226
+ function toIsoText(text) {
227
+ const t = text.replace(' ', 'T');
228
+ return t.endsWith('Z') ? t : `${t}Z`;
229
+ }
230
+ /** A store timestamp as a Date, or null. */
231
+ function toDate(value) {
232
+ if (value === null || value === undefined || value === '')
233
+ return null;
234
+ if (value instanceof Date)
235
+ return Number.isFinite(value.getTime()) ? value : null;
236
+ const ms = Date.parse(toIsoText(String(value)));
237
+ return Number.isFinite(ms) ? new Date(ms) : null;
238
+ }
239
+ function toIso(value) {
240
+ return toDate(value)?.toISOString() ?? null;
241
+ }
242
+ function str(value) {
243
+ return value === null || value === undefined || value === '' ? null : String(value);
244
+ }
245
+ /** Bucket starts covering `[from, to)`, aligned to the epoch like `date_bin`. */
246
+ function bucketStarts(from, to, bucketSeconds) {
247
+ const size = bucketSeconds * 1000;
248
+ const starts = [];
249
+ for (let t = Math.floor(from.getTime() / size) * size; t < to.getTime(); t += size)
250
+ starts.push(t);
251
+ return starts;
252
+ }
253
+ /** Rows keyed by their bucket start (ms), from a column `t`. */
254
+ function byBucket(result) {
255
+ const map = new Map();
256
+ if (!result)
257
+ return map;
258
+ const index = result.fields.findIndex((f) => f.name === 't');
259
+ for (const row of result.rows) {
260
+ const t = toDate(row[index]);
261
+ if (t)
262
+ map.set(t.getTime(), row);
263
+ }
264
+ return map;
265
+ }
266
+ function column(result, name) {
267
+ return result ? result.fields.findIndex((f) => f.name === name) : -1;
268
+ }
269
+ /** Row objects keyed by field name. */
270
+ function objects(result) {
271
+ if (!result)
272
+ return [];
273
+ return result.rows.map((row) => Object.fromEntries(result.fields.map((f, i) => [f.name, row[i]])));
274
+ }
275
+ function periods(result) {
276
+ const rows = objects(result);
277
+ return {
278
+ current: rows.find((r) => r.period === 'current') ?? {},
279
+ previous: rows.find((r) => r.period === 'previous') ?? {},
280
+ };
281
+ }
282
+ function severityLabel(severityNumber, text) {
283
+ const label = str(text);
284
+ if (label)
285
+ return label.toLowerCase();
286
+ const n = num(severityNumber);
287
+ if (n >= 17)
288
+ return 'error';
289
+ if (n >= 13)
290
+ return 'warn';
291
+ if (n >= 9)
292
+ return 'info';
293
+ return 'other';
294
+ }
295
+ /** Collects the statements a request ran, in order, and runs them. */
296
+ class StatementRunner {
297
+ greptime;
298
+ timeoutMs;
299
+ sql = [];
300
+ constructor(greptime, timeoutMs) {
301
+ this.greptime = greptime;
302
+ this.timeoutMs = timeoutMs;
303
+ }
304
+ async run(sql) {
305
+ this.sql.push(sql);
306
+ try {
307
+ return await this.greptime.queryReader(sql, { timeoutMs: this.timeoutMs });
308
+ }
309
+ catch (error) {
310
+ throw (0, telemetry_availability_1.toTelemetryHttpError)(error);
311
+ }
312
+ }
313
+ /** `run`, or null without running when `sql` is null. */
314
+ maybe(sql) {
315
+ return sql ? this.run(sql) : Promise.resolve(null);
316
+ }
317
+ }
318
+ let TelemetryDashboardService = TelemetryDashboardService_1 = class TelemetryDashboardService {
319
+ greptime;
320
+ settings;
321
+ schema;
322
+ auditSink;
323
+ verdictPolicy;
324
+ thresholds;
325
+ metricFreshMs;
326
+ logger = new common_1.Logger(TelemetryDashboardService_1.name);
327
+ results = new SharedTtlCache(exports.DASHBOARD_RESULT_CACHE_MS);
328
+ distinct = new SharedTtlCache(exports.DASHBOARD_DISTINCT_CACHE_MS);
329
+ constructor(greptime, settings, schema, auditSink, verdictPolicy = new verdict_policy_1.DefaultVerdictPolicy(), thresholds = telemetry_dashboard_verdict_1.DEFAULT_VERDICT_THRESHOLDS, metricFreshMs = metric_group_1.METRIC_FRESH_MS) {
330
+ this.greptime = greptime;
331
+ this.settings = settings;
332
+ this.schema = schema;
333
+ this.auditSink = auditSink;
334
+ this.verdictPolicy = verdictPolicy;
335
+ this.thresholds = thresholds;
336
+ this.metricFreshMs = metricFreshMs;
337
+ }
338
+ async summary(userId, query) {
339
+ return this.cached(userId, 'summary', query, {}, (ctx) => this.computeSummary(ctx));
340
+ }
341
+ async timeseries(userId, query) {
342
+ return this.cached(userId, 'timeseries', query, { panel: query.panel }, (ctx) => this.computeTimeseries(ctx, query.panel));
343
+ }
344
+ async top(userId, query) {
345
+ return this.cached(userId, 'top', query, { kind: query.kind }, (ctx) => this.computeTop(ctx, query.kind));
346
+ }
347
+ /** One metric group of the catalog (#601): tiles, series and tables. */
348
+ async metrics(userId, query) {
349
+ return this.cached(userId, 'metrics', query, { group: query.group }, (ctx) => this.computeMetrics(ctx, query.group));
350
+ }
351
+ async events(userId, query) {
352
+ // Validated before the cache, so a malformed cursor is a 400 every time.
353
+ const cursor = query.cursor ? decodeCursor(query.cursor) : null;
354
+ const severities = parseSeverities(query.severity);
355
+ return this.cached(userId, 'events', query, { severity: severities.join(','), q: query.q ?? '', cursor: query.cursor ?? '' }, (ctx) => this.computeEvents(ctx, severities, query.q ?? null, cursor));
356
+ }
357
+ async filters(userId, query) {
358
+ const policy = await (0, telemetry_availability_1.requireQueryablePolicy)(this.greptime, this.settings);
359
+ const window = resolveWindow(query);
360
+ const timeoutMs = policy.query.timeoutSeconds * 1000;
361
+ const started = Date.now();
362
+ const values = await this.distinct.get(window.spanKey, () => this.audited(userId, 'filters', query, started, () => this.loadDistinct(window, timeoutMs)));
363
+ return {
364
+ range: rangeOf(window),
365
+ generatedAt: values.generatedAt,
366
+ truncated: values.truncated,
367
+ sql: values.sql,
368
+ services: values.services,
369
+ instances: values.instances,
370
+ hosts: values.hosts,
371
+ };
372
+ }
373
+ // ---------------------------------------------------------------------------
374
+ /** Preconditions, window, result cache, audit. */
375
+ async cached(userId, route, query, extra, compute) {
376
+ const policy = await (0, telemetry_availability_1.requireQueryablePolicy)(this.greptime, this.settings);
377
+ const window = resolveWindow(query);
378
+ const key = [
379
+ route,
380
+ window.key,
381
+ `service=${query.service ?? ''}`,
382
+ `instance=${query.instance ?? ''}`,
383
+ `host=${query.host ?? ''}`,
384
+ ...Object.entries(extra)
385
+ .sort(([a], [b]) => (a < b ? -1 : 1))
386
+ .map(([k, v]) => `${k}=${v}`),
387
+ ].join('\u0000');
388
+ const value = await this.results.get(key, () => {
389
+ const started = Date.now();
390
+ return this.audited(userId, route, { ...query, ...extra }, started, async () => {
391
+ const runner = new StatementRunner(this.greptime, policy.query.timeoutSeconds * 1000);
392
+ const schema = await this.schema.getSchema();
393
+ const catalog = catalogOf(schema);
394
+ const tables = (0, metric_catalog_1.metricTablesOf)(schema);
395
+ const filters = await this.validateFilters(window, query, { catalog, tables }, policy.query.timeoutSeconds * 1000);
396
+ return compute({ window, filters, catalog, tables, runner });
397
+ });
398
+ });
399
+ return value;
400
+ }
401
+ /** Runs `work`, then writes the audit row (for a failure too) and logs the outcome. */
402
+ async audited(userId, route, params, started, work) {
403
+ let result;
404
+ try {
405
+ result = await work();
406
+ }
407
+ catch (error) {
408
+ const elapsedMs = Date.now() - started;
409
+ await this.audit(userId, route, params, {
410
+ elapsedMs,
411
+ error: error instanceof Error ? error.message : String(error),
412
+ ...(error instanceof telemetry_query_errors_1.TelemetryHttpError ? { reason: error.reason } : {}),
413
+ }).catch((auditError) => {
414
+ this.logger.warn(`Could not audit a failed telemetry dashboard read: ${auditError instanceof Error ? auditError.message : String(auditError)}`);
415
+ });
416
+ throw error;
417
+ }
418
+ const elapsedMs = Date.now() - started;
419
+ const statements = Array.isArray(result.sql) ? result.sql.length : 1;
420
+ this.logger.debug(`Telemetry dashboard ${route}: ${statements} statement(s) in ${elapsedMs} ms`);
421
+ await this.audit(userId, route, params, { elapsedMs, statements, truncated: result.truncated });
422
+ return result;
423
+ }
424
+ async audit(userId, route, params, meta) {
425
+ await this.auditSink.record({
426
+ actorUserId: userId,
427
+ action: exports.TELEMETRY_DASHBOARD_AUDIT_ACTION,
428
+ targetType: 'telemetry_store',
429
+ targetId: this.greptime.database,
430
+ meta: { route, params: auditParams(params), ...meta },
431
+ });
432
+ }
433
+ /** `service`/`instance`/`host` as SQL filters, or 400 when one was not seen in the range. */
434
+ async validateFilters(window, query, known, timeoutMs) {
435
+ const filters = {
436
+ tracesHaveInstance: known.catalog.tracesHaveInstance,
437
+ tracesHaveRouteMatched: known.catalog.tracesHaveRouteMatched,
438
+ tracesHaveBearer: known.catalog.tracesHaveBearer,
439
+ };
440
+ if (!query.service && !query.instance && !query.host)
441
+ return filters;
442
+ const values = await this.distinct.get(window.spanKey, () => this.loadDistinct(window, timeoutMs, known));
443
+ for (const field of ['service', 'instance', 'host']) {
444
+ const wanted = query[field];
445
+ if (wanted === undefined)
446
+ continue;
447
+ const known = field === 'service' ? values.services : field === 'instance' ? values.instances : values.hosts;
448
+ if (!known.includes(wanted)) {
449
+ throw new telemetry_query_errors_1.TelemetryHttpError(telemetry_query_errors_1.TELEMETRY_ERROR_REASONS.DASHBOARD_BAD_FILTER, `The ${field} is not among those seen in the selected range.`, { field });
450
+ }
451
+ filters[field] = wanted;
452
+ }
453
+ return filters;
454
+ }
455
+ async loadDistinct(window, timeoutMs, known) {
456
+ let catalog = known?.catalog;
457
+ let metricTables = known?.tables;
458
+ if (!catalog || !metricTables) {
459
+ const schema = await this.schema.getSchema();
460
+ catalog = catalogOf(schema);
461
+ metricTables = (0, metric_catalog_1.metricTablesOf)(schema);
462
+ }
463
+ const runner = new StatementRunner(this.greptime, timeoutMs);
464
+ const tables = { traces: catalog.traces, logs: catalog.logs };
465
+ const [services, instances, hosts] = await Promise.all([
466
+ runner.maybe((0, telemetry_dashboard_sql_1.distinctServicesSql)(window.from, window.to, tables)),
467
+ runner.maybe((0, telemetry_dashboard_sql_1.distinctInstancesSql)(window.from, window.to, { traces: catalog.tracesHaveInstance, logs: catalog.logs })),
468
+ runner.maybe((0, metric_sql_1.distinctHostsSql)(metricTables.get(metric_catalog_1.HOST_DISTINCT_TABLE) ?? null, metric_catalog_1.HOST_DISTINCT_TABLE, window.from, window.to, telemetry_dashboard_sql_1.DISTINCT_VALUES_MAX + 1)),
469
+ ]);
470
+ const list = (result) => (result?.rows ?? []).map((row) => str(row[0])).filter((v) => v !== null);
471
+ const s = list(services);
472
+ const i = list(instances);
473
+ const h = list(hosts);
474
+ return {
475
+ services: s.slice(0, telemetry_dashboard_sql_1.DISTINCT_VALUES_MAX),
476
+ instances: i.slice(0, telemetry_dashboard_sql_1.DISTINCT_VALUES_MAX),
477
+ hosts: h.slice(0, telemetry_dashboard_sql_1.DISTINCT_VALUES_MAX),
478
+ truncated: s.length > telemetry_dashboard_sql_1.DISTINCT_VALUES_MAX || i.length > telemetry_dashboard_sql_1.DISTINCT_VALUES_MAX || h.length > telemetry_dashboard_sql_1.DISTINCT_VALUES_MAX,
479
+ sql: runner.sql,
480
+ generatedAt: new Date(Date.now()).toISOString(),
481
+ };
482
+ }
483
+ // ---- summary ---------------------------------------------------------------
484
+ async computeSummary({ window, filters, catalog, tables, runner }) {
485
+ const now = new Date(Date.now());
486
+ const runtimeBucket = Math.max(window.bucketSeconds, exports.RUNTIME_MIN_BUCKET_SECONDS);
487
+ const runtimeService = filters.service ?? null;
488
+ const lastDataSince = new Date(now.getTime() - exports.LAST_DATA_LOOKBACK_MS);
489
+ // Infrastructure verdict inputs (#601): one small statement per rule
490
+ // family, null (not run) when its tables are absent.
491
+ const probeSql = (0, metric_verdict_1.verdictProbeSql)(tables, window);
492
+ // Unknown API routes (#650): only when the store has the matched column
493
+ // (see UNKNOWN_ROUTE_PREDICATE); the templates return null otherwise.
494
+ const unknownSql = catalog.traces
495
+ ? {
496
+ totals: (0, telemetry_dashboard_sql_1.unknownRoutesTotalsSql)(window.previousFrom, window, filters),
497
+ top: (0, telemetry_dashboard_sql_1.topUnknownRoutesSql)(window, filters, exports.UNKNOWN_ROUTES_TOP_N + 1),
498
+ }
499
+ : { totals: null, top: null };
500
+ const [apiTotals, apiSeries, logsTotals, logsSeries, last, routes, errors, heap, eventLoop, probeResults, unknownTotals, unknownTop] = await Promise.all([
501
+ runner.maybe(catalog.traces ? (0, telemetry_dashboard_sql_1.apiTotalsSql)(window.previousFrom, window, filters) : null),
502
+ runner.maybe(catalog.traces ? (0, telemetry_dashboard_sql_1.apiTimeseriesSql)(window, filters) : null),
503
+ runner.maybe(catalog.logs ? (0, telemetry_dashboard_sql_1.logsTotalsSql)(window.previousFrom, window, filters) : null),
504
+ runner.maybe(catalog.logs ? (0, telemetry_dashboard_sql_1.logsTimeseriesSql)(window, filters) : null),
505
+ runner.maybe(catalog.traces || catalog.logs
506
+ ? (0, telemetry_dashboard_sql_1.lastDataSql)(lastDataSince, new Date(now.getTime() + 60_000), filters, {
507
+ traces: catalog.traces,
508
+ logs: catalog.logs,
509
+ })
510
+ : null),
511
+ runner.maybe(catalog.traces ? (0, telemetry_dashboard_sql_1.topRoutesSql)(window, filters) : null),
512
+ runner.maybe(catalog.logs ? (0, telemetry_dashboard_sql_1.topErrorsSql)(window, filters, 1) : null),
513
+ runner.maybe(catalog.heap ? (0, telemetry_dashboard_sql_1.heapUsedSql)(window.previousFrom, window.to, runtimeBucket, runtimeService) : null),
514
+ runner.maybe(catalog.eventLoop ? (0, telemetry_dashboard_sql_1.eventLoopDelayP99Sql)(window.previousFrom, window.to, runtimeBucket, runtimeService) : null),
515
+ Promise.all(metric_verdict_1.VERDICT_PROBES.map((probe) => runner.maybe(probeSql[probe]))),
516
+ runner.maybe(unknownSql.totals),
517
+ runner.maybe(unknownSql.top),
518
+ ]);
519
+ const infrastructure = (0, metric_verdict_1.verdictInputsFrom)(Object.fromEntries(metric_verdict_1.VERDICT_PROBES.map((probe, i) => [probe, probeResults[i]])), new Date(Math.min(now.getTime(), window.to.getTime())));
520
+ const api = periods(apiTotals);
521
+ const logs = periods(logsTotals);
522
+ const requests = num(api.current.requests);
523
+ const previousRequests = num(api.previous.requests);
524
+ const errors5xx = num(api.current.errors);
525
+ const previousErrors5xx = num(api.previous.errors);
526
+ const p95Ms = nsToMs(api.current.p95_ns);
527
+ const errorLogs = num(logs.current.error);
528
+ const previousErrorLogs = num(logs.previous.error);
529
+ const lastRow = objects(last)[0] ?? {};
530
+ const lastDates = [toDate(lastRow.traces_last), toDate(lastRow.logs_last)].filter((d) => d !== null);
531
+ const lastDataAt = lastDates.length ? new Date(Math.max(...lastDates.map((d) => d.getTime()))) : null;
532
+ const routeRows = objects(routes);
533
+ const topErrorRow = routeRows.find((r) => num(r.errors) > 0);
534
+ // Streaming (SSE) routes are never the latency offender: their span is the
535
+ // connection's lifetime (see STREAM_SPAN_PREDICATE).
536
+ const slowest = routeRows.filter((r) => !(0, telemetry_dashboard_sql_1.isStreamingRoute)(str(r.route))).reduce((worst, r) => ((nsToMs(r.p95_ns) ?? -1) > (worst ? nsToMs(worst.p95_ns) ?? -1 : -1) ? r : worst), null);
537
+ const routeLabel = (r) => r ? [str(r.method), str(r.route)].filter(Boolean).join(' ') || null : null;
538
+ // `sql`: the two statements exactly as run above (per-route list first),
539
+ // for the panel's "Open in Explorer" without parsing the summary's `sql`.
540
+ const unknownRoutes = unknownSql.totals
541
+ ? unknownRoutesOf(unknownTotals, unknownTop, [unknownSql.top, unknownSql.totals].filter((q) => !!q))
542
+ : null;
543
+ const verdict = this.verdictPolicy.compute({
544
+ now,
545
+ lastDataAt,
546
+ requests,
547
+ errors5xx,
548
+ p95Ms,
549
+ errorLogs,
550
+ previousErrorLogs,
551
+ topErrorRoute: routeLabel(topErrorRow),
552
+ slowestRoute: routeLabel(slowest),
553
+ topErrorMessage: str(objects(errors)[0]?.message),
554
+ unknownRoutes: unknownRoutes
555
+ ? {
556
+ bearerRequests: unknownRoutes.bearer,
557
+ bearerRoutes: unknownRoutes.topRoutes.filter((r) => r.bearer > 0).length,
558
+ topRoute: routeLabel(unknownRoutes.topRoutes.find((r) => r.bearer > 0)),
559
+ }
560
+ : null,
561
+ ...infrastructure,
562
+ }, this.thresholds);
563
+ const starts = bucketStarts(window.from, window.to, window.bucketSeconds);
564
+ const apiBuckets = byBucket(apiSeries);
565
+ const logBuckets = byBucket(logsSeries);
566
+ const at = (result, name) => column(result, name);
567
+ const spanMin = window.spanMs / 60_000;
568
+ const bucketMin = window.bucketSeconds / 60;
569
+ const apiSpark = (pick) => starts.map((t) => {
570
+ const row = apiBuckets.get(t);
571
+ return row ? pick(row) : null;
572
+ });
573
+ const totalAt = at(apiSeries, 'total');
574
+ const s5xxAt = at(apiSeries, 's5xx');
575
+ const p95At = at(apiSeries, 'p95_ns');
576
+ const tiles = [
577
+ {
578
+ key: 'requestsPerMin',
579
+ label: 'Requests / min',
580
+ value: round2(requests / spanMin),
581
+ previous: round2(previousRequests / spanMin),
582
+ unit: 'req/min',
583
+ sparkline: starts.map((t) => round2(num(apiBuckets.get(t)?.[totalAt]) / bucketMin)),
584
+ },
585
+ {
586
+ key: 'errorRatePct',
587
+ label: '5xx rate',
588
+ value: requests ? round2((errors5xx / requests) * 100) : null,
589
+ previous: previousRequests ? round2((previousErrors5xx / previousRequests) * 100) : null,
590
+ unit: '%',
591
+ sparkline: apiSpark((row) => {
592
+ const total = num(row[totalAt]);
593
+ return total ? round2((num(row[s5xxAt]) / total) * 100) : null;
594
+ }),
595
+ },
596
+ {
597
+ key: 'p95Ms',
598
+ label: 'p95 latency',
599
+ value: p95Ms,
600
+ previous: nsToMs(api.previous.p95_ns),
601
+ unit: 'ms',
602
+ sparkline: apiSpark((row) => nsToMs(row[p95At])),
603
+ },
604
+ {
605
+ key: 'errorLogs',
606
+ label: 'Error logs',
607
+ value: errorLogs,
608
+ previous: previousErrorLogs,
609
+ unit: 'count',
610
+ sparkline: starts.map((t) => num(logBuckets.get(t)?.[at(logsSeries, 'error')])),
611
+ },
612
+ {
613
+ key: 'warnLogs',
614
+ label: 'Warning logs',
615
+ value: num(logs.current.warn),
616
+ previous: num(logs.previous.warn),
617
+ unit: 'count',
618
+ sparkline: starts.map((t) => num(logBuckets.get(t)?.[at(logsSeries, 'warn')])),
619
+ },
620
+ {
621
+ // #650: requests answered by the not-found handler. Null when the
622
+ // store has no `app.route.matched` column yet (old data): unknown,
623
+ // not zero. The bearer/anonymous split is `unknownRoutes` below.
624
+ key: 'unknownRoutes',
625
+ label: 'Unknown API routes',
626
+ value: unknownRoutes ? unknownRoutes.requests : null,
627
+ previous: unknownRoutes ? unknownRoutes.previousRequests : null,
628
+ unit: 'count',
629
+ sparkline: [],
630
+ },
631
+ {
632
+ key: 'lastDataAt',
633
+ label: 'Last data',
634
+ value: lastDataAt?.toISOString() ?? null,
635
+ previous: null,
636
+ unit: 'timestamp',
637
+ sparkline: [],
638
+ },
639
+ ];
640
+ const runtime = [];
641
+ if (catalog.heap)
642
+ runtime.push(runtimeTile('heapUsedBytes', 'Heap used', 'bytes', heap, window, runtimeBucket, (v) => Math.round(v)));
643
+ if (catalog.eventLoop) {
644
+ runtime.push(runtimeTile('eventLoopDelayP99Ms', 'Event-loop delay p99', 'ms', eventLoop, window, runtimeBucket, (v) => Math.round(v * 10) / 10));
645
+ }
646
+ return {
647
+ range: rangeOf(window),
648
+ generatedAt: now.toISOString(),
649
+ truncated: false,
650
+ sql: runner.sql,
651
+ verdict,
652
+ tiles,
653
+ ...(runtime.length ? { runtime } : {}),
654
+ ...(unknownRoutes ? { unknownRoutes } : {}),
655
+ };
656
+ }
657
+ // ---- metrics (#601) --------------------------------------------------------
658
+ async computeMetrics({ window, filters, tables, runner }, group) {
659
+ const now = new Date(Date.now());
660
+ const freshMs = this.metricFreshMs ?? metric_group_1.METRIC_FRESH_MS;
661
+ const result = await (0, metric_group_1.computeMetricGroup)({ group, window, filters, tables, runner, now, freshMs });
662
+ return {
663
+ range: { from: window.from.toISOString(), to: window.to.toISOString(), bucketSeconds: result.bucketSeconds },
664
+ generatedAt: now.toISOString(),
665
+ truncated: result.truncated,
666
+ sql: runner.sql,
667
+ group,
668
+ available: result.available,
669
+ tiles: result.tiles,
670
+ series: result.series,
671
+ tables: result.tables,
672
+ skipped: result.skipped,
673
+ freshMs,
674
+ };
675
+ }
676
+ // ---- timeseries --------------------------------------------------------------
677
+ async computeTimeseries({ window, filters, catalog, runner }, panel) {
678
+ const starts = bucketStarts(window.from, window.to, window.bucketSeconds);
679
+ const envelope = (sql) => ({
680
+ range: rangeOf(window),
681
+ generatedAt: new Date(Date.now()).toISOString(),
682
+ truncated: false,
683
+ sql: sql[0] ?? '',
684
+ });
685
+ if (panel === 'api') {
686
+ const result = await runner.maybe(catalog.traces ? (0, telemetry_dashboard_sql_1.apiTimeseriesSql)(window, filters) : null);
687
+ const rows = byBucket(result);
688
+ const i = (name) => column(result, name);
689
+ return {
690
+ ...envelope(runner.sql),
691
+ panel,
692
+ buckets: starts.map((t) => {
693
+ const row = rows.get(t);
694
+ return {
695
+ t: new Date(t).toISOString(),
696
+ s2xx: num(row?.[i('s2xx')]),
697
+ s3xx: num(row?.[i('s3xx')]),
698
+ s4xx: num(row?.[i('s4xx')]),
699
+ s5xx: num(row?.[i('s5xx')]),
700
+ p95Ms: row ? nsToMs(row[i('p95_ns')]) : null,
701
+ };
702
+ }),
703
+ };
704
+ }
705
+ const result = await runner.maybe(catalog.logs ? (0, telemetry_dashboard_sql_1.logsTimeseriesSql)(window, filters) : null);
706
+ const rows = byBucket(result);
707
+ const i = (name) => column(result, name);
708
+ return {
709
+ ...envelope(runner.sql),
710
+ panel,
711
+ buckets: starts.map((t) => {
712
+ const row = rows.get(t);
713
+ return {
714
+ t: new Date(t).toISOString(),
715
+ error: num(row?.[i('error')]),
716
+ warn: num(row?.[i('warn')]),
717
+ info: num(row?.[i('info')]),
718
+ other: num(row?.[i('other')]),
719
+ };
720
+ }),
721
+ };
722
+ }
723
+ // ---- top ---------------------------------------------------------------------
724
+ async computeTop({ window, filters, catalog, runner }, kind) {
725
+ const base = () => ({ range: rangeOf(window), generatedAt: new Date(Date.now()).toISOString(), sql: runner.sql[0] ?? '' });
726
+ if (kind === 'routes') {
727
+ const rows = objects(await runner.maybe(catalog.traces ? (0, telemetry_dashboard_sql_1.topRoutesSql)(window, filters) : null));
728
+ return {
729
+ ...base(),
730
+ truncated: rows.length > telemetry_dashboard_sql_1.TOP_N,
731
+ kind,
732
+ items: rows.slice(0, telemetry_dashboard_sql_1.TOP_N).map((r) => {
733
+ const count = num(r.requests);
734
+ const errors = num(r.errors);
735
+ const unknownRequests = num(r.unknown_requests);
736
+ return {
737
+ method: str(r.method),
738
+ route: str(r.route),
739
+ count,
740
+ errors,
741
+ errorRatePct: count ? round2((errors / count) * 100) : 0,
742
+ clientErrors: num(r.client_errors),
743
+ unknownRequests,
744
+ unknown: unknownRequests > 0,
745
+ p95Ms: nsToMs(r.p95_ns),
746
+ };
747
+ }),
748
+ };
749
+ }
750
+ const rows = objects(await runner.maybe(catalog.logs ? (0, telemetry_dashboard_sql_1.topErrorsSql)(window, filters) : null));
751
+ return {
752
+ ...base(),
753
+ truncated: rows.length > telemetry_dashboard_sql_1.TOP_N,
754
+ kind,
755
+ items: rows.slice(0, telemetry_dashboard_sql_1.TOP_N).map((r) => ({
756
+ message: str(r.message),
757
+ count: num(r.occurrences),
758
+ firstSeen: toIso(r.first_seen),
759
+ lastSeen: toIso(r.last_seen),
760
+ sampleTraceId: str(r.sample_trace_id),
761
+ service: str(r.service),
762
+ })),
763
+ };
764
+ }
765
+ // ---- events ------------------------------------------------------------------
766
+ async computeEvents({ window, filters, catalog, runner }, severities, q, cursor) {
767
+ const envelope = { range: rangeOf(window), generatedAt: new Date(Date.now()).toISOString(), truncated: false };
768
+ if (!catalog.logs) {
769
+ return { ...envelope, sql: '', items: [], nextCursor: null };
770
+ }
771
+ const sql = (0, telemetry_dashboard_sql_1.eventsSql)(window, filters, { severities, q, cursor, limit: telemetry_dashboard_sql_1.EVENTS_PAGE_SIZE + 1 });
772
+ // Defence in depth: the statement is server-authored, but it carries user
773
+ // text, so it must still be exactly one read-only statement.
774
+ try {
775
+ (0, sql_guard_1.analyzeStatement)(sql);
776
+ }
777
+ catch (error) {
778
+ throw (0, telemetry_availability_1.toTelemetryHttpError)(error);
779
+ }
780
+ const rows = objects(await runner.run(sql));
781
+ const keyOf = (r) => `${String(r.ts)}\u0000${String(r.span_id ?? '')}`;
782
+ let page = rows.slice(0, telemetry_dashboard_sql_1.EVENTS_PAGE_SIZE);
783
+ const more = rows.length > telemetry_dashboard_sql_1.EVENTS_PAGE_SIZE;
784
+ if (more) {
785
+ // Keyset pagination is strict on (timestamp, span_id): rows sharing the
786
+ // boundary key with the first row of the NEXT page would be skipped, so
787
+ // the page ends before them (unless the whole page shares one key).
788
+ const boundary = keyOf(rows[telemetry_dashboard_sql_1.EVENTS_PAGE_SIZE]);
789
+ let end = telemetry_dashboard_sql_1.EVENTS_PAGE_SIZE;
790
+ while (end > 0 && keyOf(rows[end - 1]) === boundary)
791
+ end--;
792
+ if (end > 0)
793
+ page = rows.slice(0, end);
794
+ }
795
+ const last = page[page.length - 1];
796
+ return {
797
+ ...envelope,
798
+ sql,
799
+ items: page.map((r) => ({
800
+ timestamp: toIsoText(String(r.ts)),
801
+ severity: severityLabel(r.severity_number, r.severity_text),
802
+ service: str(r.service),
803
+ body: r.body === null || r.body === undefined ? null : String(r.body),
804
+ traceId: str(r.trace_id),
805
+ spanId: str(r.span_id),
806
+ })),
807
+ nextCursor: more && last ? encodeCursor({ ts: String(last.ts), spanId: String(last.span_id ?? '') }) : null,
808
+ };
809
+ }
810
+ };
811
+ exports.TelemetryDashboardService = TelemetryDashboardService;
812
+ exports.TelemetryDashboardService = TelemetryDashboardService = TelemetryDashboardService_1 = __decorate([
813
+ (0, common_1.Injectable)(),
814
+ __param(3, (0, common_1.Inject)(ports_1.TELEMETRY_AUDIT_SINK)),
815
+ __param(4, (0, common_1.Inject)(verdict_policy_1.VERDICT_POLICY)),
816
+ __param(5, (0, common_1.Inject)(telemetry_options_1.TELEMETRY_VERDICT_THRESHOLDS)),
817
+ __param(6, (0, common_1.Optional)()),
818
+ __param(6, (0, common_1.Inject)(telemetry_options_1.TELEMETRY_METRIC_FRESH_MS)),
819
+ __metadata("design:paramtypes", [greptime_client_1.GreptimeClient,
820
+ telemetry_settings_service_1.TelemetrySettingsService,
821
+ telemetry_schema_service_1.TelemetrySchemaService, Object, Object, Object, Number])
822
+ ], TelemetryDashboardService);
823
+ /** Unknown API routes the summary lists (#650); a short list, the verdict only needs 3 or more. */
824
+ exports.UNKNOWN_ROUTES_TOP_N = 5;
825
+ /** The summary's `unknownRoutes` block from its two statements (#650). */
826
+ function unknownRoutesOf(totals, top, sql) {
827
+ const p = periods(totals);
828
+ const requests = num(p.current.requests);
829
+ const bearer = num(p.current.bearer);
830
+ const previousRequests = num(p.previous.requests);
831
+ const previousBearer = num(p.previous.bearer);
832
+ const rows = objects(top);
833
+ return {
834
+ requests,
835
+ bearer,
836
+ anonymous: Math.max(requests - bearer, 0),
837
+ previousRequests,
838
+ previousBearer,
839
+ topRoutes: rows.slice(0, exports.UNKNOWN_ROUTES_TOP_N).map((r) => {
840
+ const count = num(r.requests);
841
+ const withBearer = num(r.bearer);
842
+ return {
843
+ method: str(r.method),
844
+ route: str(r.route),
845
+ count,
846
+ bearer: withBearer,
847
+ anonymous: Math.max(count - withBearer, 0),
848
+ };
849
+ }),
850
+ truncated: rows.length > exports.UNKNOWN_ROUTES_TOP_N,
851
+ sql,
852
+ };
853
+ }
854
+ function rangeOf(window) {
855
+ return { from: window.from.toISOString(), to: window.to.toISOString(), bucketSeconds: window.bucketSeconds };
856
+ }
857
+ function parseSeverities(raw) {
858
+ if (!raw)
859
+ return ['error', 'warn'];
860
+ const wanted = new Set(raw.split(','));
861
+ return telemetry_dashboard_sql_1.EVENT_SEVERITIES.filter((s) => wanted.has(s));
862
+ }
863
+ /**
864
+ * Request parameters as an audit row keeps them: control characters removed
865
+ * (PostgreSQL's jsonb refuses `\u0000`), `q` cut to 64 characters, the cursor
866
+ * only as present.
867
+ */
868
+ function auditParams(params) {
869
+ const out = {};
870
+ for (const [key, value] of Object.entries(params)) {
871
+ if (value === undefined || value === null || value === '')
872
+ continue;
873
+ const text = String(value).replace(/[\u0000-\u001f\u007f]/g, '');
874
+ if (key === 'q')
875
+ out.q = text.slice(0, exports.DASHBOARD_LOG_Q_MAX);
876
+ else if (key === 'cursor')
877
+ out.cursor = true;
878
+ else
879
+ out[key] = text;
880
+ }
881
+ return out;
882
+ }
883
+ function runtimeTile(key, label, unit, result, window, bucketSeconds, round) {
884
+ const rows = byBucket(result);
885
+ const vAt = column(result, 'v');
886
+ const value = (row) => {
887
+ if (!row)
888
+ return null;
889
+ const v = row[vAt];
890
+ if (v === null || v === undefined || v === '')
891
+ return null;
892
+ const n = Number(v);
893
+ return Number.isFinite(n) ? round(n) : null;
894
+ };
895
+ const sparkline = bucketStarts(window.from, window.to, bucketSeconds).map((t) => value(rows.get(t)));
896
+ const lastOf = (list) => [...list].reverse().find((v) => v !== null) ?? null;
897
+ const fromMs = window.from.getTime();
898
+ const previous = [...rows.entries()]
899
+ .filter(([t]) => t < fromMs)
900
+ .sort(([a], [b]) => a - b)
901
+ .map(([, row]) => value(row));
902
+ return { key, label, value: lastOf(sparkline), previous: lastOf(previous), unit, sparkline };
903
+ }
904
+ //# sourceMappingURL=telemetry-dashboard.service.js.map