@adonis-agora/telescope 0.4.0 → 0.5.0

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 (195) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/configure.d.ts.map +1 -1
  3. package/dist/configure.js +6 -0
  4. package/dist/configure.js.map +1 -1
  5. package/dist/providers/telescope_ai_provider.d.ts +9 -1
  6. package/dist/providers/telescope_ai_provider.d.ts.map +1 -1
  7. package/dist/providers/telescope_ai_provider.js +22 -2
  8. package/dist/providers/telescope_ai_provider.js.map +1 -1
  9. package/dist/providers/telescope_alerts_provider.d.ts +1 -0
  10. package/dist/providers/telescope_alerts_provider.d.ts.map +1 -1
  11. package/dist/providers/telescope_alerts_provider.js +37 -1
  12. package/dist/providers/telescope_alerts_provider.js.map +1 -1
  13. package/dist/providers/telescope_mcp_provider.d.ts +26 -0
  14. package/dist/providers/telescope_mcp_provider.d.ts.map +1 -0
  15. package/dist/providers/telescope_mcp_provider.js +114 -0
  16. package/dist/providers/telescope_mcp_provider.js.map +1 -0
  17. package/dist/providers/telescope_provider.d.ts +8 -0
  18. package/dist/providers/telescope_provider.d.ts.map +1 -1
  19. package/dist/providers/telescope_provider.js +56 -1
  20. package/dist/providers/telescope_provider.js.map +1 -1
  21. package/dist/providers/telescope_ui_provider.d.ts +2 -0
  22. package/dist/providers/telescope_ui_provider.d.ts.map +1 -1
  23. package/dist/providers/telescope_ui_provider.js +106 -22
  24. package/dist/providers/telescope_ui_provider.js.map +1 -1
  25. package/dist/providers/telescope_watchers_provider.d.ts +13 -2
  26. package/dist/providers/telescope_watchers_provider.d.ts.map +1 -1
  27. package/dist/providers/telescope_watchers_provider.js +57 -7
  28. package/dist/providers/telescope_watchers_provider.js.map +1 -1
  29. package/dist/src/ai/define_config.d.ts +39 -7
  30. package/dist/src/ai/define_config.d.ts.map +1 -1
  31. package/dist/src/ai/define_config.js +14 -4
  32. package/dist/src/ai/define_config.js.map +1 -1
  33. package/dist/src/ai/diagnosis_coordinator.d.ts +106 -0
  34. package/dist/src/ai/diagnosis_coordinator.d.ts.map +1 -0
  35. package/dist/src/ai/diagnosis_coordinator.js +143 -0
  36. package/dist/src/ai/diagnosis_coordinator.js.map +1 -0
  37. package/dist/src/ai/factory.d.ts +8 -5
  38. package/dist/src/ai/factory.d.ts.map +1 -1
  39. package/dist/src/ai/factory.js +20 -8
  40. package/dist/src/ai/factory.js.map +1 -1
  41. package/dist/src/ai/index.d.ts +3 -1
  42. package/dist/src/ai/index.d.ts.map +1 -1
  43. package/dist/src/ai/index.js +3 -1
  44. package/dist/src/ai/index.js.map +1 -1
  45. package/dist/src/alerts/alert_rule.d.ts +79 -11
  46. package/dist/src/alerts/alert_rule.d.ts.map +1 -1
  47. package/dist/src/alerts/alerter.d.ts +11 -1
  48. package/dist/src/alerts/alerter.d.ts.map +1 -1
  49. package/dist/src/alerts/alerter.js +21 -1
  50. package/dist/src/alerts/alerter.js.map +1 -1
  51. package/dist/src/alerts/alerter_service.d.ts +103 -0
  52. package/dist/src/alerts/alerter_service.d.ts.map +1 -0
  53. package/dist/src/alerts/alerter_service.js +215 -0
  54. package/dist/src/alerts/alerter_service.js.map +1 -0
  55. package/dist/src/alerts/index.d.ts +4 -2
  56. package/dist/src/alerts/index.d.ts.map +1 -1
  57. package/dist/src/alerts/index.js +4 -2
  58. package/dist/src/alerts/index.js.map +1 -1
  59. package/dist/src/alerts/slack_format.d.ts.map +1 -1
  60. package/dist/src/alerts/slack_format.js +35 -2
  61. package/dist/src/alerts/slack_format.js.map +1 -1
  62. package/dist/src/client_errors/config.d.ts +66 -0
  63. package/dist/src/client_errors/config.d.ts.map +1 -0
  64. package/dist/src/client_errors/config.js +17 -0
  65. package/dist/src/client_errors/config.js.map +1 -0
  66. package/dist/src/client_errors/index.d.ts +5 -0
  67. package/dist/src/client_errors/index.d.ts.map +1 -0
  68. package/dist/src/client_errors/index.js +5 -0
  69. package/dist/src/client_errors/index.js.map +1 -0
  70. package/dist/src/client_errors/ingestor.d.ts +87 -0
  71. package/dist/src/client_errors/ingestor.d.ts.map +1 -0
  72. package/dist/src/client_errors/ingestor.js +135 -0
  73. package/dist/src/client_errors/ingestor.js.map +1 -0
  74. package/dist/src/client_errors/rate_limiter.d.ts +53 -0
  75. package/dist/src/client_errors/rate_limiter.d.ts.map +1 -0
  76. package/dist/src/client_errors/rate_limiter.js +83 -0
  77. package/dist/src/client_errors/rate_limiter.js.map +1 -0
  78. package/dist/src/client_errors/validation.d.ts +62 -0
  79. package/dist/src/client_errors/validation.d.ts.map +1 -0
  80. package/dist/src/client_errors/validation.js +109 -0
  81. package/dist/src/client_errors/validation.js.map +1 -0
  82. package/dist/src/define_config.d.ts +120 -0
  83. package/dist/src/define_config.d.ts.map +1 -1
  84. package/dist/src/define_config.js +41 -0
  85. package/dist/src/define_config.js.map +1 -1
  86. package/dist/src/entry.d.ts +20 -0
  87. package/dist/src/entry.d.ts.map +1 -1
  88. package/dist/src/entry.js +20 -0
  89. package/dist/src/entry.js.map +1 -1
  90. package/dist/src/index.d.ts +16 -3
  91. package/dist/src/index.d.ts.map +1 -1
  92. package/dist/src/index.js +15 -2
  93. package/dist/src/index.js.map +1 -1
  94. package/dist/src/mcp/define_config.d.ts +57 -0
  95. package/dist/src/mcp/define_config.d.ts.map +1 -0
  96. package/dist/src/mcp/define_config.js +35 -0
  97. package/dist/src/mcp/define_config.js.map +1 -0
  98. package/dist/src/mcp/index.d.ts +7 -0
  99. package/dist/src/mcp/index.d.ts.map +1 -0
  100. package/dist/src/mcp/index.js +7 -0
  101. package/dist/src/mcp/index.js.map +1 -0
  102. package/dist/src/mcp/server.d.ts +89 -0
  103. package/dist/src/mcp/server.d.ts.map +1 -0
  104. package/dist/src/mcp/server.js +279 -0
  105. package/dist/src/mcp/server.js.map +1 -0
  106. package/dist/src/metrics/pulse.d.ts +158 -0
  107. package/dist/src/metrics/pulse.d.ts.map +1 -0
  108. package/dist/src/metrics/pulse.js +414 -0
  109. package/dist/src/metrics/pulse.js.map +1 -0
  110. package/dist/src/overload_guard.d.ts +77 -0
  111. package/dist/src/overload_guard.d.ts.map +1 -0
  112. package/dist/src/overload_guard.js +134 -0
  113. package/dist/src/overload_guard.js.map +1 -0
  114. package/dist/src/pruner.d.ts +93 -0
  115. package/dist/src/pruner.d.ts.map +1 -0
  116. package/dist/src/pruner.js +120 -0
  117. package/dist/src/pruner.js.map +1 -0
  118. package/dist/src/registry.d.ts +26 -0
  119. package/dist/src/registry.d.ts.map +1 -1
  120. package/dist/src/registry.js +19 -0
  121. package/dist/src/registry.js.map +1 -1
  122. package/dist/src/service.d.ts +16 -1
  123. package/dist/src/service.d.ts.map +1 -1
  124. package/dist/src/service.js +19 -1
  125. package/dist/src/service.js.map +1 -1
  126. package/dist/src/telescope_middleware.d.ts.map +1 -1
  127. package/dist/src/telescope_middleware.js +3 -1
  128. package/dist/src/telescope_middleware.js.map +1 -1
  129. package/dist/src/ui/api.d.ts +9 -1
  130. package/dist/src/ui/api.d.ts.map +1 -1
  131. package/dist/src/ui/api.js +23 -1
  132. package/dist/src/ui/api.js.map +1 -1
  133. package/dist/src/ui/auth.d.ts +112 -0
  134. package/dist/src/ui/auth.d.ts.map +1 -0
  135. package/dist/src/ui/auth.js +130 -0
  136. package/dist/src/ui/auth.js.map +1 -0
  137. package/dist/src/ui/dashboard_auth.d.ts +34 -0
  138. package/dist/src/ui/dashboard_auth.d.ts.map +1 -0
  139. package/dist/src/ui/dashboard_auth.js +57 -0
  140. package/dist/src/ui/dashboard_auth.js.map +1 -0
  141. package/dist/src/ui/define_config.d.ts +15 -0
  142. package/dist/src/ui/define_config.d.ts.map +1 -1
  143. package/dist/src/ui/define_config.js +4 -0
  144. package/dist/src/ui/define_config.js.map +1 -1
  145. package/dist/src/ui/index.d.ts +7 -1
  146. package/dist/src/ui/index.d.ts.map +1 -1
  147. package/dist/src/ui/index.js +6 -1
  148. package/dist/src/ui/index.js.map +1 -1
  149. package/dist/src/ui/login_page.d.ts +23 -0
  150. package/dist/src/ui/login_page.d.ts.map +1 -0
  151. package/dist/src/ui/login_page.js +170 -0
  152. package/dist/src/ui/login_page.js.map +1 -0
  153. package/dist/src/ui/session_cookie.d.ts +42 -0
  154. package/dist/src/ui/session_cookie.d.ts.map +1 -0
  155. package/dist/src/ui/session_cookie.js +97 -0
  156. package/dist/src/ui/session_cookie.js.map +1 -0
  157. package/dist/src/watchers/define_config.d.ts +115 -12
  158. package/dist/src/watchers/define_config.d.ts.map +1 -1
  159. package/dist/src/watchers/define_config.js +48 -11
  160. package/dist/src/watchers/define_config.js.map +1 -1
  161. package/dist/src/watchers/http_client_watcher.d.ts +91 -31
  162. package/dist/src/watchers/http_client_watcher.d.ts.map +1 -1
  163. package/dist/src/watchers/http_client_watcher.js +161 -53
  164. package/dist/src/watchers/http_client_watcher.js.map +1 -1
  165. package/dist/src/watchers/index.d.ts +9 -5
  166. package/dist/src/watchers/index.d.ts.map +1 -1
  167. package/dist/src/watchers/index.js +6 -2
  168. package/dist/src/watchers/index.js.map +1 -1
  169. package/dist/src/watchers/lucid_query_watcher.d.ts +20 -2
  170. package/dist/src/watchers/lucid_query_watcher.d.ts.map +1 -1
  171. package/dist/src/watchers/lucid_query_watcher.js +44 -10
  172. package/dist/src/watchers/lucid_query_watcher.js.map +1 -1
  173. package/dist/src/watchers/profiling_watcher.d.ts +144 -0
  174. package/dist/src/watchers/profiling_watcher.d.ts.map +1 -0
  175. package/dist/src/watchers/profiling_watcher.js +231 -0
  176. package/dist/src/watchers/profiling_watcher.js.map +1 -0
  177. package/dist/src/watchers/query_family_hash.d.ts +7 -2
  178. package/dist/src/watchers/query_family_hash.d.ts.map +1 -1
  179. package/dist/src/watchers/query_family_hash.js +8 -3
  180. package/dist/src/watchers/query_family_hash.js.map +1 -1
  181. package/dist/src/watchers/record.d.ts.map +1 -1
  182. package/dist/src/watchers/record.js +4 -0
  183. package/dist/src/watchers/record.js.map +1 -1
  184. package/dist/src/watchers/schedule_watcher.d.ts +143 -0
  185. package/dist/src/watchers/schedule_watcher.d.ts.map +1 -0
  186. package/dist/src/watchers/schedule_watcher.js +195 -0
  187. package/dist/src/watchers/schedule_watcher.js.map +1 -0
  188. package/dist/stubs/config/telescope.stub +0 -65
  189. package/dist/stubs/config/telescope_ai.stub +0 -36
  190. package/dist/stubs/config/telescope_alerts.stub +0 -47
  191. package/dist/stubs/config/telescope_mcp.stub +0 -0
  192. package/dist/stubs/config/telescope_ui.stub +0 -53
  193. package/dist/stubs/config/telescope_watchers.stub +0 -41
  194. package/dist/stubs/database/migrations/create_telescope_entries_table.stub +2 -2
  195. package/package.json +12 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @adonis-agora/telescope
