Skip to content

[1/x] feat: add proto/gRPC plugin for structured inter-service communication#211

Open
keugenek wants to merge 1 commit intomainfrom
feat/proto-grpc-plugin
Open

[1/x] feat: add proto/gRPC plugin for structured inter-service communication#211
keugenek wants to merge 1 commit intomainfrom
feat/proto-grpc-plugin

Conversation

@keugenek
Copy link
Contributor

Add a new first-class appkit plugin that brings protobuf message definitions, gRPC transport, and binary serialization to the SDK. This enables typed data contracts between plugins, external services, and Databricks Jobs pipelines.

Toolchain: @bufbuild/protobuf v2 + @connectrpc/connect

  • Native ESM, tree-shakeable, ~25KB combined runtime
  • Connect protocol shares Express HTTP port (no envoy proxy)
  • Optional standalone HTTP/2 for native gRPC clients (Python/Go)

What's included:

Proto definitions (proto/appkit/v1/):

  • common.proto: Error, Pagination, Value, Metadata
  • pipeline.proto: JobResult, DataBatch, DataRow, StageSchema
  • services.proto: JobDataService, PipelineService RPCs

Plugin (packages/appkit/src/plugins/proto/):

  • ProtoPlugin with full lifecycle integration (interceptors, telemetry, retry, timeout, user context)
  • GrpcServer: shared mode (Express middleware) + standalone HTTP/2
  • GrpcClientFactory: typed client creation with transport selection
  • ProtoSerializer: binary/JSON ser/de + UC Volume read/write
  • Build-integrated codegen: buf generate → shared/src/proto/

Build pipeline:

  • pnpm proto:generate runs buf codegen (Turbo-cached)
  • Generated TS types in packages/shared/src/proto/ (committed)
  • biome.json excludes generated files

Tests:

  • Plugin lifecycle, exports surface, route registration
  • Server service registration, dedup, router mount
  • Client factory transport selection
  • Serialization round-trip correctness

Add a new first-class appkit plugin that brings protobuf message
definitions, gRPC transport, and binary serialization to the SDK.
This enables typed data contracts between plugins, external services,
and Databricks Jobs pipelines.

Toolchain: @bufbuild/protobuf v2 + @connectrpc/connect
- Native ESM, tree-shakeable, ~25KB combined runtime
- Connect protocol shares Express HTTP port (no envoy proxy)
- Optional standalone HTTP/2 for native gRPC clients (Python/Go)

What's included:

Proto definitions (proto/appkit/v1/):
- common.proto: Error, Pagination, Value, Metadata
- pipeline.proto: JobResult, DataBatch, DataRow, StageSchema
- services.proto: JobDataService, PipelineService RPCs

Plugin (packages/appkit/src/plugins/proto/):
- ProtoPlugin with full lifecycle integration (interceptors,
  telemetry, retry, timeout, user context)
- GrpcServer: shared mode (Express middleware) + standalone HTTP/2
- GrpcClientFactory: typed client creation with transport selection
- ProtoSerializer: binary/JSON ser/de + UC Volume read/write
- Build-integrated codegen: buf generate → shared/src/proto/

Build pipeline:
- pnpm proto:generate runs buf codegen (Turbo-cached)
- Generated TS types in packages/shared/src/proto/ (committed)
- biome.json excludes generated files

Tests:
- Plugin lifecycle, exports surface, route registration
- Server service registration, dedup, router mount
- Client factory transport selection
- Serialization round-trip correctness

Signed-off-by: Evgenii Kniazev <[email protected]>
@keugenek keugenek changed the title feat: add proto/gRPC plugin for structured inter-service communication [1/x] feat: add proto/gRPC plugin for structured inter-service communication Mar 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant