Skip to content

fix(controlplane): unblock first Speakeasy SDK generation#2729

Merged
mekilis merged 1 commit into
mainfrom
cursor/fix-sdk-generation-blockers-ee6f
Jul 18, 2026
Merged

fix(controlplane): unblock first Speakeasy SDK generation#2729
mekilis merged 1 commit into
mainfrom
cursor/fix-sdk-generation-blockers-ee6f

Conversation

@mekilis

@mekilis mekilis commented Jul 18, 2026

Copy link
Copy Markdown
Collaborator

Summary

The first auto-triggered generation (after #2728) failed differently in each SDK repo:

convoy-pythongen.yaml rejected outright:

ERROR field 'packageManager' does not match required format: "uv" or "poetry" only

Fixed: packageManager: uv.

convoy.js — generation succeeded but compilation failed: persistentEdits preserves the old hand-written HTTP client (src/Api/**, client.ts, interfaces/**), and those files use extensionless relative imports that don't compile under Speakeasy's generated node16 tsconfig (TS2835 ×many).

Fixed in the bootstrap overlay/script (the 2.x break, applied at bootstrap time instead of hoping the generation PR could do it):

  • Delete the deprecated hand-written client (src/Api, src/client.ts, src/interfaces, src/utils/helpers, old client tests)
  • Minimal src/convoy.ts entrypoint keeps require('convoy.js').Webhook working
  • Protected verify chain switched to explicit .js-extension imports — verified compiling under both the current commonjs tsconfig and node16
  • jestconfig.json gains a moduleNameMapper for ts-jest and is now .genignore-protected
  • gen.yaml additionalDependencies keeps http-status + jest toolchain once the generator owns package.json

Validation

  • Dry-run bootstrap applied to a real convoy.js clone: tsc --noEmit clean, all 31 verify vector tests pass
  • .js-extension imports compile under both module: commonjs and module: node16 (tested both)
  • shellcheck / YAML / local Bugbot clean

After merge

  1. Re-run Bootstrap SDK Speakeasy repos → refreshes both SDK repos (new bootstrap PRs to merge)
  2. Dispatch Speakeasy SDK regeneration (or wait for the next OpenAPI change) → generated-client PRs

Related: PDE-755 / follow-up to #2724, #2728

Open in Web Open in Cursor 

Python: Speakeasy rejects packageManager setuptools; use uv. JS: remove
the deprecated hand-written HTTP client during bootstrap (persistentEdits
would keep it and it fails compilation under the generated node16
tsconfig), keep Webhook importable via a minimal entrypoint, make the
protected verify chain use explicit .js extensions (valid under both
commonjs and node16), map .js imports back for ts-jest, and pin verify's
runtime/dev deps in gen.yaml so the generated package.json keeps them.
Verified: trimmed repo passes tsc and all 31 verify vector tests.

Co-authored-by: Smart Mekiliuwa <mekilis@users.noreply.github.com>
@mekilis
mekilis merged commit 0d4baaa into main Jul 18, 2026
33 checks passed
@mekilis
mekilis deleted the cursor/fix-sdk-generation-blockers-ee6f branch July 18, 2026 06:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants