qyl-mcp-server 1.0.0-beta.4 → 1.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/dist/ci.d.ts +1 -27
- package/dist/ci.js +3 -38
- package/dist/ci.js.map +1 -1
- package/dist/collector.d.ts +6 -6
- package/dist/collector.js +33 -7
- package/dist/collector.js.map +1 -1
- package/dist/config.d.ts +2 -0
- package/dist/config.js +7 -1
- package/dist/config.js.map +1 -1
- package/dist/contract-handshake.d.ts +66 -0
- package/dist/contract-handshake.js +142 -0
- package/dist/contract-handshake.js.map +1 -0
- package/dist/contract-validation.d.ts +20 -0
- package/dist/contract-validation.js +21 -0
- package/dist/contract-validation.js.map +1 -1
- package/dist/main.js +6 -1
- package/dist/main.js.map +1 -1
- package/dist/mcp-app.html +4 -51
- package/dist/mcp-dashboard.html +4 -51
- package/dist/mcp-home.html +1 -1
- package/dist/oauth.d.ts +2 -0
- package/dist/oauth.js +2 -0
- package/dist/oauth.js.map +1 -1
- package/dist/observe-graph.html +228 -0
- package/dist/server.js +25 -2
- package/dist/server.js.map +1 -1
- package/dist/stats.js +1 -1
- package/dist/stats.js.map +1 -1
- package/dist/stderr-log.d.ts +15 -0
- package/dist/stderr-log.js +20 -0
- package/dist/stderr-log.js.map +1 -0
- package/dist/workflow-data.d.ts +12 -0
- package/dist/workflow-data.js +172 -0
- package/dist/workflow-data.js.map +1 -0
- package/dist/workflow-layout.d.ts +24 -0
- package/dist/workflow-layout.js +165 -0
- package/dist/workflow-layout.js.map +1 -0
- package/dist/workflow-reducer.d.ts +37 -0
- package/dist/workflow-reducer.js +114 -0
- package/dist/workflow-reducer.js.map +1 -0
- package/dist/workflow-tools.d.ts +10 -0
- package/dist/workflow-tools.js +143 -0
- package/dist/workflow-tools.js.map +1 -0
- package/package.json +11 -10
package/dist/ci.d.ts
CHANGED
|
@@ -9,37 +9,12 @@
|
|
|
9
9
|
* - one span per phase, named after the phase, carrying a `ci.leg` string
|
|
10
10
|
* attribute (e.g. "macos-latest"); a failed phase sets span status error.
|
|
11
11
|
*
|
|
12
|
-
* The input/output schemas are deliberately inline zod, not
|
|
13
|
-
* publishedContractSchema: this is an operational view over already-published
|
|
14
|
-
* OTel contract data, not a new wire contract. If it graduates, it moves to
|
|
15
|
-
* qyl-api-schema first.
|
|
16
12
|
*/
|
|
13
|
+
import type { CiPhase, CiRunSummary } from "@ancplua/qyl-api-schema/types";
|
|
17
14
|
import type { McpServer } from "@modelcontextprotocol/server";
|
|
18
|
-
import { z } from "zod";
|
|
19
15
|
import type { Mode, QylSession, QylTrace } from "./wire.js";
|
|
20
16
|
/** Resource service-name prefix that marks telemetry as CI-emitted. */
|
|
21
17
|
export declare const CI_SERVICE_PREFIX = "qyl-ci";
|
|
22
|
-
declare const CiRunSummarySchema: z.ZodObject<{
|
|
23
|
-
run_id: z.ZodString;
|
|
24
|
-
state: z.ZodString;
|
|
25
|
-
start_time: z.ZodString;
|
|
26
|
-
duration_ms: z.ZodOptional<z.ZodNumber>;
|
|
27
|
-
error_count: z.ZodNumber;
|
|
28
|
-
services: z.ZodArray<z.ZodString>;
|
|
29
|
-
}, z.core.$strip>;
|
|
30
|
-
declare const CiPhaseSchema: z.ZodObject<{
|
|
31
|
-
leg: z.ZodString;
|
|
32
|
-
phase: z.ZodString;
|
|
33
|
-
status: z.ZodEnum<{
|
|
34
|
-
error: "error";
|
|
35
|
-
ok: "ok";
|
|
36
|
-
unset: "unset";
|
|
37
|
-
}>;
|
|
38
|
-
duration_ms: z.ZodNumber;
|
|
39
|
-
message: z.ZodOptional<z.ZodString>;
|
|
40
|
-
}, z.core.$strip>;
|
|
41
|
-
type CiRunSummary = z.infer<typeof CiRunSummarySchema>;
|
|
42
|
-
type CiPhase = z.infer<typeof CiPhaseSchema>;
|
|
43
18
|
/** CI sessions are the ones that carry at least one qyl-ci service. */
|
|
44
19
|
export declare function filterCiSessions(sessions: QylSession[]): QylSession[];
|
|
45
20
|
/** Flatten a run's traces into per-leg phases, failures first. */
|
|
@@ -48,4 +23,3 @@ export declare function summarizeCiRuns(runs: CiRunSummary[], mode: Mode): strin
|
|
|
48
23
|
export declare function summarizeCiRun(runId: string, phases: CiPhase[], mode: Mode): string;
|
|
49
24
|
/** Register the CI dogfooding block. */
|
|
50
25
|
export declare function registerCiTools(server: McpServer): void;
|
|
51
|
-
export {};
|
package/dist/ci.js
CHANGED
|
@@ -1,44 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CiLogInputSchema, CiLogOutputSchema, } from "./contract-validation.js";
|
|
2
2
|
import { fetchSessions, fetchSessionTraces } from "./data.js";
|
|
3
3
|
import { telemetryToolResult } from "./telemetry-redaction.js";
|
|
4
4
|
import { READ_ONLY_TELEMETRY_TOOL_ANNOTATIONS, toolError } from "./tools.js";
|
|
5
5
|
/** Resource service-name prefix that marks telemetry as CI-emitted. */
|
|
6
6
|
export const CI_SERVICE_PREFIX = "qyl-ci";
|
|
7
|
-
const CiLogInputSchema = z.object({
|
|
8
|
-
run_id: z
|
|
9
|
-
.string()
|
|
10
|
-
.min(1)
|
|
11
|
-
.optional()
|
|
12
|
-
.describe("Session id of one CI run for a per-leg phase breakdown; omit to list recent runs."),
|
|
13
|
-
limit: z
|
|
14
|
-
.number()
|
|
15
|
-
.int()
|
|
16
|
-
.min(1)
|
|
17
|
-
.max(50)
|
|
18
|
-
.optional()
|
|
19
|
-
.describe("Maximum CI runs to list (default 10)."),
|
|
20
|
-
});
|
|
21
|
-
const CiRunSummarySchema = z.object({
|
|
22
|
-
run_id: z.string(),
|
|
23
|
-
state: z.string(),
|
|
24
|
-
start_time: z.string(),
|
|
25
|
-
duration_ms: z.number().optional(),
|
|
26
|
-
error_count: z.number(),
|
|
27
|
-
services: z.array(z.string()),
|
|
28
|
-
});
|
|
29
|
-
const CiPhaseSchema = z.object({
|
|
30
|
-
leg: z.string(),
|
|
31
|
-
phase: z.string(),
|
|
32
|
-
status: z.enum(["ok", "error", "unset"]),
|
|
33
|
-
duration_ms: z.number(),
|
|
34
|
-
message: z.string().optional(),
|
|
35
|
-
});
|
|
36
|
-
const CiLogOutputSchema = z.object({
|
|
37
|
-
runs: z.array(CiRunSummarySchema).optional(),
|
|
38
|
-
run_id: z.string().optional(),
|
|
39
|
-
phases: z.array(CiPhaseSchema).optional(),
|
|
40
|
-
mode: z.enum(["live", "demo"]),
|
|
41
|
-
});
|
|
42
7
|
/** CI sessions are the ones that carry at least one qyl-ci service. */
|
|
43
8
|
export function filterCiSessions(sessions) {
|
|
44
9
|
return sessions.filter((session) => session.services.some((service) => service.startsWith(CI_SERVICE_PREFIX)));
|
|
@@ -109,8 +74,8 @@ export function registerCiTools(server) {
|
|
|
109
74
|
"Without arguments: recent CI runs (sessions whose service.name starts with " +
|
|
110
75
|
`'${CI_SERVICE_PREFIX}'). With run_id: per-leg phase breakdown, failures first, ` +
|
|
111
76
|
"so 'which leg hung on what' is answerable even when GitHub's log API is down.",
|
|
112
|
-
inputSchema: CiLogInputSchema
|
|
113
|
-
outputSchema: CiLogOutputSchema
|
|
77
|
+
inputSchema: CiLogInputSchema,
|
|
78
|
+
outputSchema: CiLogOutputSchema,
|
|
114
79
|
annotations: READ_ONLY_TELEMETRY_TOOL_ANNOTATIONS,
|
|
115
80
|
}, async (args) => {
|
|
116
81
|
try {
|
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":"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"}
|
package/dist/collector.d.ts
CHANGED
|
@@ -24,6 +24,10 @@ interface ParsedCollectorPage<T> {
|
|
|
24
24
|
items: T[];
|
|
25
25
|
hasMore: boolean;
|
|
26
26
|
}
|
|
27
|
+
export interface CollectorRequestOptions {
|
|
28
|
+
timeoutMs?: number;
|
|
29
|
+
signal?: AbortSignal;
|
|
30
|
+
}
|
|
27
31
|
/**
|
|
28
32
|
* Normalize endpoint items, then validate the complete operation-specific
|
|
29
33
|
* response body. The supplied schema must be an Operations.*.Response.200
|
|
@@ -33,11 +37,7 @@ export declare function parseCollectorPage<T, TPage extends {
|
|
|
33
37
|
items: T[];
|
|
34
38
|
has_more: boolean;
|
|
35
39
|
}>(value: unknown, context: string, pageSchema: z.ZodType<TPage>, parseItem: (item: unknown, context: string) => T): ParsedCollectorPage<T>;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
* `undefined` values are omitted. All response data remains unknown until the
|
|
39
|
-
* endpoint-specific generated contract parser accepts it.
|
|
40
|
-
*/
|
|
41
|
-
export declare function collectorGet(pathname: string, params?: Record<string, string | number | boolean | undefined>): Promise<unknown>;
|
|
40
|
+
export declare function collectorGet(pathname: string, params?: Record<string, string | number | boolean | undefined>, options?: CollectorRequestOptions): Promise<unknown>;
|
|
41
|
+
export declare function collectorPost(pathname: string, body: unknown, options?: CollectorRequestOptions): Promise<unknown>;
|
|
42
42
|
export declare function resolveMode(): Promise<Mode>;
|
|
43
43
|
export {};
|
package/dist/collector.js
CHANGED
|
@@ -119,27 +119,47 @@ function parseProblemDetails(value) {
|
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
121
|
/**
|
|
122
|
-
*
|
|
122
|
+
* Call a collector endpoint. Query params use their generated wire names;
|
|
123
123
|
* `undefined` values are omitted. All response data remains unknown until the
|
|
124
124
|
* endpoint-specific generated contract parser accepts it.
|
|
125
125
|
*/
|
|
126
|
-
|
|
126
|
+
async function collectorRequest(pathname, method, params, body, options) {
|
|
127
127
|
const url = new URL(pathname, collectorUrl());
|
|
128
128
|
for (const [key, value] of Object.entries(params)) {
|
|
129
129
|
if (value !== undefined)
|
|
130
130
|
url.searchParams.set(key, String(value));
|
|
131
131
|
}
|
|
132
|
+
const timeout = AbortSignal.timeout(options.timeoutMs ?? 10_000);
|
|
133
|
+
const signal = options.signal
|
|
134
|
+
? AbortSignal.any([options.signal, timeout])
|
|
135
|
+
: timeout;
|
|
136
|
+
const headers = {
|
|
137
|
+
accept: "application/json",
|
|
138
|
+
...collectorHeaders(),
|
|
139
|
+
...(body === undefined ? {} : { "content-type": "application/json" }),
|
|
140
|
+
};
|
|
132
141
|
let response;
|
|
133
142
|
try {
|
|
134
|
-
response = await fetch(url, {
|
|
143
|
+
response = await fetch(url, {
|
|
144
|
+
method,
|
|
145
|
+
headers,
|
|
146
|
+
signal,
|
|
147
|
+
...(body === undefined ? {} : { body: JSON.stringify(body) }),
|
|
148
|
+
});
|
|
135
149
|
}
|
|
136
150
|
catch {
|
|
151
|
+
if (options.signal?.aborted) {
|
|
152
|
+
throw new CollectorError(`collector request cancelled for ${pathname}`, true);
|
|
153
|
+
}
|
|
154
|
+
if (timeout.aborted) {
|
|
155
|
+
throw new CollectorError(`collector timed out for ${pathname}`, true);
|
|
156
|
+
}
|
|
137
157
|
throw new CollectorError(`collector unreachable at ${collectorUrl()} — start it with ` +
|
|
138
158
|
"`dotnet run --project services/qyl.collector` or set QYL_DEMO=1", true);
|
|
139
159
|
}
|
|
140
|
-
let
|
|
160
|
+
let responseBody;
|
|
141
161
|
try {
|
|
142
|
-
|
|
162
|
+
responseBody = await response.json();
|
|
143
163
|
}
|
|
144
164
|
catch {
|
|
145
165
|
throw new CollectorError(`collector returned invalid JSON (${response.status} ${response.statusText}) for ${pathname}`, false, response.status);
|
|
@@ -149,13 +169,19 @@ export async function collectorGet(pathname, params = {}) {
|
|
|
149
169
|
if (mediaType !== "application/problem+json") {
|
|
150
170
|
throw new CollectorError(`collector contract mismatch for ${pathname}: expected application/problem+json, got ${mediaType ?? "no content type"}`, false, response.status);
|
|
151
171
|
}
|
|
152
|
-
const problem = parseProblemDetails(
|
|
172
|
+
const problem = parseProblemDetails(responseBody);
|
|
153
173
|
if (!problem) {
|
|
154
174
|
throw new CollectorError(`collector contract mismatch for ${pathname}: invalid Problem Details body`, false, response.status);
|
|
155
175
|
}
|
|
156
176
|
throw new CollectorError(`collector request failed (${response.status} ${response.statusText}) for ${pathname}`, false, response.status);
|
|
157
177
|
}
|
|
158
|
-
return
|
|
178
|
+
return responseBody;
|
|
179
|
+
}
|
|
180
|
+
export function collectorGet(pathname, params = {}, options = {}) {
|
|
181
|
+
return collectorRequest(pathname, "GET", params, undefined, options);
|
|
182
|
+
}
|
|
183
|
+
export function collectorPost(pathname, body, options = {}) {
|
|
184
|
+
return collectorRequest(pathname, "POST", {}, body, options);
|
|
159
185
|
}
|
|
160
186
|
export function resolveMode() {
|
|
161
187
|
return Promise.resolve(process.env.QYL_DEMO === "1" ? "demo" : "live");
|
package/dist/collector.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collector.js","sourceRoot":"","sources":["../src/collector.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"collector.js","sourceRoot":"","sources":["../src/collector.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
export declare const RESOURCE_URI = "ui://qyl-explorer/mcp-app.html";
|
|
10
10
|
/** URI of the MCP dashboard UI resource. */
|
|
11
11
|
export declare const DASHBOARD_RESOURCE_URI = "ui://qyl-explorer/mcp-dashboard.html";
|
|
12
|
+
/** URI of the fullscreen workflow debugger MCP App. */
|
|
13
|
+
export declare const WORKFLOW_GRAPH_RESOURCE_URI = "ui://qyl-explorer/observe-graph.html";
|
|
12
14
|
export declare function collectorUrl(): string;
|
|
13
15
|
/** Optional collector credential, sent under the generated OpenAPI header. */
|
|
14
16
|
export declare function collectorHeaders(): Record<string, string>;
|
package/dist/config.js
CHANGED
|
@@ -10,6 +10,8 @@ import qylOpenApi from "@ancplua/qyl-api-schema/openapi" with { type: "json" };
|
|
|
10
10
|
export const RESOURCE_URI = "ui://qyl-explorer/mcp-app.html";
|
|
11
11
|
/** URI of the MCP dashboard UI resource. */
|
|
12
12
|
export const DASHBOARD_RESOURCE_URI = "ui://qyl-explorer/mcp-dashboard.html";
|
|
13
|
+
/** URI of the fullscreen workflow debugger MCP App. */
|
|
14
|
+
export const WORKFLOW_GRAPH_RESOURCE_URI = "ui://qyl-explorer/observe-graph.html";
|
|
13
15
|
const apiKeyHeader = qylOpenApi.components.securitySchemes.ApiKeyAuth.name;
|
|
14
16
|
if (typeof apiKeyHeader !== "string" || apiKeyHeader.length === 0) {
|
|
15
17
|
throw new Error("published Qyl OpenAPI has no API-key header name");
|
|
@@ -34,6 +36,10 @@ export function collectorUrl() {
|
|
|
34
36
|
/** Optional collector credential, sent under the generated OpenAPI header. */
|
|
35
37
|
export function collectorHeaders() {
|
|
36
38
|
const apiKey = process.env.QYL_API_KEY?.trim();
|
|
37
|
-
|
|
39
|
+
const project = process.env.QYL_PROJECT?.trim();
|
|
40
|
+
return {
|
|
41
|
+
...(apiKey ? { [apiKeyHeader]: apiKey } : {}),
|
|
42
|
+
...(project ? { "X-Qyl-Project": project } : {}),
|
|
43
|
+
};
|
|
38
44
|
}
|
|
39
45
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,UAAU,MAAM,iCAAiC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAE/E,6CAA6C;AAC7C,MAAM,CAAC,MAAM,YAAY,GAAG,gCAAgC,CAAC;AAE7D,4CAA4C;AAC5C,MAAM,CAAC,MAAM,sBAAsB,GAAG,sCAAsC,CAAC;AAE7E,MAAM,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC;AAC3E,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IAClE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,uBAAuB,CAAC;IAC5E,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,gBAAgB;IAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;IAC/C,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,UAAU,MAAM,iCAAiC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAE/E,6CAA6C;AAC7C,MAAM,CAAC,MAAM,YAAY,GAAG,gCAAgC,CAAC;AAE7D,4CAA4C;AAC5C,MAAM,CAAC,MAAM,sBAAsB,GAAG,sCAAsC,CAAC;AAE7E,uDAAuD;AACvD,MAAM,CAAC,MAAM,2BAA2B,GAAG,sCAAsC,CAAC;AAElF,MAAM,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC;AAC3E,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IAClE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,uBAAuB,CAAC;IAC5E,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,gBAAgB;IAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;IAChD,OAAO;QACL,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Startup contract-revision handshake (architecture gate G10c).
|
|
3
|
+
*
|
|
4
|
+
* The collector advertises the revision of the API contract it serves on its
|
|
5
|
+
* health surface; this server compares it to the revision baked into the
|
|
6
|
+
* generated artifacts it was built from and refuses to run on a mismatch. It is
|
|
7
|
+
* the SelfExportGuard pattern applied to the contract axis: lockstep deploys are
|
|
8
|
+
* the honest cost of one contract, and for a solo-operated Railway pair that
|
|
9
|
+
* cost is near zero.
|
|
10
|
+
*
|
|
11
|
+
* What the gate proves is skew, and skew needs evidence: a revision the
|
|
12
|
+
* collector actually advertised. An unreachable collector proves nothing, so it
|
|
13
|
+
* is handled by transport rather than misreported as a mismatch:
|
|
14
|
+
*
|
|
15
|
+
* - hosted HTTP refuses to start after a bounded in-process retry (which covers
|
|
16
|
+
* private-network DNS warm-up) — a booted mcp.qyl.at must mean a completed
|
|
17
|
+
* handshake, and the platform restart loop is the outer retry;
|
|
18
|
+
* - stdio starts degraded with a structured warning — a local install without a
|
|
19
|
+
* running collector is a normal state, and every tool call already surfaces
|
|
20
|
+
* an actionable collector error until one appears.
|
|
21
|
+
*
|
|
22
|
+
* A reachable collector whose 200 health body carries no contract_revision
|
|
23
|
+
* serves a contract older than this server's: that is evidence of skew and
|
|
24
|
+
* stays fatal on both transports, as does a differing revision.
|
|
25
|
+
*/
|
|
26
|
+
/** The contract revision this build's generated artifacts were emitted from. */
|
|
27
|
+
export declare function generatedContractRevision(): string;
|
|
28
|
+
export type HealthProbeResult = {
|
|
29
|
+
kind: "advertised";
|
|
30
|
+
healthy: boolean;
|
|
31
|
+
revision: string;
|
|
32
|
+
} | {
|
|
33
|
+
kind: "pre-revision";
|
|
34
|
+
detail: string;
|
|
35
|
+
} | {
|
|
36
|
+
kind: "unreachable";
|
|
37
|
+
detail: string;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Read the one field the handshake needs from whatever the collector serves.
|
|
41
|
+
*
|
|
42
|
+
* Deliberately lenient where the rest of this server validates with the
|
|
43
|
+
* generated contract: the probe must read health bodies emitted by ANY contract
|
|
44
|
+
* revision — older and newer than this build's — because diagnosing skew is its
|
|
45
|
+
* whole purpose, and a validator generated from this build's revision cannot
|
|
46
|
+
* accept a body from the revision it is trying to detect. An unhealthy
|
|
47
|
+
* collector still advertises its revision (the health writer always includes
|
|
48
|
+
* it), so a 503 body with a revision is compared like a 200.
|
|
49
|
+
*/
|
|
50
|
+
export declare function probeCollectorHealth(): Promise<HealthProbeResult>;
|
|
51
|
+
export interface HandshakeOptions {
|
|
52
|
+
/** Revision this server was generated from; defaults to the build's own. */
|
|
53
|
+
expected?: string;
|
|
54
|
+
/** Defaults to the invocation mode main() derives from the same argv. */
|
|
55
|
+
transport?: "stdio" | "http";
|
|
56
|
+
probe?: () => Promise<HealthProbeResult>;
|
|
57
|
+
attempts?: number;
|
|
58
|
+
delayMs?: number;
|
|
59
|
+
sleep?: (ms: number) => Promise<void>;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Startup gate for both transports. Throws — and so aborts startup — on
|
|
63
|
+
* evidence of contract skew; an unreachable collector aborts the hosted HTTP
|
|
64
|
+
* transport after retries and degrades stdio with a structured warning.
|
|
65
|
+
*/
|
|
66
|
+
export declare function assertCollectorContractRevision(options?: HandshakeOptions): Promise<void>;
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Startup contract-revision handshake (architecture gate G10c).
|
|
3
|
+
*
|
|
4
|
+
* The collector advertises the revision of the API contract it serves on its
|
|
5
|
+
* health surface; this server compares it to the revision baked into the
|
|
6
|
+
* generated artifacts it was built from and refuses to run on a mismatch. It is
|
|
7
|
+
* the SelfExportGuard pattern applied to the contract axis: lockstep deploys are
|
|
8
|
+
* the honest cost of one contract, and for a solo-operated Railway pair that
|
|
9
|
+
* cost is near zero.
|
|
10
|
+
*
|
|
11
|
+
* What the gate proves is skew, and skew needs evidence: a revision the
|
|
12
|
+
* collector actually advertised. An unreachable collector proves nothing, so it
|
|
13
|
+
* is handled by transport rather than misreported as a mismatch:
|
|
14
|
+
*
|
|
15
|
+
* - hosted HTTP refuses to start after a bounded in-process retry (which covers
|
|
16
|
+
* private-network DNS warm-up) — a booted mcp.qyl.at must mean a completed
|
|
17
|
+
* handshake, and the platform restart loop is the outer retry;
|
|
18
|
+
* - stdio starts degraded with a structured warning — a local install without a
|
|
19
|
+
* running collector is a normal state, and every tool call already surfaces
|
|
20
|
+
* an actionable collector error until one appears.
|
|
21
|
+
*
|
|
22
|
+
* A reachable collector whose 200 health body carries no contract_revision
|
|
23
|
+
* serves a contract older than this server's: that is evidence of skew and
|
|
24
|
+
* stays fatal on both transports, as does a differing revision.
|
|
25
|
+
*/
|
|
26
|
+
import { CONTRACT_REVISION } from "@ancplua/qyl-api-schema/types";
|
|
27
|
+
import { resolveMode } from "./collector.js";
|
|
28
|
+
import { collectorHeaders, collectorUrl } from "./config.js";
|
|
29
|
+
import { logInfo, logWarning } from "./stderr-log.js";
|
|
30
|
+
/** The contract revision this build's generated artifacts were emitted from. */
|
|
31
|
+
export function generatedContractRevision() {
|
|
32
|
+
if (typeof CONTRACT_REVISION !== "string" || !/^sha256:[a-f0-9]{16}$/u.test(CONTRACT_REVISION)) {
|
|
33
|
+
throw new Error("this build carries a malformed CONTRACT_REVISION from @ancplua/qyl-api-schema; " +
|
|
34
|
+
"the generated artifacts are broken and the G10c gate cannot run");
|
|
35
|
+
}
|
|
36
|
+
return CONTRACT_REVISION;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Read the one field the handshake needs from whatever the collector serves.
|
|
40
|
+
*
|
|
41
|
+
* Deliberately lenient where the rest of this server validates with the
|
|
42
|
+
* generated contract: the probe must read health bodies emitted by ANY contract
|
|
43
|
+
* revision — older and newer than this build's — because diagnosing skew is its
|
|
44
|
+
* whole purpose, and a validator generated from this build's revision cannot
|
|
45
|
+
* accept a body from the revision it is trying to detect. An unhealthy
|
|
46
|
+
* collector still advertises its revision (the health writer always includes
|
|
47
|
+
* it), so a 503 body with a revision is compared like a 200.
|
|
48
|
+
*/
|
|
49
|
+
export async function probeCollectorHealth() {
|
|
50
|
+
const url = new URL("/health", collectorUrl());
|
|
51
|
+
let response;
|
|
52
|
+
try {
|
|
53
|
+
response = await fetch(url, {
|
|
54
|
+
headers: { accept: "application/json", ...collectorHeaders() },
|
|
55
|
+
signal: AbortSignal.timeout(5_000),
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
return { kind: "unreachable", detail: describeNetworkFailure(error) };
|
|
60
|
+
}
|
|
61
|
+
let body;
|
|
62
|
+
try {
|
|
63
|
+
body = await response.json();
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return response.ok
|
|
67
|
+
? { kind: "pre-revision", detail: "the 200 health body is not JSON" }
|
|
68
|
+
: { kind: "unreachable", detail: `health returned ${response.status} with a non-JSON body` };
|
|
69
|
+
}
|
|
70
|
+
const revision = typeof body === "object" && body !== null && !Array.isArray(body)
|
|
71
|
+
? body.contract_revision
|
|
72
|
+
: undefined;
|
|
73
|
+
if (typeof revision === "string" && revision.length > 0) {
|
|
74
|
+
return { kind: "advertised", healthy: response.ok, revision };
|
|
75
|
+
}
|
|
76
|
+
return response.ok
|
|
77
|
+
? { kind: "pre-revision", detail: `the ${response.status} health body carries no contract_revision` }
|
|
78
|
+
: { kind: "unreachable", detail: `health returned ${response.status} without a contract_revision` };
|
|
79
|
+
}
|
|
80
|
+
function describeNetworkFailure(error) {
|
|
81
|
+
if (!(error instanceof Error))
|
|
82
|
+
return "unknown network failure";
|
|
83
|
+
if (error.cause instanceof Error && error.cause.message)
|
|
84
|
+
return error.cause.message;
|
|
85
|
+
return error.message || error.name;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Startup gate for both transports. Throws — and so aborts startup — on
|
|
89
|
+
* evidence of contract skew; an unreachable collector aborts the hosted HTTP
|
|
90
|
+
* transport after retries and degrades stdio with a structured warning.
|
|
91
|
+
*/
|
|
92
|
+
export async function assertCollectorContractRevision(options = {}) {
|
|
93
|
+
// Demo mode never reaches a collector, so there is no peer to handshake with.
|
|
94
|
+
// This is the same condition that decides whether a collector is used at all,
|
|
95
|
+
// not a bypass for live deployments.
|
|
96
|
+
if (await resolveMode() === "demo")
|
|
97
|
+
return;
|
|
98
|
+
const expected = options.expected ?? generatedContractRevision();
|
|
99
|
+
const transport = options.transport ?? (process.argv.includes("--stdio") ? "stdio" : "http");
|
|
100
|
+
const probe = options.probe ?? probeCollectorHealth;
|
|
101
|
+
const attempts = options.attempts ?? (transport === "http" ? 4 : 1);
|
|
102
|
+
const delayMs = options.delayMs ?? 1_500;
|
|
103
|
+
const sleep = options.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
|
|
104
|
+
let lastDetail = "collector never probed";
|
|
105
|
+
for (let attempt = 1; attempt <= attempts; attempt += 1) {
|
|
106
|
+
const result = await probe();
|
|
107
|
+
if (result.kind === "advertised") {
|
|
108
|
+
if (result.revision !== expected) {
|
|
109
|
+
fail(`collector contract revision ${result.revision} does not match this server's ` +
|
|
110
|
+
`${expected}: deploy the collector and qyl.mcp from the same contract revision`);
|
|
111
|
+
}
|
|
112
|
+
if (!result.healthy) {
|
|
113
|
+
logWarning(`collector at ${collectorUrl()} is unhealthy but advertises the matching ` +
|
|
114
|
+
"contract revision; proceeding");
|
|
115
|
+
}
|
|
116
|
+
logInfo(`contract revision ${result.revision} matched at ${collectorUrl()}`);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (result.kind === "pre-revision") {
|
|
120
|
+
fail(`collector health surface advertises no contract_revision (${result.detail}): it ` +
|
|
121
|
+
"serves a contract older than the one this server was generated from");
|
|
122
|
+
}
|
|
123
|
+
lastDetail = result.detail;
|
|
124
|
+
if (attempt < attempts)
|
|
125
|
+
await sleep(delayMs);
|
|
126
|
+
}
|
|
127
|
+
if (transport === "stdio") {
|
|
128
|
+
logWarning(`contract revision unverified: collector unreachable at ${collectorUrl()} ` +
|
|
129
|
+
`(${lastDetail}); tools will return actionable collector errors until it is reachable`);
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
fail(`collector unreachable at ${collectorUrl()} after ${attempts} attempts (${lastDetail}): ` +
|
|
133
|
+
"refusing to serve the hosted transport without a completed contract-revision handshake");
|
|
134
|
+
}
|
|
135
|
+
// The handshake's diagnostics are its entire value — which side drifted, which
|
|
136
|
+
// revision each side carries — and contain no secrets by construction, so they
|
|
137
|
+
// go to stderr in full before the throw that main()'s sanitized reporter sees.
|
|
138
|
+
function fail(message) {
|
|
139
|
+
console.error(`contract-revision handshake failed: ${message}`);
|
|
140
|
+
throw new Error(message);
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=contract-handshake.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-handshake.js","sourceRoot":"","sources":["../src/contract-handshake.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,6 +44,26 @@ export declare const SearchLogsInputSchema: z.ZodType<QylContracts.SearchLogsInp
|
|
|
44
44
|
export declare const SearchLogsOutputSchema: z.ZodType<QylContracts.SearchLogsOutput, unknown, z.core.$ZodTypeInternals<QylContracts.SearchLogsOutput, unknown>>;
|
|
45
45
|
export declare const FetchTelemetryInputSchema: z.ZodType<QylContracts.FetchTelemetryInput, unknown, z.core.$ZodTypeInternals<QylContracts.FetchTelemetryInput, unknown>>;
|
|
46
46
|
export declare const FetchTelemetryOutputSchema: z.ZodType<QylContracts.FetchTelemetryOutput, unknown, z.core.$ZodTypeInternals<QylContracts.FetchTelemetryOutput, unknown>>;
|
|
47
|
+
export declare const CiLogInputSchema: z.ZodType<QylContracts.CiLogInput, unknown, z.core.$ZodTypeInternals<QylContracts.CiLogInput, unknown>>;
|
|
48
|
+
export declare const CiRunSummarySchema: z.ZodType<QylContracts.CiRunSummary, unknown, z.core.$ZodTypeInternals<QylContracts.CiRunSummary, unknown>>;
|
|
49
|
+
export declare const CiPhaseSchema: z.ZodType<QylContracts.CiPhase, unknown, z.core.$ZodTypeInternals<QylContracts.CiPhase, unknown>>;
|
|
50
|
+
export declare const CiLogOutputSchema: z.ZodType<QylContracts.CiLogOutput, unknown, z.core.$ZodTypeInternals<QylContracts.CiLogOutput, unknown>>;
|
|
51
|
+
export declare const WorkflowRunSchema: z.ZodType<QylContracts.WorkflowRun, unknown, z.core.$ZodTypeInternals<QylContracts.WorkflowRun, unknown>>;
|
|
52
|
+
export declare const WorkflowRunPageSchema: z.ZodType<QylContracts.WorkflowRunPage, unknown, z.core.$ZodTypeInternals<QylContracts.WorkflowRunPage, unknown>>;
|
|
53
|
+
export declare const WorkflowEventPageSchema: z.ZodType<QylContracts.WorkflowEventPage, unknown, z.core.$ZodTypeInternals<QylContracts.WorkflowEventPage, unknown>>;
|
|
54
|
+
export declare const WorkflowGraphSnapshotSchema: z.ZodType<QylContracts.WorkflowGraphSnapshot, unknown, z.core.$ZodTypeInternals<QylContracts.WorkflowGraphSnapshot, unknown>>;
|
|
55
|
+
export declare const WorkflowContentSchema: z.ZodType<QylContracts.WorkflowContent, unknown, z.core.$ZodTypeInternals<QylContracts.WorkflowContent, unknown>>;
|
|
56
|
+
export declare const WorkflowControlCommandSchema: z.ZodType<QylContracts.WorkflowControlCommand, unknown, z.core.$ZodTypeInternals<QylContracts.WorkflowControlCommand, unknown>>;
|
|
57
|
+
export declare const ListWorkflowRunsInputSchema: z.ZodType<QylContracts.ListWorkflowRunsInput, unknown, z.core.$ZodTypeInternals<QylContracts.ListWorkflowRunsInput, unknown>>;
|
|
58
|
+
export declare const ListWorkflowRunsOutputSchema: z.ZodType<QylContracts.ListWorkflowRunsOutput, unknown, z.core.$ZodTypeInternals<QylContracts.ListWorkflowRunsOutput, unknown>>;
|
|
59
|
+
export declare const GetWorkflowGraphInputSchema: z.ZodType<QylContracts.GetWorkflowGraphInput, unknown, z.core.$ZodTypeInternals<QylContracts.GetWorkflowGraphInput, unknown>>;
|
|
60
|
+
export declare const GetWorkflowGraphOutputSchema: z.ZodType<QylContracts.GetWorkflowGraphOutput, unknown, z.core.$ZodTypeInternals<QylContracts.GetWorkflowGraphOutput, unknown>>;
|
|
61
|
+
export declare const DisplayWorkflowGraphInputSchema: z.ZodType<QylContracts.DisplayWorkflowGraphInput, unknown, z.core.$ZodTypeInternals<QylContracts.DisplayWorkflowGraphInput, unknown>>;
|
|
62
|
+
export declare const DisplayWorkflowGraphOutputSchema: z.ZodType<QylContracts.DisplayWorkflowGraphOutput, unknown, z.core.$ZodTypeInternals<QylContracts.DisplayWorkflowGraphOutput, unknown>>;
|
|
63
|
+
export declare const FetchWorkflowGraphUpdatesInputSchema: z.ZodType<QylContracts.FetchWorkflowGraphUpdatesInput, unknown, z.core.$ZodTypeInternals<QylContracts.FetchWorkflowGraphUpdatesInput, unknown>>;
|
|
64
|
+
export declare const FetchWorkflowGraphUpdatesOutputSchema: z.ZodType<QylContracts.FetchWorkflowGraphUpdatesOutput, unknown, z.core.$ZodTypeInternals<QylContracts.FetchWorkflowGraphUpdatesOutput, unknown>>;
|
|
65
|
+
export declare const ControlWorkflowRunInputSchema: z.ZodType<QylContracts.ControlWorkflowRunInput, unknown, z.core.$ZodTypeInternals<QylContracts.ControlWorkflowRunInput, unknown>>;
|
|
66
|
+
export declare const ControlWorkflowRunOutputSchema: z.ZodType<QylContracts.ControlWorkflowRunOutput, unknown, z.core.$ZodTypeInternals<QylContracts.ControlWorkflowRunOutput, unknown>>;
|
|
47
67
|
export declare const RunnerResourceStateSchema: z.ZodType<QylContracts.RunnerResourceState, unknown, z.core.$ZodTypeInternals<QylContracts.RunnerResourceState, unknown>>;
|
|
48
68
|
export declare const RunnerLogLineSchema: z.ZodType<QylContracts.RunnerLogLine, unknown, z.core.$ZodTypeInternals<QylContracts.RunnerLogLine, unknown>>;
|
|
49
69
|
export declare const WorkbenchSessionIdSchema: z.ZodType<QylContracts.WorkbenchSessionId, unknown, z.core.$ZodTypeInternals<QylContracts.WorkbenchSessionId, unknown>>;
|
|
@@ -225,6 +225,27 @@ export const SearchLogsInputSchema = publishedContractSchema("Mcp.Tools.SearchLo
|
|
|
225
225
|
export const SearchLogsOutputSchema = publishedContractSchema("Mcp.Tools.SearchLogsOutput");
|
|
226
226
|
export const FetchTelemetryInputSchema = publishedContractSchema("Mcp.Tools.FetchTelemetryInput");
|
|
227
227
|
export const FetchTelemetryOutputSchema = publishedContractSchema("Mcp.Tools.FetchTelemetryOutput");
|
|
228
|
+
export const CiLogInputSchema = publishedContractSchema("Mcp.Tools.CiLogInput");
|
|
229
|
+
export const CiRunSummarySchema = publishedContractSchema("Mcp.Tools.CiRunSummary");
|
|
230
|
+
export const CiPhaseSchema = publishedContractSchema("Mcp.Tools.CiPhase");
|
|
231
|
+
export const CiLogOutputSchema = publishedContractSchema("Mcp.Tools.CiLogOutput");
|
|
232
|
+
// Workflow journal, projection, lazy content, and curated debugger tool shapes.
|
|
233
|
+
export const WorkflowRunSchema = publishedContractSchema("Workflow.WorkflowRun");
|
|
234
|
+
export const WorkflowRunPageSchema = publishedContractSchema("Operations.WorkflowRunsApi_list.Response.200");
|
|
235
|
+
export const WorkflowEventPageSchema = publishedContractSchema("Operations.WorkflowRunsApi_readEvents.Response.200");
|
|
236
|
+
export const WorkflowGraphSnapshotSchema = publishedContractSchema("Operations.WorkflowRunsApi_getGraph.Response.200");
|
|
237
|
+
export const WorkflowContentSchema = publishedContractSchema("Operations.WorkflowRunsApi_getContent.Response.200");
|
|
238
|
+
export const WorkflowControlCommandSchema = publishedContractSchema("Operations.WorkflowRunsApi_submitControl.Response.200");
|
|
239
|
+
export const ListWorkflowRunsInputSchema = publishedContractSchema("Mcp.Tools.ListWorkflowRunsInput");
|
|
240
|
+
export const ListWorkflowRunsOutputSchema = publishedContractSchema("Mcp.Tools.ListWorkflowRunsOutput");
|
|
241
|
+
export const GetWorkflowGraphInputSchema = publishedContractSchema("Mcp.Tools.GetWorkflowGraphInput");
|
|
242
|
+
export const GetWorkflowGraphOutputSchema = publishedContractSchema("Mcp.Tools.GetWorkflowGraphOutput");
|
|
243
|
+
export const DisplayWorkflowGraphInputSchema = publishedContractSchema("Mcp.Tools.DisplayWorkflowGraphInput");
|
|
244
|
+
export const DisplayWorkflowGraphOutputSchema = publishedContractSchema("Mcp.Tools.DisplayWorkflowGraphOutput");
|
|
245
|
+
export const FetchWorkflowGraphUpdatesInputSchema = publishedContractSchema("Mcp.Tools.FetchWorkflowGraphUpdatesInput");
|
|
246
|
+
export const FetchWorkflowGraphUpdatesOutputSchema = publishedContractSchema("Mcp.Tools.FetchWorkflowGraphUpdatesOutput");
|
|
247
|
+
export const ControlWorkflowRunInputSchema = publishedContractSchema("Mcp.Tools.ControlWorkflowRunInput");
|
|
248
|
+
export const ControlWorkflowRunOutputSchema = publishedContractSchema("Mcp.Tools.ControlWorkflowRunOutput");
|
|
228
249
|
export const RunnerResourceStateSchema = publishedContractSchema("Runner.RunnerResourceState");
|
|
229
250
|
export const RunnerLogLineSchema = publishedContractSchema("Runner.RunnerLogLine");
|
|
230
251
|
// Workbench identity, session, and workspace boundaries.
|