Skip to content

Core object reference

Version: 0.4. Specification · Core · Continuation · Reports

Every example below is JSON Schema checked. Object fragments use IDs resolved by an enclosing session or report; they are not standalone session documents. Full scenarios are in examples. Required means unconditionally required; conditional rules follow each table. Normative session semantics and continuation rules also apply.

Browse all objects on this page

ASIF Document Object

Root of an immutable session capture. Collections describe identity, history, effective context, resources and known state; coverage explains their limits.

Fixed fields

Field Type Required Description
asif_version "0.4" Yes Exact ASIF draft version used by this document.
capture Capture Object Yes Immutable capture identity and observation boundary.
session Session Object Yes Logical session identity, objective and lineage.
participants array of Participant Object Yes Declared actors referenced by the captured interaction.
events array of Event Object Yes Immutable captured occurrences in serialization order.
branches array of Branch Object Yes Explicit selections of conversation history. Minimum items: 1.
executions array of Execution Object Yes Observed agent activity intervals.
contexts array of Context Object Yes Resolved or proposed model inputs.
configurations array of Configuration Object Yes Immutable configuration snapshots.
tools array of Tool Object Yes Callable tool definitions referenced by activity or context.
resources array of Resource Object Yes Attachments, artifacts, memory and supporting resources.
environments array of Environment Object Yes Workspace, service or runtime descriptions.
checkpoints array of Checkpoint Object Yes State observations at branch boundaries, including each captured head. Minimum items: 1.
coverage array of Coverage Object Yes One completeness declaration for every required session domain. Minimum items: 13. Maximum items: 13.
losses array of Loss Object Yes Explicit information changes or omissions; empty means none declared.
required_features array of string Yes Feature identifiers whose semantics a consumer must understand for its capability claim. Items MUST be unique.
usage array of Usage Object No Recorded counters with scope, units and provenance.
continuation Continuation Profile Object No Optional portable-continuation profile, gated by its required feature identifier.
streams array of Stream Object No Optional byte-fragment assemblies, gated by asif.streams/0.1.
external_bindings array of External Binding Object No Optional prior-capture call/request descriptors, gated by asif.external-bindings/0.1.

Rules

See session semantics.

  • When continuation is present, required_features MUST contain asif.portable-continuation/0.2.
  • When required_features contains asif.portable-continuation/0.2, require continuation.
  • When streams is present, required_features MUST contain asif.streams/0.1.
  • When required_features contains asif.streams/0.1, require streams.
  • When external_bindings is present, required_features MUST contain asif.external-bindings/0.1.
  • When required_features contains asif.external-bindings/0.1, require external_bindings.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "asif_version": "0.4",
  "capture": {
    "id": "capture-hello",
    "producer": {
      "name": "ASIF examples",
      "version": "0.4"
    },
    "consistency": "consistent",
    "boundary": "One authored greeting; no agent request was captured."
  },
  "session": {
    "id": "session-hello",
    "title": "Greeting",
    "native_ids": [],
    "lineage": []
  },
  "participants": [
    {
      "id": "human-1",
      "kind": "human"
    }
  ],
  "events": [
    {
      "id": "e1",
      "sequence": 0,
      "actor_id": "human-1",
      "kind": "message",
      "causes": [],
      "provenance": {
        "mode": "synthetic",
        "producer": "ASIF examples",
        "method": "Authored greeting example.",
        "inputs": []
      },
      "data": {
        "role": "user",
        "parts": [
          {
            "kind": "text",
            "text": "Hello."
          }
        ]
      }
    }
  ],
  "branches": [
    {
      "id": "main",
      "event_ids": [
        "e1"
      ],
      "head_event_id": "e1"
    }
  ],
  "executions": [],
  "contexts": [],
  "configurations": [],
  "tools": [],
  "resources": [],
  "environments": [],
  "checkpoints": [
    {
      "id": "checkpoint-1",
      "branch_id": "main",
      "at_event_id": "e1",
      "knowledge": "unknown",
      "status": "unknown",
      "context_id": null,
      "configuration_id": null,
      "open_calls": [],
      "open_decisions": [],
      "tasks": [],
      "requirements": []
    }
  ],
  "coverage": [
    {
      "scope": "participants",
      "status": "complete",
      "detail": "Scope of this authored example."
    },
    {
      "scope": "conversation",
      "status": "complete",
      "detail": "Scope of this authored example."
    },
    {
      "scope": "branches",
      "status": "complete",
      "detail": "Scope of this authored example."
    },
    {
      "scope": "executions",
      "status": "known_empty",
      "detail": "Scope of this authored example."
    },
    {
      "scope": "contexts",
      "status": "not_inspected",
      "detail": "Scope of this authored example."
    },
    {
      "scope": "configuration",
      "status": "not_inspected",
      "detail": "Scope of this authored example."
    },
    {
      "scope": "tools",
      "status": "known_empty",
      "detail": "Scope of this authored example."
    },
    {
      "scope": "decisions",
      "status": "known_empty",
      "detail": "Scope of this authored example."
    },
    {
      "scope": "tasks",
      "status": "known_empty",
      "detail": "Scope of this authored example."
    },
    {
      "scope": "resources",
      "status": "known_empty",
      "detail": "Scope of this authored example."
    },
    {
      "scope": "environment",
      "status": "known_empty",
      "detail": "Scope of this authored example."
    },
    {
      "scope": "native",
      "status": "known_empty",
      "detail": "Scope of this authored example."
    },
    {
      "scope": "usage",
      "status": "known_empty",
      "detail": "Scope of this authored example."
    }
  ],
  "losses": [],
  "required_features": []
}

Capture Object

Identifies this immutable observation of a logical session and explains its capture boundary.

Fixed fields

Field Type Required Description
id string Yes Opaque, case-sensitive identity within the object's declared scope. Minimum length: 1.
producer Producer Object Yes Software or instrumentation responsible for the capture or evidence.
consistency enum Yes Whether the captured boundary is known to be consistent. One of "consistent", "partial", "unknown".
boundary string Yes Explanation or structured declaration of the observation boundary. Minimum length: 1.
started_at string No Recorded start time; omitted when unknown. Minimum length: 1.
ended_at string No Recorded end time; omitted when unknown. Minimum length: 1.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "id": "capture-image-and-document",
  "producer": {
    "name": "asif-examples",
    "version": "1"
  },
  "consistency": "consistent",
  "boundary": "Invented example through e2; no real model or tool ran."
}

Producer Object

Identifies the software that created the capture, including its version.

Fixed fields

Field Type Required Description
name string Yes Recorded name; identity is carried separately by the ID. Minimum length: 1.
version string Yes Implementation or format version. Minimum length: 1.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "name": "asif-example",
  "version": "1"
}

Session Object

Identifies the logical interaction across captures, with its objective and lineage.

Fixed fields

Field Type Required Description
id string Yes Opaque, case-sensitive identity within the object's declared scope. Minimum length: 1.
title string No Human-readable session title.
objective array of Text Part Object / Resource Part Object / Structured Part Object / Opaque Part Object No Recorded session objective as ordered content parts.
native_ids array of Native Identifier Object Yes Original IDs, each qualified by provider and namespace.
lineage array of Lineage Object Yes Explicit relationships to source sessions and captures.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "id": "session-image-and-document",
  "title": "Image and PDF attachments",
  "native_ids": [],
  "lineage": []
}

Native Identifier Object

Preserves an opaque identifier in a provider's namespace without making it an ASIF identity.

Fixed fields

