@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.
- package/dist/adapters/elasticsearch.d.ts +21 -0
- package/dist/adapters/elasticsearch.d.ts.map +1 -0
- package/dist/adapters/elasticsearch.js +93 -0
- package/dist/adapters/elasticsearch.js.map +1 -0
- package/dist/adapters/ioredis.d.ts +4 -0
- package/dist/adapters/ioredis.d.ts.map +1 -0
- package/dist/adapters/ioredis.js +60 -0
- package/dist/adapters/ioredis.js.map +1 -0
- package/dist/adapters/mongodb-shape.d.ts +16 -0
- package/dist/adapters/mongodb-shape.d.ts.map +1 -0
- package/dist/adapters/mongodb-shape.js +81 -0
- package/dist/adapters/mongodb-shape.js.map +1 -0
- package/dist/adapters/mongodb.d.ts +4 -0
- package/dist/adapters/mongodb.d.ts.map +1 -0
- package/dist/adapters/mongodb.js +95 -0
- package/dist/adapters/mongodb.js.map +1 -0
- package/dist/adapters/nosql.d.ts +14 -0
- package/dist/adapters/nosql.d.ts.map +1 -0
- package/dist/adapters/nosql.js +61 -0
- package/dist/adapters/nosql.js.map +1 -0
- package/dist/adapters/redis-shape.d.ts +31 -0
- package/dist/adapters/redis-shape.d.ts.map +1 -0
- package/dist/adapters/redis-shape.js +80 -0
- package/dist/adapters/redis-shape.js.map +1 -0
- package/dist/adapters/redis.d.ts +4 -0
- package/dist/adapters/redis.d.ts.map +1 -0
- package/dist/adapters/redis.js +93 -0
- package/dist/adapters/redis.js.map +1 -0
- package/dist/adapters/registry.d.ts +2 -0
- package/dist/adapters/registry.d.ts.map +1 -1
- package/dist/adapters/registry.js +2 -0
- package/dist/adapters/registry.js.map +1 -1
- package/dist/api.d.ts +5 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +19 -7
- package/dist/api.js.map +1 -1
- package/dist/auto/config.d.ts +14 -0
- package/dist/auto/config.d.ts.map +1 -0
- package/dist/auto/config.js +51 -0
- package/dist/auto/config.js.map +1 -0
- package/dist/auto/esm-loader.d.ts +10 -0
- package/dist/auto/esm-loader.d.ts.map +1 -0
- package/dist/auto/esm-loader.js +10 -0
- package/dist/auto/esm-loader.js.map +1 -0
- package/dist/auto/esm-source.d.ts +15 -0
- package/dist/auto/esm-source.d.ts.map +1 -0
- package/dist/auto/esm-source.js +23 -0
- package/dist/auto/esm-source.js.map +1 -0
- package/dist/auto/frameworks.d.ts +3 -0
- package/dist/auto/frameworks.d.ts.map +1 -0
- package/dist/auto/frameworks.js +112 -0
- package/dist/auto/frameworks.js.map +1 -0
- package/dist/auto/handle.d.ts +7 -0
- package/dist/auto/handle.d.ts.map +1 -0
- package/dist/auto/handle.js +47 -0
- package/dist/auto/handle.js.map +1 -0
- package/dist/auto/hono.d.ts +3 -0
- package/dist/auto/hono.d.ts.map +1 -0
- package/dist/auto/hono.js +43 -0
- package/dist/auto/hono.js.map +1 -0
- package/dist/auto/http.d.ts +18 -0
- package/dist/auto/http.d.ts.map +1 -0
- package/dist/auto/http.js +77 -0
- package/dist/auto/http.js.map +1 -0
- package/dist/auto/install.d.ts +5 -0
- package/dist/auto/install.d.ts.map +1 -0
- package/dist/auto/install.js +26 -0
- package/dist/auto/install.js.map +1 -0
- package/dist/auto/libraries.d.ts +3 -0
- package/dist/auto/libraries.d.ts.map +1 -0
- package/dist/auto/libraries.js +118 -0
- package/dist/auto/libraries.js.map +1 -0
- package/dist/auto/module-hooks.d.ts +14 -0
- package/dist/auto/module-hooks.d.ts.map +1 -0
- package/dist/auto/module-hooks.js +90 -0
- package/dist/auto/module-hooks.js.map +1 -0
- package/dist/auto/nest.d.ts +7 -0
- package/dist/auto/nest.d.ts.map +1 -0
- package/dist/auto/nest.js +26 -0
- package/dist/auto/nest.js.map +1 -0
- package/dist/auto/owner.d.ts +19 -0
- package/dist/auto/owner.d.ts.map +1 -0
- package/dist/auto/owner.js +52 -0
- package/dist/auto/owner.js.map +1 -0
- package/dist/auto/prisma.d.ts +3 -0
- package/dist/auto/prisma.d.ts.map +1 -0
- package/dist/auto/prisma.js +55 -0
- package/dist/auto/prisma.js.map +1 -0
- package/dist/auto/sqlite.d.ts +3 -0
- package/dist/auto/sqlite.d.ts.map +1 -0
- package/dist/auto/sqlite.js +31 -0
- package/dist/auto/sqlite.js.map +1 -0
- package/dist/auto/state.d.ts +14 -0
- package/dist/auto/state.d.ts.map +1 -0
- package/dist/auto/state.js +16 -0
- package/dist/auto/state.js.map +1 -0
- package/dist/auto.d.ts +2 -0
- package/dist/auto.d.ts.map +1 -0
- package/dist/auto.js +4 -0
- package/dist/auto.js.map +1 -0
- package/dist/capture.d.ts +3 -1
- package/dist/capture.d.ts.map +1 -1
- package/dist/capture.js +1 -1
- package/dist/capture.js.map +1 -1
- package/dist/client-attributes.d.ts +19 -0
- package/dist/client-attributes.d.ts.map +1 -0
- package/dist/client-attributes.js +56 -0
- package/dist/client-attributes.js.map +1 -0
- package/dist/db.js +1 -1
- package/dist/db.js.map +1 -1
- package/dist/frameworks/hono.d.ts +16 -0
- package/dist/frameworks/hono.d.ts.map +1 -1
- package/dist/frameworks/hono.js +1 -1
- package/dist/frameworks/hono.js.map +1 -1
- package/dist/frameworks/koa.d.ts +2 -0
- package/dist/frameworks/koa.d.ts.map +1 -1
- package/dist/frameworks/koa.js +1 -1
- package/dist/frameworks/koa.js.map +1 -1
- package/dist/frameworks/nest-errors.d.ts +10 -0
- package/dist/frameworks/nest-errors.d.ts.map +1 -0
- package/dist/frameworks/nest-errors.js +75 -0
- package/dist/frameworks/nest-errors.js.map +1 -0
- package/dist/frameworks/nest-route.d.ts +31 -0
- package/dist/frameworks/nest-route.d.ts.map +1 -0
- package/dist/frameworks/nest-route.js +58 -0
- package/dist/frameworks/nest-route.js.map +1 -0
- package/dist/frameworks/nest.d.ts +16 -0
- package/dist/frameworks/nest.d.ts.map +1 -0
- package/dist/frameworks/nest.js +74 -0
- package/dist/frameworks/nest.js.map +1 -0
- package/dist/frameworks/node-server.d.ts +3 -0
- package/dist/frameworks/node-server.d.ts.map +1 -1
- package/dist/frameworks/node-server.js +1 -1
- package/dist/frameworks/node-server.js.map +1 -1
- package/dist/graphql/channels.d.ts +5 -0
- package/dist/graphql/channels.d.ts.map +1 -0
- package/dist/graphql/channels.js +56 -0
- package/dist/graphql/channels.js.map +1 -0
- package/dist/graphql/document.d.ts +13 -0
- package/dist/graphql/document.d.ts.map +1 -0
- package/dist/graphql/document.js +62 -0
- package/dist/graphql/document.js.map +1 -0
- package/dist/graphql/index.d.ts +13 -0
- package/dist/graphql/index.d.ts.map +1 -0
- package/dist/graphql/index.js +92 -0
- package/dist/graphql/index.js.map +1 -0
- package/dist/graphql/operation.d.ts +37 -0
- package/dist/graphql/operation.d.ts.map +1 -0
- package/dist/graphql/operation.js +58 -0
- package/dist/graphql/operation.js.map +1 -0
- package/dist/graphql/resolvers.d.ts +5 -0
- package/dist/graphql/resolvers.d.ts.map +1 -0
- package/dist/graphql/resolvers.js +79 -0
- package/dist/graphql/resolvers.js.map +1 -0
- package/dist/graphql/shared.d.ts +14 -0
- package/dist/graphql/shared.d.ts.map +1 -0
- package/dist/graphql/shared.js +21 -0
- package/dist/graphql/shared.js.map +1 -0
- package/dist/http-client.d.ts +8 -0
- package/dist/http-client.d.ts.map +1 -0
- package/dist/http-client.js +132 -0
- package/dist/http-client.js.map +1 -0
- package/dist/hub-connect.d.ts +2 -0
- package/dist/hub-connect.d.ts.map +1 -1
- package/dist/hub-connect.js +3 -1
- package/dist/hub-connect.js.map +1 -1
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/info.d.ts +2 -0
- package/dist/info.d.ts.map +1 -1
- package/dist/info.js +1 -1
- package/dist/info.js.map +1 -1
- package/dist/kit.d.ts +3 -1
- package/dist/kit.d.ts.map +1 -1
- package/dist/kit.js +1 -0
- package/dist/kit.js.map +1 -1
- package/dist/logger.d.ts +4 -4
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +11 -7
- package/dist/logger.js.map +1 -1
- package/dist/logs/bunyan.d.ts +1 -1
- package/dist/logs/bunyan.d.ts.map +1 -1
- package/dist/logs/bunyan.js +2 -3
- package/dist/logs/bunyan.js.map +1 -1
- package/dist/logs/consola.d.ts +1 -1
- package/dist/logs/consola.d.ts.map +1 -1
- package/dist/logs/consola.js +1 -1
- package/dist/logs/consola.js.map +1 -1
- package/dist/logs/console.d.ts +1 -1
- package/dist/logs/console.d.ts.map +1 -1
- package/dist/logs/console.js +5 -3
- package/dist/logs/console.js.map +1 -1
- package/dist/logs/otel.d.ts.map +1 -1
- package/dist/logs/otel.js +1 -3
- package/dist/logs/otel.js.map +1 -1
- package/dist/logs/pino.d.ts +1 -1
- package/dist/logs/pino.d.ts.map +1 -1
- package/dist/logs/pino.js +2 -3
- package/dist/logs/pino.js.map +1 -1
- package/dist/logs/winston.d.ts +1 -1
- package/dist/logs/winston.d.ts.map +1 -1
- package/dist/logs/winston.js +2 -3
- package/dist/logs/winston.js.map +1 -1
- package/dist/loose-logs.d.ts +13 -0
- package/dist/loose-logs.d.ts.map +1 -0
- package/dist/loose-logs.js +21 -0
- package/dist/loose-logs.js.map +1 -0
- package/dist/mcp-find.d.ts.map +1 -1
- package/dist/mcp-find.js +40 -8
- package/dist/mcp-find.js.map +1 -1
- package/dist/mcp-memory.d.ts +7 -0
- package/dist/mcp-memory.d.ts.map +1 -0
- package/dist/mcp-memory.js +10 -0
- package/dist/mcp-memory.js.map +1 -0
- package/dist/mcp-overview.d.ts +5 -0
- package/dist/mcp-overview.d.ts.map +1 -0
- package/dist/mcp-overview.js +71 -0
- package/dist/mcp-overview.js.map +1 -0
- package/dist/mcp-page.d.ts +28 -0
- package/dist/mcp-page.d.ts.map +1 -0
- package/dist/mcp-page.js +77 -0
- package/dist/mcp-page.js.map +1 -0
- package/dist/mcp-problems.d.ts +5 -0
- package/dist/mcp-problems.d.ts.map +1 -0
- package/dist/mcp-problems.js +56 -0
- package/dist/mcp-problems.js.map +1 -0
- package/dist/mcp-projects.d.ts.map +1 -1
- package/dist/mcp-projects.js +7 -2
- package/dist/mcp-projects.js.map +1 -1
- package/dist/mcp-search.d.ts.map +1 -1
- package/dist/mcp-search.js +9 -5
- package/dist/mcp-search.js.map +1 -1
- package/dist/mcp-shared.d.ts +37 -1
- package/dist/mcp-shared.d.ts.map +1 -1
- package/dist/mcp-shared.js +3 -0
- package/dist/mcp-shared.js.map +1 -1
- package/dist/mcp-store.d.ts +2 -2
- package/dist/mcp-store.d.ts.map +1 -1
- package/dist/mcp-store.js +6 -5
- package/dist/mcp-store.js.map +1 -1
- package/dist/mcp-tags.d.ts +8 -0
- package/dist/mcp-tags.d.ts.map +1 -0
- package/dist/mcp-tags.js +22 -0
- package/dist/mcp-tags.js.map +1 -0
- package/dist/mcp-traffic.d.ts +5 -0
- package/dist/mcp-traffic.d.ts.map +1 -0
- package/dist/mcp-traffic.js +87 -0
- package/dist/mcp-traffic.js.map +1 -0
- package/dist/mcp.d.ts +4 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +14 -3
- package/dist/mcp.js.map +1 -1
- package/dist/messaging/bullmq.d.ts +4 -0
- package/dist/messaging/bullmq.d.ts.map +1 -0
- package/dist/messaging/bullmq.js +137 -0
- package/dist/messaging/bullmq.js.map +1 -0
- package/dist/messaging/shared.d.ts +10 -4
- package/dist/messaging/shared.d.ts.map +1 -1
- package/dist/messaging/shared.js +13 -4
- package/dist/messaging/shared.js.map +1 -1
- package/dist/messaging/sqs-message.d.ts +35 -0
- package/dist/messaging/sqs-message.d.ts.map +1 -0
- package/dist/messaging/sqs-message.js +66 -0
- package/dist/messaging/sqs-message.js.map +1 -0
- package/dist/messaging/sqs.d.ts +4 -0
- package/dist/messaging/sqs.d.ts.map +1 -0
- package/dist/messaging/sqs.js +104 -0
- package/dist/messaging/sqs.js.map +1 -0
- package/dist/processor.d.ts +2 -1
- package/dist/processor.d.ts.map +1 -1
- package/dist/processor.js +8 -3
- package/dist/processor.js.map +1 -1
- package/dist/real/real.d.ts +20 -0
- package/dist/real/real.d.ts.map +1 -0
- package/dist/real/real.js +42 -0
- package/dist/real/real.js.map +1 -0
- package/dist/request-capture.d.ts.map +1 -1
- package/dist/request-capture.js +2 -1
- package/dist/request-capture.js.map +1 -1
- package/dist/request-naming.d.ts +8 -0
- package/dist/request-naming.d.ts.map +1 -0
- package/dist/request-naming.js +29 -0
- package/dist/request-naming.js.map +1 -0
- package/dist/sampling.d.ts.map +1 -1
- package/dist/sampling.js +2 -2
- package/dist/sampling.js.map +1 -1
- package/dist/search-api.d.ts +4 -3
- package/dist/search-api.d.ts.map +1 -1
- package/dist/search-api.js +8 -7
- package/dist/search-api.js.map +1 -1
- package/dist/sourcemaps.d.ts +15 -0
- package/dist/sourcemaps.d.ts.map +1 -0
- package/dist/sourcemaps.js +68 -0
- package/dist/sourcemaps.js.map +1 -0
- package/dist/spans.d.ts +3 -0
- package/dist/spans.d.ts.map +1 -1
- package/dist/spans.js +9 -1
- package/dist/spans.js.map +1 -1
- package/dist/store-entries.d.ts +34 -0
- package/dist/store-entries.d.ts.map +1 -0
- package/dist/store-entries.js +70 -0
- package/dist/store-entries.js.map +1 -0
- package/dist/store.d.ts +4 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +19 -22
- package/dist/store.js.map +1 -1
- package/dist/tags-api.d.ts +9 -0
- package/dist/tags-api.d.ts.map +1 -0
- package/dist/tags-api.js +16 -0
- package/dist/tags-api.js.map +1 -0
- package/dist/test/helpers.d.ts +15 -0
- package/dist/test/helpers.d.ts.map +1 -0
- package/dist/test/helpers.js +56 -0
- package/dist/test/helpers.js.map +1 -0
- package/dist/tracing.d.ts +10 -1
- package/dist/tracing.d.ts.map +1 -1
- package/dist/tracing.js +17 -8
- package/dist/tracing.js.map +1 -1
- package/dist/types.d.ts +16 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +3 -2
- package/dist/ui.js.map +1 -1
- package/dist/wizelens.d.ts +3 -1
- package/dist/wizelens.d.ts.map +1 -1
- package/dist/wizelens.js +28 -12
- package/dist/wizelens.js.map +1 -1
- package/package.json +26 -4
package/dist/mcp-shared.d.ts
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
import type { ZodTypeAny } from "zod";
|
|
2
|
-
import type
|
|
2
|
+
import { type AlertRule, type MetricsModel, type ModelOf, type PageName, type SearchPage, type SearchQuery, type Suggestion, type SuggestRequest, type TagRule, type TimeRange, type Trace } from "@wizeworks/lens-core";
|
|
3
|
+
/** The page models get_overview, list_problems, get_timeseries, and group_requests read. */
|
|
4
|
+
export type OverviewPage = "overview" | "services" | "errors" | "problems" | "traffic";
|
|
5
|
+
/** One alert event, as get_alerts lists it. */
|
|
6
|
+
export interface McpAlertEvent {
|
|
7
|
+
ruleId: string;
|
|
8
|
+
kind: string;
|
|
9
|
+
value: number | null;
|
|
10
|
+
message: string;
|
|
11
|
+
timeMs: number;
|
|
12
|
+
}
|
|
13
|
+
/** The host's alert rules and their newest events. */
|
|
14
|
+
export interface McpAlerts {
|
|
15
|
+
rules: AlertRule[];
|
|
16
|
+
events: McpAlertEvent[];
|
|
17
|
+
}
|
|
3
18
|
/** What the MCP tools can read. Read-only by design. */
|
|
4
19
|
export interface McpDataSource {
|
|
5
20
|
service: string;
|
|
@@ -10,6 +25,8 @@ export interface McpDataSource {
|
|
|
10
25
|
nPlusOneThreshold: number;
|
|
11
26
|
/** Recent traces, newest first, for the tools that read whole traces in memory. A host may load them only when a tool asks. */
|
|
12
27
|
all(): Trace[] | Promise<Trace[]>;
|
|
28
|
+
/** With `search`: the traces the store's search does not have yet (not settled). Default `all()`. */
|
|
29
|
+
unsettled?(): Trace[] | Promise<Trace[]>;
|
|
13
30
|
get(traceId: string, federate: boolean): Promise<Trace | undefined>;
|
|
14
31
|
audit(line: string): void;
|
|
15
32
|
/** The metrics page for a range and page parameters. Without it, the metric tools are left out. */
|
|
@@ -24,7 +41,15 @@ export interface McpDataSource {
|
|
|
24
41
|
now?(): number;
|
|
25
42
|
/** The environment memory search gives this service's documents (in-app), as the HTTP search does. */
|
|
26
43
|
env?: string;
|
|
44
|
+
/** One dashboard page's model, from the host's stats, with the page's parameters. Without it, get_overview and get_page are left out. */
|
|
45
|
+
page?<P extends PageName>(page: P, range: TimeRange, params?: Record<string, string>): Promise<ModelOf<P>>;
|
|
46
|
+
/** Alert rules and their newest events. Without it, get_alerts is left out. */
|
|
47
|
+
alerts?(): Promise<McpAlerts>;
|
|
48
|
+
/** The project's tags (docs/TAGS-PLAN.md). Without it, only the built-ins. */
|
|
49
|
+
tags?(): readonly TagRule[] | Promise<readonly TagRule[]>;
|
|
27
50
|
}
|
|
51
|
+
/** The tags a tool reads: the host's, or the built-ins. */
|
|
52
|
+
export declare const tagsOf: (data: McpDataSource) => Promise<readonly TagRule[]>;
|
|
28
53
|
/** One project a multi-project host serves. */
|
|
29
54
|
export interface McpProject {
|
|
30
55
|
id: string;
|
|
@@ -39,6 +64,10 @@ export interface McpProjects {
|
|
|
39
64
|
/** True when every project has the metric tools. */
|
|
40
65
|
metrics: boolean;
|
|
41
66
|
metricRanges?: readonly TimeRange[];
|
|
67
|
+
/** True when every project has get_overview and get_page. */
|
|
68
|
+
overview?: boolean;
|
|
69
|
+
/** True when every project has get_alerts. */
|
|
70
|
+
alerts?: boolean;
|
|
42
71
|
projects: readonly McpProject[];
|
|
43
72
|
/** The data of one project from `projects`. */
|
|
44
73
|
open(projectId: string): Promise<McpDataSource>;
|
|
@@ -51,6 +80,8 @@ export interface McpDefaults {
|
|
|
51
80
|
nPlusOneThreshold: number;
|
|
52
81
|
metrics: boolean;
|
|
53
82
|
metricRanges?: readonly TimeRange[];
|
|
83
|
+
overview: boolean;
|
|
84
|
+
alerts: boolean;
|
|
54
85
|
}
|
|
55
86
|
/** Where the tools read. */
|
|
56
87
|
export interface Source {
|
|
@@ -59,6 +90,11 @@ export interface Source {
|
|
|
59
90
|
arg: Record<string, ZodTypeAny>;
|
|
60
91
|
/** The data for one tool call, after the call is audited. */
|
|
61
92
|
open(tool: string, args: object): Promise<McpDataSource>;
|
|
93
|
+
/** Several projects: the data of each, for a call that names none. Each one is audited. */
|
|
94
|
+
each?(tool: string, args: object): Promise<{
|
|
95
|
+
project: McpProject;
|
|
96
|
+
data: McpDataSource;
|
|
97
|
+
}[]>;
|
|
62
98
|
}
|
|
63
99
|
export declare const READ_ONLY: {
|
|
64
100
|
readOnlyHint: boolean;
|
package/dist/mcp-shared.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-shared.d.ts","sourceRoot":"","sources":["../src/mcp-shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-shared.d.ts","sourceRoot":"","sources":["../src/mcp-shared.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp-shared.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { tagList } from "@wizeworks/lens-core";
|
|
2
|
+
/** The tags a tool reads: the host's, or the built-ins. */
|
|
3
|
+
export const tagsOf = async (data) => (data.tags ? await data.tags() : tagList([], new Set()));
|
|
1
4
|
export const READ_ONLY = { readOnlyHint: true, openWorldHint: false };
|
|
2
5
|
export const json = (value) => ({
|
|
3
6
|
content: [{ type: "text", text: JSON.stringify(value, null, 2) }],
|
package/dist/mcp-shared.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-shared.js","sourceRoot":"","sources":["../src/mcp-shared.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp-shared.js","sourceRoot":"","sources":["../src/mcp-shared.ts"],"names":[],"mappings":"AACA,OAAO,EAAyJ,OAAO,EAA8B,MAAM,sBAAsB,CAAC;AAsDlO,2DAA2D;AAC3D,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,IAAmB,EAA+B,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;AAiD3I,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;AAEtE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,CAAC;IACvC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;CAC3E,CAAC,CAAC"}
|
package/dist/mcp-store.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type SearchItems, type SearchKind, type SearchNode, type TimeRange } from "@wizeworks/lens-core";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
import type
|
|
3
|
+
import { type McpDataSource } from "./mcp-shared.js";
|
|
4
4
|
export declare const RANGES: [TimeRange, ...TimeRange[]];
|
|
5
5
|
export declare const rangeArg: (what: string) => z.ZodOptional<z.ZodEnum<{
|
|
6
6
|
"15m": "15m";
|
|
@@ -14,7 +14,7 @@ export declare const windowOf: (data: McpDataSource, range: TimeRange) => {
|
|
|
14
14
|
from: number;
|
|
15
15
|
to: number;
|
|
16
16
|
};
|
|
17
|
-
/** The matches of a search, newest first, up to `max`: the store, plus the
|
|
17
|
+
/** The matches of a search, newest first, up to `max`: the store, plus the traces it has not indexed yet (they are indexed once they go quiet). `tag:` reads the host's tags. */
|
|
18
18
|
export declare function findAll<K extends SearchKind>(data: McpDataSource, kind: K, node: SearchNode | null, range: TimeRange, max: number): Promise<SearchItems[K][]>;
|
|
19
19
|
/** Every part must hold: tool filters as search text, and the caller's own search. Null parts are left out. */
|
|
20
20
|
export declare function allOf(parts: readonly (string | null | undefined)[]): {
|
package/dist/mcp-store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-store.d.ts","sourceRoot":"","sources":["../src/mcp-store.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"mcp-store.d.ts","sourceRoot":"","sources":["../src/mcp-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqD,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAA+C,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC1M,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,aAAa,EAAU,MAAM,iBAAiB,CAAC;AAG7D,eAAO,MAAM,MAAM,EAA+B,CAAC,SAAS,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;AAE9E,eAAO,MAAM,QAAQ,SAAU,MAAM;;;;;;;GAAqG,CAAC;AAI3I,eAAO,MAAM,QAAQ,SAAU,aAAa,SAAS,SAAS;IAEnD,IAAI;IAA+B,EAAE;CAC/C,CAAC;AAwBF,iLAAiL;AACjL,wBAAsB,OAAO,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAOnK;AAED,+GAA+G;AAC/G,wBAAgB,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CASzI"}
|
package/dist/mcp-store.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { checkSearch, decodeCursor, searchMemory, TIME_RANGES } from "@wizeworks/lens-core";
|
|
1
|
+
import { activeTags, checkSearch, decodeCursor, expandTags, searchMemory, TIME_RANGES } from "@wizeworks/lens-core";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
+
import { tagsOf } from "./mcp-shared.js";
|
|
3
4
|
// Tools that read the whole store through search, not a slice of recent traces (docs/SEARCH-PLAN.md, "MCP").
|
|
4
5
|
export const RANGES = Object.keys(TIME_RANGES);
|
|
5
6
|
export const rangeArg = (what) => z.enum(RANGES).optional().describe(`How far back ${what}: 15m, 1h, 6h, 24h (default), 7d, 30d.`);
|
|
@@ -27,12 +28,12 @@ async function storePages(data, base, max) {
|
|
|
27
28
|
} while (cursor && out.length < max);
|
|
28
29
|
return out;
|
|
29
30
|
}
|
|
30
|
-
/** The matches of a search, newest first, up to `max`: the store, plus the
|
|
31
|
+
/** The matches of a search, newest first, up to `max`: the store, plus the traces it has not indexed yet (they are indexed once they go quiet). `tag:` reads the host's tags. */
|
|
31
32
|
export async function findAll(data, kind, node, range, max) {
|
|
32
|
-
const base = { kind, node, window: windowOf(data, range), env: data.env };
|
|
33
|
-
const recent = searchMemory(await data.all(), { ...base, limit: max }).items;
|
|
33
|
+
const base = { kind, node: expandTags(node, activeTags(await tagsOf(data))).node, window: windowOf(data, range), env: data.env };
|
|
34
34
|
if (!data.search)
|
|
35
|
-
return
|
|
35
|
+
return searchMemory(await data.all(), { ...base, limit: max }).items;
|
|
36
|
+
const recent = searchMemory(await (data.unsettled ?? data.all)(), { ...base, limit: max }).items;
|
|
36
37
|
const seen = new Map();
|
|
37
38
|
for (const item of [...(await storePages(data, base, max)), ...recent])
|
|
38
39
|
seen.set(idOf(item), item);
|
package/dist/mcp-store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-store.js","sourceRoot":"","sources":["../src/mcp-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAwE,YAAY,EAAE,WAAW,EAAkB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-store.js","sourceRoot":"","sources":["../src/mcp-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { type SearchPage, type TagMatches } from "@wizeworks/lens-core";
|
|
3
|
+
import { type McpDataSource, type Source } from "./mcp-shared.js";
|
|
4
|
+
/** The tags on each result of a page, keyed by "traceId owner" as `api/tags/match` answers. */
|
|
5
|
+
export declare function pageTags(data: McpDataSource, page: SearchPage): Promise<TagMatches>;
|
|
6
|
+
/** list_tags: the tags `tag:name` reads, with their searches. */
|
|
7
|
+
export declare function registerTagTools(server: McpServer, src: Source): void;
|
|
8
|
+
//# sourceMappingURL=mcp-tags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-tags.d.ts","sourceRoot":"","sources":["../src/mcp-tags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAoC,KAAK,UAAU,EAAkC,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC1I,OAAO,EAAQ,KAAK,aAAa,EAAa,KAAK,MAAM,EAAU,MAAM,iBAAiB,CAAC;AAO3F,+FAA+F;AAC/F,wBAAsB,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAMzF;AAED,iEAAiE;AACjE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAMrE"}
|
package/dist/mcp-tags.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { activeTags, itemOwner, matchTags, searchMemory } from "@wizeworks/lens-core";
|
|
2
|
+
import { json, READ_ONLY, tagsOf } from "./mcp-shared.js";
|
|
3
|
+
// Tags for AI tools (docs/TAGS-PLAN.md): the project's tag rules, and which of them match a page of search results.
|
|
4
|
+
/** Runs one search page on the host's store, or in memory. */
|
|
5
|
+
const runnerOf = (data) => async (q) => (data.search ? data.search(q) : searchMemory(await data.all(), q));
|
|
6
|
+
/** The tags on each result of a page, keyed by "traceId owner" as `api/tags/match` answers. */
|
|
7
|
+
export async function pageTags(data, page) {
|
|
8
|
+
const items = page.items.map((item) => {
|
|
9
|
+
const r = item;
|
|
10
|
+
return { traceId: r.traceId, owner: itemOwner(page.kind, item), timeMs: r.startMs ?? r.timeMs ?? 0 };
|
|
11
|
+
});
|
|
12
|
+
return matchTags(runnerOf(data), page.kind, items, activeTags(await tagsOf(data)), data.env);
|
|
13
|
+
}
|
|
14
|
+
/** list_tags: the tags `tag:name` reads, with their searches. */
|
|
15
|
+
export function registerTagTools(server, src) {
|
|
16
|
+
const description = "List the project's tags: built-in and custom tag rules, each a name for a search. Use tag:name in search, list_traces q, or anything that takes a search.";
|
|
17
|
+
server.registerTool("list_tags", { description, inputSchema: { ...src.arg }, annotations: READ_ONLY }, async (args) => {
|
|
18
|
+
const data = await src.open("list_tags", args);
|
|
19
|
+
return json((await tagsOf(data)).map(({ name, query, builtIn, enabled }) => ({ name, query, builtIn, enabled })));
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=mcp-tags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-tags.js","sourceRoot":"","sources":["../src/mcp-tags.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAqC,YAAY,EAAmB,MAAM,sBAAsB,CAAC;AAC1I,OAAO,EAAE,IAAI,EAAsB,SAAS,EAAe,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE3F,oHAAoH;AAEpH,8DAA8D;AAC9D,MAAM,QAAQ,GAAG,CAAC,IAAmB,EAAE,EAAE,CAAC,KAAK,EAAE,CAAc,EAAuB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAE5J,+FAA+F;AAC/F,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAmB,EAAE,IAAgB;IAClE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACpC,MAAM,CAAC,GAAG,IAA8D,CAAC;QACzE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;IACvG,CAAC,CAAC,CAAC;IACH,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/F,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,GAAW;IAC7D,MAAM,WAAW,GAAG,2JAA2J,CAAC;IAChL,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACpH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IACpH,CAAC,CAAC,CAAC;AACL,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_timeseries and group_requests: exact traffic from the host's stats, where the host serves page models. */
|
|
4
|
+
export declare function registerTrafficTools(server: McpServer, src: Source): void;
|
|
5
|
+
//# sourceMappingURL=mcp-traffic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-traffic.d.ts","sourceRoot":"","sources":["../src/mcp-traffic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAwD,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AA0FpG,iHAAiH;AACjH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAIzE"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { json, READ_ONLY } from "./mcp-shared.js";
|
|
3
|
+
const RANGES = ["1h", "6h", "24h", "7d", "30d"];
|
|
4
|
+
const SORTS = { requests: (e) => e.requests, errors: (e) => e.errors, errorRate: (e) => e.errorRatePercent, p95: (e) => e.p95Ms ?? -1, avg: (e) => e.avgMs ?? -1 };
|
|
5
|
+
const MAX_ENDPOINTS = 200;
|
|
6
|
+
const iso = (ms) => new Date(ms).toISOString();
|
|
7
|
+
const round = (v) => (v == null ? null : Math.round(v * 100) / 100);
|
|
8
|
+
const statsOut = (s) => ({ requests: s.requests, errors: s.errors, errorRatePercent: round(s.errorRatePercent), avgMs: round(s.avgMs), p95Ms: round(s.p95Ms) });
|
|
9
|
+
const windowArgs = {
|
|
10
|
+
range: z.enum(RANGES).optional().describe("Time range ending now. Default 24h. Ignored when `from` and `to` are given."),
|
|
11
|
+
from: z.string().optional().describe("Start of a custom window, ISO 8601 (for example 2026-10-19T00:00:00Z). Use with `to`."),
|
|
12
|
+
to: z.string().optional().describe("End of a custom window, ISO 8601. Use with `from`."),
|
|
13
|
+
service: z.string().optional().describe("Only this service (its name, as get_overview lists it)."),
|
|
14
|
+
};
|
|
15
|
+
/** Page params from the tool's window and filter arguments. A bad time is an error the agent can read. */
|
|
16
|
+
function paramsOf(args, more = {}) {
|
|
17
|
+
const out = { ...more, ...(args.service ? { service: args.service } : {}) };
|
|
18
|
+
if (!args.from && !args.to)
|
|
19
|
+
return out;
|
|
20
|
+
const from = Date.parse(args.from ?? "");
|
|
21
|
+
const to = Date.parse(args.to ?? "");
|
|
22
|
+
if (!Number.isFinite(from) || !Number.isFinite(to) || to <= from)
|
|
23
|
+
throw new Error("Give `from` and `to` as ISO 8601 times, with `to` after `from`.");
|
|
24
|
+
return { ...out, from: String(from), to: String(to) };
|
|
25
|
+
}
|
|
26
|
+
const windowOut = (m) => ({ from: iso(m.meta.window.from), to: iso(m.meta.window.to), stillSettling: m.meta.settling ?? 0 });
|
|
27
|
+
function seriesOut(m) {
|
|
28
|
+
const scope = m.scope.found ? m.scope : { ...m.scope, note: `${m.scope.service} had no traffic in this window. get_overview lists the services.` };
|
|
29
|
+
const points = m.points.map((p) => ({ start: iso(p.start), ...statsOut(p) }));
|
|
30
|
+
return { window: windowOut(m), scope, bucketMinutes: round(m.bucketMs / 60_000), totals: statsOut(m.totals), points };
|
|
31
|
+
}
|
|
32
|
+
/** Endpoints sorted and cut, and the totals before the cut. */
|
|
33
|
+
function endpointsOut(list, sort, limit, minRequests) {
|
|
34
|
+
const kept = list.filter((e) => e.requests >= minRequests);
|
|
35
|
+
const by = SORTS[sort];
|
|
36
|
+
const sorted = [...kept].sort((a, b) => by(b) - by(a) || b.requests - a.requests);
|
|
37
|
+
const rows = sorted.slice(0, limit).map((e) => ({ ...(e.project ? { project: e.project } : {}), service: e.service, endpoint: e.endpoint, ...statsOut(e) }));
|
|
38
|
+
return { endpoints: kept.length, requests: kept.reduce((t, e) => t + e.requests, 0), shown: rows.length, rows };
|
|
39
|
+
}
|
|
40
|
+
/** One project's model, or each project's on a multi-project host when no `project` is named. */
|
|
41
|
+
async function modelsOf(src, tool, args, params) {
|
|
42
|
+
const read = (data) => data.page("traffic", args.range ?? "24h", params);
|
|
43
|
+
if (args.project || !src.each)
|
|
44
|
+
return [{ project: null, model: await read(await src.open(tool, args)) }];
|
|
45
|
+
const all = await src.each(tool, args);
|
|
46
|
+
return Promise.all(all.map(async ({ project, data }) => ({ project, model: await read(data) })));
|
|
47
|
+
}
|
|
48
|
+
function registerTimeseries(server, src) {
|
|
49
|
+
const inputSchema = {
|
|
50
|
+
...src.arg,
|
|
51
|
+
...windowArgs,
|
|
52
|
+
endpoint: z.string().optional().describe('Only this endpoint, as group_requests lists it (for example "GET /orders/{id}"). With or without `service`.'),
|
|
53
|
+
buckets: z.enum(["16", "24", "48"]).optional().describe("Buckets in the window. Default 24 (hourly over 24h)."),
|
|
54
|
+
};
|
|
55
|
+
const description = "Exact request counts over time: requests, errors, error rate, average, and p95 duration per bucket, from WizeLens's own counts (not a sample). For every request, one service, or one endpoint, over a range or a custom from–to window. Good for traffic and error charts.";
|
|
56
|
+
server.registerTool("get_timeseries", { description, inputSchema, annotations: READ_ONLY }, async (args) => {
|
|
57
|
+
const params = paramsOf(args, { buckets: args.buckets ?? "24", ...(args.endpoint ? { endpoint: args.endpoint } : {}) });
|
|
58
|
+
const models = await modelsOf(src, "get_timeseries", args, params);
|
|
59
|
+
if (models.length === 1 && !models[0].project)
|
|
60
|
+
return json(seriesOut(models[0].model));
|
|
61
|
+
return json({ projects: models.map(({ project, model }) => ({ project: project?.name, projectId: project?.id, ...seriesOut(model) })) });
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
function registerGroupRequests(server, src) {
|
|
65
|
+
const inputSchema = {
|
|
66
|
+
...src.arg,
|
|
67
|
+
...windowArgs,
|
|
68
|
+
sort: z.enum(Object.keys(SORTS)).optional().describe("Order: requests (default), errors, errorRate, p95, or avg."),
|
|
69
|
+
limit: z.number().int().min(1).max(MAX_ENDPOINTS).optional().describe("Endpoints to return. Default 50."),
|
|
70
|
+
minRequests: z.number().int().min(0).optional().describe("Leave out endpoints with fewer requests, for example when sorting by p95."),
|
|
71
|
+
};
|
|
72
|
+
const description = "Requests grouped by endpoint: count, errors, error rate, average, and p95 duration of every endpoint of your APIs and web apps, from WizeLens's own counts (not a sample). Over a range or a custom from–to window; without `project` on a multi-project host, across every project.";
|
|
73
|
+
server.registerTool("group_requests", { description, inputSchema, annotations: READ_ONLY }, async (args) => {
|
|
74
|
+
const models = await modelsOf(src, "group_requests", args, paramsOf(args));
|
|
75
|
+
const list = models.flatMap(({ project, model }) => model.endpoints.map((e) => ({ ...e, ...(project ? { project: project.name } : {}) })));
|
|
76
|
+
const window = models[0] ? windowOut(models[0].model) : null;
|
|
77
|
+
return json({ window, ...endpointsOut(list, args.sort ?? "requests", args.limit ?? 50, args.minRequests ?? 0) });
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/** get_timeseries and group_requests: exact traffic from the host's stats, where the host serves page models. */
|
|
81
|
+
export function registerTrafficTools(server, src) {
|
|
82
|
+
if (!src.defaults.overview)
|
|
83
|
+
return;
|
|
84
|
+
registerTimeseries(server, src);
|
|
85
|
+
registerGroupRequests(server, src);
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=mcp-traffic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-traffic.js","sourceRoot":"","sources":["../src/mcp-traffic.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
3
|
import { type McpDataSource, type McpProjects } from "./mcp-shared.js";
|
|
3
|
-
export type { McpDataSource, McpProject, McpProjects } from "./mcp-shared.js";
|
|
4
|
+
export type { McpDataSource, McpProject, McpProjects, OverviewPage } from "./mcp-shared.js";
|
|
5
|
+
/** The MCP server with every tool the data allows. */
|
|
6
|
+
export declare function createMcpServer(data: McpDataSource | McpProjects): McpServer;
|
|
4
7
|
/** Handle one MCP streamable HTTP request in stateless mode, for one data source or several projects. */
|
|
5
8
|
export declare function handleMcp(data: McpDataSource | McpProjects, req: IncomingMessage, res: ServerResponse, body: unknown): Promise<void>;
|
|
6
9
|
//# sourceMappingURL=mcp.d.ts.map
|
package/dist/mcp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQpE,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAe,MAAM,iBAAiB,CAAC;AAMpF,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAM5F,sDAAsD;AACtD,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,WAAW,GAAG,SAAS,CAe5E;AAED,yGAAyG;AACzG,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,WAAW,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAS1I"}
|
package/dist/mcp.js
CHANGED
|
@@ -2,13 +2,19 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
2
2
|
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
3
3
|
import { registerFindTools } from "./mcp-find.js";
|
|
4
4
|
import { registerMetricTools } from "./mcp-metrics.js";
|
|
5
|
+
import { registerOverviewTool } from "./mcp-overview.js";
|
|
6
|
+
import { registerProblemTools } from "./mcp-problems.js";
|
|
7
|
+
import { registerPageTools } from "./mcp-page.js";
|
|
5
8
|
import { projectsSource, registerProjectTools, singleSource } from "./mcp-projects.js";
|
|
6
9
|
import {} from "./mcp-shared.js";
|
|
7
10
|
import { registerSearchTools } from "./mcp-search.js";
|
|
11
|
+
import { registerTagTools } from "./mcp-tags.js";
|
|
8
12
|
import { registerTraceTools } from "./mcp-traces.js";
|
|
13
|
+
import { registerTrafficTools } from "./mcp-traffic.js";
|
|
9
14
|
const isProjects = (d) => "projects" in d;
|
|
10
|
-
const MANY = "
|
|
11
|
-
|
|
15
|
+
const MANY = "You can read several projects. Call list_projects, then pass `project` to the other tools. get_overview, get_timeseries, and group_requests without `project` cover all of them.";
|
|
16
|
+
/** The MCP server with every tool the data allows. */
|
|
17
|
+
export function createMcpServer(data) {
|
|
12
18
|
const many = isProjects(data) && data.projects.length > 1;
|
|
13
19
|
const server = new McpServer({ name: "wizelens", version: data.version }, many ? { instructions: MANY } : undefined);
|
|
14
20
|
const src = isProjects(data) ? projectsSource(data) : singleSource(data);
|
|
@@ -18,11 +24,16 @@ function createServer(data) {
|
|
|
18
24
|
registerFindTools(server, src);
|
|
19
25
|
registerMetricTools(server, src);
|
|
20
26
|
registerSearchTools(server, src);
|
|
27
|
+
registerTagTools(server, src);
|
|
28
|
+
registerOverviewTool(server, src);
|
|
29
|
+
registerTrafficTools(server, src);
|
|
30
|
+
registerProblemTools(server, src);
|
|
31
|
+
registerPageTools(server, src);
|
|
21
32
|
return server;
|
|
22
33
|
}
|
|
23
34
|
/** Handle one MCP streamable HTTP request in stateless mode, for one data source or several projects. */
|
|
24
35
|
export async function handleMcp(data, req, res, body) {
|
|
25
|
-
const server =
|
|
36
|
+
const server = createMcpServer(data);
|
|
26
37
|
const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined, enableJsonResponse: true });
|
|
27
38
|
res.on("close", () => {
|
|
28
39
|
void transport.close();
|
package/dist/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAqD,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { WizeLens } from "../types.js";
|
|
2
|
+
/** Trace BullMQ jobs. Pass the module (or `{ Queue, Worker, FlowProducer }`), or one instance. Returns false when nothing was patched. */
|
|
3
|
+
export declare function instrumentBullMq(wizelens: WizeLens, target: unknown): boolean;
|
|
4
|
+
//# sourceMappingURL=bullmq.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bullmq.d.ts","sourceRoot":"","sources":["../../src/messaging/bullmq.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA2J5C,0IAA0I;AAC1I,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAS7E"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { ATTR_MESSAGING } from "@wizeworks/lens-core";
|
|
2
|
+
import { captureOf, patchMethod } from "../adapters/registry.js";
|
|
3
|
+
import { injectInto, OPERATION_NAME, runInSpan, startConsumer, startProducer, tap } from "./shared.js";
|
|
4
|
+
const JOB_NAME = "messaging.bullmq.job.name";
|
|
5
|
+
const JOB_ATTEMPT = "messaging.bullmq.job.attempt";
|
|
6
|
+
const JOB_ATTEMPTS = "messaging.bullmq.job.attempts";
|
|
7
|
+
const JOB_DELAY = "messaging.bullmq.job.delay";
|
|
8
|
+
/** Errors BullMQ uses to move a job (delay it, wait for children, rate limit): not failures. */
|
|
9
|
+
const MOVES = new Set(["DelayedError", "WaitingChildrenError", "WaitingError", "RateLimitError"]);
|
|
10
|
+
const isMove = (err) => MOVES.has(String(err?.name));
|
|
11
|
+
const queueOf = (self) => String(self?.name ?? "unknown");
|
|
12
|
+
/** Job options carrying the trace in BullMQ's own telemetry slot. Repeating and opted-out jobs keep theirs. */
|
|
13
|
+
function stamp(ctx, opts) {
|
|
14
|
+
if (opts?.repeat || opts?.telemetry?.omitContext || opts?.telemetry?.metadata)
|
|
15
|
+
return opts;
|
|
16
|
+
const carrier = {};
|
|
17
|
+
injectInto(ctx, carrier);
|
|
18
|
+
return { ...opts, telemetry: { ...opts?.telemetry, metadata: JSON.stringify(carrier) } };
|
|
19
|
+
}
|
|
20
|
+
/** The trace headers a job carries, or undefined. */
|
|
21
|
+
function carrierOf(job) {
|
|
22
|
+
const metadata = job.opts?.telemetry?.metadata;
|
|
23
|
+
if (typeof metadata !== "string")
|
|
24
|
+
return undefined;
|
|
25
|
+
try {
|
|
26
|
+
const parsed = JSON.parse(metadata);
|
|
27
|
+
return parsed && typeof parsed === "object" ? parsed : undefined;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/** The job name when every job shares it, plus the delay of a single delayed job. */
|
|
34
|
+
function jobAttributes(op, jobs) {
|
|
35
|
+
const names = new Set(jobs.map((j) => j.name));
|
|
36
|
+
const a = { [OPERATION_NAME]: op };
|
|
37
|
+
if (names.size === 1)
|
|
38
|
+
a[JOB_NAME] = jobs[0].name;
|
|
39
|
+
if (jobs.length === 1 && jobs[0].opts?.delay)
|
|
40
|
+
a[JOB_DELAY] = jobs[0].opts.delay;
|
|
41
|
+
return a;
|
|
42
|
+
}
|
|
43
|
+
const setJobId = (span) => (job) => {
|
|
44
|
+
const id = job?.id;
|
|
45
|
+
if (id !== undefined && id !== null)
|
|
46
|
+
span.setAttribute(ATTR_MESSAGING.messageId, String(id));
|
|
47
|
+
};
|
|
48
|
+
function patchQueue(proto, tracer) {
|
|
49
|
+
patchMethod(proto, "add", (original) => function (...args) {
|
|
50
|
+
const [name, data, opts] = args;
|
|
51
|
+
const open = startProducer(tracer, { system: "bullmq", destination: queueOf(this), extra: jobAttributes("add", [{ name, opts }]) });
|
|
52
|
+
if (!open)
|
|
53
|
+
return original.apply(this, args);
|
|
54
|
+
const next = [name, data, stamp(open.ctx, opts), ...args.slice(3)];
|
|
55
|
+
return runInSpan(open.span, open.ctx, () => tap(original.apply(this, next), setJobId(open.span)));
|
|
56
|
+
});
|
|
57
|
+
patchMethod(proto, "addBulk", (original) => function (...args) {
|
|
58
|
+
const jobs = Array.isArray(args[0]) ? args[0] : [];
|
|
59
|
+
const facts = { system: "bullmq", destination: queueOf(this), batchSize: jobs.length, extra: jobAttributes("addBulk", jobs) };
|
|
60
|
+
const open = startProducer(tracer, facts);
|
|
61
|
+
if (!open)
|
|
62
|
+
return original.apply(this, args);
|
|
63
|
+
const next = jobs.map((j) => ({ ...j, opts: stamp(open.ctx, j.opts) }));
|
|
64
|
+
return runInSpan(open.span, open.ctx, () => original.apply(this, [next, ...args.slice(1)]));
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
/** Every job of a flow tree, root first. */
|
|
68
|
+
const nodesOf = (flow) => [flow, ...(flow.children ?? []).flatMap(nodesOf)];
|
|
69
|
+
const stampFlow = (ctx, flow) => ({
|
|
70
|
+
...flow,
|
|
71
|
+
opts: stamp(ctx, flow.opts),
|
|
72
|
+
...(flow.children ? { children: flow.children.map((c) => stampFlow(ctx, c)) } : {}),
|
|
73
|
+
});
|
|
74
|
+
/** One send span for a whole flow (or flows): every job in the tree carries the trace. */
|
|
75
|
+
function traceFlows(tracer, op, flows, add) {
|
|
76
|
+
const jobs = flows.flatMap(nodesOf);
|
|
77
|
+
const destination = [...new Set(jobs.map((j) => j.queueName))].join(", ") || "unknown";
|
|
78
|
+
const open = startProducer(tracer, { system: "bullmq", destination, batchSize: jobs.length, extra: jobAttributes(op, flows) });
|
|
79
|
+
if (!open)
|
|
80
|
+
return add(flows);
|
|
81
|
+
return runInSpan(open.span, open.ctx, () => add(flows.map((f) => stampFlow(open.ctx, f))));
|
|
82
|
+
}
|
|
83
|
+
function patchFlowProducer(proto, tracer) {
|
|
84
|
+
patchMethod(proto, "add", (original) => function (flow, ...rest) {
|
|
85
|
+
if (!flow || typeof flow !== "object")
|
|
86
|
+
return original.call(this, flow, ...rest);
|
|
87
|
+
return traceFlows(tracer, "add", [flow], ([next]) => original.call(this, next, ...rest));
|
|
88
|
+
});
|
|
89
|
+
patchMethod(proto, "addBulk", (original) => function (flows, ...rest) {
|
|
90
|
+
if (!Array.isArray(flows))
|
|
91
|
+
return original.call(this, flows, ...rest);
|
|
92
|
+
return traceFlows(tracer, "addBulk", flows, (next) => original.call(this, next, ...rest));
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/** Process span facts for one job: queue, id, name, and which attempt this is. */
|
|
96
|
+
function processFacts(job, queue) {
|
|
97
|
+
const extra = { [OPERATION_NAME]: "process", [JOB_ATTEMPT]: (job.attemptsMade ?? 0) + 1, [JOB_ATTEMPTS]: job.opts?.attempts ?? 1 };
|
|
98
|
+
if (job.name !== undefined)
|
|
99
|
+
extra[JOB_NAME] = job.name;
|
|
100
|
+
const messageId = job.id === undefined || job.id === null ? undefined : String(job.id);
|
|
101
|
+
return { system: "bullmq", destination: job.queueName ?? queue, messageId, extra };
|
|
102
|
+
}
|
|
103
|
+
/** A Worker runs its processor for each job (inline or sandboxed) through `callProcessJob`. */
|
|
104
|
+
function patchWorker(target, tracer) {
|
|
105
|
+
patchMethod(target, "callProcessJob", (original) => function (...args) {
|
|
106
|
+
const job = args[0];
|
|
107
|
+
if (!job || typeof job !== "object")
|
|
108
|
+
return original.apply(this, args);
|
|
109
|
+
const { span, ctx } = startConsumer(tracer, processFacts(job, queueOf(this)), carrierOf(job));
|
|
110
|
+
return runInSpan(span, ctx, () => original.apply(this, args), isMove);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
const CLASSES = [["Queue", patchQueue], ["FlowProducer", patchFlowProducer], ["Worker", patchWorker]];
|
|
114
|
+
/** Patch one instance: a Worker, a FlowProducer, or a Queue. */
|
|
115
|
+
function patchInstance(t, tracer) {
|
|
116
|
+
if (typeof t.callProcessJob === "function")
|
|
117
|
+
return (patchWorker(t, tracer), true);
|
|
118
|
+
if (typeof t.getFlow === "function")
|
|
119
|
+
return (patchFlowProducer(t, tracer), true);
|
|
120
|
+
if (typeof t.add === "function" && typeof t.addBulk === "function")
|
|
121
|
+
return (patchQueue(t, tracer), true);
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
/** Trace BullMQ jobs. Pass the module (or `{ Queue, Worker, FlowProducer }`), or one instance. Returns false when nothing was patched. */
|
|
125
|
+
export function instrumentBullMq(wizelens, target) {
|
|
126
|
+
const t = target;
|
|
127
|
+
if (!captureOf(wizelens) || !t || typeof t !== "object")
|
|
128
|
+
return false;
|
|
129
|
+
let found = false;
|
|
130
|
+
for (const [name, patch] of CLASSES) {
|
|
131
|
+
const proto = t[name]?.prototype;
|
|
132
|
+
if (proto)
|
|
133
|
+
(patch(proto, wizelens.tracer), (found = true));
|
|
134
|
+
}
|
|
135
|
+
return found || patchInstance(t, wizelens.tracer);
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=bullmq.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bullmq.js","sourceRoot":"","sources":["../../src/messaging/bullmq.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAyBvG,MAAM,QAAQ,GAAG,2BAA2B,CAAC;AAC7C,MAAM,WAAW,GAAG,8BAA8B,CAAC;AACnD,MAAM,YAAY,GAAG,+BAA+B,CAAC;AACrD,MAAM,SAAS,GAAG,4BAA4B,CAAC;AAC/C,gGAAgG;AAChG,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,sBAAsB,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAClG,MAAM,MAAM,GAAG,CAAC,GAAY,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAE,GAAoB,EAAE,IAAI,CAAC,CAAC,CAAC;AAEhF,MAAM,OAAO,GAAG,CAAC,IAAa,EAAE,EAAE,CAAC,MAAM,CAAE,IAAqB,EAAE,IAAI,IAAI,SAAS,CAAC,CAAC;AAErF,+GAA+G;AAC/G,SAAS,KAAK,CAAC,GAAY,EAAE,IAAyB;IACpD,IAAI,IAAI,EAAE,MAAM,IAAI,IAAI,EAAE,SAAS,EAAE,WAAW,IAAI,IAAI,EAAE,SAAS,EAAE,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3F,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACzB,OAAO,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;AAC3F,CAAC;AAED,qDAAqD;AACrD,SAAS,SAAS,CAAC,GAAY;IAC7B,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC;IAC/C,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7C,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAE,MAAkC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,qFAAqF;AACrF,SAAS,aAAa,CAAC,EAAU,EAAE,IAAe;IAChD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAe,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC;IAC/C,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;QAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC;IAClD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,KAAK;QAAE,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC;IAClF,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,IAAc,EAAE,EAAE,CAAC,CAAC,GAAY,EAAE,EAAE;IACpD,MAAM,EAAE,GAAI,GAAsB,EAAE,EAAE,CAAC;IACvC,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI;QAAE,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/F,CAAC,CAAC;AAEF,SAAS,UAAU,CAAC,KAAa,EAAE,MAAc;IAC/C,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE,CACrC,UAAyB,GAAG,IAAe;QACzC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,IAA8C,CAAC;QAC1E,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACpI,IAAI,CAAC,IAAI;YAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpG,CAAC,CACF,CAAC;IACF,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE,CACzC,UAAyB,GAAG,IAAe;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,CAAe,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,MAAM,KAAK,GAAG,EAAE,MAAM,EAAE,QAAiB,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC;QACvI,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI;YAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACxE,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC,CACF,CAAC;AACJ,CAAC;AAED,4CAA4C;AAC5C,MAAM,OAAO,GAAG,CAAC,IAAa,EAAa,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAEhG,MAAM,SAAS,GAAG,CAAC,GAAY,EAAE,IAAa,EAAW,EAAE,CAAC,CAAC;IAC3D,GAAG,IAAI;IACP,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC;IAC3B,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;CACpF,CAAC,CAAC;AAEH,0FAA0F;AAC1F,SAAS,UAAU,CAAC,MAAc,EAAE,EAAU,EAAE,KAAgB,EAAE,GAAiC;IACjG,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;IACvF,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/H,IAAI,CAAC,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7F,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa,EAAE,MAAc;IACtD,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE,CACrC,UAAyB,IAAa,EAAE,GAAG,IAAe;QACxD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;QACjF,OAAO,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,IAAe,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACtG,CAAC,CACF,CAAC;IACF,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE,CACzC,UAAyB,KAAc,EAAE,GAAG,IAAe;QACzD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;QACtE,OAAO,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,KAAkB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACzG,CAAC,CACF,CAAC;AACJ,CAAC;AAED,kFAAkF;AAClF,SAAS,YAAY,CAAC,GAAY,EAAE,KAAa;IAC/C,MAAM,KAAK,GAAe,EAAE,CAAC,cAAc,CAAC,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,IAAI,CAAC,EAAE,CAAC;IAC/I,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;QAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;IACvD,MAAM,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,SAAS,IAAI,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACvF,OAAO,EAAE,MAAM,EAAE,QAAiB,EAAE,WAAW,EAAE,GAAG,CAAC,SAAS,IAAI,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC9F,CAAC;AAED,+FAA+F;AAC/F,SAAS,WAAW,CAAC,MAAc,EAAE,MAAc;IACjD,WAAW,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,QAAQ,EAAE,EAAE,CACjD,UAAyB,GAAG,IAAe;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAmB,CAAC;QACtC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9F,OAAO,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IACxE,CAAC,CACF,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAU,CAAC;AAE/G,gEAAgE;AAChE,SAAS,aAAa,CAAC,CAA0B,EAAE,MAAc;IAC/D,IAAI,OAAO,CAAC,CAAC,cAAc,KAAK,UAAU;QAAE,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IAClF,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU;QAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IACjF,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,UAAU,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU;QAAE,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IACzG,OAAO,KAAK,CAAC;AACf,CAAC;AAED,0IAA0I;AAC1I,MAAM,UAAU,gBAAgB,CAAC,QAAkB,EAAE,MAAe;IAClE,MAAM,CAAC,GAAG,MAAwC,CAAC;IACnD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtE,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACpC,MAAM,KAAK,GAAI,CAAC,CAAC,IAAI,CAAwC,EAAE,SAAS,CAAC;QACzE,IAAI,KAAK;YAAE,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,KAAK,IAAI,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
import { type Context, type Span as OtelSpan, type Tracer } from "@opentelemetry/api";
|
|
2
|
-
export type MessagingSystem = "rabbitmq" | "kafka" | "servicebus";
|
|
1
|
+
import { type Attributes, type Context, type Span as OtelSpan, type Tracer } from "@opentelemetry/api";
|
|
2
|
+
export type MessagingSystem = "rabbitmq" | "kafka" | "servicebus" | "bullmq" | "aws_sqs";
|
|
3
|
+
/** OTel `messaging.operation.name`: the library's own name for the call ("add", "SendMessage"). */
|
|
4
|
+
export declare const OPERATION_NAME = "messaging.operation.name";
|
|
3
5
|
export interface MessageFacts {
|
|
4
6
|
system: MessagingSystem;
|
|
5
7
|
destination: string;
|
|
6
8
|
messageId?: string;
|
|
7
9
|
batchSize?: number;
|
|
8
10
|
bodySize?: number;
|
|
11
|
+
/** Library attributes for the span, for example the BullMQ job name. */
|
|
12
|
+
extra?: Attributes;
|
|
9
13
|
}
|
|
10
14
|
/** Start a send span inside the current request, or null when there is no request or a send is already open. */
|
|
11
15
|
export declare function startProducer(tracer: Tracer, m: MessageFacts): {
|
|
@@ -23,8 +27,10 @@ export declare function startConsumer(tracer: Tracer, m: MessageFacts, headers:
|
|
|
23
27
|
export { preciseNow as nowMs } from "../precise.js";
|
|
24
28
|
/** Record a finished pull (`get`, `receiveMessages`): one receive span from `startedMs`, joined to the producer when one message came back. */
|
|
25
29
|
export declare function recordReceive(tracer: Tracer, m: MessageFacts, headers: Record<string, unknown> | undefined, startedMs: number): void;
|
|
26
|
-
/** Run `fn` in the span's context and end the span when it settles (sync or promise).
|
|
27
|
-
export declare function runInSpan<T>(span: OtelSpan, ctx: Context, fn: () => T): T;
|
|
30
|
+
/** Run `fn` in the span's context and end the span when it settles (sync or promise). Errors `expected` accepts are not failures. */
|
|
31
|
+
export declare function runInSpan<T>(span: OtelSpan, ctx: Context, fn: () => T, expected?: (err: unknown) => boolean): T;
|
|
32
|
+
/** Hand the result to `fn` once it is ready (sync or promise), then pass it on unchanged. */
|
|
33
|
+
export declare function tap<T>(out: T, fn: (value: unknown) => void): T;
|
|
28
34
|
/** Byte length of a message body, when it is a string or bytes. */
|
|
29
35
|
export declare const sizeOf: (body: unknown) => number | undefined;
|
|
30
36
|
//# sourceMappingURL=shared.d.ts.map
|