You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Phase B fixup: address CI e2e failures from runtime port + Kind/Type enum
Six classes of failures surfaced by the Python e2e CI:
1. `_make_subprocess_client(ctx, use_stdio=False)` in test_pending_work_resume_e2e.py
and test_suspend_e2e.py was still creating an stdio `RuntimeConnection` regardless
of the `use_stdio` flag (leftover from the bulk migration). The downstream
`f"localhost:{server.runtime_port}"` then formatted `None` because stdio doesn't
listen on a port, triggering `ValueError: Invalid port in cli_url: localhost:None`.
Now branches on `use_stdio` and constructs `RuntimeConnection.tcp(...)` when False.
2. `.kind.value` / `.type.value` usages in e2e tests assumed the discriminator
field was an `Enum`. After the Phase L codegen change it's a `ClassVar[str]`,
so direct equality (`r.kind == "write"`, `attachment.type == "file"`) works
and no `.value` is needed. Updated test_multi_client_e2e.py, test_permissions_e2e.py,
test_tools_e2e.py, test_session_e2e.py.
3. `test_rpc_tasks_and_handlers_e2e.py` was constructing the now-deleted
`PermissionDecision`/`PermissionDecisionApproveForIonApproval` merged
blob types. Rewrote each call to use the proper per-variant constructors
(`PermissionDecisionReject(feedback=...)`,
`PermissionDecisionApprovePermanently(domain=...)`,
`PermissionDecisionApproveForSession(approval=PermissionDecisionApproveForSessionApprovalCustomTool(...))`,
`PermissionDecisionApproveForLocation(location_key=..., approval=PermissionDecisionApproveForLocationApprovalCustomTool(...))`),
and `found_task.type == TaskInfoType.AGENT` to `isinstance(found_task, TaskAgentInfo)`.
4. Codegen: quicktype merges structurally-identical types and synthesizes a
fuzzy class name (`PermissionDecisionApproveForIonApproval` is the merge
of `PermissionDecisionApproveFor{Session,Location}Approval`). Extended
`acronymCandidates` to try the `Session→Ion` / `Location→Ion` substitutions
so the post-pass can resolve the fuzzy name, and added an explicit cleanup
step that deletes the now-orphan blob after the union rewrites complete.
Updated generated rpc.py reflects this.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
0 commit comments