Field Type Required Description
provider string Yes Provider identity for the named object or account. Minimum length: 1.
namespace string Yes Namespace in which the opaque value is meaningful. Minimum length: 1.
value string Yes Value interpreted according to the enclosing schema, dialect or counter. Minimum length: 1.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "provider": "example-agent-a",
  "namespace": "source-runtime",
  "value": "source-native"
}

Lineage Object

Relates this session to the source of a continuation, fork, translation or copy.

Fixed fields

Field Type Required Description
relation enum Yes Relationship to the referenced source session. One of "continuation", "fork", "translation", "copy".
session_id string Yes Logical session ID of the referenced boundary. Minimum length: 1.
capture_id string Yes Immutable capture ID of the referenced boundary. Minimum length: 1.
event_id string No Event identity, resolved locally unless an external capture is explicit. Minimum length: 1.
inclusive boolean No Whether the referenced boundary event is included.

Rules

See normative session rules.

  • When relation is "fork", require event_id, inclusive.
  • When relation is "translation", require event_id, inclusive.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "relation": "fork",
  "session_id": "session-parent",
  "capture_id": "capture-parent",
  "event_id": "e2",
  "inclusive": true
}

Event Reference Object

Names a local event or explicitly names an event in another session capture. It never causes an automatic fetch.

Fixed fields

Field Type Required Description
event_id string Yes Event identity, resolved locally unless an external capture is explicit. Minimum length: 1.
session_id string No Logical session ID of the referenced boundary. Minimum length: 1.
capture_id string No Immutable capture ID of the referenced boundary. Minimum length: 1.

Rules

See normative session rules.

  • When session_id is present, capture_id MUST also be present.
  • When capture_id is present, session_id MUST also be present.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "event_id": "e1"
}

Text Part Object

Carries exact Unicode text at one position in ordered content.

Fixed fields

Field Type Required Description
kind "text" Yes Discriminator selecting this object's interpretation.
text string Yes Exact Unicode text; embedded-resource bytes use UTF-8.
media_type string No Declared media type of the content or resource. Minimum length: 1.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "kind": "text",
  "text": "The total is 5."
}

Resource Part Object

Places an attachment or other resource at one position in ordered content; availability belongs to the Resource Object.

Fixed fields

Field Type Required Description
kind "resource" Yes Discriminator selecting this object's interpretation.
resource_id string Yes ID of the referenced Resource Object. Minimum length: 1.
description string No Human-readable description of this declaration.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "kind": "resource",
  "resource_id": "image",
  "description": "Original image."
}

Structured Part Object

Carries JSON whose interpretation is defined by a named schema. Unknown schemas remain opaque.

Fixed fields

Field Type Required Description
kind "structured" Yes Discriminator selecting this object's interpretation.
schema string Yes Identifier of the schema that gives the structured value meaning. Minimum length: 1.
value JSON value Yes Value interpreted according to the enclosing schema, dialect or counter.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "kind": "structured",
  "schema": "example.table/1",
  "value": {
    "columns": [
      "item",
      "count"
    ],
    "rows": [
      [
        "books",
        3
      ]
    ]
  }
}

Opaque Part Object

Preserves a resource whose semantic interpretation is unavailable to this reader.

Fixed fields

Field Type Required Description
kind "opaque" Yes Discriminator selecting this object's interpretation.
resource_id string Yes ID of the referenced Resource Object. Minimum length: 1.
semantic_type string Yes Namespaced meaning of content whose interpretation is unavailable. Minimum length: 1.
reason string Yes Reason for the recorded operation or unavailable interpretation. Minimum length: 1.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "kind": "opaque",
  "resource_id": "native-state",
  "semantic_type": "example.agent-state/1",
  "reason": "No portable decoder is defined."
}

Provenance Object

Distinguishes observed, reported, derived and synthetic evidence and identifies its sources.

Fixed fields

Field Type Required Description
mode enum Yes Representation or interpretation mode selected by the enclosing object. One of "observed", "reported", "derived", "synthetic".
producer string Yes Software or instrumentation responsible for the capture or evidence. Minimum length: 1.
sources array of Provenance Source Object No Original resource locations supporting this provenance.
method string No Method used to derive, synthesize or capture this record. Minimum length: 1.
inputs array of Event Reference Object No Ordered inputs; provenance inputs identify supporting events.

Rules

See normative session rules.

  • When mode is "derived", require method, inputs.
  • When mode is "synthetic", require method, inputs.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "mode": "reported",
  "producer": "example-meter"
}

Provenance Source Object

Identifies a source resource and, optionally, a specific span or structured location within it.

Fixed fields

Field Type Required Description
resource_id string Yes ID of the referenced Resource Object. Minimum length: 1.
locator Source Locator Object No Location interpreted according to its declared syntax or availability.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "resource_id": "audio"
}

Source Locator Object

Selects bytes or a structured location within a provenance source; unknown syntaxes remain uninterpreted.

Fixed fields

Field Type Required Description
syntax string Yes Locator syntax, such as bytes or json_pointer. Minimum length: 1.
value JSON value No Value interpreted according to the enclosing schema, dialect or counter.
offset integer No Zero-based byte offset into the referenced resource. Minimum: 0. Maximum: 9007199254740991.
length integer No Number of bytes in the selected span. Minimum: 0. Maximum: 9007199254740991.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "syntax": "bytes",
  "offset": 0,
  "length": 19
}

Participant Object

Identifies a person, agent, tool or service independently of the role used in a particular message.

Fixed fields

Field Type Required Description
id string Yes Opaque, case-sensitive identity within the object's declared scope. Minimum length: 1.
kind enum Yes Discriminator selecting this object's interpretation. One of "human", "agent", "tool", "service", "unknown".
name string No Recorded name; identity is carried separately by the ID.
provider string No Provider identity for the named object or account. Minimum length: 1.
native_id string No Opaque participant identity in its source system. Minimum length: 1.
parent_participant_id string No ID of the parent or delegating participant. Minimum length: 1.
child_session Participant Child Session Object No Explicit reference to a delegated session capture.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "id": "agent",
  "kind": "agent"
}

Participant Child Session Object

Names a delegated participant's separate session capture; its history is not implicitly included.

Fixed fields

Field Type Required Description
session_id string Yes Logical session ID of the referenced boundary. Minimum length: 1.
capture_id string Yes Immutable capture ID of the referenced boundary. Minimum length: 1.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "session_id": "session-1",
  "capture_id": "capture-1"
}

Execution Object

Records an agent activity interval and its observed state, model contexts and optional usage.

Fixed fields

Field Type Required Description
id string Yes Opaque, case-sensitive identity within the object's declared scope. Minimum length: 1.
participant_id string Yes ID of the participant responsible for the execution. Minimum length: 1.
status enum Yes Recorded state at the relevant boundary; see the allowed values. One of "running", "completed", "failed", "cancelled", "interrupted", "unknown".
context_ids array of string Yes IDs of contexts associated with this execution. Items MUST be unique.
started_at string No Recorded start time; omitted when unknown. Minimum length: 1.
ended_at string No Recorded end time; omitted when unknown. Minimum length: 1.
model Execution Model Object No Recorded model identity or settings for this scope.
usage array of Usage Object No Recorded counters with scope, units and provenance.
error JSON value No Captured error evidence; its contents do not establish a recovery action.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "id": "run-1",
  "participant_id": "agent",
  "status": "running",
  "context_ids": [
    "context-1"
  ]
}

Execution Model Object

Retains the model settings recorded for an execution. Provider-specific values require a declared interpretation before reuse.

Fixed fields

