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.
Files changed (44) hide show
  1. package/dist/ci.d.ts +1 -27
  2. package/dist/ci.js +3 -38
  3. package/dist/ci.js.map +1 -1
  4. package/dist/collector.d.ts +6 -6
  5. package/dist/collector.js +33 -7
  6. package/dist/collector.js.map +1 -1
  7. package/dist/config.d.ts +2 -0
  8. package/dist/config.js +7 -1
  9. package/dist/config.js.map +1 -1
  10. package/dist/contract-handshake.d.ts +66 -0
  11. package/dist/contract-handshake.js +142 -0
  12. package/dist/contract-handshake.js.map +1 -0
  13. package/dist/contract-validation.d.ts +20 -0
  14. package/dist/contract-validation.js +21 -0
  15. package/dist/contract-validation.js.map +1 -1
  16. package/dist/main.js +6 -1
  17. package/dist/main.js.map +1 -1
  18. package/dist/mcp-app.html +4 -51
  19. package/dist/mcp-dashboard.html +4 -51
  20. package/dist/mcp-home.html +1 -1
  21. package/dist/oauth.d.ts +2 -0
  22. package/dist/oauth.js +2 -0
  23. package/dist/oauth.js.map +1 -1
  24. package/dist/observe-graph.html +228 -0
  25. package/dist/server.js +25 -2
  26. package/dist/server.js.map +1 -1
  27. package/dist/stats.js +1 -1
  28. package/dist/stats.js.map +1 -1
  29. package/dist/stderr-log.d.ts +15 -0
  30. package/dist/stderr-log.js +20 -0
  31. package/dist/stderr-log.js.map +1 -0
  32. package/dist/workflow-data.d.ts +12 -0
  33. package/dist/workflow-data.js +172 -0
  34. package/dist/workflow-data.js.map +1 -0
  35. package/dist/workflow-layout.d.ts +24 -0
  36. package/dist/workflow-layout.js +165 -0
  37. package/dist/workflow-layout.js.map +1 -0
  38. package/dist/workflow-reducer.d.ts +37 -0
  39. package/dist/workflow-reducer.js +114 -0
  40. package/dist/workflow-reducer.js.map +1 -0
  41. package/dist/workflow-tools.d.ts +10 -0
  42. package/dist/workflow-tools.js +143 -0
  43. package/dist/workflow-tools.js.map +1 -0
  44. 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 { z } from "zod";
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.shape,
113
- outputSchema: CiLogOutputSchema.shape,
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":"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"}
1
+ {"version":3,"file":"ci.js","sourceRoot":"","sources":["../src/ci.ts"],"names":[],"mappings":"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"}
@@ -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
- * GET a collector endpoint. Query params are camelCase per the collector API;
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
- * GET a collector endpoint. Query params are camelCase per the collector API;
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
- export async function collectorGet(pathname, params = {}) {
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, { headers: collectorHeaders() });
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 body;
160
+ let responseBody;
141
161
  try {
142
- body = await response.json();
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(body);
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 body;
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");
@@ -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":"AAAA;;;;;;GAMG;AAQH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAGlC,2EAA2E;AAC3E,MAAM,OAAO,cAAe,SAAQ,KAAK;IAG5B,eAAe;IACf,MAAM;IAHjB,YACE,OAAe,EACN,eAAe,GAAG,KAAK,EACvB,MAAe;QAExB,KAAK,CAAC,OAAO,CAAC,CAAC;+BAHN,eAAe;sBACf,MAAM;QAGf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,SAAS,QAAQ,CAAC,KAAc,EAAE,OAAe;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,cAAc,CAAC,mCAAmC,OAAO,sBAAsB,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,KAAgC,CAAC;AAC1C,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe,EAAE,KAAiB;IAC1D,OAAO,IAAI,cAAc,CACvB,mCAAmC,OAAO,KAAK,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CACxE,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAEjD,SAAS,iBAAiB,CAAC,KAAc,EAAE,OAAe;IACxD,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,MAAM,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACnE,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;AAC7C,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,mBAAmB,CAAC,KAAc,EAAE,OAAO,GAAG,OAAO;IACnE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACvC,MAAM,UAAU,GAA4B;QAC1C,GAAG,KAAK;QACR,UAAU,EAAE,iBAAiB,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,OAAO,aAAa,CAAC;QACxE,QAAQ,EAAE,iBAAiB,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,OAAO,WAAW,CAAC;KACnE,CAAC;IACF,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,MAAM,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACnE,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,qBAAqB,CAAC,KAAc,EAAE,OAAO,GAAG,SAAS;IACvE,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACzC,MAAM,UAAU,GAA4B;QAC1C,GAAG,OAAO;QACV,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,OAAO,aAAa,CAAC;KAC3E,CAAC;IACF,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnC,UAAU,CAAC,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,OAAO,WAAW,CAAC,CAAC;IACnF,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,MAAM,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACnE,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,iBAAiB,CAAC,KAAc,EAAE,OAAO,GAAG,KAAK;IAC/D,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IACnE,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,MAAM,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACnE,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAYD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAc,EACd,OAAe,EACf,UAA4B,EAC5B,SAAgD;IAEhD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACxC,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,CAAC,WAAW,CAAC,OAAO;YAAE,MAAM,gBAAgB,CAAC,GAAG,OAAO,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;QACxF,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC;YAC5B,GAAG,MAAM;YACT,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAC1C,SAAS,CAAC,IAAI,EAAE,GAAG,OAAO,UAAU,KAAK,GAAG,CAAC,CAAC;SACjD,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,cAAc;YAAE,MAAM,KAAK,CAAC;QACjD,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ;YAAE,MAAM,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACxE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAClD,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IACpD,OAAO;QACL,GAAG,OAAO;QACV,SAAS,EAAE,iBAAiB,CAAC,OAAO,CAAC,SAAS,EAAE,0BAA0B,CAAC;KAC5E,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACzC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9E,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,gBAAgB,CAC7B,QAAgB,EAChB,MAAsB,EACtB,MAA6D,EAC7D,IAAa,EACb,OAAgC;IAEhC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;IAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS;YAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM;QAC3B,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC,CAAC,OAAO,CAAC;IACZ,MAAM,OAAO,GAAG;QACd,MAAM,EAAE,kBAAkB;QAC1B,GAAG,gBAAgB,EAAE;QACrB,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;KACtE,CAAC;IAEF,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC1B,MAAM;YACN,OAAO;YACP,MAAM;YACN,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,cAAc,CAAC,mCAAmC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,cAAc,CAAC,2BAA2B,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,IAAI,cAAc,CACtB,4BAA4B,YAAY,EAAE,mBAAmB;YAC3D,iEAAiE,EACnE,IAAI,CACL,CAAC;IACJ,CAAC;IAED,IAAI,YAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,cAAc,CACtB,oCAAoC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,SAAS,QAAQ,EAAE,EAC7F,KAAK,EACL,QAAQ,CAAC,MAAM,CAChB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC9F,IAAI,SAAS,KAAK,0BAA0B,EAAE,CAAC;YAC7C,MAAM,IAAI,cAAc,CACtB,mCAAmC,QAAQ,4CAA4C,SAAS,IAAI,iBAAiB,EAAE,EACvH,KAAK,EACL,QAAQ,CAAC,MAAM,CAChB,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,cAAc,CACtB,mCAAmC,QAAQ,gCAAgC,EAC3E,KAAK,EACL,QAAQ,CAAC,MAAM,CAChB,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,cAAc,CACtB,6BAA6B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,SAAS,QAAQ,EAAE,EACtF,KAAK,EACL,QAAQ,CAAC,MAAM,CAChB,CAAC;IACJ,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,QAAgB,EAChB,MAAM,GAA0D,EAAE,EAClE,OAAO,GAA4B,EAAE;IAErC,OAAO,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,QAAgB,EAChB,IAAa,EACb,OAAO,GAA4B,EAAE;IAErC,OAAO,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACzE,CAAC"}
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
- return apiKey ? { [apiKeyHeader]: apiKey } : {};
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
@@ -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;AAClD,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.