Pekko server and client transports - #221
Merged
kubinio123 merged 6 commits intoAug 18, 2026
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Adds Pekko (Future-based) streaming transports for both server and client, updates docs to mention Pekko, and aligns existing streaming http transports’ Tapir stream types.
Changes:
- Introduce Pekko server transports (HTTP SSE + STDIO) and associated test suites.
- Introduce Pekko client transports (HTTP streaming + STDIO) including internal state/pending-request management and tests.
- Update docs/README and build to include Pekko modules; normalize
sseBodytype parameters in ZIO/Ox transports.
Reviewed changes
Copilot reviewed 23 out of 24 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| server-streaming/server-zio/src/main/scala/chimp/server/zio/ZioServerHttpTransport.scala | Align Tapir StreamBodyIO binary stream type with streams.BinaryStream. |
| server-streaming/server-ox/src/main/scala/chimp/server/ox/OxServerHttpTransport.scala | Align Tapir StreamBodyIO binary stream type with streams.BinaryStream; cleanup import. |
| server-streaming/server-pekko/src/main/scala/chimp/server/pekko/PekkoServerHttpTransport.scala | New Pekko HTTP SSE server transport implementation. |
| server-streaming/server-pekko/src/main/scala/chimp/server/pekko/PekkoServerStdioTransport.scala | New Pekko STDIO server transport implementation. |
| server-streaming/server-pekko/src/main/scala/chimp/server/pekko/PekkoOutbound.scala | Shared outbound queue offering utility for Pekko server transports. |
| server-streaming/server-pekko/src/test/scala/chimp/server/pekko/PekkoToFuture.scala | Test integration utilities for Pekko-based server tests. |
| server-streaming/server-pekko/src/test/scala/chimp/server/pekko/PekkoMcpServerStdioSpec.scala | Server STDIO transport tests for Pekko. |
| server-streaming/server-pekko/src/test/scala/chimp/server/pekko/PekkoMcpServerHttpSpec.scala | Server HTTP transport tests for Pekko. |
| client-streaming/client-pekko/src/main/scala/chimp/client/transport/pekko/PekkoClientHttpTransport.scala | New Pekko HTTP streaming client transport (SSE + reconnect). |
| client-streaming/client-pekko/src/main/scala/chimp/client/transport/pekko/PekkoClientStdioTransport.scala | New Pekko STDIO client transport via subprocess. |
| client-streaming/client-pekko/src/main/scala/chimp/client/transport/pekko/internal/StateActor.scala | Internal typed actor wrapper to serialize state access. |
| client-streaming/client-pekko/src/main/scala/chimp/client/transport/pekko/internal/PekkoPendingRequests.scala | Pending request registry for Future-based Pekko client. |
| client-streaming/client-pekko/src/test/scala/chimp/client/transport/pekko/internal/StateActorSpec.scala | Tests for StateActor behavior and lifecycle. |
| client-streaming/client-pekko/src/test/scala/chimp/client/transport/pekko/PekkoToFuture.scala | Test integration utilities for Pekko-based client tests. |
| client-streaming/client-pekko/src/test/scala/chimp/client/transport/pekko/PekkoMcpClientStdioIntegrationSpec.scala | Client STDIO integration tests for Pekko. |
| client-streaming/client-pekko/src/test/scala/chimp/client/transport/pekko/PekkoMcpClientHttpIntegrationSpec.scala | Client HTTP streaming integration tests for Pekko. |
| docs/server/transport.md | Document Pekko transports and add security guidance for HTTP endpoints. |
| docs/server/quickstart.md | Add Pekko server dependency snippet. |
| docs/server/examples.md | Add Pekko server examples (HTTP streaming + STDIO). |
| docs/client/transport.md | Document Pekko client transports. |
| docs/client/quickstart.md | Add Pekko client dependency snippet. |
| docs/client/examples.md | Add Pekko bidirectional client example. |
| build.sbt | Add Pekko modules and dependencies to the build. |
| README.md | Update supported integrations list to include Pekko. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
|
||
| override def toFuture[A](fa: Future[A]): Future[A] = fa | ||
|
|
||
| override def sleep(millis: Long): Future[Unit] = after(millis.millis)(Future.unit) |
Collaborator
Author
There was a problem hiding this comment.
This compiles
Collaborator
Author
|
For the comments on truncation, as a SDK we should probably inherit from http layer and implement and impose for STDIO message size thresholds #223. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.