@wizeworks/lens-node 0.3.0-alpha.3 → 0.3.0-alpha.4
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 +108 -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 +73 -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/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 +11 -0
- package/dist/graphql/index.d.ts.map +1 -0
- package/dist/graphql/index.js +83 -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/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/tracing.d.ts +6 -0
- package/dist/tracing.d.ts.map +1 -1
- package/dist/tracing.js +11 -7
- 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 +14 -4
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":"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"}
|
|
@@ -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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/messaging/shared.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/messaging/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,OAAO,EAA2C,KAAK,IAAI,IAAI,QAAQ,EAAmB,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAOjK,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,OAAO,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEzF,mGAAmG;AACnG,eAAO,MAAM,cAAc,6BAA6B,CAAC;AAEzD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,eAAe,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAmBD,gHAAgH;AAChH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAKtG;AAED,yEAAyE;AACzE,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAE/E;AAOD,sGAAsG;AACtG,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,CAI7I;AAED,0FAA0F;AAC1F,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,eAAe,CAAC;AAEpD,+IAA+I;AAC/I,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAGpI;AAED,qIAAqI;AACrI,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,GAAG,CAAC,CAc/G;AAED,6FAA6F;AAC7F,wBAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,CAAC,CAG9D;AAED,mEAAmE;AACnE,eAAO,MAAM,MAAM,SAAU,OAAO,KAAG,MAAM,GAAG,SAC+D,CAAC"}
|
package/dist/messaging/shared.js
CHANGED
|
@@ -4,6 +4,8 @@ import { ATTR_MESSAGING } from "@wizeworks/lens-core";
|
|
|
4
4
|
import { isThenable } from "../db.js";
|
|
5
5
|
import { CATEGORY_ATTR } from "../processor.js";
|
|
6
6
|
import { recordOn, SERVER_SPAN } from "../spans.js";
|
|
7
|
+
/** OTel `messaging.operation.name`: the library's own name for the call ("add", "SendMessage"). */
|
|
8
|
+
export const OPERATION_NAME = "messaging.operation.name";
|
|
7
9
|
const w3c = new W3CTraceContextPropagator();
|
|
8
10
|
/** Set inside a producer span: a library calling its own send method again is part of it. */
|
|
9
11
|
const INSIDE_SEND = createContextKey("wizelens.messaging.inside-send");
|
|
@@ -20,7 +22,7 @@ function attributesOf(op, m) {
|
|
|
20
22
|
a[ATTR_MESSAGING.batchSize] = m.batchSize;
|
|
21
23
|
if (m.bodySize !== undefined)
|
|
22
24
|
a[ATTR_MESSAGING.bodySize] = m.bodySize;
|
|
23
|
-
return a;
|
|
25
|
+
return m.extra ? { ...m.extra, ...a } : a;
|
|
24
26
|
}
|
|
25
27
|
/** Start a send span inside the current request, or null when there is no request or a send is already open. */
|
|
26
28
|
export function startProducer(tracer, m) {
|
|
@@ -50,10 +52,11 @@ export function recordReceive(tracer, m, headers, startedMs) {
|
|
|
50
52
|
const parent = headers ? w3c.extract(ROOT_CONTEXT, headers, getter) : ROOT_CONTEXT;
|
|
51
53
|
tracer.startSpan(`receive ${m.destination}`, { kind: SpanKind.CONSUMER, attributes: attributesOf("receive", m), startTime: startedMs }, parent).end();
|
|
52
54
|
}
|
|
53
|
-
/** Run `fn` in the span's context and end the span when it settles (sync or promise).
|
|
54
|
-
export function runInSpan(span, ctx, fn) {
|
|
55
|
+
/** Run `fn` in the span's context and end the span when it settles (sync or promise). Errors `expected` accepts are not failures. */
|
|
56
|
+
export function runInSpan(span, ctx, fn, expected) {
|
|
55
57
|
const fail = (err) => {
|
|
56
|
-
|
|
58
|
+
if (!expected?.(err))
|
|
59
|
+
recordOn(span, err);
|
|
57
60
|
span.end();
|
|
58
61
|
};
|
|
59
62
|
try {
|
|
@@ -69,6 +72,12 @@ export function runInSpan(span, ctx, fn) {
|
|
|
69
72
|
throw err;
|
|
70
73
|
}
|
|
71
74
|
}
|
|
75
|
+
/** Hand the result to `fn` once it is ready (sync or promise), then pass it on unchanged. */
|
|
76
|
+
export function tap(out, fn) {
|
|
77
|
+
if (!isThenable(out))
|
|
78
|
+
return (fn(out), out);
|
|
79
|
+
return out.then((value) => (fn(value), value));
|
|
80
|
+
}
|
|
72
81
|
/** Byte length of a message body, when it is a string or bytes. */
|
|
73
82
|
export const sizeOf = (body) => typeof body === "string" ? Buffer.byteLength(body) : body instanceof Uint8Array ? body.byteLength : undefined;
|
|
74
83
|
//# sourceMappingURL=shared.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/messaging/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAyB,QAAQ,EAAE,KAAK,EAAe,MAAM,oBAAoB,CAAC;AACjK,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,cAAc,EAA2B,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/messaging/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAyB,QAAQ,EAAE,KAAK,EAAe,MAAM,oBAAoB,CAAC;AACjK,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,cAAc,EAA2B,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAIpD,mGAAmG;AACnG,MAAM,CAAC,MAAM,cAAc,GAAG,0BAA0B,CAAC;AAYzD,MAAM,GAAG,GAAG,IAAI,yBAAyB,EAAE,CAAC;AAC5C,6FAA6F;AAC7F,MAAM,WAAW,GAAG,gBAAgB,CAAC,gCAAgC,CAAC,CAAC;AAEvE,SAAS,YAAY,CAAC,EAAsB,EAAE,CAAe;IAC3D,MAAM,CAAC,GAAe;QACpB,CAAC,aAAa,CAAC,EAAE,WAAW;QAC5B,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM;QACjC,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,EAAE;QAC9B,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,WAAW;KAC5C,CAAC;IACF,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS;QAAE,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;IACzE,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS;QAAE,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;IACzE,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS;QAAE,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;IACtE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,gHAAgH;AAChH,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,CAAe;IAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IACxE,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACzH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC;AAChF,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,UAAU,CAAC,GAAY,EAAE,OAAgC;IACvE,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;AAC1F,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,GAAG,CAAC,CAAU,EAAsB,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAE3J,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC,CAA0B,EAAE,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAA0B,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAE1I,sGAAsG;AACtG,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,CAAe,EAAE,OAA4C;IACzG,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IACnF,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACvI,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC;AAChF,CAAC;AAED,0FAA0F;AAC1F,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,eAAe,CAAC;AAEpD,+IAA+I;AAC/I,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,CAAe,EAAE,OAA4C,EAAE,SAAiB;IAC5H,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IACnF,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;AACxJ,CAAC;AAED,qIAAqI;AACrI,MAAM,UAAU,SAAS,CAAI,IAAc,EAAE,GAAY,EAAE,EAAW,EAAE,QAAoC;IAC1G,MAAM,IAAI,GAAG,CAAC,GAAY,EAAE,EAAE;QAC5B,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC;YAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG,EAAE,CAAC;IACb,CAAC,CAAC;IACF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAClC,IAAI,UAAU,CAAC,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;;YACjD,IAAI,CAAC,GAAG,EAAE,CAAC;QAChB,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,GAAG,CAAI,GAAM,EAAE,EAA4B;IACzD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5C,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAM,CAAC;AACtD,CAAC;AAED,mEAAmE;AACnE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAa,EAAsB,EAAE,CAC1D,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,YAAY,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Context } from "@opentelemetry/api";
|
|
2
|
+
import type { WizeLens } from "../types.js";
|
|
3
|
+
/** An SQS message attribute: PascalCase from the SDK, camelCase in a Lambda event record. */
|
|
4
|
+
interface SqsAttribute {
|
|
5
|
+
DataType?: string;
|
|
6
|
+
StringValue?: string;
|
|
7
|
+
dataType?: string;
|
|
8
|
+
stringValue?: string;
|
|
9
|
+
}
|
|
10
|
+
export type SqsAttributes = Record<string, SqsAttribute | undefined>;
|
|
11
|
+
/** A message from ReceiveMessage, or a record of a Lambda SQS event. */
|
|
12
|
+
export interface SqsMessage {
|
|
13
|
+
MessageId?: string;
|
|
14
|
+
Body?: string;
|
|
15
|
+
Attributes?: Record<string, string | undefined>;
|
|
16
|
+
MessageAttributes?: SqsAttributes;
|
|
17
|
+
messageId?: string;
|
|
18
|
+
body?: string;
|
|
19
|
+
attributes?: Record<string, string | undefined>;
|
|
20
|
+
messageAttributes?: SqsAttributes;
|
|
21
|
+
eventSourceARN?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare const TRACE_KEYS: readonly ["traceparent", "tracestate"];
|
|
24
|
+
/** Queue name from a queue URL, an ARN, or a plain name. */
|
|
25
|
+
export declare function queueName(ref: unknown): string | undefined;
|
|
26
|
+
/** Message attributes with the trace added, as far as the 10-attribute limit leaves room (traceparent first). */
|
|
27
|
+
export declare function stampAttributes(ctx: Context, attrs: SqsAttributes | undefined): SqsAttributes | undefined;
|
|
28
|
+
/** The trace headers a message carries, or undefined. */
|
|
29
|
+
export declare function carrierOf(m: SqsMessage | undefined): Record<string, unknown> | undefined;
|
|
30
|
+
/** Remember the queue of each received message. */
|
|
31
|
+
export declare function rememberQueue(messages: readonly SqsMessage[], queue: string): void;
|
|
32
|
+
/** Run `fn(message)` as the process span of an SQS message or Lambda SQS record, joined to its producer; `queue` names the queue. */
|
|
33
|
+
export declare function processSqsMessage<M, T>(wizelens: WizeLens, message: M, fn: (message: M) => T, queue?: string): T;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=sqs-message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqs-message.d.ts","sourceRoot":"","sources":["../../src/messaging/sqs-message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,6FAA6F;AAC7F,UAAU,YAAY;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AACD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC,CAAC;AAErE,wEAAwE;AACxE,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAChD,iBAAiB,CAAC,EAAE,aAAa,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAChD,iBAAiB,CAAC,EAAE,aAAa,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,UAAU,YAAI,aAAa,EAAE,YAAY,CAAU,CAAC;AAOjE,4DAA4D;AAC5D,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE1D;AAED,iHAAiH;AACjH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,CAazG;AAED,yDAAyD;AACzD,wBAAgB,SAAS,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CASxF;AAED,mDAAmD;AACnD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAElF;AAWD,qIAAqI;AACrI,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,CAKhH"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { captureOf } from "../adapters/registry.js";
|
|
2
|
+
import { injectInto, OPERATION_NAME, runInSpan, sizeOf, startConsumer } from "./shared.js";
|
|
3
|
+
export const TRACE_KEYS = ["traceparent", "tracestate"];
|
|
4
|
+
/** SQS rejects a message with more than 10 message attributes. */
|
|
5
|
+
const MAX_ATTRIBUTES = 10;
|
|
6
|
+
const RECEIVE_COUNT = "messaging.aws_sqs.receive_count";
|
|
7
|
+
/** The queue each received message came from, so processSqsMessage can name it. */
|
|
8
|
+
const received = new WeakMap();
|
|
9
|
+
/** Queue name from a queue URL, an ARN, or a plain name. */
|
|
10
|
+
export function queueName(ref) {
|
|
11
|
+
return typeof ref === "string" ? ref.split(/[/:]/).filter(Boolean).pop() : undefined;
|
|
12
|
+
}
|
|
13
|
+
/** Message attributes with the trace added, as far as the 10-attribute limit leaves room (traceparent first). */
|
|
14
|
+
export function stampAttributes(ctx, attrs) {
|
|
15
|
+
const carrier = {};
|
|
16
|
+
injectInto(ctx, carrier);
|
|
17
|
+
const next = { ...attrs };
|
|
18
|
+
let added = 0;
|
|
19
|
+
for (const key of TRACE_KEYS) {
|
|
20
|
+
const value = carrier[key];
|
|
21
|
+
if (typeof value !== "string")
|
|
22
|
+
continue;
|
|
23
|
+
if (!(key in next) && Object.keys(next).length >= MAX_ATTRIBUTES)
|
|
24
|
+
break;
|
|
25
|
+
next[key] = { DataType: "String", StringValue: value };
|
|
26
|
+
added++;
|
|
27
|
+
}
|
|
28
|
+
return added > 0 ? next : attrs;
|
|
29
|
+
}
|
|
30
|
+
/** The trace headers a message carries, or undefined. */
|
|
31
|
+
export function carrierOf(m) {
|
|
32
|
+
const attrs = m?.MessageAttributes ?? m?.messageAttributes;
|
|
33
|
+
if (!attrs)
|
|
34
|
+
return undefined;
|
|
35
|
+
const carrier = {};
|
|
36
|
+
for (const key of TRACE_KEYS) {
|
|
37
|
+
const value = attrs[key]?.StringValue ?? attrs[key]?.stringValue;
|
|
38
|
+
if (typeof value === "string")
|
|
39
|
+
carrier[key] = value;
|
|
40
|
+
}
|
|
41
|
+
return carrier;
|
|
42
|
+
}
|
|
43
|
+
/** Remember the queue of each received message. */
|
|
44
|
+
export function rememberQueue(messages, queue) {
|
|
45
|
+
for (const m of messages)
|
|
46
|
+
if (m && typeof m === "object")
|
|
47
|
+
received.set(m, queue);
|
|
48
|
+
}
|
|
49
|
+
/** Process span facts for one message: queue, id, body size, and how often SQS has delivered it. */
|
|
50
|
+
function processFacts(m, queue) {
|
|
51
|
+
const extra = { [OPERATION_NAME]: "process" };
|
|
52
|
+
const count = Number((m.Attributes ?? m.attributes)?.ApproximateReceiveCount);
|
|
53
|
+
if (Number.isFinite(count) && count > 0)
|
|
54
|
+
extra[RECEIVE_COUNT] = count;
|
|
55
|
+
const destination = queueName(queue) ?? received.get(m) ?? queueName(m.eventSourceARN) ?? "unknown";
|
|
56
|
+
return { system: "aws_sqs", destination, messageId: m.MessageId ?? m.messageId, bodySize: sizeOf(m.Body ?? m.body), extra };
|
|
57
|
+
}
|
|
58
|
+
/** Run `fn(message)` as the process span of an SQS message or Lambda SQS record, joined to its producer; `queue` names the queue. */
|
|
59
|
+
export function processSqsMessage(wizelens, message, fn, queue) {
|
|
60
|
+
if (!captureOf(wizelens) || !message || typeof message !== "object")
|
|
61
|
+
return fn(message);
|
|
62
|
+
const m = message;
|
|
63
|
+
const { span, ctx } = startConsumer(wizelens.tracer, processFacts(m, queue), carrierOf(m));
|
|
64
|
+
return runInSpan(span, ctx, () => fn(message));
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=sqs-message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqs-message.js","sourceRoot":"","sources":["../../src/messaging/sqs-message.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { WizeLens } from "../types.js";
|
|
2
|
+
/** Trace Amazon SQS through @aws-sdk/client-sqs v3. Pass the module or an SQSClient. Returns false when nothing was patched. */
|
|
3
|
+
export declare function instrumentSqs(wizelens: WizeLens, target: unknown): boolean;
|
|
4
|
+
//# sourceMappingURL=sqs.d.ts.map
|