@adonis-agora/telescope 0.3.3 → 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 (199) 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 +17 -4
  91. package/dist/src/index.d.ts.map +1 -1
  92. package/dist/src/index.js +16 -3
  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/stores/lucid.d.ts +20 -0
  127. package/dist/src/stores/lucid.d.ts.map +1 -1
  128. package/dist/src/stores/lucid.js +89 -4
  129. package/dist/src/stores/lucid.js.map +1 -1
  130. package/dist/src/telescope_middleware.d.ts.map +1 -1
  131. package/dist/src/telescope_middleware.js +3 -1
  132. package/dist/src/telescope_middleware.js.map +1 -1
  133. package/dist/src/ui/api.d.ts +9 -1
  134. package/dist/src/ui/api.d.ts.map +1 -1
  135. package/dist/src/ui/api.js +23 -1
  136. package/dist/src/ui/api.js.map +1 -1
  137. package/dist/src/ui/auth.d.ts +112 -0
  138. package/dist/src/ui/auth.d.ts.map +1 -0
  139. package/dist/src/ui/auth.js +130 -0
  140. package/dist/src/ui/auth.js.map +1 -0
  141. package/dist/src/ui/dashboard_auth.d.ts +34 -0
  142. package/dist/src/ui/dashboard_auth.d.ts.map +1 -0
  143. package/dist/src/ui/dashboard_auth.js +57 -0
  144. package/dist/src/ui/dashboard_auth.js.map +1 -0
  145. package/dist/src/ui/define_config.d.ts +15 -0
  146. package/dist/src/ui/define_config.d.ts.map +1 -1
  147. package/dist/src/ui/define_config.js +4 -0
  148. package/dist/src/ui/define_config.js.map +1 -1
  149. package/dist/src/ui/index.d.ts +7 -1
  150. package/dist/src/ui/index.d.ts.map +1 -1
  151. package/dist/src/ui/index.js +6 -1
  152. package/dist/src/ui/index.js.map +1 -1
  153. package/dist/src/ui/login_page.d.ts +23 -0
  154. package/dist/src/ui/login_page.d.ts.map +1 -0
  155. package/dist/src/ui/login_page.js +170 -0
  156. package/dist/src/ui/login_page.js.map +1 -0
  157. package/dist/src/ui/session_cookie.d.ts +42 -0
  158. package/dist/src/ui/session_cookie.d.ts.map +1 -0
  159. package/dist/src/ui/session_cookie.js +97 -0
  160. package/dist/src/ui/session_cookie.js.map +1 -0
  161. package/dist/src/watchers/define_config.d.ts +115 -12
  162. package/dist/src/watchers/define_config.d.ts.map +1 -1
  163. package/dist/src/watchers/define_config.js +48 -11
  164. package/dist/src/watchers/define_config.js.map +1 -1
  165. package/dist/src/watchers/http_client_watcher.d.ts +91 -31
  166. package/dist/src/watchers/http_client_watcher.d.ts.map +1 -1
  167. package/dist/src/watchers/http_client_watcher.js +161 -53
  168. package/dist/src/watchers/http_client_watcher.js.map +1 -1
  169. package/dist/src/watchers/index.d.ts +9 -5
  170. package/dist/src/watchers/index.d.ts.map +1 -1
  171. package/dist/src/watchers/index.js +6 -2
  172. package/dist/src/watchers/index.js.map +1 -1
  173. package/dist/src/watchers/lucid_query_watcher.d.ts +20 -2
  174. package/dist/src/watchers/lucid_query_watcher.d.ts.map +1 -1
  175. package/dist/src/watchers/lucid_query_watcher.js +44 -10
  176. package/dist/src/watchers/lucid_query_watcher.js.map +1 -1
  177. package/dist/src/watchers/profiling_watcher.d.ts +144 -0
  178. package/dist/src/watchers/profiling_watcher.d.ts.map +1 -0
  179. package/dist/src/watchers/profiling_watcher.js +231 -0
  180. package/dist/src/watchers/profiling_watcher.js.map +1 -0
  181. package/dist/src/watchers/query_family_hash.d.ts +7 -2
  182. package/dist/src/watchers/query_family_hash.d.ts.map +1 -1
  183. package/dist/src/watchers/query_family_hash.js +8 -3
  184. package/dist/src/watchers/query_family_hash.js.map +1 -1
  185. package/dist/src/watchers/record.d.ts.map +1 -1
  186. package/dist/src/watchers/record.js +4 -0
  187. package/dist/src/watchers/record.js.map +1 -1
  188. package/dist/src/watchers/schedule_watcher.d.ts +143 -0
  189. package/dist/src/watchers/schedule_watcher.d.ts.map +1 -0
  190. package/dist/src/watchers/schedule_watcher.js +195 -0
  191. package/dist/src/watchers/schedule_watcher.js.map +1 -0
  192. package/dist/stubs/config/telescope.stub +0 -65
  193. package/dist/stubs/config/telescope_ai.stub +0 -36
  194. package/dist/stubs/config/telescope_alerts.stub +0 -47
  195. package/dist/stubs/config/telescope_mcp.stub +0 -0
  196. package/dist/stubs/config/telescope_ui.stub +0 -53
  197. package/dist/stubs/config/telescope_watchers.stub +0 -41
  198. package/dist/stubs/database/migrations/create_telescope_entries_table.stub +2 -2
  199. package/package.json +12 -2
