Skip to content

feat(sdks): Integration API OpenAPI clients (TS/Go/Python/Rust/C++/Dart)#10225

Open
undivisible wants to merge 18 commits into
mainfrom
feature/sdk-integration-openapi
Open

feat(sdks): Integration API OpenAPI clients (TS/Go/Python/Rust/C++/Dart)#10225
undivisible wants to merge 18 commits into
mainfrom
feature/sdk-integration-openapi

Conversation

@undivisible

@undivisible undivisible commented Jul 21, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • OpenAPI-generated Integration API clients under sdks/integration/ for TypeScript, Go, Python, Rust, C++, Dart
  • Generator: backend/scripts/generate_integration_sdks.py with CI --check
  • Integration OpenAPI security polish for generators (global bearer, strip raw Authorization params)

Test plan

  • python backend/scripts/generate_integration_sdks.py --check
  • Python/Go client auth path unit tests
  • Rust cargo check, TS tsc, C++ cmake build, Dart tests

Failure-Class: none

Review in cubic

@mintlify

mintlify Bot commented Jul 21, 2026

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
omi 🟢 Ready View Preview Jul 21, 2026, 7:51 PM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@mintlify

mintlify Bot commented Jul 21, 2026

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
omi 🟡 Building Jul 21, 2026, 7:49 PM

💡 Tip: Enable Workflows to automatically generate PRs for you.

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
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.
@undivisible

Copy link
Copy Markdown
Collaborator Author

retriggering CI

@undivisible undivisible reopened this Jul 22, 2026
@github-actions

Copy link
Copy Markdown
Contributor

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:

  • Project standards — Ensuring consistency across the codebase
  • User needs — Making sure changes align with what our users need
  • Code best practices — Maintaining code quality and maintainability
  • Project direction — Keeping aligned with our product principles and locked invariants

Before your next PR, please skim:

  • PRODUCT.md — product north star
  • Product invariants — locked rules (shared chat, memory tiers, agent control plane, integrations, brand)

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!

@Git-on-my-level Git-on-my-level added needs-maintainer-review Needs a human maintainer to sign off before merge dependency-review Touches dependencies or lockfiles; needs dependency review needs-tests PR introduces logic that should be covered by tests labels Jul 22, 2026
@Git-on-my-level

Copy link
Copy Markdown
Collaborator

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 Authorization header parameters so generators don't expose auth as a normal per-call argument.

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:

  • SDK/product ownership: whether Omi wants to commit to these languages/packages and their publishing/support story now.
  • CI validation: the PR description lists TS/Rust/C++/Dart/Go/Python checks, but the visible PR checks here only show the decline-comment workflow and Mintlify. Please make the generator --check and representative language builds/tests visible in CI after conflicts are resolved.
  • Packaging ergonomics: especially the TypeScript package exporting raw .ts sources and the generated multi-language packages being introduced as public SDK entry points.

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 need human response.

@kodjima33 kodjima33 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

feat(sdks): Integration API OpenAPI clients — feature, approve-only (DIRTY)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependency-review Touches dependencies or lockfiles; needs dependency review needs-maintainer-review Needs a human maintainer to sign off before merge needs-tests PR introduces logic that should be covered by tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants