一键导入
api-change
// Run the full API change workflow after modifying types in smelter-api. Generates schemas, TypeScript types, and verifies everything is in sync.
// Run the full API change workflow after modifying types in smelter-api. Generates schemas, TypeScript types, and verifies everything is in sync.
| name | api-change |
| description | Run the full API change workflow after modifying types in smelter-api. Generates schemas, TypeScript types, and verifies everything is in sync. |
| disable-model-invocation | false |
| allowed-tools | Bash, Read, Grep, Glob |
Run the API change workflow. All steps must pass before the change is considered complete.
Register new routes in OpenAPI spec
If a new route was added, ensure it is listed in the #[openapi(paths(...))] macro in tools/src/bin/generate_from_types.rs. Each route handler function must be referenced there for it to appear in the generated OpenAPI specification.
Generate JSON schemas from Rust types
Run: cargo run -p tools --bin generate_from_types
This generates tools/schemas/scene.schema.json and tools/schemas/api_types.schema.json.
Generate TypeScript types from schemas
Run in ./ts: pnpm run generate-types
This generates ts/smelter/src/api.generated.ts.
Build the TypeScript SDK to verify compatibility
Run in ./ts: pnpm i && pnpm build:all
Show a summary of all generated/changed files so the user can review what was affected.
Try to update SDK: Update TypeScript SDK code if the generated types require manual adaptation. In most cases you will need to:
ts/smelter package e.g. ts/smelter/src/types/input.tsts/smelter-core package e.g. ts/smelter-core/src/api/input.ts. In most cases it will be just switching snake case to camel case, but consider if there are more idiomatic alternatives.
Inform user if it's not obvious how the changes should be adapted.