No fixed fields. This object retains fields defined by its declared dialect or enclosing discriminator.

Rules

This is an open map. Preserve unknown values. Reuse requires support for their declared semantics; an empty map does not prove that the source had no hidden settings.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "provider": "example",
  "id": "model-1",
  "temperature": 0.2
}

Tool Object

Defines a callable interface, including its JSON Schema input contract. A definition does not implement the tool.

Fixed fields

Field Type Required Description
id string Yes Opaque, case-sensitive identity within the object's declared scope. Minimum length: 1.
name string Yes Recorded name; identity is carried separately by the ID. Minimum length: 1.
description string Yes Human-readable description of this declaration.
input_schema object / boolean Yes JSON Schema 2020-12 contract for tool arguments; true declares no known restriction.
output_schema object / boolean No Optional JSON Schema contract for tool output.
server_identity string No Recorded identity of the tool server. Minimum length: 1.
revision string No Versioned definition or task revision within its identity. Minimum length: 1.
resource_ids array of string No IDs of supporting resources; their availability is declared separately. Items MUST be unique.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "id": "read-notes",
  "name": "example.notes.read",
  "description": "Read a meeting document by logical identifier.",
  "input_schema": {
    "type": "object",
    "properties": {
      "document_id": {
        "type": "string"
      }
    },
    "required": [
      "document_id"
    ],
    "additionalProperties": false
  }
}

Instruction Object

Records instruction content, source, scope and activation without inventing unknown precedence.

Fixed fields

Field Type Required Description
id string Yes Opaque, case-sensitive identity within the object's declared scope. Minimum length: 1.
parts array of Text Part Object / Resource Part Object / Structured Part Object / Opaque Part Object Yes Ordered content parts. Order is semantically significant.
scope Instruction Scope Object Yes Domain or activation scope to which this declaration applies.
activation Instruction Activation Object Yes Conditions under which an instruction or rule applies.
provenance Provenance Object Yes Evidence classification and source attribution.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "id": "workspace-rule",
  "parts": [
    {
      "kind": "text",
      "text": "Use the declared workspace for file operations."
    }
  ],
  "scope": {
    "dialect": "example.scope/1",
    "value": "workspace"
  },
  "activation": {
    "dialect": "example.activation/1",
    "value": "always"
  },
  "provenance": {
    "mode": "synthetic",
    "producer": "asif-examples",
    "method": "Authored configuration fixture.",
    "inputs": []
  }
}

Instruction Scope Object

Preserves a source dialect's scope declaration. Portable scope bindings are defined by the continuation profile.

Fixed fields

Field Type Required Description
dialect string Yes Identifier of the language used to interpret the associated value. Minimum length: 1.
value JSON value Yes Value interpreted according to the enclosing schema, dialect or counter.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "dialect": "example.scope/1",
  "value": "workspace"
}

Instruction Activation Object

Preserves a source dialect's activation declaration. Portable activation bindings are defined by the continuation profile.

Fixed fields

Field Type Required Description
dialect string Yes Identifier of the language used to interpret the associated value. Minimum length: 1.
value JSON value Yes Value interpreted according to the enclosing schema, dialect or counter.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "dialect": "example.scope/1",
  "value": "workspace"
}

Capability Object

Describes a skill, plugin, hook, connection or other runtime facility and its supporting resources.

Fixed fields

Field Type Required Description
id string Yes Opaque, case-sensitive identity within the object's declared scope. Minimum length: 1.
type string Yes Namespaced semantic type or entity type, as defined by the enclosing object. Minimum length: 1.
definition JSON value Yes Dialect-specific definition retained without guessing unknown semantics.
resource_ids array of string Yes IDs of supporting resources; their availability is declared separately. Items MUST be unique.
required boolean Yes Whether the action-specific prerequisite closure requires this subject; reports must match the computed flag exactly.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "id": "summary-skill",
  "type": "example.skill",
  "definition": {
    "id": "inventory-summary",
    "version": "1"
  },
  "resource_ids": [
    "skill-template"
  ],
  "required": true
}

Policy Object

Records a named policy dialect and whether its restrictions were enforced.

Fixed fields

Field Type Required Description
id string Yes Opaque, case-sensitive identity within the object's declared scope. Minimum length: 1.
type string Yes Namespaced semantic type or entity type, as defined by the enclosing object. Minimum length: 1.
definition JSON value Yes Dialect-specific definition retained without guessing unknown semantics.
enforcing boolean Yes Whether this policy enforces restrictions rather than providing advice.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "id": "workspace-only",
  "type": "example.policy/1",
  "definition": {
    "file_access": "declared-workspace"
  },
  "enforcing": true
}

Configuration Object

An immutable snapshot of instructions, capabilities, policies and credential prerequisites.

Fixed fields

Field Type Required Description
id string Yes Opaque, case-sensitive identity within the object's declared scope. Minimum length: 1.
instructions array of Instruction Object Yes Recorded instruction sequence; effective order must be known before equivalent continuation.
capabilities array of Capability Object Yes Required or declared abilities for this configuration or model.
policies array of Policy Object Yes Recorded policy declarations.
secret_requirements array of Configuration Secret Requirements Object Yes Logical credential handles and purposes; no credential values.
knowledge enum Yes How much of the effective state or configuration is known. One of "effective", "declared", "partial", "unknown".
model Configuration Model Object No Recorded model identity or settings for this scope.
environment_ids array of string No IDs of environments required by this configuration. Items MUST be unique.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "id": "config-1",
  "instructions": [],
  "capabilities": [],
  "policies": [],
  "secret_requirements": [],
  "knowledge": "partial"
}

Configuration Secret Requirements Object

Names a credential prerequisite using a logical handle and purpose. Credential values do not belong here.

Fixed fields

Field Type Required Description
handle string Yes Logical credential name to resolve at the destination. Minimum length: 1.
purpose string Yes Intended use of the record or resource. Minimum length: 1.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "handle": "publisher-login",
  "purpose": "Authenticate to the target publishing account."
}

Configuration Model Object

Retains configuration-level model settings; a context can identify the settings used for a particular request.

Fixed fields

No fixed fields. This object retains fields defined by its declared dialect or enclosing discriminator.

Rules

This is an open map. Preserve unknown values. Reuse requires support for their declared semantics; an empty map does not prove that the source had no hidden settings.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "provider": "example",
  "id": "model-1",
  "temperature": 0.2
}

Requirement Object

States a prerequisite and the capabilities for which it matters, including whether its resolution is known.

Fixed fields

Field Type Required Description
id string Yes Opaque, case-sensitive identity within the object's declared scope. Minimum length: 1.
kind string Yes Discriminator selecting this object's interpretation. Minimum length: 1.
description string Yes Human-readable description of this declaration. Minimum length: 1.
required_for array of enum Yes Capabilities that depend on this prerequisite. Items MUST be unique.
status enum Yes Recorded state at the relevant boundary; see the allowed values. One of "available", "unresolved", "unavailable", "unsupported".
resource_id string No ID of the referenced Resource Object. Minimum length: 1.
capability_id string No Referenced capability identity within the applicable configuration. Minimum length: 1.
environment_id string No Referenced Environment Object ID. Minimum length: 1.
secret_handle string No Logical credential handle referenced by this requirement. Minimum length: 1.

Rules

See session semantics.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "id": "req-1",
  "kind": "asif.decision",
  "description": "Resolve approval-1 under destination policy before any tool execution.",
  "required_for": [
    "continue"
  ],
  "status": "unresolved"
}

Environment Object

Describes a workspace, service or runtime environment and its dependencies without granting access to it.

