@wizeworks/lens-node 0.3.0-alpha.3 → 0.3.0-alpha.5

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 (330) hide show
  1. package/dist/adapters/elasticsearch.d.ts +21 -0
  2. package/dist/adapters/elasticsearch.d.ts.map +1 -0
  3. package/dist/adapters/elasticsearch.js +93 -0
  4. package/dist/adapters/elasticsearch.js.map +1 -0
  5. package/dist/adapters/ioredis.d.ts +4 -0
  6. package/dist/adapters/ioredis.d.ts.map +1 -0
  7. package/dist/adapters/ioredis.js +60 -0
  8. package/dist/adapters/ioredis.js.map +1 -0
  9. package/dist/adapters/mongodb-shape.d.ts +16 -0
  10. package/dist/adapters/mongodb-shape.d.ts.map +1 -0
  11. package/dist/adapters/mongodb-shape.js +81 -0
  12. package/dist/adapters/mongodb-shape.js.map +1 -0
  13. package/dist/adapters/mongodb.d.ts +4 -0
  14. package/dist/adapters/mongodb.d.ts.map +1 -0
  15. package/dist/adapters/mongodb.js +95 -0
  16. package/dist/adapters/mongodb.js.map +1 -0
  17. package/dist/adapters/nosql.d.ts +14 -0
  18. package/dist/adapters/nosql.d.ts.map +1 -0
  19. package/dist/adapters/nosql.js +61 -0
  20. package/dist/adapters/nosql.js.map +1 -0
  21. package/dist/adapters/redis-shape.d.ts +31 -0
  22. package/dist/adapters/redis-shape.d.ts.map +1 -0
  23. package/dist/adapters/redis-shape.js +80 -0
  24. package/dist/adapters/redis-shape.js.map +1 -0
  25. package/dist/adapters/redis.d.ts +4 -0
  26. package/dist/adapters/redis.d.ts.map +1 -0
  27. package/dist/adapters/redis.js +93 -0
  28. package/dist/adapters/redis.js.map +1 -0
  29. package/dist/adapters/registry.d.ts +2 -0
  30. package/dist/adapters/registry.d.ts.map +1 -1
  31. package/dist/adapters/registry.js +2 -0
  32. package/dist/adapters/registry.js.map +1 -1
  33. package/dist/api.d.ts +5 -1
  34. package/dist/api.d.ts.map +1 -1
  35. package/dist/api.js +19 -7
  36. package/dist/api.js.map +1 -1
  37. package/dist/auto/config.d.ts +14 -0
  38. package/dist/auto/config.d.ts.map +1 -0
  39. package/dist/auto/config.js +51 -0
  40. package/dist/auto/config.js.map +1 -0
  41. package/dist/auto/esm-loader.d.ts +10 -0
  42. package/dist/auto/esm-loader.d.ts.map +1 -0
  43. package/dist/auto/esm-loader.js +10 -0
  44. package/dist/auto/esm-loader.js.map +1 -0
  45. package/dist/auto/esm-source.d.ts +15 -0
  46. package/dist/auto/esm-source.d.ts.map +1 -0
  47. package/dist/auto/esm-source.js +23 -0
  48. package/dist/auto/esm-source.js.map +1 -0
  49. package/dist/auto/frameworks.d.ts +3 -0
  50. package/dist/auto/frameworks.d.ts.map +1 -0
  51. package/dist/auto/frameworks.js +112 -0
  52. package/dist/auto/frameworks.js.map +1 -0
  53. package/dist/auto/handle.d.ts +7 -0
  54. package/dist/auto/handle.d.ts.map +1 -0
  55. package/dist/auto/handle.js +47 -0
  56. package/dist/auto/handle.js.map +1 -0
  57. package/dist/auto/hono.d.ts +3 -0
  58. package/dist/auto/hono.d.ts.map +1 -0
  59. package/dist/auto/hono.js +43 -0
  60. package/dist/auto/hono.js.map +1 -0
  61. package/dist/auto/http.d.ts +18 -0
  62. package/dist/auto/http.d.ts.map +1 -0
  63. package/dist/auto/http.js +77 -0
  64. package/dist/auto/http.js.map +1 -0
  65. package/dist/auto/install.d.ts +5 -0
  66. package/dist/auto/install.d.ts.map +1 -0
  67. package/dist/auto/install.js +26 -0
  68. package/dist/auto/install.js.map +1 -0
  69. package/dist/auto/libraries.d.ts +3 -0
  70. package/dist/auto/libraries.d.ts.map +1 -0
  71. package/dist/auto/libraries.js +118 -0
  72. package/dist/auto/libraries.js.map +1 -0
  73. package/dist/auto/module-hooks.d.ts +14 -0
  74. package/dist/auto/module-hooks.d.ts.map +1 -0
  75. package/dist/auto/module-hooks.js +90 -0
  76. package/dist/auto/module-hooks.js.map +1 -0
  77. package/dist/auto/nest.d.ts +7 -0
  78. package/dist/auto/nest.d.ts.map +1 -0
  79. package/dist/auto/nest.js +26 -0
  80. package/dist/auto/nest.js.map +1 -0
  81. package/dist/auto/owner.d.ts +19 -0
  82. package/dist/auto/owner.d.ts.map +1 -0
  83. package/dist/auto/owner.js +52 -0
  84. package/dist/auto/owner.js.map +1 -0
  85. package/dist/auto/prisma.d.ts +3 -0
  86. package/dist/auto/prisma.d.ts.map +1 -0
  87. package/dist/auto/prisma.js +55 -0
  88. package/dist/auto/prisma.js.map +1 -0
  89. package/dist/auto/sqlite.d.ts +3 -0
  90. package/dist/auto/sqlite.d.ts.map +1 -0
  91. package/dist/auto/sqlite.js +31 -0
  92. package/dist/auto/sqlite.js.map +1 -0
  93. package/dist/auto/state.d.ts +14 -0
  94. package/dist/auto/state.d.ts.map +1 -0
  95. package/dist/auto/state.js +16 -0
  96. package/dist/auto/state.js.map +1 -0
  97. package/dist/auto.d.ts +2 -0
  98. package/dist/auto.d.ts.map +1 -0
  99. package/dist/auto.js +4 -0
  100. package/dist/auto.js.map +1 -0
  101. package/dist/capture.d.ts +3 -1
  102. package/dist/capture.d.ts.map +1 -1
  103. package/dist/capture.js +1 -1
  104. package/dist/capture.js.map +1 -1
  105. package/dist/client-attributes.d.ts +19 -0
  106. package/dist/client-attributes.d.ts.map +1 -0
  107. package/dist/client-attributes.js +56 -0
  108. package/dist/client-attributes.js.map +1 -0
  109. package/dist/db.js +1 -1
  110. package/dist/db.js.map +1 -1
  111. package/dist/frameworks/hono.d.ts +16 -0
  112. package/dist/frameworks/hono.d.ts.map +1 -1
  113. package/dist/frameworks/hono.js +1 -1
  114. package/dist/frameworks/hono.js.map +1 -1
  115. package/dist/frameworks/koa.d.ts +2 -0
  116. package/dist/frameworks/koa.d.ts.map +1 -1
  117. package/dist/frameworks/koa.js +1 -1
  118. package/dist/frameworks/koa.js.map +1 -1
  119. package/dist/frameworks/nest-errors.d.ts +10 -0
  120. package/dist/frameworks/nest-errors.d.ts.map +1 -0
  121. package/dist/frameworks/nest-errors.js +75 -0
  122. package/dist/frameworks/nest-errors.js.map +1 -0
  123. package/dist/frameworks/nest-route.d.ts +31 -0
  124. package/dist/frameworks/nest-route.d.ts.map +1 -0
  125. package/dist/frameworks/nest-route.js +58 -0
  126. package/dist/frameworks/nest-route.js.map +1 -0
  127. package/dist/frameworks/nest.d.ts +16 -0
  128. package/dist/frameworks/nest.d.ts.map +1 -0
  129. package/dist/frameworks/nest.js +74 -0
  130. package/dist/frameworks/nest.js.map +1 -0
  131. package/dist/frameworks/node-server.d.ts +3 -0
  132. package/dist/frameworks/node-server.d.ts.map +1 -1
  133. package/dist/frameworks/node-server.js +1 -1
  134. package/dist/frameworks/node-server.js.map +1 -1
  135. package/dist/graphql/channels.d.ts +5 -0
  136. package/dist/graphql/channels.d.ts.map +1 -0
  137. package/dist/graphql/channels.js +56 -0
  138. package/dist/graphql/channels.js.map +1 -0
  139. package/dist/graphql/document.d.ts +13 -0
  140. package/dist/graphql/document.d.ts.map +1 -0
  141. package/dist/graphql/document.js +62 -0
  142. package/dist/graphql/document.js.map +1 -0
  143. package/dist/graphql/index.d.ts +13 -0
  144. package/dist/graphql/index.d.ts.map +1 -0
  145. package/dist/graphql/index.js +92 -0
  146. package/dist/graphql/index.js.map +1 -0
  147. package/dist/graphql/operation.d.ts +37 -0
  148. package/dist/graphql/operation.d.ts.map +1 -0
  149. package/dist/graphql/operation.js +58 -0
  150. package/dist/graphql/operation.js.map +1 -0
  151. package/dist/graphql/resolvers.d.ts +5 -0
  152. package/dist/graphql/resolvers.d.ts.map +1 -0
  153. package/dist/graphql/resolvers.js +79 -0
  154. package/dist/graphql/resolvers.js.map +1 -0
  155. package/dist/graphql/shared.d.ts +14 -0
  156. package/dist/graphql/shared.d.ts.map +1 -0
  157. package/dist/graphql/shared.js +21 -0
  158. package/dist/graphql/shared.js.map +1 -0
  159. package/dist/http-client.d.ts +8 -0
  160. package/dist/http-client.d.ts.map +1 -0
  161. package/dist/http-client.js +132 -0
  162. package/dist/http-client.js.map +1 -0
  163. package/dist/hub-connect.d.ts +2 -0
  164. package/dist/hub-connect.d.ts.map +1 -1
  165. package/dist/hub-connect.js +3 -1
  166. package/dist/hub-connect.js.map +1 -1
  167. package/dist/index.d.ts +12 -0
  168. package/dist/index.d.ts.map +1 -1
  169. package/dist/index.js +9 -0
  170. package/dist/index.js.map +1 -1
  171. package/dist/info.d.ts +2 -0
  172. package/dist/info.d.ts.map +1 -1
  173. package/dist/info.js +1 -1
  174. package/dist/info.js.map +1 -1
  175. package/dist/kit.d.ts +3 -1
  176. package/dist/kit.d.ts.map +1 -1
  177. package/dist/kit.js +1 -0
  178. package/dist/kit.js.map +1 -1
  179. package/dist/logger.d.ts +4 -4
  180. package/dist/logger.d.ts.map +1 -1
  181. package/dist/logger.js +11 -7
  182. package/dist/logger.js.map +1 -1
  183. package/dist/logs/bunyan.d.ts +1 -1
  184. package/dist/logs/bunyan.d.ts.map +1 -1
  185. package/dist/logs/bunyan.js +2 -3
  186. package/dist/logs/bunyan.js.map +1 -1
  187. package/dist/logs/consola.d.ts +1 -1
  188. package/dist/logs/consola.d.ts.map +1 -1
  189. package/dist/logs/consola.js +1 -1
  190. package/dist/logs/consola.js.map +1 -1
  191. package/dist/logs/console.d.ts +1 -1
  192. package/dist/logs/console.d.ts.map +1 -1
  193. package/dist/logs/console.js +5 -3
  194. package/dist/logs/console.js.map +1 -1
  195. package/dist/logs/otel.d.ts.map +1 -1
  196. package/dist/logs/otel.js +1 -3
  197. package/dist/logs/otel.js.map +1 -1
  198. package/dist/logs/pino.d.ts +1 -1
  199. package/dist/logs/pino.d.ts.map +1 -1
  200. package/dist/logs/pino.js +2 -3
  201. package/dist/logs/pino.js.map +1 -1
  202. package/dist/logs/winston.d.ts +1 -1
  203. package/dist/logs/winston.d.ts.map +1 -1
  204. package/dist/logs/winston.js +2 -3
  205. package/dist/logs/winston.js.map +1 -1
  206. package/dist/loose-logs.d.ts +13 -0
  207. package/dist/loose-logs.d.ts.map +1 -0
  208. package/dist/loose-logs.js +21 -0
  209. package/dist/loose-logs.js.map +1 -0
  210. package/dist/mcp-find.d.ts.map +1 -1
  211. package/dist/mcp-find.js +40 -8
  212. package/dist/mcp-find.js.map +1 -1
  213. package/dist/mcp-memory.d.ts +7 -0
  214. package/dist/mcp-memory.d.ts.map +1 -0
  215. package/dist/mcp-memory.js +10 -0
  216. package/dist/mcp-memory.js.map +1 -0
  217. package/dist/mcp-overview.d.ts +5 -0
  218. package/dist/mcp-overview.d.ts.map +1 -0
  219. package/dist/mcp-overview.js +71 -0
  220. package/dist/mcp-overview.js.map +1 -0
  221. package/dist/mcp-page.d.ts +28 -0
  222. package/dist/mcp-page.d.ts.map +1 -0
  223. package/dist/mcp-page.js +77 -0
  224. package/dist/mcp-page.js.map +1 -0
  225. package/dist/mcp-problems.d.ts +5 -0
  226. package/dist/mcp-problems.d.ts.map +1 -0
  227. package/dist/mcp-problems.js +56 -0
  228. package/dist/mcp-problems.js.map +1 -0
  229. package/dist/mcp-projects.d.ts.map +1 -1
  230. package/dist/mcp-projects.js +7 -2
  231. package/dist/mcp-projects.js.map +1 -1
  232. package/dist/mcp-search.d.ts.map +1 -1
  233. package/dist/mcp-search.js +9 -5
  234. package/dist/mcp-search.js.map +1 -1
  235. package/dist/mcp-shared.d.ts +37 -1
  236. package/dist/mcp-shared.d.ts.map +1 -1
  237. package/dist/mcp-shared.js +3 -0
  238. package/dist/mcp-shared.js.map +1 -1
  239. package/dist/mcp-store.d.ts +2 -2
  240. package/dist/mcp-store.d.ts.map +1 -1
  241. package/dist/mcp-store.js +6 -5
  242. package/dist/mcp-store.js.map +1 -1
  243. package/dist/mcp-tags.d.ts +8 -0
  244. package/dist/mcp-tags.d.ts.map +1 -0
  245. package/dist/mcp-tags.js +22 -0
  246. package/dist/mcp-tags.js.map +1 -0
  247. package/dist/mcp-traffic.d.ts +5 -0
  248. package/dist/mcp-traffic.d.ts.map +1 -0
  249. package/dist/mcp-traffic.js +87 -0
  250. package/dist/mcp-traffic.js.map +1 -0
  251. package/dist/mcp.d.ts +4 -1
  252. package/dist/mcp.d.ts.map +1 -1
  253. package/dist/mcp.js +14 -3
  254. package/dist/mcp.js.map +1 -1
  255. package/dist/messaging/bullmq.d.ts +4 -0
  256. package/dist/messaging/bullmq.d.ts.map +1 -0
  257. package/dist/messaging/bullmq.js +137 -0
  258. package/dist/messaging/bullmq.js.map +1 -0
  259. package/dist/messaging/shared.d.ts +10 -4
  260. package/dist/messaging/shared.d.ts.map +1 -1
  261. package/dist/messaging/shared.js +13 -4
  262. package/dist/messaging/shared.js.map +1 -1
  263. package/dist/messaging/sqs-message.d.ts +35 -0
  264. package/dist/messaging/sqs-message.d.ts.map +1 -0
  265. package/dist/messaging/sqs-message.js +66 -0
  266. package/dist/messaging/sqs-message.js.map +1 -0
  267. package/dist/messaging/sqs.d.ts +4 -0
  268. package/dist/messaging/sqs.d.ts.map +1 -0
  269. package/dist/messaging/sqs.js +104 -0
  270. package/dist/messaging/sqs.js.map +1 -0
  271. package/dist/processor.d.ts +2 -1
  272. package/dist/processor.d.ts.map +1 -1
  273. package/dist/processor.js +8 -3
  274. package/dist/processor.js.map +1 -1
  275. package/dist/real/real.d.ts +20 -0
  276. package/dist/real/real.d.ts.map +1 -0
  277. package/dist/real/real.js +42 -0
  278. package/dist/real/real.js.map +1 -0
  279. package/dist/request-capture.d.ts.map +1 -1
  280. package/dist/request-capture.js +2 -1
  281. package/dist/request-capture.js.map +1 -1
  282. package/dist/request-naming.d.ts +8 -0
  283. package/dist/request-naming.d.ts.map +1 -0
  284. package/dist/request-naming.js +29 -0
  285. package/dist/request-naming.js.map +1 -0
  286. package/dist/sampling.d.ts.map +1 -1
  287. package/dist/sampling.js +2 -2
  288. package/dist/sampling.js.map +1 -1
  289. package/dist/search-api.d.ts +4 -3
  290. package/dist/search-api.d.ts.map +1 -1
  291. package/dist/search-api.js +8 -7
  292. package/dist/search-api.js.map +1 -1
  293. package/dist/sourcemaps.d.ts +15 -0
  294. package/dist/sourcemaps.d.ts.map +1 -0
  295. package/dist/sourcemaps.js +68 -0
  296. package/dist/sourcemaps.js.map +1 -0
  297. package/dist/spans.d.ts +3 -0
  298. package/dist/spans.d.ts.map +1 -1
  299. package/dist/spans.js +9 -1
  300. package/dist/spans.js.map +1 -1
  301. package/dist/store-entries.d.ts +34 -0
  302. package/dist/store-entries.d.ts.map +1 -0
  303. package/dist/store-entries.js +70 -0
  304. package/dist/store-entries.js.map +1 -0
  305. package/dist/store.d.ts +4 -1
  306. package/dist/store.d.ts.map +1 -1
  307. package/dist/store.js +19 -22
  308. package/dist/store.js.map +1 -1
  309. package/dist/tags-api.d.ts +9 -0
  310. package/dist/tags-api.d.ts.map +1 -0
  311. package/dist/tags-api.js +16 -0
  312. package/dist/tags-api.js.map +1 -0
  313. package/dist/test/helpers.d.ts +15 -0
  314. package/dist/test/helpers.d.ts.map +1 -0
  315. package/dist/test/helpers.js +56 -0
  316. package/dist/test/helpers.js.map +1 -0
  317. package/dist/tracing.d.ts +10 -1
  318. package/dist/tracing.d.ts.map +1 -1
  319. package/dist/tracing.js +17 -8
  320. package/dist/tracing.js.map +1 -1
  321. package/dist/types.d.ts +16 -2
  322. package/dist/types.d.ts.map +1 -1
  323. package/dist/ui.d.ts.map +1 -1
  324. package/dist/ui.js +3 -2
  325. package/dist/ui.js.map +1 -1
  326. package/dist/wizelens.d.ts +3 -1
  327. package/dist/wizelens.d.ts.map +1 -1
  328. package/dist/wizelens.js +28 -12
  329. package/dist/wizelens.js.map +1 -1
  330. package/package.json +26 -4
package/dist/mcp-find.js CHANGED
@@ -17,11 +17,35 @@ async function slowQueries(data, threshold, range, limit) {
17
17
  }
18
18
  return rows;
19
19
  }
20
- function nPlusOne(traces, n) {
21
- return traces.flatMap((t) => [
22
- ...findNPlusOneDb(t, n).map((f) => ({ traceId: t.traceId, kind: "db", shape: f.shape, count: f.count, totalMs: f.totalMs })),
23
- ...findNPlusOneHttp(t, n).map((f) => ({ traceId: t.traceId, kind: "http", shape: f.shape, count: f.count, totalMs: f.totalMs })),
24
- ]);
20
+ /** Requests read to find N+1 candidates with another repeat count, and traces of them loaded. */
21
+ const N1_SCAN = 5_000;
22
+ const N1_LOAD = 200;
23
+ const iso = (ms) => new Date(ms).toISOString();
24
+ /** From the stats: the N+1 insights of the whole range, at the host's threshold. */
25
+ async function fromStats(data, range) {
26
+ const m = await data.page("insights", range, { status: "all" });
27
+ return m.groups
28
+ .filter((g) => g.kind === "n+1-db" || g.kind === "n+1-http")
29
+ .map((g) => ({ kind: g.kind === "n+1-db" ? "db" : "http", shape: g.shape, endpoints: g.endpoints.slice(0, 5), requests: g.occurrences, repeats: g.count, totalMs: Math.round(g.totalMs), lastSeen: iso(g.lastSeenMs), exampleTraceId: g.exampleTraceId }));
30
+ }
31
+ /** With another threshold: the requests with that many database or HTTP calls, most first, read whole and grouped by shape. */
32
+ async function fromTraces(data, n, range) {
33
+ const requests = await findAll(data, "requests", null, range, N1_SCAN);
34
+ const busy = requests.filter((r) => r.dbCount >= n || r.fetchCount >= n).sort((a, b) => Math.max(b.dbCount, b.fetchCount) - Math.max(a.dbCount, a.fetchCount)).slice(0, N1_LOAD);
35
+ const groups = new Map();
36
+ for (const r of busy) {
37
+ const t = await data.get(r.traceId, false);
38
+ if (!t)
39
+ continue;
40
+ const found = [...findNPlusOneDb(t, n).map((f) => ({ kind: "db", f })), ...findNPlusOneHttp(t, n).map((f) => ({ kind: "http", f }))];
41
+ for (const { kind, f } of found) {
42
+ const g = groups.get(`${kind}|${f.shape}`) ?? { kind, shape: f.shape, endpoints: [], requests: 0, repeats: 0, totalMs: 0, lastSeen: iso(t.startMs), exampleTraceId: t.traceId };
43
+ if (!g.endpoints.includes(r.endpoint) && g.endpoints.length < 5)
44
+ g.endpoints.push(r.endpoint);
45
+ groups.set(`${kind}|${f.shape}`, { ...g, requests: g.requests + 1, repeats: g.repeats + f.count, totalMs: Math.round(g.totalMs + f.totalMs) });
46
+ }
47
+ }
48
+ return [...groups.values()];
25
49
  }
26
50
  function registerSlowQueries(server, src) {
27
51
  const inputSchema = {
@@ -37,11 +61,19 @@ function registerSlowQueries(server, src) {
37
61
  });
38
62
  }
39
63
  function registerNPlusOne(server, src) {
40
- const inputSchema = { ...src.arg, minRepeats: z.number().int().min(2).optional().describe(`Default ${src.defaults.nPlusOneThreshold}.`) };
41
- const description = "Find N+1 patterns (same SQL or same HTTP call shape repeated in one trace).";
64
+ const inputSchema = {
65
+ ...src.arg,
66
+ minRepeats: z.number().int().min(2).optional().describe(`Default ${src.defaults.nPlusOneThreshold}, the project's threshold.`),
67
+ limit: z.number().int().min(1).max(200).optional().describe("Default 20."),
68
+ range: rangeArg("to look"),
69
+ };
70
+ const description = "Find N+1 patterns (the same SQL or HTTP call shape repeated in one request), grouped by shape, the most time first, from the whole store.";
42
71
  server.registerTool("find_n_plus_one", { description, inputSchema, annotations: READ_ONLY }, async (args) => {
43
72
  const data = await src.open("find_n_plus_one", args);
44
- return json(nPlusOne(await data.all(), args.minRepeats ?? data.nPlusOneThreshold));
73
+ const n = args.minRepeats ?? data.nPlusOneThreshold;
74
+ const range = args.range ?? "24h";
75
+ const groups = data.page && n === data.nPlusOneThreshold ? await fromStats(data, range) : await fromTraces(data, n, range);
76
+ return json(groups.sort((a, b) => b.totalMs - a.totalMs).slice(0, args.limit ?? 20));
45
77
  });
46
78
  }
47
79
  /** find_slow_queries and find_n_plus_one. */
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-find.js","sourceRoot":"","sources":["../src/mcp-find.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-find.js","sourceRoot":"","sources":["../src/mcp-find.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type ModelOf, type PageName, type TimeRange, type Trace } from "@wizeworks/lens-core";
2
+ /** get_page and get_overview on the app's own traces, with its thresholds. */
3
+ export declare function memoryPages(traces: () => readonly Trace[], o: {
4
+ slowQueryMs: number;
5
+ nPlusOneThreshold: number;
6
+ }, now?: () => number): <P extends PageName>(page: P, range: TimeRange, params?: Record<string, string>) => Promise<ModelOf<P>>;
7
+ //# sourceMappingURL=mcp-memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-memory.d.ts","sourceRoot":"","sources":["../src/mcp-memory.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,OAAO,EAAE,KAAK,QAAQ,EAA4B,KAAK,SAAS,EAAE,KAAK,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAEzI,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,SAAS,KAAK,EAAE,EAAE,CAAC,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,GAAE,MAAM,MAAiB,IAC/H,CAAC,SAAS,QAAQ,QAAQ,CAAC,SAAS,SAAS,WAAU,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAQ,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAIvH"}
@@ -0,0 +1,10 @@
1
+ // Page models for the in-app MCP tools: computed from the traces this app keeps, the way the dashboard does in the browser.
2
+ import { memoryExecutor, pageContext, runPageSync } from "@wizeworks/lens-core";
3
+ /** get_page and get_overview on the app's own traces, with its thresholds. */
4
+ export function memoryPages(traces, o, now = Date.now) {
5
+ return async (page, range, params = {}) => {
6
+ const ex = memoryExecutor(traces(), o);
7
+ return runPageSync(page, pageContext(range, now(), params, { slowQueryMs: o.slowQueryMs }), ex);
8
+ };
9
+ }
10
+ //# sourceMappingURL=mcp-memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-memory.js","sourceRoot":"","sources":["../src/mcp-memory.ts"],"names":[],"mappings":"AAAA,4HAA4H;AAC5H,OAAO,EAAE,cAAc,EAA+B,WAAW,EAAE,WAAW,EAA8B,MAAM,sBAAsB,CAAC;AAEzI,8EAA8E;AAC9E,MAAM,UAAU,WAAW,CAAC,MAA8B,EAAE,CAAqD,EAAE,GAAG,GAAiB,IAAI,CAAC,GAAG;IAC7I,OAAO,KAAK,EAAsB,IAAO,EAAE,KAAgB,EAAE,MAAM,GAA2B,EAAE,EAAuB,EAAE;QACvH,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;QACvC,OAAO,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAClG,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { type Source } from "./mcp-shared.js";
3
+ /** get_overview: the dashboard's overview for a morning report. On a host with several projects, no `project` reads them all. */
4
+ export declare function registerOverviewTool(server: McpServer, src: Source): void;
5
+ //# sourceMappingURL=mcp-overview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-overview.d.ts","sourceRoot":"","sources":["../src/mcp-overview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAwD,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAgEpG,iIAAiI;AACjI,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAYzE"}
@@ -0,0 +1,71 @@
1
+ import { z } from "zod";
2
+ import { json, READ_ONLY } from "./mcp-shared.js";
3
+ const RANGES = ["1h", "6h", "24h", "7d"];
4
+ const TOP_ERRORS = 10;
5
+ const SEVERITY = { unhealthy: 0, degraded: 1, healthy: 2, idle: 3 };
6
+ const iso = (ms) => new Date(ms).toISOString();
7
+ const round = (v) => (v == null ? null : Math.round(v * 100) / 100);
8
+ const headline = (h) => ({ value: round(h.value), previous: round(h.previous), changePercent: round(h.change) });
9
+ const serviceOf = (r) => ({ name: r.name, kind: r.kind, status: r.status, requests: r.requests, errors: r.errors, errorRatePercent: round(r.errorRate), avgMs: round(r.avgMs), p95Ms: round(r.p95Ms) });
10
+ const errorOf = (g) => ({
11
+ type: g.type,
12
+ message: g.message,
13
+ service: g.service,
14
+ endpoint: g.endpoint,
15
+ count: g.count,
16
+ critical: g.critical,
17
+ firstSeen: iso(g.firstSeenMs),
18
+ lastSeen: iso(g.lastSeenMs),
19
+ traceId: g.traceIds[0] ?? null,
20
+ });
21
+ const insightOf = (i) => ({ title: i.title, impact: i.impact, occurrences: i.occurrences, totalMs: round(i.totalMs), endpoints: i.endpoints.slice(0, 3) });
22
+ /** One project's morning report: traffic against the window before, every service's health, the top errors, and the biggest insights. */
23
+ async function reportOf(data, range) {
24
+ const [ov, svc, err] = await Promise.all([data.page("overview", range), data.page("services", range), data.page("errors", range)]);
25
+ const services = [...svc.rows].sort((a, b) => SEVERITY[a.status] - SEVERITY[b.status] || b.requests - a.requests);
26
+ return {
27
+ window: { from: iso(ov.meta.window.from), to: iso(ov.meta.window.to), comparedWith: ov.meta.compareLabel },
28
+ stillSettling: ov.meta.settling ?? 0,
29
+ requests: headline(ov.headlines.total),
30
+ errorRatePercent: headline(ov.headlines.errorRate),
31
+ avgDurationMs: headline(ov.headlines.avgDuration),
32
+ needsAttention: services.filter((s) => s.status === "unhealthy" || s.status === "degraded").map((s) => `${s.name}: ${s.status}`),
33
+ services: services.map(serviceOf),
34
+ exceptions: err.exceptions,
35
+ topErrors: [...err.groups].sort((a, b) => b.count - a.count).slice(0, TOP_ERRORS).map(errorOf),
36
+ insights: ov.insights.map(insightOf),
37
+ };
38
+ }
39
+ /** Every project at once, the ones that need attention first, with totals across them. */
40
+ function summaryOf(range, reports) {
41
+ const sorted = [...reports].sort((a, b) => b.report.needsAttention.length - a.report.needsAttention.length || (b.report.requests.value ?? 0) - (a.report.requests.value ?? 0));
42
+ const services = reports.flatMap((r) => r.report.services);
43
+ return {
44
+ range,
45
+ totals: {
46
+ projects: reports.length,
47
+ requests: reports.reduce((t, r) => t + (r.report.requests.value ?? 0), 0),
48
+ exceptions: reports.reduce((t, r) => t + r.report.exceptions, 0),
49
+ services: services.length,
50
+ unhealthy: services.filter((s) => s.status === "unhealthy").length,
51
+ degraded: services.filter((s) => s.status === "degraded").length,
52
+ },
53
+ projects: sorted.map(({ project, report }) => ({ project: project.name, projectId: project.id, ...report })),
54
+ };
55
+ }
56
+ /** get_overview: the dashboard's overview for a morning report. On a host with several projects, no `project` reads them all. */
57
+ export function registerOverviewTool(server, src) {
58
+ if (!src.defaults.overview)
59
+ return;
60
+ const inputSchema = { ...src.arg, range: z.enum(RANGES).optional().describe("Time range, compared with the one before it. Default 24h.") };
61
+ const description = "A health report: requests, error rate, and duration against the window before; every service's status, traffic, errors, and p95; the top errors; and the biggest performance insights. Without `project` on a multi-project host, it covers every project. Good for a daily or morning report.";
62
+ server.registerTool("get_overview", { description, inputSchema, annotations: READ_ONLY }, async (args) => {
63
+ const range = args.range ?? "24h";
64
+ const named = args.project;
65
+ if (named || !src.each)
66
+ return json({ range, ...(await reportOf(await src.open("get_overview", args), range)) });
67
+ const all = await src.each("get_overview", args);
68
+ return json(summaryOf(range, await Promise.all(all.map(async ({ project, data }) => ({ project, report: await reportOf(data, range) })))));
69
+ });
70
+ }
71
+ //# sourceMappingURL=mcp-overview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-overview.js","sourceRoot":"","sources":["../src/mcp-overview.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { type Source } from "./mcp-shared.js";
3
+ /** The dashboard pages an agent may read, with what each holds and the parameters it takes. */
4
+ export declare const MCP_PAGES: {
5
+ readonly overview: "Headlines, charts, top errors, insights, and services. service: a service name.";
6
+ readonly services: "Every service with status, traffic, errors, and latency. service: the selected row.";
7
+ readonly service: "One service: endpoints, dependencies, versions, and errors. service (required): a name.";
8
+ readonly endpoint: "One endpoint: latency, errors, slowest requests, users affected. service, endpoint (\"GET /api/orders/{id}\"), both required.";
9
+ readonly requests: "Request list with totals. method, status (5xx, 4xx, 200), duration (slow, >1s), service, endpoint, user, q, sort, page, size.";
10
+ readonly traces: "Trace list. status (ok, error), duration, service, q, sort (time, duration), page, size.";
11
+ readonly errors: "Error groups. status (unresolved, resolved, ignored, all), service, type, endpoint, user, critical=1, new=1, q, sort (recent, count), page, size.";
12
+ readonly error: "One error group: occurrences over time, endpoints, users affected, stack trace. group (required): a group key from errors.";
13
+ readonly database: "Queries by shape, slowest and most called, N+1 and slow query counts. service, q, table, operation, database, sort, page, size.";
14
+ readonly query: "One query shape: calls, latency, endpoints. q (required): the shape from database.";
15
+ readonly insights: "Performance insights (N+1, slow queries, duplicates). area, impact, status, service, endpoint, q, key.";
16
+ readonly logs: "Log lines with level counts. level, exact=1, service, category, trace, user, q, page, size.";
17
+ readonly rendering: "Browser page views and components. q.";
18
+ readonly route: "One browser route. route (required).";
19
+ readonly "log-patterns": "Log lines grouped into patterns, with counts. level, exact=1, service, pattern, origin.";
20
+ readonly traffic: "Requests, errors, and latency per time bucket and per endpoint. service, endpoint, buckets (16, 24, 48), from, to (ms).";
21
+ readonly problems: "Problems: anomalies grouped with a suspected cause. service, sensitivity (high, medium, low), problem, at, focus.";
22
+ readonly uptime: "Uptime checks: status, response time, incidents. check (one check id).";
23
+ readonly users: "Signed-in users by requests. q, page, size.";
24
+ readonly user: "One user: requests, failures, errors they hit, slowest requests. user (required).";
25
+ };
26
+ /** get_page and get_alerts. */
27
+ export declare function registerPageTools(server: McpServer, src: Source): void;
28
+ //# sourceMappingURL=mcp-page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-page.d.ts","sourceRoot":"","sources":["../src/mcp-page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAmC,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAG/E,+FAA+F;AAC/F,eAAO,MAAM,SAAS;uBACV,iFAAiF;uBACjF,qFAAqF;sBACtF,yFAAyF;uBACxF,+HAA+H;uBAC/H,+HAA+H;qBACjI,0FAA0F;qBAC1F,mJAAmJ;oBACpJ,4HAA4H;uBACzH,iIAAiI;oBACpI,oFAAoF;uBACjF,wGAAwG;mBAC5G,6FAA6F;wBACxF,uCAAuC;oBAC3C,sCAAsC;6BAC7B,yFAAyF;sBAChG,yHAAyH;uBACxH,mHAAmH;qBACrH,wEAAwE;oBACzE,6CAA6C;mBAC9C,mFAAmF;CACrC,CAAC;AAoDvD,+BAA+B;AAC/B,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAGtE"}
@@ -0,0 +1,77 @@
1
+ import { z } from "zod";
2
+ import { json, READ_ONLY } from "./mcp-shared.js";
3
+ import { rangeArg } from "./mcp-store.js";
4
+ /** The dashboard pages an agent may read, with what each holds and the parameters it takes. */
5
+ export const MCP_PAGES = {
6
+ overview: "Headlines, charts, top errors, insights, and services. service: a service name.",
7
+ services: "Every service with status, traffic, errors, and latency. service: the selected row.",
8
+ service: "One service: endpoints, dependencies, versions, and errors. service (required): a name.",
9
+ endpoint: "One endpoint: latency, errors, slowest requests, users affected. service, endpoint (\"GET /api/orders/{id}\"), both required.",
10
+ requests: "Request list with totals. method, status (5xx, 4xx, 200), duration (slow, >1s), service, endpoint, user, q, sort, page, size.",
11
+ traces: "Trace list. status (ok, error), duration, service, q, sort (time, duration), page, size.",
12
+ errors: "Error groups. status (unresolved, resolved, ignored, all), service, type, endpoint, user, critical=1, new=1, q, sort (recent, count), page, size.",
13
+ error: "One error group: occurrences over time, endpoints, users affected, stack trace. group (required): a group key from errors.",
14
+ database: "Queries by shape, slowest and most called, N+1 and slow query counts. service, q, table, operation, database, sort, page, size.",
15
+ query: "One query shape: calls, latency, endpoints. q (required): the shape from database.",
16
+ insights: "Performance insights (N+1, slow queries, duplicates). area, impact, status, service, endpoint, q, key.",
17
+ logs: "Log lines with level counts. level, exact=1, service, category, trace, user, q, page, size.",
18
+ rendering: "Browser page views and components. q.",
19
+ route: "One browser route. route (required).",
20
+ "log-patterns": "Log lines grouped into patterns, with counts. level, exact=1, service, pattern, origin.",
21
+ traffic: "Requests, errors, and latency per time bucket and per endpoint. service, endpoint, buckets (16, 24, 48), from, to (ms).",
22
+ problems: "Problems: anomalies grouped with a suspected cause. service, sensitivity (high, medium, low), problem, at, focus.",
23
+ uptime: "Uptime checks: status, response time, incidents. check (one check id).",
24
+ users: "Signed-in users by requests. q, page, size.",
25
+ user: "One user: requests, failures, errors they hit, slowest requests. user (required).",
26
+ };
27
+ const PAGE_NAMES = Object.keys(MCP_PAGES);
28
+ function registerGetPage(server, src) {
29
+ if (!src.defaults.overview)
30
+ return;
31
+ const inputSchema = {
32
+ ...src.arg,
33
+ page: z.enum(PAGE_NAMES).describe(PAGE_NAMES.map((p) => `${p}: ${MCP_PAGES[p]}`).join(" | ")),
34
+ params: z.record(z.string(), z.string().max(500)).optional().describe("The page's parameters, as listed with `page`. Values are text."),
35
+ range: rangeArg("the page covers"),
36
+ };
37
+ const description = "Read one dashboard page's numbers, the same the dashboard shows, from the whole store. Pick the page and its parameters; for a list, page through with page and size.";
38
+ server.registerTool("get_page", { description, inputSchema, annotations: READ_ONLY }, async (args) => {
39
+ const data = await src.open("get_page", args);
40
+ try {
41
+ return json(await data.page(args.page, args.range ?? "24h", args.params ?? {}));
42
+ }
43
+ catch (err) {
44
+ return { ...json({ error: err instanceof Error ? err.message : String(err) }), isError: true };
45
+ }
46
+ });
47
+ }
48
+ /** Where a rule sends, without the secret part (webhook URLs, routing keys, addresses). */
49
+ const channelKinds = (cs) => cs.map((c) => c.kind);
50
+ const ruleOf = (r) => {
51
+ const { channels, ...rest } = r;
52
+ return { ...rest, channels: channelKinds(channels) };
53
+ };
54
+ const iso = (ms) => (ms === null ? null : new Date(ms).toISOString());
55
+ function reportOf(a) {
56
+ const names = new Map(a.rules.map((r) => [r.id, r.name]));
57
+ return {
58
+ firing: a.rules.filter((r) => r.enabled && r.state === "firing").map((r) => r.name),
59
+ rules: a.rules.map((r) => ({ ...ruleOf(r), lastEval: iso(r.lastEvalMs), mutedUntil: iso(r.mutedUntilMs) })),
60
+ events: a.events.map((e) => ({ rule: names.get(e.ruleId) ?? e.ruleId, kind: e.kind, value: e.value, message: e.message, time: iso(e.timeMs) })),
61
+ };
62
+ }
63
+ function registerGetAlerts(server, src) {
64
+ if (!src.defaults.alerts)
65
+ return;
66
+ const description = "List alert rules (what each watches, its threshold, and whether it is firing) and the newest alert events. Channel secrets are left out.";
67
+ server.registerTool("get_alerts", { description, inputSchema: { ...src.arg }, annotations: READ_ONLY }, async (args) => {
68
+ const data = await src.open("get_alerts", args);
69
+ return json(reportOf(await data.alerts()));
70
+ });
71
+ }
72
+ /** get_page and get_alerts. */
73
+ export function registerPageTools(server, src) {
74
+ registerGetPage(server, src);
75
+ registerGetAlerts(server, src);
76
+ }
77
+ //# sourceMappingURL=mcp-page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-page.js","sourceRoot":"","sources":["../src/mcp-page.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { type Source } from "./mcp-shared.js";
3
+ /** list_problems: services and endpoints above their normal, grouped into problems with a suspected cause. */
4
+ export declare function registerProblemTools(server: McpServer, src: Source): void;
5
+ //# sourceMappingURL=mcp-problems.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-problems.d.ts","sourceRoot":"","sources":["../src/mcp-problems.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAwD,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AA4CpG,8GAA8G;AAC9G,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAazE"}
@@ -0,0 +1,56 @@
1
+ import { causeText } from "@wizeworks/lens-core";
2
+ import { z } from "zod";
3
+ import { json, READ_ONLY } from "./mcp-shared.js";
4
+ const RANGES = ["1h", "6h", "24h", "7d"];
5
+ const iso = (ms) => new Date(ms).toISOString();
6
+ const round = (v) => Math.round(v * 100) / 100;
7
+ const anomalyOf = (a) => ({
8
+ metric: a.metric,
9
+ service: a.name,
10
+ endpoint: a.endpoint,
11
+ started: iso(a.startMs),
12
+ ongoing: a.ongoing,
13
+ value: round(a.peak.value),
14
+ normal: round(a.peak.normal),
15
+ alertsAbove: round(a.peak.upper),
16
+ });
17
+ const problemOf = (p) => ({
18
+ id: p.id,
19
+ title: p.title,
20
+ started: iso(p.startMs),
21
+ ended: p.ongoing ? null : iso(p.endMs),
22
+ ongoing: p.ongoing,
23
+ services: p.services.map((s) => `${s.name} (${s.kind})`),
24
+ suspectedCause: p.cause ? causeText(p.cause) : null,
25
+ otherCauses: p.causes.slice(1).map(causeText),
26
+ anomalies: p.anomalies.map(anomalyOf),
27
+ moreAnomalies: p.anomalyCount - p.anomalies.length,
28
+ });
29
+ function reportOf(m) {
30
+ const normal = m.baseline.mode === "week" ? "the same hour in earlier weeks" : "the same hour on earlier days";
31
+ return {
32
+ window: { from: iso(m.meta.window.from), to: iso(m.meta.window.to) },
33
+ baseline: m.baseline.learning ? `learning: needs two earlier ${m.baseline.mode}s with data, has ${m.baseline.samples}` : `normal is ${normal} (${m.baseline.samples} with data)`,
34
+ problems: m.total,
35
+ ongoing: m.ongoing,
36
+ list: m.problems.map(problemOf),
37
+ };
38
+ }
39
+ const problemsOf = async (data, range) => reportOf(await data.page("problems", range));
40
+ /** list_problems: services and endpoints above their normal, grouped into problems with a suspected cause. */
41
+ export function registerProblemTools(server, src) {
42
+ if (!src.defaults.overview)
43
+ return;
44
+ const inputSchema = { ...src.arg, range: z.enum(RANGES).optional().describe("Time range to look for problems in. Default 24h.") };
45
+ const description = "Problems: error rate, p95 duration, or traffic above normal (the same hour in earlier weeks, plain statistics) on services and endpoints that call each other, grouped by when they started. Each names a suspected cause: a new release, a new error group, a query, or a service further down the calls. Ongoing problems come first. Without `project` on a multi-project host, it covers every project.";
46
+ server.registerTool("list_problems", { description, inputSchema, annotations: READ_ONLY }, async (args) => {
47
+ const range = args.range ?? "24h";
48
+ const named = args.project;
49
+ if (named || !src.each)
50
+ return json({ range, ...(await problemsOf(await src.open("list_problems", args), range)) });
51
+ const all = await src.each("list_problems", args);
52
+ const projects = await Promise.all(all.map(async ({ project, data }) => ({ project: project.name, projectId: project.id, ...(await problemsOf(data, range)) })));
53
+ return json({ range, projects: projects.sort((a, b) => b.ongoing - a.ongoing || b.problems - a.problems) });
54
+ });
55
+ }
56
+ //# sourceMappingURL=mcp-problems.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-problems.js","sourceRoot":"","sources":["../src/mcp-problems.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,SAAS,EAAoD,MAAM,sBAAsB,CAAC;AACjH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAuC,SAAS,EAAe,MAAM,iBAAiB,CAAC;AAEpG,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAyC,CAAC;AAEjF,MAAM,GAAG,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AACvD,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AAEvD,MAAM,SAAS,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC;IACjC,MAAM,EAAE,CAAC,CAAC,MAAM;IAChB,OAAO,EAAE,CAAC,CAAC,IAAI;IACf,QAAQ,EAAE,CAAC,CAAC,QAAQ;IACpB,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC,OAAO;IAClB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1B,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IAC5B,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC;IACjC,EAAE,EAAE,CAAC,CAAC,EAAE;IACR,KAAK,EAAE,CAAC,CAAC,KAAK;IACd,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;IACvB,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IACtC,OAAO,EAAE,CAAC,CAAC,OAAO;IAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC;IACxD,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;IACnD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;IAC7C,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;IACrC,aAAa,EAAE,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM;CACnD,CAAC,CAAC;AAEH,SAAS,QAAQ,CAAC,CAAgB;IAChC,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,+BAA+B,CAAC;IAC/G,OAAO;QACL,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;QACpE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,QAAQ,CAAC,IAAI,oBAAoB,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,aAAa,MAAM,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,aAAa;QAChL,QAAQ,EAAE,CAAC,CAAC,KAAK;QACjB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,KAAK,EAAE,IAAmB,EAAE,KAAgB,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;AAElH,8GAA8G;AAC9G,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,GAAW;IACjE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ;QAAE,OAAO;IACnC,MAAM,WAAW,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC,EAAE,CAAC;IAClI,MAAM,WAAW,GACf,6YAA6Y,CAAC;IAChZ,MAAM,CAAC,YAAY,CAAC,eAAe,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACxG,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;QAClC,MAAM,KAAK,GAAI,IAA6B,CAAC,OAAO,CAAC;QACrD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACpH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAgD,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/M,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9G,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-projects.d.ts","sourceRoot":"","sources":["../src/mcp-projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EAAQ,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAa,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAItH,4CAA4C;AAC5C,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAMxD;AAID,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,EAAE,EAAE,SAAS,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAU7F;AAED,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAWrD;AAED,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,GAAG,IAAI,CAM5E"}
1
+ {"version":3,"file":"mcp-projects.d.ts","sourceRoot":"","sources":["../src/mcp-projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EAAQ,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAa,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAItH,4CAA4C;AAC5C,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAMxD;AAID,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,EAAE,EAAE,SAAS,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAU7F;AAED,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAmBrD;AAED,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,GAAG,IAAI,CAM5E"}
@@ -4,7 +4,7 @@ const auditLine = (service, tool, args) => `[wizelens] mcp tool=${tool} service=
4
4
  /** One data source: every call reads it. */
5
5
  export function singleSource(data) {
6
6
  return {
7
- defaults: { slowQueryMs: data.slowQueryMs, nPlusOneThreshold: data.nPlusOneThreshold, metrics: !!data.metrics, metricRanges: data.metricRanges },
7
+ defaults: { slowQueryMs: data.slowQueryMs, nPlusOneThreshold: data.nPlusOneThreshold, metrics: !!data.metrics, metricRanges: data.metricRanges, overview: !!data.page, alerts: !!data.alerts },
8
8
  arg: {},
9
9
  open: async (tool, args) => (data.audit(auditLine(data.service, tool, args)), data),
10
10
  };
@@ -29,13 +29,18 @@ export function pickProject(ps, wanted) {
29
29
  export function projectsSource(m) {
30
30
  const project = z.string().max(200).optional().describe("Project id or name, from list_projects. Needed when the key reads more than one project.");
31
31
  return {
32
- defaults: { slowQueryMs: m.slowQueryMs, nPlusOneThreshold: m.nPlusOneThreshold, metrics: m.metrics, metricRanges: m.metricRanges },
32
+ defaults: { slowQueryMs: m.slowQueryMs, nPlusOneThreshold: m.nPlusOneThreshold, metrics: m.metrics, metricRanges: m.metricRanges, overview: !!m.overview, alerts: !!m.alerts },
33
33
  arg: { project },
34
34
  open: async (tool, args) => {
35
35
  const data = await m.open(pickProject(m.projects, args.project).id);
36
36
  data.audit(auditLine(data.service, tool, args));
37
37
  return data;
38
38
  },
39
+ each: (tool, args) => Promise.all(m.projects.map(async (project) => {
40
+ const data = await m.open(project.id);
41
+ data.audit(auditLine(data.service, tool, args));
42
+ return { project, data };
43
+ })),
39
44
  };
40
45
  }
41
46
  /** list_projects: the projects this key reads, for the `project` argument. */
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-projects.js","sourceRoot":"","sources":["../src/mcp-projects.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-projects.js","sourceRoot":"","sources":["../src/mcp-projects.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-search.d.ts","sourceRoot":"","sources":["../src/mcp-search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAmB,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AA4C/D,kGAAkG;AAClG,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAGxE"}
1
+ {"version":3,"file":"mcp-search.d.ts","sourceRoot":"","sources":["../src/mcp-search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAmB,KAAK,MAAM,EAAU,MAAM,iBAAiB,CAAC;AAgDvE,kGAAkG;AAClG,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAGxE"}
@@ -1,12 +1,14 @@
1
- import { checkSearch, decodeCursor, SEARCH_KINDS, searchMemory, suggestMemory } from "@wizeworks/lens-core";
1
+ import { activeTags, checkSearch, decodeCursor, expandQuery, SEARCH_KINDS, searchMemory, suggestMemory, suggestTags } from "@wizeworks/lens-core";
2
2
  import { z } from "zod";
3
- import { json, READ_ONLY } from "./mcp-shared.js";
3
+ import { json, READ_ONLY, tagsOf } from "./mcp-shared.js";
4
+ import { pageTags } from "./mcp-tags.js";
4
5
  import { RANGES, windowOf } from "./mcp-store.js";
5
6
  const LANGUAGE = [
6
7
  "Search language: words and \"phrases\" match text (path, SQL, messages, errors).",
7
8
  "field:value with service, env, trace, span, name, method, path, route, status (500, 5xx, ok, error), duration (250ms, 1s), level, category, kind, user, error (true/false), message.",
8
9
  "@attribute:value for any span or log attribute, such as @user.id:42 or @db.system.name:postgres.",
9
10
  "Use >, >=, <, <= (status:>=500, duration:>1s), ranges a..b, * wildcards (path:/api/*), -term or NOT to exclude, OR, and parentheses.",
11
+ "tag:name matches a tag rule (list_tags) or a tag the app sets; results come with the tags on each.",
10
12
  ].join(" ");
11
13
  function registerSearch(server, src) {
12
14
  const inputSchema = {
@@ -23,8 +25,10 @@ function registerSearch(server, src) {
23
25
  const parsed = checkSearch(args.q);
24
26
  if (!parsed.ok)
25
27
  return { ...json({ error: parsed.error, start: parsed.start, end: parsed.end }), isError: true };
26
- const q = { kind: (args.kind ?? "requests"), node: parsed.node, window: windowOf(data, args.range ?? "24h"), limit: args.limit ?? 20, cursor: decodeCursor(args.cursor), env: data.env };
27
- return json(await (data.search ? data.search(q) : searchMemory(await data.all(), q)));
28
+ const raw = { kind: (args.kind ?? "requests"), node: parsed.node, window: windowOf(data, args.range ?? "24h"), limit: args.limit ?? 20, cursor: decodeCursor(args.cursor), env: data.env };
29
+ const { query, unknownTags } = expandQuery(raw, activeTags(await tagsOf(data)));
30
+ const page = await (data.search ? data.search(query) : searchMemory(await data.all(), query));
31
+ return json({ ...page, tags: await pageTags(data, page), unknownTags });
28
32
  });
29
33
  }
30
34
  function registerFields(server, src) {
@@ -38,7 +42,7 @@ function registerFields(server, src) {
38
42
  server.registerTool("search_fields", { description, inputSchema, annotations: READ_ONLY }, async (args) => {
39
43
  const data = await src.open("search_fields", args);
40
44
  const r = { field: args.field || null, prefix: args.prefix ?? "", window: windowOf(data, args.range ?? "24h"), limit: 50, env: data.env };
41
- return json(await (data.suggest ? data.suggest(r) : suggestMemory(await data.all(), r)));
45
+ return json(suggestTags(r, await tagsOf(data)) ?? (await (data.suggest ? data.suggest(r) : suggestMemory(await data.all(), r))));
42
46
  });
43
47
  }
44
48
  /** search and search_fields: the search language, on the host's store or on `all()` in memory. */
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-search.js","sourceRoot":"","sources":["../src/mcp-search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-search.js","sourceRoot":"","sources":["../src/mcp-search.ts"],"names":[],"mappings":"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"}