qyl-mcp-server 7.3.1 → 7.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -5
- package/dist/ci.js +1 -1
- package/dist/ci.js.map +1 -1
- package/dist/collector.d.ts +9 -6
- package/dist/collector.js +4 -1
- package/dist/collector.js.map +1 -1
- package/dist/contract-validation.d.ts +17 -0
- package/dist/contract-validation.js +65 -0
- package/dist/contract-validation.js.map +1 -1
- package/dist/data.d.ts +36 -13
- package/dist/data.js +74 -23
- package/dist/data.js.map +1 -1
- package/dist/events.js +1 -1
- package/dist/events.js.map +1 -1
- package/dist/http-security.d.ts +1 -0
- package/dist/http-security.js +1 -1
- package/dist/http-security.js.map +1 -1
- package/dist/main.js +1 -4
- package/dist/main.js.map +1 -1
- package/dist/mcp-app.html +1 -1
- package/dist/mcp-dashboard.html +1 -1
- package/dist/mcp-home.html +1 -1
- package/dist/metrics-tools.d.ts +4 -11
- package/dist/metrics-tools.js +43 -44
- package/dist/metrics-tools.js.map +1 -1
- package/dist/metrics.d.ts +21 -39
- package/dist/metrics.js +58 -53
- package/dist/metrics.js.map +1 -1
- package/dist/paging.d.ts +16 -0
- package/dist/paging.js +33 -0
- package/dist/paging.js.map +1 -0
- package/dist/server.js +44 -38
- package/dist/server.js.map +1 -1
- package/dist/summaries.d.ts +13 -2
- package/dist/summaries.js +20 -4
- package/dist/summaries.js.map +1 -1
- package/dist/telemetry.js +7 -0
- package/dist/telemetry.js.map +1 -1
- package/dist/tools.js +66 -16
- package/dist/tools.js.map +1 -1
- package/package.json +2 -2
- package/dist/contract-operations.d.ts +0 -37
- package/dist/contract-operations.js +0 -124
- package/dist/contract-operations.js.map +0 -1
package/dist/mcp-home.html
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<meta name="color-scheme" content="dark">
|
|
7
7
|
<meta name="description" content="Bring qyl traces, logs, and MCP telemetry into your coding agent.">
|
|
8
8
|
<title>qyl · MCP telemetry for coding agents</title>
|
|
9
|
-
<script type="module" crossorigin>(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=`7.
|
|
9
|
+
<script type="module" crossorigin>(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=`7.4.0`,t=`https://mcp.qyl.at/mcp`,n={codex:{title:`terminal`,value:`codex mcp add qyl --url ${t}`},claude:{title:`terminal`,value:`claude mcp add --transport http qyl ${t}`},cursor:{title:`mcp.json`,value:`{
|
|
10
10
|
"mcpServers": {
|
|
11
11
|
"qyl": {
|
|
12
12
|
"url": "${t}"
|
package/dist/metrics-tools.d.ts
CHANGED
|
@@ -7,17 +7,10 @@
|
|
|
7
7
|
* single tool with a mode argument would make every call carry the arguments of
|
|
8
8
|
* the other two.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* generating them from the OpenAPI document keeps gate G10a honest instead of
|
|
15
|
-
* exempting three hand-written objects from it.
|
|
10
|
+
* Input and output shapes are the contract's `Mcp.Tools.*Metric*` models from
|
|
11
|
+
* contract-validation.ts, like every other tool. The two list tools page: the
|
|
12
|
+
* page's own `has_more` and `next_cursor` travel with the items, and the same
|
|
13
|
+
* `cursor` input continues the list.
|
|
16
14
|
*/
|
|
17
15
|
import type { McpServer } from "@modelcontextprotocol/server";
|
|
18
|
-
/**
|
|
19
|
-
* The list operations page, and their pages are the tool's output. `has_more`
|
|
20
|
-
* is the page's own flag, so a reader can tell a complete catalog from a first
|
|
21
|
-
* page; the cursor does not travel yet, because these tools take no cursor.
|
|
22
|
-
*/
|
|
23
16
|
export declare function registerMetricsTools(server: McpServer): void;
|
package/dist/metrics-tools.js
CHANGED
|
@@ -7,83 +7,82 @@
|
|
|
7
7
|
* single tool with a mode argument would make every call carry the arguments of
|
|
8
8
|
* the other two.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* generating them from the OpenAPI document keeps gate G10a honest instead of
|
|
15
|
-
* exempting three hand-written objects from it.
|
|
10
|
+
* Input and output shapes are the contract's `Mcp.Tools.*Metric*` models from
|
|
11
|
+
* contract-validation.ts, like every other tool. The two list tools page: the
|
|
12
|
+
* page's own `has_more` and `next_cursor` travel with the items, and the same
|
|
13
|
+
* `cursor` input continues the list.
|
|
16
14
|
*/
|
|
17
|
-
import {
|
|
18
|
-
import { MetricQueryResultSchema, MetricsListResponseSchema, MetricSeriesListResponseSchema, compactOutputSchema, } from "./contract-validation.js";
|
|
15
|
+
import { GetMetricSeriesInputSchema, GetMetricSeriesOutputSchema, ListMetricsInputSchema, ListMetricsOutputSchema, QueryMetricInputSchema, QueryMetricOutputSchema, compactOutputSchema, } from "./contract-validation.js";
|
|
19
16
|
import { listMetricSeries, listMetrics, queryMetric, } from "./metrics.js";
|
|
20
|
-
import { summarizeMetricCatalog, summarizeMetricQuery, summarizeMetricSeries, } from "./summaries.js";
|
|
17
|
+
import { pageNote, summarizeMetricCatalog, summarizeMetricQuery, summarizeMetricSeries, } from "./summaries.js";
|
|
21
18
|
import { runTool } from "./request-scope.js";
|
|
22
19
|
import { telemetryToolResult } from "./telemetry-redaction.js";
|
|
23
20
|
import { READ_ONLY_TELEMETRY_TOOL_ANNOTATIONS, TELEMETRY_TOOL_AUTH_META } from "./tools.js";
|
|
24
|
-
const METRICS_PATH = "/api/v1/metrics";
|
|
25
|
-
const SERIES_PATH = "/api/v1/metrics/{metric_name}/series";
|
|
26
|
-
const QUERY_PATH = "/api/v1/metrics/{metric_name}/query";
|
|
27
|
-
/**
|
|
28
|
-
* The list operations page, and their pages are the tool's output. `has_more`
|
|
29
|
-
* is the page's own flag, so a reader can tell a complete catalog from a first
|
|
30
|
-
* page; the cursor does not travel yet, because these tools take no cursor.
|
|
31
|
-
*/
|
|
32
21
|
export function registerMetricsTools(server) {
|
|
33
22
|
server.registerTool("list_metrics", {
|
|
34
23
|
title: "List Metrics",
|
|
35
24
|
description: "List the metric instruments recorded for this project: name, kind " +
|
|
36
25
|
"(gauge/sum/histogram), unit, how many attribute streams exist under each " +
|
|
37
26
|
"name, and when it was last written. Useful when the user wants to discover " +
|
|
38
|
-
"instrument names before querying a metric by its exact name."
|
|
39
|
-
|
|
40
|
-
|
|
27
|
+
"instrument names before querying a metric by its exact name. name_prefix " +
|
|
28
|
+
"narrows the catalog; when has_more is true, pass next_cursor as cursor with " +
|
|
29
|
+
"the same prefix for the next page.",
|
|
30
|
+
inputSchema: ListMetricsInputSchema,
|
|
31
|
+
outputSchema: compactOutputSchema(ListMetricsOutputSchema),
|
|
41
32
|
annotations: READ_ONLY_TELEMETRY_TOOL_ANNOTATIONS,
|
|
42
33
|
_meta: TELEMETRY_TOOL_AUTH_META,
|
|
43
34
|
}, (args, ctx) => runTool(ctx, 1, async (scope) => {
|
|
44
|
-
const
|
|
45
|
-
await scope.step(`Fetched ${
|
|
46
|
-
|
|
47
|
-
items:
|
|
48
|
-
has_more: hasMore,
|
|
49
|
-
|
|
35
|
+
const page = await listMetrics(args, scope.collector);
|
|
36
|
+
await scope.step(`Fetched ${page.items.length} metric instrument(s)`);
|
|
37
|
+
const output = {
|
|
38
|
+
items: page.items,
|
|
39
|
+
has_more: page.hasMore,
|
|
40
|
+
...(page.nextCursor === undefined ? {} : { next_cursor: page.nextCursor }),
|
|
41
|
+
};
|
|
42
|
+
return telemetryToolResult(summarizeMetricCatalog(page.items, page.mode) + pageNote(page), output);
|
|
50
43
|
}));
|
|
51
44
|
server.registerTool("get_metric_series", {
|
|
52
45
|
title: "Get Metric Series",
|
|
53
46
|
description: "List the distinct attribute streams recorded under one metric name, with " +
|
|
54
47
|
"each stream's attributes, service, and first/last seen. Useful when the user " +
|
|
55
|
-
"wants to discover group_by keys or
|
|
56
|
-
"choosing the groups in a range query."
|
|
57
|
-
|
|
58
|
-
|
|
48
|
+
"wants to discover group_by keys or matchers for query_metric before " +
|
|
49
|
+
"choosing the groups in a range query. matchers narrow the streams: each is " +
|
|
50
|
+
"{key, op, value} with op eq (exact) or prefix. When has_more is true, pass " +
|
|
51
|
+
"next_cursor as cursor with the same matchers for the next page.",
|
|
52
|
+
inputSchema: GetMetricSeriesInputSchema,
|
|
53
|
+
outputSchema: compactOutputSchema(GetMetricSeriesOutputSchema),
|
|
59
54
|
annotations: READ_ONLY_TELEMETRY_TOOL_ANNOTATIONS,
|
|
60
55
|
_meta: TELEMETRY_TOOL_AUTH_META,
|
|
61
56
|
}, (args, ctx) => runTool(ctx, 1, async (scope) => {
|
|
62
|
-
const
|
|
63
|
-
await scope.step(`Fetched ${
|
|
64
|
-
|
|
65
|
-
items:
|
|
66
|
-
has_more: hasMore,
|
|
67
|
-
|
|
57
|
+
const page = await listMetricSeries(args, scope.collector);
|
|
58
|
+
await scope.step(`Fetched ${page.items.length} series of ${args.metric_name}`);
|
|
59
|
+
const output = {
|
|
60
|
+
items: page.items,
|
|
61
|
+
has_more: page.hasMore,
|
|
62
|
+
...(page.nextCursor === undefined ? {} : { next_cursor: page.nextCursor }),
|
|
63
|
+
};
|
|
64
|
+
return telemetryToolResult(summarizeMetricSeries(page.items, page.mode) + pageNote(page), output);
|
|
68
65
|
}));
|
|
69
66
|
server.registerTool("query_metric", {
|
|
70
67
|
title: "Query Metric",
|
|
71
68
|
description: "Run a time-bucketed range query when the user wants to compare a metric " +
|
|
72
69
|
"over time or across groups: a window (start_time, " +
|
|
73
|
-
"end_time), a bucket width (step_ms), a reducer
|
|
74
|
-
"sum, count, last, p50, p90, p95, p99), optional
|
|
75
|
-
"optional
|
|
76
|
-
"per grouping with its buckets. With
|
|
77
|
-
"each grouping yields one bucket: one
|
|
78
|
-
|
|
79
|
-
|
|
70
|
+
"end_time), a bucket width in whole milliseconds (step_ms), a reducer " +
|
|
71
|
+
"(aggregation: avg, min, max, sum, count, last, p50, p90, p95, p99), optional " +
|
|
72
|
+
"group_by attribute keys, and optional matchers, each {key, op, value} with op " +
|
|
73
|
+
"eq (exact) or prefix. Returns one stream per grouping with its buckets. With " +
|
|
74
|
+
"step_ms equal to the window duration, each grouping yields one bucket: one " +
|
|
75
|
+
"number per series.",
|
|
76
|
+
inputSchema: QueryMetricInputSchema,
|
|
77
|
+
outputSchema: compactOutputSchema(QueryMetricOutputSchema),
|
|
80
78
|
annotations: READ_ONLY_TELEMETRY_TOOL_ANNOTATIONS,
|
|
81
79
|
_meta: TELEMETRY_TOOL_AUTH_META,
|
|
82
80
|
}, (args, ctx) => runTool(ctx, 1, async (scope) => {
|
|
83
81
|
const { result, mode } = await queryMetric(args, scope.collector);
|
|
84
82
|
await scope.step(`Queried ${args.metric_name}: ${result.series.length} series, ` +
|
|
85
83
|
`${result.series[0]?.buckets.length ?? 0} bucket(s) each`);
|
|
86
|
-
|
|
84
|
+
const output = result;
|
|
85
|
+
return telemetryToolResult(summarizeMetricQuery(result, mode), output);
|
|
87
86
|
}));
|
|
88
87
|
}
|
|
89
88
|
//# sourceMappingURL=metrics-tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics-tools.js","sourceRoot":"","sources":["../src/metrics-tools.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"metrics-tools.js","sourceRoot":"","sources":["../src/metrics-tools.ts"],"names":[],"mappings":"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"}
|
package/dist/metrics.d.ts
CHANGED
|
@@ -1,52 +1,34 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Metric reading over the contract
|
|
2
|
+
* Metric reading over the contract metrics API, live and demo.
|
|
3
3
|
*
|
|
4
4
|
* Live mode forwards to the collector's three published operations and revalidates
|
|
5
5
|
* the answer against the operation's own 200 body. Demo mode holds stored points
|
|
6
6
|
* and runs the same bucketing and reducer the collector would, so a demo answer
|
|
7
|
-
* honors step_ms, aggregation, group_by
|
|
8
|
-
* pretending they were applied — the invariant the rest of the demo
|
|
7
|
+
* honors step_ms, aggregation, group_by, the attribute matchers and the cursor
|
|
8
|
+
* rather than pretending they were applied — the invariant the rest of the demo
|
|
9
|
+
* dataset keeps.
|
|
10
|
+
*
|
|
11
|
+
* The tool inputs are the contract's `Mcp.Tools.*Metric*` models (11.6.0). A
|
|
12
|
+
* matcher is structured, `{ key, op, value }`; the wire keeps the collector's
|
|
13
|
+
* `attr` / `attr_prefix` strings, so the tool layer serializes `eq` and `prefix`
|
|
14
|
+
* to them and nothing else.
|
|
9
15
|
*/
|
|
10
|
-
import type {
|
|
16
|
+
import type { GetMetricSeriesInput, ListMetricsInput, MetricDescriptor, MetricQueryResult, MetricSeries, QueryMetricInput } from "@ancplua/qyl-api-schema/types";
|
|
11
17
|
import { type CollectorRequestOptions } from "./collector.js";
|
|
12
18
|
import type { Mode } from "./wire.js";
|
|
13
|
-
/** Tool arguments
|
|
14
|
-
export
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
export interface
|
|
19
|
-
|
|
20
|
-
attr?: readonly string[];
|
|
21
|
-
attr_prefix?: readonly string[];
|
|
22
|
-
limit?: number;
|
|
23
|
-
}
|
|
24
|
-
export interface QueryMetricArgs {
|
|
25
|
-
metric_name: string;
|
|
26
|
-
start_time: string;
|
|
27
|
-
end_time: string;
|
|
28
|
-
step_ms?: number;
|
|
29
|
-
aggregation?: MetricAggregation;
|
|
30
|
-
group_by?: readonly string[];
|
|
31
|
-
attr?: readonly string[];
|
|
32
|
-
attr_prefix?: readonly string[];
|
|
33
|
-
series_limit?: number;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* `hasMore` is the page's own flag: the collector's `has_more` live, and
|
|
37
|
-
* "more matched than `limit`" in demo mode. The tools pass it through so a
|
|
38
|
-
* truncated catalog never reads as a complete one.
|
|
39
|
-
*/
|
|
40
|
-
export declare function listMetrics(args: ListMetricsArgs, options?: CollectorRequestOptions): Promise<{
|
|
41
|
-
metrics: MetricDescriptor[];
|
|
19
|
+
/** Tool arguments are the published tool input models. */
|
|
20
|
+
export type ListMetricsArgs = ListMetricsInput;
|
|
21
|
+
export type MetricSeriesArgs = GetMetricSeriesInput;
|
|
22
|
+
export type QueryMetricArgs = QueryMetricInput;
|
|
23
|
+
/** A page of metric items with the mode it came from; the cursor is added after redaction. */
|
|
24
|
+
export interface MetricPage<T> {
|
|
25
|
+
items: T[];
|
|
42
26
|
hasMore: boolean;
|
|
27
|
+
nextCursor?: string;
|
|
43
28
|
mode: Mode;
|
|
44
|
-
}
|
|
45
|
-
export declare function
|
|
46
|
-
|
|
47
|
-
hasMore: boolean;
|
|
48
|
-
mode: Mode;
|
|
49
|
-
}>;
|
|
29
|
+
}
|
|
30
|
+
export declare function listMetrics(args: ListMetricsArgs, options?: CollectorRequestOptions): Promise<MetricPage<MetricDescriptor>>;
|
|
31
|
+
export declare function listMetricSeries(args: MetricSeriesArgs, options?: CollectorRequestOptions): Promise<MetricPage<MetricSeries>>;
|
|
50
32
|
export declare function queryMetric(args: QueryMetricArgs, options?: CollectorRequestOptions): Promise<{
|
|
51
33
|
result: MetricQueryResult;
|
|
52
34
|
mode: Mode;
|
package/dist/metrics.js
CHANGED
|
@@ -1,41 +1,58 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Metric reading over the contract
|
|
2
|
+
* Metric reading over the contract metrics API, live and demo.
|
|
3
3
|
*
|
|
4
4
|
* Live mode forwards to the collector's three published operations and revalidates
|
|
5
5
|
* the answer against the operation's own 200 body. Demo mode holds stored points
|
|
6
6
|
* and runs the same bucketing and reducer the collector would, so a demo answer
|
|
7
|
-
* honors step_ms, aggregation, group_by
|
|
8
|
-
* pretending they were applied — the invariant the rest of the demo
|
|
7
|
+
* honors step_ms, aggregation, group_by, the attribute matchers and the cursor
|
|
8
|
+
* rather than pretending they were applied — the invariant the rest of the demo
|
|
9
|
+
* dataset keeps.
|
|
10
|
+
*
|
|
11
|
+
* The tool inputs are the contract's `Mcp.Tools.*Metric*` models (11.6.0). A
|
|
12
|
+
* matcher is structured, `{ key, op, value }`; the wire keeps the collector's
|
|
13
|
+
* `attr` / `attr_prefix` strings, so the tool layer serializes `eq` and `prefix`
|
|
14
|
+
* to them and nothing else.
|
|
9
15
|
*/
|
|
10
16
|
import { attributeIdentity, formatAttributeValue } from "@ancplua/qyl-api-schema/runtime";
|
|
11
17
|
import { CollectorError, collectorGet, parseCollectorMetricDescriptor, parseCollectorMetricQueryResult, parseCollectorMetricSeries, parseCollectorPage, resolveMode, } from "./collector.js";
|
|
12
18
|
import { MetricsListResponseSchema, MetricSeriesListResponseSchema, } from "./contract-validation.js";
|
|
13
19
|
import { getDemoMetrics } from "./demo.js";
|
|
20
|
+
import { demoPage } from "./paging.js";
|
|
14
21
|
import { redactTelemetry } from "./telemetry-redaction.js";
|
|
15
22
|
const METRICS_PATH = "/api/v1/metrics";
|
|
23
|
+
function metricPage(page, mode) {
|
|
24
|
+
return {
|
|
25
|
+
...redactTelemetry({ items: page.items, mode }),
|
|
26
|
+
hasMore: page.hasMore,
|
|
27
|
+
...(page.nextCursor === undefined ? {} : { nextCursor: page.nextCursor }),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
16
30
|
/**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* silently ignored filter.
|
|
31
|
+
* The collector's published spellings of the two matcher lists: `eq` becomes
|
|
32
|
+
* `attr=key=value`, `prefix` becomes `attr_prefix=key=value`. The collector
|
|
33
|
+
* splits on the first `=`, so a value containing `=` survives.
|
|
21
34
|
*/
|
|
22
|
-
function
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
35
|
+
function wireMatchers(matchers) {
|
|
36
|
+
const attr = [];
|
|
37
|
+
const attr_prefix = [];
|
|
38
|
+
for (const matcher of matchers ?? []) {
|
|
39
|
+
(matcher.op === "eq" ? attr : attr_prefix).push(`${matcher.key}=${matcher.value}`);
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
attr: attr.length === 0 ? undefined : attr,
|
|
43
|
+
attr_prefix: attr_prefix.length === 0 ? undefined : attr_prefix,
|
|
44
|
+
};
|
|
30
45
|
}
|
|
31
46
|
function attributeFormatted(attributes, key) {
|
|
32
47
|
const found = attributes.find((attribute) => attribute.key === key);
|
|
33
48
|
return found === undefined ? undefined : formatAttributeValue(found.value);
|
|
34
49
|
}
|
|
35
|
-
function matchesStream(stream,
|
|
50
|
+
function matchesStream(stream, matchers) {
|
|
36
51
|
const read = (key) => key === "service.name" ? stream.serviceName : attributeFormatted(stream.attributes, key);
|
|
37
|
-
return (
|
|
38
|
-
|
|
52
|
+
return (matchers ?? []).every((matcher) => {
|
|
53
|
+
const value = read(matcher.key);
|
|
54
|
+
return matcher.op === "eq" ? value === matcher.value : value?.startsWith(matcher.value) === true;
|
|
55
|
+
});
|
|
39
56
|
}
|
|
40
57
|
/** Stable across rebuilds because it is derived from identity, not from order. */
|
|
41
58
|
function demoSeriesId(stream) {
|
|
@@ -52,11 +69,9 @@ function demoSeriesId(stream) {
|
|
|
52
69
|
}
|
|
53
70
|
return hash.toString(16).padStart(8, "0");
|
|
54
71
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
* truncated catalog never reads as a complete one.
|
|
59
|
-
*/
|
|
72
|
+
function demoNotFound(metricName) {
|
|
73
|
+
return new CollectorError(`metric not found: ${metricName}`, false, undefined, "not_found");
|
|
74
|
+
}
|
|
60
75
|
export async function listMetrics(args, options = {}) {
|
|
61
76
|
const mode = await resolveMode();
|
|
62
77
|
const limit = args.limit ?? 200;
|
|
@@ -71,14 +86,13 @@ export async function listMetrics(args, options = {}) {
|
|
|
71
86
|
else
|
|
72
87
|
byName.set(stream.name, [stream]);
|
|
73
88
|
}
|
|
74
|
-
const
|
|
75
|
-
.sort(([left], [right]) => (left < right ? -1 : left > right ? 1 : 0))
|
|
76
|
-
const metrics = sorted
|
|
77
|
-
.slice(0, limit)
|
|
89
|
+
const metrics = [...byName.entries()]
|
|
90
|
+
.sort(([left], [right]) => (left < right ? -1 : left > right ? 1 : 0))
|
|
78
91
|
.map(([name, streams]) => {
|
|
79
92
|
const [first] = streams;
|
|
80
|
-
if (first === undefined)
|
|
93
|
+
if (first === undefined) {
|
|
81
94
|
throw new CollectorError(`demo metric ${name} has no streams`, false, undefined, "internal");
|
|
95
|
+
}
|
|
82
96
|
const lastSeen = Math.max(...streams.map((stream) => stream.points.at(-1)?.atMs ?? 0));
|
|
83
97
|
return {
|
|
84
98
|
name,
|
|
@@ -91,23 +105,20 @@ export async function listMetrics(args, options = {}) {
|
|
|
91
105
|
last_seen: new Date(lastSeen).toISOString(),
|
|
92
106
|
};
|
|
93
107
|
});
|
|
94
|
-
return
|
|
108
|
+
return metricPage(demoPage(metrics, limit, args.cursor), mode);
|
|
95
109
|
}
|
|
96
|
-
const body = await collectorGet(METRICS_PATH, { name_prefix: args.name_prefix, limit }, options);
|
|
97
|
-
|
|
98
|
-
return redactTelemetry({ metrics: page.items, hasMore: page.hasMore, mode });
|
|
110
|
+
const body = await collectorGet(METRICS_PATH, { name_prefix: args.name_prefix, limit, cursor: args.cursor }, options);
|
|
111
|
+
return metricPage(parseCollectorPage(body, METRICS_PATH, MetricsListResponseSchema, parseCollectorMetricDescriptor), mode);
|
|
99
112
|
}
|
|
100
113
|
export async function listMetricSeries(args, options = {}) {
|
|
101
114
|
const mode = await resolveMode();
|
|
102
115
|
const limit = args.limit ?? 200;
|
|
103
|
-
const exact = parseMatchers(args.attr, "attr");
|
|
104
|
-
const prefixes = parseMatchers(args.attr_prefix, "attr_prefix");
|
|
105
116
|
if (mode === "demo") {
|
|
106
|
-
const streams = getDemoMetrics().filter((stream) => stream.name === args.metric_name && matchesStream(stream,
|
|
117
|
+
const streams = getDemoMetrics().filter((stream) => stream.name === args.metric_name && matchesStream(stream, args.matchers));
|
|
107
118
|
if (streams.length === 0 && !getDemoMetrics().some((s) => s.name === args.metric_name)) {
|
|
108
|
-
throw
|
|
119
|
+
throw demoNotFound(args.metric_name);
|
|
109
120
|
}
|
|
110
|
-
const series = streams.
|
|
121
|
+
const series = streams.map((stream) => ({
|
|
111
122
|
series_id: demoSeriesId(stream),
|
|
112
123
|
name: stream.name,
|
|
113
124
|
kind: stream.kind,
|
|
@@ -117,18 +128,16 @@ export async function listMetricSeries(args, options = {}) {
|
|
|
117
128
|
first_seen: new Date(stream.points[0]?.atMs ?? 0).toISOString(),
|
|
118
129
|
last_seen: new Date(stream.points.at(-1)?.atMs ?? 0).toISOString(),
|
|
119
130
|
}));
|
|
120
|
-
return
|
|
131
|
+
return metricPage(demoPage(series, limit, args.cursor), mode);
|
|
121
132
|
}
|
|
122
133
|
const path = `${METRICS_PATH}/${encodeURIComponent(args.metric_name)}/series`;
|
|
123
134
|
try {
|
|
124
|
-
const body = await collectorGet(path, {
|
|
125
|
-
|
|
126
|
-
return redactTelemetry({ series: page.items, hasMore: page.hasMore, mode });
|
|
135
|
+
const body = await collectorGet(path, { ...wireMatchers(args.matchers), limit, cursor: args.cursor }, options);
|
|
136
|
+
return metricPage(parseCollectorPage(body, path, MetricSeriesListResponseSchema, parseCollectorMetricSeries), mode);
|
|
127
137
|
}
|
|
128
138
|
catch (error) {
|
|
129
|
-
if (error instanceof CollectorError && error.status === 404)
|
|
130
|
-
throw
|
|
131
|
-
}
|
|
139
|
+
if (error instanceof CollectorError && error.status === 404)
|
|
140
|
+
throw demoNotFound(args.metric_name);
|
|
132
141
|
throw error;
|
|
133
142
|
}
|
|
134
143
|
}
|
|
@@ -180,12 +189,10 @@ export async function queryMetric(args, options = {}) {
|
|
|
180
189
|
const stepMs = args.step_ms ?? 60_000;
|
|
181
190
|
const aggregation = args.aggregation ?? "avg";
|
|
182
191
|
const seriesLimit = args.series_limit ?? 50;
|
|
183
|
-
const exact = parseMatchers(args.attr, "attr");
|
|
184
|
-
const prefixes = parseMatchers(args.attr_prefix, "attr_prefix");
|
|
185
192
|
if (mode === "demo") {
|
|
186
|
-
const streams = getDemoMetrics().filter((stream) => stream.name === args.metric_name && matchesStream(stream,
|
|
193
|
+
const streams = getDemoMetrics().filter((stream) => stream.name === args.metric_name && matchesStream(stream, args.matchers));
|
|
187
194
|
if (!getDemoMetrics().some((stream) => stream.name === args.metric_name)) {
|
|
188
|
-
throw
|
|
195
|
+
throw demoNotFound(args.metric_name);
|
|
189
196
|
}
|
|
190
197
|
const startMs = Date.parse(args.start_time);
|
|
191
198
|
const endMs = Date.parse(args.end_time);
|
|
@@ -245,16 +252,14 @@ export async function queryMetric(args, options = {}) {
|
|
|
245
252
|
step_ms: stepMs,
|
|
246
253
|
aggregation,
|
|
247
254
|
group_by: args.group_by,
|
|
248
|
-
|
|
249
|
-
attr_prefix: args.attr_prefix,
|
|
255
|
+
...wireMatchers(args.matchers),
|
|
250
256
|
series_limit: seriesLimit,
|
|
251
257
|
}, options);
|
|
252
258
|
return redactTelemetry({ result: parseCollectorMetricQueryResult(body, path), mode });
|
|
253
259
|
}
|
|
254
260
|
catch (error) {
|
|
255
|
-
if (error instanceof CollectorError && error.status === 404)
|
|
256
|
-
throw
|
|
257
|
-
}
|
|
261
|
+
if (error instanceof CollectorError && error.status === 404)
|
|
262
|
+
throw demoNotFound(args.metric_name);
|
|
258
263
|
throw error;
|
|
259
264
|
}
|
|
260
265
|
}
|
package/dist/metrics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"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"}
|
package/dist/paging.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Demo-mode paging.
|
|
3
|
+
*
|
|
4
|
+
* Live pages come from the Collector with its own opaque cursor. The demo
|
|
5
|
+
* dataset has no Collector, so it pages itself the same way a caller sees it:
|
|
6
|
+
* an opaque cursor, `has_more` taken from the data, and a cursor that does not
|
|
7
|
+
* decode is the caller's mistake, never a silent first page again — the
|
|
8
|
+
* invariant that demo honors every filter the live endpoints support.
|
|
9
|
+
*/
|
|
10
|
+
/** One page of a list, in the shape every list tool returns. */
|
|
11
|
+
export interface Page<T> {
|
|
12
|
+
items: T[];
|
|
13
|
+
hasMore: boolean;
|
|
14
|
+
nextCursor?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function demoPage<T>(items: readonly T[], limit: number, cursor: string | undefined): Page<T>;
|
package/dist/paging.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Demo-mode paging.
|
|
3
|
+
*
|
|
4
|
+
* Live pages come from the Collector with its own opaque cursor. The demo
|
|
5
|
+
* dataset has no Collector, so it pages itself the same way a caller sees it:
|
|
6
|
+
* an opaque cursor, `has_more` taken from the data, and a cursor that does not
|
|
7
|
+
* decode is the caller's mistake, never a silent first page again — the
|
|
8
|
+
* invariant that demo honors every filter the live endpoints support.
|
|
9
|
+
*/
|
|
10
|
+
import { CollectorError } from "./collector.js";
|
|
11
|
+
const DEMO_CURSOR_PREFIX = "demo:";
|
|
12
|
+
export function demoPage(items, limit, cursor) {
|
|
13
|
+
const offset = cursor === undefined ? 0 : decodeDemoCursor(cursor);
|
|
14
|
+
const end = offset + limit;
|
|
15
|
+
const hasMore = end < items.length;
|
|
16
|
+
return {
|
|
17
|
+
items: items.slice(offset, end),
|
|
18
|
+
hasMore,
|
|
19
|
+
...(hasMore ? { nextCursor: encodeDemoCursor(end) } : {}),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function encodeDemoCursor(offset) {
|
|
23
|
+
return Buffer.from(`${DEMO_CURSOR_PREFIX}${offset}`).toString("base64url");
|
|
24
|
+
}
|
|
25
|
+
function decodeDemoCursor(cursor) {
|
|
26
|
+
const decoded = Buffer.from(cursor, "base64url").toString();
|
|
27
|
+
const digits = decoded.startsWith(DEMO_CURSOR_PREFIX) ? decoded.slice(DEMO_CURSOR_PREFIX.length) : "";
|
|
28
|
+
if (!/^\d{1,9}$/u.test(digits)) {
|
|
29
|
+
throw new CollectorError("cursor is not a qyl cursor; pass the previous page's next_cursor unchanged, with the same filters", false, undefined, "invalid_argument");
|
|
30
|
+
}
|
|
31
|
+
return Number(digits);
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=paging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paging.js","sourceRoot":"","sources":["../src/paging.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAShD,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAEnC,MAAM,UAAU,QAAQ,CAAI,KAAmB,EAAE,KAAa,EAAE,MAA0B;IACxF,MAAM,MAAM,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,GAAG,GAAG,MAAM,GAAG,KAAK,CAAC;IAC3B,MAAM,OAAO,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;IACnC,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC;QAC/B,OAAO;QACP,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1D,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAc;IACtC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,kBAAkB,GAAG,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAc;IACtC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,cAAc,CACtB,mGAAmG,EACnG,KAAK,EACL,SAAS,EACT,kBAAkB,CACnB,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC"}
|