2
2
 
3
+ ## 0.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Entry pruner, event-loop overload guard, client-error ingestion; Pulse health rollup; alerter pipeline; outgoing HTTP-client watcher; MCP server endpoint; AI diagnosis coordinator; Lucid query watcher; observability UI dashboard (@adonis-agora/telescope-ui); dashboard session auth (login screen); profiling + schedule watchers.
8
+
9
+ ### Patch Changes
10
+
11
+ - Export the `configure` hook from the package root so `node ace configure @adonis-agora/telescope` resolves it, and de-backtick the config stub comments that broke the tempura stub renderer.
12
+
3
13
  ## 0.3.3
4
14
 
5
15
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../configure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,mCAAmC,CAAC;AAoC/D;;;;;;;;;;;;GAYG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,SAAS,iBAwCjD"}
1
+ {"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../configure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,mCAAmC,CAAC;AA0C/D;;;;;;;;;;;;GAYG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,SAAS,iBAwCjD"}
package/dist/configure.js CHANGED
@@ -28,6 +28,12 @@ const FEATURES = [
28
28
  provider: '@adonis-agora/telescope/alerts_provider',
29
29
  configStub: 'config/telescope_alerts.stub',
30
30
  },
31
+ {
32
+ name: 'mcp',
33
+ message: 'MCP — expose telemetry to a coding agent over the Model Context Protocol',
34
+ provider: '@adonis-agora/telescope/mcp_provider',
35
+ configStub: 'config/telescope_mcp.stub',
36
+ },
31
37
  ];
