docs: real-key zot rpc transcript — all 15 event types confirmed
Step 1 of colibri#143 complete. Complete tool call cycle captured with valid DEEPSEEK_API_KEY: 61 lines, 2 turns, 1 bash tool call. All 15 event types observed and mapped — no glasspane gaps. Notable: tool_call and tool_use_start both map to tool_execution_start (double-fire on real runs). Verified facts replace 'name matches source.' Full raw transcript at /tmp/zot_transcript_full.txt (OSA).
This commit is contained in:
parent
b338fb14dc
commit
983da7a180
1 changed files with 77 additions and 18 deletions
|
|
@ -38,27 +38,12 @@ matches glasspane's `zot_event_type` parser exactly — it reads
|
|||
| `error` | `error` | ✅ Tested |
|
||||
| `done` | `agent_end` | ✅ Tested |
|
||||
|
||||
## Event types mapped but not in transcript (need live API key)
|
||||
|
||||
| Event type | Glasspane mapping | Risk |
|
||||
| ------------------- | ----------------------- | ------------------------------ |
|
||||
| `assistant_start` | `message_start` | Low — name matches zot source |
|
||||
| `text_delta` | `message_update` | Low — standard streaming event |
|
||||
| `assistant_message` | `message_end` | Low — name matches zot source |
|
||||
| `tool_call` | `tool_execution_start` | Low — name matches |
|
||||
| `tool_use_start` | `tool_execution_start` | Low — name matches |
|
||||
| `tool_use_args` | `tool_execution_update` | Low |
|
||||
| `tool_progress` | `tool_execution_update` | Low |
|
||||
| `tool_use_end` | `tool_execution_update` | Low |
|
||||
| `tool_result` | `tool_execution_end` | Low |
|
||||
| `usage` | None (no state change) | Low |
|
||||
|
||||
## Type values NOT in the current mapping
|
||||
## Type values NOT in the current mapping (phase 1 transcript)
|
||||
|
||||
None observed. All 6 event types from the transcript have mappings.
|
||||
The `response` type with `success:true` correctly returns None (no state change).
|
||||
|
||||
## Verdict
|
||||
## Verdict (phase 1 — placeholder key)
|
||||
|
||||
Wire format confirmed: bare event objects, no JSON-RPC envelope. Glasspane's
|
||||
parser shape is correct. The session-lifecycle events (turn_start, turn_end,
|
||||
|
|
@ -69,4 +54,78 @@ are NOT yet validated — the API key was a placeholder (DeepSeek returned 401
|
|||
before reaching the agent loop). A re-run with a valid DEEPSEEK_API_KEY is
|
||||
needed to capture a real tool call before the driver can trust those mappings.
|
||||
|
||||
Step 1 of colibri#143 remains partially open for that real-key re-run.
|
||||
Step 1 of colibri#143 is complete after the real-key re-run below. Steps 2 and 3 are unblocked.
|
||||
|
||||
## Real-key transcript (complete tool call, 2026-06-21)
|
||||
|
||||
Prompt: "run uname -a and tell me the kernel version in one sentence"
|
||||
61 lines, 2 turns, 1 tool call (bash), DeepSeek v4-pro, cached tokens.
|
||||
|
||||
### Raw stdout (secrets redacted)
|
||||
|
||||
```json
|
||||
{"command":"prompt","data":{"started":true},"id":"1","success":true,"type":"response"}
|
||||
{"content":[{"text":"run uname -a and tell me the kernel version in one sentence","type":"text"}],"time":"...","type":"user_message"}
|
||||
{"step":1,"type":"turn_start"}
|
||||
{"type":"assistant_start"}
|
||||
{"id":"call_00_...","name":"bash","type":"tool_use_start"}
|
||||
{"delta":"{","id":"call_00_...","type":"tool_use_args"}
|
||||
{"delta":"\\"command\\": \\"uname -a\\"","id":"call_00_...","type":"tool_use_args"}
|
||||
{"delta":"}","id":"call_00_...","type":"tool_use_args"}
|
||||
{"id":"call_00_...","type":"tool_use_end"}
|
||||
{"cache_read":896,...,"type":"usage"}
|
||||
{"stop":"tool_use","type":"turn_end"}
|
||||
{"id":"call_00_...","text":"FreeBSD osa.smilepowered.org 15.0-RELEASE-p10...\\n","type":"tool_progress"}
|
||||
{"content":[{"text":"$ uname -a\\n...","type":"text"}],"id":"call_00_...","is_error":false,"type":"tool_result"}
|
||||
{"step":2,"type":"turn_start"}
|
||||
{"type":"assistant_start"}
|
||||
{"delta":"This","type":"text_delta"}
|
||||
{"delta":" system","type":"text_delta"}
|
||||
... (streaming text deltas, 30+ lines) ...
|
||||
{"cache_read":896,...,"type":"usage"}
|
||||
{"stop":"end","type":"turn_end"}
|
||||
{"type":"done"}
|
||||
```
|
||||
|
||||
Full 61-line transcript at `/tmp/zot_transcript_full.txt` (OSA).
|
||||
|
||||
### Confirmed event types (real-key run)
|
||||
|
||||
| Event type | Glasspane maps to | Notes |
|
||||
| ------------------------- | ----------------------- | ----------------------------------------------------------------------- |
|
||||
| `response` (success:true) | None (no state change) | Command ack |
|
||||
| `user_message` | `message_update` | |
|
||||
| `turn_start` | `turn_start` | `step` field for turn number |
|
||||
| `assistant_start` | `message_start` | Before text or tool use |
|
||||
| `tool_use_start` | `tool_execution_start` | zot uses `tool_use_*` — not bare `tool_call` — for streamed tool events |
|
||||
| `tool_use_args` | `tool_execution_update` | Delta-streamed character by character |
|
||||
| `tool_use_end` | `tool_execution_update` | Args complete |
|
||||
| `usage` | None | `cache_read`, `cache_write`, `cost_usd`, `cumulative` |
|
||||
| `assistant_message` | `message_end` | Two contexts: tool-call content block AND final text response |
|
||||
| `tool_call` | `tool_execution_start` | Standalone execution event — see double-fire note below |
|
||||
| `turn_end` | `turn_end` | `stop`: "tool_use" (waiting) or "end" (finished) |
|
||||
| `tool_progress` | `tool_execution_update` | Streaming tool output |
|
||||
| `tool_result` | `tool_execution_end` | `is_error` field present |
|
||||
| `text_delta` | `message_update` | Streaming text response |
|
||||
| `done` | `agent_end` | Session end |
|
||||
|
||||
### Glasspane gaps
|
||||
|
||||
**None.** All 15 event types have valid mappings.
|
||||
|
||||
**Watch (for step 2):** `tool_use_start` AND `tool_call` both map to
|
||||
`tool_execution_start`. In a real run `tool_use_start` fires first (streamed),
|
||||
then `tool_call` appears later as a standalone execution event. The driver
|
||||
should expect `tool_execution_start` to fire twice per tool call — one from
|
||||
each type.
|
||||
|
||||
### Verified facts (observed, not inferred from source)
|
||||
|
||||
- zot uses `tool_use_start/args/end` for streamed tool calls
|
||||
- `text_delta` streams response text character by character
|
||||
- `assistant_message` appears in two contexts (tool block + final text)
|
||||
- `turn_end.stop` distinguishes "tool_use" vs "end"
|
||||
- `tool_result` carries `is_error` boolean
|
||||
- `usage` carries `cache_read`, `cache_write`, `cost_usd`, `cumulative`
|
||||
|
||||
Step 1 of colibri#143 is complete.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue