ag-ui-protocol / ag-ui-protocol/ag-ui

Triage & merge plan: @ferponse ADK-middleware / transport contributions

オープン
#2,162 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
enhancement
主要言語
Python
スター
15.9k
フォーク
1.4k
平均マージ
1日 17時間
マージ済み PR(30日)
163

説明

Thank you @ferponse for the submissions and I apologize for the delay in responding, though
even this response is more of a placeholder as your requests can't be considered in bulk and, with
most of them being features rather than fixes, some require more consideration than others.

## Why this is one issue

@ferponse opened **8 PRs + 5 protocol-design issues** (Jul 1–2), all opt-in / default-off,
and pinged me on each. The PRs are individually reasonable, but nearly all of them append a
flag to the **same three files** — so they conflict with each other and, if eventually accepted,
have to be merged in **sequence**, re-running the middleware suite between each. This issue is
the single home for hat sequence; the far-reaching *protocol-direction* questions live in a separate
Proposal discussion (linked at the bottom).

## File hotspots (why serial)

| File | Region | PRs that collide |
|------|--------|------------------|
| `event_translator.py` | import block + top of `translate()` | #2104, #2073, #2076, #2099 |
| `adk_agent.py` | `__init__` / `from_app` signature | #2108, #2102, #2099, #2076 |
| `endpoint.py` | `capabilities_endpoint` transport dict | #2097, #2085 (+ #2108 feeds it) |
| run flow | `RUN_FINISHED` / completion | #2102, #2076, #2085 |

## Merge order

**Rebasing later PRs onto the earlier merges is on the contributor.**

### ⛔ Precursor — land first, standalone
- [ ] `chore` · **Bump `ag-ui-protocol` minimum pin → `>=0.1.18` (ideally `0.1.19`)** in
`integrations/adk-middleware/python/pyproject.toml`. Unblocks #2102's imports of
`Interrupt` / `RunFinishedInterruptOutcome` and de-risks all interrupt-related work.

### Phase 1 — `event_translator.py` chain (cleanest)
- [ ] `feature` · **#2104** — ACTIVITY_SNAPSHOT/DELTA from `custom_metadata` markers · *closes #2103*
→ merge first. Ask: add a malformed-delta test + assert activity-precedes-text ordering.
- [ ] `fix` · **#2073** — REASONING_ENCRYPTED_VALUE for thought signatures · *closes #2072*
→ Ask: add `self._emitted_signature_tool_call_ids.clear()` to `reset()` (unbounded growth
across sequential runs). Optionally handle streaming-fc-args id remap.
- [ ] `feature` · **#2076** — opt-in STEP_STARTED/FINISHED for workflows · *closes #2075*
→ Ask: also call `finalize_step_events()` on the `except` / RUN_ERROR path so an exception
can't leave steps open.
- [ ] `feature` · **#2099** — RAW passthrough of untranslated ADK events · *closes #2098*
→ Ask: LRO/HITL events bypass `translate()` and get no RAW event — close the gap or document
it. **Needs my scope sign-off** (author explicitly requested it).

### Phase 2 — `adk_agent.py` config
- [ ] `feature` · **#2108** — auto-discover AgentCapabilities · *closes #2107*
→ Ask: flag-off is not "100% unchanged" — `capabilities={}` now returns `None`; make it an
explicit `is not None` check **+ a test**. Fix the description: the factory is `from_app()`,
not the nonexistent `create()`.
- [ ] `feature` · **#2102** — HITL pauses → interrupts on `RUN_FINISHED.outcome` · *closes #2101*
→ **Blocked on the precursor pin bump.** Ask: add an end-to-end test that drives a real HITL
pause through the consumer loop; reuse the authoritative HITL marker set instead of treating
every unresolved `TOOL_CALL_END` as an interrupt.

### Phase 3 — `endpoint.py` transports (reconcile against #2108's capabilities path)
- [ ] `feature` · **#2097** — httpBinary (protobuf-over-HTTP) on the Python side · *closes #2094*
→ Ask: don't advertise `httpBinary` unless the protobuf extra is importable (else clients
negotiate a transport that fails with an empty stream); surface an error frame on binary
encode failure; drop the dead capabilities guard.
- [ ] `feature` · **#2085** — WebSocket transport · *closes #2084* · **request changes, land last**
→ Must: fix the 3 broken `test_capabilities.py` tests; make transport advertisement additive
(no force-override / in-place mutation / dead branch); add real `/ws` + `WebSocketAgent`
tests; and either implement or delete the single-socket HITL claim. Pending transport-roadmap
decision (see discussion).

## Protocol-direction questions (handled separately)

The 5 design issues — #2154, #2146, #2106, #2105, #2091 — touch the core protocol surface and
are being decided together, not piecemeal:

➡️ **[Proposals discussion #2161](https://github.com/ag-ui-protocol/ag-ui/discussions/2161)**

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。