@ancplua/qyl-api-schema 1.0.5 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/api/routes.tsp +19 -19
- package/api/runner.tsp +0 -703
- package/api/streaming.tsp +2 -2
- package/api/workbench.tsp +709 -0
- package/common/errors.tsp +2 -1
- package/common/pagination.tsp +8 -8
- package/generated/json-schema/qyl-api-schema.json +1435 -1446
- package/generated/openapi/qyl.openapi.json +1486 -1707
- package/generated/otel-keys.gen.tsp +93 -91
- package/generated/ts-runtime/api.d.ts +431 -431
- package/generated/ts-runtime/api.js +16 -16
- package/index.tsp +2 -1
- package/models/health.tsp +2 -0
- package/models/runner.tsp +4 -0
- package/models/session.tsp +9 -9
- package/models/workbench.tsp +1194 -0
- package/otel/resource.tsp +39 -39
- package/otel/span.tsp +6 -6
- package/package.json +12 -6
- package/models/runner-mcp.tsp +0 -1031
package/models/runner-mcp.tsp
DELETED
|
@@ -1,1031 +0,0 @@
|
|
|
1
|
-
import "@typespec/http";
|
|
2
|
-
import "@typespec/openapi3";
|
|
3
|
-
|
|
4
|
-
import "../common/types.tsp";
|
|
5
|
-
import "../otel/logs.tsp";
|
|
6
|
-
import "../otel/span.tsp";
|
|
7
|
-
|
|
8
|
-
using TypeSpec.Http;
|
|
9
|
-
using TypeSpec.OpenAPI;
|
|
10
|
-
using Qyl.Api.Contracts.Common;
|
|
11
|
-
using Qyl.Api.Contracts.OTel.Logs;
|
|
12
|
-
using Qyl.Api.Contracts.OTel.Traces;
|
|
13
|
-
|
|
14
|
-
namespace Qyl.Api.Contracts.Runner.Mcp;
|
|
15
|
-
|
|
16
|
-
@doc("Opaque identifier for one authenticated local runner session.")
|
|
17
|
-
@minLength(1)
|
|
18
|
-
@maxLength(128)
|
|
19
|
-
scalar RunnerMcpSessionId extends string;
|
|
20
|
-
|
|
21
|
-
@doc("Opaque identifier for one MCP workbench workspace.")
|
|
22
|
-
@minLength(1)
|
|
23
|
-
@maxLength(128)
|
|
24
|
-
scalar RunnerMcpWorkspaceId extends string;
|
|
25
|
-
|
|
26
|
-
@doc("Opaque identifier for one configured MCP server.")
|
|
27
|
-
@minLength(1)
|
|
28
|
-
@maxLength(128)
|
|
29
|
-
scalar RunnerMcpServerId extends string;
|
|
30
|
-
|
|
31
|
-
@doc("Opaque identifier for one asynchronous MCP tool execution.")
|
|
32
|
-
@minLength(1)
|
|
33
|
-
@maxLength(128)
|
|
34
|
-
scalar RunnerMcpExecutionId extends string;
|
|
35
|
-
|
|
36
|
-
@doc("Opaque identifier for one reusable MCP test case.")
|
|
37
|
-
@minLength(1)
|
|
38
|
-
@maxLength(128)
|
|
39
|
-
scalar RunnerMcpTestCaseId extends string;
|
|
40
|
-
|
|
41
|
-
@doc("Opaque identifier for one reusable MCP test suite.")
|
|
42
|
-
@minLength(1)
|
|
43
|
-
@maxLength(128)
|
|
44
|
-
scalar RunnerMcpSuiteId extends string;
|
|
45
|
-
|
|
46
|
-
@doc("Opaque identifier for one MCP evaluation run.")
|
|
47
|
-
@minLength(1)
|
|
48
|
-
@maxLength(128)
|
|
49
|
-
scalar RunnerMcpEvaluationRunId extends string;
|
|
50
|
-
|
|
51
|
-
@doc("Opaque identifier for one generated evaluation export.")
|
|
52
|
-
@minLength(1)
|
|
53
|
-
@maxLength(128)
|
|
54
|
-
scalar RunnerMcpEvaluationExportId extends string;
|
|
55
|
-
|
|
56
|
-
@doc("Authenticated local principal metadata. No credential or session token is represented here.")
|
|
57
|
-
model RunnerMcpPrincipalIdentity {
|
|
58
|
-
id: string;
|
|
59
|
-
displayName?: string;
|
|
60
|
-
local: true;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
@doc("Metadata for the authenticated local workbench session. The HttpOnly session cookie is never returned in this model.")
|
|
64
|
-
model RunnerMcpWorkbenchSession {
|
|
65
|
-
id: RunnerMcpSessionId;
|
|
66
|
-
principal: RunnerMcpPrincipalIdentity;
|
|
67
|
-
workspaceIds: RunnerMcpWorkspaceId[];
|
|
68
|
-
activeWorkspaceId?: RunnerMcpWorkspaceId;
|
|
69
|
-
createdAt: utcDateTime;
|
|
70
|
-
expiresAt?: utcDateTime;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
@doc("Loopback session bootstrap response. The cookie value is carried only in Set-Cookie and never in the JSON body.")
|
|
74
|
-
model RunnerMcpSessionBootstrapResponse extends RunnerMcpWorkbenchSession {
|
|
75
|
-
@doc("qyl-mcp-session cookie with HttpOnly, SameSite, Path, and expiry attributes; Secure is also present when served over HTTPS.")
|
|
76
|
-
@header("Set-Cookie")
|
|
77
|
-
setCookie: string;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
@doc("One isolated MCP workbench workspace owned by the authenticated local principal.")
|
|
81
|
-
model RunnerMcpWorkspace {
|
|
82
|
-
id: RunnerMcpWorkspaceId;
|
|
83
|
-
ownerId: string;
|
|
84
|
-
name: string;
|
|
85
|
-
description?: string;
|
|
86
|
-
createdAt: utcDateTime;
|
|
87
|
-
updatedAt: utcDateTime;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
@doc("Request to create an isolated MCP workbench workspace.")
|
|
91
|
-
model RunnerMcpWorkspaceCreateRequest {
|
|
92
|
-
@minLength(1)
|
|
93
|
-
@maxLength(120)
|
|
94
|
-
name: string;
|
|
95
|
-
|
|
96
|
-
@maxLength(2000)
|
|
97
|
-
description?: string;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
@doc("Request to update mutable MCP workbench workspace metadata.")
|
|
101
|
-
model RunnerMcpWorkspaceUpdateRequest {
|
|
102
|
-
@minLength(1)
|
|
103
|
-
@maxLength(120)
|
|
104
|
-
name?: string;
|
|
105
|
-
|
|
106
|
-
@maxLength(2000)
|
|
107
|
-
description?: string;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
@doc("Workspaces visible to the authenticated local session.")
|
|
111
|
-
model RunnerMcpWorkspaceListResponse {
|
|
112
|
-
workspaces: RunnerMcpWorkspace[];
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
@doc("Preferred tool-argument editor for one authenticated workspace.")
|
|
116
|
-
enum RunnerMcpToolInputMode {
|
|
117
|
-
form: "form",
|
|
118
|
-
json: "json",
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
@doc("Saved presentation preferences isolated to one authenticated MCP workspace.")
|
|
122
|
-
model RunnerMcpWorkspacePreferences {
|
|
123
|
-
workspaceId: RunnerMcpWorkspaceId;
|
|
124
|
-
selectedServerId?: RunnerMcpServerId;
|
|
125
|
-
|
|
126
|
-
@maxLength(1024)
|
|
127
|
-
selectedToolName?: string;
|
|
128
|
-
|
|
129
|
-
inputMode: RunnerMcpToolInputMode;
|
|
130
|
-
|
|
131
|
-
@maxLength(128)
|
|
132
|
-
activePanel?: string;
|
|
133
|
-
|
|
134
|
-
compactMode: boolean;
|
|
135
|
-
updatedAt: utcDateTime;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
@doc("Request to replace saved presentation preferences for one authenticated MCP workspace.")
|
|
139
|
-
model RunnerMcpWorkspacePreferencesUpdateRequest {
|
|
140
|
-
selectedServerId?: RunnerMcpServerId;
|
|
141
|
-
|
|
142
|
-
@maxLength(1024)
|
|
143
|
-
selectedToolName?: string;
|
|
144
|
-
|
|
145
|
-
inputMode?: RunnerMcpToolInputMode;
|
|
146
|
-
|
|
147
|
-
@maxLength(128)
|
|
148
|
-
activePanel?: string;
|
|
149
|
-
|
|
150
|
-
compactMode?: boolean;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
@doc("Supported MCP server transport owned by the local runner.")
|
|
154
|
-
enum RunnerMcpTransportKind {
|
|
155
|
-
stdio: "stdio",
|
|
156
|
-
streamableHttp: "streamable_http",
|
|
157
|
-
builtin: "builtin",
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
@doc("Reference to a secret resolved from the runner environment. The environment value is never part of this contract.")
|
|
161
|
-
model RunnerMcpSecretReference {
|
|
162
|
-
source: "environment";
|
|
163
|
-
|
|
164
|
-
@pattern("^[A-Za-z_][A-Za-z0-9_]*$")
|
|
165
|
-
environmentVariable: string;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
@doc("Environment variable whose value is resolved from a secret reference at connection time.")
|
|
169
|
-
model RunnerMcpEnvironmentSecretReference {
|
|
170
|
-
@pattern("^[A-Za-z_][A-Za-z0-9_]*$")
|
|
171
|
-
name: string;
|
|
172
|
-
|
|
173
|
-
secret: RunnerMcpSecretReference;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
@doc("HTTP header whose value is resolved from a secret reference at connection time.")
|
|
177
|
-
model RunnerMcpHeaderSecretReference {
|
|
178
|
-
@minLength(1)
|
|
179
|
-
name: string;
|
|
180
|
-
|
|
181
|
-
secret: RunnerMcpSecretReference;
|
|
182
|
-
|
|
183
|
-
@doc("Optional HTTP authentication scheme applied to the resolved secret. Omit for a raw header value.")
|
|
184
|
-
scheme?: RunnerMcpHeaderSecretScheme;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
@doc("HTTP authentication scheme applied to an environment-resolved header secret.")
|
|
188
|
-
enum RunnerMcpHeaderSecretScheme {
|
|
189
|
-
bearer: "bearer",
|
|
190
|
-
basic: "basic",
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
@doc("Sanitized local stdio transport configuration. Arguments must not contain secrets.")
|
|
194
|
-
model RunnerMcpStdioServerConfiguration {
|
|
195
|
-
transport: "stdio";
|
|
196
|
-
|
|
197
|
-
@minLength(1)
|
|
198
|
-
command: string;
|
|
199
|
-
|
|
200
|
-
arguments?: string[];
|
|
201
|
-
workingDirectory?: string;
|
|
202
|
-
environment?: RunnerMcpEnvironmentSecretReference[];
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
@doc("Sanitized MCP Streamable HTTP transport configuration.")
|
|
206
|
-
model RunnerMcpStreamableHttpServerConfiguration {
|
|
207
|
-
transport: "streamable_http";
|
|
208
|
-
endpoint: url;
|
|
209
|
-
headers?: RunnerMcpHeaderSecretReference[];
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
@doc("Sanitized built-in MCP server configuration.")
|
|
213
|
-
model RunnerMcpBuiltinServerConfiguration {
|
|
214
|
-
transport: "builtin";
|
|
215
|
-
|
|
216
|
-
@minLength(1)
|
|
217
|
-
name: string;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
@doc("Exactly one sanitized MCP server transport configuration.")
|
|
221
|
-
@oneOf
|
|
222
|
-
union RunnerMcpServerConfiguration {
|
|
223
|
-
stdio: RunnerMcpStdioServerConfiguration,
|
|
224
|
-
streamableHttp: RunnerMcpStreamableHttpServerConfiguration,
|
|
225
|
-
builtin: RunnerMcpBuiltinServerConfiguration,
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
@doc("Connection lifecycle for one configured MCP server.")
|
|
229
|
-
enum RunnerMcpConnectionStatus {
|
|
230
|
-
disconnected: "disconnected",
|
|
231
|
-
connecting: "connecting",
|
|
232
|
-
connected: "connected",
|
|
233
|
-
disconnecting: "disconnecting",
|
|
234
|
-
reconnecting: "reconnecting",
|
|
235
|
-
failed: "failed",
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
@doc("Stable category for a workbench, transport, protocol, or tool execution error.")
|
|
239
|
-
enum RunnerMcpErrorCategory {
|
|
240
|
-
authentication: "authentication",
|
|
241
|
-
transport: "transport",
|
|
242
|
-
protocol: "protocol",
|
|
243
|
-
serialization: "serialization",
|
|
244
|
-
schemaValidation: "schema_validation",
|
|
245
|
-
toolError: "tool_error",
|
|
246
|
-
timeout: "timeout",
|
|
247
|
-
cancelled: "cancelled",
|
|
248
|
-
internal: "internal",
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
@doc("Typed, sanitized failure captured by the MCP workbench.")
|
|
252
|
-
model RunnerMcpError {
|
|
253
|
-
category: RunnerMcpErrorCategory;
|
|
254
|
-
code: string;
|
|
255
|
-
message: string;
|
|
256
|
-
occurredAt: utcDateTime;
|
|
257
|
-
retryable: boolean;
|
|
258
|
-
|
|
259
|
-
@doc("Sanitized implementation details with credentials and secret values removed.")
|
|
260
|
-
details?: unknown;
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
@doc("SDK-validated MCP initialize result projected through a Qyl-owned connection snapshot.")
|
|
264
|
-
model RunnerMcpInitializationSnapshot {
|
|
265
|
-
initializedAt: utcDateTime;
|
|
266
|
-
protocolVersion: string;
|
|
267
|
-
|
|
268
|
-
@doc("Opaque SDK server-info entity.")
|
|
269
|
-
serverIdentity: unknown;
|
|
270
|
-
|
|
271
|
-
@doc("Opaque SDK server-capabilities entity.")
|
|
272
|
-
capabilities: unknown;
|
|
273
|
-
|
|
274
|
-
instructions?: string;
|
|
275
|
-
|
|
276
|
-
@doc("Opaque SDK session information when the transport exposes it.")
|
|
277
|
-
sessionInfo?: unknown;
|
|
278
|
-
|
|
279
|
-
@doc("Complete opaque SDK initialize result.")
|
|
280
|
-
result: unknown;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
@doc("Current connection state and most recent initialization evidence for one MCP server.")
|
|
284
|
-
model RunnerMcpConnectionSnapshot {
|
|
285
|
-
status: RunnerMcpConnectionStatus;
|
|
286
|
-
changedAt: utcDateTime;
|
|
287
|
-
connectedAt?: utcDateTime;
|
|
288
|
-
disconnectedAt?: utcDateTime;
|
|
289
|
-
initialization?: RunnerMcpInitializationSnapshot;
|
|
290
|
-
recentError?: RunnerMcpError;
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
@doc("Persisted sanitized MCP server configuration and current runtime connection state.")
|
|
294
|
-
model RunnerMcpServer {
|
|
295
|
-
id: RunnerMcpServerId;
|
|
296
|
-
workspaceId: RunnerMcpWorkspaceId;
|
|
297
|
-
name: string;
|
|
298
|
-
description?: string;
|
|
299
|
-
configuration: RunnerMcpServerConfiguration;
|
|
300
|
-
connection: RunnerMcpConnectionSnapshot;
|
|
301
|
-
createdAt: utcDateTime;
|
|
302
|
-
updatedAt: utcDateTime;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
@doc("Request to add an MCP server configuration to a workspace.")
|
|
306
|
-
model RunnerMcpServerCreateRequest {
|
|
307
|
-
@minLength(1)
|
|
308
|
-
@maxLength(120)
|
|
309
|
-
name: string;
|
|
310
|
-
|
|
311
|
-
@maxLength(2000)
|
|
312
|
-
description?: string;
|
|
313
|
-
|
|
314
|
-
configuration: RunnerMcpServerConfiguration;
|
|
315
|
-
autoConnect?: boolean = false;
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
@doc("Request to replace mutable MCP server metadata or its complete sanitized transport configuration.")
|
|
319
|
-
model RunnerMcpServerUpdateRequest {
|
|
320
|
-
@minLength(1)
|
|
321
|
-
@maxLength(120)
|
|
322
|
-
name?: string;
|
|
323
|
-
|
|
324
|
-
@maxLength(2000)
|
|
325
|
-
description?: string;
|
|
326
|
-
|
|
327
|
-
configuration?: RunnerMcpServerConfiguration;
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
@doc("Configured MCP servers in one authenticated workspace.")
|
|
331
|
-
model RunnerMcpServerListResponse {
|
|
332
|
-
servers: RunnerMcpServer[];
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
@doc("An MCP server connection action was accepted and continues asynchronously.")
|
|
336
|
-
model RunnerMcpServerActionAccepted {
|
|
337
|
-
@statusCode statusCode: 202;
|
|
338
|
-
server: RunnerMcpServer;
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
@doc("One discovered MCP entity collection. Every item remains the SDK-validated opaque entity.")
|
|
342
|
-
model RunnerMcpDiscoveryCollection {
|
|
343
|
-
items: unknown[];
|
|
344
|
-
|
|
345
|
-
@minValue(0)
|
|
346
|
-
count: int32;
|
|
347
|
-
|
|
348
|
-
complete: boolean;
|
|
349
|
-
cursor?: string;
|
|
350
|
-
nextCursor?: string;
|
|
351
|
-
discoveredAt: utcDateTime;
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
@doc("Complete MCP capability discovery evidence for one server.")
|
|
355
|
-
model RunnerMcpDiscoverySnapshot {
|
|
356
|
-
serverId: RunnerMcpServerId;
|
|
357
|
-
startedAt: utcDateTime;
|
|
358
|
-
completedAt: utcDateTime;
|
|
359
|
-
tools: RunnerMcpDiscoveryCollection;
|
|
360
|
-
resources: RunnerMcpDiscoveryCollection;
|
|
361
|
-
resourceTemplates: RunnerMcpDiscoveryCollection;
|
|
362
|
-
prompts: RunnerMcpDiscoveryCollection;
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
@doc("Direction of a captured MCP protocol or transport event.")
|
|
366
|
-
enum RunnerMcpProtocolDirection {
|
|
367
|
-
clientToServer: "client_to_server",
|
|
368
|
-
serverToClient: "server_to_client",
|
|
369
|
-
local: "local",
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
@doc("Kind of captured MCP protocol or transport event.")
|
|
373
|
-
enum RunnerMcpProtocolEventKind {
|
|
374
|
-
request: "request",
|
|
375
|
-
response: "response",
|
|
376
|
-
notification: "notification",
|
|
377
|
-
error: "error",
|
|
378
|
-
transport: "transport",
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
@doc("Chronological diagnostic event carrying only a redacted opaque SDK message or local transport payload.")
|
|
382
|
-
model RunnerMcpProtocolEvent {
|
|
383
|
-
id: string;
|
|
384
|
-
serverId: RunnerMcpServerId;
|
|
385
|
-
direction: RunnerMcpProtocolDirection;
|
|
386
|
-
kind: RunnerMcpProtocolEventKind;
|
|
387
|
-
method?: string;
|
|
388
|
-
|
|
389
|
-
@doc("Opaque JSON-RPC request identifier, which may be a string or number.")
|
|
390
|
-
requestId?: unknown;
|
|
391
|
-
|
|
392
|
-
timestamp: utcDateTime;
|
|
393
|
-
durationMs?: DurationMs;
|
|
394
|
-
|
|
395
|
-
@doc("Opaque SDK message or transport payload after credential and secret redaction.")
|
|
396
|
-
payload?: unknown;
|
|
397
|
-
|
|
398
|
-
redactionApplied: true;
|
|
399
|
-
executionId?: RunnerMcpExecutionId;
|
|
400
|
-
traceId?: TraceId;
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
@doc("Cursor page of chronological MCP protocol diagnostic events.")
|
|
404
|
-
model RunnerMcpProtocolEventPage {
|
|
405
|
-
events: RunnerMcpProtocolEvent[];
|
|
406
|
-
nextCursor?: string;
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
@doc("How consequential the workbench considers an MCP tool invocation.")
|
|
410
|
-
enum RunnerMcpExecutionEffect {
|
|
411
|
-
readOnly: "read_only",
|
|
412
|
-
consequential: "consequential",
|
|
413
|
-
`unknown`: "unknown",
|
|
414
|
-
}
|
|
415
|
-
|
|
416
|
-
@doc("Client acknowledgement supplied when requesting a consequential MCP tool invocation.")
|
|
417
|
-
model RunnerMcpExecutionConfirmationRequest {
|
|
418
|
-
acknowledged: true;
|
|
419
|
-
acknowledgement: string;
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
@doc("Server-timestamped confirmation evidence persisted for a consequential MCP tool invocation.")
|
|
423
|
-
model RunnerMcpExecutionConfirmationEvidence {
|
|
424
|
-
acknowledged: true;
|
|
425
|
-
acknowledgement: string;
|
|
426
|
-
confirmedAt: utcDateTime;
|
|
427
|
-
}
|
|
428
|
-
|
|
429
|
-
@doc("Request to asynchronously invoke one discovered MCP tool.")
|
|
430
|
-
model RunnerMcpExecutionRequest {
|
|
431
|
-
@minLength(1)
|
|
432
|
-
toolName: string;
|
|
433
|
-
|
|
434
|
-
@doc("Opaque tool arguments validated against the SDK tool schema before execution.")
|
|
435
|
-
arguments?: unknown;
|
|
436
|
-
|
|
437
|
-
@minValue(1)
|
|
438
|
-
@maxValue(3600000)
|
|
439
|
-
timeoutMs: int32 = 30000;
|
|
440
|
-
|
|
441
|
-
confirmation?: RunnerMcpExecutionConfirmationRequest;
|
|
442
|
-
|
|
443
|
-
@minLength(8)
|
|
444
|
-
@maxLength(256)
|
|
445
|
-
idempotencyKey: string;
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
@doc("Asynchronous MCP execution lifecycle.")
|
|
449
|
-
enum RunnerMcpExecutionStatus {
|
|
450
|
-
queued: "queued",
|
|
451
|
-
running: "running",
|
|
452
|
-
cancelling: "cancelling",
|
|
453
|
-
succeeded: "succeeded",
|
|
454
|
-
failed: "failed",
|
|
455
|
-
cancelled: "cancelled",
|
|
456
|
-
timedOut: "timed_out",
|
|
457
|
-
}
|
|
458
|
-
|
|
459
|
-
@doc("Token usage reported or derived for one MCP execution when available.")
|
|
460
|
-
model RunnerMcpExecutionTokenUsage {
|
|
461
|
-
inputTokens?: TokenCount;
|
|
462
|
-
outputTokens?: TokenCount;
|
|
463
|
-
totalTokens?: TokenCount;
|
|
464
|
-
estimated: boolean;
|
|
465
|
-
}
|
|
466
|
-
|
|
467
|
-
@doc("USD cost reported or estimated for one MCP execution when available.")
|
|
468
|
-
model RunnerMcpExecutionCost {
|
|
469
|
-
amountUsd: CostUsd;
|
|
470
|
-
estimated: boolean;
|
|
471
|
-
source?: string;
|
|
472
|
-
}
|
|
473
|
-
|
|
474
|
-
@doc("Qyl observability identifiers correlating workbench, MCP, and downstream activity.")
|
|
475
|
-
model RunnerMcpTelemetryCorrelation {
|
|
476
|
-
executionId?: RunnerMcpExecutionId;
|
|
477
|
-
evaluationRunId?: RunnerMcpEvaluationRunId;
|
|
478
|
-
testCaseId?: RunnerMcpTestCaseId;
|
|
479
|
-
traceIds: TraceId[];
|
|
480
|
-
spanIds: SpanId[];
|
|
481
|
-
}
|
|
482
|
-
|
|
483
|
-
@doc("Persisted asynchronous execution evidence. SDK tool results remain opaque.")
|
|
484
|
-
model RunnerMcpExecutionRecord {
|
|
485
|
-
id: RunnerMcpExecutionId;
|
|
486
|
-
workspaceId: RunnerMcpWorkspaceId;
|
|
487
|
-
serverId: RunnerMcpServerId;
|
|
488
|
-
request: RunnerMcpExecutionRequest;
|
|
489
|
-
|
|
490
|
-
@doc("Server-derived effect from the SDK-validated discovered Tool and its annotations.")
|
|
491
|
-
effect: RunnerMcpExecutionEffect;
|
|
492
|
-
|
|
493
|
-
confirmation?: RunnerMcpExecutionConfirmationEvidence;
|
|
494
|
-
status: RunnerMcpExecutionStatus;
|
|
495
|
-
createdAt: utcDateTime;
|
|
496
|
-
startedAt?: utcDateTime;
|
|
497
|
-
completedAt?: utcDateTime;
|
|
498
|
-
durationMs?: DurationMs;
|
|
499
|
-
|
|
500
|
-
@minValue(0)
|
|
501
|
-
attemptCount: int32;
|
|
502
|
-
|
|
503
|
-
@minValue(0)
|
|
504
|
-
retryCount: int32;
|
|
505
|
-
|
|
506
|
-
cancelRequestedAt?: utcDateTime;
|
|
507
|
-
cancelledAt?: utcDateTime;
|
|
508
|
-
|
|
509
|
-
@doc("Complete opaque SDK tool-call result after output sanitization.")
|
|
510
|
-
result?: unknown;
|
|
511
|
-
|
|
512
|
-
error?: RunnerMcpError;
|
|
513
|
-
tokenUsage?: RunnerMcpExecutionTokenUsage;
|
|
514
|
-
cost?: RunnerMcpExecutionCost;
|
|
515
|
-
telemetry?: RunnerMcpTelemetryCorrelation;
|
|
516
|
-
}
|
|
517
|
-
|
|
518
|
-
@doc("An MCP execution was accepted and continues asynchronously.")
|
|
519
|
-
model RunnerMcpExecutionAccepted {
|
|
520
|
-
@statusCode statusCode: 202;
|
|
521
|
-
execution: RunnerMcpExecutionRecord;
|
|
522
|
-
}
|
|
523
|
-
|
|
524
|
-
@doc("Request to cancel an asynchronous MCP execution where the transport permits cancellation.")
|
|
525
|
-
model RunnerMcpExecutionCancelRequest {
|
|
526
|
-
@maxLength(1000)
|
|
527
|
-
reason?: string;
|
|
528
|
-
|
|
529
|
-
@minLength(8)
|
|
530
|
-
@maxLength(256)
|
|
531
|
-
idempotencyKey: string;
|
|
532
|
-
}
|
|
533
|
-
|
|
534
|
-
@doc("Cursor page of MCP execution records.")
|
|
535
|
-
model RunnerMcpExecutionPage {
|
|
536
|
-
executions: RunnerMcpExecutionRecord[];
|
|
537
|
-
nextCursor?: string;
|
|
538
|
-
}
|
|
539
|
-
|
|
540
|
-
@doc("Whether correlated Qyl observability evidence was available.")
|
|
541
|
-
enum RunnerMcpTelemetryAvailability {
|
|
542
|
-
available: "available",
|
|
543
|
-
partial: "partial",
|
|
544
|
-
unavailable: "unavailable",
|
|
545
|
-
}
|
|
546
|
-
|
|
547
|
-
@doc("Availability and retained item count for one correlated Qyl telemetry signal.")
|
|
548
|
-
model RunnerMcpTelemetrySignalAvailability {
|
|
549
|
-
status: RunnerMcpTelemetryAvailability;
|
|
550
|
-
unavailableReason?: string;
|
|
551
|
-
|
|
552
|
-
@minValue(0)
|
|
553
|
-
itemCount: int32;
|
|
554
|
-
}
|
|
555
|
-
|
|
556
|
-
@doc("Per-signal availability for correlated workbench observability evidence.")
|
|
557
|
-
model RunnerMcpTelemetrySignalSummary {
|
|
558
|
-
traces: RunnerMcpTelemetrySignalAvailability;
|
|
559
|
-
logs: RunnerMcpTelemetrySignalAvailability;
|
|
560
|
-
exceptions: RunnerMcpTelemetrySignalAvailability;
|
|
561
|
-
toolCallEvents: RunnerMcpTelemetrySignalAvailability;
|
|
562
|
-
}
|
|
563
|
-
|
|
564
|
-
@doc("Correlated Qyl observability evidence for one MCP execution. Signals unsupported by the connected Qyl read API are explicitly unavailable.")
|
|
565
|
-
model RunnerMcpExecutionTelemetryResponse {
|
|
566
|
-
signals: RunnerMcpTelemetrySignalSummary;
|
|
567
|
-
correlation: RunnerMcpTelemetryCorrelation;
|
|
568
|
-
traces: Trace[];
|
|
569
|
-
logs: LogRecord[];
|
|
570
|
-
queriedAt: utcDateTime;
|
|
571
|
-
|
|
572
|
-
@doc("Confirms that workbench telemetry querying is excluded from workbench export instrumentation.")
|
|
573
|
-
selfExportSuppressed: true;
|
|
574
|
-
}
|
|
575
|
-
|
|
576
|
-
@doc("Assertion outcome reported by an evaluation.")
|
|
577
|
-
enum RunnerMcpAssertionStatus {
|
|
578
|
-
passed: "passed",
|
|
579
|
-
failed: "failed",
|
|
580
|
-
error: "error",
|
|
581
|
-
skipped: "skipped",
|
|
582
|
-
}
|
|
583
|
-
|
|
584
|
-
@doc("Execution-status assertion for an MCP test case.")
|
|
585
|
-
model RunnerMcpStatusAssertion {
|
|
586
|
-
id: string;
|
|
587
|
-
kind: "status";
|
|
588
|
-
|
|
589
|
-
@minItems(1)
|
|
590
|
-
expected: RunnerMcpExecutionStatus[];
|
|
591
|
-
}
|
|
592
|
-
|
|
593
|
-
@doc("Exact JSON value assertion at an optional JSON Pointer path.")
|
|
594
|
-
model RunnerMcpExactAssertion {
|
|
595
|
-
id: string;
|
|
596
|
-
kind: "exact";
|
|
597
|
-
path?: string;
|
|
598
|
-
expected: unknown;
|
|
599
|
-
}
|
|
600
|
-
|
|
601
|
-
@doc("Partial JSON object or array containment assertion at an optional JSON Pointer path.")
|
|
602
|
-
model RunnerMcpPartialAssertion {
|
|
603
|
-
id: string;
|
|
604
|
-
kind: "partial";
|
|
605
|
-
path?: string;
|
|
606
|
-
expected: unknown;
|
|
607
|
-
}
|
|
608
|
-
|
|
609
|
-
@doc("JSON Schema assertion at an optional JSON Pointer path.")
|
|
610
|
-
model RunnerMcpSchemaAssertion {
|
|
611
|
-
id: string;
|
|
612
|
-
kind: "schema";
|
|
613
|
-
path?: string;
|
|
614
|
-
schema: unknown;
|
|
615
|
-
}
|
|
616
|
-
|
|
617
|
-
@doc("Regular-expression assertion at an optional JSON Pointer path.")
|
|
618
|
-
model RunnerMcpPatternAssertion {
|
|
619
|
-
id: string;
|
|
620
|
-
kind: "pattern";
|
|
621
|
-
path?: string;
|
|
622
|
-
pattern: string;
|
|
623
|
-
flags?: string;
|
|
624
|
-
}
|
|
625
|
-
|
|
626
|
-
@doc("Maximum execution latency assertion.")
|
|
627
|
-
model RunnerMcpLatencyAssertion {
|
|
628
|
-
id: string;
|
|
629
|
-
kind: "latency";
|
|
630
|
-
|
|
631
|
-
@minValue(0)
|
|
632
|
-
maxDurationMs: float64;
|
|
633
|
-
}
|
|
634
|
-
|
|
635
|
-
@doc("Exactly one supported MCP evaluation assertion.")
|
|
636
|
-
@oneOf
|
|
637
|
-
union RunnerMcpTestAssertion {
|
|
638
|
-
status: RunnerMcpStatusAssertion,
|
|
639
|
-
exact: RunnerMcpExactAssertion,
|
|
640
|
-
partial: RunnerMcpPartialAssertion,
|
|
641
|
-
schema: RunnerMcpSchemaAssertion,
|
|
642
|
-
pattern: RunnerMcpPatternAssertion,
|
|
643
|
-
latency: RunnerMcpLatencyAssertion,
|
|
644
|
-
}
|
|
645
|
-
|
|
646
|
-
@doc("Reusable tool invocation and assertions persisted in one workspace.")
|
|
647
|
-
model RunnerMcpTestCase {
|
|
648
|
-
id: RunnerMcpTestCaseId;
|
|
649
|
-
workspaceId: RunnerMcpWorkspaceId;
|
|
650
|
-
serverId: RunnerMcpServerId;
|
|
651
|
-
name: string;
|
|
652
|
-
description?: string;
|
|
653
|
-
toolName: string;
|
|
654
|
-
arguments?: unknown;
|
|
655
|
-
|
|
656
|
-
@minValue(1)
|
|
657
|
-
@maxValue(3600000)
|
|
658
|
-
timeoutMs: int32;
|
|
659
|
-
|
|
660
|
-
assertions: RunnerMcpTestAssertion[];
|
|
661
|
-
tags: string[];
|
|
662
|
-
createdAt: utcDateTime;
|
|
663
|
-
updatedAt: utcDateTime;
|
|
664
|
-
}
|
|
665
|
-
|
|
666
|
-
@doc("Request to create a reusable MCP test case.")
|
|
667
|
-
model RunnerMcpTestCaseCreateRequest {
|
|
668
|
-
serverId: RunnerMcpServerId;
|
|
669
|
-
|
|
670
|
-
@minLength(1)
|
|
671
|
-
@maxLength(160)
|
|
672
|
-
name: string;
|
|
673
|
-
|
|
674
|
-
@maxLength(4000)
|
|
675
|
-
description?: string;
|
|
676
|
-
|
|
677
|
-
@minLength(1)
|
|
678
|
-
toolName: string;
|
|
679
|
-
|
|
680
|
-
arguments?: unknown;
|
|
681
|
-
|
|
682
|
-
@minValue(1)
|
|
683
|
-
@maxValue(3600000)
|
|
684
|
-
timeoutMs: int32 = 30000;
|
|
685
|
-
|
|
686
|
-
@minItems(1)
|
|
687
|
-
assertions: RunnerMcpTestAssertion[];
|
|
688
|
-
|
|
689
|
-
tags?: string[];
|
|
690
|
-
}
|
|
691
|
-
|
|
692
|
-
@doc("Request to update mutable MCP test-case fields.")
|
|
693
|
-
model RunnerMcpTestCaseUpdateRequest {
|
|
694
|
-
serverId?: RunnerMcpServerId;
|
|
695
|
-
|
|
696
|
-
@minLength(1)
|
|
697
|
-
@maxLength(160)
|
|
698
|
-
name?: string;
|
|
699
|
-
|
|
700
|
-
@maxLength(4000)
|
|
701
|
-
description?: string;
|
|
702
|
-
|
|
703
|
-
@minLength(1)
|
|
704
|
-
toolName?: string;
|
|
705
|
-
|
|
706
|
-
arguments?: unknown;
|
|
707
|
-
|
|
708
|
-
@minValue(1)
|
|
709
|
-
@maxValue(3600000)
|
|
710
|
-
timeoutMs?: int32;
|
|
711
|
-
|
|
712
|
-
@minItems(1)
|
|
713
|
-
assertions?: RunnerMcpTestAssertion[];
|
|
714
|
-
|
|
715
|
-
tags?: string[];
|
|
716
|
-
}
|
|
717
|
-
|
|
718
|
-
@doc("Cursor page of reusable MCP test cases.")
|
|
719
|
-
model RunnerMcpTestCasePage {
|
|
720
|
-
testCases: RunnerMcpTestCase[];
|
|
721
|
-
nextCursor?: string;
|
|
722
|
-
}
|
|
723
|
-
|
|
724
|
-
@doc("Reusable ordered group of MCP test cases.")
|
|
725
|
-
model RunnerMcpTestSuite {
|
|
726
|
-
id: RunnerMcpSuiteId;
|
|
727
|
-
workspaceId: RunnerMcpWorkspaceId;
|
|
728
|
-
name: string;
|
|
729
|
-
description?: string;
|
|
730
|
-
|
|
731
|
-
@minItems(1)
|
|
732
|
-
testCaseIds: RunnerMcpTestCaseId[];
|
|
733
|
-
|
|
734
|
-
tags: string[];
|
|
735
|
-
createdAt: utcDateTime;
|
|
736
|
-
updatedAt: utcDateTime;
|
|
737
|
-
}
|
|
738
|
-
|
|
739
|
-
@doc("Request to create a reusable MCP test suite.")
|
|
740
|
-
model RunnerMcpTestSuiteCreateRequest {
|
|
741
|
-
@minLength(1)
|
|
742
|
-
@maxLength(160)
|
|
743
|
-
name: string;
|
|
744
|
-
|
|
745
|
-
@maxLength(4000)
|
|
746
|
-
description?: string;
|
|
747
|
-
|
|
748
|
-
@minItems(1)
|
|
749
|
-
testCaseIds: RunnerMcpTestCaseId[];
|
|
750
|
-
|
|
751
|
-
tags?: string[];
|
|
752
|
-
}
|
|
753
|
-
|
|
754
|
-
@doc("Request to update mutable MCP test-suite fields.")
|
|
755
|
-
model RunnerMcpTestSuiteUpdateRequest {
|
|
756
|
-
@minLength(1)
|
|
757
|
-
@maxLength(160)
|
|
758
|
-
name?: string;
|
|
759
|
-
|
|
760
|
-
@maxLength(4000)
|
|
761
|
-
description?: string;
|
|
762
|
-
|
|
763
|
-
@minItems(1)
|
|
764
|
-
testCaseIds?: RunnerMcpTestCaseId[];
|
|
765
|
-
|
|
766
|
-
tags?: string[];
|
|
767
|
-
}
|
|
768
|
-
|
|
769
|
-
@doc("Cursor page of reusable MCP test suites.")
|
|
770
|
-
model RunnerMcpTestSuitePage {
|
|
771
|
-
suites: RunnerMcpTestSuite[];
|
|
772
|
-
nextCursor?: string;
|
|
773
|
-
}
|
|
774
|
-
|
|
775
|
-
@doc("Request to execute one test case or suite asynchronously.")
|
|
776
|
-
model RunnerMcpEvaluationRunRequest {
|
|
777
|
-
@minLength(8)
|
|
778
|
-
@maxLength(256)
|
|
779
|
-
idempotencyKey: string;
|
|
780
|
-
|
|
781
|
-
confirmation?: RunnerMcpExecutionConfirmationRequest;
|
|
782
|
-
|
|
783
|
-
@minValue(1)
|
|
784
|
-
@maxValue(50)
|
|
785
|
-
concurrency?: int32 = 1;
|
|
786
|
-
|
|
787
|
-
failFast?: boolean = false;
|
|
788
|
-
}
|
|
789
|
-
|
|
790
|
-
@doc("Request to run one persisted MCP test case asynchronously.")
|
|
791
|
-
model RunnerMcpTestCaseRunRequest extends RunnerMcpEvaluationRunRequest {}
|
|
792
|
-
|
|
793
|
-
@doc("Request to run a complete suite or an explicit subset of its persisted test cases asynchronously.")
|
|
794
|
-
model RunnerMcpSuiteRunRequest extends RunnerMcpEvaluationRunRequest {
|
|
795
|
-
@minItems(1)
|
|
796
|
-
selectedTestCaseIds?: RunnerMcpTestCaseId[];
|
|
797
|
-
}
|
|
798
|
-
|
|
799
|
-
@doc("Lifecycle for an MCP evaluation run.")
|
|
800
|
-
enum RunnerMcpEvaluationRunStatus {
|
|
801
|
-
queued: "queued",
|
|
802
|
-
running: "running",
|
|
803
|
-
completed: "completed",
|
|
804
|
-
failed: "failed",
|
|
805
|
-
cancelled: "cancelled",
|
|
806
|
-
}
|
|
807
|
-
|
|
808
|
-
@doc("Outcome for one test case within an evaluation run.")
|
|
809
|
-
enum RunnerMcpEvaluationResultStatus {
|
|
810
|
-
passed: "passed",
|
|
811
|
-
failed: "failed",
|
|
812
|
-
error: "error",
|
|
813
|
-
skipped: "skipped",
|
|
814
|
-
}
|
|
815
|
-
|
|
816
|
-
@doc("Outcome of one assertion with sanitized actual evidence when useful.")
|
|
817
|
-
model RunnerMcpAssertionResult {
|
|
818
|
-
assertionId: string;
|
|
819
|
-
kind: string;
|
|
820
|
-
status: RunnerMcpAssertionStatus;
|
|
821
|
-
message?: string;
|
|
822
|
-
actual?: unknown;
|
|
823
|
-
}
|
|
824
|
-
|
|
825
|
-
@doc("Immutable reusable-test definition captured when an evaluation run starts.")
|
|
826
|
-
model RunnerMcpEvaluationTestCaseSnapshot {
|
|
827
|
-
id: RunnerMcpTestCaseId;
|
|
828
|
-
serverId: RunnerMcpServerId;
|
|
829
|
-
name: string;
|
|
830
|
-
description?: string;
|
|
831
|
-
toolName: string;
|
|
832
|
-
arguments?: unknown;
|
|
833
|
-
timeoutMs: int32;
|
|
834
|
-
assertions: RunnerMcpTestAssertion[];
|
|
835
|
-
tags: string[];
|
|
836
|
-
}
|
|
837
|
-
|
|
838
|
-
@doc("Immutable suite definition captured when an evaluation run starts.")
|
|
839
|
-
model RunnerMcpEvaluationSuiteSnapshot {
|
|
840
|
-
id: RunnerMcpSuiteId;
|
|
841
|
-
name: string;
|
|
842
|
-
description?: string;
|
|
843
|
-
testCaseIds: RunnerMcpTestCaseId[];
|
|
844
|
-
tags: string[];
|
|
845
|
-
}
|
|
846
|
-
|
|
847
|
-
@doc("One test-case result retained by an MCP evaluation run.")
|
|
848
|
-
model RunnerMcpEvaluationTestResult {
|
|
849
|
-
testCase: RunnerMcpEvaluationTestCaseSnapshot;
|
|
850
|
-
executionId?: RunnerMcpExecutionId;
|
|
851
|
-
status: RunnerMcpEvaluationResultStatus;
|
|
852
|
-
startedAt?: utcDateTime;
|
|
853
|
-
completedAt?: utcDateTime;
|
|
854
|
-
durationMs?: DurationMs;
|
|
855
|
-
assertions: RunnerMcpAssertionResult[];
|
|
856
|
-
error?: RunnerMcpError;
|
|
857
|
-
}
|
|
858
|
-
|
|
859
|
-
@doc("Aggregate correctness, reliability, latency, usage, and cost for an MCP evaluation run.")
|
|
860
|
-
model RunnerMcpEvaluationSummary {
|
|
861
|
-
@minValue(0)
|
|
862
|
-
total: int32;
|
|
863
|
-
|
|
864
|
-
@minValue(0)
|
|
865
|
-
passed: int32;
|
|
866
|
-
|
|
867
|
-
@minValue(0)
|
|
868
|
-
failed: int32;
|
|
869
|
-
|
|
870
|
-
@minValue(0)
|
|
871
|
-
errors: int32;
|
|
872
|
-
|
|
873
|
-
@minValue(0)
|
|
874
|
-
skipped: int32;
|
|
875
|
-
|
|
876
|
-
successRate: Ratio;
|
|
877
|
-
reliability: Ratio;
|
|
878
|
-
meanDurationMs?: DurationMs;
|
|
879
|
-
p50DurationMs?: DurationMs;
|
|
880
|
-
p95DurationMs?: DurationMs;
|
|
881
|
-
p99DurationMs?: DurationMs;
|
|
882
|
-
tokenUsage?: RunnerMcpExecutionTokenUsage;
|
|
883
|
-
cost?: RunnerMcpExecutionCost;
|
|
884
|
-
}
|
|
885
|
-
|
|
886
|
-
@doc("Asynchronous MCP evaluation run with retained per-test evidence.")
|
|
887
|
-
model RunnerMcpEvaluationRun {
|
|
888
|
-
id: RunnerMcpEvaluationRunId;
|
|
889
|
-
workspaceId: RunnerMcpWorkspaceId;
|
|
890
|
-
suite?: RunnerMcpEvaluationSuiteSnapshot;
|
|
891
|
-
testCases: RunnerMcpEvaluationTestCaseSnapshot[];
|
|
892
|
-
status: RunnerMcpEvaluationRunStatus;
|
|
893
|
-
createdAt: utcDateTime;
|
|
894
|
-
startedAt?: utcDateTime;
|
|
895
|
-
completedAt?: utcDateTime;
|
|
896
|
-
results: RunnerMcpEvaluationTestResult[];
|
|
897
|
-
summary?: RunnerMcpEvaluationSummary;
|
|
898
|
-
confirmation?: RunnerMcpExecutionConfirmationEvidence;
|
|
899
|
-
telemetry?: RunnerMcpTelemetryCorrelation;
|
|
900
|
-
error?: RunnerMcpError;
|
|
901
|
-
}
|
|
902
|
-
|
|
903
|
-
@doc("An MCP evaluation run was accepted and continues asynchronously.")
|
|
904
|
-
model RunnerMcpEvaluationRunAccepted {
|
|
905
|
-
@statusCode statusCode: 202;
|
|
906
|
-
run: RunnerMcpEvaluationRun;
|
|
907
|
-
}
|
|
908
|
-
|
|
909
|
-
@doc("Cursor page of MCP evaluation runs.")
|
|
910
|
-
model RunnerMcpEvaluationRunPage {
|
|
911
|
-
runs: RunnerMcpEvaluationRun[];
|
|
912
|
-
nextCursor?: string;
|
|
913
|
-
}
|
|
914
|
-
|
|
915
|
-
@doc("Request to compare a baseline MCP evaluation run with a candidate run.")
|
|
916
|
-
model RunnerMcpEvaluationComparisonRequest {
|
|
917
|
-
baselineRunId: RunnerMcpEvaluationRunId;
|
|
918
|
-
candidateRunId: RunnerMcpEvaluationRunId;
|
|
919
|
-
}
|
|
920
|
-
|
|
921
|
-
@doc("Regression classification for one test case across two evaluation runs.")
|
|
922
|
-
enum RunnerMcpRegressionStatus {
|
|
923
|
-
improved: "improved",
|
|
924
|
-
regressed: "regressed",
|
|
925
|
-
unchanged: "unchanged",
|
|
926
|
-
added: "added",
|
|
927
|
-
removed: "removed",
|
|
928
|
-
}
|
|
929
|
-
|
|
930
|
-
@doc("Per-test comparison across a baseline and candidate MCP evaluation run.")
|
|
931
|
-
model RunnerMcpEvaluationTestComparison {
|
|
932
|
-
testCaseId: RunnerMcpTestCaseId;
|
|
933
|
-
status: RunnerMcpRegressionStatus;
|
|
934
|
-
baselineStatus?: RunnerMcpEvaluationResultStatus;
|
|
935
|
-
candidateStatus?: RunnerMcpEvaluationResultStatus;
|
|
936
|
-
durationDeltaMs?: float64;
|
|
937
|
-
}
|
|
938
|
-
|
|
939
|
-
@doc("Aggregate comparison of two completed MCP evaluation runs.")
|
|
940
|
-
model RunnerMcpEvaluationRunComparison {
|
|
941
|
-
baselineRunId: RunnerMcpEvaluationRunId;
|
|
942
|
-
candidateRunId: RunnerMcpEvaluationRunId;
|
|
943
|
-
baseline: RunnerMcpEvaluationSummary;
|
|
944
|
-
candidate: RunnerMcpEvaluationSummary;
|
|
945
|
-
successRateDelta: float64;
|
|
946
|
-
reliabilityDelta: float64;
|
|
947
|
-
p95DurationDeltaMs?: float64;
|
|
948
|
-
tokenDelta?: int64;
|
|
949
|
-
costDeltaUsd?: float64;
|
|
950
|
-
tests: RunnerMcpEvaluationTestComparison[];
|
|
951
|
-
comparedAt: utcDateTime;
|
|
952
|
-
}
|
|
953
|
-
|
|
954
|
-
@doc("Supported evaluation export representation.")
|
|
955
|
-
enum RunnerMcpEvaluationExportFormat {
|
|
956
|
-
json: "json",
|
|
957
|
-
report: "report",
|
|
958
|
-
}
|
|
959
|
-
|
|
960
|
-
@doc("Request to generate a machine-readable or readable evaluation export.")
|
|
961
|
-
model RunnerMcpEvaluationExportRequest {
|
|
962
|
-
format: RunnerMcpEvaluationExportFormat;
|
|
963
|
-
includeProtocolEvents?: boolean = true;
|
|
964
|
-
includeTelemetry?: boolean = true;
|
|
965
|
-
|
|
966
|
-
@minLength(8)
|
|
967
|
-
@maxLength(256)
|
|
968
|
-
idempotencyKey: string;
|
|
969
|
-
}
|
|
970
|
-
|
|
971
|
-
@doc("Lifecycle for generation of an evaluation export artifact.")
|
|
972
|
-
enum RunnerMcpEvaluationExportStatus {
|
|
973
|
-
pending: "pending",
|
|
974
|
-
ready: "ready",
|
|
975
|
-
failed: "failed",
|
|
976
|
-
}
|
|
977
|
-
|
|
978
|
-
@doc("Metadata for one generated evaluation JSON or readable report artifact.")
|
|
979
|
-
model RunnerMcpEvaluationExport {
|
|
980
|
-
id: RunnerMcpEvaluationExportId;
|
|
981
|
-
runId: RunnerMcpEvaluationRunId;
|
|
982
|
-
format: RunnerMcpEvaluationExportFormat;
|
|
983
|
-
status: RunnerMcpEvaluationExportStatus;
|
|
984
|
-
requestedAt: utcDateTime;
|
|
985
|
-
completedAt?: utcDateTime;
|
|
986
|
-
mediaType?: string;
|
|
987
|
-
fileName?: string;
|
|
988
|
-
byteSize?: ByteSize;
|
|
989
|
-
sha256?: Sha256Hash;
|
|
990
|
-
error?: RunnerMcpError;
|
|
991
|
-
}
|
|
992
|
-
|
|
993
|
-
@doc("Machine-readable evaluation export with retained execution, protocol, and optional telemetry evidence.")
|
|
994
|
-
model RunnerMcpEvaluationJsonExportPayload {
|
|
995
|
-
format: "json";
|
|
996
|
-
run: RunnerMcpEvaluationRun;
|
|
997
|
-
protocolEvents: RunnerMcpProtocolEvent[];
|
|
998
|
-
telemetry: RunnerMcpExecutionTelemetryResponse[];
|
|
999
|
-
exportedAt: utcDateTime;
|
|
1000
|
-
}
|
|
1001
|
-
|
|
1002
|
-
@doc("Human-readable Markdown evaluation report.")
|
|
1003
|
-
model RunnerMcpEvaluationReportExportPayload {
|
|
1004
|
-
format: "report";
|
|
1005
|
-
markdown: string;
|
|
1006
|
-
exportedAt: utcDateTime;
|
|
1007
|
-
}
|
|
1008
|
-
|
|
1009
|
-
@doc("Exactly one generated evaluation export representation.")
|
|
1010
|
-
@oneOf
|
|
1011
|
-
union RunnerMcpEvaluationExportPayload {
|
|
1012
|
-
json: RunnerMcpEvaluationJsonExportPayload,
|
|
1013
|
-
report: RunnerMcpEvaluationReportExportPayload,
|
|
1014
|
-
}
|
|
1015
|
-
|
|
1016
|
-
@doc("Ready evaluation export metadata and its TypeSpec-owned content.")
|
|
1017
|
-
model RunnerMcpEvaluationExportArtifact {
|
|
1018
|
-
export: RunnerMcpEvaluationExport;
|
|
1019
|
-
payload: RunnerMcpEvaluationExportPayload;
|
|
1020
|
-
}
|
|
1021
|
-
|
|
1022
|
-
@doc("An evaluation export was accepted and continues asynchronously.")
|
|
1023
|
-
model RunnerMcpEvaluationExportAccepted {
|
|
1024
|
-
@statusCode statusCode: 202;
|
|
1025
|
-
export: RunnerMcpEvaluationExport;
|
|
1026
|
-
}
|
|
1027
|
-
|
|
1028
|
-
@doc("Successful deletion with no response body.")
|
|
1029
|
-
model RunnerMcpDeleted {
|
|
1030
|
-
@statusCode statusCode: 204;
|
|
1031
|
-
}
|