Skip to content

[2/x] (alternative to 1/x) feat: add proto plugin for typed serialization and UC Volume I/O#215

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

[2/x] (alternative to 1/x) feat: add proto plugin for typed serialization and UC Volume I/O#215
keugenek wants to merge 1 commit intomainfrom
feat/proto-lite

Conversation

@keugenek
Copy link
Contributor

Lean alternative to the full gRPC stack. Provides protobuf message definitions as cross-language data contracts with build-integrated codegen and typed Volume I/O via FilesConnector.

What's included:

  • Proto definitions (proto/appkit/v1/): common.proto, pipeline.proto
  • Build-integrated codegen: buf generate → shared/src/proto/ (Turbo-cached)
  • ProtoSerializer: binary/JSON ser/de + UC Volume read/write
  • Uses FilesConnector (not raw SDK) for upload bug fix + telemetry
  • ProtoPlugin: thin wrapper with interceptor chain (retry/timeout)
  • 1 runtime dep: @bufbuild/protobuf (~15KB)

What's NOT included (add later if needed):

  • No gRPC server/client (no @connectrpc/connect)
  • No HTTP/2, no Connect protocol, no service definitions
  • No standalone server mode

Usage:
const app = await createApp({ plugins: [proto()] }); app.proto.writeToVolume(JobResultSchema, result, "/Volumes/.../r.pb"); const r = await app.proto.readFromVolume(JobResultSchema, "/Volumes/.../r.pb");

Lean alternative to the full gRPC stack. Provides protobuf message
definitions as cross-language data contracts with build-integrated
codegen and typed Volume I/O via FilesConnector.

What's included:
- Proto definitions (proto/appkit/v1/): common.proto, pipeline.proto
- Build-integrated codegen: buf generate → shared/src/proto/ (Turbo-cached)
- ProtoSerializer: binary/JSON ser/de + UC Volume read/write
- Uses FilesConnector (not raw SDK) for upload bug fix + telemetry
- ProtoPlugin: thin wrapper with interceptor chain (retry/timeout)
- 1 runtime dep: @bufbuild/protobuf (~15KB)

What's NOT included (add later if needed):
- No gRPC server/client (no @connectrpc/connect)
- No HTTP/2, no Connect protocol, no service definitions
- No standalone server mode

Usage:
  const app = await createApp({ plugins: [proto()] });
  app.proto.writeToVolume(JobResultSchema, result, "/Volumes/.../r.pb");
  const r = await app.proto.readFromVolume(JobResultSchema, "/Volumes/.../r.pb");
Signed-off-by: Evgenii Kniazev <[email protected]>
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