Fixed fields

Field Type Required Description
id string Yes Opaque, case-sensitive identity within the object's declared scope. Minimum length: 1.
kind enum Yes Discriminator selecting this object's interpretation. One of "workspace", "service", "runtime", "other".
description string Yes Human-readable description of this declaration. Minimum length: 1.
resource_ids array of string Yes IDs of supporting resources; their availability is declared separately. Items MUST be unique.
requirements array of Requirement Object Yes Prerequisites for the stated capability.
definition Environment Definition Object No Dialect-specific definition retained without guessing unknown semantics.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "id": "project-env",
  "kind": "workspace",
  "description": "Synthetic project directory at the captured boundary.",
  "resource_ids": [
    "source-csv",
    "output-csv",
    "report"
  ],
  "requirements": [],
  "definition": {
    "dialect": "example.workspace/1",
    "value": {
      "cwd": "/Users/example/project"
    }
  }
}

Environment Definition Object

Preserves environment-specific data under an explicit dialect identifier.

Fixed fields

Field Type Required Description
dialect string Yes Identifier of the language used to interpret the associated value. Minimum length: 1.
value JSON value Yes Value interpreted according to the enclosing schema, dialect or counter.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "dialect": "example.scope/1",
  "value": "workspace"
}

Resource Object

Describes attachment or dependency identity, availability and integrity. Embedded text, base64 and file-backed resources share the same decoded-byte semantics.

Fixed fields

Field Type Required Description
id string Yes Opaque, case-sensitive identity within the object's declared scope. Minimum length: 1.
media_type string Yes Declared media type of the content or resource. Minimum length: 1.
availability enum Yes Whether and how the referenced content is available. One of "embedded", "external", "unavailable", "excluded", "redacted", "unknown".
purpose string Yes Intended use of the record or resource. Minimum length: 1.
name string No Recorded name; identity is carried separately by the ID.
original_location string No Source location retained as metadata; not permission to access it.
bytes integer No Exact decoded byte count. Minimum: 0. Maximum: 9007199254740991.
sha256 string No Lowercase SHA-256 digest of exact decoded resource bytes. Pattern: ^[0-9a-f]{64}(?![\s\S]).
text string No Exact Unicode text; embedded-resource bytes use UTF-8.
data string No Base64 encoding of the embedded resource bytes.
path string No Portable relative path resolved against the session document or package root. Minimum length: 1.
locator string No External resource locator. Reading the document MUST NOT fetch it automatically. Minimum length: 1.
explanation string No Reason for the declaration or limitation. Minimum length: 1.
provenance Provenance Object No Evidence classification and source attribution.

Rules

See resource rules. Embedded resources MUST select exactly one of text, data and path, with verified decoded bytes and sha256. Other availability states MUST explain the limitation; external resources also require a locator.

  • When availability is "embedded", require bytes, sha256; exactly one of text, data, path.
  • When availability is "external", require locator, explanation.
  • When availability is "unavailable", require explanation.
  • When availability is "excluded", require explanation.
  • When availability is "redacted", require explanation.
  • When availability is "unknown", require explanation.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "id": "unknown",
  "media_type": "image/png",
  "purpose": "input",
  "availability": "unknown",
  "explanation": "The exporter did not inspect attachment availability."
}

Embedded UTF-8 attachment

The three embedded examples represent the same decoded bytes and therefore use the same length and digest. The path example assumes those bytes are supplied at assets/items.csv.

{
  "id": "attachment-csv",
  "media_type": "text/csv",
  "purpose": "input",
  "availability": "embedded",
  "bytes": 19,
  "sha256": "de0c9962d43f7e783381c9f07d89c60589342163340cb53a55c2e0cf3f9859b6",
  "text": "item,count\nbooks,3\n"
}

Embedded base64 attachment

The three embedded examples represent the same decoded bytes and therefore use the same length and digest. The path example assumes those bytes are supplied at assets/items.csv.

{
  "id": "attachment-csv",
  "media_type": "text/csv",
  "purpose": "input",
  "availability": "embedded",
  "bytes": 19,
  "sha256": "de0c9962d43f7e783381c9f07d89c60589342163340cb53a55c2e0cf3f9859b6",
  "data": "aXRlbSxjb3VudApib29rcywzCg=="
}

File-backed attachment

The three embedded examples represent the same decoded bytes and therefore use the same length and digest. The path example assumes those bytes are supplied at assets/items.csv.

{
  "id": "attachment-csv",
  "media_type": "text/csv",
  "purpose": "input",
  "availability": "embedded",
  "bytes": 19,
  "sha256": "de0c9962d43f7e783381c9f07d89c60589342163340cb53a55c2e0cf3f9859b6",
  "path": "assets/items.csv"
}

External attachment

The missing bytes are not replaced with invented text. The referring Resource Part retains this resource ID.

{
  "id": "attachment-original",
  "media_type": "application/pdf",
  "purpose": "input",
  "availability": "external",
  "explanation": "The source only retained a remote locator.",
  "locator": "https://example.invalid/report.pdf"
}

Unavailable attachment

The missing bytes are not replaced with invented text. The referring Resource Part retains this resource ID.

{
  "id": "attachment-original",
  "media_type": "application/pdf",
  "purpose": "input",
  "availability": "unavailable",
  "explanation": "The source attachment was deleted before capture."
}

Excluded attachment

The missing bytes are not replaced with invented text. The referring Resource Part retains this resource ID.

{
  "id": "attachment-original",
  "media_type": "application/pdf",
  "purpose": "input",
  "availability": "excluded",
  "explanation": "The producer intentionally excluded these bytes."
}

Redacted attachment

The missing bytes are not replaced with invented text. The referring Resource Part retains this resource ID.

{
  "id": "attachment-original",
  "media_type": "application/pdf",
  "purpose": "input",
  "availability": "redacted",
  "explanation": "The original contains withheld content; sanitized content is a separate resource."
}

Unknown attachment

The missing bytes are not replaced with invented text. The referring Resource Part retains this resource ID.

{
  "id": "attachment-original",
  "media_type": "application/pdf",
  "purpose": "input",
  "availability": "unknown",
  "explanation": "The producer could not determine availability."
}

Context Input Object

One resolved, ordered input to a model: a message, tool call or tool result, with source attribution.

Fixed fields

Field Type Required Description
id string Yes Opaque, case-sensitive identity within the object's declared scope. Minimum length: 1.
role enum Yes Message role used for this input, independently of participant identity. One of "user", "assistant", "system", "developer", "tool", "unknown".
parts array of Text Part Object / Resource Part Object / Structured Part Object / Opaque Part Object Yes Ordered content parts. Order is semantically significant.
source_events array of Event Reference Object Yes Events from which this resolved input was obtained.
transformation string No Explanation of a known change from source content. Minimum length: 1.
kind enum Yes Discriminator selecting this object's interpretation. One of "message", "tool_call", "tool_result".
call_id string No Session-scoped identity of one logical invocation. Minimum length: 1.
tool_id string No ID of the referenced tool definition. Minimum length: 1.
arguments JSON value No Exact known JSON argument value; completeness is declared separately.
arguments_status enum No Whether the known arguments are complete, partial or unknown. One of "complete", "partial", "unknown".
result_index integer No Monotonically increasing result position within the call's selected history. Minimum: 0. Maximum: 9007199254740991.
terminal boolean No Whether this is the final result or fragment in its declared scope.
outcome enum No Recorded result or assessment outcome; unknown remains explicit. One of "success", "error", "cancelled", "unknown".

Rules

