Problem
The proto repo generates typed clients in three languages (gen/go, gen/ts, gen/python), but only Go consumers can easily import them via Go modules. TypeScript and Python consumers must either:
- Vendor the generated code manually
- Reference the proto repo as a git dependency
- Re-generate locally
This friction slows adoption for agent framework developers who work in TypeScript or Python, and it's the root cause of version drift issues like evalops/chat#948 (@bufbuild/protobuf v1 vs v2 incompatibility).
Proposed solution
TypeScript: @evalops/sdk-ts on npm
The npm-publish.yml workflow already exists. Wire it to publish gen/ts as a scoped npm package on every proto tag.
- Package the Connect-ES generated stubs
- Include typed request/response builders
- Pin
@bufbuild/protobuf v2 as a peer dependency (resolves chat#948 class of issues)
- Consumers install one package instead of managing codegen
Python: evalops-proto-python on PyPI
- Package
gen/python as a pip-installable package
- Pin
protobuf version to match what the generated code expects (resolves fermata#9239 class of issues)
- Add to the
pyproject.toml that already exists in the repo
Impact
- External agent developers get typed access to the platform without MCP overhead
- Internal consumers (chat, fermata, ensemble) get version-locked dependencies instead of manual vendoring
- Proto version incompatibilities surface at install time, not runtime
- The fanout workflow (
fanout-proto-bump.yml) can include version-bump PRs that update the SDK dependency in consumers
Relationship to existing issues
Problem
The proto repo generates typed clients in three languages (
gen/go,gen/ts,gen/python), but only Go consumers can easily import them via Go modules. TypeScript and Python consumers must either:This friction slows adoption for agent framework developers who work in TypeScript or Python, and it's the root cause of version drift issues like
evalops/chat#948(@bufbuild/protobuf v1 vs v2 incompatibility).Proposed solution
TypeScript:
@evalops/sdk-tson npmThe
npm-publish.ymlworkflow already exists. Wire it to publishgen/tsas a scoped npm package on every proto tag.@bufbuild/protobufv2 as a peer dependency (resolves chat#948 class of issues)Python:
evalops-proto-pythonon PyPIgen/pythonas a pip-installable packageprotobufversion to match what the generated code expects (resolves fermata#9239 class of issues)pyproject.tomlthat already exists in the repoImpact
fanout-proto-bump.yml) can include version-bump PRs that update the SDK dependency in consumersRelationship to existing issues
@bufbuild/protobufv1→v2 incompatibility would be resolved by a centrally published SDK