chore: resync the production spec and document the two generators - #4
Open
justinwlin wants to merge 1 commit into
Open
justinwlin wants to merge 1 commit into
justinwlin wants to merge 1 commit into
Conversation
Pulls the production OpenAPI and regenerates src/generated/schema.ts, which is byte-identical to the daily automation branch (automation/production-spec, PR #3). The upstream additions are cursor pagination on the list endpoints and the account-secrets paths, both additive. Adds the changeset the automation deliberately does not write: without one, a merged spec update never reaches npm, so a consumer pinning this package cannot take up the new types. Documents the relationship with runpod-mcp in docs/development.md. Both repos generate from the same spec — this one emits types, the MCP server emits tool definitions — and the MCP server's hand-written tools call this SDK, so an upstream change has to be taken up in both, in order. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
justinwlin
marked this pull request as ready for review
September 22, 2026 19:21
lukepiette
approved these changes
Sep 22, 2026
lukepiette
left a comment
There was a problem hiding this comment.
Approving. Verified locally on the branch:
git diff origin/automation/production-specis limited to the changeset and the docs section, so the spec and schema really are identical to #3.sync_spec.py --check,generate.mjs --check,pnpm typecheck,pnpm test(61 passed, 1 skipped),test_query_contract.mjs, and the Python spec tests all pass.- The changeset's "additive" claim holds. Deleted lines in the spec diff are description rewrites and moved lines;
ListPodsResponseandListTemplatesResponsestill exist, and therequiredlists only gainpagination. - The runpod-mcp claims are accurate: the pin is exactly
0.1.1under devDependencies andsrc/specgen/generated/tools.gen.tsexists. version.ymlruns on push to main via changesets/action, so merging this opens a Version Packages PR. Publishing still needs that second merge.
Two non-blocking nits, one inline on the docs and one here:
The description says runpod/runpod-mcp#98 "vendored the same spec and regenerated its tool surface, so its generated tools already paginate." #98 is still open, so nothing there paginates yet. Worth rewording so the sequencing reads correctly for whoever picks this up later.
Comment on lines
+81
to
+82
| query parameters it accepts, and what shape comes back. Everything around it — | ||
| retries, deadlines, rate-limit metadata, the SSE iterator — is written by hand. |
There was a problem hiding this comment.
Nit: house style avoids em dashes in docs. Commas or a colon read the same here, e.g. "Everything around it (retries, deadlines, rate-limit metadata, the SSE iterator) is written by hand." Same applies at lines 86, 96, and 99.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Takes up the production spec (cursor pagination on the list endpoints, plus the account-secrets paths) and documents how this repo's generation relates to the MCP server's.
The spec and schema changes here are byte-identical to the daily automation branch (#3, open since Sept 18). I verified that with
git diff origin/automation/production-spec— empty. Merging this makes that PR's diff disappear, and the automation closes a superseded update PR on its next run.What the automation does not do is write a changeset, by design — it never versions or publishes. So #3 on its own lands types that never reach npm, and
@runpod/typescript-api-sdkstays at 0.1.1 for consumers. This adds theminorchangeset so the update can actually ship.That matters right now:
runpod-mcppins this package and bundles it, and its hand-written list tools can't pass the newcursor/limitparameters until a published version carries the types.The docs section (
docs/development.md→ "The other generator: runpod-mcp") explains the split — this repo generates types for the compiler, the MCP server generates tool definitions read at runtime by a language model — and that an upstream change is normally taken up twice, SDK first. Nothing documented that relationship in either repo, which is how a resync ends up looking complete while half a surface is stale.What this unblocks
runpod/runpod-mcp#98 vendored the same spec and regenerated its tool surface, so its generated tools (
list-pods,list-endpoint-releases,list-endpoint-builds) already paginate — they dispatch from the spec and never consult these types.Its curated tools cannot.
list-endpointsandlist-templatesare hand-written and call the typed client here, so passingcursor/limitor readingpagination.nextCursorfailstscagainst the pinned 0.1.1.So once this merges and is released to npm, the sequence there is: bump the pin, then teach those two handlers the new parameters. Merging this without a release does not unblock anything — which is why the changeset matters here more than the regenerated types.
Verification
The regenerated schema carries
nextCursorandhasNextPage, thecursor/limitquery parameters on the paginated paths, and the five account-secret operations.🤖 Generated with Claude Code