Skip to content

SSE event stream 404 on latest v1.91.1 — endpoint mismatch: client requests /a2a/events, Hub serves /a2a/events/stream #600

Description

@StackWanderer775

{
"title": "SSE event stream 404 on latest v1.91.1 — endpoint mismatch: client requests /a2a/events, Hub serves /a2a/events/stream",
"body": "# SSE stream never connects on latest v1.91.1 — endpoint path mismatch\n\n## Summary\n\nOn @evomap/evolver@1.91.1 (current npm latest), the Hub SSE event stream\nfails to connect on every attempt. Heartbeat works fine; SSE fails with\neventsource_not_available and re-exponentially-backs to a 120s interval,\nleaving the evolution loop completely stalled.\n\nRoot cause identified: evolver constructs the SSE URL as /a2a/events\n(or /a2a/stream), but the current Hub only exposes the SSE endpoint at\nGET /a2a/events/stream?node_id=....\n\n## Environment\n\n- evolver: 1.91.1 (npm view @evomap/evolver version → 1.91.1)\n- OS: Linux aarch64 (Raspberry Pi, 1.8GB RAM), Ubuntu 22.04\n- Node: 24.18.0\n- Hub: https://evomap.ai (default)\n- Node ID: 16-hex node_fb019fe4f7276a1b (format valid, 12–32 hex)\n\n## Expected behavior\n\nevolver --loop establishes a stable SSE connection to the Hub and\nreceives real-time evolution events (no sse_open_failed logs).\n\n## Actual behavior\n\nEvery SSE attempt fails and enters exponential backoff:\n\njson\n{\"ts\":\"2026-07-12T19:36:10.260Z\",\"type\":\"heartbeat_ok\",\"tick\":3,\"fpSent\":false,\"pendingEvents\":false}\n{\"ts\":\"2026-07-12T19:36:10.780Z\",\"type\":\"sse_open_failed\",\"error\":\"eventsource_not_available\",\"reconnectInMs\":120000}\n{\"ts\":\"2026-07-12T19:38:10.786Z\",\"type\":\"sse_open_failed\",\"error\":\"eventsource_not_available\",\"reconnectInMs\":120000}\n\n\nheartbeat_ok succeeds on every tick; SSE never recovers.\n\n## Reproduction\n\nbash\nexport A2A_HUB_URL=https://evomap.ai\nexport A2A_NODE_ID=<16-hex-node-id>\nexport A2A_NODE_SECRET=<secret>\nnode $(which evolver) --loop\n\n\nObserve evolver_loop.log: heartbeat ok, SSE eventsource_not_available\nevery 2 minutes forever.\n\n## Diagnosis (evidence)\n\n1. GET /a2a/events → HTTP 404\n2. GET /a2a/stream → HTTP 404\n3. Both 404 responses include a suggestions field listing the actual\n registered route:\n\njson\n{\"method\":\"GET\",\"path\":\"/a2a/events/stream\",\n \"description\":\"SSE event stream for real-time agent notifications (?node_id)\"}\n\n\n4. GET /a2a/events/stream?node_id=... → HTTP 200, SSE stream opens\n successfully (verified with curl).\n\n5. Heartbeat with same credentials works correctly:\n\njson\n{\"ok\":true,\"response\":{\"node_status\":\"active\",\"your_node_id\":\"node_fb019fe4f7276a1b\"}}\n\n\nSo node_id format, auth, and Hub reachability are all fine.\nThe SSE URL is simply pointing at a path that no longer exists.\n\n## Relevant prior issue\n\nGitHub Issue #380 describes the same SSE reconnect loop. Official response\n(autogame-17, 2026-04-18) noted that the SSE reconnect loop lives in the\nobfuscated src/gep/a2aProtocol.js and that the fix had shipped in\nv1.67.x–v1.69.1. However the problem persists unchanged in v1.91.1.\n\nThe v1.69.1 era fix apparently targeted a different SSE failure mode\n(connection drops / auth storms). The current failure is a plain 404\nendpoint mismatch — a stale hardcoded path in the SSE URL builder.\n\n## Request\n\n1. Please fix the SSE URL in src/gep/a2aProtocol.js (or whichever module\n constructs the stream URL) to use GET /a2a/events/stream?node_id=...\n matching the current Hub route.\n2. Confirm whether /a2a/events/poll is also still removed from the Hub,\n as EVOLVER_SSE_DISABLED=1 currently has no working poll fallback\n (GET /a2a/events/poll → 404).\n\nNo credentials are included in this report. No files were modified except\nlocal env vars for testing."
}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions