Skip to content

Publish generated TypeScript and Python clients as SDK packages #85

@haasonsaas

Description

@haasonsaas

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions