Files
lilly-luo b556700976 feat(api): generate routing.proto Python bindings via a proto build (#2488)
* feat(api): generate routing.proto Python bindings via a proto build

The runtime imports omnigent.api.routing_pb2 (bindings for the merged
routing.proto). Rather than checking in ad-hoc protoc output, add a
reproducible build step so the bindings stay in sync with the schema:

- scripts/gen_routing_pb2.py regenerates the bindings via grpc_tools.protoc
  (bundles protoc + the well-known-type protos, so no system protoc and the
  google/protobuf/struct.proto import resolves). --check verifies freshness.
- grpcio-tools added to the dev group, pinned so its bundled gencode matches
  the runtime protobuf; the generator reproduces the committed files exactly.
- routing-pb2-fresh pre-commit hook fails if routing.proto is edited without
  regenerating (enforced in CI, which installs the dev extra).
- Commit the generated routing_pb2.py/.pyi + omnigent/api package, and exclude
  the generated _pb2 files from ruff and mypy.

Regenerate with: python scripts/gen_routing_pb2.py

Co-authored-by: Isaac

* chore(api): mark generated routing _pb2 files as linguist-generated

The github-code-quality bot flagged the protoc-generated bindings for an
unused import (google_dot_protobuf_dot_struct__pb2) and an unused global
(_sym_db). Those are standard protoc output that can't be hand-edited away —
the routing-pb2-fresh hook verifies the files reproduce byte-for-byte from the
schema. Mark them linguist-generated so review/code-quality tooling skips them,
mirroring the existing ruff/mypy excludes in pyproject.toml.

Co-authored-by: Isaac

---------

Co-authored-by: Lilly <lilly.gray@tecton.ai>
2026-07-14 11:07:07 +09:00
..