@zhivex-ai/core 1.9.1 → 1.11.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.
@@ -0,0 +1,505 @@
1
+ import { ValidationError } from "./errors.js";
2
+ import { createRedactionPolicy } from "./safety-policy.js";
3
+ export const PROVIDER_CONFORMANCE_REPORT_SCHEMA_VERSION = 1;
4
+ export const PROVIDER_CONFORMANCE_STATUSES = [
5
+ "implemented",
6
+ "offline_passed",
7
+ "installed_passed",
8
+ "live_passed",
9
+ "skipped_missing_credentials",
10
+ "failed",
11
+ "stale"
12
+ ];
13
+ export const PROVIDER_CONFORMANCE_EVIDENCE_LEVELS = [
14
+ "declared",
15
+ "offline",
16
+ "installed",
17
+ "live"
18
+ ];
19
+ const statusSet = new Set(PROVIDER_CONFORMANCE_STATUSES);
20
+ const evidenceSet = new Set(PROVIDER_CONFORMANCE_EVIDENCE_LEVELS);
21
+ const passingStatusByEvidence = {
22
+ declared: "implemented",
23
+ offline: "offline_passed",
24
+ installed: "installed_passed",
25
+ live: "live_passed"
26
+ };
27
+ const isRecord = (value) => Boolean(value) && typeof value === "object" && !Array.isArray(value);
28
+ const requireRecord = (value, path) => {
29
+ if (!isRecord(value)) {
30
+ throw new ValidationError(`${path} must be an object.`);
31
+ }
32
+ return value;
33
+ };
34
+ const requireString = (value, path) => {
35
+ if (typeof value !== "string" || value.trim().length === 0) {
36
+ throw new ValidationError(`${path} must be a non-empty string.`);
37
+ }
38
+ return value.trim();
39
+ };
40
+ const optionalString = (value, path) => value === undefined ? undefined : requireString(value, path);
41
+ const requireLogicalEndpoint = (value, path) => {
42
+ const endpoint = requireString(value, path);
43
+ if (endpoint.includes("://") || endpoint.includes("@") || endpoint.includes("?") || endpoint.includes("#")) {
44
+ throw new ValidationError(`${path} must be a logical endpoint label, not a URL or tenant-bearing identifier.`);
45
+ }
46
+ return endpoint;
47
+ };
48
+ const requireBoolean = (value, path) => {
49
+ if (typeof value !== "boolean") {
50
+ throw new ValidationError(`${path} must be a boolean.`);
51
+ }
52
+ return value;
53
+ };
54
+ const requireNonNegativeInteger = (value, path) => {
55
+ if (!Number.isSafeInteger(value) || value < 0) {
56
+ throw new ValidationError(`${path} must be a non-negative safe integer.`);
57
+ }
58
+ return value;
59
+ };
60
+ const optionalNonNegativeNumber = (value, path) => {
61
+ if (value === undefined)
62
+ return undefined;
63
+ if (typeof value !== "number" || !Number.isFinite(value) || value < 0) {
64
+ throw new ValidationError(`${path} must be a non-negative finite number.`);
65
+ }
66
+ return value;
67
+ };
68
+ const requireIsoDate = (value, path) => {
69
+ const input = requireString(value, path);
70
+ const timestamp = Date.parse(input);
71
+ if (!Number.isFinite(timestamp)) {
72
+ throw new ValidationError(`${path} must be an ISO-8601 timestamp.`);
73
+ }
74
+ return new Date(timestamp).toISOString();
75
+ };
76
+ const resolveNow = (value) => {
77
+ if (value instanceof Date) {
78
+ if (!Number.isFinite(value.getTime()))
79
+ throw new ValidationError("now must be a valid date.");
80
+ return value.getTime();
81
+ }
82
+ if (value !== undefined) {
83
+ const timestamp = Date.parse(value);
84
+ if (!Number.isFinite(timestamp))
85
+ throw new ValidationError("now must be a valid date.");
86
+ return timestamp;
87
+ }
88
+ return Date.now();
89
+ };
90
+ const normalizeStringArray = (value, path, redact) => {
91
+ if (value === undefined)
92
+ return undefined;
93
+ if (!Array.isArray(value))
94
+ throw new ValidationError(`${path} must be an array.`);
95
+ return value.map((entry, index) => redact(requireString(entry, `${path}[${index}]`)));
96
+ };
97
+ const normalizeMetadata = (value, path, redactJson) => {
98
+ if (value === undefined)
99
+ return undefined;
100
+ const record = requireRecord(value, path);
101
+ const seen = new WeakSet();
102
+ const isJsonValue = (input) => {
103
+ if (input === null || typeof input === "string" || typeof input === "boolean")
104
+ return true;
105
+ if (typeof input === "number")
106
+ return Number.isFinite(input);
107
+ if (!input || typeof input !== "object")
108
+ return false;
109
+ if (seen.has(input))
110
+ return false;
111
+ seen.add(input);
112
+ const valid = Array.isArray(input)
113
+ ? input.every(isJsonValue)
114
+ : Object.getPrototypeOf(input) === Object.prototype && Object.values(input).every(isJsonValue);
115
+ seen.delete(input);
116
+ return valid;
117
+ };
118
+ if (!isJsonValue(record)) {
119
+ throw new ValidationError(`${path} must contain only JSON-compatible values.`);
120
+ }
121
+ return redactJson(structuredClone(record));
122
+ };
123
+ const normalizeArtifact = (value, path) => {
124
+ const record = requireRecord(value, path);
125
+ const kind = requireString(record.kind, `${path}.kind`);
126
+ if (kind !== "checkout" && kind !== "installed") {
127
+ throw new ValidationError(`${path}.kind must be checkout or installed.`);
128
+ }
129
+ return {
130
+ kind,
131
+ packageName: requireString(record.packageName, `${path}.packageName`),
132
+ packageVersion: requireString(record.packageVersion, `${path}.packageVersion`),
133
+ integrity: optionalString(record.integrity, `${path}.integrity`)
134
+ };
135
+ };
136
+ const normalizeStatus = (value, path) => {
137
+ const status = requireString(value, path);
138
+ if (!statusSet.has(status)) {
139
+ throw new ValidationError(`${path} contains an unknown provider conformance status.`);
140
+ }
141
+ return status;
142
+ };
143
+ const normalizeEvidence = (value, path) => {
144
+ const evidence = requireString(value, path);
145
+ if (!evidenceSet.has(evidence)) {
146
+ throw new ValidationError(`${path} contains an unknown provider conformance evidence level.`);
147
+ }
148
+ return evidence;
149
+ };
150
+ const normalizeError = (value, path, redact) => {
151
+ if (value === undefined)
152
+ return undefined;
153
+ const record = requireRecord(value, path);
154
+ return {
155
+ code: redact(requireString(record.code, `${path}.code`)),
156
+ message: redact(requireString(record.message, `${path}.message`)),
157
+ retryable: requireBoolean(record.retryable, `${path}.retryable`)
158
+ };
159
+ };
160
+ const normalizeResult = (value, path, now, applyTtl, redaction) => {
161
+ const record = requireRecord(value, path);
162
+ const evidence = normalizeEvidence(record.evidence, `${path}.evidence`);
163
+ let status = normalizeStatus(record.status, `${path}.status`);
164
+ let observedStatus;
165
+ if (record.observedStatus !== undefined) {
166
+ const parsedObservedStatus = normalizeStatus(record.observedStatus, `${path}.observedStatus`);
167
+ if (parsedObservedStatus === "stale") {
168
+ throw new ValidationError(`${path}.observedStatus cannot itself be stale.`);
169
+ }
170
+ observedStatus = parsedObservedStatus;
171
+ }
172
+ const observedAt = requireIsoDate(record.observedAt, `${path}.observedAt`);
173
+ const expiresAt = requireIsoDate(record.expiresAt, `${path}.expiresAt`);
174
+ if (Date.parse(expiresAt) < Date.parse(observedAt)) {
175
+ throw new ValidationError(`${path}.expiresAt cannot precede observedAt.`);
176
+ }
177
+ if (status === "stale" && !observedStatus) {
178
+ throw new ValidationError(`${path}.observedStatus is required when status is stale.`);
179
+ }
180
+ if (status !== "stale" && observedStatus !== undefined) {
181
+ throw new ValidationError(`${path}.observedStatus is only allowed when status is stale.`);
182
+ }
183
+ if (applyTtl &&
184
+ status !== "failed" &&
185
+ status !== "skipped_missing_credentials" &&
186
+ status !== "stale" &&
187
+ Date.parse(expiresAt) <= now) {
188
+ observedStatus = status;
189
+ status = "stale";
190
+ }
191
+ if (status !== "failed" && record.error !== undefined) {
192
+ throw new ValidationError(`${path}.error is only allowed for failed results.`);
193
+ }
194
+ const error = normalizeError(record.error, `${path}.error`, redaction.redactText);
195
+ if (status === "failed" && !error) {
196
+ throw new ValidationError(`${path}.error is required for failed results.`);
197
+ }
198
+ const expectedPassingStatus = passingStatusByEvidence[evidence];
199
+ const effectiveStatus = status === "stale" ? observedStatus : status;
200
+ if (effectiveStatus !== undefined &&
201
+ status !== "failed" &&
202
+ status !== "skipped_missing_credentials" &&
203
+ effectiveStatus !== expectedPassingStatus) {
204
+ throw new ValidationError(`${path}.status is incompatible with its evidence level.`);
205
+ }
206
+ return {
207
+ capability: requireString(record.capability, `${path}.capability`),
208
+ evidence,
209
+ status,
210
+ observedStatus,
211
+ required: requireBoolean(record.required, `${path}.required`),
212
+ modelId: requireString(record.modelId, `${path}.modelId`),
213
+ endpoint: requireLogicalEndpoint(record.endpoint, `${path}.endpoint`),
214
+ artifact: normalizeArtifact(record.artifact, `${path}.artifact`),
215
+ observedAt,
216
+ expiresAt,
217
+ attempts: requireNonNegativeInteger(record.attempts, `${path}.attempts`),
218
+ durationMs: optionalNonNegativeNumber(record.durationMs, `${path}.durationMs`),
219
+ error,
220
+ missingRequirements: normalizeStringArray(record.missingRequirements, `${path}.missingRequirements`, redaction.redactText),
221
+ metadata: normalizeMetadata(record.metadata, `${path}.metadata`, redaction.redactJson)
222
+ };
223
+ };
224
+ const resultKey = (provider, result) => [provider, result.capability, result.evidence, result.artifact.kind].join("\u0000");
225
+ export const normalizeProviderConformanceReport = (value, options = {}) => {
226
+ const record = requireRecord(value, "report");
227
+ if (record.schemaVersion !== PROVIDER_CONFORMANCE_REPORT_SCHEMA_VERSION) {
228
+ throw new ValidationError(`Unsupported provider conformance report schema version ${String(record.schemaVersion)}.`);
229
+ }
230
+ const redaction = createRedactionPolicy({
231
+ includeEmails: true,
232
+ ...options.redaction,
233
+ rules: [
234
+ {
235
+ name: "provider-conformance-token",
236
+ pattern: /\b(?:sk|pk|rk|api|token)[-_][A-Za-z0-9._-]{16,}\b/gi
237
+ },
238
+ ...(options.redaction?.rules ?? [])
239
+ ]
240
+ });
241
+ const now = resolveNow(options.now);
242
+ const applyTtl = options.applyTtl ?? true;
243
+ const source = requireRecord(record.source, "report.source");
244
+ const ciInput = source.ci;
245
+ let ci;
246
+ if (ciInput !== undefined) {
247
+ const ciRecord = requireRecord(ciInput, "report.source.ci");
248
+ ci = {
249
+ system: requireString(ciRecord.system, "report.source.ci.system"),
250
+ runId: requireString(ciRecord.runId, "report.source.ci.runId"),
251
+ runAttempt: optionalString(ciRecord.runAttempt, "report.source.ci.runAttempt"),
252
+ workflow: optionalString(ciRecord.workflow, "report.source.ci.workflow")
253
+ };
254
+ }
255
+ if (!Array.isArray(record.providers)) {
256
+ throw new ValidationError("report.providers must be an array.");
257
+ }
258
+ const seenProviders = new Set();
259
+ const seenResults = new Set();
260
+ const providers = record.providers.map((providerValue, providerIndex) => {
261
+ const providerRecord = requireRecord(providerValue, `report.providers[${providerIndex}]`);
262
+ const provider = requireString(providerRecord.provider, `report.providers[${providerIndex}].provider`);
263
+ if (seenProviders.has(provider)) {
264
+ throw new ValidationError(`report.providers contains duplicate provider ${provider}.`);
265
+ }
266
+ seenProviders.add(provider);
267
+ if (!Array.isArray(providerRecord.results)) {
268
+ throw new ValidationError(`report.providers[${providerIndex}].results must be an array.`);
269
+ }
270
+ const results = providerRecord.results.map((result, resultIndex) => normalizeResult(result, `report.providers[${providerIndex}].results[${resultIndex}]`, now, applyTtl, redaction));
271
+ for (const result of results) {
272
+ const key = resultKey(provider, result);
273
+ if (seenResults.has(key)) {
274
+ throw new ValidationError(`report.providers contains duplicate evidence for ${provider}/${result.capability}/${result.evidence}/${result.artifact.kind}.`);
275
+ }
276
+ seenResults.add(key);
277
+ }
278
+ return {
279
+ provider,
280
+ results: results.sort((left, right) => left.capability.localeCompare(right.capability) ||
281
+ left.evidence.localeCompare(right.evidence) ||
282
+ left.artifact.kind.localeCompare(right.artifact.kind))
283
+ };
284
+ });
285
+ const generatedAt = requireIsoDate(record.generatedAt, "report.generatedAt");
286
+ const expiresAt = requireIsoDate(record.expiresAt, "report.expiresAt");
287
+ if (Date.parse(expiresAt) < Date.parse(generatedAt)) {
288
+ throw new ValidationError("report.expiresAt cannot precede generatedAt.");
289
+ }
290
+ return {
291
+ schemaVersion: PROVIDER_CONFORMANCE_REPORT_SCHEMA_VERSION,
292
+ reportId: requireString(record.reportId, "report.reportId"),
293
+ generatedAt,
294
+ expiresAt,
295
+ generator: requireString(record.generator, "report.generator"),
296
+ source: {
297
+ repository: requireString(source.repository, "report.source.repository"),
298
+ gitSha: requireString(source.gitSha, "report.source.gitSha"),
299
+ runtime: requireString(source.runtime, "report.source.runtime"),
300
+ ci
301
+ },
302
+ providers: providers.sort((left, right) => left.provider.localeCompare(right.provider))
303
+ };
304
+ };
305
+ export const mergeProviderConformanceReports = (reports, options = {}) => {
306
+ if (reports.length === 0)
307
+ throw new ValidationError("At least one provider conformance report is required.");
308
+ const normalized = reports.map((report) => normalizeProviderConformanceReport(report, options));
309
+ const first = normalized[0];
310
+ for (const report of normalized.slice(1)) {
311
+ if (first.source.repository !== report.source.repository ||
312
+ first.source.gitSha !== report.source.gitSha) {
313
+ throw new ValidationError("Provider conformance reports must describe the same repository and git SHA.");
314
+ }
315
+ }
316
+ const providerResults = new Map();
317
+ for (const report of normalized) {
318
+ for (const provider of report.providers) {
319
+ const results = providerResults.get(provider.provider) ?? new Map();
320
+ for (const result of provider.results) {
321
+ results.set(resultKey(provider.provider, result), result);
322
+ }
323
+ providerResults.set(provider.provider, results);
324
+ }
325
+ }
326
+ const generatedAt = normalized
327
+ .map((report) => report.generatedAt)
328
+ .sort()
329
+ .at(-1);
330
+ const expiresAt = normalized
331
+ .map((report) => report.expiresAt)
332
+ .sort()
333
+ .at(-1);
334
+ return normalizeProviderConformanceReport({
335
+ ...first,
336
+ reportId: `${first.reportId}-merged`,
337
+ generatedAt,
338
+ expiresAt,
339
+ providers: [...providerResults.entries()].map(([provider, results]) => ({
340
+ provider,
341
+ results: [...results.values()]
342
+ }))
343
+ }, options);
344
+ };
345
+ export const compareProviderConformanceReports = (baselineInput, currentInput, options = {}) => {
346
+ const baseline = normalizeProviderConformanceReport(baselineInput, { ...options, applyTtl: false });
347
+ const current = normalizeProviderConformanceReport(currentInput, { ...options, applyTtl: true });
348
+ const currentResults = new Map();
349
+ for (const provider of current.providers) {
350
+ for (const result of provider.results)
351
+ currentResults.set(resultKey(provider.provider, result), result);
352
+ }
353
+ const regressions = [];
354
+ const changes = [];
355
+ for (const provider of baseline.providers) {
356
+ for (const baselineResult of provider.results) {
357
+ const currentResult = currentResults.get(resultKey(provider.provider, baselineResult));
358
+ const expectedStatus = passingStatusByEvidence[baselineResult.evidence];
359
+ if (!currentResult || currentResult.status !== expectedStatus) {
360
+ regressions.push({
361
+ provider: provider.provider,
362
+ capability: baselineResult.capability,
363
+ evidence: baselineResult.evidence,
364
+ artifactKind: baselineResult.artifact.kind,
365
+ baselineStatus: baselineResult.status,
366
+ currentStatus: currentResult?.status ?? "missing",
367
+ baselineModelId: baselineResult.modelId,
368
+ currentModelId: currentResult?.modelId
369
+ });
370
+ continue;
371
+ }
372
+ const fields = ["modelId", "endpoint"];
373
+ for (const field of fields) {
374
+ if (baselineResult[field] !== currentResult[field]) {
375
+ changes.push({
376
+ provider: provider.provider,
377
+ capability: baselineResult.capability,
378
+ evidence: baselineResult.evidence,
379
+ artifactKind: baselineResult.artifact.kind,
380
+ field,
381
+ baseline: baselineResult[field],
382
+ current: currentResult[field]
383
+ });
384
+ }
385
+ }
386
+ if (baselineResult.artifact.packageVersion !== currentResult.artifact.packageVersion) {
387
+ changes.push({
388
+ provider: provider.provider,
389
+ capability: baselineResult.capability,
390
+ evidence: baselineResult.evidence,
391
+ artifactKind: baselineResult.artifact.kind,
392
+ field: "packageVersion",
393
+ baseline: baselineResult.artifact.packageVersion,
394
+ current: currentResult.artifact.packageVersion
395
+ });
396
+ }
397
+ }
398
+ }
399
+ return { ok: regressions.length === 0, regressions, changes };
400
+ };
401
+ export const evaluateProviderConformanceGate = (reportInput, options = {}) => {
402
+ const report = normalizeProviderConformanceReport(reportInput, { now: options.now });
403
+ const requirements = [...(options.requirements ?? [])];
404
+ for (const provider of report.providers) {
405
+ for (const result of provider.results) {
406
+ if (result.required) {
407
+ requirements.push({
408
+ provider: provider.provider,
409
+ capability: result.capability,
410
+ evidence: result.evidence,
411
+ artifactKind: result.artifact.kind
412
+ });
413
+ }
414
+ }
415
+ }
416
+ const uniqueRequirements = new Map(requirements.map((requirement) => [
417
+ [requirement.provider, requirement.capability, requirement.evidence, requirement.artifactKind ?? "*"].join("\u0000"),
418
+ requirement
419
+ ]));
420
+ const issues = [];
421
+ for (const requirement of uniqueRequirements.values()) {
422
+ const provider = report.providers.find((entry) => entry.provider === requirement.provider);
423
+ const result = provider?.results.find((entry) => entry.capability === requirement.capability &&
424
+ entry.evidence === requirement.evidence &&
425
+ (!requirement.artifactKind || entry.artifact.kind === requirement.artifactKind));
426
+ if (!result) {
427
+ issues.push({
428
+ code: "missing_required_result",
429
+ provider: requirement.provider,
430
+ capability: requirement.capability,
431
+ evidence: requirement.evidence,
432
+ message: `Missing required ${requirement.evidence} evidence for ${requirement.provider}/${requirement.capability}.`
433
+ });
434
+ continue;
435
+ }
436
+ if (result.status !== passingStatusByEvidence[requirement.evidence]) {
437
+ issues.push({
438
+ code: "required_result_not_passed",
439
+ provider: requirement.provider,
440
+ capability: requirement.capability,
441
+ evidence: requirement.evidence,
442
+ status: result.status,
443
+ message: `Required ${requirement.evidence} evidence for ${requirement.provider}/${requirement.capability} is ${result.status}.`
444
+ });
445
+ }
446
+ }
447
+ const comparison = options.baseline
448
+ ? compareProviderConformanceReports(options.baseline, report, { now: options.now })
449
+ : undefined;
450
+ for (const regression of comparison?.regressions ?? []) {
451
+ issues.push({
452
+ code: "baseline_regression",
453
+ provider: regression.provider,
454
+ capability: regression.capability,
455
+ evidence: regression.evidence,
456
+ status: regression.currentStatus === "missing" ? undefined : regression.currentStatus,
457
+ message: `Baseline regression for ${regression.provider}/${regression.capability}/${regression.evidence}: ${regression.currentStatus}.`
458
+ });
459
+ }
460
+ return { ok: issues.length === 0, issues, comparison };
461
+ };
462
+ const escapeMarkdown = (value) => value.replaceAll("|", "\\|").replaceAll("\n", " ");
463
+ export const renderProviderConformanceMarkdown = (reportInput, options = {}) => {
464
+ const report = normalizeProviderConformanceReport(reportInput, { now: options.now });
465
+ const results = report.providers.flatMap((provider) => provider.results.map((result) => ({ provider: provider.provider, ...result })));
466
+ const statusCounts = new Map();
467
+ for (const result of results)
468
+ statusCounts.set(result.status, (statusCounts.get(result.status) ?? 0) + 1);
469
+ const lines = [
470
+ "# Zhivex AI SDK Provider Conformance Report",
471
+ "",
472
+ `- Schema: ${report.schemaVersion}`,
473
+ `- Report: ${escapeMarkdown(report.reportId)}`,
474
+ `- Generated: ${report.generatedAt}`,
475
+ `- Expires: ${report.expiresAt}`,
476
+ `- Git SHA: ${escapeMarkdown(report.source.gitSha)}`,
477
+ `- Results: ${results.length}`,
478
+ `- Live passed: ${statusCounts.get("live_passed") ?? 0}`,
479
+ `- Installed passed: ${statusCounts.get("installed_passed") ?? 0}`,
480
+ `- Skipped credentials: ${statusCounts.get("skipped_missing_credentials") ?? 0}`,
481
+ `- Failed: ${statusCounts.get("failed") ?? 0}`,
482
+ `- Stale: ${statusCounts.get("stale") ?? 0}`,
483
+ "",
484
+ "| Provider | Capability | Evidence | Status | Model | Endpoint | Artifact | Package | Observed | Expires | Required |",
485
+ "| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |"
486
+ ];
487
+ for (const result of results) {
488
+ lines.push(`| ${[
489
+ result.provider,
490
+ result.capability,
491
+ result.evidence,
492
+ result.status,
493
+ result.modelId,
494
+ result.endpoint,
495
+ result.artifact.kind,
496
+ `${result.artifact.packageName}@${result.artifact.packageVersion}`,
497
+ result.observedAt,
498
+ result.expiresAt,
499
+ result.required ? "yes" : "no"
500
+ ].map((value) => escapeMarkdown(String(value))).join(" | ")} |`);
501
+ }
502
+ lines.push("", "Skipped results are not certifications. Stale or failed required evidence fails closed.", "");
503
+ return lines.join("\n");
504
+ };
505
+ //# sourceMappingURL=provider-conformance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-conformance.js","sourceRoot":"","sources":["../src/provider-conformance.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1289,6 +1289,18 @@ export interface AgentStepResponse {
1289
1289
  providerFinishReason?: string;
