@gleanwork/mcp-server-tester 2.0.0-beta.4 → 2.0.0-beta.5

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.
@@ -1038,6 +1038,9 @@ interface LLMToolCall {
1038
1038
  server?: string;
1039
1039
  /** Original provider-encoded name, retained for diagnostics. */
1040
1040
  rawName?: string;
1041
+ durationMs?: number;
1042
+ startedAt?: string;
1043
+ completedAt?: string;
1041
1044
  /** Tool name */
1042
1045
  name: string;
1043
1046
  /** Tool arguments (as provided by LLM) */
@@ -1114,11 +1117,77 @@ interface MCPHostSimulator {
1114
1117
  signal?: AbortSignal): Promise<MCPHostSimulationResult>;
1115
1118
  }
1116
1119
 
1120
+ declare const CodexSetupConfigSchema: z.ZodObject<{
1121
+ configPath: z.ZodOptional<z.ZodString>;
1122
+ configName: z.ZodOptional<z.ZodString>;
1123
+ servers: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1124
+ transport: z.ZodLiteral<"stdio">;
1125
+ label: z.ZodString;
1126
+ command: z.ZodString;
1127
+ args: z.ZodOptional<z.ZodArray<z.ZodString>>;
1128
+ cwd: z.ZodOptional<z.ZodString>;
1129
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1130
+ }, z.core.$strict>, z.ZodObject<{
1131
+ transport: z.ZodLiteral<"http">;
1132
+ label: z.ZodString;
1133
+ url: z.ZodString;
1134
+ bearerTokenEnvVar: z.ZodOptional<z.ZodString>;
1135
+ }, z.core.$strict>], "transport">>>;
1136
+ configs: z.ZodOptional<z.ZodArray<z.ZodObject<{
1137
+ name: z.ZodString;
1138
+ servers: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1139
+ transport: z.ZodLiteral<"stdio">;
1140
+ label: z.ZodString;
1141
+ command: z.ZodString;
1142
+ args: z.ZodOptional<z.ZodArray<z.ZodString>>;
1143
+ cwd: z.ZodOptional<z.ZodString>;
1144
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1145
+ }, z.core.$strict>, z.ZodObject<{
1146
+ transport: z.ZodLiteral<"http">;
1147
+ label: z.ZodString;
1148
+ url: z.ZodString;
1149
+ bearerTokenEnvVar: z.ZodOptional<z.ZodString>;
1150
+ }, z.core.$strict>], "transport">>;
1151
+ }, z.core.$strict>>>;
1152
+ }, z.core.$strict>;
1153
+ type CodexSetupConfig = z.infer<typeof CodexSetupConfigSchema>;
1154
+
1155
+ declare const COMPUTER_USE_TOKEN_FIELDS: readonly ["input_tokens", "output_tokens", "cache_creation_input_tokens", "cache_read_input_tokens"];
1156
+ type ComputerUseTokenField = (typeof COMPUTER_USE_TOKEN_FIELDS)[number];
1157
+ /** Usage totals cover only observed fields on completed planner responses. */
1158
+ interface ComputerUseTelemetry {
1159
+ accounting: 'complete' | 'partial';
1160
+ response_models: string[];
1161
+ planner_response_count: number;
1162
+ usage: Partial<Record<ComputerUseTokenField, number>>;
1163
+ usage_observation_counts: Record<ComputerUseTokenField, number>;
1164
+ duration_ms: number;
1165
+ action_count: number;
1166
+ attempted_action_count: number;
1167
+ executed_action_count: number;
1168
+ refused_action_count: number;
1169
+ cost: {
1170
+ status: 'unavailable';
1171
+ };
1172
+ }
1173
+ interface SemanticDesktopTelemetry {
1174
+ driver: 'linux-desktop';
1175
+ accounting: 'complete' | 'partial';
1176
+ duration_ms: number;
1177
+ action_count: number;
1178
+ planner: {
1179
+ status: 'not-applicable';
1180
+ };
1181
+ cost: {
1182
+ status: 'not-applicable';
1183
+ };
1184
+ }
1185
+
1117
1186
  type ExternalHostType = 'cli' | 'browser' | 'desktop' | 'custom';
1118
1187
  type HostCapability = 'control' | 'input' | 'completion' | 'trace' | 'normalize';
1119
1188
  type TraceSource = 'mcp-proxy' | 'mcp-server-logs' | 'host-local-transcript' | 'host-native-export' | 'browser-api' | 'accessibility' | 'dom' | 'screenshot' | 'stdout' | 'manual-import' | 'none';
1120
1189
  type ObservationConfidence = 'high' | 'medium' | 'low' | 'unknown';
1121
- type ExternalHostCorrelationStrategy = 'prompt_marker' | 'host_session_metadata' | 'none';
1190
+ type ExternalHostCorrelationStrategy = 'exact_prompt' | 'prompt_marker' | 'host_session_metadata' | 'none';
1122
1191
  interface HostDriverId {
1123
1192
  provider: string;
1124
1193
  product: string;
@@ -1128,7 +1197,7 @@ interface HostDriverId {
1128
1197
  channel?: string;
1129
1198
  }
1130
1199
  type HostDriverConfig = HostDriverId | string;
1131
- type ExternalHostFailureKind = 'app_unavailable' | 'automation_permission_denied' | 'submission_failed' | 'no_matching_session' | 'ambiguous_matching_sessions' | 'timeout' | 'parse_failure' | 'host_run_failed' | 'unsupported_host' | 'unknown';
1200
+ type ExternalHostFailureKind = 'app_unavailable' | 'automation_permission_denied' | 'submission_failed' | 'no_matching_session' | 'ambiguous_matching_sessions' | 'timeout' | 'parse_failure' | 'host_run_failed' | 'cleanup_failed' | 'unsupported_host' | 'unknown';
1132
1201
  interface HostArtifact {
1133
1202
  kind: 'stdout' | 'stderr' | 'log' | 'transcript' | 'audit' | 'metadata' | 'screenshot' | 'video' | 'har' | 'trace';
1134
1203
  name: string;
@@ -1136,10 +1205,52 @@ interface HostArtifact {
1136
1205
  contentType?: string;
1137
1206
  summary?: string;
1138
1207
  }
1208
+ interface ExternalHostTelemetry {
1209
+ resultCount?: number;
1210
+ apiCallCount?: number;
1211
+ models?: string[];
1212
+ inputTokens?: number;
1213
+ outputTokens?: number;
1214
+ cacheReadInputTokens?: number;
1215
+ cacheCreationInputTokens?: number;
1216
+ totalCostUsd?: number;
1217
+ durationMs?: number;
1218
+ durationApiMs?: number;
1219
+ toolCallCount?: number;
1220
+ toolErrorCount?: number;
1221
+ mcpToolCallCount?: number;
1222
+ mcpToolErrorCount?: number;
1223
+ hostToolCallCount?: number;
1224
+ hostToolErrorCount?: number;
1225
+ hostToolDurationMs?: number;
1226
+ /** Wall-clock union of all native tool intervals, including built-in host tools. */
1227
+ toolWallDurationMs?: number;
1228
+ /** Original native identities, independent of framework event source normalization. */
1229
+ toolProvenance?: Array<{
1230
+ id?: string;
1231
+ source: 'mcp' | 'host';
1232
+ nativeServer?: string;
1233
+ nativeTool: string;
1234
+ nativeItemType?: string;
1235
+ /** Native call has no recorded output yet. */
1236
+ pending?: boolean;
1237
+ /** Referenced inside a code-mode `exec` runner; no own arguments or timing. */
1238
+ viaCodeMode?: boolean;
1239
+ }>;
1240
+ /** The turn did not complete; calls and usage cover only what was recorded. */
1241
+ partial?: boolean;
1242
+ reasoningOutputTokens?: number;
1243
+ reasoningEffort?: string;
1244
+ timeToFirstTokenMs?: number;
1245
+ /** Wall-clock union of MCP call intervals; excludes overlap. */
1246
+ mcpWallDurationMs?: number;
1247
+ }
1139
1248
  interface ExternalHostSession {
1140
1249
  id?: string;
1141
- runMarker: string;
1250
+ /** Absent when no marker was sent to the native host. */
1251
+ runMarker?: string;
1142
1252
  requestId?: string;
1253
+ turnId?: string;
1143
1254
  cliSessionId?: string;
1144
1255
  cwd?: string;
1145
1256
  startedAt?: string;
@@ -1149,6 +1260,7 @@ interface ExternalHostCorrelationConfig {
1149
1260
  /**
1150
1261
  * How this run should be correlated with host-native evidence.
1151
1262
  *
1263
+ * - exact_prompt: match unchanged user text in a fresh native session.
1152
1264
  * - prompt_marker: append a marker to the submitted prompt.
1153
1265
  * - host_session_metadata: rely on host-native session metadata.
1154
1266
  * - none: no host-visible marker is submitted.
@@ -1166,8 +1278,15 @@ interface ExternalHostCorrelationConfig {
1166
1278
  }
1167
1279
  interface ExternalHostCorrelationMetadata {
1168
1280
  strategy: ExternalHostCorrelationStrategy;
1281
+ /** Internal run identifier; not sent to the host unless includedInPrompt is true. */
1169
1282
  marker: string;
1170
1283
  includedInPrompt: boolean;
1284
+ /** SHA-256 of the exact submitted UTF-8 prompt, where supported. */
1285
+ promptSha256?: string;
1286
+ promptUnchanged?: boolean;
1287
+ /** Native user text: literal match, or the app's single appended LF. */
1288
+ nativePromptMatch?: 'exact' | 'native_terminal_lf' | 'native_markdown_escaped';
1289
+ nativePromptSha256?: string;
1171
1290
  }
1172
1291
  interface ExternalHostMetadata {
1173
1292
  driver: HostDriverId;
@@ -1190,6 +1309,26 @@ interface ExternalHostMetadata {
1190
1309
  usage?: TraceSource;
1191
1310
  cost?: TraceSource;
1192
1311
  };
1312
+ telemetry?: ExternalHostTelemetry;
1313
+ /** Controller API accounting is separate from the evaluated application's usage. */
1314
+ computerUse?: {
1315
+ provider: 'anthropic-computer-use';
1316
+ submission: {
1317
+ status: 'completed' | 'failed';
1318
+ telemetry?: ComputerUseTelemetry;
1319
+ };
1320
+ };
1321
+ /** Deterministic native UI accounting; never reported as planner/model usage. */
1322
+ nativeController?: {
1323
+ provider: 'linux-atspi';
1324
+ surface: 'chatgpt-work' | 'codex';
1325
+ submission: {
1326
+ status: 'completed' | 'failed';
1327
+ telemetry?: SemanticDesktopTelemetry;
1328
+ /** Failure-only sanitized UI state: surface, counts, and text hash. Never text. */
1329
+ draftState?: Record<string, string | number | boolean>;
1330
+ };
1331
+ };
1193
1332
  evidence?: {
1194
1333
  finalAnswer?: EvidenceSource;
1195
1334
  toolCalls?: EvidenceSource;
@@ -1219,6 +1358,9 @@ interface ExternalHostConfig {
1219
1358
  * End-to-end timeout for the host run.
1220
1359
  */
1221
1360
  timeoutMs?: number;
1361
+ /** Requested ChatGPT model ID (verified against the native turn record). */
1362
+ model?: string;
1363
+ reasoningEffort?: 'low' | 'medium' | 'high' | 'xhigh' | 'max' | 'ultra';
1222
1364
  /**
1223
1365
  * Capability bindings used to compose this external host runner.
1224
1366
  * If omitted, the runtime may provide a built-in default for known drivers.
@@ -1228,6 +1370,10 @@ interface ExternalHostConfig {
1228
1370
  * Run correlation strategy. Built-in drivers may provide defaults.
1229
1371
  */
1230
1372
  correlation?: ExternalHostCorrelationConfig;
1373
+ /**
1374
+ * Optional managed MCP configuration lifecycle for the ChatGPT desktop driver.
1375
+ */
1376
+ codexSetup?: CodexSetupConfig;
1231
1377
  /**
1232
1378
  * Driver-wide options available to capability implementations.
1233
1379
  */
@@ -1260,6 +1406,9 @@ interface ExternalHostRunFailure {
1260
1406
  success: false;
1261
1407
  error: string;
1262
1408
  toolCalls: LLMToolCall[];
1409
+ /** Partial native evidence from a bound turn that did not complete. */
1410
+ conversationHistory?: MCPHostSimulationResult['conversationHistory'];
1411
+ usage?: UsageMetrics;
1263
1412
  externalHost: ExternalHostMetadata;
1264
1413
  }
1265
1414
  type ExternalHostRunResult = ExternalHostRunSuccess | ExternalHostRunFailure;
@@ -1299,6 +1448,7 @@ interface ExternalHostCapabilityImplementation {
1299
1448
  capabilities: HostCapability[];
1300
1449
  setup?(context: ExternalHostCapabilityContext): Promise<ExternalHostRunResult | void>;
1301
1450
  run?(context: ExternalHostCapabilityContext): Promise<ExternalHostRunResult | void>;
1451
+ teardown?(context: ExternalHostCapabilityContext): Promise<void>;
1302
1452
  }
1303
1453
  interface EvidenceSource {
1304
1454
  source: TraceSource;
@@ -1343,7 +1493,9 @@ interface UsageMetrics {
1343
1493
  /**
1344
1494
  * Total cost in USD
1345
1495
  */
1346
- totalCostUsd: number;
1496
+ totalCostUsd?: number;
1497
+ /** Reasoning tokens, already included in outputTokens. */
1498
+ reasoningOutputTokens?: number;
1347
1499
  /**
1348
1500
  * Execution duration in milliseconds
1349
1501
  */
@@ -1835,6 +1987,15 @@ declare const EvalCaseSchema: z.ZodObject<{
1835
1987
  }>>;
1836
1988
  variant: z.ZodOptional<z.ZodString>;
1837
1989
  timeoutMs: z.ZodOptional<z.ZodNumber>;
1990
+ model: z.ZodOptional<z.ZodString>;
1991
+ reasoningEffort: z.ZodOptional<z.ZodEnum<{
1992
+ low: "low";
1993
+ medium: "medium";
1994
+ high: "high";
1995
+ xhigh: "xhigh";
1996
+ max: "max";
1997
+ ultra: "ultra";
1998
+ }>>;
1838
1999
  capabilities: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
1839
2000
  input: "input";
1840
2001
  normalize: "normalize";
@@ -1865,12 +2026,46 @@ declare const EvalCaseSchema: z.ZodObject<{
1865
2026
  correlation: z.ZodOptional<z.ZodObject<{
1866
2027
  strategy: z.ZodOptional<z.ZodEnum<{
1867
2028
  none: "none";
2029
+ exact_prompt: "exact_prompt";
1868
2030
  prompt_marker: "prompt_marker";
1869
2031
  host_session_metadata: "host_session_metadata";
1870
2032
  }>>;
1871
2033
  includeInPrompt: z.ZodOptional<z.ZodBoolean>;
1872
2034
  promptTemplate: z.ZodOptional<z.ZodString>;
1873
2035
  }, z.core.$strip>>;
2036
+ codexSetup: z.ZodOptional<z.ZodObject<{
2037
+ configPath: z.ZodOptional<z.ZodString>;
2038
+ configName: z.ZodOptional<z.ZodString>;
2039
+ servers: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
2040
+ transport: z.ZodLiteral<"stdio">;
2041
+ label: z.ZodString;
2042
+ command: z.ZodString;
2043
+ args: z.ZodOptional<z.ZodArray<z.ZodString>>;
2044
+ cwd: z.ZodOptional<z.ZodString>;
2045
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
2046
+ }, z.core.$strict>, z.ZodObject<{
2047
+ transport: z.ZodLiteral<"http">;
2048
+ label: z.ZodString;
2049
+ url: z.ZodString;
2050
+ bearerTokenEnvVar: z.ZodOptional<z.ZodString>;
2051
+ }, z.core.$strict>], "transport">>>;
2052
+ configs: z.ZodOptional<z.ZodArray<z.ZodObject<{
2053
+ name: z.ZodString;
2054
+ servers: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
2055
+ transport: z.ZodLiteral<"stdio">;
2056
+ label: z.ZodString;
2057
+ command: z.ZodString;
2058
+ args: z.ZodOptional<z.ZodArray<z.ZodString>>;
2059
+ cwd: z.ZodOptional<z.ZodString>;
2060
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
2061
+ }, z.core.$strict>, z.ZodObject<{
2062
+ transport: z.ZodLiteral<"http">;
2063
+ label: z.ZodString;
2064
+ url: z.ZodString;
2065
+ bearerTokenEnvVar: z.ZodOptional<z.ZodString>;
2066
+ }, z.core.$strict>], "transport">>;
2067
+ }, z.core.$strict>>>;
2068
+ }, z.core.$strict>>;
1874
2069
  options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1875
2070
  }, z.core.$strip>>;
1876
2071
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
@@ -2152,6 +2347,15 @@ declare const EvalDatasetSchema: z.ZodObject<{
2152
2347
  }>>;
2153
2348
  variant: z.ZodOptional<z.ZodString>;
2154
2349
  timeoutMs: z.ZodOptional<z.ZodNumber>;
2350
+ model: z.ZodOptional<z.ZodString>;
2351
+ reasoningEffort: z.ZodOptional<z.ZodEnum<{
2352
+ low: "low";
2353
+ medium: "medium";
2354
+ high: "high";
2355
+ xhigh: "xhigh";
2356
+ max: "max";
2357
+ ultra: "ultra";
2358
+ }>>;
2155
2359
  capabilities: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
2156
2360
  input: "input";
2157
2361
  normalize: "normalize";
@@ -2182,12 +2386,46 @@ declare const EvalDatasetSchema: z.ZodObject<{
2182
2386
  correlation: z.ZodOptional<z.ZodObject<{
2183
2387
  strategy: z.ZodOptional<z.ZodEnum<{
2184
2388
  none: "none";
2389
+ exact_prompt: "exact_prompt";
2185
2390
  prompt_marker: "prompt_marker";
2186
2391
  host_session_metadata: "host_session_metadata";
2187
2392
  }>>;
2188
2393
  includeInPrompt: z.ZodOptional<z.ZodBoolean>;
2189
2394
  promptTemplate: z.ZodOptional<z.ZodString>;
2190
2395
  }, z.core.$strip>>;
2396
+ codexSetup: z.ZodOptional<z.ZodObject<{
2397
+ configPath: z.ZodOptional<z.ZodString>;
2398
+ configName: z.ZodOptional<z.ZodString>;
2399
+ servers: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
2400
+ transport: z.ZodLiteral<"stdio">;
2401
+ label: z.ZodString;
2402
+ command: z.ZodString;
2403
+ args: z.ZodOptional<z.ZodArray<z.ZodString>>;
2404
+ cwd: z.ZodOptional<z.ZodString>;
2405
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
2406
+ }, z.core.$strict>, z.ZodObject<{
2407
+ transport: z.ZodLiteral<"http">;
2408
+ label: z.ZodString;
2409
+ url: z.ZodString;
2410
+ bearerTokenEnvVar: z.ZodOptional<z.ZodString>;
2411
+ }, z.core.$strict>], "transport">>>;
2412
+ configs: z.ZodOptional<z.ZodArray<z.ZodObject<{
2413
+ name: z.ZodString;
2414
+ servers: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
2415
+ transport: z.ZodLiteral<"stdio">;
2416
+ label: z.ZodString;
2417
+ command: z.ZodString;
2418
+ args: z.ZodOptional<z.ZodArray<z.ZodString>>;
2419
+ cwd: z.ZodOptional<z.ZodString>;
2420
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
2421
+ }, z.core.$strict>, z.ZodObject<{
2422
+ transport: z.ZodLiteral<"http">;
2423
+ label: z.ZodString;
2424
+ url: z.ZodString;
2425
+ bearerTokenEnvVar: z.ZodOptional<z.ZodString>;
2426
+ }, z.core.$strict>], "transport">>;
2427
+ }, z.core.$strict>>>;
2428
+ }, z.core.$strict>>;
2191
2429
  options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2192
2430
  }, z.core.$strip>>;
2193
2431
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
@@ -3361,6 +3599,9 @@ interface HostEvent {
3361
3599
  isError?: boolean;
3362
3600
  rawName?: string;
3363
3601
  id?: string;
3602
+ durationMs?: number;
3603
+ startedAt?: string;
3604
+ completedAt?: string;
3364
3605
  }
3365
3606
  /** One execution trace. Hosts never return evaluation verdicts. */
3366
3607
  interface HostRunResult {