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.
Files changed (77) hide show
  1. package/README.md +34 -25
  2. package/dist/analysis-budget.d.ts +8 -0
  3. package/dist/analysis-budget.js +73 -0
  4. package/dist/analysis-budget.js.map +1 -0
  5. package/dist/analysis-client.js +20 -14
  6. package/dist/analysis-client.js.map +1 -1
  7. package/dist/analysis-summary.d.ts +2 -0
  8. package/dist/analysis-summary.js +54 -0
  9. package/dist/analysis-summary.js.map +1 -0
  10. package/dist/analysis-tools.js +11 -10
  11. package/dist/analysis-tools.js.map +1 -1
  12. package/dist/authorization.d.ts +2 -0
  13. package/dist/authorization.js +8 -6
  14. package/dist/authorization.js.map +1 -1
  15. package/dist/ci.d.ts +1 -22
  16. package/dist/ci.js +0 -64
  17. package/dist/ci.js.map +1 -1
  18. package/dist/collector-resources.d.ts +11 -25
  19. package/dist/collector-resources.js +14 -132
  20. package/dist/collector-resources.js.map +1 -1
  21. package/dist/collector.d.ts +4 -42
  22. package/dist/collector.js +11 -171
  23. package/dist/collector.js.map +1 -1
  24. package/dist/config.d.ts +2 -2
  25. package/dist/config.js +2 -2
  26. package/dist/contract-handshake.js +0 -6
  27. package/dist/contract-handshake.js.map +1 -1
  28. package/dist/contract-validation.d.ts +11 -16
  29. package/dist/contract-validation.js +18 -27
  30. package/dist/contract-validation.js.map +1 -1
  31. package/dist/data.d.ts +3 -69
  32. package/dist/data.js +6 -182
  33. package/dist/data.js.map +1 -1
  34. package/dist/events-authorization.d.ts +1 -1
  35. package/dist/events.d.ts +3 -2
  36. package/dist/events.js +1 -1
  37. package/dist/events.js.map +1 -1
  38. package/dist/main.d.ts +1 -8
  39. package/dist/main.js +6 -10
  40. package/dist/main.js.map +1 -1
  41. package/dist/mcp-app.html +2 -3
  42. package/dist/mcp-dashboard.html +2 -3
  43. package/dist/mcp-home.html +1 -1
  44. package/dist/request-scope.js +0 -8
  45. package/dist/request-scope.js.map +1 -1
  46. package/dist/server.d.ts +3 -16
  47. package/dist/server.js +11 -23
  48. package/dist/server.js.map +1 -1
  49. package/dist/skills/qyl-investigate/SKILL.md +120 -0
  50. package/dist/skills.d.ts +27 -0
  51. package/dist/skills.js +142 -0
  52. package/dist/skills.js.map +1 -0
  53. package/dist/summaries.d.ts +2 -45
  54. package/dist/summaries.js +1 -207
  55. package/dist/summaries.js.map +1 -1
  56. package/dist/tool-scopes.d.ts +4 -22
  57. package/dist/tool-scopes.js +4 -58
  58. package/dist/tool-scopes.js.map +1 -1
  59. package/dist/tools.d.ts +0 -2
  60. package/dist/tools.js +0 -2
  61. package/dist/tools.js.map +1 -1
  62. package/dist/write-tools.d.ts +12 -4
  63. package/dist/write-tools.js +7 -12
  64. package/dist/write-tools.js.map +1 -1
  65. package/package.json +16 -10
  66. package/dist/demo.d.ts +0 -41
  67. package/dist/demo.js +0 -941
  68. package/dist/demo.js.map +0 -1
  69. package/dist/metrics.d.ts +0 -35
  70. package/dist/metrics.js +0 -279
  71. package/dist/metrics.js.map +0 -1
  72. package/dist/paging.d.ts +0 -16
  73. package/dist/paging.js +0 -33
  74. package/dist/paging.js.map +0 -1
  75. package/dist/stats.d.ts +0 -18
  76. package/dist/stats.js +0 -144
  77. 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":"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"}
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, ListSavedQueriesInput, RunSavedQueryInput, SavedQuery, SavedQueryRunResult, SessionId, TraceId, UpdateAnnotationInput, UpdateSavedQueryInput } from "@ancplua/qyl-api-schema/types";
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, collectorGet, collectorPatch, collectorPost, parseCollectorBody, parseCollectorPage, resolveMode, } from "./collector.js";
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
- /** Explicit retry keys deduplicate creates for 24 hours; absent keys create new objects. */
60
- function idempotencyKey(options, suppliedKey) {
61
- if (suppliedKey === undefined)
62
- return {};
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${suppliedKey}`)
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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"}
@@ -1,14 +1,13 @@
1
1
  /**
2
- * Collector REST client + live/demo mode selection.
2
+ * Collector REST client.
3
3
  *
4
- * QYL_DEMO=1 selects explicit demo mode. Every other invocation is live;
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 { LogRecord, MetricDescriptor, MetricQueryResult, MetricSeries, ProblemDetails, SessionEntity, ToolErrorCode, ValidationErrorDetail, Trace } from "@ancplua/qyl-api-schema/types";
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
- * for the operations that answer with a single resource rather than a page.
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>;