1290
1290
  usage?: TokenUsage;
1291
1291
  }
1292
+ export type ProviderToolCallErrorReason = "empty_arguments" | "invalid_json" | "arguments_too_large" | "incomplete_arguments" | "inconsistent_metadata" | "response_failed" | "response_incomplete" | "stream_truncated";
1293
+ /** Sanitized, durable projection of an agent failure. */
1294
+ export interface AgentRunError {
1295
+ message: string;
1296
+ diagnosticCode?: string;
1297
+ category?: "provider-tool-call";
1298
+ provider?: string;
1299
+ transport?: string;
1300
+ reason?: ProviderToolCallErrorReason;
1301
+ retryable?: boolean;
1302
+ effectsPossible?: boolean;
1303
+ }
1292
1304
  export interface AgentStep {
1293
1305
  index: number;
1294
1306
  status: AgentStepStatus;
@@ -1297,9 +1309,7 @@ export interface AgentStep {
1297
1309
  request: AgentStepRequest;
1298
1310
  response?: AgentStepResponse;
1299
1311
  toolResults: ToolExecutionResult[];
1300
- error?: {
1301
- message: string;
1302
- };
1312
+ error?: AgentRunError;
1303
1313
  }
1304
1314
  export interface AgentChildRun {
1305
1315
  runId: string;
@@ -1315,9 +1325,7 @@ export interface AgentChildRun {
1315
1325
  usage?: TokenUsage;
1316
1326
  startedAt?: number;
1317
1327
  updatedAt?: number;
1318
- error?: {
1319
- message: string;
1320
- };
1328
+ error?: AgentRunError;
1321
1329
  metadata?: Record<string, JsonValue>;
1322
1330
  /** Durable child state retained only while the parent must resume a child approval. */
1323
1331
  resumeState?: AgentRunState;
@@ -1368,9 +1376,7 @@ export interface AgentRunState {
1368
1376
  updatedAt?: number;
1369
1377
  cancelledAt?: number;
1370
1378
  cancellationReason?: string;
1371
- error?: {
1372
- message: string;
1373
- };
1379
+ error?: AgentRunError;
1374
1380
  }
1375
1381
  /**
1376
1382
  * Logical isolation boundary for durable agent data. Applications should use
@@ -1847,9 +1853,7 @@ export interface AgentRunOutput<TOutput = unknown> {
1847
1853
  steps: AgentStep[];
1848
1854
  toolResults: ToolExecutionResult[];
1849
1855
  state: AgentRunState;
1850
- error?: {
1851
- message: string;
1852
- };
1856
+ error?: AgentRunError;
1853
1857
  }
1854
1858
  export interface AgentSubAgentDefinition<TModel extends LanguageModel = LanguageModel> {
1855
1859
  agent: AgentDefinition<TModel>;
@@ -1939,9 +1943,7 @@ export interface LiveAgentRunOutput {
1939
1943
  messages: ModelMessage[];
1940
1944
  toolResults: ToolExecutionResult[];
1941
1945
  state: AgentRunState;
1942
- error?: {
1943
- message: string;
1944
- };
1946
+ error?: AgentRunError;
1945
1947
  }
1946
1948
  export interface AgentStreamResult<TOutput = unknown> {
1947
1949
  eventStream: AsyncIterable<AgentStreamEvent>;