feat(sdks): Integration API OpenAPI clients (TS/Go/Python/Rust/C++/Dart)#10225
feat(sdks): Integration API OpenAPI clients (TS/Go/Python/Rust/C++/Dart)#10225undivisible wants to merge 18 commits into
Conversation
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
a611b55 to
d51d467
Compare
6d56bdc to
d1fafed
Compare
94719ca to
6e05729
Compare
6e05729 to
94719ca
Compare
94719ca to
7a5815c
Compare
7a5815c to
ff3defa
Compare
ff3defa to
94719ca
Compare
Generate TypeScript, Go, Python, Rust, and C++ clients from integration-public-openapi.json. Polish the Integration OpenAPI security shape for generators, add a repo-owned generator with --check, and wire it into the OpenAPI contract CI workflow. Failure-Class: none
Generate omi_integration for Flutter/Dart from the same OpenAPI surface. React Native keeps using the TypeScript package (fetch). Failure-Class: none
Re-export integration-public OpenAPI after security normalization and register generate_integration_sdks.py in the product file line-count ratchet so PR preflight can pass. Failure-Class: none
Normalize generated file EOFs, format Dart after generation, and keep generator --check aligned with dart format output. Failure-Class: none
Normalize EOFs in write/check paths and validate Dart via dart format --set-exit-if-changed so CI hygiene and format stay green. Failure-Class: none
Emit OpenAPI component schemas as TypeScript interfaces, Python TypedDicts, Go structs, and Dart classes. Method signatures now use schema response/request types instead of untyped JSON blobs. Failure-Class: none
Prefer FLUTTER_ROOT dart for format, regenerate typed clients, and ensure committed Dart is format-clean. Failure-Class: none
CI dart format skips *.g.dart; keep a thin barrel and generated types in omi_integration.g.dart so Formatting stays green. Failure-Class: none
Stop regenerating client_test.dart; keep format-stable hand test and generated code in omi_integration.g.dart. Failure-Class: none
Keep hand-maintained format-stable client_test.dart; generated client stays in omi_integration.g.dart. Failure-Class: none
Use short-line hand test so CI dart format (Flutter 3.44.7) stays clean. Failure-Class: none
CI runs dart format without package_config (pub get only in app/), so constructors collapse to one line. Match that style. Failure-Class: none
Main collapsed promote workflow strings; guard was stale. Failure-Class: none
Workflow scope step uses set -u and GH_TOKEN for supersession API proofs. Unit harness only exercises local git diff path, so inject token + curl shim that fails closed identities into parent-diff. Failure-Class: none
94719ca to
3f500dc
Compare
Failure-Class: none
Failure-Class: none
Failure-Class: none
Two tests broken by the gcp_backend.yml workflow refactor to use $DEPLOY_CONTROL_SCRIPTS for staged deployment-control scripts: 1. test_gateway_vpc_probe_workflows_execute_the_production_parser: Set DEPLOY_CONTROL_SCRIPTS env var in the test so the probe step resolves the script path correctly. 2. test_manual_development_smoke_keeps_its_existing_external_hostname_path: Update assertion to match the new $DEPLOY_CONTROL_SCRIPTS/ prefix on smoke_what_matters_now.py in the workflow.
|
retriggering CI |
|
Hey @undivisible 👋 Thank you so much for taking the time to contribute to Omi! We truly appreciate you putting in the effort to submit this pull request. After careful review, we've decided not to merge this particular PR. Please don't take this personally — we genuinely try to merge as many contributions as possible, but sometimes we have to make tough calls based on:
Before your next PR, please skim:
If this was declined for direction or taste, maintainers should cite an invariant ID or open a proposed one — ask if that citation is missing. Your contribution is still valuable to us, and we'd love to see you contribute again in the future! If you'd like feedback on how to improve this PR or want to discuss alternative approaches, please don't hesitate to reach out. Thank you for being part of the Omi community! |
|
Thanks for putting this together — the overall direction looks useful and cohesive: a repo-owned OpenAPI generator plus thin Integration API clients across TS/Go/Python/Rust/C++/Dart is the right shape for keeping SDKs aligned with the public spec. I did a security/codegen-focused maintainer pass. I don't see an obvious supply-chain attack pattern in the generator or generated clients, and the OpenAPI auth normalization is directionally good: it moves the Integration API to a bearer security scheme and removes raw I’m not formally approving this one because it is a broad SDK/API surface with new dependencies, workflow changes, generated code, and the PR is currently not cleanly mergeable. Before merge I’d want human maintainer review on:
No request to split solely due to size — the PR is cohesive around one Integration API SDK surface. It just needs maintainer/product sign-off and visible validation before it should land. by AI on behalf of David — if you need David’s attention urgently, please @Git-on-my-level and escalate with |
kodjima33
left a comment
There was a problem hiding this comment.
feat(sdks): Integration API OpenAPI clients — feature, approve-only (DIRTY)
Summary
sdks/integration/for TypeScript, Go, Python, Rust, C++, Dartbackend/scripts/generate_integration_sdks.pywith CI--checkTest plan
python backend/scripts/generate_integration_sdks.py --checkcargo check, TStsc, C++ cmake build, Dart testsFailure-Class: none