@@ -3,10 +3,12 @@ import { getTelescopeRuntime } from '../src/registry.js';
3
3
  import { TelescopeService } from '../src/service.js';
4
4
  import { streamEntries } from '../src/stream/stream_handler.js';
5
5
  import { TelescopeApi } from '../src/ui/api.js';
6
- import { renderDashboard } from '../src/ui/dashboard.js';
6
+ import { performLogin } from '../src/ui/auth.js';
7
+ import { clearSessionCookie, enforceDashboardAuth, writeSessionCookie, } from '../src/ui/dashboard_auth.js';
7
8
  import { resolveConfig, } from '../src/ui/define_config.js';
8
9
  import { ExtensionApi } from '../src/ui/extension_api.js';
9
10
  import { enforceGuard } from '../src/ui/guard.js';
11
+ import { renderLoginPage } from '../src/ui/login_page.js';
10
12
  /**
11
13
  * Wires `@adonis-agora/telescope/ui` into the AdonisJS application.
12
14
  *
@@ -25,6 +27,8 @@ export default class TelescopeUiProvider {
25
27
  constructor(app) {
26
28
  this.app = app;
27
29
  }
30
+ /** Warn once so a throwing `login` hook doesn't spam the logs on every failed attempt. */
31
+ warnedOnHookThrow = false;
28
32
  resolve() {
29
33
  return resolveConfig(this.app.config.get('telescope_ui', undefined));
30
34
  }
@@ -57,44 +61,114 @@ export default class TelescopeUiProvider {
57
61
  enabled: config.replay.enabled,
58
62
  ...(config.replay.port !== undefined ? { port: config.replay.port } : {}),
59
63
  ...(config.replay.timeoutMs !== undefined ? { timeoutMs: config.replay.timeoutMs } : {}),
64
+ },
65
+ // Pulse rollup options from core `config.telescope.pulse`.
66
+ {
67
+ windowMs: coreConfig.pulse.windowMs,
68
+ topN: coreConfig.pulse.topN,
69
+ buckets: coreConfig.pulse.buckets,
70
+ slowRouteMs: coreConfig.pulse.slowRouteMs,
71
+ cards: coreConfig.pulse.cards,
72
+ ...(coreConfig.nPlusOne.enabled
73
+ ? { nPlusOneThreshold: coreConfig.nPlusOne.threshold }
74
+ : {}),
60
75
  });
61
76
  const apiBase = `${config.path}/api`;
62
77
  const router = await this.app.container.make('router');
63
78
  const guard = config.authorize;