See normative session rules.

  • When kind is "tool_call", require call_id, tool_id, arguments, arguments_status; role MUST be "assistant".
  • When kind is "tool_result", require call_id, result_index, terminal, outcome; role MUST be "tool".

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "id": "input-1",
  "role": "user",
  "parts": [
    {
      "kind": "text",
      "text": "Summarize the selected meeting notes."
    }
  ],
  "source_events": [
    {
      "event_id": "e1"
    }
  ],
  "kind": "message"
}

Message input

This is one resolved input from the complete another-computer example. Source references provide provenance, not instructions to guess the input.

{
  "id": "input-instruction",
  "kind": "message",
  "role": "system",
  "parts": [
    {
      "kind": "text",
      "text": "Use the declared workspace for file operations."
    }
  ],
  "source_events": []
}

Tool Call input

This is one resolved input from the complete another-computer example. Source references provide provenance, not instructions to guess the input.

{
  "id": "input-e2",
  "kind": "tool_call",
  "role": "assistant",
  "parts": [],
  "source_events": [
    {
      "event_id": "e2"
    }
  ],
  "call_id": "call-1",
  "tool_id": "summarize",
  "arguments": {
    "resource_id": "source-csv"
  },
  "arguments_status": "complete"
}

Tool Result input

This is one resolved input from the complete another-computer example. Source references provide provenance, not instructions to guess the input.

{
  "id": "input-e3",
  "kind": "tool_result",
  "role": "tool",
  "parts": [
    {
      "kind": "resource",
      "resource_id": "output-csv",
      "description": "CSV with total row."
    },
    {
      "kind": "resource",
      "resource_id": "report",
      "description": "Markdown report."
    }
  ],
  "source_events": [
    {
      "event_id": "e3"
    }
  ],
  "call_id": "call-1",
  "result_index": 0,
  "terminal": true,
  "outcome": "success"
}

Context Object

Records or proposes the actual ordered model input independently of conversation and branch order.

Fixed fields

Field Type Required Description
id string Yes Opaque, case-sensitive identity within the object's declared scope. Minimum length: 1.
branch_id string Yes ID of the selected branch. Minimum length: 1.
at_event_id string / null Yes Event at the recorded boundary, or null for an empty boundary.
purpose enum Yes Intended use of the record or resource. One of "model_request", "continuation", "summary".
fidelity enum Yes How closely this context represents the known model input. One of "exact", "reconstructed", "partial", "unknown".
inputs array of Context Input Object Yes Ordered inputs; provenance inputs identify supporting events.
tool_ids array of string Yes IDs of tools made available to this context. Items MUST be unique.
configuration_id string No ID of the configuration snapshot used at this boundary. Minimum length: 1.
model Context Model Object No Recorded model identity or settings for this scope.
request_parameters Context Request Parameters Object No Recorded request settings; unknown provider-specific semantics are not inferred.

Rules

See normative session rules.

  • When fidelity is "exact", require configuration_id, request_parameters.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "id": "context-1",
  "branch_id": "main",
  "at_event_id": "e1",
  "purpose": "model_request",
  "fidelity": "reconstructed",
  "inputs": [
    {
      "id": "input-1",
      "role": "user",
      "parts": [
        {
          "kind": "text",
          "text": "Summarize the selected meeting notes."
        }
      ],
      "source_events": [
        {
          "event_id": "e1"
        }
      ],
      "kind": "message"
    }
  ],
  "tool_ids": [
    "read-notes"
  ],
  "configuration_id": "config-1"
}

Context Model Object

Retains the model identity and settings associated with this context.

Fixed fields

No fixed fields. This object retains fields defined by its declared dialect or enclosing discriminator.

Rules

This is an open map. Preserve unknown values. Reuse requires support for their declared semantics; an empty map does not prove that the source had no hidden settings.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "provider": "example",
  "id": "model-1",
  "temperature": 0.2
}

Context Request Parameters Object

Retains request settings associated with this exact context; unknown provider parameters are not silently translated.

Fixed fields

No fixed fields. This object retains fields defined by its declared dialect or enclosing discriminator.

Rules

This is an open map. Preserve unknown values. Reuse requires support for their declared semantics; an empty map does not prove that the source had no hidden settings.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "max_output_tokens": 1024
}

Branch Object

Selects an ordered conversation history and its head within this capture.

Fixed fields

Field Type Required Description
id string Yes Opaque, case-sensitive identity within the object's declared scope. Minimum length: 1.
event_ids array of string Yes Ordered, duplicate-free selection of included event IDs. Items MUST be unique.
head_event_id string / null Yes Final selected event ID, or null for an empty branch.
fork Branch Fork Object No Explicit source boundary for a branch fork.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "id": "main",
  "event_ids": [
    "e1"
  ],
  "head_event_id": "e1"
}

Branch Fork Object

Records the source branch boundary at which histories diverged. It does not imply a filesystem rewind.

Fixed fields

Field Type Required Description
session_id string Yes Logical session ID of the referenced boundary. Minimum length: 1.
capture_id string Yes Immutable capture ID of the referenced boundary. Minimum length: 1.
branch_id string Yes ID of the selected branch. Minimum length: 1.
event_id string / null Yes Event identity, resolved locally unless an external capture is explicit.
inclusive boolean Yes Whether the referenced boundary event is included.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "session_id": "session-parent",
  "capture_id": "capture-parent",
  "branch_id": "main",
  "event_id": "e2",
  "inclusive": true
}

Checkpoint Object

Records known state at a selected branch boundary, including unresolved calls, decisions and task revisions.

Fixed fields

Field Type Required Description
id string Yes Opaque, case-sensitive identity within the object's declared scope. Minimum length: 1.
branch_id string Yes ID of the selected branch. Minimum length: 1.
at_event_id string / null Yes Event at the recorded boundary, or null for an empty boundary.
knowledge enum Yes How much of the effective state or configuration is known. One of "observed", "derived", "unknown".
status enum Yes Recorded state at the relevant boundary; see the allowed values. One of "idle", "active", "waiting", "stopped", "ended", "unknown".
context_id string / null Yes ID of the selected Context Object.
configuration_id string / null Yes ID of the configuration snapshot used at this boundary.
open_calls array of Open Call Object Yes Unresolved invocation identities at this checkpoint.
open_decisions array of Open Decision Object Yes Unresolved decision-request identities at this checkpoint.
tasks array of Task State Object Yes Task revision selections at this checkpoint.
requirements array of Requirement Object Yes Prerequisites for the stated capability.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "id": "head",
  "branch_id": "main",
  "at_event_id": "e4",
  "knowledge": "observed",
  "status": "idle",
  "context_id": "continue-context",
  "configuration_id": "effective",
  "open_calls": [],
  "open_decisions": [],
  "tasks": [],
  "requirements": []
}

Open Call Object

Records a call whose outcome remains unresolved at the checkpoint; it does not authorize replay.

Fixed fields

Field Type Required Description
call_id string Yes Session-scoped identity of one logical invocation. Minimum length: 1.
state enum Yes Recorded pending or observed state; it is not a live process assertion. One of "pending", "outcome_unknown".

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "call_id": "call-1",
  "state": "outcome_unknown"
}

Open Decision Object

Records an unresolved decision at the checkpoint; absence of a resolution is not consent.

Fixed fields

Field Type Required Description
request_id string Yes Session-scoped identity of the exact decision request. Minimum length: 1.
state enum Yes Recorded pending or observed state; it is not a live process assertion. One of "pending", "outcome_unknown".

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "request_id": "approval-1",
  "state": "pending"
}