32
38
  /**
33
39
  * `node ace configure @adonis-agora/telescope` — auto-wires the package:
@@ -1 +1 @@
1
- {"version":3,"file":"configure.js","sourceRoot":"","sources":["../configure.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;;GAGG;AACH,MAAM,QAAQ,GAAG;IACf;QACE,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,sEAAsE;QAC/E,QAAQ,EAAE,2CAA2C;QACrD,UAAU,EAAE,gCAAgC;KAC7C;IACD;QACE,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,6CAA6C;QACtD,QAAQ,EAAE,qCAAqC;QAC/C,UAAU,EAAE,0BAA0B;KACvC;IACD;QACE,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,yCAAyC;QAClD,QAAQ,EAAE,qCAAqC;QAC/C,UAAU,EAAE,0BAA0B;KACvC;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,2DAA2D;QACpE,QAAQ,EAAE,yCAAyC;QACnD,UAAU,EAAE,8BAA8B;KAC3C;CACO,CAAC;AAIX;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAkB;IAChD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;IAEhD,WAAW;IACX,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE;QACrC,MAAM,CAAC,WAAW,CAAC,4CAA4C,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,EAAE;QAC1C,EAAE,IAAI,EAAE,8CAA8C,EAAE;KACzD,CAAC,CAAC;IAEH,MAAM,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE,uBAAuB,EAAE,EAAE,CAAC,CAAC;IACrE,MAAM,QAAQ,CAAC,aAAa,CAC1B,SAAS,EACT,yDAAyD,EACzD,EAAE,CACH,CAAC;IAEF,wDAAwD;IACxD,IAAI,QAAuB,CAAC;IAC5B,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CACtC,kDAAkD,EAClD,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAC9E,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,kFAAkF;QAClF,yEAAyE;QACzE,QAAQ,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,SAAS;QAE/C,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE;YACrC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,MAAM,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"configure.js","sourceRoot":"","sources":["../configure.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;;GAGG;AACH,MAAM,QAAQ,GAAG;IACf;QACE,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,sEAAsE;QAC/E,QAAQ,EAAE,2CAA2C;QACrD,UAAU,EAAE,gCAAgC;KAC7C;IACD;QACE,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,6CAA6C;QACtD,QAAQ,EAAE,qCAAqC;QAC/C,UAAU,EAAE,0BAA0B;KACvC;IACD;QACE,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,yCAAyC;QAClD,QAAQ,EAAE,qCAAqC;QAC/C,UAAU,EAAE,0BAA0B;KACvC;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,2DAA2D;QACpE,QAAQ,EAAE,yCAAyC;QACnD,UAAU,EAAE,8BAA8B;KAC3C;IACD;QACE,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,0EAA0E;QACnF,QAAQ,EAAE,sCAAsC;QAChD,UAAU,EAAE,2BAA2B;KACxC;CACO,CAAC;AAIX;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAkB;IAChD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;IAEhD,WAAW;IACX,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE;QACrC,MAAM,CAAC,WAAW,CAAC,4CAA4C,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,EAAE;QAC1C,EAAE,IAAI,EAAE,8CAA8C,EAAE;KACzD,CAAC,CAAC;IAEH,MAAM,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE,uBAAuB,EAAE,EAAE,CAAC,CAAC;IACrE,MAAM,QAAQ,CAAC,aAAa,CAC1B,SAAS,EACT,yDAAyD,EACzD,EAAE,CACH,CAAC;IAEF,wDAAwD;IACxD,IAAI,QAAuB,CAAC;IAC5B,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CACtC,kDAAkD,EAClD,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAC9E,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,kFAAkF;QAClF,yEAAyE;QACzE,QAAQ,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,SAAS;QAE/C,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE;YACrC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,MAAM,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
@@ -8,13 +8,21 @@ import type { ApplicationService } from '@adonisjs/core/types';
8
8
  * controllers / the dashboard can `inject()` it. When AI is disabled or no API
9
9
  * key resolved, a disabled diagnoser is bound (its `diagnose` is a no-op
10
10
  * returning `null`), so consumers can inject unconditionally.
11
+ * - `register()` also constructs a {@link DiagnosisCoordinator} (wrapping the
12
+ * resolved diagnoser, or a `null` diagnoser when AI is off) and publishes it into
13
+ * the core runtime slot. That single seam is what the MCP `diagnose_exception`
14
+ * tool and the alerter read (no DI) to attach probable-cause analysis. Publishing
15
+ * in `register()` — before ANY provider's `boot()` — guarantees the coordinator
16
+ * is in the slot when the MCP / alerts providers boot, regardless of order.
11
17
  *
12
- * Diagnosis never throws into the app: a model or parse failure resolves to `null`.
18
+ * Diagnosis never throws into the app: a model or parse failure resolves to `null`,
19
+ * and the coordinator additionally timeout-bounds and swallows every failure.
13
20
  */