64
- // Dashboard page (HTML).
65
- router
66
- .get(config.path, async (ctx) => {
79
+ const auth = config.dashboardAuth;
80
+ // Composed guard: the existing `authorize` hook FIRST (writes 401/403 on denial), then — only
81
+ // when `dashboardAuth` is configured — the signed-session guard (a missing/invalid session on an
82
+ // API request is a plain 401). When `dashboardAuth` is omitted `auth` is null, so this is exactly
83
+ // `enforceGuard` and behavior is byte-for-byte unchanged.
84
+ const gate = async (ctx) => {
67
85
  if (!(await enforceGuard(ctx, guard)))
68
- return;
69
- ctx.response.header('content-type', 'text/html; charset=utf-8');
70
- return ctx.response.send(renderDashboard(apiBase));
71
- })
72
- .as('telescope_ui.dashboard');
86
+ return false;
87
+ if (auth === null)
88
+ return true;
89
+ return enforceDashboardAuth(ctx, auth, 'api', config.path);
90
+ };
91
+ // Built-in `dashboardAuth` login screen (opt-in). Registered ONLY when configured, so omitting
92
+ // `dashboardAuth` leaves route registration byte-for-byte as it was. These endpoints are public
93
+ // (behind NEITHER guard): they MINT/clear the session the guard checks for, and the login page
94
+ // must stay reachable while unauthenticated — including in production, where the default
95
+ // `authorize` hook would otherwise deny it.
96
+ if (auth !== null) {
97
+ const loginPath = `${config.path}/login`;
98
+ const logoutPath = `${config.path}/logout`;
99
+ // `GET <path>/login` → the server-rendered login page. A static route, so it takes precedence
100
+ // over the SPA's `<path>/*` wildcard in the AdonisJS router. `returnTo`/`error` are read
101
+ // client-side from the query (never server-echoed), so the body is a static template.
102
+ router
103
+ .get(loginPath, async (ctx) => {
104
+ ctx.response.header('content-type', 'text/html; charset=utf-8');
105
+ ctx.response.header('cache-control', 'no-store, must-revalidate');
106
+ return ctx.response.send(renderLoginPage(config.path));
107
+ })
108
+ .as('telescope_ui.login.page');
109
+ // `POST <path>/login` → verify credentials via the host `login` hook and mint the cookie.
110
+ // Uniform `401` on ANY failure (unknown user, wrong password, or a throwing hook) so there is
111
+ // no user-enumeration; a throwing hook is warn-logged once, never surfaced to the client.
112
+ router
113
+ .post(loginPath, async (ctx) => {
114
+ const outcome = await performLogin(auth, ctx.request.body(), config.path);
115
+ if (outcome.kind === 'bad-request') {
116
+ return ctx.response.status(400).json({ error: outcome.message });
117
+ }
118
+ if (outcome.kind === 'unauthorized') {
119
+ if (outcome.hookError !== undefined && !this.warnedOnHookThrow) {
120
+ this.warnedOnHookThrow = true;
121
+ const message = outcome.hookError instanceof Error
122
+ ? outcome.hookError.message
123
+ : String(outcome.hookError);
124
+ const logger = await this.app.container.make('logger');
125
+ logger.warn(`dashboardAuth login hook threw; treating as denial. ${message}`);
126
+ }
127
+ return ctx.response.status(401).json({ error: outcome.message });
128
+ }
129
+ writeSessionCookie(ctx, auth, outcome.cookieValue);
130
+ return ctx.response.status(200).json({ redirectTo: outcome.redirectTo });
131
+ })
132
+ .as('telescope_ui.login.submit');
133
+ // `GET <path>/logout` → clear the cookie and redirect back to the login page. A plain GET
134
+ // (idempotent, only ever destroys the caller's own session) so a simple `<a href>` works.
135
+ router
136
+ .get(logoutPath, async (ctx) => {
137
+ clearSessionCookie(ctx);
138
+ return ctx.response.redirect().toPath(loginPath);
139
+ })
140
+ .as('telescope_ui.logout');
141
+ }
142
+ // Dashboard page: served by the `@adonis-agora/telescope-ui` SPA provider (it mounts the built
143
+ // Vite app at the prefix root, behind this same `authorize` guard). The legacy self-contained
144
+ // inline-HTML dashboard (`renderDashboard`) is no longer auto-routed here; it remains exported
145
+ // from `@adonis-agora/telescope/ui` for embedding. This provider owns only the JSON API + SSE
146
+ // under `<path>/api/*`, which the SPA consumes.
73
147
  // JSON API.
74
148
  router
75
149
  .get(`${apiBase}/entries`, async (ctx) => {
76
- if (!(await enforceGuard(ctx, guard)))
150
+ if (!(await gate(ctx)))
77
151
  return;
78
152
  return api.list(ctx);
79
153
  })
80
154
  .as('telescope_ui.entries');
81
155
  router
82
156
  .get(`${apiBase}/entries/:id`, async (ctx) => {
83
- if (!(await enforceGuard(ctx, guard)))
157
+ if (!(await gate(ctx)))
84
158
  return;
85
159
  return api.show(ctx, String(ctx.params.id));
86
160
  })
87
161
  .as('telescope_ui.entry');
88
162
  router
89
163
  .get(`${apiBase}/trace/:traceId`, async (ctx) => {
90
- if (!(await enforceGuard(ctx, guard)))
164
+ if (!(await gate(ctx)))
91
165
  return;
92
166
  return api.trace(ctx, String(ctx.params.traceId));
93
167
  })
94
168
  .as('telescope_ui.trace');
95
169
  router
96
170
  .get(`${apiBase}/stats`, async (ctx) => {
97
- if (!(await enforceGuard(ctx, guard)))
171
+ if (!(await gate(ctx)))
98
172
  return;
99
173
  return api.stats(ctx);
100
174
  })
