Skip to content

Agent External Runtime Turn Outcome v1

Source schema: doc/schemas/agent.external-runtime.turn-outcome.v1.schema.json

Fields

Field Required Shape Description
schema yes const: agent.external-runtime.turn-outcome.v1
outcome/ref yes ref: #/$defs/ref
turn/ref yes ref: #/$defs/ref
binding/ref yes ref: #/$defs/ref
agent/id yes ref: #/$defs/ref
status yes enum: completed, refused, failed, cancelled, unknown
reason/code yes ref: #/$defs/reason-code
retryability yes enum: terminal, retryable, reconciliation-required
product/ref no ref: #/$defs/ref
product/digest no ref: #/$defs/digest
budget/reserved yes ref: #/$defs/finite-budget
budget/charged yes ref: #/$defs/usage-value
usage/fidelity yes enum: authoritative, host-measured, estimated, unavailable
session/checkpoint-ref no ref: #/$defs/ref
selected/at yes string
selected/by yes ref: #/$defs/ref

Definitions

Definition Shape Description
ref string
digest string
positive-safe-integer integer
finite-budget object
usage-value object
reason-code enum: completed, policy-denied, binding-missing, binding-stale, binding-mismatch, binding-expired, binding-revoked, profile-disabled, profile-mismatch, budget-exhausted, usage-missing, usage-malformed, usage-overflow, usage-conflict, session-fence-mismatch, session-lost, event-malformed, event-duplicate, event-reordered, event-oversized, event-unauthorized, event-stale, event-timeout, tool-not-admitted, approval-not-admitted, provider-unavailable, cancelled, unknown

Conditional Rules

Rule 1

When:

{
  "required": [
    "status"
  ],
  "properties": {
    "status": {
      "const": "completed"
    }
  }
}

Then:

{
  "required": [
    "product/ref",
    "product/digest"
  ]
}

Rule 2

When:

{
  "required": [
    "status"
  ],
  "properties": {
    "status": {
      "enum": [
        "refused",
        "failed",
        "cancelled",
        "unknown"
      ]
    }
  }
}

Then:

{
  "not": {
    "anyOf": [
      {
        "required": [
          "product/ref"
        ]
      },
      {
        "required": [
          "product/digest"
        ]
      }
    ]
  }
}

Rule 3

When:

{
  "required": [
    "status"
  ],
  "properties": {
    "status": {
      "const": "unknown"
    }
  }
}

Then:

{
  "properties": {
    "retryability": {
      "const": "reconciliation-required"
    },
    "reason/code": {
      "const": "unknown"
    }
  }
}

Field Semantics

schema

  • Required: yes
  • Shape: const: agent.external-runtime.turn-outcome.v1

outcome/ref

  • Required: yes
  • Shape: ref: #/$defs/ref

turn/ref

  • Required: yes
  • Shape: ref: #/$defs/ref

binding/ref

  • Required: yes
  • Shape: ref: #/$defs/ref

agent/id

  • Required: yes
  • Shape: ref: #/$defs/ref

status

  • Required: yes
  • Shape: enum: completed, refused, failed, cancelled, unknown

reason/code

  • Required: yes
  • Shape: ref: #/$defs/reason-code

retryability

  • Required: yes
  • Shape: enum: terminal, retryable, reconciliation-required

product/ref

  • Required: no
  • Shape: ref: #/$defs/ref

product/digest

  • Required: no
  • Shape: ref: #/$defs/digest

budget/reserved

  • Required: yes
  • Shape: ref: #/$defs/finite-budget

budget/charged

  • Required: yes
  • Shape: ref: #/$defs/usage-value

usage/fidelity

  • Required: yes
  • Shape: enum: authoritative, host-measured, estimated, unavailable

session/checkpoint-ref

  • Required: no
  • Shape: ref: #/$defs/ref

selected/at

  • Required: yes
  • Shape: string

selected/by

  • Required: yes
  • Shape: ref: #/$defs/ref

Definition Semantics

$defs.ref

  • Shape: string

$defs.digest

  • Shape: string

$defs.positive-safe-integer

  • Shape: integer

$defs.finite-budget

  • Shape: object

$defs.usage-value

  • Shape: object

$defs.reason-code

  • Shape: enum: completed, policy-denied, binding-missing, binding-stale, binding-mismatch, binding-expired, binding-revoked, profile-disabled, profile-mismatch, budget-exhausted, usage-missing, usage-malformed, usage-overflow, usage-conflict, session-fence-mismatch, session-lost, event-malformed, event-duplicate, event-reordered, event-oversized, event-unauthorized, event-stale, event-timeout, tool-not-admitted, approval-not-admitted, provider-unavailable, cancelled, unknown