14
21
  export default class TelescopeAiProvider {
15
22
  protected app: ApplicationService;
16
23
  constructor(app: ApplicationService);
17
24
  private resolve;
18
25
  register(): void;
26
+ shutdown(): Promise<void>;
19
27
  }
20
28
  //# sourceMappingURL=telescope_ai_provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"telescope_ai_provider.d.ts","sourceRoot":"","sources":["../../providers/telescope_ai_provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAK/D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAC1B,SAAS,CAAC,GAAG,EAAE,kBAAkB;gBAAvB,GAAG,EAAE,kBAAkB;IAE7C,OAAO,CAAC,OAAO;IAWf,QAAQ;CAeT"}
1
+ {"version":3,"file":"telescope_ai_provider.d.ts","sourceRoot":"","sources":["../../providers/telescope_ai_provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAO/D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAC1B,SAAS,CAAC,GAAG,EAAE,kBAAkB;gBAAvB,GAAG,EAAE,kBAAkB;IAE7C,OAAO,CAAC,OAAO;IAWf,QAAQ;IAyBF,QAAQ;CAIf"}
@@ -1,6 +1,8 @@
1
1
  import { resolveConfig } from '../src/ai/define_config.js';
2
+ import { DiagnosisCoordinator } from '../src/ai/diagnosis_coordinator.js';
2
3
  import { createDiagnoser } from '../src/ai/factory.js';
3
4
  import { TelescopeAiDiagnoser } from '../src/ai/telescope_ai_diagnoser.js';
5
+ import { setTelescopeDiagnosisCoordinator } from '../src/registry.js';
4
6
  /**
5
7
  * Wires `@adonis-agora/telescope/ai` into the AdonisJS application.
6
8
  *
@@ -10,8 +12,15 @@ import { TelescopeAiDiagnoser } from '../src/ai/telescope_ai_diagnoser.js';
10
12
  * controllers / the dashboard can `inject()` it. When AI is disabled or no API
11
13
  * key resolved, a disabled diagnoser is bound (its `diagnose` is a no-op
12
14
  * returning `null`), so consumers can inject unconditionally.
15
+ * - `register()` also constructs a {@link DiagnosisCoordinator} (wrapping the
16
+ * resolved diagnoser, or a `null` diagnoser when AI is off) and publishes it into
17
+ * the core runtime slot. That single seam is what the MCP `diagnose_exception`
18
+ * tool and the alerter read (no DI) to attach probable-cause analysis. Publishing
19
+ * in `register()` — before ANY provider's `boot()` — guarantees the coordinator
20
+ * is in the slot when the MCP / alerts providers boot, regardless of order.
13
21
  *
14
- * Diagnosis never throws into the app: a model or parse failure resolves to `null`.
22
+ * Diagnosis never throws into the app: a model or parse failure resolves to `null`,
23
+ * and the coordinator additionally timeout-bounds and swallows every failure.
15
24
  */
16
25
  export default class TelescopeAiProvider {
17
26
  app;
@@ -27,8 +36,9 @@ export default class TelescopeAiProvider {
27
36
  }
28
37
  register() {
29
38
  const config = this.resolve();
39
+ // The real diagnoser, or `null` when AI is disabled / no provider resolved.
40
+ const diagnoser = createDiagnoser(config);
30
41
  this.app.container.singleton(TelescopeAiDiagnoser, () => {
31
- const diagnoser = createDiagnoser(config);
32
42
  if (diagnoser !== null)
33
43
  return diagnoser;
34
44
  // No key / disabled: bind a diagnoser whose `diagnose` is a no-op so
@@ -40,6 +50,16 @@ export default class TelescopeAiProvider {
40
50
  enabled: false,
41
51
  });
42
52
  });
53
+ // Build + publish the coordinator. When `diagnoser` is `null` the coordinator
54
+ // is inert (`isConfigured()` is false), so the MCP tool and the alerter both
55
+ // keep their exact non-AI behaviour.
56
+ const coordinator = new DiagnosisCoordinator({ diagnoser, timeoutMs: config.timeoutMs });
57
+ this.app.container.singleton(DiagnosisCoordinator, () => coordinator);
58
+ setTelescopeDiagnosisCoordinator(coordinator);
59
+ }
60
+ async shutdown() {
61
+ // Clear the slot so a re-registering app (tests / HMR) doesn't read a stale one.
62
+ setTelescopeDiagnosisCoordinator(null);
43
63
  }
44
64
  }
45
65
  //# sourceMappingURL=telescope_ai_provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"telescope_ai_provider.js","sourceRoot":"","sources":["../../providers/telescope_ai_provider.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAChB;IAAtB,YAAsB,GAAuB;QAAvB,QAAG,GAAH,GAAG,CAAoB;IAAG,CAAC;IAEzC,OAAO;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAgC,cAAc,EAAE,SAAS,CAAC,CAAC;QAC1F,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;QAEjD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CACvC,qBAAqB,EACrB,SAAS,CACV,CAAC;QACF,OAAO,aAAa,CAAC,aAAa,CAAC,CAAC;IACtC,CAAC;IAED,QAAQ;QACN,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,oBAAoB,EAAE,GAAG,EAAE;YACtD,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,SAAS,KAAK,IAAI;gBAAE,OAAO,SAAS,CAAC;YACzC,qEAAqE;YACrE,qEAAqE;YACrE,OAAO,IAAI,oBAAoB,CAAC;gBAC9B,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE;gBAC7E,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"telescope_ai_provider.js","sourceRoot":"","sources":["../../providers/telescope_ai_provider.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AAEtE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAChB;IAAtB,YAAsB,GAAuB;QAAvB,QAAG,GAAH,GAAG,CAAoB;IAAG,CAAC;IAEzC,OAAO;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAgC,cAAc,EAAE,SAAS,CAAC,CAAC;QAC1F,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;QAEjD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CACvC,qBAAqB,EACrB,SAAS,CACV,CAAC;QACF,OAAO,aAAa,CAAC,aAAa,CAAC,CAAC;IACtC,CAAC;IAED,QAAQ;QACN,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC9B,4EAA4E;QAC5E,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAE1C,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,oBAAoB,EAAE,GAAG,EAAE;YACtD,IAAI,SAAS,KAAK,IAAI;gBAAE,OAAO,SAAS,CAAC;YACzC,qEAAqE;YACrE,qEAAqE;YACrE,OAAO,IAAI,oBAAoB,CAAC;gBAC9B,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE;gBAC7E,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,8EAA8E;QAC9E,6EAA6E;QAC7E,qCAAqC;QACrC,MAAM,WAAW,GAAG,IAAI,oBAAoB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;QACtE,gCAAgC,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,iFAAiF;QACjF,gCAAgC,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -15,6 +15,7 @@ import type { ApplicationService } from '@adonisjs/core/types';