@@ -104,7 +178,7 @@ export default class TelescopeUiProvider {
104
178
  // 403 unless telescope_ui `replay.enabled` is set) on top of the read guard.
105
179
  router
106
180
  .post(`${apiBase}/requests/:id/replay`, async (ctx) => {
107
- if (!(await enforceGuard(ctx, guard)))
181
+ if (!(await gate(ctx)))
108
182
  return;
109
183
  return api.replayRequest(ctx, String(ctx.params.id), localPortOf(ctx));
110
184
  })
@@ -112,39 +186,49 @@ export default class TelescopeUiProvider {
112
186
  // Metrics analytics (stats/timeseries/percentiles/traces/waterfall) + N+1.
113
187
  router
114
188
  .get(`${apiBase}/metrics/stats`, async (ctx) => {
115
- if (!(await enforceGuard(ctx, guard)))
189
+ if (!(await gate(ctx)))
116
190
  return;
117
191
  return api.metricsStats(ctx);
118
192
  })
119
193
  .as('telescope_ui.metrics_stats');
120
194
  router
121
195
  .get(`${apiBase}/metrics/timeseries`, async (ctx) => {
122
- if (!(await enforceGuard(ctx, guard)))
196
+ if (!(await gate(ctx)))
123
197
  return;
124
198
  return api.metricsTimeseries(ctx);
125
199
  })
126
200
  .as('telescope_ui.metrics_timeseries');
127
201
  router
128
202
  .get(`${apiBase}/metrics/traces`, async (ctx) => {
129
- if (!(await enforceGuard(ctx, guard)))
203
+ if (!(await gate(ctx)))
130
204
  return;
131
205
  return api.metricsTraces(ctx);
132
206
  })
133
207
  .as('telescope_ui.metrics_traces');
134
208
  router
135
209
  .get(`${apiBase}/metrics/waterfall/:traceId`, async (ctx) => {
136
- if (!(await enforceGuard(ctx, guard)))
210
+ if (!(await gate(ctx)))
137
211
  return;
138
212
  return api.metricsWaterfall(ctx, String(ctx.params.traceId));
139
213
  })
140
214
  .as('telescope_ui.metrics_waterfall');
141
215
  router
142
216
  .get(`${apiBase}/metrics/n-plus-one/:traceId`, async (ctx) => {
143
- if (!(await enforceGuard(ctx, guard)))
217
+ if (!(await gate(ctx)))
144
218
  return;
145
219
  return api.metricsNPlusOne(ctx, String(ctx.params.traceId));
146
220
  })
147
221
  .as('telescope_ui.metrics_n_plus_one');
222
+ // Pulse — aggregated health rollup. Registered only when enabled in core config.
223
+ if (coreConfig.pulse.enabled) {
224
+ router
225
+ .get(`${apiBase}/metrics/pulse`, async (ctx) => {
226
+ if (!(await gate(ctx)))
227
+ return;
228
+ return api.metricsPulse(ctx);
229
+ })
230
+ .as('telescope_ui.metrics_pulse');
231
+ }
148
232
  // ───────────────────────── SSE live-stream (additive) ─────────────────────────
149
233
  // New entries (already redacted + post-sampling) streamed to the dashboard as
150
234
  // they arrive. Registered only when the entry-events bus is live (core
@@ -153,7 +237,7 @@ export default class TelescopeUiProvider {
153
237
  if (entryEvents) {
154
238
  router
155
239
  .get(`${apiBase}/stream`, async (ctx) => {
156
- if (!(await enforceGuard(ctx, guard)))
240
+ if (!(await gate(ctx)))
157
241
  return;
158
242
  const raw = ctx.response.response;
159
243
  raw.writeHead(200, {
@@ -184,14 +268,14 @@ export default class TelescopeUiProvider {
184
268
  const extApi = new ExtensionApi(registry, extCtx);
185
269
  router
186
270
  .get(`${apiBase}/meta`, async (ctx) => {
187
- if (!(await enforceGuard(ctx, guard)))
271
+ if (!(await gate(ctx)))
188
272
  return;
189
273
  return extApi.meta(ctx);
190
274
  })
191
275
  .as('telescope_ui.meta');
192
276
  router
193
277
  .get(`${apiBase}/ext/:ext/data/:provider`, async (ctx) => {
194
- if (!(await enforceGuard(ctx, guard)))
278
+ if (!(await gate(ctx)))
195
279
  return;
196
280
  return extApi.data(ctx, String(ctx.params.ext), String(ctx.params.provider));
197
281
  })
@@ -1 +1 @@
1
- {"version":3,"file":"telescope_ui_provider.js","sourceRoot":"","sources":["../../providers/telescope_ui_provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"telescope_ui_provider.js","sourceRoot":"","sources":["../../providers/telescope_ui_provider.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,15 @@ export default class TelescopeWatchersProvider {
18
18
  /** Read the watchers config from its own file or the telescope config block. */
19
19
  private resolve;
20
20
  boot(): Promise<void>;
21
+ /** Start the profiling watcher: it publishes a config-backed default for the
22
+ * opt-in `profile()` / `startProfile()` span helpers (no emitter, no global
23
+ * patch). While unstarted those helpers are a zero-cost no-op. */
24
+ private startProfilingWatcher;
25
+ /** Start the schedule watcher: it publishes a config-backed default for the
26
+ * opt-in `scheduleTask()` / `recordScheduledRun()` helpers (AdonisJS ships no
27
+ * scheduler event to tap, so integration is explicit — no emitter, no global
28
+ * patch). While unstarted those helpers are a zero-cost no-op. */
29
+ private startScheduleWatcher;
21
30
  /** Start the queue watcher: it taps the engine's `node:diagnostics_channel`
22
31
  * trace, so it needs no emitter and no container resolution. A no-op (nothing
23
32
  * publishes) when `@adonisjs/queue` is absent. */
@@ -29,8 +38,10 @@ export default class TelescopeWatchersProvider {
29
38
  * manager resolved from the container. A missing peer / binding degrades to a
30
39
  * no-op (the watcher itself no-ops on a null manager). */
31
40
  private startRedisWatcher;
32
- /** Start the http-client watcher: it patches the global `fetch`, so it needs
33
- * no emitter and no container resolution. */
41
+ /** Wire the http-client watcher: it does NOT patch any global (Adonis has no
42
+ * single built-in HTTP client). Instead it publishes a config-backed default
43
+ * for the opt-in `instrumentFetch(fetch)` helper users wrap their client with,
44
+ * so it needs no emitter and no container resolution. */
34
45
  private startHttpClientWatcher;
35
46
  /** Start the logs watcher: it taps the application logger resolved from the
36
47
  * container (instance-scoped, reversible method tee — no global patching). */
@@ -1 +1 @@
1
- {"version":3,"file":"telescope_watchers_provider.d.ts","sourceRoot":"","sources":["../../providers/telescope_watchers_provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AA6B/D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,OAAO,yBAAyB;IAGhC,SAAS,CAAC,GAAG,EAAE,kBAAkB;IAF7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;gBAE3C,GAAG,EAAE,kBAAkB;IAE7C,gFAAgF;IAChF,OAAO,CAAC,OAAO;IAeT,IAAI;IAuBV;;uDAEmD;IACnD,OAAO,CAAC,iBAAiB;IAWzB;iDAC6C;IAC7C,OAAO,CAAC,kBAAkB;IAW1B;;+DAE2D;YAC7C,iBAAiB;IAkB/B;kDAC8C;IAC9C,OAAO,CAAC,sBAAsB;IAW9B;mFAC+E;YACjE,gBAAgB;IAmB9B,uEAAuE;IACvE,OAAO,CAAC,YAAY;IAYd,QAAQ;CAUf"}
1
+ {"version":3,"file":"telescope_watchers_provider.d.ts","sourceRoot":"","sources":["../../providers/telescope_watchers_provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAgC/D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,OAAO,yBAAyB;IAGhC,SAAS,CAAC,GAAG,EAAE,kBAAkB;IAF7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;gBAE3C,GAAG,EAAE,kBAAkB;IAE7C,gFAAgF;IAChF,OAAO,CAAC,OAAO;IAeT,IAAI;IAmCV;;uEAEmE;IACnE,OAAO,CAAC,qBAAqB;IAc7B;;;uEAGmE;IACnE,OAAO,CAAC,oBAAoB;IAW5B;;uDAEmD;IACnD,OAAO,CAAC,iBAAiB;IAWzB;iDAC6C;IAC7C,OAAO,CAAC,kBAAkB;IAW1B;;+DAE2D;YAC7C,iBAAiB;IAkB/B;;;8DAG0D;IAC1D,OAAO,CAAC,sBAAsB;IAe9B;mFAC+E;YACjE,gBAAgB;IAmB9B,uEAAuE;IACvE,OAAO,CAAC,YAAY;IAYd,QAAQ;CAUf"}
@@ -5,8 +5,10 @@ import { HttpClientWatcher } from '../src/watchers/http_client_watcher.js';
5
5
  import { LogsWatcher } from '../src/watchers/logs_watcher.js';
6
6
  import { LucidQueryWatcher } from '../src/watchers/lucid_query_watcher.js';
7
7
  import { MailWatcher } from '../src/watchers/mail_watcher.js';
8
+ import { ProfilingWatcher } from '../src/watchers/profiling_watcher.js';
8
9
  import { QueueWatcher } from '../src/watchers/queue_watcher.js';
9
10
  import { RedisWatcher } from '../src/watchers/redis_watcher.js';
11
+ import { ScheduleWatcher } from '../src/watchers/schedule_watcher.js';
10
12
  /**
11
13
  * Wires `@adonis-agora/telescope/watchers` into the AdonisJS application.
12
14
  *
@@ -47,14 +49,20 @@ export default class TelescopeWatchersProvider {
47
49
  console.error(`TelescopeWatchersProvider: could not resolve the emitter: ${message}`);
48
50
  return;
49
51
  }
50
- if (config.watchers.has('query'))
51
- this.startWatcher(new LucidQueryWatcher(), emitter);
52
+ if (config.watchers.has('query')) {
53
+ this.startWatcher(new LucidQueryWatcher({
54
+ slowMs: config.query.slowMs,
55
+ captureBindings: config.query.captureBindings,
56
+ ignoreConnections: config.query.ignoreConnections,
57
+ normalize: config.query.normalize,
58
+ }), emitter);
59
+ }
52
60
  if (config.watchers.has('mail'))
53
61
  this.startWatcher(new MailWatcher(), emitter);
54
62
  if (config.watchers.has('cache'))
55
63
  this.startWatcher(new CacheWatcher(), emitter);
56
64
  if (config.watchers.has('http-client'))
57
- this.startHttpClientWatcher();
65
+ this.startHttpClientWatcher(config);
58
66
  if (config.watchers.has('logs'))
59
67
  await this.startLogsWatcher();
60
68
  if (config.watchers.has('queue'))
@@ -63,6 +71,42 @@ export default class TelescopeWatchersProvider {
63
71
  this.startEventsWatcher(emitter);
64
72
  if (config.watchers.has('redis'))
65
73
  await this.startRedisWatcher();
74
+ if (config.watchers.has('profiling'))
75
+ this.startProfilingWatcher(config);
76
+ if (config.watchers.has('schedule'))
77
+ this.startScheduleWatcher(config);
78
+ }
79
+ /** Start the profiling watcher: it publishes a config-backed default for the
80
+ * opt-in `profile()` / `startProfile()` span helpers (no emitter, no global
81
+ * patch). While unstarted those helpers are a zero-cost no-op. */
82
+ startProfilingWatcher(config) {
83
+ const watcher = new ProfilingWatcher({
84
+ slowMs: config.profiling.slowMs,
85
+ minDurationMs: config.profiling.minDurationMs,
86
+ });
87
+ try {
88
+ watcher.start();
89
+ this.started.push(watcher);
90
+ }
91
+ catch (err) {
92
+ const message = err instanceof Error ? err.message : String(err);
93
+ console.error(`TelescopeWatchersProvider: failed to start profiling watcher: ${message}`);
94
+ }
95
+ }
96
+ /** Start the schedule watcher: it publishes a config-backed default for the
97
+ * opt-in `scheduleTask()` / `recordScheduledRun()` helpers (AdonisJS ships no
98
+ * scheduler event to tap, so integration is explicit — no emitter, no global
99
+ * patch). While unstarted those helpers are a zero-cost no-op. */
100
+ startScheduleWatcher(config) {
101
+ const watcher = new ScheduleWatcher({ slowMs: config.schedule.slowMs });
102
+ try {
103
+ watcher.start();
104
+ this.started.push(watcher);
105
+ }
106
+ catch (err) {
107
+ const message = err instanceof Error ? err.message : String(err);
108
+ console.error(`TelescopeWatchersProvider: failed to start schedule watcher: ${message}`);
109
+ }
66
110
  }
67
111
  /** Start the queue watcher: it taps the engine's `node:diagnostics_channel`
68
112
  * trace, so it needs no emitter and no container resolution. A no-op (nothing
@@ -113,10 +157,16 @@ export default class TelescopeWatchersProvider {
113
157
  console.error(`TelescopeWatchersProvider: failed to start redis watcher: ${message}`);
114
158
  }
115
159
  }
116
- /** Start the http-client watcher: it patches the global `fetch`, so it needs
117
- * no emitter and no container resolution. */
118
- startHttpClientWatcher() {
119
- const watcher = new HttpClientWatcher();
160
+ /** Wire the http-client watcher: it does NOT patch any global (Adonis has no
161
+ * single built-in HTTP client). Instead it publishes a config-backed default
162
+ * for the opt-in `instrumentFetch(fetch)` helper users wrap their client with,
163
+ * so it needs no emitter and no container resolution. */
164
+ startHttpClientWatcher(config) {
165
+ const watcher = new HttpClientWatcher({
166
+ slowMs: config.httpClient.slowMs,
167
+ ignoreHosts: config.httpClient.ignoreHosts,
168
+ captureBodies: config.httpClient.captureBodies,
169
+ });
120
170
  try {
121
171
  watcher.start();
122
172
  this.started.push(watcher);
@@ -1 +1 @@
1
- {"version":3,"file":"telescope_watchers_provider.js","sourceRoot":"","sources":["../../providers/telescope_watchers_provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"telescope_watchers_provider.js","sourceRoot":"","sources":["../../providers/telescope_watchers_provider.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { AnthropicMessagesClient } from './telescope_ai_diagnoser.js';
1
2
  /**
2
3
  * Default Claude model for diagnosis. Sonnet 4.6 is the best speed/intelligence
3
4
  * balance for a short structured triage; override with a more capable model
@@ -10,6 +11,12 @@ declare const DEFAULT_MODEL = "claude-sonnet-4-6";
10
11
  * huge, expensive response. 1024 tokens comfortably fits cause + fix + confidence.
11
12
  */
12
13
  declare const DEFAULT_MAX_TOKENS = 1024;
14
+ /**
15
+ * Default per-diagnosis wall-clock budget the coordinator enforces (ms). A slower
16
+ * model call loses the race and the caller (MCP tool / alert) proceeds without the
17
+ * AI note rather than hanging.
18
+ */
19
+ declare const DEFAULT_TIMEOUT_MS = 8000;
13
20
  /**
14
21
  * The shape of `config/telescope_ai.ts`. The API key is sourced from the
15
22
  * environment via the host's `env.get(...)` — never hardcoded — so it stays out of
@@ -17,27 +24,52 @@ declare const DEFAULT_MAX_TOKENS = 1024;
17
24
  */
18
25
  export interface TelescopeAiConfig {
19
26
  /**
20
- * Master switch. When `false` (or when no `apiKey` resolves), the diagnoser is a
21
- * no-op: `diagnose` returns `null` and never calls the API. Default `true`.
27
+ * Master switch. When `false` (or when neither an `apiKey` nor a `client`
28
+ * resolves), the diagnoser is a no-op: `diagnose` returns `null` and never calls
29
+ * the API. Default `true`.
22
30
  */
23
31
  enabled?: boolean;
24
32
  /**
25
- * The Anthropic API key, e.g. `env.get('ANTHROPIC_API_KEY')`. When absent the
26
- * diagnoser is effectively disabled (no-op), so the package degrades safely with
27
- * no key configured.
33
+ * The Anthropic API key, e.g. `env.get('ANTHROPIC_API_KEY')`. When absent (and no
34
+ * `client` is supplied) the diagnoser is effectively disabled (no-op), so the
35
+ * package degrades safely with no key configured.
28
36
  */
29
37
  apiKey?: string;
38
+ /**
39
+ * A host-supplied provider — any value matching {@link AnthropicMessagesClient}.
40
+ * When set, it is used verbatim (the `apiKey` is then ignored) so a host can wire
41
+ * its OWN model client without this package ever constructing the Anthropic SDK.
42
+ * This is the "provider hook" that keeps the LLM dependency optional.
43
+ */
44
+ client?: AnthropicMessagesClient;
30
45
  /** Claude model id. Default `claude-sonnet-4-6`. */
31
46
  model?: string;
32
47
  /** Hard cap on generated tokens per diagnosis. Default 1024. */
33
48
  maxTokens?: number;
49
+ /**
50
+ * How long a cached diagnosis stays fresh, in ms. Defaults to the diagnosis
51
+ * cache's own default (24h). A family is diagnosed once, then served from cache
52
+ * until this elapses.
53
+ */
54
+ cacheTtlMs?: number;
55
+ /**
56
+ * Per-diagnosis wall-clock timeout the coordinator enforces, in ms. `<= 0`
57
+ * disables it. Default 8000.
58
+ */
59
+ timeoutMs?: number;
34
60
  }
35
- /** The fully-resolved AI config the diagnoser acts on (no optionals). */
61
+ /** The fully-resolved AI config the diagnoser/coordinator act on (no optionals). */
36
62
  export interface ResolvedTelescopeAiConfig {
37
63
  enabled: boolean;
38
64
  apiKey: string | null;
65
+ /** A host-supplied provider, or `null` to construct one from `apiKey`. */
66
+ client: AnthropicMessagesClient | null;
39
67
  model: string;
40
68
  maxTokens: number;
69
+ /** Cache TTL override in ms, or `null` to use the cache's default. */
70
+ cacheTtlMs: number | null;
71
+ /** Coordinator per-diagnosis timeout in ms. */
72
+ timeoutMs: number;
41
73
  }
42
74
  /**
43
75
  * Identity helper giving `config/telescope_ai.ts` full type-checking, mirroring the
@@ -52,5 +84,5 @@ export interface ResolvedTelescopeAiConfig {
52
84
  export declare function defineConfig(config: TelescopeAiConfig): TelescopeAiConfig;
53
85
  /** Apply defaults to a (possibly partial) config. */
54
86
  export declare function resolveConfig(config?: TelescopeAiConfig): ResolvedTelescopeAiConfig;
55
- export { DEFAULT_MODEL, DEFAULT_MAX_TOKENS };
87
+ export { DEFAULT_MODEL, DEFAULT_MAX_TOKENS, DEFAULT_TIMEOUT_MS };
56
88
  //# sourceMappingURL=define_config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"define_config.d.ts","sourceRoot":"","sources":["../../../src/ai/define_config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,QAAA,MAAM,aAAa,sBAAsB,CAAC;AAE1C;;;;GAIG;AACH,QAAA,MAAM,kBAAkB,OAAO,CAAC;AAEhC;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,yEAAyE;AACzE,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,iBAAiB,GAAG,iBAAiB,CAEzE;AAED,qDAAqD;AACrD,wBAAgB,aAAa,CAAC,MAAM,GAAE,iBAAsB,GAAG,yBAAyB,CAWvF;AAED,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"define_config.d.ts","sourceRoot":"","sources":["../../../src/ai/define_config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAE3E;;;;GAIG;AACH,QAAA,MAAM,aAAa,sBAAsB,CAAC;AAE1C;;;;GAIG;AACH,QAAA,MAAM,kBAAkB,OAAO,CAAC;AAEhC;;;;GAIG;AACH,QAAA,MAAM,kBAAkB,OAAQ,CAAC;AAEjC;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,oFAAoF;AACpF,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,0EAA0E;IAC1E,MAAM,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,iBAAiB,GAAG,iBAAiB,CAEzE;AAED,qDAAqD;AACrD,wBAAgB,aAAa,CAAC,MAAM,GAAE,iBAAsB,GAAG,yBAAyB,CAgBvF;AAED,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAC"}
@@ -10,6 +10,12 @@ const DEFAULT_MODEL = 'claude-sonnet-4-6';
10
10
  * huge, expensive response. 1024 tokens comfortably fits cause + fix + confidence.
11
11
  */
12
12
  const DEFAULT_MAX_TOKENS = 1024;
13
+ /**
14
+ * Default per-diagnosis wall-clock budget the coordinator enforces (ms). A slower
15
+ * model call loses the race and the caller (MCP tool / alert) proceeds without the
16
+ * AI note rather than hanging.
17
+ */
18
+ const DEFAULT_TIMEOUT_MS = 8_000;
13
19
  /**
14
20
  * Identity helper giving `config/telescope_ai.ts` full type-checking, mirroring the
15
21
  * AdonisJS `defineConfig` convention.
@@ -26,14 +32,18 @@ export function defineConfig(config) {
26
32
  /** Apply defaults to a (possibly partial) config. */
27
33
  export function resolveConfig(config = {}) {
28
34
  const apiKey = typeof config.apiKey === 'string' && config.apiKey.trim() !== '' ? config.apiKey : null;
35
+ const client = config.client ?? null;
29
36
  return {
30
- // A configured-but-keyless install is treated as disabled so nothing ever
31
- // calls the API without credentials.
32
- enabled: (config.enabled ?? true) && apiKey !== null,
37
+ // A configured-but-provider-less install (no key AND no client) is treated as
38
+ // disabled so nothing ever calls a model without a way to reach one.
39
+ enabled: (config.enabled ?? true) && (apiKey !== null || client !== null),
33
40
  apiKey,
41
+ client,
34
42
  model: config.model ?? DEFAULT_MODEL,
35
43
  maxTokens: config.maxTokens ?? DEFAULT_MAX_TOKENS,
44
+ cacheTtlMs: typeof config.cacheTtlMs === 'number' && config.cacheTtlMs > 0 ? config.cacheTtlMs : null,
45
+ timeoutMs: typeof config.timeoutMs === 'number' ? config.timeoutMs : DEFAULT_TIMEOUT_MS,
36
46
  };
37
47
  }
38
- export { DEFAULT_MODEL, DEFAULT_MAX_TOKENS };
48
+ export { DEFAULT_MODEL, DEFAULT_MAX_TOKENS, DEFAULT_TIMEOUT_MS };
39
49
  //# sourceMappingURL=define_config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"define_config.js","sourceRoot":"","sources":["../../../src/ai/define_config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAE1C;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAiChC;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAC,MAAyB;IACpD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,aAAa,CAAC,SAA4B,EAAE;IAC1D,MAAM,MAAM,GACV,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1F,OAAO;QACL,0EAA0E;QAC1E,qCAAqC;QACrC,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,MAAM,KAAK,IAAI;QACpD,MAAM;QACN,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,aAAa;QACpC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,kBAAkB;KAClD,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"define_config.js","sourceRoot":"","sources":["../../../src/ai/define_config.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAE1C;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEhC;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,KAAK,CAAC;AA0DjC;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAC,MAAyB;IACpD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,aAAa,CAAC,SAA4B,EAAE;IAC1D,MAAM,MAAM,GACV,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1F,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC;IACrC,OAAO;QACL,8EAA8E;QAC9E,qEAAqE;QACrE,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,CAAC;QACzE,MAAM;QACN,MAAM;QACN,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,aAAa;QACpC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,kBAAkB;QACjD,UAAU,EACR,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI;QAC3F,SAAS,EAAE,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB;KACxF,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAC"}