Task State Object

Selects the current revision of a recorded task at a checkpoint.

Fixed fields

Field Type Required Description
task_id string Yes Identity of the versioned task. Minimum length: 1.
revision integer Yes Versioned definition or task revision within its identity. Minimum: 0. Maximum: 9007199254740991.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "task_id": "summary",
  "revision": 1
}

Usage Object

Attributes a measured or reported counter to an explicit scope, unit and provenance.

Fixed fields

Field Type Required Description
scope enum Yes Domain or activation scope to which this declaration applies. One of "event", "turn", "execution", "session".
scope_id string Yes Identity of the entity to which the counter applies. Minimum length: 1.
unit string Yes Unit of the reported counter; counters with different units cannot be summed directly. Minimum length: 1.
value number Yes Value interpreted according to the enclosing schema, dialect or counter. Minimum: 0.
counter enum Yes Whether this value is a delta or a cumulative counter; cumulative observations MUST NOT be added as independent deltas. One of "delta", "cumulative".
provenance Provenance Object Yes Evidence classification and source attribution.

Rules

See session semantics.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "scope": "execution",
  "scope_id": "execution-1",
  "unit": "tokens",
  "value": 120,
  "counter": "delta",
  "provenance": {
    "mode": "reported",
    "producer": "example-meter"
  }
}

Event Object

Immutable envelope for a recorded occurrence, including identity, attribution, causality and kind-specific data.

Fixed fields

Field Type Required Description
id string Yes Opaque, case-sensitive identity within the object's declared scope. Minimum length: 1.
sequence integer Yes Unique nonnegative serialization position in this capture; not a causal or wall-clock timestamp. Minimum: 0. Maximum: 9007199254740991.
actor_id string Yes ID of the participant responsible for the event. Minimum length: 1.
kind enum Yes Discriminator selecting this object's interpretation. One of "message", "tool_call", "tool_result", "decision_request", "decision_resolution", "task_update", "context_checkpoint", "configuration_change", "execution_transition", "resource_change", "note", "extension".
causes array of Event Reference Object Yes Explicit causal predecessor event references.
provenance Provenance Object Yes Evidence classification and source attribution.
data Event Data Object Yes Kind-specific payload; for an embedded resource this is base64-encoded bytes.
time string No Recorded observation time; it does not define causality. Minimum length: 1.
execution_id string No ID of the associated execution. Minimum length: 1.
supersedes Event Reference Object No Reference to an earlier record corrected by this event; evidence remains preserved.
extensions Extension Map Object No Namespaced extension values.

Rules

See event rules. The enclosing kind selects one of the event-data objects below. Local causal edges MUST be acyclic and point to earlier serialized events. Task updates MUST omit envelope supersedes; corrections use new task revisions and previous_revision.

  • When kind is "message", data requires role, parts.
  • When kind is "tool_call", data requires call_id, tool_id, arguments, arguments_status.
  • When kind is "tool_result", data requires call_id, result_index, terminal, outcome, parts.
  • When kind is "decision_request", data requires request_id, decision_kind, prompt, options.
  • When kind is "decision_resolution", data requires request_id, outcome, answer.
  • When kind is "task_update", data requires task_id, revision, status, parts; omit supersedes.
  • When kind is "context_checkpoint", data requires context_id, reason.
  • When kind is "configuration_change", data requires configuration_id.
  • When kind is "execution_transition", data requires execution_id, status.
  • When kind is "resource_change", data requires resource_id, operation.
  • When kind is "note", data requires parts, category.
  • When kind is "extension", data requires type, value, interpretation_required.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "id": "e1",
  "sequence": 0,
  "actor_id": "person",
  "kind": "message",
  "causes": [],
  "provenance": {
    "mode": "synthetic",
    "producer": "asif-example",
    "method": "authored conformance example",
    "inputs": []
  },
  "data": {
    "role": "user",
    "parts": [
      {
        "kind": "text",
        "text": "Summarize the selected meeting notes."
      }
    ]
  }
}

Event Data Object

Discriminated payload selected by the enclosing Event Object's kind. Use the corresponding event data object below.

Fixed fields

No fixed fields. This object retains fields defined by its declared dialect or enclosing discriminator.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "role": "user",
  "parts": [
    {
      "kind": "text",
      "text": "Summarize the attachment."
    }
  ]
}

Extension Map Object

Carries namespaced extension values without changing the meaning of core fields.

Fixed fields

No fixed fields. This object retains fields defined by its declared dialect or enclosing discriminator.

Rules

This is an open map. Preserve unknown values. Reuse requires support for their declared semantics; an empty map does not prove that the source had no hidden settings.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "example.annotation/1": {
    "label": "reviewed"
  }
}

Message Data Object

A conversation message whose role is separate from the event actor's identity.

Fixed fields

Field Type Required Description
role enum Yes Message role used for this input, independently of participant identity. One of "user", "assistant", "system", "developer", "tool", "unknown".
parts array of Text Part Object / Resource Part Object / Structured Part Object / Opaque Part Object Yes Ordered content parts. Order is semantically significant.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "role": "user",
  "parts": [
    {
      "kind": "text",
      "text": "Summarize the selected meeting notes."
    }
  ]
}

Tool Call Data Object

One logical invocation and its known arguments. Partial arguments cannot be executed as a completed call.

Fixed fields

Field Type Required Description
call_id string Yes Session-scoped identity of one logical invocation. Minimum length: 1.
tool_id string Yes ID of the referenced tool definition. Minimum length: 1.
arguments JSON value Yes Exact known JSON argument value; completeness is declared separately.
arguments_status enum Yes Whether the known arguments are complete, partial or unknown. One of "complete", "partial", "unknown".
retry_of string No ID of an earlier invocation being retried; the retry has a new call ID. Minimum length: 1.

Rules

See tool-call progression rules. A partial or unknown invocation can gain arguments through a new event with local supersedes, retaining its call/tool/actor/execution/retry identity. Completed calls cannot be amended through this mechanism; retries use a new call ID. Selected histories must choose a single amendment chain. These are inter-event semantic checks beyond JSON Schema.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "call_id": "call-1",
  "tool_id": "summarize",
  "arguments": {
    "resource_id": "source-csv"
  },
  "arguments_status": "complete"
}

Tool Result Data Object

One indexed result for a correlated call, including its terminal marker and outcome.

Fixed fields

Field Type Required Description
call_id string Yes Session-scoped identity of one logical invocation. Minimum length: 1.
result_index integer Yes Monotonically increasing result position within the call's selected history. Minimum: 0. Maximum: 9007199254740991.
terminal boolean Yes Whether this is the final result or fragment in its declared scope.
outcome enum Yes Recorded result or assessment outcome; unknown remains explicit. One of "success", "error", "cancelled", "unknown".
parts array of Text Part Object / Resource Part Object / Structured Part Object / Opaque Part Object Yes Ordered content parts. Order is semantically significant.

Rules

See normative session rules.

  • When terminal is false, outcome MUST be "unknown".

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "call_id": "call-1",
  "result_index": 0,
  "terminal": true,
  "outcome": "success",
  "parts": [
    {
      "kind": "resource",
      "resource_id": "output-csv",
      "description": "CSV with total row."
    },
    {
      "kind": "resource",
      "resource_id": "report",
      "description": "Markdown report."
    }
  ]
}

Decision Request Data Object

A question, approval or review request, optionally bound to a call or an exact task revision.

Fixed fields

