NexusClient has been renamed to NexusServiceClient (#1993), and NexusInboundCallsInterceptor now requires executeStartOperation and executeCancelOperation instead of the old generic execute method (#1979).worker] Extend bundler to support pre-loading modules into the reusable V8 context via a new preloadModules option on BundleOptions/WorkerOptions.bundleOptions; pre-loaded modules are shared across workflow executions, reducing per-workflow memory and startup overhead (#1999)nexus] :boom: Add Nexus Inbound Interceptors — NexusInboundCallsInterceptor now exposes executeStartOperation and executeCancelOperation, replacing the previous generic execute interceptor (#1979)opentelemetry] :boom: Nexus OpenTelemetry support — adds inbound interceptors and distributed trace context propagation across Nexus service boundaries; renames interceptor I/O types from ExecuteNexusOperation* to NexusStartOperation*/NexusCancelOperation*, and adds RunStartNexusOperation and RunCancelNexusOperation span names (#1998)nexus] :boom: Nexus error serialization now uses Temporal ProtoFailure end-to-end, aligning with other SDKs; also fixes a JS bug where comma-separated case values in gRPC status code mapping silently matched only the last value (#1973)nexus] :boom: Rename NexusClient to NexusServiceClient in preparation for upcoming Nexus Standalone Operations (#1993)nexus] Add scheduleToStartTimeout and startToCloseTimeout options to the workflow Nexus client API (#1942)nexus] Standardize Nexus operation input deserialization error handling: payload codec decode failures are now surfaced as retryable INTERNAL handler errors, while payload converter failures remain non-retryable BAD_REQUEST; ApplicationFailure is passed through directly (#1949)nexus] Infer workflow result type from WorkflowRunOperationHandler — startWorkflow now returns WorkflowHandle<WorkflowResultType<T>>, removing the need to explicitly type the handler (#1968)worker] Allow WorkerDeploymentOptions to omit defaultVersioningBehavior when useWorkerVersioning is false, enabling workers to report a build ID to the Temporal UI without opting into full worker versioning (#1963)worker] Propagate targetWorkerDeploymentVersionChanged and Continue-As-New suggested reasons for worker deployment versioning trampolining (#1972)client] Suppress spurious unhandled rejection from WithStartWorkflowOperation when executeUpdateWithStart fails before a response is received (#1990)opentelemetry] Do not mark CompleteAsyncError as a span error (#1989)opentelemetry] Avoid TypeError when user code throws a non-Error value (#1984)worker] Tolerate empty rootWorkflowExecution/parentWorkflowExecution objects from pre-v1.24 servers, preventing IllegalStateError on resumed workflows (#1969)ai] Use activityOptions in callTool proxy (#1954)core] Update sdk-core (#1959)deps] Bump vulnerable dependencies (#1957, #1988)deps] Bump rustls-webpki from 0.103.9 to 0.103.10 (#1978)deps] Bump quinn-proto from 0.11.13 to 0.11.14 (#1961)deps] Bump tar (#1976, #1946)Breaking changes are marked with :boom:
Full Changelog: https://github.com/temporalio/sdk-typescript/compare/v1.15.0...v1.16.0
ResourceExhausted and other gRPC errors. See PRs https://github.com/temporalio/sdk-core/pull/1110 and https://github.com/temporalio/sdk-core/pull/1111 for more details.opentelemetry] Expose functionality as plugin (#1884)worker] Worker Connection Replacement (#1902)workflow] Nexus Cancellation Types (#1894)worker] Worker deployment versioning is now GA (#1924)envconfig] Environment configuration is now GA (#1924)testing] Add API to setup Nexus endpoint on ephemeral test server (#1897)nexus] Expose Temporal Nexus operation info to Temporal Nexus operation (#1896)bun] 🧪 Bun support - experimental (#1906)runtime] 🧪 Buffered metrics - experimental (#1922)worker] Add exponential backoff on ResourceExhausted and other gRPC errors in Poller autoscaler (#1938 and #1944)native] Correct native binding type for workerValidate (#1939)client] Expose operatorService on ConnectionLike interface (#1904)opentelemetry] Serialize TraceState before exporting to sink (#1891)opentelemetry] makeWorkflowExporter accepts SpanProcessor (#1886)ai] Add await to tool execution (#1882)ai] Description was missing from the derived mcp tools (#1905)ai] Fix a bug in AI SDK MCP Schema conversion (#1890)common] Make search attribute type more lenient when parsing (#1943)workflow] Allow logging queries validators during replay (#1927)ai] Add missing dependency to ai package (#1878)worker] Fix wf_task_replay_latency metric recording for non-replay tasks (#1083)worker] Always send shutdown_worker RPC, fix WorkerStatus state when shutting down worker (#1082)worker] Fix bug where we count first WFT as sticky cache hit (#1091)api] Update Temporal Protobuf APIs to v1.61.0 (#1100)deps] Bump vulnerable dependencies (hono, jws, tar, ...) (#1900)deps] Run cargo update (#1937)deps] Bump webpack from 5.94.0 to 5.104.1 (#1929)deps] Bump bytes from 1.10.1 to 1.11.1 in /packages/core-bridge (#1921)deps] Bump @modelcontextprotocol/sdk from 1.25.2 to 1.26.0 (#1928)deps] Bump tar from 7.5.3 to 7.5.7 (#1916)Breaking changes are marked with :boom: Experimental features are marked with :test_tube:
Full Changelog: https://github.com/temporalio/sdk-typescript/compare/v1.14.1...v1.15.0
ai-sdk] Upgrade to AI SDK v6 with embedding model support (#1865, thabnks @ItsWendell)workflow] Automatically cleanup AsyncLocalStorage on workflow context disposal (#1871)OpenTelemetry] Avoid lazy loading workflow package in interceptors (#1872)heartbeat JSDoc (#1863, thanks @daveyarwood)Full Changelog: https://github.com/temporalio/sdk-typescript/compare/v1.14.0...v1.14.1
ai] Introduced (experimental) AI SDK Integration (#1792).client] TLS is enabled by default if an API key is provided (#1847). To disable TLS in that specific context, explicitly set tls: false.opentelemetry] Create spans for all interceptor events (#1835)worker] Enable Worker heartbeating (#1818). Worker heartbeating allows smoother server-side behaviors when a Worker is shut down or somehow become unreachable.worker] The reusable workflow executor now properly runs dispose interceptors (#1834, thanks @mnahkies 🙏).core-bridge] Include bridge macros rust package in core-bridge npm package to allow building from source (https://github.com/temporalio/sdk-typescript/pull/1852, thanks @stathis-alexander 🙏)@temporalio/create]: bump glob from 10.3.10 to 10.5.0 (https://github.com/temporalio/sdk-typescript/pull/1828)Commit https://github.com/temporalio/sdk-core/commit/bd02cceae2a4e0006fe86911a6ad3b7cf7dd2ad8 -> https://github.com/temporalio/sdk-core/commit/44a6576bbaac589b28afa173ca6d60757a4d821d
temporal prefix to resource tuner metrics (temporalio/sdk-core#1043)Full Changelog: https://github.com/temporalio/sdk-typescript/compare/v1.13.2...v1.14.0
envconfig package (#1795)
envconfig provides a way to configure clients using TOML filesRawValue from direct payload using identity payload converter (#1806)otel] Mark peer dependencies as optional (#1812)otel] Remove await from OTEL handleSignal interceptor (#1803)Full Changelog: https://github.com/temporalio/sdk-typescript/compare/v1.12.3...v1.13.0
workflowExecution.runId to a UUID in MockActivityEnvironment (#1723, thanks @TastyPi).Full Changelog: https://github.com/temporalio/sdk-typescript/compare/v1.12.2...v1.12.3
RawValue support for payloads to bypass custom payload converters (https://github.com/temporalio/sdk-typescript/pull/1664)__temporal_ prefix is now reserved for internal entities. The __stack_trace and __enhanced_stack_trace are also reserved for internal queries (https://github.com/temporalio/sdk-typescript/pull/1644)isPromise node's utility function instead of an instanceof Promise check. The latter may give false negatives in Jest, resulting in not converting errors thrown from the Rust side. This has been causing Jest tests to fail with ShutdownError: Worker has been shutdown errors using TS SDK 1.12.0. (#1737)Add experimental support for Worker Deployment Versioning (#1679)
Add support for Typed Search Attributes. (#1612, #1625)
TypedSearchAttributes are intended to replace the existing (not type-enforced) SearchAttributes.
// Define a typed search attribute; that would generally be done at the top of one's
// `workflow.ts` file, or in some shared location, similar to definition of Signals,
// Query and Update types
const orderStatusSearchAttribute = defineSearchAttributeKey('orderStatus', 'KEYWORD');
Add ability to register new Search Attributes when starting a local development server (#1624)
// Starting a new local development server, immediately registering the specified search attributes.
const env = await createLocalTestEnvironment({
server: {
searchAttributes: [orderStatusSearchAttribute],
},
});
Add support for the Update-with-Start API on the Workflow Client. (#1585).
Example usage
const startWorkflowOperation = WithStartWorkflowOperation.create(transactionWorkflow, {
workflowId,
args: [transactionID],
taskQueue: 'early-return',
workflowIdConflictPolicy: 'FAIL',
});
// This is the result of the _update_ call
const earlyConfirmation = await client.workflow.executeUpdateWithStart(getTransactionConfirmation, {
startWorkflowOperation,
});
// This is an handle to the workflow execution that was started. It can be used
// to wait for the workflow execution to complete and capture its return value
const workflowHandle = await startWorkflowOperation.workflowHandle();
const finalReport = await workflowHandle.result();
Add support for default activity handler, update handler and query handler. A default handler will be called for any incoming request if no handler has been explicitely set for the given type name. (#1639, #1640, #1642)
Example usage: Default Update Handler
export async function myWorkflow(useDefinedQuery: boolean): Promise<void> {
setDefaultUpdateHandler((updateName, ...args: any[]) => {
// ...
});
Example usage: Default Query Handler
export async function myWorkflow(useDefinedQuery: boolean): Promise<void> {
setDefaultQueryHandler((queryName: string, ...args: any[]) => {
// ...
});
Add experimental support for emitting custom metrics from workflows and activities. (#1705)
Example usage: From a Workflow
import * as wf from `@temporalio/workflow`;
async function myWorkflow() {
const myHistogramMetric = wf.metricMeter.createHistogram(
'my-custom-histogram',
'int', // or 'float'
'ms', // Units (optional)
'description' // (optional)
);
myHistogramMetric.record(50);
myHistogramMetric.record(50, { tag1: 'tag-value' });
}
Example usage: From an Activity
import * as act from `@temporalio/activity`
const myCounterMetric = metricMeter.createCounter('activity-counter');
async function myActivity() {
const myCounterMetric.add(1);
}
Add experimental support for more powerful configuration of Workflow Task Pollers and Activity Task Pollers. (#1704)
Add experimental support for task priority. For now, only the numeric priority value is supported, which is a number between 1 (top priority) and 5 (lowest priority). Priority can be set when starting workflows or scheduling activities. Note that this feature requires server side support which has not yet been released. (#1669)
Add a new category property on ApplicationFailure. (#1719)
This new option allows controlling some of the observability and logging behaviors of the Worker related to a failure thrown from an Activity.
Add high level API support for the CountWorkflowExecution operation to the Workflow Client (#1573)
That operation efficiently determine the number of Workflows matching some list filter; the list filter may also include a GROUP BY clause.
Example usage
const workflowCount = await client.workflow.count(`TaskQueue = '${taskQueue}' GROUP BY ExecutionStatus`);
after which workflowCount might look something like this:
{
count: 5,
groups: [
{ count: 2, groupValues: [['Running']] },
{ count: 3, groupValues: [['Completed']] },
],
};
[workflow] Expose AbortController to the worker sandbox (#1576, thanks @lukeramsden).
The following APIs are no longer @experimental: (#1590, #1622)
WorkerOptions.nonStickyToStickyPollRatio[interceptors-opentelemetry] Propagate the OpenTelemetry tracing context from a workflow to local activities (#1577)
[interceptors-opentelemetry] Add error messages to OpenTelemetry tracing span status, when applicable. (#1632, thanks @xavierroma)
[workflow] Include information about the current Update (if applicable) in Workflow logging output (#1595)
[worker] Add multiple Worker and Telemetry options (#1623)
On TelemetryOptions:
metrics.metricPrefixmetrics.attachServiceNamemetrics.globalTagsmetrics.histogramBucketOverridesmetrics.otel.httpmetrics.temporality to metrics.otel.temporality, as Core doesn't support that option on Prometheus. This is coherent with other Core-based SDKs.TelemetryOption.noTemporalPrefixForMetrics, promoting the use of the more versatile metrics.metricPrefix property insteadOn DevServerConfig:
server.uiPort property — fixes #1611server.dbFilename property, which had never worked due to a naming inconsistency between the lang's interface and bridge's codeOn NativeConnectionOptions:
disableErrorCodeMetricTags.All of those change preserve compatibility with prior behaviors and deprecated settings.
Add partial support for powering a Workflow Client from a NativeConnection rather than a Connection. (#1699)
Expose root execution information from WorkflowInfo and WorkflowDescription. (#1662)
[workflow] Fix multiple context leaks and bugs in reuseV8Context executor. (#1605)
:bomb: These changes should
[client] Homogenize and clarify that default address is localhost everywhere in public exposed code (that's the correct thing to do and should be non-breaking everywhere except on very badly configured dual-stack machines, in which case they would have had errors anyway due to inconsistencies between Client and NativeClient).
[workflow] Clearly differentiate Workflow Task Failures resulting from unhandle Promise rejections (#1606).
This was a recurring source of extremely difficult to diagnose Workflow Task failures. Going forward, a Workflow Task Failure resulting form unhandled Promise rejection will clearly indicate "Unhandled promise rejection".
[workflow] Do not appear to support conflict policy when start a child workflow (#1649)
:boom: Use plain Error in FailureConverter, WorkflowFailedError, and WorkflowUpdateFailedError (#1685)
[client] Properly set temporal-namespace header on gRPC requests (#1712)
[bridge] The Core Bridge layer is now much more robust, better handle various unexpected situations, and provide more detailed and more consistent error messages. (#1698)
The Core Bridge layer went through a major refactor to prepare it for upcoming new features. This refactor also allowed resolution of several lifecycle bugs that could happen in various edge cases, including:
Promises created by calling into the Core Bridge with callbacks (#1302)NativeConnection, Worker, WorkflowTestEnvironment, etc) were not properly closed (#1413).:boom: This refactor establishes a much stronger distinction between public and internal APIs. Though we never encouraged direct import from the @temporalio/core-bridge package, some types were previously exported from the core-bridge package and reexported from a public facing package. Due to that confusion, it is possible that some users may have been previously importing types from that package. This is no longer possible and will result in compilation errors. Please import those types from the @temporalio/worker or @temporalio/testing packages.
[bridge] Log forwarding from Core SDK to the TS logger is now less demanding on CPU. As part of the COre Bridge Layer refactor, log forwarding was changed to a push model, rather than a pull model; which was previously reported to cause a constant, non negligeable CPU usage, even when the Worker was left idle for long periods of time. (#1698)
:boom: Dropped support for Node 16 (#1586).
Upgrade multiple vulnerable dependencies (#1603, #1614, #1627, #1637, #1667, #1709)
Huge thanks to the following users for their contributions.
Add experimental support for Worker Deployment Versioning (#1679)
Add support for Typed Search Attributes. (#1612, #1625)
TypedSearchAttributes are intended to replace the existing (not type-enforced) SearchAttributes.
// Define a typed search attribute; that would generally be done at the top of one's
// `workflow.ts` file, or in some shared location, similar to definition of Signals,
// Query and Update types
const orderStatusSearchAttribute = defineSearchAttributeKey('orderStatus', 'KEYWORD');
Add ability to register new Search Attributes when starting a local development server (#1624)
// Starting a new local development server, immediately registering the specified search attributes.
const env = await createLocalTestEnvironment({
server: {
searchAttributes: [orderStatusSearchAttribute],
},
});
Add support for the Update-with-Start API on the Workflow Client. (#1585).
Example usage
const startWorkflowOperation = WithStartWorkflowOperation.create(transactionWorkflow, {
workflowId,
args: [transactionID],
taskQueue: 'early-return',
workflowIdConflictPolicy: 'FAIL',
});
// This is the result of the _update_ call
const earlyConfirmation = await client.workflow.executeUpdateWithStart(getTransactionConfirmation, {
startWorkflowOperation,
});
// This is an handle to the workflow execution that was started. It can be used
// to wait for the workflow execution to complete and capture its return value
const workflowHandle = await startWorkflowOperation.workflowHandle();
const finalReport = await workflowHandle.result();
Add support for default activity handler, update handler and query handler. A default handler will be called for any incoming request if no handler has been explicitely set for the given type name. (#1639, #1640, #1642)
Example usage: Default Update Handler
export async function myWorkflow(useDefinedQuery: boolean): Promise<void> {
setDefaultUpdateHandler((updateName, ...args: any[]) => {
// ...
});
Example usage: Default Query Handler
export async function myWorkflow(useDefinedQuery: boolean): Promise<void> {
setDefaultQueryHandler((queryName: string, ...args: any[]) => {
// ...
});
Add experimental support for emitting custom metrics from workflows and activities. (#1705)
Example usage: From a Workflow
import * as wf from `@temporalio/workflow`;
async function myWorkflow() {
const myHistogramMetric = wf.metricMeter.createHistogram(
'my-custom-histogram',
'int', // or 'float'
'ms', // Units (optional)
'description' // (optional)
);
myHistogramMetric.record(50);
myHistogramMetric.record(50, { tag1: 'tag-value' });
}
Example usage: From an Activity
import * as act from `@temporalio/activity`
const myCounterMetric = metricMeter.createCounter('activity-counter');
async function myActivity() {
const myCounterMetric.add(1);
}
Add experimental support for more powerful configuration of Workflow Task Pollers and Activity Task Pollers. (#1704)
Add experimental support for task priority. For now, only the numeric priority value is supported, which is a number between 1 (top priority) and 5 (lowest priority). Priority can be set when starting workflows or scheduling activities. Note that this feature requires server side support which has not yet been released. (#1669)
Add a new category property on ApplicationFailure. (#1719)
This new option allows controlling some of the observability and logging behaviors of the Worker related to a failure thrown from an Activity.
Add high level API support for the CountWorkflowExecution operation to the Workflow Client (#1573)
That operation efficiently determine the number of Workflows matching some list filter; the list filter may also include a GROUP BY clause.
Example usage
const workflowCount = await client.workflow.count(`TaskQueue = '${taskQueue}' GROUP BY ExecutionStatus`);
after which workflowCount might look something like this:
{
count: 5,
groups: [
{ count: 2, groupValues: [['Running']] },
{ count: 3, groupValues: [['Completed']] },
],
};
[workflow] Expose AbortController to the worker sandbox (#1576, thanks @lukeramsden).
The following APIs are no longer @experimental: (#1590, #1622)
WorkerOptions.nonStickyToStickyPollRatio[interceptors-opentelemetry] Propagate the OpenTelemetry tracing context from a workflow to local activities (#1577)
[interceptors-opentelemetry] Add error messages to OpenTelemetry tracing span status, when applicable. (#1632, thanks @xavierroma)
[workflow] Include information about the current Update (if applicable) in Workflow logging output (#1595)
[worker] Add multiple Worker and Telemetry options (#1623)
On TelemetryOptions:
metrics.metricPrefixmetrics.attachServiceNamemetrics.globalTagsmetrics.histogramBucketOverridesmetrics.otel.httpmetrics.temporality to metrics.otel.temporality, as Core doesn't support that option on Prometheus. This is coherent with other Core-based SDKs.TelemetryOption.noTemporalPrefixForMetrics, promoting the use of the more versatile metrics.metricPrefix property insteadOn DevServerConfig:
server.uiPort property — fixes #1611server.dbFilename property, which had never worked due to a naming inconsistency between the lang's interface and bridge's codeOn NativeConnectionOptions:
disableErrorCodeMetricTags.All of those change preserve compatibility with prior behaviors and deprecated settings.
Add partial support for powering a Workflow Client from a NativeConnection rather than a Connection. (#1699)
Expose root execution information from WorkflowInfo and WorkflowDescription. (#1662)
[workflow] Fix multiple context leaks and bugs in reuseV8Context executor. (#1605)
:bomb: These changes should
[client] Homogenize and clarify that default address is localhost everywhere in public exposed code (that's the correct thing to do and should be non-breaking everywhere except on very badly configured dual-stack machines, in which case they would have had errors anyway due to inconsistencies between Client and NativeClient).
[workflow] Clearly differentiate Workflow Task Failures resulting from unhandle Promise rejections (#1606).
This was a recurring source of extremely difficult to diagnose Workflow Task failures. Going forward, a Workflow Task Failure resulting form unhandled Promise rejection will clearly indicate "Unhandled promise rejection".
[workflow] Do not appear to support conflict policy when start a child workflow (#1649)
:boom: Use plain Error in FailureConverter, WorkflowFailedError, and WorkflowUpdateFailedError (#1685)
[client] Properly set temporal-namespace header on gRPC requests (#1712)
[bridge] The Core Bridge layer is now much more robust, better handle various unexpected situations, and provide more detailed and more consistent error messages. (#1698)
The Core Bridge layer went through a major refactor to prepare it for upcoming new features. This refactor also allowed resolution of several lifecycle bugs that could happen in various edge cases, including:
Promises created by calling into the Core Bridge with callbacks (#1302)NativeConnection, Worker, WorkflowTestEnvironment, etc) were not properly closed (#1413).:boom: This refactor establishes a much stronger distinction between public and internal APIs. Though we never encouraged direct import from the @temporalio/core-bridge package, some types were previously exported from the core-bridge package and reexported from a public facing package. Due to that confusion, it is possible that some users may have been previously importing types from that package. This is no longer possible and will result in compilation errors. Please import those types from the @temporalio/worker or @temporalio/testing packages.
[bridge] Log forwarding from Core SDK to the TS logger is now less demanding on CPU. As part of the COre Bridge Layer refactor, log forwarding was changed to a push model, rather than a pull model; which was previously reported to cause a constant, non negligeable CPU usage, even when the Worker was left idle for long periods of time. (#1698)
:boom: Dropped support for Node 16 (#1586).
Upgrade multiple vulnerable dependencies (#1603, #1614, #1627, #1637, #1667, #1709)
Huge thanks to the following users for their contributions.
client] Properly set temporal-namespace header on gRPC requests (#1714)worker] Avoid crash on Bun due to stub promiseHooksIntroduce Update-with-Start (#1585)
Aside from Update-with-Start, all Workflow Update APIs are no longer experimental (#1590)
[client] Add client.workflow.count high level API (#1573, thanks to @THardy98)
[workflow] Expose AbortController to the worker sandbox (#1576, thanks to @lukeramsden)
[workflow] Propagate OpenTelemetry context when scheduling local activities (#1577, thanks to @THardy98)
Normalize construction of user facing enums (#1534)
All user-facing enums have been revisited to be more in line with usual TypeScript conventions, rather than sticking to Temporal's Protobuf enum definitions.
In short, that means:
UNSPECIFIED values — TypeScript's undefined already means that;For example:
await startChild(sleep, {
- parentClosePolicy: ParentClosePolicy.PARENT_CLOSE_POLICY_ABANDON,
+ parentClosePolicy: ParentClosePolicy.ABANDON,
/* or even */
+ parentClosePolicy: 'ABANDON',
});
Built-time compatibility is preserved for enum values that existed before. For example, code using ParentClosePolicy.PARENT_CLOSE_POLICY_ABANDON will still compile, but a deprecation will be reported.
:boom: Compile-time backward compatibility is only preserved for enums that were imported from user facing packages, such as @temporalio/common, @temporalio/client and @temporalio/workflow. Enum definitions imported directly from the @temporalio/proto package may no longer compile.
Add experimental support for user-implementable Slot Supplier. (#1553, temporalio/sdk-core#838, temporalio/sdk-core#842)
Add support for Workflow ID conflict policy. (#1490)
Expose classes TextEncoder and TextDecoder inside of the Workflow sandbox. (#1562, kudo to @lukeramsden)
The OpenTelemetry Interceptor now adds correlation metadata on emitted logs from Workflow and Activity context loggers. (#1565)
The OpenTelemetry Interceptor now passes the tracing metadata on signals. (#1449, kudo to @iravid)
[client] Add utility functions isGrpcDeadlineError and isGrpcCancelledError. (#1548)
[worker] Fix memory leak on non-existant activity (#1563)
[activity] Abort reason is now an instance of CancellationFailure (#1561, kudo to @ikonst)
[worker] Ensure Resource Tuner always hand out a minimum of one slot for sticky and not sticky Workflow Task pollers (temporalio/sdk-core#835)
ChildWorkflowOptions.taskQueue default value (#1551, kudo to @ikonst)This release was retracted due to inconsistencies in some package.json. Please use v1.11.5 instead.
worker] Gracefully shut down Worker on unexpected errors (#1539)worker] Avoid a spurious error if Worker receives SIGINT while already shutting down (#1547)Schedule] Support query for listing schedules (#1535, Kudos to @nikhilbhatia08 🙏)client] :test: Add experimental support for Cloud Operations API (#1538)workflow] Workflow Activation Encoder was discarding SDK flags (#1530)core] Respect gRPC timeouts on get wf execution history (temporalio/sdk-core#812)core] Attempt to address unusal rpc cancellation error (temporalio/sdk-core#811)core] Fix legacy query failure replying (temporalio/sdk-core#809)core] Fix possible NDEs caused by LAs & immediate cancels resolving in different order upon replay (temporalio/sdk-core#808)workflow] Fix potential incoherencies in Workflow Activation Jobs ordering (#1513, temporalio/sdk-core#789)core] Include Search Attribute updates made in-workflow when continuing as new (temporalio/sdk-core#797)core] Add basic validation on Activity Tasks (temporalio/sdk-core#795)core] Do not send queries after we would fail WFT (temporalio/sdk-core#792)client] Reexport WorkflowExecutionAlreadyStartedError from @temporalio/client (#1498)