15
15
  export default class TelescopeAlertsProvider {
16
16
  protected app: ApplicationService;
17
17
  private poller;
18
+ private alerterService;
18
19
  constructor(app: ApplicationService);
19
20
  private resolve;
20
21
  boot(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"telescope_alerts_provider.d.ts","sourceRoot":"","sources":["../../providers/telescope_alerts_provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAO/D;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,OAAO,OAAO,uBAAuB;IAG9B,SAAS,CAAC,GAAG,EAAE,kBAAkB;IAF7C,OAAO,CAAC,MAAM,CAAgC;gBAExB,GAAG,EAAE,kBAAkB;IAE7C,OAAO,CAAC,OAAO;IAcT,IAAI;IA6BJ,QAAQ;CAQf"}
1
+ {"version":3,"file":"telescope_alerts_provider.d.ts","sourceRoot":"","sources":["../../providers/telescope_alerts_provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAW/D;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,OAAO,OAAO,uBAAuB;IAI9B,SAAS,CAAC,GAAG,EAAE,kBAAkB;IAH7C,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,cAAc,CAA+B;gBAE/B,GAAG,EAAE,kBAAkB;IAE7C,OAAO,CAAC,OAAO;IAcT,IAAI;IA2DJ,QAAQ;CAcf"}
@@ -1,6 +1,8 @@
1
1
  import { Alerter } from '../src/alerts/alerter.js';
2
+ import { AlerterService } from '../src/alerts/alerter_service.js';
2
3
  import { resolveConfig } from '../src/alerts/define_config.js';
3
4
  import { ExceptionPoller } from '../src/alerts/exception_source.js';
5
+ import { MetricsService } from '../src/metrics/metrics_service.js';
4
6
  import { getTelescopeRuntime } from '../src/registry.js';
5
7
  /**
6
8
  * Wires `@adonis-agora/telescope/alerts` into the AdonisJS application.
@@ -18,6 +20,7 @@ import { getTelescopeRuntime } from '../src/registry.js';
18
20
  export default class TelescopeAlertsProvider {
19
21
  app;
20
22
  poller = null;
23
+ alerterService = null;
21
24
  constructor(app) {
22
25
  this.app = app;
23
26
  }
@@ -42,7 +45,17 @@ export default class TelescopeAlertsProvider {
42
45
  }
43
46
  if (store === null)
44
47
  return;
45
- const alerter = new Alerter({ alerts: config });
48
+ // Attach the AI probable-cause hook when a configured coordinator is published
49
+ // in the runtime slot. When AI is off, no hook is passed and alerts are
50
+ // exactly as before (no "Probable cause (AI)" section).
51
+ const coordinator = getTelescopeRuntime().diagnosisCoordinator;
52
+ const diagnose = coordinator !== null && coordinator.isConfigured()
53
+ ? (entry) => coordinator.diagnoseSummary(entry)
54
+ : undefined;
55
+ const alerter = new Alerter({
56
+ alerts: config,
57
+ ...(diagnose !== undefined ? { diagnose } : {}),
58
+ });
46
59
  this.poller = new ExceptionPoller({
47
60
  store,
48
61
  alerter,
@@ -55,6 +68,22 @@ export default class TelescopeAlertsProvider {
55
68
  console.error(`TelescopeAlertsProvider: failed to start the alert poller: ${asMessage(err)}`);
56
69
  this.poller = null;
57
70
  }
71
+ // The interval metric-threshold service only needs to run when at least one
72
+ // such rule is configured — otherwise its timer would tick doing nothing.
73
+ const hasMetricRule = config.rules.some((rule) => rule.type === 'metric-threshold');
74
+ if (hasMetricRule) {
75
+ this.alerterService = new AlerterService({
76
+ alerts: config,
77
+ metrics: new MetricsService(store),
78
+ });
79
+ try {
80
+ this.alerterService.start();
81
+ }
82
+ catch (err) {
83
+ console.error(`TelescopeAlertsProvider: failed to start the metric alerter: ${asMessage(err)}`);
84
+ this.alerterService = null;
85
+ }
86
+ }
58
87
  }
59
88
  async shutdown() {
60
89
  try {
@@ -63,7 +92,14 @@ export default class TelescopeAlertsProvider {
63
92
  catch {
64
93
  // never throw out of shutdown
65
94
  }
95
+ try {
96
+ this.alerterService?.stop();
97
+ }
98
+ catch {
99
+ // never throw out of shutdown
100
+ }
66
101
  this.poller = null;
102
+ this.alerterService = null;
67
103
  }
68
104
  }
69
105
  function asMessage(err) {
@@ -1 +1 @@
1
- {"version":3,"file":"telescope_alerts_provider.js","sourceRoot":"","sources":["../../providers/telescope_alerts_provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAA8B,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGzD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,OAAO,OAAO,uBAAuB;IAGpB;IAFd,MAAM,GAA2B,IAAI,CAAC;IAE9C,YAAsB,GAAuB;QAAvB,QAAG,GAAH,GAAG,CAAoB;IAAG,CAAC;IAEzC,OAAO;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAC7B,kBAAkB,EAClB,SAAS,CACV,CAAC;QACF,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;QAEjD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CACvC,yBAAyB,EACzB,SAAS,CACV,CAAC;QACF,OAAO,aAAa,CAAC,aAAa,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO;QAE5B,IAAI,KAA4B,CAAC;QACjC,IAAI,CAAC;YACH,KAAK,GAAG,mBAAmB,EAAE,CAAC,KAAK,CAAC;QACtC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CACX,mEAAmE,SAAS,CAAC,GAAG,CAAC,EAAE,CACpF,CAAC;YACF,OAAO;QACT,CAAC;QACD,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO;QAE3B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC;YAChC,KAAK;YACL,OAAO;YACP,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC,CAAC;QACH,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,8DAA8D,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9F,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,8BAA8B;QAChC,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;CACF;AAED,SAAS,SAAS,CAAC,GAAY;IAC7B,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"telescope_alerts_provider.js","sourceRoot":"","sources":["../../providers/telescope_alerts_provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { ApplicationService } from '@adonisjs/core/types';
2
+ /**
3
+ * Wires `@adonis-agora/telescope/mcp` into the AdonisJS application.
4
+ *
5
+ * `boot()` reads `config/telescope_mcp.ts`, resolves the live telescope store from
6
+ * the core runtime slot (no DI — the same handle the watchers record through), and
7
+ * registers a JSON-RPC endpoint under the configured path via the AdonisJS router:
8
+ *
9
+ * - `POST <path>` — the MCP JSON-RPC surface (`initialize` / `tools/list` /
10
+ * `tools/call`). The route is a thin transport: it runs the SAME auth guard as the
11
+ * dashboard, then hands the parsed body + the `allowed` flag to a plain, testable
12
+ * {@link TelescopeMcpServer}. A denial rides inside the JSON-RPC envelope (`-32001`)
13
+ * because MCP has no transport-level 401.
14
+ * - `GET <path>` — 405: this stateless server has no server→client stream.
15
+ * - `DELETE <path>` — 200 no-op: it holds no session to terminate.
16
+ *
17
+ * Failures degrade safely: a disabled config or a missing store registers no routes
18
+ * (warn-logged), so the endpoint simply does not exist rather than crashing the host.
19
+ */
20
+ export default class TelescopeMcpProvider {
21
+ protected app: ApplicationService;
22
+ constructor(app: ApplicationService);
23
+ private resolve;
24
+ boot(): Promise<void>;
25
+ }
26
+ //# sourceMappingURL=telescope_mcp_provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telescope_mcp_provider.d.ts","sourceRoot":"","sources":["../../providers/telescope_mcp_provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAkB/D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,OAAO,OAAO,oBAAoB;IAC3B,SAAS,CAAC,GAAG,EAAE,kBAAkB;gBAAvB,GAAG,EAAE,kBAAkB;IAE7C,OAAO,CAAC,OAAO;IAMT,IAAI;CAuFX"}
@@ -0,0 +1,114 @@
1
+ import { resolveConfig as resolveTelescopeConfig } from '../src/define_config.js';
2
+ import { resolveConfig, } from '../src/mcp/define_config.js';
3
+ import { TelescopeMcpServer } from '../src/mcp/server.js';
4
+ import { MetricsService } from '../src/metrics/metrics_service.js';
5
+ import { getTelescopeRuntime } from '../src/registry.js';
6
+ import { TelescopeService } from '../src/service.js';
7
+ import { runGuard } from '../src/ui/guard.js';
8
+ /**
9
+ * Wires `@adonis-agora/telescope/mcp` into the AdonisJS application.
10
+ *
11
+ * `boot()` reads `config/telescope_mcp.ts`, resolves the live telescope store from
12
+ * the core runtime slot (no DI — the same handle the watchers record through), and
13
+ * registers a JSON-RPC endpoint under the configured path via the AdonisJS router:
14
+ *
15
+ * - `POST <path>` — the MCP JSON-RPC surface (`initialize` / `tools/list` /
16
+ * `tools/call`). The route is a thin transport: it runs the SAME auth guard as the
17
+ * dashboard, then hands the parsed body + the `allowed` flag to a plain, testable
18
+ * {@link TelescopeMcpServer}. A denial rides inside the JSON-RPC envelope (`-32001`)
19
+ * because MCP has no transport-level 401.
20
+ * - `GET <path>` — 405: this stateless server has no server→client stream.
21
+ * - `DELETE <path>` — 200 no-op: it holds no session to terminate.
22
+ *
23
+ * Failures degrade safely: a disabled config or a missing store registers no routes
24
+ * (warn-logged), so the endpoint simply does not exist rather than crashing the host.
25
+ */
26
+ export default class TelescopeMcpProvider {
27
+ app;
28
+ constructor(app) {
29
+ this.app = app;
30
+ }
31
+ resolve() {
32
+ return resolveConfig(this.app.config.get('telescope_mcp', undefined));
33
+ }
34
+ async boot() {
35
+ const config = this.resolve();
36
+ if (!config.enabled)
37
+ return;
38
+ let store;
39
+ try {
40
+ store = getTelescopeRuntime().store;
41
+ }
42
+ catch (err) {
43
+ console.error(`TelescopeMcpProvider: could not resolve the telescope store: ${asMessage(err)}`);
44
+ return;
45
+ }
46
+ if (store === null) {
47
+ console.warn('TelescopeMcpProvider: telescope store is not booted (is @adonis-agora/telescope enabled?); ' +
48
+ 'MCP endpoint not registered.');
49
+ return;
50
+ }
51
+ const coreConfig = resolveTelescopeConfig(this.app.config.get('telescope', {}));
52
+ const service = new TelescopeService(store, {
53
+ windowMs: coreConfig.pulse.windowMs,
54
+ topN: coreConfig.pulse.topN,
55
+ buckets: coreConfig.pulse.buckets,
56
+ slowRouteMs: coreConfig.pulse.slowRouteMs,
57
+ cards: coreConfig.pulse.cards,
58
+ ...(coreConfig.nPlusOne.enabled ? { nPlusOneThreshold: coreConfig.nPlusOne.threshold } : {}),
59
+ });
60
+ const metrics = new MetricsService(store, {
61
+ ...(coreConfig.nPlusOne.enabled ? { nPlusOneThreshold: coreConfig.nPlusOne.threshold } : {}),
62
+ });
63
+ // Wire the AI diagnosis hook when a configured coordinator is published in the
64
+ // runtime slot. When AI is off (no coordinator, or an inert one), NO hook is
65
+ // passed, so `diagnose_exception` reports "not configured" exactly as before.
66
+ const coordinator = getTelescopeRuntime().diagnosisCoordinator;
67
+ const diagnose = coordinator !== null && coordinator.isConfigured()
68
+ ? async (entry) => {
69
+ // Feed the same-trace siblings as extra context (already redacted).
70
+ const related = entry.traceId !== null ? await service.byTrace(entry.traceId) : undefined;
71
+ return coordinator.diagnoseMarkdown(entry, {
72
+ ...(related !== undefined ? { related } : {}),
73
+ });
74
+ }
75
+ : undefined;
76
+ const server = new TelescopeMcpServer(service, metrics, {
77
+ tools: config.tools,
78
+ serverInfo: { name: 'adonis-telescope', version: '0.4.0' },
79
+ ...(diagnose !== undefined ? { diagnose } : {}),
80
+ });
81
+ const router = await this.app.container.make('router');
82
+ const guard = config.authorize;
83
+ // JSON-RPC surface. The transport is thin: guard → hand `body` + `allowed` to the
84
+ // server. A `null` result is a notification (no id) → 202 with no body.
85
+ router
86
+ .post(config.path, async (ctx) => {
87
+ const { allowed } = await runGuard(ctx, guard);
88
+ const body = (ctx.request.body?.() ?? {});
89
+ const result = await server.handle(body, allowed);
90
+ if (result === null) {
91
+ ctx.response.status(202);
92
+ return ctx.response.send('');
93
+ }
94
+ return ctx.response.status(200).send(result);
95
+ })
96
+ .as('telescope_mcp.rpc');
97
+ // The MCP streamable-HTTP transport opens a GET stream for server→client
98
+ // notifications; this stateless server has none, so 405 (per the spec).
99
+ router
100
+ .get(config.path, async (ctx) => {
101
+ ctx.response.status(405);
102
+ return ctx.response.send({ error: 'MCP server is stateless; GET is not supported.' });
103
+ })
104
+ .as('telescope_mcp.get');
105
+ // DELETE terminates a session; this stateless server holds none, so 200 (no-op).
106
+ router
107
+ .delete(config.path, async (ctx) => ctx.response.status(200).send({ ok: true }))
108
+ .as('telescope_mcp.delete');
109
+ }
110
+ }
111
+ function asMessage(err) {
112
+ return err instanceof Error ? err.message : String(err);
113
+ }
114
+ //# sourceMappingURL=telescope_mcp_provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telescope_mcp_provider.js","sourceRoot":"","sources":["../../providers/telescope_mcp_provider.ts"],"names":[],"mappings":"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"}
@@ -20,9 +20,17 @@ export default class TelescopeProvider {
20
20
  private store;
21
21
  private diagnosticsWatcher;
22
22
  private entryEvents;
23
+ private pruner;
24
+ private overloadGuard;
23
25
  constructor(app: ApplicationService);
24
26
  register(): void;
25
27
  boot(): Promise<void>;
28
+ /**
29
+ * Register the `POST <path>` client-error ingestion route on the AdonisJS
30
+ * router, delegating to a {@link ClientErrorIngestor}. Idiomatic AdonisJS: a
31
+ * provider-registered route + `HttpContext` handler, not a NestJS controller.
32
+ */
33
+ private registerClientErrors;
26
34
  /**
27
35
  * Build the active store from config. A supplied {@link TelescopeStore} instance is used
28
36
  * as-is; otherwise `config.store` names a driver in `config.stores`, built via its lazy
@@ -1 +1 @@
1
- {"version":3,"file":"telescope_provider.d.ts","sourceRoot":"","sources":["../../providers/telescope_provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAuB/D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,OAAO,OAAO,iBAAiB;IAKxB,SAAS,CAAC,GAAG,EAAE,kBAAkB;IAJ7C,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,kBAAkB,CAAmC;IAC7D,OAAO,CAAC,WAAW,CAA4B;gBAEzB,GAAG,EAAE,kBAAkB;IAE7C,QAAQ;IAUF,IAAI;IA2BV;;;;;OAKG;YACW,UAAU;IAexB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAKtB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAKrB;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAMtB,oGAAoG;IACpG,OAAO,CAAC,sBAAsB;IAaxB,QAAQ;CAOf"}
1
+ {"version":3,"file":"telescope_provider.d.ts","sourceRoot":"","sources":["../../providers/telescope_provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAgC/D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,OAAO,OAAO,iBAAiB;IAOxB,SAAS,CAAC,GAAG,EAAE,kBAAkB;IAN7C,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,kBAAkB,CAAmC;IAC7D,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,aAAa,CAA8B;gBAE7B,GAAG,EAAE,kBAAkB;IAE7C,QAAQ;IAUF,IAAI;IA+CV;;;;OAIG;YACW,oBAAoB;IAelC;;;;;OAKG;YACW,UAAU;IAexB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAKtB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAKrB;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAMtB,oGAAoG;IACpG,OAAO,CAAC,sBAAsB;IAaxB,QAAQ;CAWf"}
@@ -1,8 +1,11 @@
1
+ import { ClientErrorIngestor, storeRecorder, } from '../src/client_errors/index.js';
1
2
  import { resolveConfig, } from '../src/define_config.js';
2
3
  import { DiagnosticsWatcher } from '../src/diagnostics_watcher.js';
3
4
  import { ExtensionRegistry } from '../src/extension/registry.js';
5
+ import { OverloadGuard } from '../src/overload_guard.js';
6
+ import { TelescopePruner } from '../src/pruner.js';
4
7
  import { RedactingTelescopeStore } from '../src/redaction/redacting_store.js';
5
- import { resetTelescopeRuntime, setTelescopeEntryEvents, setTelescopeExtensionRegistry, setTelescopeRuntime, } from '../src/registry.js';
8
+ import { getTelescopeRuntime, resetTelescopeRuntime, setTelescopeEntryEvents, setTelescopeExtensionRegistry, setTelescopePaused, setTelescopeRuntime, } from '../src/registry.js';
6
9
  import { SamplingTelescopeStore } from '../src/sampling/sampling_store.js';
7
10
  import { TelescopeService } from '../src/service.js';
8
11
  import { InMemoryTelescopeStore } from '../src/stores/memory.js';
@@ -29,6 +32,8 @@ export default class TelescopeProvider {
29
32
  store = null;
30
33
  diagnosticsWatcher = null;
31
34
  entryEvents = null;
35
+ pruner = null;
36
+ overloadGuard = null;
32
37
  constructor(app) {
33
38
  this.app = app;
34
39
  }
@@ -59,6 +64,40 @@ export default class TelescopeProvider {
59
64
  // Build the extension registry from `config.extensions` and publish it so the UI can serve each
60
65
  // extension's dashboards + data providers. A collision (duplicate id/name) throws here, at boot.
61
66
  setTelescopeExtensionRegistry(this.buildExtensionRegistry(config, store));
67
+ // Protective infrastructure. The pruner runs only when a `prune` block was
68
+ // supplied; the overload guard is on by default (unref'd 1s sampler) and pauses
69
+ // ingestion through the runtime `paused` flag the middleware + watchers honour.
70
+ if (config.prune.enabled) {
71
+ this.pruner = new TelescopePruner(store, config.prune);
72
+ this.pruner.start();
73
+ }
74
+ if (config.overload.enabled) {
75
+ this.overloadGuard = new OverloadGuard(config.overload, runtimePauseController);
76
+ this.overloadGuard.start();
77
+ }
78
+ // Public client-error ingestion. Opt-in: the route is registered ONLY when
79
+ // enabled, so a disabled endpoint genuinely does not exist (a probe can't
80
+ // tell it is wired). Records through the same wrapped store as every watcher
81
+ // (redaction/sampling/streaming) and sheds while the overload guard pauses.
82
+ if (config.clientErrors.enabled) {
83
+ await this.registerClientErrors(store, config);
84
+ }
85
+ }
86
+ /**
87
+ * Register the `POST <path>` client-error ingestion route on the AdonisJS
88
+ * router, delegating to a {@link ClientErrorIngestor}. Idiomatic AdonisJS: a
89
+ * provider-registered route + `HttpContext` handler, not a NestJS controller.
90
+ */
91
+ async registerClientErrors(store, config) {
92
+ const ingestor = new ClientErrorIngestor({
93
+ config: config.clientErrors,
94
+ record: storeRecorder(store),
95
+ isPaused: () => getTelescopeRuntime().paused,
96
+ });
97
+ const router = await this.app.container.make('router');
98
+ router
99
+ .post(config.clientErrors.path, (ctx) => ingestor.handle(ctx))
100
+ .as('telescope.client_errors');
62
101
  }
63
102
  /**
64
103
  * Build the active store from config. A supplied {@link TelescopeStore} instance is used
@@ -124,6 +163,10 @@ export default class TelescopeProvider {
124
163
  return new ExtensionRegistry(config.extensions, ctx);
125
164
  }
126
165
  async shutdown() {
166
+ this.overloadGuard?.stop();
167
+ this.overloadGuard = null;
168
+ this.pruner?.stop();
169
+ this.pruner = null;
127
170
  this.diagnosticsWatcher?.stop();
128
171
  this.diagnosticsWatcher = null;
129
172
  this.entryEvents?.clear();
@@ -131,4 +174,16 @@ export default class TelescopeProvider {
131
174
  resetTelescopeRuntime();
132
175
  }
133
176
  }
177
+ /**
178
+ * The overload guard's pause surface, backed by the global runtime `paused` flag
179
+ * every ingestion entry point (request middleware, watcher `safeRecord`) honours —
180
+ * so pausing sheds recording everywhere at once, with no DI wiring.
181
+ */
182
+ const runtimePauseController = {
183
+ pause: () => setTelescopePaused(true),
184
+ resume: () => setTelescopePaused(false),
185
+ get isPaused() {
186
+ return getTelescopeRuntime().paused;
187
+ },
188
+ };
134
189
  //# sourceMappingURL=telescope_provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"telescope_provider.js","sourceRoot":"","sources":["../../providers/telescope_provider.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,aAAa,GACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,6BAA6B,EAC7B,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAE3E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,OAAO,OAAO,iBAAiB;IAKd;IAJd,KAAK,GAA0B,IAAI,CAAC;IACpC,kBAAkB,GAA8B,IAAI,CAAC;IACrD,WAAW,GAAuB,IAAI,CAAC;IAE/C,YAAsB,GAAuB;QAAvB,QAAG,GAAH,GAAG,CAAoB;IAAG,CAAC;IAEjD,QAAQ;QACN,iFAAiF;QACjF,mFAAmF;QACnF,gFAAgF;QAChF,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,gBAAgB,EAAE,GAAG,EAAE;YAClD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,sBAAsB,EAAE,CAAC;YACzD,OAAO,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAkB,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QACpF,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAC/B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,EACtF,MAAM,CACP,CAAC;QACF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,qBAAqB,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3D,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE1C,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC9C,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC;QACpC,CAAC;QAED,gGAAgG;QAChG,iGAAiG;QACjG,6BAA6B,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,UAAU,CAAC,MAA+B;QACtD,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC;QAE1D,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAEjD,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,IAAI,sBAAsB,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,IAAI,KAAK,CACb,6CAA6C,MAAM,CAAC,KAAK,wBAAwB,MAAM,CAAC,KAAK,iBAAiB,CAC/G,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACK,cAAc,CAAC,KAAqB,EAAE,MAA+B;QAC3E,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QACzC,OAAO,IAAI,uBAAuB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED;;;;;OAKG;IACK,aAAa,CAAC,KAAqB,EAAE,MAA+B;QAC1E,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC5D,OAAO,IAAI,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;;OAMG;IACK,cAAc,CAAC,KAAqB,EAAE,MAA+B;QAC3E,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QACzC,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;QACrC,OAAO,IAAI,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9D,CAAC;IAED,oGAAoG;IAC5F,sBAAsB,CAC5B,MAA+B,EAC/B,KAAqB;QAErB,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAChD,MAAM,GAAG,GAAqB;YAC5B,KAAK;YACL,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,KAAc,CAAC,EAAE;YACvE,MAAM;SACP,CAAC;QACF,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC;QAChC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,qBAAqB,EAAE,CAAC;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"telescope_provider.js","sourceRoot":"","sources":["../../providers/telescope_provider.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,8 @@ import type { ApplicationService } from '@adonisjs/core/types';
15
15
  export default class TelescopeUiProvider {
16
16
  protected app: ApplicationService;
17
17
  constructor(app: ApplicationService);
18
+ /** Warn once so a throwing `login` hook doesn't spam the logs on every failed attempt. */
19
+ private warnedOnHookThrow;
18
20
  private resolve;
19
21
  boot(): Promise<void>;
20
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"telescope_ui_provider.d.ts","sourceRoot":"","sources":["../../providers/telescope_ui_provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAkB/D;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAC1B,SAAS,CAAC,GAAG,EAAE,kBAAkB;gBAAvB,GAAG,EAAE,kBAAkB;IAE7C,OAAO,CAAC,OAAO;IAMT,IAAI;CAmLX"}
1
+ {"version":3,"file":"telescope_ui_provider.d.ts","sourceRoot":"","sources":["../../providers/telescope_ui_provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAwB/D;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAC1B,SAAS,CAAC,GAAG,EAAE,kBAAkB;gBAAvB,GAAG,EAAE,kBAAkB;IAE7C,0FAA0F;IAC1F,OAAO,CAAC,iBAAiB,CAAS;IAElC,OAAO,CAAC,OAAO;IAMT,IAAI;CAwQX"}