Deploy the adapter fix and document the four outcomes
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -42,3 +42,22 @@ completed task is the wrong shape for "a human has to look at this".
|
||||
|
||||
One skill per instance, deliberately. A second one is a card change, which is
|
||||
the moment to ask whether the agent has quietly become a data proxy.
|
||||
|
||||
## Four outcomes, and only one of them completes
|
||||
|
||||
HTTP 200 from n8n does not mean the workflow answered. It returns 200 with an
|
||||
**empty body** when a node throws before the Respond node runs — a refused token
|
||||
exchange is the common way in. The adapter used to read that as a completed task
|
||||
carrying "(the workflow returned nothing)", which told the caller the task had
|
||||
succeeded: the one thing certainly false.
|
||||
|
||||
| `Outcome` | A2A task state |
|
||||
|---|---|
|
||||
| `ANSWERED` — the contract, `escalate: false` | `completed` |
|
||||
| `ESCALATED` — the contract, `escalate: true` | `failed` |
|
||||
| `SILENT` — 200 with an empty body | `failed` |
|
||||
| `OFF_CONTRACT` — a body that is not `{"answer", "escalate"}` | `failed` |
|
||||
|
||||
Off contract is returned **raw** so a workflow that has drifted is visible — but
|
||||
never as agreement. Escalation is `failed` for the older reason: an autonomous
|
||||
agent meeting a rule that needs approval must fail cleanly, never decide.
|
||||
|
||||
@@ -25,7 +25,7 @@ spec:
|
||||
type: RuntimeDefault
|
||||
containers:
|
||||
- name: adapter
|
||||
image: gitea.sttlab.eu/stt/a2a-n8n-adapter:v0.1.0
|
||||
image: gitea.sttlab.eu/stt/a2a-n8n-adapter:v0.2.0
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 8080
|
||||
|
||||
Reference in New Issue
Block a user