@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 @@
1
+ {"version":3,"file":"ports.js","sourceRoot":"","sources":["../../src/telemetry/ports.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,wDAAwD;AACxD,gFAAgF;AAChF,EAAE;AACF,0EAA0E;AAC1E,yEAAyE;AACzE,6DAA6D;AAC7D,2EAA2E;AAC3E,8CAA8C;AAC9C,EAAE;AACF,8EAA8E;AAC9E,iDAAiD;AACjD,EAAE;AACF,6EAA6E;AAC7E,8EAA8E;AAC9E,oDAAoD;AACpD,0EAA0E;AAC1E,kEAAkE;AAClE,0DAA0D;AAC1D,EAAE;AACF,qEAAqE;AACrE,iDAAiD;AACjD,EAAE;AACF,yEAAyE;AACzE,0EAA0E;AAC1E,gFAAgF;;;AAMhF,sFAAsF;AAEtF;;;;;GAKG;AACU,QAAA,oBAAoB,GAAkB,MAAM,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;AAoC3G,wFAAwF;AAExF;;;;;GAKG;AACU,QAAA,wBAAwB,GAAkB,MAAM,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;AAyFnH,wFAAwF;AAExF;;;;;GAKG;AACU,QAAA,0BAA0B,GAAkB,MAAM,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;AAoEvH,wFAAwF;AAExF;;;;;GAKG;AACU,QAAA,cAAc,GAAkB,MAAM,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;AA2G/F,wFAAwF;AAExF;;;;;GAKG;AACU,QAAA,YAAY,GAAkB,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;AAqN3F,wFAAwF;AAExF;;;;;GAKG;AACU,QAAA,kBAAkB,GAAkB,MAAM,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * The read-only statement kinds the guard admits.
3
+ *
4
+ * @stability stable
5
+ */
6
+ export type TelemetryStatementKind = 'select' | 'show' | 'describe' | 'explain';
7
+ /**
8
+ * A statement the guard admitted.
9
+ *
10
+ * @stability stable
11
+ */
12
+ export interface AnalyzedStatement {
13
+ /** Its kind. */
14
+ kind: TelemetryStatementKind;
15
+ /** The statement with comments removed and trailing `;`/whitespace trimmed. */
16
+ normalized: string;
17
+ }
18
+ /** Why a statement was refused. The message is shown to the user as-is. */
19
+ export declare class TelemetrySqlRejectedError extends Error {
20
+ constructor(message: string);
21
+ }
22
+ /**
23
+ * Removes comments outside quotes, keeping everything else byte-for-byte.
24
+ * A comment is replaced by one space so `SELECT/**\/1` does not become
25
+ * `SELECT1`. Throws on an unterminated string, identifier or block comment:
26
+ * what follows it cannot be classified safely.
27
+ */
28
+ export declare function stripSqlComments(sql: string): string;
29
+ /**
30
+ * Classifies one read-only statement, or throws `TelemetrySqlRejectedError`
31
+ * with a message fit to show the user.
32
+ *
33
+ * @stability stable
34
+ */
35
+ export declare function analyzeStatement(sql: string): AnalyzedStatement;
36
+ /**
37
+ * How `applyRowCap` bounded a statement:
38
+ *
39
+ * appended no top-level LIMIT: `LIMIT <cap>` was added at the end (or
40
+ * just before a top-level OFFSET);
41
+ * clamped a top-level `LIMIT <n>` with n at least the cap: n was replaced by cap;
42
+ * kept a top-level `LIMIT <n>` with n under the cap: already bounded below
43
+ * the cap, sent unchanged;
44
+ * client-only the statement could not be bounded safely in its text
45
+ * (`LIMIT ALL`, `LIMIT <expression>`, `FETCH FIRST`, or a
46
+ * SHOW/DESCRIBE/EXPLAIN): sent unchanged, and the caller's
47
+ * slice to `maxRows` (plus the query timeout) is the only cap.
48
+ */
49
+ export type RowCapStrategy = 'appended' | 'clamped' | 'kept' | 'client-only';
50
+ export interface RowCappedStatement {
51
+ sql: string;
52
+ strategy: RowCapStrategy;
53
+ }
54
+ /**
55
+ * The statement to send, bounded so the SERVER stops after `cap` rows (pass
56
+ * `maxRows + 1`: the extra row is how truncation is detected).
57
+ *
58
+ * WHY NOT A WRAPPER (issue #554). The obvious
59
+ * `SELECT * FROM (<sql>) AS q LIMIT n` — and a CTE wrapper too — does NOT preserve the inner ORDER BY on
60
+ * GreptimeDB v1.2.1 (verified live, deterministically; `UNION ALL … ORDER BY`
61
+ * included). SQL leaves a subquery's order unspecified and the planner takes
62
+ * it at its word. So the LIMIT is applied to the statement itself, at the top
63
+ * level, where it composes with the statement's own ORDER BY (and, after a
64
+ * top-level `UNION … ORDER BY`, with the whole union).
65
+ *
66
+ * "Top level" is found with the same quote-aware scan as the rest of this
67
+ * file (comments are already gone from `normalized`), counting parentheses:
68
+ * a LIMIT inside a subquery, CTE or string literal is not the statement's.
69
+ */
70
+ export declare function applyRowCap(statement: AnalyzedStatement, cap: number): RowCappedStatement;
71
+ //# sourceMappingURL=sql-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-guard.d.ts","sourceRoot":"","sources":["../../../src/telemetry/query/sql-guard.ts"],"names":[],"mappings":"AA4BA;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;AAEhF;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,gBAAgB;IAChB,IAAI,EAAE,sBAAsB,CAAC;IAC7B,+EAA+E;IAC/E,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,2EAA2E;AAC3E,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,OAAO,EAAE,MAAM;CAI5B;AAaD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAsCpD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAgC/D;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,aAAa,CAAC;AAE7E,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAwDzF"}
@@ -0,0 +1,258 @@
1
+ "use strict";
2
+ // =============================================================================
3
+ // SQL guard for ad-hoc telemetry queries (issue #535, epic #528)
4
+ // =============================================================================
5
+ //
6
+ // DEFENCE IN DEPTH, NOT THE CONTROL. Every explorer/assistant/export query runs
7
+ // as GreptimeDB's `readonly` user, which the server itself refuses INSERT,
8
+ // DROP, ALTER, SET and friends (spike #529). This guard exists for two
9
+ // reasons that user cannot cover:
10
+ //
11
+ // 1. ONE STATEMENT. The simple query protocol executes EVERY statement in a
12
+ // multi-statement string (spike #529). `GreptimeClient` refuses the
13
+ // result after the fact; this refuses the text before it is sent, so a
14
+ // second statement never runs at all.
15
+ // 2. GOOD ERRORS. "Only SELECT, WITH, SHOW, DESCRIBE and EXPLAIN are
16
+ // allowed" is a better answer to `DELETE FROM …` than the server's
17
+ // "User is not authorized to perform this action".
18
+ //
19
+ // It is a small lexer, not a parser: it knows where single-quoted strings
20
+ // ('' escapes), double-quoted identifiers ("" escapes — telemetry columns are
21
+ // named like "span_attributes.http.route"), backtick identifiers, `--` line
22
+ // comments and `/* */` block comments begin and end, and nothing else. That
23
+ // is exactly enough to find a `;` or a comment that is really one, to find
24
+ // the first keyword, and to find a top-level LIMIT (`applyRowCap`).
25
+ // GreptimeDB has no dollar quoting, so none is handled.
26
+ //
27
+ // Pure functions; no Nest, no I/O.
28
+ // =============================================================================
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.TelemetrySqlRejectedError = void 0;
31
+ exports.stripSqlComments = stripSqlComments;
32
+ exports.analyzeStatement = analyzeStatement;
33
+ exports.applyRowCap = applyRowCap;
34
+ /** Why a statement was refused. The message is shown to the user as-is. */
35
+ class TelemetrySqlRejectedError extends Error {
36
+ constructor(message) {
37
+ super(message);
38
+ this.name = 'TelemetrySqlRejectedError';
39
+ }
40
+ }
41
+ exports.TelemetrySqlRejectedError = TelemetrySqlRejectedError;
42
+ const ALLOWED = {
43
+ SELECT: 'select',
44
+ WITH: 'select',
45
+ SHOW: 'show',
46
+ DESCRIBE: 'describe',
47
+ DESC: 'describe',
48
+ EXPLAIN: 'explain',
49
+ };
50
+ const ALLOWED_TEXT = 'SELECT, WITH, SHOW, DESCRIBE and EXPLAIN';
51
+ /**
52
+ * Removes comments outside quotes, keeping everything else byte-for-byte.
53
+ * A comment is replaced by one space so `SELECT/**\/1` does not become
54
+ * `SELECT1`. Throws on an unterminated string, identifier or block comment:
55
+ * what follows it cannot be classified safely.
56
+ */
57
+ function stripSqlComments(sql) {
58
+ let out = '';
59
+ let i = 0;
60
+ const n = sql.length;
61
+ while (i < n) {
62
+ const ch = sql[i];
63
+ const next = sql[i + 1];
64
+ if (ch === "'" || ch === '"' || ch === '`') {
65
+ const end = endOfQuoted(sql, i);
66
+ out += sql.slice(i, end);
67
+ i = end;
68
+ continue;
69
+ }
70
+ if (ch === '-' && next === '-') {
71
+ const newline = sql.indexOf('\n', i + 2);
72
+ i = newline === -1 ? n : newline; // keep the newline itself
73
+ out += ' ';
74
+ continue;
75
+ }
76
+ if (ch === '/' && next === '*') {
77
+ const close = sql.indexOf('*/', i + 2);
78
+ if (close === -1) {
79
+ throw new TelemetrySqlRejectedError('The query has an unterminated /* comment.');
80
+ }
81
+ i = close + 2;
82
+ out += ' ';
83
+ continue;
84
+ }
85
+ out += ch;
86
+ i += 1;
87
+ }
88
+ return out;
89
+ }
90
+ /**
91
+ * Classifies one read-only statement, or throws `TelemetrySqlRejectedError`
92
+ * with a message fit to show the user.
93
+ *
94
+ * @stability stable
95
+ */
96
+ function analyzeStatement(sql) {
97
+ const stripped = stripSqlComments(sql);
98
+ const normalized = trimTrailingTerminators(stripped);
99
+ if (normalized === '') {
100
+ throw new TelemetrySqlRejectedError('The query is empty.');
101
+ }
102
+ if (indexOfUnquoted(normalized, ';') !== -1) {
103
+ throw new TelemetrySqlRejectedError('Only one SQL statement may be run at a time.');
104
+ }
105
+ // `(SELECT 1) UNION (SELECT 2)` — a leading parenthesis opens a query.
106
+ const body = normalized.replace(/^[\s(]+/, '');
107
+ const keyword = /^[A-Za-z_]+/.exec(body)?.[0]?.toUpperCase() ?? '';
108
+ const kind = ALLOWED[keyword];
109
+ if (!kind) {
110
+ throw new TelemetrySqlRejectedError(keyword
111
+ ? `${keyword} statements are not allowed. Telemetry queries are read-only: only ${ALLOWED_TEXT} are allowed.`
112
+ : `The query must start with ${ALLOWED_TEXT}.`);
113
+ }
114
+ if (kind === 'explain' && /^EXPLAIN\s+(\(|VERBOSE\s+)?ANALYZE\b/i.test(body)) {
115
+ throw new TelemetrySqlRejectedError('EXPLAIN ANALYZE is not allowed: it runs the whole query. Use EXPLAIN to see the plan.');
116
+ }
117
+ return { kind, normalized };
118
+ }
119
+ /**
120
+ * The statement to send, bounded so the SERVER stops after `cap` rows (pass
121
+ * `maxRows + 1`: the extra row is how truncation is detected).
122
+ *
123
+ * WHY NOT A WRAPPER (issue #554). The obvious
124
+ * `SELECT * FROM (<sql>) AS q LIMIT n` — and a CTE wrapper too — does NOT preserve the inner ORDER BY on
125
+ * GreptimeDB v1.2.1 (verified live, deterministically; `UNION ALL … ORDER BY`
126
+ * included). SQL leaves a subquery's order unspecified and the planner takes
127
+ * it at its word. So the LIMIT is applied to the statement itself, at the top
128
+ * level, where it composes with the statement's own ORDER BY (and, after a
129
+ * top-level `UNION … ORDER BY`, with the whole union).
130
+ *
131
+ * "Top level" is found with the same quote-aware scan as the rest of this
132
+ * file (comments are already gone from `normalized`), counting parentheses:
133
+ * a LIMIT inside a subquery, CTE or string literal is not the statement's.
134
+ */
135
+ function applyRowCap(statement, cap) {
136
+ if (!Number.isSafeInteger(cap) || cap < 1) {
137
+ throw new RangeError(`cap must be a positive integer, got ${cap}`);
138
+ }
139
+ const sql = statement.normalized;
140
+ // SHOW, DESCRIBE and EXPLAIN take no LIMIT; their output is small.
141
+ if (statement.kind !== 'select') {
142
+ return { sql, strategy: 'client-only' };
143
+ }
144
+ const words = topLevelWords(sql);
145
+ const find = (word) => words.filter((w) => w.upper === word).at(-1);
146
+ // `FETCH FIRST n ROWS ONLY` is the standard spelling of LIMIT; rewriting
147
+ // it is not worth the risk for how rarely it is written.
148
+ if (find('FETCH')) {
149
+ return { sql, strategy: 'client-only' };
150
+ }
151
+ const limit = find('LIMIT');
152
+ if (!limit) {
153
+ const offset = find('OFFSET');
154
+ if (offset) {
155
+ // `… OFFSET m` → `… LIMIT cap OFFSET m`, the form every dialect accepts.
156
+ return {
157
+ sql: `${sql.slice(0, offset.start)}LIMIT ${cap} ${sql.slice(offset.start)}`,
158
+ strategy: 'appended',
159
+ };
160
+ }
161
+ // After ORDER BY, and after a whole `UNION … ORDER BY`, this limits the
162
+ // statement's final, ordered result.
163
+ return { sql: `${sql} LIMIT ${cap}`, strategy: 'appended' };
164
+ }
165
+ // `LIMIT <integer>`, then nothing but an optional `OFFSET <integer> [ROW[S]]`
166
+ // (the `OFFSET m LIMIT n` order leaves nothing after the literal at all).
167
+ const rest = sql.slice(limit.end);
168
+ const literal = /^(\s+)(\d+)(?=(\s+OFFSET\s+\d+(\s+ROWS?)?)?\s*$)/i.exec(rest);
169
+ if (!literal) {
170
+ return { sql, strategy: 'client-only' };
171
+ }
172
+ if (BigInt(literal[2]) < BigInt(cap)) {
173
+ return { sql, strategy: 'kept' };
174
+ }
175
+ const at = limit.end + literal[1].length;
176
+ return {
177
+ sql: `${sql.slice(0, at)}${cap}${sql.slice(at + literal[2].length)}`,
178
+ strategy: 'clamped',
179
+ };
180
+ }
181
+ // -----------------------------------------------------------------------------
182
+ /** Index just past the quoted run starting at `start` (a `'`, `"` or backtick). */
183
+ function endOfQuoted(sql, start) {
184
+ const quote = sql[start];
185
+ let i = start + 1;
186
+ while (i < sql.length) {
187
+ if (sql[i] === quote) {
188
+ // A doubled quote is an escaped one and does not close the run.
189
+ if (sql[i + 1] === quote) {
190
+ i += 2;
191
+ continue;
192
+ }
193
+ return i + 1;
194
+ }
195
+ i += 1;
196
+ }
197
+ throw new TelemetrySqlRejectedError(quote === "'"
198
+ ? 'The query has an unterminated string literal.'
199
+ : 'The query has an unterminated quoted identifier.');
200
+ }
201
+ function indexOfUnquoted(sql, target) {
202
+ let found = -1;
203
+ scanUnquoted(sql, (ch, i) => {
204
+ if (ch !== target)
205
+ return undefined;
206
+ found = i;
207
+ return 'stop';
208
+ });
209
+ return found;
210
+ }
211
+ /**
212
+ * The bare words (keywords and unquoted identifiers) outside every quote and
213
+ * parenthesis, in order. A word after `.` (`t.limit`) is a qualified name,
214
+ * not a keyword; a numeric literal such as `1e5` contributes no word.
215
+ */
216
+ function topLevelWords(sql) {
217
+ const words = [];
218
+ let depth = 0;
219
+ scanUnquoted(sql, (ch, i) => {
220
+ if (ch === '(')
221
+ depth += 1;
222
+ else if (ch === ')')
223
+ depth = Math.max(0, depth - 1);
224
+ else if (/[A-Za-z0-9_]/.test(ch) && !/[A-Za-z0-9_$]/.test(sql[i - 1] ?? '')) {
225
+ const end = i + /^[A-Za-z0-9_$]*/.exec(sql.slice(i))[0].length;
226
+ if (depth === 0 && /[A-Za-z_]/.test(ch) && sql[i - 1] !== '.') {
227
+ words.push({ upper: sql.slice(i, end).toUpperCase(), start: i, end });
228
+ }
229
+ return end;
230
+ }
231
+ return undefined;
232
+ });
233
+ return words;
234
+ }
235
+ /**
236
+ * Walks `sql` calling `visit` for every character outside a quoted run (the
237
+ * runs themselves are skipped whole). `visit` returns `'stop'` to end the
238
+ * walk, an index to resume from, or nothing to move on by one.
239
+ */
240
+ function scanUnquoted(sql, visit) {
241
+ let i = 0;
242
+ while (i < sql.length) {
243
+ const ch = sql[i];
244
+ if (ch === "'" || ch === '"' || ch === '`') {
245
+ i = endOfQuoted(sql, i);
246
+ continue;
247
+ }
248
+ const next = visit(ch, i);
249
+ if (next === 'stop')
250
+ return;
251
+ i = typeof next === 'number' ? next : i + 1;
252
+ }
253
+ }
254
+ /** Trims whitespace and any number of trailing `;` (with whitespace between). */
255
+ function trimTrailingTerminators(sql) {
256
+ return sql.replace(/[\s;]+$/, '').trim();
257
+ }
258
+ //# sourceMappingURL=sql-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-guard.js","sourceRoot":"","sources":["../../../src/telemetry/query/sql-guard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { TelemetrySettings as SystemTelemetryValue } from '@marinoscar/platform-contract/telemetry';
2
+ import type { GreptimeClient } from '../greptime/greptime.client';
3
+ import type { TelemetrySettingsService } from '../telemetry-settings.service';
4
+ /** The current policy, or a `TelemetryHttpError` saying why nothing may be queried. */
5
+ export declare function requireQueryablePolicy(greptime: GreptimeClient, settings: TelemetrySettingsService): Promise<SystemTelemetryValue>;
6
+ /**
7
+ * Maps anything the guard or `GreptimeClient` threw to its HTTP failure.
8
+ * Anything unrecognised is returned unchanged (and becomes a 500).
9
+ */
10
+ export declare function toTelemetryHttpError(error: unknown): unknown;
11
+ //# sourceMappingURL=telemetry-availability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-availability.d.ts","sourceRoot":"","sources":["../../../src/telemetry/query/telemetry-availability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,IAAI,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AACzG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAOlE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAY9E,uFAAuF;AACvF,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,wBAAwB,GACjC,OAAO,CAAC,oBAAoB,CAAC,CAkB/B;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA4B5D"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.requireQueryablePolicy = requireQueryablePolicy;
4
+ exports.toTelemetryHttpError = toTelemetryHttpError;
5
+ const greptime_errors_1 = require("../greptime/greptime.errors");
6
+ const sql_guard_1 = require("./sql-guard");
7
+ const telemetry_query_errors_1 = require("./telemetry-query.errors");
8
+ // =============================================================================
9
+ // The two preconditions every explorer read shares (issue #535)
10
+ // =============================================================================
11
+ //
12
+ // Order matters: "not configured" first (no amount of settings changes will
13
+ // help), then "disabled" (an administrator can switch it on).
14
+ // =============================================================================
15
+ /** The current policy, or a `TelemetryHttpError` saying why nothing may be queried. */
16
+ async function requireQueryablePolicy(greptime, settings) {
17
+ if (!greptime.isConfigured()) {
18
+ throw new telemetry_query_errors_1.TelemetryHttpError(telemetry_query_errors_1.TELEMETRY_ERROR_REASONS.NOT_CONFIGURED, 'No telemetry store is configured for this deployment.');
19
+ }
20
+ const policy = await settings.getPolicy();
21
+ if (!policy.enabled) {
22
+ throw new telemetry_query_errors_1.TelemetryHttpError(telemetry_query_errors_1.TELEMETRY_ERROR_REASONS.DISABLED, 'Telemetry is disabled. An administrator can enable it in the telemetry settings.');
23
+ }
24
+ return policy;
25
+ }
26
+ /**
27
+ * Maps anything the guard or `GreptimeClient` threw to its HTTP failure.
28
+ * Anything unrecognised is returned unchanged (and becomes a 500).
29
+ */
30
+ function toTelemetryHttpError(error) {
31
+ if (error instanceof telemetry_query_errors_1.TelemetryHttpError)
32
+ return error;
33
+ if (error instanceof sql_guard_1.TelemetrySqlRejectedError || error instanceof greptime_errors_1.TelemetryMultiStatementError) {
34
+ return new telemetry_query_errors_1.TelemetryHttpError(telemetry_query_errors_1.TELEMETRY_ERROR_REASONS.QUERY_REJECTED, error.message);
35
+ }
36
+ if (error instanceof greptime_errors_1.TelemetryQueryTimeoutError) {
37
+ return new telemetry_query_errors_1.TelemetryHttpError(telemetry_query_errors_1.TELEMETRY_ERROR_REASONS.QUERY_TIMEOUT, error.message, {
38
+ timeoutMs: error.timeoutMs,
39
+ });
40
+ }
41
+ if (error instanceof greptime_errors_1.TelemetryNotConfiguredError) {
42
+ return new telemetry_query_errors_1.TelemetryHttpError(telemetry_query_errors_1.TELEMETRY_ERROR_REASONS.NOT_CONFIGURED, error.message);
43
+ }
44
+ if (error instanceof greptime_errors_1.TelemetryQueryFailedError) {
45
+ return error.origin === 'server'
46
+ ? new telemetry_query_errors_1.TelemetryHttpError(telemetry_query_errors_1.TELEMETRY_ERROR_REASONS.QUERY_FAILED, error.message, {
47
+ ...(error.code ? { sqlState: error.code } : {}),
48
+ })
49
+ : new telemetry_query_errors_1.TelemetryHttpError(telemetry_query_errors_1.TELEMETRY_ERROR_REASONS.UNREACHABLE, 'The telemetry store did not answer.', {
50
+ cause: error.message,
51
+ });
52
+ }
53
+ return error;
54
+ }
55
+ //# sourceMappingURL=telemetry-availability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-availability.js","sourceRoot":"","sources":["../../../src/telemetry/query/telemetry-availability.ts"],"names":[],"mappings":";;AAqBA,wDAqBC;AAMD,oDA4BC;AA1ED,iEAKqC;AAErC,2CAAwD;AACxD,qEAAuF;AAEvF,gFAAgF;AAChF,gEAAgE;AAChE,gFAAgF;AAChF,EAAE;AACF,4EAA4E;AAC5E,8DAA8D;AAC9D,gFAAgF;AAEhF,uFAAuF;AAChF,KAAK,UAAU,sBAAsB,CAC1C,QAAwB,EACxB,QAAkC;IAElC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC;QAC7B,MAAM,IAAI,2CAAkB,CAC1B,gDAAuB,CAAC,cAAc,EACtC,uDAAuD,CACxD,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC;IAE1C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,2CAAkB,CAC1B,gDAAuB,CAAC,QAAQ,EAChC,kFAAkF,CACnF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,KAAc;IACjD,IAAI,KAAK,YAAY,2CAAkB;QAAE,OAAO,KAAK,CAAC;IAEtD,IAAI,KAAK,YAAY,qCAAyB,IAAI,KAAK,YAAY,8CAA4B,EAAE,CAAC;QAChG,OAAO,IAAI,2CAAkB,CAAC,gDAAuB,CAAC,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACvF,CAAC;IAED,IAAI,KAAK,YAAY,4CAA0B,EAAE,CAAC;QAChD,OAAO,IAAI,2CAAkB,CAAC,gDAAuB,CAAC,aAAa,EAAE,KAAK,CAAC,OAAO,EAAE;YAClF,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK,YAAY,6CAA2B,EAAE,CAAC;QACjD,OAAO,IAAI,2CAAkB,CAAC,gDAAuB,CAAC,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACvF,CAAC;IAED,IAAI,KAAK,YAAY,2CAAyB,EAAE,CAAC;QAC/C,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;YAC9B,CAAC,CAAC,IAAI,2CAAkB,CAAC,gDAAuB,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,EAAE;gBAC1E,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAChD,CAAC;YACJ,CAAC,CAAC,IAAI,2CAAkB,CAAC,gDAAuB,CAAC,WAAW,EAAE,qCAAqC,EAAE;gBACjG,KAAK,EAAE,KAAK,CAAC,OAAO;aACrB,CAAC,CAAC;IACT,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { HttpException } from '@nestjs/common';
2
+ /**
3
+ * The `details.reason` of every telemetry error (see the table above).
4
+ *
5
+ * @stability stable
6
+ */
7
+ export declare const TELEMETRY_ERROR_REASONS: {
8
+ /** 503: no telemetry store is configured. */
9
+ readonly NOT_CONFIGURED: "TELEMETRY_NOT_CONFIGURED";
10
+ /** 503: the store did not answer. */
11
+ readonly UNREACHABLE: "TELEMETRY_UNREACHABLE";
12
+ /** 409: `telemetry.enabled` is off. */
13
+ readonly DISABLED: "TELEMETRY_DISABLED";
14
+ /** 400: the SQL guard refused the statement. */
15
+ readonly QUERY_REJECTED: "TELEMETRY_QUERY_REJECTED";
16
+ /** 400: the store refused the statement. */
17
+ readonly QUERY_FAILED: "TELEMETRY_QUERY_FAILED";
18
+ /** 504: the statement timed out. */
19
+ readonly QUERY_TIMEOUT: "TELEMETRY_QUERY_TIMEOUT";
20
+ /** 409: `telemetry.assistant.enabled` is off. */
21
+ readonly ASSISTANT_DISABLED: "TELEMETRY_ASSISTANT_DISABLED";
22
+ /** 409: no assistant provider or model is selected. */
23
+ readonly ASSISTANT_NOT_CONFIGURED: "TELEMETRY_ASSISTANT_NOT_CONFIGURED";
24
+ /** 400: a dashboard filter value was not seen in the range. */
25
+ readonly DASHBOARD_BAD_FILTER: "TELEMETRY_DASHBOARD_BAD_FILTER";
26
+ /** 400: the events `cursor` is malformed. */
27
+ readonly DASHBOARD_BAD_CURSOR: "TELEMETRY_DASHBOARD_BAD_CURSOR";
28
+ };
29
+ /**
30
+ * One of {@link TELEMETRY_ERROR_REASONS}.
31
+ *
32
+ * @stability stable
33
+ */
34
+ export type TelemetryErrorReason = (typeof TELEMETRY_ERROR_REASONS)[keyof typeof TELEMETRY_ERROR_REASONS];
35
+ /**
36
+ * A telemetry failure with its reason in `details.reason`; the HTTP status
37
+ * follows from the reason.
38
+ *
39
+ * @stability stable
40
+ */
41
+ export declare class TelemetryHttpError extends HttpException {
42
+ /** Why it failed. */
43
+ readonly reason: TelemetryErrorReason;
44
+ constructor(
45
+ /** Why it failed. */
46
+ reason: TelemetryErrorReason, message: string, details?: Record<string, unknown>);
47
+ }
48
+ //# sourceMappingURL=telemetry-query.errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-query.errors.d.ts","sourceRoot":"","sources":["../../../src/telemetry/query/telemetry-query.errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAc,MAAM,gBAAgB,CAAC;AA0C3D;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;IAClC,6CAA6C;;IAE7C,qCAAqC;;IAErC,uCAAuC;;IAEvC,gDAAgD;;IAEhD,4CAA4C;;IAE5C,oCAAoC;;IAEpC,iDAAiD;;IAEjD,uDAAuD;;IAEvD,+DAA+D;;IAE/D,6CAA6C;;CAErC,CAAC;AAEX;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,OAAO,uBAAuB,CAAC,CAAC;AAe1G;;;;;GAKG;AACH,qBAAa,kBAAmB,SAAQ,aAAa;IAEjD,qBAAqB;IACrB,QAAQ,CAAC,MAAM,EAAE,oBAAoB;;IADrC,qBAAqB;IACZ,MAAM,EAAE,oBAAoB,EACrC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;CAKxC"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TelemetryHttpError = exports.TELEMETRY_ERROR_REASONS = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ // =============================================================================
6
+ // HTTP failures of the telemetry explorer (issue #535, epic #528)
7
+ // =============================================================================
8
+ //
9
+ // The error envelope derives `code` from the status (docs/API.md), so the
10
+ // machine-readable reason travels in `details.reason`, exactly like
11
+ // `AI_DISABLED`. One status per reason:
12
+ //
13
+ // TELEMETRY_NOT_CONFIGURED 503 no telemetry store in this deployment (the
14
+ // overlay is not deployed). 503 rather than
15
+ // 404: the ROUTE exists, the service behind
16
+ // it does not — and `GET …/status` already
17
+ // reports `configured: false` with a 200.
18
+ // TELEMETRY_UNREACHABLE 503 configured, but the store did not answer.
19
+ // TELEMETRY_DISABLED 409 `telemetry.enabled` is off — a state an
20
+ // administrator can change (same status the
21
+ // AI kill switch's admin-facing errors use for
22
+ // "the configuration forbids this now").
23
+ // TELEMETRY_QUERY_REJECTED 400 the SQL guard refused the statement.
24
+ // TELEMETRY_QUERY_FAILED 400 GreptimeDB refused or failed the statement
25
+ // (syntax, unknown column, not permitted).
26
+ // The message is the server's own: it is
27
+ // about the caller's SQL and carries no
28
+ // credential.
29
+ // TELEMETRY_QUERY_TIMEOUT 504 the statement outran
30
+ // `telemetry.query.timeoutSeconds`.
31
+ //
32
+ // The assistant (#536) adds two, both 409 for the same reason as DISABLED
33
+ // (an administrator can change the configuration that forbids this):
34
+ //
35
+ // TELEMETRY_ASSISTANT_DISABLED 409 `telemetry.assistant.enabled` is off.
36
+ // TELEMETRY_ASSISTANT_NOT_CONFIGURED 409 no `assistant.provider`/`modelId`.
37
+ //
38
+ // The dashboard (#577) adds two request errors:
39
+ //
40
+ // TELEMETRY_DASHBOARD_BAD_FILTER 400 `service`/`instance` is not among the
41
+ // values seen in the requested range.
42
+ // TELEMETRY_DASHBOARD_BAD_CURSOR 400 the events `cursor` is malformed.
43
+ // =============================================================================
44
+ /**
45
+ * The `details.reason` of every telemetry error (see the table above).
46
+ *
47
+ * @stability stable
48
+ */
49
+ exports.TELEMETRY_ERROR_REASONS = {
50
+ /** 503: no telemetry store is configured. */
51
+ NOT_CONFIGURED: 'TELEMETRY_NOT_CONFIGURED',
52
+ /** 503: the store did not answer. */
53
+ UNREACHABLE: 'TELEMETRY_UNREACHABLE',
54
+ /** 409: `telemetry.enabled` is off. */
55
+ DISABLED: 'TELEMETRY_DISABLED',
56
+ /** 400: the SQL guard refused the statement. */
57
+ QUERY_REJECTED: 'TELEMETRY_QUERY_REJECTED',
58
+ /** 400: the store refused the statement. */
59
+ QUERY_FAILED: 'TELEMETRY_QUERY_FAILED',
60
+ /** 504: the statement timed out. */
61
+ QUERY_TIMEOUT: 'TELEMETRY_QUERY_TIMEOUT',
62
+ /** 409: `telemetry.assistant.enabled` is off. */
63
+ ASSISTANT_DISABLED: 'TELEMETRY_ASSISTANT_DISABLED',
64
+ /** 409: no assistant provider or model is selected. */
65
+ ASSISTANT_NOT_CONFIGURED: 'TELEMETRY_ASSISTANT_NOT_CONFIGURED',
66
+ /** 400: a dashboard filter value was not seen in the range. */
67
+ DASHBOARD_BAD_FILTER: 'TELEMETRY_DASHBOARD_BAD_FILTER',
68
+ /** 400: the events `cursor` is malformed. */
69
+ DASHBOARD_BAD_CURSOR: 'TELEMETRY_DASHBOARD_BAD_CURSOR',
70
+ };
71
+ const STATUS = {
72
+ TELEMETRY_NOT_CONFIGURED: common_1.HttpStatus.SERVICE_UNAVAILABLE,
73
+ TELEMETRY_UNREACHABLE: common_1.HttpStatus.SERVICE_UNAVAILABLE,
74
+ TELEMETRY_DISABLED: common_1.HttpStatus.CONFLICT,
75
+ TELEMETRY_QUERY_REJECTED: common_1.HttpStatus.BAD_REQUEST,
76
+ TELEMETRY_QUERY_FAILED: common_1.HttpStatus.BAD_REQUEST,
77
+ TELEMETRY_QUERY_TIMEOUT: common_1.HttpStatus.GATEWAY_TIMEOUT,
78
+ TELEMETRY_ASSISTANT_DISABLED: common_1.HttpStatus.CONFLICT,
79
+ TELEMETRY_ASSISTANT_NOT_CONFIGURED: common_1.HttpStatus.CONFLICT,
80
+ TELEMETRY_DASHBOARD_BAD_FILTER: common_1.HttpStatus.BAD_REQUEST,
81
+ TELEMETRY_DASHBOARD_BAD_CURSOR: common_1.HttpStatus.BAD_REQUEST,
82
+ };
83
+ /**
84
+ * A telemetry failure with its reason in `details.reason`; the HTTP status
85
+ * follows from the reason.
86
+ *
87
+ * @stability stable
88
+ */
89
+ class TelemetryHttpError extends common_1.HttpException {
90
+ reason;
91
+ constructor(
92
+ /** Why it failed. */
93
+ reason, message, details = {}) {
94
+ // `reason` last, so a caller-supplied detail can never contradict it.
95
+ super({ message, details: { ...details, reason } }, STATUS[reason]);
96
+ this.reason = reason;
97
+ }
98
+ }
99
+ exports.TelemetryHttpError = TelemetryHttpError;
100
+ //# sourceMappingURL=telemetry-query.errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-query.errors.js","sourceRoot":"","sources":["../../../src/telemetry/query/telemetry-query.errors.ts"],"names":[],"mappings":";;;AAAA,2CAA2D;AAE3D,gFAAgF;AAChF,kEAAkE;AAClE,gFAAgF;AAChF,EAAE;AACF,0EAA0E;AAC1E,oEAAoE;AACpE,wCAAwC;AACxC,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,6EAA6E;AAC7E,4EAA4E;AAC5E,2EAA2E;AAC3E,6EAA6E;AAC7E,2EAA2E;AAC3E,6EAA6E;AAC7E,gFAAgF;AAChF,0EAA0E;AAC1E,wEAAwE;AACxE,8EAA8E;AAC9E,4EAA4E;AAC5E,0EAA0E;AAC1E,yEAAyE;AACzE,+CAA+C;AAC/C,wDAAwD;AACxD,qEAAqE;AACrE,EAAE;AACF,0EAA0E;AAC1E,qEAAqE;AACrE,EAAE;AACF,mFAAmF;AACnF,gFAAgF;AAChF,EAAE;AACF,gDAAgD;AAChD,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,2EAA2E;AAC3E,gFAAgF;AAEhF;;;;GAIG;AACU,QAAA,uBAAuB,GAAG;IACrC,6CAA6C;IAC7C,cAAc,EAAE,0BAA0B;IAC1C,qCAAqC;IACrC,WAAW,EAAE,uBAAuB;IACpC,uCAAuC;IACvC,QAAQ,EAAE,oBAAoB;IAC9B,gDAAgD;IAChD,cAAc,EAAE,0BAA0B;IAC1C,4CAA4C;IAC5C,YAAY,EAAE,wBAAwB;IACtC,oCAAoC;IACpC,aAAa,EAAE,yBAAyB;IACxC,iDAAiD;IACjD,kBAAkB,EAAE,8BAA8B;IAClD,uDAAuD;IACvD,wBAAwB,EAAE,oCAAoC;IAC9D,+DAA+D;IAC/D,oBAAoB,EAAE,gCAAgC;IACtD,6CAA6C;IAC7C,oBAAoB,EAAE,gCAAgC;CAC9C,CAAC;AASX,MAAM,MAAM,GAA6C;IACvD,wBAAwB,EAAE,mBAAU,CAAC,mBAAmB;IACxD,qBAAqB,EAAE,mBAAU,CAAC,mBAAmB;IACrD,kBAAkB,EAAE,mBAAU,CAAC,QAAQ;IACvC,wBAAwB,EAAE,mBAAU,CAAC,WAAW;IAChD,sBAAsB,EAAE,mBAAU,CAAC,WAAW;IAC9C,uBAAuB,EAAE,mBAAU,CAAC,eAAe;IACnD,4BAA4B,EAAE,mBAAU,CAAC,QAAQ;IACjD,kCAAkC,EAAE,mBAAU,CAAC,QAAQ;IACvD,8BAA8B,EAAE,mBAAU,CAAC,WAAW;IACtD,8BAA8B,EAAE,mBAAU,CAAC,WAAW;CACvD,CAAC;AAEF;;;;;GAKG;AACH,MAAa,kBAAmB,SAAQ,sBAAa;IAGxC;IAFX;IACE,qBAAqB;IACZ,MAA4B,EACrC,OAAe,EACf,UAAmC,EAAE;QAErC,sEAAsE;QACtE,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAL3D,WAAM,GAAN,MAAM,CAAsB;IAMvC,CAAC;CACF;AAVD,gDAUC"}
@@ -0,0 +1,57 @@
1
+ import type { TelemetryColumnType, TelemetryQueryRunResult } from '../dto/telemetry-query.dto';
2
+ import { GreptimeClient } from '../greptime/greptime.client';
3
+ import { type TelemetryAuditSink } from '../ports';
4
+ import { TelemetrySettingsService } from '../telemetry-settings.service';
5
+ /**
6
+ * Who runs a statement; chooses the audit action.
7
+ *
8
+ * @stability experimental
9
+ */
10
+ export type TelemetryQuerySource = 'explorer' | 'assistant' | 'export';
11
+ /**
12
+ * How `TelemetryQueryService.run` runs one statement.
13
+ *
14
+ * @stability experimental
15
+ */
16
+ export interface TelemetryQueryRunOptions {
17
+ /** Row cap for this call; clamped to `telemetry.query.maxRows`, which is also the default. */
18
+ maxRows?: number;
19
+ /** Who is asking. Chooses the audit action. Default `explorer`. */
20
+ source?: TelemetryQuerySource;
21
+ /** Abandons the statement when aborted (the assistant's client went away, #536). */
22
+ signal?: AbortSignal;
23
+ }
24
+ /** Audit `action` per source. */
25
+ export declare const TELEMETRY_QUERY_AUDIT_ACTIONS: Record<TelemetryQuerySource, string>;
26
+ /** How much of the SQL text an audit row keeps. */
27
+ export declare const TELEMETRY_AUDIT_SQL_MAX = 4000;
28
+ export declare function columnTypeName(dataTypeID: number): TelemetryColumnType;
29
+ /**
30
+ * A wire value as something `JSON.stringify` reproduces faithfully:
31
+ * Buffer → base64, bigint → decimal string, Date → ISO string, non-finite
32
+ * number → its name (JSON would silently turn it into null), arrays and
33
+ * plain objects recursively. `int8`/`numeric`/timestamps already arrive as
34
+ * strings from `GreptimeClient` and stay that way.
35
+ */
36
+ export declare function toJsonSafe(value: unknown): unknown;
37
+ /**
38
+ * The one entry point for caller-supplied SQL (the explorer, the export and
39
+ * the assistant): the SQL guard, the row cap, the timeout and an audit row.
40
+ * Exported by `TelemetryModule`.
41
+ *
42
+ * @stability experimental
43
+ */
44
+ export declare class TelemetryQueryService {
45
+ private readonly greptime;
46
+ private readonly settings;
47
+ private readonly auditSink;
48
+ private readonly logger;
49
+ constructor(greptime: GreptimeClient, settings: TelemetrySettingsService, auditSink: TelemetryAuditSink);
50
+ /**
51
+ * Runs one read-only statement for `userId`. Throws `TelemetryHttpError`
52
+ * (see `telemetry-query.errors.ts`) for every expected failure.
53
+ */
54
+ run(userId: string, sql: string, opts?: TelemetryQueryRunOptions): Promise<TelemetryQueryRunResult>;
55
+ private audit;
56
+ }
57
+ //# sourceMappingURL=telemetry-query.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-query.service.d.ts","sourceRoot":"","sources":["../../../src/telemetry/query/telemetry-query.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAmCzE;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEvE;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,8FAA8F;IAC9F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,oFAAoF;IACpF,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,iCAAiC;AACjC,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAI9E,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,uBAAuB,OAAQ,CAAC;AAsB7C,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,CAEtE;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAuBlD;AAED;;;;;;GAMG;AACH,qBACa,qBAAqB;IAI9B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACK,OAAO,CAAC,QAAQ,CAAC,SAAS;IAL1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0C;gBAG9C,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,wBAAwB,EACJ,SAAS,EAAE,kBAAkB;IAG9E;;;OAGG;IACG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,wBAA6B,GAAG,OAAO,CAAC,uBAAuB,CAAC;YAuE/F,KAAK;CAmBpB"}