Field Type Required Description
request_id string Yes Session-scoped identity of the exact decision request. Minimum length: 1.
decision_kind enum Yes Whether this request is an approval, question or plan review. One of "approval", "question", "plan_review".
prompt array of Text Part Object / Resource Part Object / Structured Part Object / Opaque Part Object Yes Ordered content presented for the decision.
options array of Decision Request Option Object Yes Selectable options, with stable IDs within this request.
call_id string No Session-scoped identity of one logical invocation. Minimum length: 1.
task_id string No Identity of the versioned task. Minimum length: 1.
task_revision integer No Exact task revision to which the request applies. Minimum: 0. Maximum: 9007199254740991.

Rules

See normative session rules.

  • When task_id is present, task_revision MUST also be present.
  • When task_revision is present, task_id MUST also be present.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "request_id": "approval-1",
  "decision_kind": "approval",
  "prompt": [
    {
      "kind": "text",
      "text": "Allow access to meeting-42?"
    }
  ],
  "options": [
    {
      "id": "allow",
      "label": "Allow"
    },
    {
      "id": "deny",
      "label": "Deny"
    }
  ],
  "call_id": "call-1"
}

Decision Request Option Object

A selectable answer with a stable ID within its decision request.

Fixed fields

Field Type Required Description
id string Yes Opaque, case-sensitive identity within the object's declared scope. Minimum length: 1.
label string Yes Human-readable option label.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "id": "deny",
  "label": "Deny"
}

Decision Resolution Data Object

Records the outcome of the exact referenced request. Historical approval does not authorize a receiving runtime.

Fixed fields

Field Type Required Description
request_id string Yes Session-scoped identity of the exact decision request. Minimum length: 1.
outcome enum Yes Recorded result or assessment outcome; unknown remains explicit. One of "allowed", "denied", "answered", "cancelled", "expired", "unknown".
answer array of Text Part Object / Resource Part Object / Structured Part Object / Opaque Part Object Yes Recorded answer content, which may be empty for non-text outcomes.
selected_option_id string No ID of the exact selected option in the referenced request. Minimum length: 1.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "request_id": "question-1",
  "outcome": "answered",
  "answer": [
    {
      "kind": "text",
      "text": "Use the attached CSV."
    }
  ]
}

Task Update Data Object

A versioned task state, with optional predecessor and dependency declarations.

Fixed fields

Field Type Required Description
task_id string Yes Session-scoped identity of the logical task. Minimum length: 1.
revision integer Yes Revision number unique within this task identity; numbers need not be contiguous. Minimum: 0. Maximum: 9007199254740991.
status enum Yes Recorded state at the relevant boundary; see the allowed values. One of "proposed", "pending", "in_progress", "completed", "failed", "cancelled", "superseded", "unknown".
parts array of Text Part Object / Resource Part Object / Structured Part Object / Opaque Part Object Yes Ordered content parts. Order is semantically significant.
previous_revision integer No Exact preceding selected revision, strictly smaller than revision. An omitted predecessor event requires partial task coverage. Minimum: 0. Maximum: 9007199254740991.
dependencies array of string No Complete declared prerequisite task IDs for this revision. Resolve to latest selected revisions at the assessed boundary. Omission is unknown; [] declares none. No implicit inheritance, execution ordering or status cascade. Items MUST be unique.
reopen_reason string No Required nonempty explanation when a completed, failed, cancelled or superseded task becomes proposed, pending or in_progress. Minimum length: 1.

Rules

See task revision and dependency semantics. Dependencies are session-scoped task IDs interpreted at the selected boundary, with no implicit scheduling or status cascade. Every target must be declared locally, selected dependency graphs must remain acyclic, and absent predecessor history requires partial task coverage. Task updates use previous_revision, never envelope supersedes. Reopening completed, failed, cancelled or superseded tasks as proposed, pending or in_progress requires reopen_reason.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "task_id": "task-1",
  "revision": 1,
  "status": "pending",
  "parts": [
    {
      "kind": "text",
      "text": "Summarize the attached report."
    }
  ]
}

Context Checkpoint Data Object

Records the selection or replacement of a context, including a compaction boundary.

Fixed fields

Field Type Required Description
context_id string Yes ID of the selected Context Object. Minimum length: 1.
reason enum Yes Reason for the recorded operation or unavailable interpretation. One of "initial", "request", "compaction", "manual", "unknown".
replaced_context_id string No ID of the context replaced by this checkpoint or compaction. Minimum length: 1.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "context_id": "compacted",
  "reason": "compaction",
  "replaced_context_id": "before"
}

Configuration Change Data Object

Records a new configuration snapshot; effective use is determined by referencing contexts and executions.

Fixed fields

Field Type Required Description
configuration_id string Yes ID of the configuration snapshot used at this boundary. Minimum length: 1.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "configuration_id": "configuration-1"
}

Execution Transition Data Object

Records an observed execution lifecycle transition without claiming a process is still alive.

Fixed fields

Field Type Required Description
execution_id string Yes ID of the associated execution. Minimum length: 1.
status enum Yes Recorded state at the relevant boundary; see the allowed values. One of "running", "completed", "failed", "cancelled", "interrupted", "unknown".
error JSON value No Captured error evidence; its contents do not establish a recovery action.
parts array of Text Part Object / Resource Part Object / Structured Part Object / Opaque Part Object No Ordered content parts. Order is semantically significant.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "execution_id": "execution-1",
  "status": "completed",
  "parts": [
    {
      "kind": "text",
      "text": "The response was recorded."
    }
  ]
}

Resource Change Data Object

Records creation, modification, deletion or observation of a resource identity.

Fixed fields

Field Type Required Description
resource_id string Yes ID of the referenced Resource Object. Minimum length: 1.
operation enum Yes Kind of resource change recorded by the event. One of "created", "modified", "deleted", "observed".
previous_resource_id string No ID of the prior immutable resource version. Minimum length: 1.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "resource_id": "resource-1",
  "operation": "created"
}

Note Data Object

Explanatory content with no implicit execution or authorization meaning.

Fixed fields

Field Type Required Description
parts array of Text Part Object / Resource Part Object / Structured Part Object / Opaque Part Object Yes Ordered content parts. Order is semantically significant.
category string Yes Names the explanatory note category. Minimum length: 1.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "category": "redaction",
  "parts": [
    {
      "kind": "text",
      "text": "A sanitized replacement is supplied."
    },
    {
      "kind": "resource",
      "resource_id": "sanitized",
      "description": "Distinct replacement resource."
    }
  ]
}

Extension Data Object

An event with namespaced semantics; required interpretation is also advertised in required_features.

Fixed fields

Field Type Required Description
type string Yes Namespaced semantic type or entity type, as defined by the enclosing object. Minimum length: 1.
value JSON value Yes Value interpreted according to the enclosing schema, dialect or counter.
interpretation_required boolean Yes Whether understanding this event is required; its feature must also be declared.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "type": "example.annotation/1",
  "value": {
    "label": "reviewed"
  },
  "interpretation_required": false
}

Coverage Object

Declares the completeness or known absence of one session domain. An empty collection alone makes no completeness claim.

Fixed fields

Field Type Required Description
scope enum Yes Domain or activation scope to which this declaration applies. One of "participants", "conversation", "branches", "executions", "contexts", "configuration", "tools", "decisions", "tasks", "resources", "environment", "native", "usage".
status enum Yes Recorded state at the relevant boundary; see the allowed values. One of "complete", "partial", "known_empty", "unavailable", "excluded", "not_inspected", "not_applicable".
detail string Yes Explanation of the stated status or evidence. Minimum length: 1.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "scope": "resources",
  "status": "complete",
  "detail": "All modeled input resources included."
}

Loss Object

Discloses information omitted or changed during capture, normalization, redaction or translation.

Fixed fields

Field Type Required Description
id string Yes Opaque, case-sensitive identity within the object's declared scope. Minimum length: 1.
stage enum Yes Transformation stage; in a Git index entry, the conflict stage number. One of "capture", "normalization", "redaction", "translation".
kind string Yes Discriminator selecting this object's interpretation. Minimum length: 1.
scope enum No Domain or activation scope to which this declaration applies. One of "participants", "conversation", "branches", "executions", "contexts", "configuration", "tools", "decisions", "tasks", "resources", "environment", "native", "usage".
references array of Loss References Object No Typed identities affected by this loss.
explanation string Yes Reason for the declaration or limitation. Minimum length: 1.

Rules

See normative session rules.

  • Supply at least one of: scope, references.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "id": "context-compaction",
  "stage": "normalization",
  "kind": "summarization",
  "scope": "contexts",
  "explanation": "The compacted input loses original detail; history and original attachment remain preserved."
}

Loss References Object

Identifies an entity affected by a loss using its entity type and ID.

Fixed fields

Field Type Required Description
type string Yes Namespaced semantic type or entity type, as defined by the enclosing object. Minimum length: 1.
id string Yes Opaque, case-sensitive identity within the object's declared scope. Minimum length: 1.

Rules

See normative session rules.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "type": "resource",
  "id": "missing"
}

Stream Segment Object

Selects an exact byte slice of a captured resource and its position in a logical stream.

Fixed fields

Field Type Required Description
index integer Yes Zero-based fragment position within its stream. Minimum: 0. Maximum: 9007199254740991.
resource_id string Yes ID of the referenced Resource Object. Minimum length: 1.
offset integer Yes Zero-based byte offset into the referenced resource. Minimum: 0. Maximum: 9007199254740991.
length integer Yes Number of bytes in the selected span. Minimum: 0. Maximum: 9007199254740991.
terminal boolean Yes Whether this is the final result or fragment in its declared scope.

Rules

See session semantics.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "index": 0,
  "resource_id": "argument-fragment",
  "offset": 0,
  "length": 19,
  "terminal": true
}

Stream Object

Binds incremental argument or text-result bytes to a core event. A complete stream must agree with that event's assembled value.

Fixed fields

Field Type Required Description
id string Yes Opaque, case-sensitive identity within the object's declared scope. Minimum length: 1.
kind enum Yes Discriminator selecting this object's interpretation. One of "tool_arguments", "tool_result_text".
event_id string Yes Event identity, resolved locally unless an external capture is explicit. Minimum length: 1.
call_id string Yes Session-scoped identity of one logical invocation. Minimum length: 1.
result_index integer No Monotonically increasing result position within the call's selected history. Minimum: 0. Maximum: 9007199254740991.
status enum Yes Recorded state at the relevant boundary; see the allowed values. One of "partial", "complete".
segments array of Stream Segment Object Yes Ordered byte-fragment declarations; gaps preserve partial status.

Rules

See stream assembly rules. tool_result_text requires result_index. Complete argument streams MUST decode as JSON equal to the bound call arguments; complete result streams MUST equal the bound text result.

  • When kind is "tool_result_text", require result_index.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "id": "stream-1",
  "kind": "tool_arguments",
  "event_id": "e-call",
  "call_id": "call-read",
  "status": "complete",
  "segments": [
    {
      "index": 0,
      "resource_id": "argument-fragment",
      "offset": 0,
      "length": 19,
      "terminal": true
    }
  ]
}

External Binding Object

Binds an invocation or decision request from an earlier capture to its immutable source boundary and descriptor.

Fixed fields

Field Type Required Description
kind enum Yes Discriminator selecting this object's interpretation. One of "call", "request".
id string Yes Opaque, case-sensitive identity within the object's declared scope. Minimum length: 1.
source External Binding Source Object Yes Source identity and boundary or report binding.
descriptor External Binding Descriptor Object Yes Call or request declaration selected by the binding kind.

Rules

See external binding rules. call selects the External Call Descriptor; request selects the External Request Descriptor. Bindings do not synthesize events or authorize replay.

  • When kind is "call", descriptor requires tool_id, arguments, arguments_status.
  • When kind is "request", descriptor requires decision_kind, prompt, options.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "kind": "call",
  "id": "call-previous",
  "source": {
    "session_id": "session-parent",
    "capture_id": "capture-parent",
    "event_id": "e2"
  },
  "descriptor": {
    "tool_id": "tool-read",
    "arguments": {
      "path": "notes.md"
    },
    "arguments_status": "complete"
  }
}

External decision request

A later capture may contain the answer without including the original request event.

{
  "kind": "request",
  "id": "question-earlier",
  "source": {
    "session_id": "session-1",
    "capture_id": "capture-earlier",
    "event_id": "e-question"
  },
  "descriptor": {
    "decision_kind": "question",
    "prompt": [
      {
        "kind": "text",
        "text": "Which report should I summarize?"
      }
    ],
    "options": [
      {
        "id": "annual",
        "label": "Annual report"
      }
    ]
  }
}

External Binding Source Object

Names the exact source event of an external call or request; no external data is fetched implicitly.

Fixed fields

Field Type Required Description
session_id string Yes Logical session ID of the referenced boundary. Minimum length: 1.
capture_id string Yes Immutable capture ID of the referenced boundary. Minimum length: 1.
event_id string Yes Event identity, resolved locally unless an external capture is explicit. Minimum length: 1.

Rules

See session semantics.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "event_id": "e2",
  "session_id": "session-parent",
  "capture_id": "capture-parent"
}

External Binding Descriptor Object

Discriminated descriptor selected by the enclosing external binding's kind.

Fixed fields

No fixed fields. This object retains fields defined by its declared dialect or enclosing discriminator.

Rules

See session semantics.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "tool_id": "tool-read",
  "arguments": {
    "path": "notes.md"
  },
  "arguments_status": "complete"
}

External Call Descriptor Object

Preserves the tool and argument contract of an invocation outside the included event history.

Fixed fields

Field Type Required Description
tool_id string Yes ID of the referenced tool definition. Minimum length: 1.
arguments JSON value Yes Exact known JSON argument value; completeness is declared separately.
arguments_status enum Yes Whether the known arguments are complete, partial or unknown. One of "complete", "partial", "unknown".

Rules

See session semantics.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "tool_id": "tool-read",
  "arguments": {
    "path": "notes.md"
  },
  "arguments_status": "complete"
}

External Request Descriptor Object

Preserves the kind, prompt and options of a decision request outside the included event history.

Fixed fields

Field Type Required Description
decision_kind enum Yes Whether this request is an approval, question or plan review. One of "approval", "question", "plan_review".
prompt array of Text Part Object / Resource Part Object / Structured Part Object / Opaque Part Object Yes Ordered content presented for the decision.
options array of External Request Option Object Yes Selectable options, with stable IDs within this request.

Rules

See session semantics.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "decision_kind": "approval",
  "prompt": [],
  "options": []
}

External Request Option Object

One selectable option of an externally bound decision request.

Fixed fields

Field Type Required Description
id string Yes Opaque, case-sensitive identity within the object's declared scope. Minimum length: 1.
label string Yes Human-readable option label.

Rules

See session semantics.

Additional properties are permitted and MUST be preserved when relaying supported JSON values. They do not acquire execution semantics without a declared feature or dialect.

Example

{
  "id": "deny",
  "label": "Deny"
}