qyl-mcp-server 7.7.0 → 8.1.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 +34 -25
- package/dist/analysis-budget.d.ts +8 -0
- package/dist/analysis-budget.js +73 -0
- package/dist/analysis-budget.js.map +1 -0
- package/dist/analysis-client.js +20 -14
- package/dist/analysis-client.js.map +1 -1
- package/dist/analysis-summary.d.ts +2 -0
- package/dist/analysis-summary.js +54 -0
- package/dist/analysis-summary.js.map +1 -0
- package/dist/analysis-tools.js +11 -10
- package/dist/analysis-tools.js.map +1 -1
- package/dist/authorization.d.ts +2 -0
- package/dist/authorization.js +8 -6
- package/dist/authorization.js.map +1 -1
- package/dist/ci.d.ts +1 -22
- package/dist/ci.js +0 -64
- package/dist/ci.js.map +1 -1
- package/dist/collector-resources.d.ts +11 -25
- package/dist/collector-resources.js +14 -132
- package/dist/collector-resources.js.map +1 -1
- package/dist/collector.d.ts +4 -42
- package/dist/collector.js +11 -171
- package/dist/collector.js.map +1 -1
- package/dist/config.d.ts +2 -2
- package/dist/config.js +2 -2
- package/dist/contract-handshake.js +0 -6
- package/dist/contract-handshake.js.map +1 -1
- package/dist/contract-validation.d.ts +11 -16
- package/dist/contract-validation.js +18 -27
- package/dist/contract-validation.js.map +1 -1
- package/dist/data.d.ts +3 -69
- package/dist/data.js +6 -182
- package/dist/data.js.map +1 -1
- package/dist/events-authorization.d.ts +1 -1
- package/dist/events.d.ts +3 -2
- package/dist/events.js +1 -1
- package/dist/events.js.map +1 -1
- package/dist/main.d.ts +1 -8
- package/dist/main.js +6 -10
- package/dist/main.js.map +1 -1
- package/dist/mcp-app.html +2 -3
- package/dist/mcp-dashboard.html +2 -3
- package/dist/mcp-home.html +1 -1
- package/dist/request-scope.js +0 -8
- package/dist/request-scope.js.map +1 -1
- package/dist/server.d.ts +3 -16
- package/dist/server.js +11 -23
- package/dist/server.js.map +1 -1
- package/dist/skills/qyl-investigate/SKILL.md +120 -0
- package/dist/skills.d.ts +27 -0
- package/dist/skills.js +142 -0
- package/dist/skills.js.map +1 -0
- package/dist/summaries.d.ts +2 -45
- package/dist/summaries.js +1 -207
- package/dist/summaries.js.map +1 -1
- package/dist/tool-scopes.d.ts +4 -22
- package/dist/tool-scopes.js +4 -58
- package/dist/tool-scopes.js.map +1 -1
- package/dist/tools.d.ts +0 -2
- package/dist/tools.js +0 -2
- package/dist/tools.js.map +1 -1
- package/dist/write-tools.d.ts +12 -4
- package/dist/write-tools.js +7 -12
- package/dist/write-tools.js.map +1 -1
- package/package.json +16 -10
- package/dist/demo.d.ts +0 -41
- package/dist/demo.js +0 -941
- package/dist/demo.js.map +0 -1
- package/dist/metrics.d.ts +0 -35
- package/dist/metrics.js +0 -279
- package/dist/metrics.js.map +0 -1
- package/dist/paging.d.ts +0 -16
- package/dist/paging.js +0 -33
- package/dist/paging.js.map +0 -1
- package/dist/stats.d.ts +0 -18
- package/dist/stats.js +0 -144
- package/dist/stats.js.map +0 -1
package/dist/ci.js
CHANGED
|
@@ -2,70 +2,6 @@ import { compactOutputSchema, contractSchema } from "./contract-validation.js";
|
|
|
2
2
|
import { queryAnalysis } from "./analysis-client.js";
|
|
3
3
|
import { runTool } from "./request-scope.js";
|
|
4
4
|
import { READ_ONLY_TELEMETRY_TOOL_ANNOTATIONS, TELEMETRY_TOOL_AUTH_META } from "./tools.js";
|
|
5
|
-
/** Resource service-name prefix that marks telemetry as CI-emitted. */
|
|
6
|
-
export const CI_SERVICE_PREFIX = "qyl-ci";
|
|
7
|
-
/** CI sessions carry at least one service matching the requested prefix. */
|
|
8
|
-
export function filterCiSessions(sessions, servicePrefix = CI_SERVICE_PREFIX) {
|
|
9
|
-
return sessions.filter((session) => session.services.some((service) => service.startsWith(servicePrefix)));
|
|
10
|
-
}
|
|
11
|
-
function spanLeg(span) {
|
|
12
|
-
const attribute = span.attributes?.find((entry) => entry.key === "ci.leg");
|
|
13
|
-
return typeof attribute?.value === "string"
|
|
14
|
-
? attribute.value
|
|
15
|
-
: span.resource.service_name;
|
|
16
|
-
}
|
|
17
|
-
/** Flatten a run's traces into per-leg phases, failures first. */
|
|
18
|
-
export function collectCiPhases(traces, servicePrefix = CI_SERVICE_PREFIX) {
|
|
19
|
-
const phases = traces.flatMap((trace) => trace.spans.filter((span) => span.resource.service_name.startsWith(servicePrefix)).map((span) => ({
|
|
20
|
-
leg: spanLeg(span),
|
|
21
|
-
phase: span.name,
|
|
22
|
-
status: span.status.code === 2 ? "error" : span.status.code === 1 ? "ok" : "unset",
|
|
23
|
-
duration_ms: Math.max(0, Math.round(Number(BigInt(span.end_time_unix_nano) - BigInt(span.start_time_unix_nano)) / 1_000_000)),
|
|
24
|
-
...(span.status.message ? { message: span.status.message } : {}),
|
|
25
|
-
})));
|
|
26
|
-
return phases.sort((a, b) => a.status === b.status
|
|
27
|
-
? a.leg.localeCompare(b.leg) || a.phase.localeCompare(b.phase)
|
|
28
|
-
: a.status === "error"
|
|
29
|
-
? -1
|
|
30
|
-
: b.status === "error"
|
|
31
|
-
? 1
|
|
32
|
-
: 0);
|
|
33
|
-
}
|
|
34
|
-
export function summarizeCiRuns(runs, mode, servicePrefix = CI_SERVICE_PREFIX) {
|
|
35
|
-
if (runs.length === 0) {
|
|
36
|
-
return `No CI runs found (${mode} mode). CI telemetry appears once runs emit ` +
|
|
37
|
-
`spans with a '${servicePrefix}*' service.name.`;
|
|
38
|
-
}
|
|
39
|
-
const lines = runs.map((run) => {
|
|
40
|
-
const failure = run.error_count > 0 ? `${run.error_count} error(s)` : "clean";
|
|
41
|
-
const duration = run.duration_ms === undefined ? "?" : `${Math.round(run.duration_ms / 1000)}s`;
|
|
42
|
-
return `- ${run.run_id} [${run.state}] ${run.start_time} ${duration} — ${failure}`;
|
|
43
|
-
});
|
|
44
|
-
return `${runs.length} CI run(s) (${mode} mode), pass a run_id for the per-leg breakdown:\n${lines.join("\n")}`;
|
|
45
|
-
}
|
|
46
|
-
export function summarizeCiRun(runId, phases, mode, servicePrefix = CI_SERVICE_PREFIX) {
|
|
47
|
-
if (phases.length === 0) {
|
|
48
|
-
return `CI run ${runId} has no phase spans matching '${servicePrefix}*' (${mode} mode).`;
|
|
49
|
-
}
|
|
50
|
-
const legs = new Map();
|
|
51
|
-
for (const phase of phases) {
|
|
52
|
-
const existing = legs.get(phase.leg);
|
|
53
|
-
if (existing)
|
|
54
|
-
existing.push(phase);
|
|
55
|
-
else
|
|
56
|
-
legs.set(phase.leg, [phase]);
|
|
57
|
-
}
|
|
58
|
-
const lines = [];
|
|
59
|
-
for (const [leg, legPhases] of legs) {
|
|
60
|
-
const failed = legPhases.filter((phase) => phase.status === "error");
|
|
61
|
-
lines.push(`${failed.length > 0 ? "✗" : "✓"} ${leg}`);
|
|
62
|
-
for (const phase of failed.length > 0 ? failed : legPhases) {
|
|
63
|
-
const detail = phase.message ? ` — ${phase.message}` : "";
|
|
64
|
-
lines.push(` ${phase.status === "error" ? "✗" : "·"} ${phase.phase} (${phase.duration_ms}ms)${detail}`);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
return `CI run ${runId} (${mode} mode):\n${lines.join("\n")}`;
|
|
68
|
-
}
|
|
69
5
|
/** Query all matching CI telemetry before pagination. */
|
|
70
6
|
export function registerCiTools(server) {
|
|
71
7
|
server.registerTool("ci_log", {
|
package/dist/ci.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../src/ci.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../src/ci.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,oCAAoC,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAC5F,yDAAyD;AACzD,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,MAAM,CAAC,YAAY,CACjB,QAAQ,EACR;QACE,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,2FAA2F;QACxG,WAAW,EAAE,cAAc,CAAC,sBAAsB,CAAC;QACnD,YAAY,EAAE,mBAAmB,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;QAC1E,WAAW,EAAE,oCAAoC;QACjD,KAAK,EAAE,wBAAwB;KAChC,EACD,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAC7C,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,cAAc,CAAC,uBAAuB,CAAC,EAAE,KAAK,CAAC,CAAC,CACjF,CAAC;AACJ,CAAC"}
|
|
@@ -7,45 +7,31 @@
|
|
|
7
7
|
* subject; no argument names a project or a credential. Nothing here changes
|
|
8
8
|
* telemetry: an annotation points at a trace, span or session and leaves it
|
|
9
9
|
* as recorded, and the one delete operation removes only these objects.
|
|
10
|
-
*
|
|
11
|
-
* Demo mode has no Collector and therefore no such objects. A call there is
|
|
12
|
-
* refused rather than answered from an invented store.
|
|
13
10
|
*/
|
|
14
|
-
import type { Annotation, CreateAnnotationInput, CreateSavedQueryInput, DeletableKind,
|
|
11
|
+
import type { Annotation, CreateAnnotationInput, CreateSavedQueryInput, DeletableKind, SavedQuery, UpdateAnnotationInput, UpdateSavedQueryInput } from "@ancplua/qyl-api-schema/types";
|
|
15
12
|
import { type CollectorRequestOptions } from "./collector.js";
|
|
16
|
-
import { type ToolScope } from "./request-scope.js";
|
|
17
13
|
/**
|
|
18
14
|
* The If-Match value for a change. An etag is opaque, but it travels as an
|
|
19
15
|
* HTTP field value, so one that could not be sent is refused here instead of
|
|
20
16
|
* failing inside fetch as if the Collector were unreachable.
|
|
21
17
|
*/
|
|
22
18
|
export declare function ifMatch(etag: string): Readonly<Record<string, string>>;
|
|
19
|
+
/**
|
|
20
|
+
* Runs one Collector call and names its refusals for what the caller tried:
|
|
21
|
+
* a status listed in `messages` becomes that message, keeping the code the
|
|
22
|
+
* status decides (`not_found`, `conflict`, `precondition_failed`,
|
|
23
|
+
* `collector_unauthorized`). A body that breaks the contract stays a
|
|
24
|
+
* contract mismatch, and every other failure passes through unchanged.
|
|
25
|
+
*/
|
|
26
|
+
export declare function refusals<T>(messages: Readonly<Partial<Record<number, string>>>, request: () => Promise<T>): Promise<T>;
|
|
27
|
+
/** The refusals every change to an existing object shares. */
|
|
28
|
+
export declare function changeRefusals(kind: string, id: string, role: "write" | "delete"): Partial<Record<number, string>>;
|
|
23
29
|
export declare function createAnnotation(input: CreateAnnotationInput, options: CollectorRequestOptions): Promise<Annotation>;
|
|
24
30
|
export declare function updateAnnotation(input: UpdateAnnotationInput, options: CollectorRequestOptions): Promise<Annotation>;
|
|
25
31
|
export declare function createSavedQuery(input: CreateSavedQueryInput, options: CollectorRequestOptions): Promise<SavedQuery>;
|
|
26
32
|
export declare function updateSavedQuery(input: UpdateSavedQueryInput, options: CollectorRequestOptions): Promise<SavedQuery>;
|
|
27
|
-
export interface SavedQueryPage {
|
|
28
|
-
savedQueries: SavedQuery[];
|
|
29
|
-
hasMore: boolean;
|
|
30
|
-
nextCursor?: string;
|
|
31
|
-
}
|
|
32
|
-
export declare function listSavedQueries(input: ListSavedQueriesInput, options: CollectorRequestOptions): Promise<SavedQueryPage>;
|
|
33
|
-
export declare function runSavedQuery(input: RunSavedQueryInput, options: CollectorRequestOptions): Promise<SavedQueryRunResult>;
|
|
34
33
|
export declare function deleteResource(kind: DeletableKind, id: string, etag: string, options: CollectorRequestOptions): Promise<void>;
|
|
35
|
-
/** What a read tool adds to its result: the annotations and one text line. */
|
|
36
|
-
export interface AnnotationReadBack {
|
|
37
|
-
/** Present when the read succeeded; absent in demo mode and when it failed. */
|
|
38
|
-
annotations?: Annotation[];
|
|
39
|
-
/** Appended to the tool's text summary; empty when there is nothing to say. */
|
|
40
|
-
text: string;
|
|
41
|
-
}
|
|
42
34
|
/** The telemetry object an annotation names, in full. */
|
|
43
35
|
export declare function describeTarget(target: Annotation["target"]): string;
|
|
44
36
|
/** One text line per annotation: what it is on, how to change it, and the note. */
|
|
45
37
|
export declare function annotationLine(annotation: Annotation): string;
|
|
46
|
-
/** The text block for a list of annotations, newest first. */
|
|
47
|
-
export declare function summarizeAnnotations(annotations: readonly Annotation[], truncated: boolean): string;
|
|
48
|
-
/** The annotations on one trace and its spans, for get_trace. */
|
|
49
|
-
export declare function readTraceAnnotations(traceId: TraceId, scope: ToolScope): Promise<AnnotationReadBack>;
|
|
50
|
-
/** The annotations on the listed sessions, newest first, for list_sessions. */
|
|
51
|
-
export declare function readSessionAnnotations(sessionIds: readonly SessionId[], scope: ToolScope): Promise<AnnotationReadBack>;
|
|
@@ -7,15 +7,11 @@
|
|
|
7
7
|
* subject; no argument names a project or a credential. Nothing here changes
|
|
8
8
|
* telemetry: an annotation points at a trace, span or session and leaves it
|
|
9
9
|
* as recorded, and the one delete operation removes only these objects.
|
|
10
|
-
*
|
|
11
|
-
* Demo mode has no Collector and therefore no such objects. A call there is
|
|
12
|
-
* refused rather than answered from an invented store.
|
|
13
10
|
*/
|
|
14
|
-
import { CollectorError, collectorDelete,
|
|
11
|
+
import { CollectorError, collectorDelete, collectorPatch, collectorPost, parseCollectorBody, } from "./collector.js";
|
|
15
12
|
import { createHash } from "node:crypto";
|
|
16
13
|
import { IDEMPOTENCY_KEY_HEADER, IF_MATCH_HEADER } from "./contract-headers.js";
|
|
17
14
|
import { contractSchema } from "./contract-validation.js";
|
|
18
|
-
import { describeToolError } from "./request-scope.js";
|
|
19
15
|
import { shortId } from "./summaries.js";
|
|
20
16
|
import { redactTelemetry } from "./telemetry-redaction.js";
|
|
21
17
|
const ANNOTATIONS_PATH = "/api/v1/annotations";
|
|
@@ -24,27 +20,13 @@ const SAVED_QUERIES_PATH = "/api/v1/saved-queries";
|
|
|
24
20
|
// contract-validation.ts, which the dashboard and workbench bundles import.
|
|
25
21
|
const AnnotationCreatedSchema = contractSchema("Operations.AnnotationsApi_create.Response.201");
|
|
26
22
|
const AnnotationUpdatedSchema = contractSchema("Operations.AnnotationsApi_update.Response.200");
|
|
27
|
-
const AnnotationsPageSchema = contractSchema("Operations.AnnotationsApi_list.Response.200");
|
|
28
23
|
const SavedQueryCreatedSchema = contractSchema("Operations.SavedQueriesApi_create.Response.201");
|
|
29
24
|
const SavedQueryUpdatedSchema = contractSchema("Operations.SavedQueriesApi_update.Response.200");
|
|
30
|
-
const SavedQueriesPageSchema = contractSchema("Operations.SavedQueriesApi_list.Response.200");
|
|
31
|
-
const SavedQueryRunSchema = contractSchema("Operations.SavedQueriesApi_run.Response.200");
|
|
32
|
-
/** One page of the Collector's annotation listing per read-back. */
|
|
33
|
-
const ANNOTATIONS_PER_READ = 100;
|
|
34
|
-
/** Parallel annotation reads for one list_sessions page. */
|
|
35
|
-
const SESSION_READ_CONCURRENCY = 8;
|
|
36
25
|
/** Where each deletable kind lives on the Collector API. */
|
|
37
26
|
const DELETE_PATHS = {
|
|
38
27
|
annotation: ANNOTATIONS_PATH,
|
|
39
28
|
saved_query: SAVED_QUERIES_PATH,
|
|
40
29
|
};
|
|
41
|
-
/** Refuses demo mode: its generated dataset has no project to keep these objects in. */
|
|
42
|
-
async function requireLiveCollector(tool) {
|
|
43
|
-
if (await resolveMode() === "live")
|
|
44
|
-
return;
|
|
45
|
-
throw new CollectorError(`${tool} needs a live qyl Collector: annotations and saved queries are kept in a Collector ` +
|
|
46
|
-
"project, and demo mode (QYL_DEMO=1) has none. Set QYL_COLLECTOR_URL and unset QYL_DEMO.", false, undefined, "invalid_argument");
|
|
47
|
-
}
|
|
48
30
|
/**
|
|
49
31
|
* The If-Match value for a change. An etag is opaque, but it travels as an
|
|
50
32
|
* HTTP field value, so one that could not be sent is refused here instead of
|
|
@@ -56,12 +38,12 @@ export function ifMatch(etag) {
|
|
|
56
38
|
}
|
|
57
39
|
return { [IF_MATCH_HEADER]: etag };
|
|
58
40
|
}
|
|
59
|
-
/**
|
|
60
|
-
function idempotencyKey(options, suppliedKey) {
|
|
61
|
-
|
|
62
|
-
|
|
41
|
+
/** Retry keys deduplicate for 24 hours; identical bodies get a deterministic default key. */
|
|
42
|
+
function idempotencyKey(options, operation, body, suppliedKey) {
|
|
43
|
+
const canonical = (value) => Array.isArray(value) ? value.map(canonical) : value !== null && typeof value === "object" ? Object.fromEntries(Object.entries(value).sort(([a], [b]) => a.localeCompare(b)).map(([k, v]) => [k, canonical(v)])) : value;
|
|
44
|
+
const key = suppliedKey ?? JSON.stringify(canonical(body));
|
|
63
45
|
const digest = createHash("sha256")
|
|
64
|
-
.update(`${options.access?.project ?? ""}\0${
|
|
46
|
+
.update(`${options.access?.project ?? ""}\0${operation}\0${key}`)
|
|
65
47
|
.digest("hex");
|
|
66
48
|
return { [IDEMPOTENCY_KEY_HEADER]: digest };
|
|
67
49
|
}
|
|
@@ -75,7 +57,7 @@ function resourcePath(base, id, suffix = "") {
|
|
|
75
57
|
* `collector_unauthorized`). A body that breaks the contract stays a
|
|
76
58
|
* contract mismatch, and every other failure passes through unchanged.
|
|
77
59
|
*/
|
|
78
|
-
async function refusals(messages, request) {
|
|
60
|
+
export async function refusals(messages, request) {
|
|
79
61
|
try {
|
|
80
62
|
return await request();
|
|
81
63
|
}
|
|
@@ -90,7 +72,7 @@ async function refusals(messages, request) {
|
|
|
90
72
|
}
|
|
91
73
|
}
|
|
92
74
|
/** The refusals every change to an existing object shares. */
|
|
93
|
-
function changeRefusals(kind, id, role) {
|
|
75
|
+
export function changeRefusals(kind, id, role) {
|
|
94
76
|
return {
|
|
95
77
|
403: `the Collector refused the change: the server's Collector key needs the ${role} role`,
|
|
96
78
|
404: `${kind} not found: ${id}`,
|
|
@@ -98,7 +80,6 @@ function changeRefusals(kind, id, role) {
|
|
|
98
80
|
};
|
|
99
81
|
}
|
|
100
82
|
export async function createAnnotation(input, options) {
|
|
101
|
-
await requireLiveCollector("create_annotation");
|
|
102
83
|
// The create's 404 is its target: nothing by that id is recorded in this
|
|
103
84
|
// project, so there is nothing to attach the note to.
|
|
104
85
|
const create = {
|
|
@@ -111,12 +92,11 @@ export async function createAnnotation(input, options) {
|
|
|
111
92
|
404: `${describeTarget(input.target)} is not recorded in this project`,
|
|
112
93
|
}, () => collectorPost(ANNOTATIONS_PATH, create, {
|
|
113
94
|
...options,
|
|
114
|
-
headers: { ...options.headers, ...idempotencyKey(options, input.idempotency_key) },
|
|
95
|
+
headers: { ...options.headers, ...idempotencyKey(options, ANNOTATIONS_PATH, create, input.idempotency_key) },
|
|
115
96
|
}));
|
|
116
97
|
return redactTelemetry(parseCollectorBody(body, `POST ${ANNOTATIONS_PATH}`, AnnotationCreatedSchema));
|
|
117
98
|
}
|
|
118
99
|
export async function updateAnnotation(input, options) {
|
|
119
|
-
await requireLiveCollector("update_annotation");
|
|
120
100
|
const path = resourcePath(ANNOTATIONS_PATH, input.id);
|
|
121
101
|
const changes = {
|
|
122
102
|
...(input.text === undefined ? {} : { text: input.text }),
|
|
@@ -130,7 +110,6 @@ export async function updateAnnotation(input, options) {
|
|
|
130
110
|
return redactTelemetry(parseCollectorBody(body, `PATCH ${path}`, AnnotationUpdatedSchema));
|
|
131
111
|
}
|
|
132
112
|
export async function createSavedQuery(input, options) {
|
|
133
|
-
await requireLiveCollector("create_saved_query");
|
|
134
113
|
const create = {
|
|
135
114
|
name: input.name,
|
|
136
115
|
...(input.description === undefined ? {} : { description: input.description }),
|
|
@@ -141,7 +120,7 @@ export async function createSavedQuery(input, options) {
|
|
|
141
120
|
409: `a saved query named "${input.name}" already exists in this project`,
|
|
142
121
|
}, () => collectorPost(SAVED_QUERIES_PATH, create, {
|
|
143
122
|
...options,
|
|
144
|
-
headers: { ...options.headers, ...idempotencyKey(options, input.idempotency_key) },
|
|
123
|
+
headers: { ...options.headers, ...idempotencyKey(options, SAVED_QUERIES_PATH, create, input.idempotency_key) },
|
|
145
124
|
}));
|
|
146
125
|
return redactTelemetry(parseCollectorBody(body, `POST ${SAVED_QUERIES_PATH}`, SavedQueryCreatedSchema));
|
|
147
126
|
}
|
|
@@ -150,7 +129,6 @@ export async function updateSavedQuery(input, options) {
|
|
|
150
129
|
if (changes.name === undefined && changes.description === undefined && changes.filter === undefined) {
|
|
151
130
|
throw new CollectorError("update_saved_query changes nothing: pass a name, description or filter");
|
|
152
131
|
}
|
|
153
|
-
await requireLiveCollector("update_saved_query");
|
|
154
132
|
const path = resourcePath(SAVED_QUERIES_PATH, id);
|
|
155
133
|
const body = await refusals({
|
|
156
134
|
...changeRefusals("saved query", id, "write"),
|
|
@@ -158,31 +136,17 @@ export async function updateSavedQuery(input, options) {
|
|
|
158
136
|
}, () => collectorPatch(path, changes, { ...options, headers: ifMatch(etag) }));
|
|
159
137
|
return redactTelemetry(parseCollectorBody(body, `PATCH ${path}`, SavedQueryUpdatedSchema));
|
|
160
138
|
}
|
|
161
|
-
export async function listSavedQueries(input, options) {
|
|
162
|
-
await requireLiveCollector("list_saved_queries");
|
|
163
|
-
const body = await collectorGet(SAVED_QUERIES_PATH, { signal: input.signal, limit: input.limit ?? 20, cursor: input.cursor }, options);
|
|
164
|
-
const page = parseCollectorPage(body, SAVED_QUERIES_PATH, SavedQueriesPageSchema, (item) => item);
|
|
165
|
-
return redactTelemetry({
|
|
166
|
-
savedQueries: page.items,
|
|
167
|
-
hasMore: page.hasMore,
|
|
168
|
-
...(page.nextCursor === undefined ? {} : { nextCursor: page.nextCursor }),
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
|
-
export async function runSavedQuery(input, options) {
|
|
172
|
-
const { id, ...run } = input;
|
|
173
|
-
await requireLiveCollector("run_saved_query");
|
|
174
|
-
const path = resourcePath(SAVED_QUERIES_PATH, id, ":run");
|
|
175
|
-
const body = await refusals({ 404: `saved query not found: ${id}` }, () => collectorPost(path, run, options));
|
|
176
|
-
return redactTelemetry(parseCollectorBody(body, `POST ${path}`, SavedQueryRunSchema));
|
|
177
|
-
}
|
|
178
139
|
export async function deleteResource(kind, id, etag, options) {
|
|
179
|
-
await requireLiveCollector("delete");
|
|
180
140
|
const path = resourcePath(DELETE_PATHS[kind], id);
|
|
181
141
|
const body = await refusals(changeRefusals(kind === "annotation" ? "annotation" : "saved query", id, "delete"), () => collectorDelete(path, { ...options, headers: ifMatch(etag) }));
|
|
182
142
|
if (body !== undefined) {
|
|
183
143
|
throw new CollectorError(`collector contract mismatch for DELETE ${path}: expected 204 No Content`, false, undefined, "contract_mismatch");
|
|
184
144
|
}
|
|
185
145
|
}
|
|
146
|
+
// -----------------------------------------------------------------------------
|
|
147
|
+
// Read-back: get_trace and list_sessions return the annotations on what they
|
|
148
|
+
// read, so there is no annotation listing tool.
|
|
149
|
+
// -----------------------------------------------------------------------------
|
|
186
150
|
/** The telemetry object an annotation names, in full. */
|
|
187
151
|
export function describeTarget(target) {
|
|
188
152
|
switch (target.kind) {
|
|
@@ -214,86 +178,4 @@ export function annotationLine(annotation) {
|
|
|
214
178
|
const text = note.length > 200 ? `${note.slice(0, 200)}…` : note;
|
|
215
179
|
return `- ${targetLabel(annotation.target)} · id ${annotation.id} · etag ${annotation.etag}: ${text}`;
|
|
216
180
|
}
|
|
217
|
-
/** The text block for a list of annotations, newest first. */
|
|
218
|
-
export function summarizeAnnotations(annotations, truncated) {
|
|
219
|
-
if (annotations.length === 0)
|
|
220
|
-
return "\nAnnotations: none.";
|
|
221
|
-
return (`\nAnnotations (${annotations.length}, newest first${truncated ? `; the newest ${ANNOTATIONS_PER_READ} per object` : ""}):\n` +
|
|
222
|
-
annotations.map(annotationLine).join("\n"));
|
|
223
|
-
}
|
|
224
|
-
async function readAnnotationPage(params, options) {
|
|
225
|
-
const body = await collectorGet(ANNOTATIONS_PATH, { ...params, limit: ANNOTATIONS_PER_READ }, options);
|
|
226
|
-
const page = parseCollectorPage(body, ANNOTATIONS_PATH, AnnotationsPageSchema, (item) => item);
|
|
227
|
-
return { annotations: page.items, hasMore: page.hasMore };
|
|
228
|
-
}
|
|
229
|
-
/**
|
|
230
|
-
* An annotation read that fails leaves the telemetry result standing: the
|
|
231
|
-
* field is omitted and the text says why, instead of failing a trace read
|
|
232
|
-
* that succeeded or reporting "no annotations" that were never read.
|
|
233
|
-
*/
|
|
234
|
-
function unavailable(error) {
|
|
235
|
-
return { text: `\nAnnotations could not be read: ${describeToolError(error).message}` };
|
|
236
|
-
}
|
|
237
|
-
/** The annotations on one trace and its spans, for get_trace. */
|
|
238
|
-
export async function readTraceAnnotations(traceId, scope) {
|
|
239
|
-
if (await resolveMode() === "demo") {
|
|
240
|
-
await scope.step("Demo data carries no annotations");
|
|
241
|
-
return { text: "" };
|
|
242
|
-
}
|
|
243
|
-
try {
|
|
244
|
-
const { annotations, hasMore } = await readAnnotationPage({ trace_id: traceId }, scope.collector);
|
|
245
|
-
await scope.step(`Read ${annotations.length} annotation(s) for trace ${traceId}`);
|
|
246
|
-
const safe = redactTelemetry(annotations);
|
|
247
|
-
return { annotations: safe, text: summarizeAnnotations(safe, hasMore) };
|
|
248
|
-
}
|
|
249
|
-
catch (error) {
|
|
250
|
-
await scope.step("Annotations unavailable");
|
|
251
|
-
return unavailable(error);
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
/** The annotations on the listed sessions, newest first, for list_sessions. */
|
|
255
|
-
export async function readSessionAnnotations(sessionIds, scope) {
|
|
256
|
-
if (await resolveMode() === "demo") {
|
|
257
|
-
await scope.step("Demo data carries no annotations");
|
|
258
|
-
return { text: "" };
|
|
259
|
-
}
|
|
260
|
-
if (sessionIds.length === 0) {
|
|
261
|
-
await scope.step("No sessions to read annotations for");
|
|
262
|
-
return { annotations: [], text: "" };
|
|
263
|
-
}
|
|
264
|
-
try {
|
|
265
|
-
// One session's failed page costs that session's notes, not every session's.
|
|
266
|
-
const pages = [];
|
|
267
|
-
let failed = 0;
|
|
268
|
-
let firstFailure;
|
|
269
|
-
for (let start = 0; start < sessionIds.length; start += SESSION_READ_CONCURRENCY) {
|
|
270
|
-
const settled = await Promise.allSettled(sessionIds
|
|
271
|
-
.slice(start, start + SESSION_READ_CONCURRENCY)
|
|
272
|
-
.map((sessionId) => readAnnotationPage({ session_id: sessionId }, scope.collector)));
|
|
273
|
-
for (const outcome of settled) {
|
|
274
|
-
if (outcome.status === "fulfilled")
|
|
275
|
-
pages.push(outcome.value);
|
|
276
|
-
else {
|
|
277
|
-
failed += 1;
|
|
278
|
-
firstFailure ??= outcome.reason;
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
if (pages.length === 0)
|
|
283
|
-
throw firstFailure;
|
|
284
|
-
const annotations = pages
|
|
285
|
-
.flatMap((page) => page.annotations)
|
|
286
|
-
.sort((left, right) => Date.parse(right.created_at) - Date.parse(left.created_at));
|
|
287
|
-
await scope.step(`Read ${annotations.length} annotation(s) for ${sessionIds.length} session(s)`);
|
|
288
|
-
const safe = redactTelemetry(annotations);
|
|
289
|
-
const partial = failed === 0
|
|
290
|
-
? ""
|
|
291
|
-
: `\nAnnotations of ${failed} session(s) could not be read: ${describeToolError(firstFailure).message}`;
|
|
292
|
-
return { annotations: safe, text: summarizeAnnotations(safe, pages.some((page) => page.hasMore)) + partial };
|
|
293
|
-
}
|
|
294
|
-
catch (error) {
|
|
295
|
-
await scope.step("Annotations unavailable");
|
|
296
|
-
return unavailable(error);
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
181
|
//# sourceMappingURL=collector-resources.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collector-resources.js","sourceRoot":"","sources":["../src/collector-resources.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"collector-resources.js","sourceRoot":"","sources":["../src/collector-resources.ts"],"names":[],"mappings":"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"}
|
package/dist/collector.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Collector REST client
|
|
2
|
+
* Collector REST client.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* All operations query the configured Collector;
|
|
5
5
|
* connection, HTTP, JSON, and contract failures surface to the caller rather
|
|
6
6
|
* than silently substituting generated telemetry or invented defaults.
|
|
7
7
|
*/
|
|
8
|
-
import type {
|
|
8
|
+
import type { ProblemDetails, ToolErrorCode, ValidationErrorDetail } from "@ancplua/qyl-api-schema/types";
|
|
9
9
|
import * as z from "zod/v4";
|
|
10
10
|
import { type CollectorAccess } from "./collector-access.js";
|
|
11
|
-
import type { Mode } from "./wire.js";
|
|
12
11
|
/**
|
|
13
12
|
* The stable failure codes a tool result carries in `structuredContent.error`:
|
|
14
13
|
* the contract's `Mcp.Tools.ToolErrorCode`, so the server cannot invent a code
|
|
@@ -32,29 +31,6 @@ export declare class CollectorError extends Error {
|
|
|
32
31
|
readonly code: ToolErrorCode;
|
|
33
32
|
constructor(message: string, connectionError?: boolean, status?: number | undefined, code?: ToolErrorCode, problemType?: ProblemDetails["type"] | undefined, fields?: ValidationErrorDetail[] | undefined);
|
|
34
33
|
}
|
|
35
|
-
/** Normalize RFC 3339 spelling, then enforce the public Trace schema exactly. */
|
|
36
|
-
export declare function parseCollectorTrace(value: unknown, context?: string): Trace;
|
|
37
|
-
/** Normalize RFC 3339 spelling, then enforce the public Session schema exactly. */
|
|
38
|
-
export declare function parseCollectorSession(value: unknown, context?: string): SessionEntity;
|
|
39
|
-
/** Normalize RFC 3339 spelling, then enforce the public MetricDescriptor schema. */
|
|
40
|
-
export declare function parseCollectorMetricDescriptor(value: unknown, context?: string): MetricDescriptor;
|
|
41
|
-
/** Normalize RFC 3339 spelling, then enforce the public MetricSeries schema. */
|
|
42
|
-
export declare function parseCollectorMetricSeries(value: unknown, context?: string): MetricSeries;
|
|
43
|
-
/**
|
|
44
|
-
* Normalize every timestamp a range query answers with, then enforce the
|
|
45
|
-
* operation's own 200 body. Bucket starts are normalized too: a chart axis
|
|
46
|
-
* built from `+02:00` labels next to `Z` labels is a rendering bug the reader
|
|
47
|
-
* would have to diagnose.
|
|
48
|
-
*/
|
|
49
|
-
export declare function parseCollectorMetricQueryResult(value: unknown, context?: string): MetricQueryResult;
|
|
50
|
-
/** Enforce the public LogRecord schema without alternate wire encodings. */
|
|
51
|
-
export declare function parseCollectorLog(value: unknown, context?: string): LogRecord;
|
|
52
|
-
interface ParsedCollectorPage<T> {
|
|
53
|
-
items: T[];
|
|
54
|
-
hasMore: boolean;
|
|
55
|
-
/** The Collector's opaque cursor for the next page; absent on the last page. */
|
|
56
|
-
nextCursor?: string;
|
|
57
|
-
}
|
|
58
34
|
export interface CollectorRequestOptions {
|
|
59
35
|
timeoutMs?: number;
|
|
60
36
|
signal?: AbortSignal;
|
|
@@ -66,25 +42,11 @@ export interface CollectorRequestOptions {
|
|
|
66
42
|
*/
|
|
67
43
|
headers?: Readonly<Record<string, string>>;
|
|
68
44
|
}
|
|
69
|
-
/**
|
|
70
|
-
* Normalize endpoint items, then validate the complete operation-specific
|
|
71
|
-
* response body. The supplied schema must be an Operations.*.Response.200
|
|
72
|
-
* definition from the generated contract.
|
|
73
|
-
*/
|
|
74
|
-
export declare function parseCollectorPage<T, TPage extends {
|
|
75
|
-
items: T[];
|
|
76
|
-
has_more: boolean;
|
|
77
|
-
next_cursor?: string | null;
|
|
78
|
-
}>(value: unknown, context: string, pageSchema: z.ZodType<TPage>, parseItem: (item: unknown, context: string) => T): ParsedCollectorPage<T>;
|
|
79
45
|
/**
|
|
80
46
|
* Validate one whole response body against its generated operation schema,
|
|
81
|
-
*
|
|
47
|
+
* including resources, pages and analysis evidence.
|
|
82
48
|
*/
|
|
83
49
|
export declare function parseCollectorBody<T>(value: unknown, context: string, schema: z.ZodType<T>): T;
|
|
84
|
-
/** Query values a published operation parameter can carry, repeatable included. */
|
|
85
|
-
export type CollectorQueryParams = Record<string, string | number | boolean | readonly string[] | undefined>;
|
|
86
|
-
export declare function collectorGet(pathname: string, params?: CollectorQueryParams, options?: CollectorRequestOptions): Promise<unknown>;
|
|
87
50
|
export declare function collectorPost(pathname: string, body: unknown, options?: CollectorRequestOptions): Promise<unknown>;
|
|
88
51
|
export declare function collectorPatch(pathname: string, body: unknown, options?: CollectorRequestOptions): Promise<unknown>;
|
|
89
52
|
export declare function collectorDelete(pathname: string, options?: CollectorRequestOptions): Promise<unknown>;
|
|
90
|
-
export declare function resolveMode(): Promise<Mode>;
|