@wizeworks/lens-node 0.3.0-alpha.1 → 0.3.0-alpha.3
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/api.d.ts +3 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +19 -7
- package/dist/api.js.map +1 -1
- package/dist/capture.d.ts.map +1 -1
- package/dist/capture.js +3 -3
- package/dist/capture.js.map +1 -1
- package/dist/client-spans.d.ts +6 -4
- package/dist/client-spans.d.ts.map +1 -1
- package/dist/client-spans.js +20 -9
- package/dist/client-spans.js.map +1 -1
- package/dist/frameworks/fastify.d.ts.map +1 -1
- package/dist/frameworks/fastify.js +4 -2
- package/dist/frameworks/fastify.js.map +1 -1
- package/dist/frameworks/hono.js +3 -3
- package/dist/frameworks/hono.js.map +1 -1
- package/dist/frameworks/koa.js +3 -3
- package/dist/frameworks/koa.js.map +1 -1
- package/dist/frameworks/node-server.d.ts.map +1 -1
- package/dist/frameworks/node-server.js +4 -2
- package/dist/frameworks/node-server.js.map +1 -1
- package/dist/hub-connect.d.ts +2 -2
- package/dist/hub-connect.d.ts.map +1 -1
- package/dist/hub-connect.js +2 -2
- package/dist/hub-connect.js.map +1 -1
- package/dist/info.js +1 -1
- package/dist/info.js.map +1 -1
- package/dist/kit.d.ts +1 -1
- package/dist/kit.d.ts.map +1 -1
- package/dist/mcp-find.d.ts +2 -2
- package/dist/mcp-find.d.ts.map +1 -1
- package/dist/mcp-find.js +30 -20
- package/dist/mcp-find.js.map +1 -1
- package/dist/mcp-metrics.d.ts +2 -2
- package/dist/mcp-metrics.d.ts.map +1 -1
- package/dist/mcp-metrics.js +11 -9
- package/dist/mcp-metrics.js.map +1 -1
- package/dist/mcp-projects.d.ts +11 -0
- package/dist/mcp-projects.d.ts.map +1 -0
- package/dist/mcp-projects.js +49 -0
- package/dist/mcp-projects.js.map +1 -0
- package/dist/mcp-search.d.ts +5 -0
- package/dist/mcp-search.d.ts.map +1 -0
- package/dist/mcp-search.js +49 -0
- package/dist/mcp-search.js.map +1 -0
- package/dist/mcp-shared.d.ts +47 -4
- package/dist/mcp-shared.d.ts.map +1 -1
- package/dist/mcp-shared.js.map +1 -1
- package/dist/mcp-store.d.ts +27 -0
- package/dist/mcp-store.d.ts.map +1 -0
- package/dist/mcp-store.js +55 -0
- package/dist/mcp-store.js.map +1 -0
- package/dist/mcp-traces.d.ts +2 -2
- package/dist/mcp-traces.d.ts.map +1 -1
- package/dist/mcp-traces.js +37 -25
- package/dist/mcp-traces.js.map +1 -1
- package/dist/mcp.d.ts +4 -4
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +14 -6
- package/dist/mcp.js.map +1 -1
- package/dist/mode.d.ts +6 -0
- package/dist/mode.d.ts.map +1 -0
- package/dist/mode.js +7 -0
- package/dist/mode.js.map +1 -0
- package/dist/request-capture.d.ts +7 -1
- package/dist/request-capture.d.ts.map +1 -1
- package/dist/request-capture.js +12 -0
- package/dist/request-capture.js.map +1 -1
- package/dist/search-api.d.ts +7 -0
- package/dist/search-api.d.ts.map +1 -0
- package/dist/search-api.js +20 -0
- package/dist/search-api.js.map +1 -0
- package/dist/types.d.ts +4 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/wizelens.d.ts.map +1 -1
- package/dist/wizelens.js +10 -7
- package/dist/wizelens.js.map +1 -1
- package/package.json +3 -3
package/dist/mcp-traces.js
CHANGED
|
@@ -1,51 +1,63 @@
|
|
|
1
|
-
import { errorInfo, isErrorSpan } from "@wizeworks/lens-core";
|
|
1
|
+
import { errorInfo, isErrorSpan, parseSearch } from "@wizeworks/lens-core";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { json, READ_ONLY } from "./mcp-shared.js";
|
|
4
|
-
|
|
4
|
+
import { allOf, findAll, rangeArg } from "./mcp-store.js";
|
|
5
|
+
const failed = (error) => ({ ...json({ error }), isError: true });
|
|
6
|
+
function registerListTraces(server, src) {
|
|
5
7
|
const inputSchema = {
|
|
8
|
+
...src.arg,
|
|
6
9
|
limit: z.number().int().min(1).max(500).optional().describe("Max traces. Default 20."),
|
|
7
10
|
minDurationMs: z.number().min(0).optional().describe("Only traces at least this long."),
|
|
8
11
|
status: z.enum(["unset", "ok", "error"]).optional().describe("Only traces with this status."),
|
|
12
|
+
q: z.string().max(2000).optional().describe("Only traces that match this search (the `search` tool's language)."),
|
|
13
|
+
range: rangeArg("to look"),
|
|
9
14
|
};
|
|
10
|
-
const description = "List
|
|
15
|
+
const description = "List request traces captured by WizeLens, newest first, from the whole store.";
|
|
11
16
|
server.registerTool("list_traces", { description, inputSchema, annotations: READ_ONLY }, async (args) => {
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
.slice(0, args.limit ?? 20);
|
|
18
|
-
return json(items);
|
|
17
|
+
const data = await src.open("list_traces", args);
|
|
18
|
+
const where = allOf([args.minDurationMs === undefined ? null : `duration:>=${args.minDurationMs}ms`, args.status && `status:${args.status}`, args.q]);
|
|
19
|
+
if (!where.ok)
|
|
20
|
+
return failed(where.error);
|
|
21
|
+
return json(await findAll(data, "traces", where.node, args.range ?? "24h", args.limit ?? 20));
|
|
19
22
|
});
|
|
20
23
|
}
|
|
21
|
-
function registerGetTrace(server,
|
|
24
|
+
function registerGetTrace(server, src) {
|
|
22
25
|
const inputSchema = {
|
|
26
|
+
...src.arg,
|
|
23
27
|
traceId: z.string().regex(/^[0-9a-f]{32}$/).describe("32 hex trace id."),
|
|
24
28
|
federate: z.boolean().optional().describe("Include spans from downstream services. Default true."),
|
|
25
29
|
};
|
|
26
30
|
const description = "Get one trace with all spans and logs (redacted). Federates across services by default.";
|
|
27
31
|
server.registerTool("get_trace", { description, inputSchema, annotations: READ_ONLY }, async (args) => {
|
|
28
|
-
|
|
32
|
+
const data = await src.open("get_trace", args);
|
|
29
33
|
const trace = await data.get(args.traceId, args.federate ?? true);
|
|
30
34
|
return trace ? json(trace) : { ...json({ error: "trace not found" }), isError: true };
|
|
31
35
|
});
|
|
32
36
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const
|
|
37
|
+
/** The error spans of the newest failed traces, up to `limit`, with their stack traces. */
|
|
38
|
+
async function errorsOf(data, range, limit) {
|
|
39
|
+
const rows = [];
|
|
40
|
+
for (const item of await findAll(data, "traces", parseSearch("error:true"), range, limit)) {
|
|
41
|
+
const trace = await data.get(item.traceId, false);
|
|
42
|
+
for (const s of trace?.spans.filter(isErrorSpan) ?? [])
|
|
43
|
+
rows.push({ traceId: item.traceId, ...errorInfo(s) });
|
|
44
|
+
if (rows.length >= limit)
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
return rows.slice(0, limit);
|
|
48
|
+
}
|
|
49
|
+
function registerGetErrors(server, src) {
|
|
50
|
+
const inputSchema = { ...src.arg, limit: z.number().int().min(1).max(500).optional().describe("Default 20."), range: rangeArg("to look") };
|
|
51
|
+
const description = "List errors and exceptions with their stack traces, newest first, from the whole store.";
|
|
36
52
|
server.registerTool("get_errors", { description, inputSchema, annotations: READ_ONLY }, async (args) => {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
.all()
|
|
40
|
-
.flatMap((t) => t.spans.filter(isErrorSpan).map((s) => ({ traceId: t.traceId, ...errorInfo(s) })))
|
|
41
|
-
.slice(0, args.limit ?? 20);
|
|
42
|
-
return json(rows);
|
|
53
|
+
const data = await src.open("get_errors", args);
|
|
54
|
+
return json(await errorsOf(data, args.range ?? "24h", args.limit ?? 20));
|
|
43
55
|
});
|
|
44
56
|
}
|
|
45
57
|
/** list_traces, get_trace, and get_errors. */
|
|
46
|
-
export function registerTraceTools(server,
|
|
47
|
-
registerListTraces(server,
|
|
48
|
-
registerGetTrace(server,
|
|
49
|
-
registerGetErrors(server,
|
|
58
|
+
export function registerTraceTools(server, src) {
|
|
59
|
+
registerListTraces(server, src);
|
|
60
|
+
registerGetTrace(server, src);
|
|
61
|
+
registerGetErrors(server, src);
|
|
50
62
|
}
|
|
51
63
|
//# sourceMappingURL=mcp-traces.js.map
|
package/dist/mcp-traces.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-traces.js","sourceRoot":"","sources":["../src/mcp-traces.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-traces.js","sourceRoot":"","sources":["../src/mcp-traces.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
|
-
import { type McpDataSource } from "./mcp-shared.js";
|
|
3
|
-
export type { McpDataSource } from "./mcp-shared.js";
|
|
4
|
-
/** Handle one MCP streamable HTTP request in stateless mode. */
|
|
5
|
-
export declare function handleMcp(data: McpDataSource, req: IncomingMessage, res: ServerResponse, body: unknown): Promise<void>;
|
|
2
|
+
import { type McpDataSource, type McpProjects } from "./mcp-shared.js";
|
|
3
|
+
export type { McpDataSource, McpProject, McpProjects } from "./mcp-shared.js";
|
|
4
|
+
/** Handle one MCP streamable HTTP request in stateless mode, for one data source or several projects. */
|
|
5
|
+
export declare function handleMcp(data: McpDataSource | McpProjects, req: IncomingMessage, res: ServerResponse, body: unknown): Promise<void>;
|
|
6
6
|
//# 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;AAMjE,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAe,MAAM,iBAAiB,CAAC;AAIpF,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAkB9E,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,17 +2,25 @@ 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 { projectsSource, registerProjectTools, singleSource } from "./mcp-projects.js";
|
|
5
6
|
import {} from "./mcp-shared.js";
|
|
7
|
+
import { registerSearchTools } from "./mcp-search.js";
|
|
6
8
|
import { registerTraceTools } from "./mcp-traces.js";
|
|
9
|
+
const isProjects = (d) => "projects" in d;
|
|
10
|
+
const MANY = "This key reads several projects. Call list_projects, then pass `project` to the other tools.";
|
|
7
11
|
function createServer(data) {
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
const many = isProjects(data) && data.projects.length > 1;
|
|
13
|
+
const server = new McpServer({ name: "wizelens", version: data.version }, many ? { instructions: MANY } : undefined);
|
|
14
|
+
const src = isProjects(data) ? projectsSource(data) : singleSource(data);
|
|
15
|
+
if (isProjects(data))
|
|
16
|
+
registerProjectTools(server, data);
|
|
17
|
+
registerTraceTools(server, src);
|
|
18
|
+
registerFindTools(server, src);
|
|
19
|
+
registerMetricTools(server, src);
|
|
20
|
+
registerSearchTools(server, src);
|
|
13
21
|
return server;
|
|
14
22
|
}
|
|
15
|
-
/** Handle one MCP streamable HTTP request in stateless mode. */
|
|
23
|
+
/** Handle one MCP streamable HTTP request in stateless mode, for one data source or several projects. */
|
|
16
24
|
export async function handleMcp(data, req, res, body) {
|
|
17
25
|
const server = createServer(data);
|
|
18
26
|
const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined, enableJsonResponse: true });
|
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,
|
|
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;AAIrD,MAAM,UAAU,GAAG,CAAC,CAA8B,EAAoB,EAAE,CAAC,UAAU,IAAI,CAAC,CAAC;AAEzF,MAAM,IAAI,GAAG,8FAA8F,CAAC;AAE5G,SAAS,YAAY,CAAC,IAAiC;IACrD,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACrH,MAAM,GAAG,GAAW,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACjF,IAAI,UAAU,CAAC,IAAI,CAAC;QAAE,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzD,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,yGAAyG;AACzG,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAiC,EAAE,GAAoB,EAAE,GAAmB,EAAE,IAAa;IACzH,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC,EAAE,kBAAkB,EAAE,SAAS,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;IACjH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACnB,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAChD,CAAC"}
|
package/dist/mode.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { WizeLensOptions } from "./types.js";
|
|
2
|
+
/** On or off: the option, then WIZELENS_ENABLED, then on outside production. */
|
|
3
|
+
export declare const isEnabled: (o: WizeLensOptions) => boolean;
|
|
4
|
+
/** Serve reads (dashboard, API, MCP): the option, then WIZELENS_DASHBOARD, then on outside production. */
|
|
5
|
+
export declare const servesDashboard: (o: WizeLensOptions) => boolean;
|
|
6
|
+
//# sourceMappingURL=mode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mode.d.ts","sourceRoot":"","sources":["../src/mode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIlD,gFAAgF;AAChF,eAAO,MAAM,SAAS,MAAO,eAAe,KAAG,OAA0E,CAAC;AAE1H,0GAA0G;AAC1G,eAAO,MAAM,eAAe,MAAO,eAAe,KAAG,OAA8E,CAAC"}
|
package/dist/mode.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DASHBOARD_ENV, ENABLED_ENV, envFlag } from "@wizeworks/lens-core";
|
|
2
|
+
const production = () => process.env.NODE_ENV === "production";
|
|
3
|
+
/** On or off: the option, then WIZELENS_ENABLED, then on outside production. */
|
|
4
|
+
export const isEnabled = (o) => o.enabled ?? envFlag(process.env[ENABLED_ENV]) ?? !production();
|
|
5
|
+
/** Serve reads (dashboard, API, MCP): the option, then WIZELENS_DASHBOARD, then on outside production. */
|
|
6
|
+
export const servesDashboard = (o) => o.dashboard ?? envFlag(process.env[DASHBOARD_ENV]) ?? !production();
|
|
7
|
+
//# sourceMappingURL=mode.js.map
|
package/dist/mode.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mode.js","sourceRoot":"","sources":["../src/mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG3E,MAAM,UAAU,GAAG,GAAY,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;AAExE,gFAAgF;AAChF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAkB,EAAW,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;AAE1H,0GAA0G;AAC1G,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAkB,EAAW,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
2
|
import { type Context, type Span as OtelSpan, type Tracer } from "@opentelemetry/api";
|
|
3
|
-
import type
|
|
3
|
+
import { type W3CTraceContextPropagator } from "@opentelemetry/core";
|
|
4
4
|
export interface CaptureDeps {
|
|
5
5
|
tracer: Tracer;
|
|
6
6
|
basePath: string;
|
|
@@ -23,6 +23,12 @@ export declare const pathOf: (rawUrl: string) => string;
|
|
|
23
23
|
export declare const isOwnPath: (d: CaptureDeps, path: string) => boolean;
|
|
24
24
|
/** A CORS preflight. The browser sends it before a cross-origin call, with no traceparent, so it is not traced. */
|
|
25
25
|
export declare const isPreflight: (req: IncomingMessage) => boolean;
|
|
26
|
+
/** True for a health check from the platform, not a visitor. */
|
|
27
|
+
export declare function isHealthProbe(req: IncomingMessage): boolean;
|
|
28
|
+
/** True for a request WizeLens does not trace: a CORS preflight, or a health check. */
|
|
29
|
+
export declare const isUntraced: (req: IncomingMessage) => boolean;
|
|
30
|
+
/** Run an untraced request with tracing off. Otherwise Next.js and the database adapters still start spans, each its own trace. */
|
|
31
|
+
export declare const withoutTracing: <T>(fn: () => T) => T;
|
|
26
32
|
/** Serve the dashboard and API. Resolves when the response is written. */
|
|
27
33
|
export declare function serveOwnPath(d: CaptureDeps, req: IncomingMessage, res: ServerResponse): Promise<void>;
|
|
28
34
|
/** Start the server span of one request on the raw Node objects. Works for any framework that runs on node:http. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-capture.d.ts","sourceRoot":"","sources":["../src/request-capture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEjE,OAAO,EAAE,KAAK,OAAO,EAAyB,KAAK,IAAI,IAAI,QAAQ,EAAmC,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC9I,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"request-capture.d.ts","sourceRoot":"","sources":["../src/request-capture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEjE,OAAO,EAAE,KAAK,OAAO,EAAyB,KAAK,IAAI,IAAI,QAAQ,EAAmC,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC9I,OAAO,EAAmB,KAAK,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAmBtF,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,GAAG,EAAE,yBAAyB,CAAC;IAC/B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,OAAO,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAED,2GAA2G;AAC3G,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,kGAAkG;AAClG,MAAM,MAAM,OAAO,GAAG,MAAM,MAAM,GAAG,SAAS,CAAC;AAS/C,2CAA2C;AAC3C,eAAO,MAAM,MAAM,WAAY,MAAM,KAAG,MAAqC,CAAC;AAE9E,eAAO,MAAM,SAAS,MAAO,WAAW,QAAQ,MAAM,KAAG,OAAmE,CAAC;AAE7H,mHAAmH;AACnH,eAAO,MAAM,WAAW,QAAS,eAAe,KAAG,OAAiG,CAAC;AAKrJ,gEAAgE;AAChE,wBAAgB,aAAa,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAG3D;AAED,uFAAuF;AACvF,eAAO,MAAM,UAAU,QAAS,eAAe,KAAG,OAAiD,CAAC;AAEpG,mIAAmI;AACnI,eAAO,MAAM,cAAc,GAAI,CAAC,MAAM,MAAM,CAAC,KAAG,CAAwD,CAAC;AAEzG,0EAA0E;AAC1E,wBAAgB,YAAY,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAQrG;AAkCD,oHAAoH;AACpH,wBAAgB,cAAc,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,eAAe,CAwB3I;AAED,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG,QAAQ,GAAG,SAAS,CAEtE"}
|
package/dist/request-capture.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { context, ROOT_CONTEXT, SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
|
|
2
|
+
import { suppressTracing } from "@opentelemetry/core";
|
|
2
3
|
import { ATTR_REQUEST_ABORTED, ATTR_REQUEST_ID, ATTR_RESPONSE_BODY, ATTR_RESPONSE_BODY_TRUNCATED, HEADER_ENDPOINT, HEADER_TRACE, RESPONSE_HEADER_PREFIX, serverTimingValue, } from "@wizeworks/lens-core";
|
|
3
4
|
import { tapResponse } from "./body-capture.js";
|
|
4
5
|
import { keepExposeHeaders } from "./expose-headers.js";
|
|
@@ -18,6 +19,17 @@ export const pathOf = (rawUrl) => rawUrl.split("?")[0] ?? "/";
|
|
|
18
19
|
export const isOwnPath = (d, path) => path === d.basePath || path.startsWith(d.basePath + "/");
|
|
19
20
|
/** A CORS preflight. The browser sends it before a cross-origin call, with no traceparent, so it is not traced. */
|
|
20
21
|
export const isPreflight = (req) => req.method === "OPTIONS" && req.headers["access-control-request-method"] !== undefined;
|
|
22
|
+
// Kubernetes probes, Google and AWS load balancer checks, and Google uptime checks: 200 traces an hour that hid every visit.
|
|
23
|
+
const PROBE_AGENTS = ["kube-probe/", "GoogleHC/", "ELB-HealthChecker/", "GoogleStackdriverMonitoring-UptimeChecks"];
|
|
24
|
+
/** True for a health check from the platform, not a visitor. */
|
|
25
|
+
export function isHealthProbe(req) {
|
|
26
|
+
const agent = req.headers["user-agent"];
|
|
27
|
+
return typeof agent === "string" && PROBE_AGENTS.some((p) => agent.startsWith(p));
|
|
28
|
+
}
|
|
29
|
+
/** True for a request WizeLens does not trace: a CORS preflight, or a health check. */
|
|
30
|
+
export const isUntraced = (req) => isPreflight(req) || isHealthProbe(req);
|
|
31
|
+
/** Run an untraced request with tracing off. Otherwise Next.js and the database adapters still start spans, each its own trace. */
|
|
32
|
+
export const withoutTracing = (fn) => context.with(suppressTracing(context.active()), fn);
|
|
21
33
|
/** Serve the dashboard and API. Resolves when the response is written. */
|
|
22
34
|
export function serveOwnPath(d, req, res) {
|
|
23
35
|
return d.handler(req, res).then(() => undefined, (err) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-capture.js","sourceRoot":"","sources":["../src/request-capture.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,OAAO,EAAE,YAAY,EAAyB,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAe,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"request-capture.js","sourceRoot":"","sources":["../src/request-capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ServerResponse } from "node:http";
|
|
2
|
+
import type { TraceStore } from "./store.js";
|
|
3
|
+
/** `GET api/search?q=&kind=&range=&limit=&cursor=`. A bad search answers 400 with the error's position. */
|
|
4
|
+
export declare function sendSearch(store: TraceStore, p: URLSearchParams, res: ServerResponse, env?: string): void;
|
|
5
|
+
/** `GET api/search/suggest?field=&prefix=&range=&limit=`. */
|
|
6
|
+
export declare function sendSuggest(store: TraceStore, p: URLSearchParams, res: ServerResponse, env?: string): void;
|
|
7
|
+
//# sourceMappingURL=search-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-api.d.ts","sourceRoot":"","sources":["../src/search-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,2GAA2G;AAC3G,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAMzG;AAED,6DAA6D;AAC7D,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAI1G"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { searchMemory, searchRequestOf, suggestMemory, suggestRequestOf } from "@wizeworks/lens-core";
|
|
2
|
+
import { sendJson } from "./http-util.js";
|
|
3
|
+
// The in-app search API (docs/SEARCH-PLAN.md), over this service's own traces in memory. `env` is the service's environment.
|
|
4
|
+
/** `GET api/search?q=&kind=&range=&limit=&cursor=`. A bad search answers 400 with the error's position. */
|
|
5
|
+
export function sendSearch(store, p, res, env) {
|
|
6
|
+
const r = searchRequestOf(p, Date.now(), store.maxAgeMs);
|
|
7
|
+
if (!r.ok)
|
|
8
|
+
return sendJson(res, 400, r);
|
|
9
|
+
const t0 = performance.now();
|
|
10
|
+
const page = searchMemory(store.all(), { ...r.query, env });
|
|
11
|
+
sendJson(res, 200, { ...page, tookMs: Math.round(performance.now() - t0), settling: null });
|
|
12
|
+
}
|
|
13
|
+
/** `GET api/search/suggest?field=&prefix=&range=&limit=`. */
|
|
14
|
+
export function sendSuggest(store, p, res, env) {
|
|
15
|
+
const r = suggestRequestOf(p, Date.now(), store.maxAgeMs);
|
|
16
|
+
if (!r.ok)
|
|
17
|
+
return sendJson(res, 400, r);
|
|
18
|
+
sendJson(res, 200, { items: suggestMemory(store.all(), { ...r.request, env }) });
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=search-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-api.js","sourceRoot":"","sources":["../src/search-api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACtG,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,6HAA6H;AAE7H,2GAA2G;AAC3G,MAAM,UAAU,UAAU,CAAC,KAAiB,EAAE,CAAkB,EAAE,GAAmB,EAAE,GAAY;IACjG,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACxC,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5D,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9F,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,WAAW,CAAC,KAAiB,EAAE,CAAkB,EAAE,GAAmB,EAAE,GAAY;IAClG,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC1D,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACxC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACnF,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -8,9 +8,11 @@ export interface WizeLensOptions {
|
|
|
8
8
|
serviceName: string;
|
|
9
9
|
/** Base path for the dashboard and API. Default "/_wizelens". */
|
|
10
10
|
basePath?: string;
|
|
11
|
-
/** Turn WizeLens on. Default: on unless NODE_ENV is "production". */
|
|
11
|
+
/** Turn WizeLens on. Default: the WIZELENS_ENABLED variable, else on unless NODE_ENV is "production". */
|
|
12
12
|
enabled?: boolean;
|
|
13
|
-
/**
|
|
13
|
+
/** Serve the dashboard, read API, and MCP. Off is send-only: capture and send, no reads. Default: WIZELENS_DASHBOARD, else off in production. */
|
|
14
|
+
dashboard?: boolean;
|
|
15
|
+
/** Where traces live. "sqlite" keeps them across restarts. Default "sqlite", or "memory" when the dashboard is off. */
|
|
14
16
|
storage?: "sqlite" | "memory";
|
|
15
17
|
/** SQLite file for `storage: "sqlite"`. Default `{cwd}/.wizelens/traces.db`. */
|
|
16
18
|
storagePath?: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,eAAe;IAC9B,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,eAAe;IAC9B,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yGAAyG;IACzG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iJAAiJ;IACjJ,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uHAAuH;IACvH,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC9B,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,sGAAsG;IACtG,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,kIAAkI;IAClI,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4HAA4H;IAC5H,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mEAAmE;IACnE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qFAAqF;IACrF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sDAAsD;IACtD,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,4EAA4E;IAC5E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iHAAiH;IACjH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uHAAuH;IACvH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2GAA2G;IAC3G,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mFAAmF;IACnF,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAAC;IACjD,qFAAqF;IACrF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6FAA6F;IAC7F,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;AAEpF,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,KAAK,CAAC;IAChB,qCAAqC;IACrC,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC;CACzC;AAED,MAAM,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;AAE3C,MAAM,MAAM,GAAG,GAAG,eAAe,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3H,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,6FAA6F;IAC7F,UAAU,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC5E,iFAAiF;IACjF,eAAe,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC/F,qGAAqG;IACrG,OAAO,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,mFAAmF;IACnF,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3E,MAAM,EAAE,cAAc,CAAC;IACvB,8CAA8C;IAC9C,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;IACpC,uGAAuG;IACvG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,mFAAmF;IACnF,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,sEAAsE;IACtE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;IACxF,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B"}
|
package/dist/wizelens.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wizelens.d.ts","sourceRoot":"","sources":["../src/wizelens.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wizelens.d.ts","sourceRoot":"","sources":["../src/wizelens.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG5D,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAmE/F,uDAAuD;AACvD,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ,CAsCjE"}
|
package/dist/wizelens.js
CHANGED
|
@@ -16,13 +16,14 @@ import { createMetricParts, mcpMetrics } from "./metrics/setup.js";
|
|
|
16
16
|
import { SqlitePersister } from "./persist.js";
|
|
17
17
|
import { createErrorMiddleware, recordException, setUser, tag } from "./request-api.js";
|
|
18
18
|
import { TraceStore } from "./store.js";
|
|
19
|
+
import { isEnabled, servesDashboard } from "./mode.js";
|
|
19
20
|
import { createTracing, installGlobals } from "./tracing.js";
|
|
20
21
|
import { resolveUiDir } from "./ui.js";
|
|
21
22
|
function normalizeBasePath(basePath) {
|
|
22
23
|
return ("/" + (basePath ?? DEFAULT_BASE_PATH).replace(/^\/+|\/+$/g, "")).replace(/^\/$/, DEFAULT_BASE_PATH);
|
|
23
24
|
}
|
|
24
|
-
function openPersister(store, options) {
|
|
25
|
-
if ((options.storage ?? "sqlite") !== "sqlite")
|
|
25
|
+
function openPersister(store, options, dashboard) {
|
|
26
|
+
if ((options.storage ?? (dashboard ? "sqlite" : "memory")) !== "sqlite")
|
|
26
27
|
return undefined;
|
|
27
28
|
const persister = new SqlitePersister(store, {
|
|
28
29
|
path: options.storagePath ?? join(process.cwd(), ".wizelens", "traces.db"),
|
|
@@ -39,10 +40,10 @@ function mcpSource(options, store, getTrace, metrics) {
|
|
|
39
40
|
version: VERSION,
|
|
40
41
|
slowQueryMs: options.slowQueryMs ?? DEFAULT_SLOW_QUERY_MS,
|
|
41
42
|
nPlusOneThreshold: options.nPlusOneThreshold ?? DEFAULT_N_PLUS_ONE,
|
|
42
|
-
list: (limit) => store.list(limit),
|
|
43
43
|
all: () => store.all(),
|
|
44
44
|
get: getTrace,
|
|
45
45
|
audit: options.audit ?? ((line) => console.info(line)),
|
|
46
|
+
env: process.env.NODE_ENV || "development",
|
|
46
47
|
...mcpMetrics(metrics),
|
|
47
48
|
};
|
|
48
49
|
}
|
|
@@ -53,7 +54,8 @@ function buildParts(options, basePath) {
|
|
|
53
54
|
const sampling = samplingInfo(options.sampling);
|
|
54
55
|
const sampler = sampling ? new TraceSampler(sampling) : undefined;
|
|
55
56
|
const store = new TraceStore({ maxTraces: options.maxTraces ?? 2000, maxAgeMs: options.maxAgeMs, sampler });
|
|
56
|
-
const
|
|
57
|
+
const dashboard = servesDashboard(options);
|
|
58
|
+
const persister = openPersister(store, options, dashboard);
|
|
57
59
|
const selfEndpoints = new Set(options.publicEndpoint ? [options.publicEndpoint] : []);
|
|
58
60
|
const fetch = options.instrumentFetch ?? true;
|
|
59
61
|
const tracing = createTracing(store, { service, version: VERSION, redactKeys, fetch }, selfEndpoints);
|
|
@@ -66,8 +68,9 @@ function buildParts(options, basePath) {
|
|
|
66
68
|
const info = () => buildInfo({ options, store, redactKeys, startedMs, sqlite, metrics: !!metrics });
|
|
67
69
|
const mcp = mcpSource(options, store, getTrace, metrics?.store ?? null);
|
|
68
70
|
const uiDir = resolveUiDir(options.uiDir);
|
|
69
|
-
const hub = connectHub(options, store, info, selfEndpoints, metrics?.store ?? null);
|
|
70
|
-
const
|
|
71
|
+
const hub = connectHub(options, store, info, dashboard ? selfEndpoints : null, metrics?.store ?? null);
|
|
72
|
+
const enableMcp = dashboard && !!options.enableMcp;
|
|
73
|
+
const handler = createHandler({ basePath, store, redactKeys, uiDir, enableMcp, mcp, info, getTrace, metrics: metrics?.store ?? null, selfEndpoints, dashboard });
|
|
71
74
|
const capture = {
|
|
72
75
|
tracer: tracing.tracer,
|
|
73
76
|
basePath,
|
|
@@ -82,7 +85,7 @@ function buildParts(options, basePath) {
|
|
|
82
85
|
/** Create the WizeLens add-on for one Node service. */
|
|
83
86
|
export function createWizeLens(options) {
|
|
84
87
|
const basePath = normalizeBasePath(options.basePath);
|
|
85
|
-
if (!(options
|
|
88
|
+
if (!isEnabled(options))
|
|
86
89
|
return disabledWizeLens(options, basePath);
|
|
87
90
|
const p = buildParts(options, basePath);
|
|
88
91
|
const startDbSpan = createDbSpans(p.tracing.tracer, p.redactKeys, !!options.traceQueriesOutsideRequests);
|
package/dist/wizelens.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wizelens.js","sourceRoot":"","sources":["../src/wizelens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAIvC,SAAS,iBAAiB,CAAC,QAA4B;IACrD,OAAO,CAAC,GAAG,GAAG,CAAC,QAAQ,IAAI,iBAAiB,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAC9G,CAAC;AAED,SAAS,aAAa,CAAC,KAAiB,EAAE,OAAwB;
|
|
1
|
+
{"version":3,"file":"wizelens.js","sourceRoot":"","sources":["../src/wizelens.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wizeworks/lens-node",
|
|
3
|
-
"version": "0.3.0-alpha.
|
|
3
|
+
"version": "0.3.0-alpha.3",
|
|
4
4
|
"description": "WizeLens add-on for Node.js: request timeline, outgoing HTTP, database calls, logs, errors, and an in-app dashboard.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "WizeWorks LLC",
|
|
@@ -61,8 +61,8 @@
|
|
|
61
61
|
"@opentelemetry/resources": "^2.12.0",
|
|
62
62
|
"@opentelemetry/sdk-trace-base": "^2.12.0",
|
|
63
63
|
"zod": "^4.6.7",
|
|
64
|
-
"@wizeworks/lens-
|
|
65
|
-
"@wizeworks/lens-
|
|
64
|
+
"@wizeworks/lens-ui": "^0.3.0-alpha.3",
|
|
65
|
+
"@wizeworks/lens-core": "^0.3.0-alpha.3"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
68
|
"@azure/service-bus": "^7.10.0",
|