| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-06-09 | 9.2 kB | |
| typespec-stable@1.13.0 source code.tar.gz | 2026-06-09 | 19.5 MB | |
| typespec-stable@1.13.0 source code.zip | 2026-06-09 | 30.3 MB | |
| Totals: 3 Items | 49.8 MB | 3 | |
@typespec/compiler
Deprecations
- #10876 Deprecated
deepCloneutility in favor ofstructuredClone. All internal usages have been replaced with the nativestructuredCloneAPI.
Features
- #10897
ApplyCodeFixExpect.toEqualnow acceptsRecord<string, string>to assert on multiple files after a code fix is applied. This enables testing code fixes that write to a different file (e.g., adding augment decorators to aclient.tsp).
ts
await ruleTester
.expect({
"main.tsp": `import "./client.tsp";\nmodel Foo { name: string; }`,
"client.tsp": ``,
})
.applyCodeFix("add-client-override")
.toEqual({
"client.tsp": `@@override(Foo.name, "clientName");\n`,
});
- #10548 Add
kind: projectandentrypointsupport totspconfig.yamlfor defining project boundaries and entrypoint resolution. See Project Configuration for more details.
```yaml title=tspconfig.yaml kind: project entrypoint: src/service.tsp emit:
- "@typespec/openapi3"
``
- [#10694](https://github.com/microsoft/typespec/pull/10694) Added support for accessing late-bound members on models that use template spreads oris` bases.
Previously, accessing a member that was introduced via a template instantiation would fail with an invalid-ref error:
```typespec model Template<T> { ...T; } model User is Template<{name: string}>;
alias UserName = User.name; // ❌ previously: "Model doesn't have member name" ```
Now, the compiler will force-evaluate the container type when a member lookup fails on a model with unknown members (from template spreads or is), making late-bound members accessible:
```typespec model Template<T> { ...T; } model User is Template<{name: string}>;
alias UserName = User.name; // ✅ now resolves correctly ```
This also works with:
- Forward references to the template definition
- Spread-based patterns (
model A { ...Template<{x: int32}> }) - Members added by augment decorators
- Circular references between models with late-bound members
- #10855 The
internalmodifier is no longer experimental. Usinginternalwill no longer emit anexperimental-featurewarning, and#suppress "experimental-feature"directives are no longer needed. - #10826 Add project-scoped compiler feature flags to
tspconfig.yaml. Compiler feature definitions are tracked internally with descriptions and can be listed withtsp info features.
```yaml title=tspconfig.yaml kind: project features:
- function-declarations
``` - #9868 Enabled resolution of member properties and metaproperties through template parameters based on constraints.
```tsp model Resource { id: string; }
model Read<R extends Resource> { id: R.id; } ```
Bug Fixes
- #10692 Fix spurious circular-base-type diagnostics after invalid 'model is' declarations.
- #10684 Fixed the compiler to correctly detect circular model spread chains while preserving support for recursive model-expression aliases.
- #10687 Fix wrongly detected circular reference with alias and model properties
- #10643 Completion in the middle of an identifier now replaces the full token instead of inserting and leaving trailing characters
- #10827 Language server fatal errors now write pending logs and the fatal stack trace directly to stderr so crash details remain visible.
- #10773 Report an error when a function is declared in the
$functionsmap in a JS file but has no correspondingextern fndeclaration in TypeSpec. Previously this would silently have no effect. - #10847 [Language Server] Wrapped LSP server handlers with
wrapUnhandledErrorto preserve server-side stack traces in error messages forwarded to the client. Previously, the JSON-RPC layer discarded the original stack trace, making unhandled errors in telemetry opaque. - #10880 Validate function rest arguments and report function call argument count diagnostics at call sites.
@typespec/http
No changes, version bump only.
@typespec/openapi
Features
- #10769 Add
summaryandkindfields to@tagMetadatadecorator.
For OpenAPI 3.2, these fields are emitted as native tag object fields. For OpenAPI 3.0/3.1, they are emitted as x-oai-summary and x-oai-kind extensions. The OpenAPI converter also supports importing x-oai-summary, x-oai-kind (from 3.0/3.1) and native summary, kind (from 3.2) back to TypeSpec.
typespec
@tagMetadata("foo", #{ summary: "all operations that allow doing Foo", kind: "FooGroup" })
- #10770 Add array form for
@tagMetadatadecorator to allow explicit control of tag declaration order.
typespec
@service
@tagMetadata(#[
#{ name: "First Tag", description: "First tag description" },
#{ name: "Second Tag", description: "Second tag description" },
])
namespace PetStore {}
Using @tagMetadata(#[...]) and @tagMetadata("name", #{...}) on the same namespace is a diagnostic error.
- #10555 Added a warning diagnostic when
@defaultResponseis used on a model that already has a@statusCodeproperty or is marked with@error.
Bug Fixes
- #10919 Reject duplicate tag names in @tagMetadata array form.
- #10776 Fix tagMetadata extension diagnostic targets
@typespec/openapi3
Features
- #10769 Add
summaryandkindfields to@tagMetadatadecorator.
For OpenAPI 3.2, these fields are emitted as native tag object fields. For OpenAPI 3.0/3.1, they are emitted as x-oai-summary and x-oai-kind extensions. The OpenAPI converter also supports importing x-oai-summary, x-oai-kind (from 3.0/3.1) and native summary, kind (from 3.2) back to TypeSpec.
typespec
@tagMetadata("foo", #{ summary: "all operations that allow doing Foo", kind: "FooGroup" })
- #10770 Add array form for
@tagMetadatadecorator to allow explicit control of tag declaration order.
typespec
@service
@tagMetadata(#[
#{ name: "First Tag", description: "First tag description" },
#{ name: "Second Tag", description: "Second tag description" },
])
namespace PetStore {}
Using @tagMetadata(#[...]) and @tagMetadata("name", #{...}) on the same namespace is a diagnostic error.
Bug Fixes
- #10786 Mark models as
@errorwhen imported from 4xx/5xx response body schema references. - #10901 Fix import of
deprecated: trueon OpenAPI3 operations to generate#deprecated "deprecated"directive in converted TypeSpec output. - #10677 Fix custom auth scheme models leaking into
components.schemaswhen declared inside the service namespace. They are now emitted only undercomponents.securitySchemesas expected. - #10656 Propagate
@JsonSchema.uniqueItemsto query, path and header parameter schemas. The decorator was only applied to body model property schemas; for HTTP parameter schemas (which go throughapplyIntrinsicDecorators) it was silently dropped, so arrays declared on operation parameters never emitteduniqueItems: trueeven when the decorator was present.
tsp
op listUsers(
@query
@JsonSchema.uniqueItems
$select?: ("id" | "displayName")[],
): User[];
@typespec/json-schema
No changes, version bump only.
typespec-vscode
Bug Fixes
- #10847 Improved telemetry instrumentation for
install-global-compiler-cli,preview-openapi3,start-server, andserver-path-changedevents by adding missinglastSteptracking and error detail logging. Added actionable error message when compiler is found but neithernodenortspis available on PATH, guiding users to fix common nvm/fnm/volta configuration issues.
@typespec/prettier-plugin-typespec
No changes, version bump only.