Skip to content

Status extension v1 ​

URI: https://madarauchiha-314.github.io/tiny-harness/a2a/ext/status/v1Key: io.github.madarauchiha-314.tiny-harness/status

The status extension says why a task is in TASK_STATE_INPUT_REQUIRED. The state stays the standard A2A value; the reason is a sub_state carried in two places, because A2A's TaskStatus has no metadata field:

  • Task.metadata, under the key above, while the task is INPUT_REQUIRED;
  • the TaskStatusUpdateEvent.metadata of the update that reports it.
sub_stateMeaning
awaiting-next-messageThe turn ended and the conversation is open: send the next message, or complete the task.
awaiting-answerThe harness asked a participant a question (ask_participant) and waits for the answer.

The metadata is written whether or not a client activates the extension. The value is an open string, not a closed enum, so a later sub-state is additive. A client MUST treat an unknown value as plain INPUT_REQUIRED. Leaving INPUT_REQUIRED removes the key.

Schema ​

json
{
  "$id": "https://madarauchiha-314.github.io/tiny-harness/a2a/ext/status/v1/schema.json",
  "additionalProperties": false,
  "description": "Why a task is TASK_STATE_INPUT_REQUIRED, under Task.metadata['io.github.madarauchiha-314.tiny-harness/status'] and TaskStatusUpdateEvent.metadata. A client MUST treat an unknown sub_state as plain INPUT_REQUIRED.",
  "properties": {
    "sub_state": {
      "description": "awaiting-next-message: the turn ended and the conversation is open; awaiting-answer: the harness asked a participant a question. Further values may be added.",
      "examples": [
        "awaiting-next-message",
        "awaiting-answer"
      ],
      "type": "string"
    }
  },
  "required": [
    "sub_state"
  ],
  "title": "StatusExtensionData",
  "type": "object"
}