From b1507e2c89fe4dec76417c87e2cb72ce71cfa0d0 Mon Sep 17 00:00:00 2001 From: Kannan Rajah Date: Thu, 9 Apr 2026 17:24:17 -0700 Subject: [PATCH 1/7] Add TASK_QUEUE_KIND_INTERNAL for server-internal task queues Co-Authored-By: Claude Opus 4.6 --- temporal/api/enums/v1/task_queue.proto | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/temporal/api/enums/v1/task_queue.proto b/temporal/api/enums/v1/task_queue.proto index b54f8f18b..d506ffb7f 100644 --- a/temporal/api/enums/v1/task_queue.proto +++ b/temporal/api/enums/v1/task_queue.proto @@ -31,6 +31,10 @@ enum TaskQueueKind { // // Sticky queues are only for workflow tasks. There are no sticky task queues for activities. TASK_QUEUE_KIND_STICKY = 2; + // An internal task queue is used for server-to-worker communication (e.g. activity + // cancellations via worker commands). These queues are per-worker and only exist for the + // lifetime of the worker process. + TASK_QUEUE_KIND_INTERNAL = 3; } enum TaskQueueType { From 11dd11491d7f516e5006834e9b34451be5626e38 Mon Sep 17 00:00:00 2001 From: Kannan Rajah Date: Thu, 9 Apr 2026 17:27:20 -0700 Subject: [PATCH 2/7] Rename to TASK_QUEUE_KIND_WORKER_COMMANDS Co-Authored-By: Claude Opus 4.6 --- temporal/api/enums/v1/task_queue.proto | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/temporal/api/enums/v1/task_queue.proto b/temporal/api/enums/v1/task_queue.proto index d506ffb7f..87102aa10 100644 --- a/temporal/api/enums/v1/task_queue.proto +++ b/temporal/api/enums/v1/task_queue.proto @@ -31,10 +31,10 @@ enum TaskQueueKind { // // Sticky queues are only for workflow tasks. There are no sticky task queues for activities. TASK_QUEUE_KIND_STICKY = 2; - // An internal task queue is used for server-to-worker communication (e.g. activity - // cancellations via worker commands). These queues are per-worker and only exist for the - // lifetime of the worker process. - TASK_QUEUE_KIND_INTERNAL = 3; + // A worker-commands task queue is used for server-to-worker communication (e.g. activity + // cancellations). These queues are per-worker and only exist for the lifetime of the worker + // process. + TASK_QUEUE_KIND_WORKER_COMMANDS = 3; } enum TaskQueueType { From 0193c0dd45e572711f404ddebcfa32fdb46fe179 Mon Sep 17 00:00:00 2001 From: Kannan Rajah Date: Thu, 9 Apr 2026 17:39:04 -0700 Subject: [PATCH 3/7] Regenerate OpenAPI files for TASK_QUEUE_KIND_WORKER_COMMANDS Co-Authored-By: Claude Opus 4.6 --- openapi/openapiv2.json | 15 +++++++++------ openapi/openapiv3.yaml | 3 +++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/openapi/openapiv2.json b/openapi/openapiv2.json index bf8692b66..7715ad6a7 100644 --- a/openapi/openapiv2.json +++ b/openapi/openapiv2.json @@ -1895,14 +1895,15 @@ }, { "name": "taskQueue.kind", - "description": "Default: TASK_QUEUE_KIND_NORMAL.\n\n - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.", + "description": "Default: TASK_QUEUE_KIND_NORMAL.\n\n - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.\n - TASK_QUEUE_KIND_WORKER_COMMANDS: A worker-commands task queue is used for server-to-worker communication (e.g. activity\ncancellations). These queues are per-worker and only exist for the lifetime of the worker\nprocess.", "in": "query", "required": false, "type": "string", "enum": [ "TASK_QUEUE_KIND_UNSPECIFIED", "TASK_QUEUE_KIND_NORMAL", - "TASK_QUEUE_KIND_STICKY" + "TASK_QUEUE_KIND_STICKY", + "TASK_QUEUE_KIND_WORKER_COMMANDS" ], "default": "TASK_QUEUE_KIND_UNSPECIFIED" }, @@ -6632,14 +6633,15 @@ }, { "name": "taskQueue.kind", - "description": "Default: TASK_QUEUE_KIND_NORMAL.\n\n - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.", + "description": "Default: TASK_QUEUE_KIND_NORMAL.\n\n - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.\n - TASK_QUEUE_KIND_WORKER_COMMANDS: A worker-commands task queue is used for server-to-worker communication (e.g. activity\ncancellations). These queues are per-worker and only exist for the lifetime of the worker\nprocess.", "in": "query", "required": false, "type": "string", "enum": [ "TASK_QUEUE_KIND_UNSPECIFIED", "TASK_QUEUE_KIND_NORMAL", - "TASK_QUEUE_KIND_STICKY" + "TASK_QUEUE_KIND_STICKY", + "TASK_QUEUE_KIND_WORKER_COMMANDS" ], "default": "TASK_QUEUE_KIND_UNSPECIFIED" }, @@ -16739,10 +16741,11 @@ "enum": [ "TASK_QUEUE_KIND_UNSPECIFIED", "TASK_QUEUE_KIND_NORMAL", - "TASK_QUEUE_KIND_STICKY" + "TASK_QUEUE_KIND_STICKY", + "TASK_QUEUE_KIND_WORKER_COMMANDS" ], "default": "TASK_QUEUE_KIND_UNSPECIFIED", - "description": " - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities." + "description": " - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.\n - TASK_QUEUE_KIND_WORKER_COMMANDS: A worker-commands task queue is used for server-to-worker communication (e.g. activity\ncancellations). These queues are per-worker and only exist for the lifetime of the worker\nprocess." }, "v1TaskQueueReachability": { "type": "object", diff --git a/openapi/openapiv3.yaml b/openapi/openapiv3.yaml index c4ee8a0b6..a92f63a1e 100644 --- a/openapi/openapiv3.yaml +++ b/openapi/openapiv3.yaml @@ -1812,6 +1812,7 @@ paths: - TASK_QUEUE_KIND_UNSPECIFIED - TASK_QUEUE_KIND_NORMAL - TASK_QUEUE_KIND_STICKY + - TASK_QUEUE_KIND_WORKER_COMMANDS type: string format: enum - name: taskQueue.normalName @@ -6046,6 +6047,7 @@ paths: - TASK_QUEUE_KIND_UNSPECIFIED - TASK_QUEUE_KIND_NORMAL - TASK_QUEUE_KIND_STICKY + - TASK_QUEUE_KIND_WORKER_COMMANDS type: string format: enum - name: taskQueue.normalName @@ -14759,6 +14761,7 @@ components: - TASK_QUEUE_KIND_UNSPECIFIED - TASK_QUEUE_KIND_NORMAL - TASK_QUEUE_KIND_STICKY + - TASK_QUEUE_KIND_WORKER_COMMANDS type: string description: 'Default: TASK_QUEUE_KIND_NORMAL.' format: enum From ae8db79acdf1ce582ac16933de7b567d55f2a6e7 Mon Sep 17 00:00:00 2001 From: Kannan Rajah Date: Mon, 13 Apr 2026 14:33:34 -0700 Subject: [PATCH 4/7] Expand WORKER_COMMANDS comment with polling and partition details Co-Authored-By: Claude Opus 4.6 --- temporal/api/enums/v1/task_queue.proto | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/temporal/api/enums/v1/task_queue.proto b/temporal/api/enums/v1/task_queue.proto index 87102aa10..6a654203d 100644 --- a/temporal/api/enums/v1/task_queue.proto +++ b/temporal/api/enums/v1/task_queue.proto @@ -32,8 +32,9 @@ enum TaskQueueKind { // Sticky queues are only for workflow tasks. There are no sticky task queues for activities. TASK_QUEUE_KIND_STICKY = 2; // A worker-commands task queue is used for server-to-worker communication (e.g. activity - // cancellations). These queues are per-worker and only exist for the lifetime of the worker - // process. + // cancellations). These queues are ephemeral and per-worker-process — they exist only for + // the lifetime of the worker process. They have a single partition with no fan-out or + // forwarding. Polled via PollNexusTaskQueue. TASK_QUEUE_KIND_WORKER_COMMANDS = 3; } From b4aa7523335d1b9547c38cf65b3a6299eabd8e0e Mon Sep 17 00:00:00 2001 From: Kannan Rajah Date: Mon, 13 Apr 2026 14:40:13 -0700 Subject: [PATCH 5/7] Regenerate OpenAPI after comment update Co-Authored-By: Claude Opus 4.6 --- openapi/openapiv2.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openapi/openapiv2.json b/openapi/openapiv2.json index 7715ad6a7..ab5d12eca 100644 --- a/openapi/openapiv2.json +++ b/openapi/openapiv2.json @@ -1895,7 +1895,7 @@ }, { "name": "taskQueue.kind", - "description": "Default: TASK_QUEUE_KIND_NORMAL.\n\n - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.\n - TASK_QUEUE_KIND_WORKER_COMMANDS: A worker-commands task queue is used for server-to-worker communication (e.g. activity\ncancellations). These queues are per-worker and only exist for the lifetime of the worker\nprocess.", + "description": "Default: TASK_QUEUE_KIND_NORMAL.\n\n - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.\n - TASK_QUEUE_KIND_WORKER_COMMANDS: A worker-commands task queue is used for server-to-worker communication (e.g. activity\ncancellations). These queues are ephemeral and per-worker-process — they exist only for\nthe lifetime of the worker process. They have a single partition with no fan-out or\nforwarding. Polled via PollNexusTaskQueue.", "in": "query", "required": false, "type": "string", @@ -6633,7 +6633,7 @@ }, { "name": "taskQueue.kind", - "description": "Default: TASK_QUEUE_KIND_NORMAL.\n\n - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.\n - TASK_QUEUE_KIND_WORKER_COMMANDS: A worker-commands task queue is used for server-to-worker communication (e.g. activity\ncancellations). These queues are per-worker and only exist for the lifetime of the worker\nprocess.", + "description": "Default: TASK_QUEUE_KIND_NORMAL.\n\n - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.\n - TASK_QUEUE_KIND_WORKER_COMMANDS: A worker-commands task queue is used for server-to-worker communication (e.g. activity\ncancellations). These queues are ephemeral and per-worker-process — they exist only for\nthe lifetime of the worker process. They have a single partition with no fan-out or\nforwarding. Polled via PollNexusTaskQueue.", "in": "query", "required": false, "type": "string", @@ -16745,7 +16745,7 @@ "TASK_QUEUE_KIND_WORKER_COMMANDS" ], "default": "TASK_QUEUE_KIND_UNSPECIFIED", - "description": " - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.\n - TASK_QUEUE_KIND_WORKER_COMMANDS: A worker-commands task queue is used for server-to-worker communication (e.g. activity\ncancellations). These queues are per-worker and only exist for the lifetime of the worker\nprocess." + "description": " - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.\n - TASK_QUEUE_KIND_WORKER_COMMANDS: A worker-commands task queue is used for server-to-worker communication (e.g. activity\ncancellations). These queues are ephemeral and per-worker-process — they exist only for\nthe lifetime of the worker process. They have a single partition with no fan-out or\nforwarding. Polled via PollNexusTaskQueue." }, "v1TaskQueueReachability": { "type": "object", From bdd5c2cfdb05ae5c8eba9fe9cba25702d8fbf228 Mon Sep 17 00:00:00 2001 From: Kannan Rajah Date: Mon, 13 Apr 2026 14:43:07 -0700 Subject: [PATCH 6/7] Remove server-internal details from WORKER_COMMANDS comment Co-Authored-By: Claude Opus 4.6 --- openapi/openapiv2.json | 6 +++--- temporal/api/enums/v1/task_queue.proto | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/openapi/openapiv2.json b/openapi/openapiv2.json index ab5d12eca..f6e99a8d1 100644 --- a/openapi/openapiv2.json +++ b/openapi/openapiv2.json @@ -1895,7 +1895,7 @@ }, { "name": "taskQueue.kind", - "description": "Default: TASK_QUEUE_KIND_NORMAL.\n\n - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.\n - TASK_QUEUE_KIND_WORKER_COMMANDS: A worker-commands task queue is used for server-to-worker communication (e.g. activity\ncancellations). These queues are ephemeral and per-worker-process — they exist only for\nthe lifetime of the worker process. They have a single partition with no fan-out or\nforwarding. Polled via PollNexusTaskQueue.", + "description": "Default: TASK_QUEUE_KIND_NORMAL.\n\n - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.\n - TASK_QUEUE_KIND_WORKER_COMMANDS: A worker-commands task queue is used for server-to-worker communication (e.g. activity\ncancellations). These queues are ephemeral and per-worker-process — they exist only for\nthe lifetime of the worker process. Polled via PollNexusTaskQueue.", "in": "query", "required": false, "type": "string", @@ -6633,7 +6633,7 @@ }, { "name": "taskQueue.kind", - "description": "Default: TASK_QUEUE_KIND_NORMAL.\n\n - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.\n - TASK_QUEUE_KIND_WORKER_COMMANDS: A worker-commands task queue is used for server-to-worker communication (e.g. activity\ncancellations). These queues are ephemeral and per-worker-process — they exist only for\nthe lifetime of the worker process. They have a single partition with no fan-out or\nforwarding. Polled via PollNexusTaskQueue.", + "description": "Default: TASK_QUEUE_KIND_NORMAL.\n\n - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.\n - TASK_QUEUE_KIND_WORKER_COMMANDS: A worker-commands task queue is used for server-to-worker communication (e.g. activity\ncancellations). These queues are ephemeral and per-worker-process — they exist only for\nthe lifetime of the worker process. Polled via PollNexusTaskQueue.", "in": "query", "required": false, "type": "string", @@ -16745,7 +16745,7 @@ "TASK_QUEUE_KIND_WORKER_COMMANDS" ], "default": "TASK_QUEUE_KIND_UNSPECIFIED", - "description": " - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.\n - TASK_QUEUE_KIND_WORKER_COMMANDS: A worker-commands task queue is used for server-to-worker communication (e.g. activity\ncancellations). These queues are ephemeral and per-worker-process — they exist only for\nthe lifetime of the worker process. They have a single partition with no fan-out or\nforwarding. Polled via PollNexusTaskQueue." + "description": " - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.\n - TASK_QUEUE_KIND_WORKER_COMMANDS: A worker-commands task queue is used for server-to-worker communication (e.g. activity\ncancellations). These queues are ephemeral and per-worker-process — they exist only for\nthe lifetime of the worker process. Polled via PollNexusTaskQueue." }, "v1TaskQueueReachability": { "type": "object", diff --git a/temporal/api/enums/v1/task_queue.proto b/temporal/api/enums/v1/task_queue.proto index 6a654203d..cc2d0cebb 100644 --- a/temporal/api/enums/v1/task_queue.proto +++ b/temporal/api/enums/v1/task_queue.proto @@ -33,8 +33,7 @@ enum TaskQueueKind { TASK_QUEUE_KIND_STICKY = 2; // A worker-commands task queue is used for server-to-worker communication (e.g. activity // cancellations). These queues are ephemeral and per-worker-process — they exist only for - // the lifetime of the worker process. They have a single partition with no fan-out or - // forwarding. Polled via PollNexusTaskQueue. + // the lifetime of the worker process. Polled via PollNexusTaskQueue. TASK_QUEUE_KIND_WORKER_COMMANDS = 3; } From 60626f5d4067915bfbd15aafd0d59b23baacd2ff Mon Sep 17 00:00:00 2001 From: Kannan Rajah Date: Mon, 13 Apr 2026 15:30:53 -0700 Subject: [PATCH 7/7] Specify TASK_QUEUE_TYPE_NEXUS in WORKER_COMMANDS comment Co-Authored-By: Claude Opus 4.6 --- openapi/openapiv2.json | 6 +++--- temporal/api/enums/v1/task_queue.proto | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/openapi/openapiv2.json b/openapi/openapiv2.json index f6e99a8d1..2c3352760 100644 --- a/openapi/openapiv2.json +++ b/openapi/openapiv2.json @@ -1895,7 +1895,7 @@ }, { "name": "taskQueue.kind", - "description": "Default: TASK_QUEUE_KIND_NORMAL.\n\n - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.\n - TASK_QUEUE_KIND_WORKER_COMMANDS: A worker-commands task queue is used for server-to-worker communication (e.g. activity\ncancellations). These queues are ephemeral and per-worker-process — they exist only for\nthe lifetime of the worker process. Polled via PollNexusTaskQueue.", + "description": "Default: TASK_QUEUE_KIND_NORMAL.\n\n - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.\n - TASK_QUEUE_KIND_WORKER_COMMANDS: A worker-commands task queue is used for server-to-worker communication (e.g. activity\ncancellations). These queues are ephemeral and per-worker-process — they exist only for\nthe lifetime of the worker process. Used with TASK_QUEUE_TYPE_NEXUS and polled via\nPollNexusTaskQueue.", "in": "query", "required": false, "type": "string", @@ -6633,7 +6633,7 @@ }, { "name": "taskQueue.kind", - "description": "Default: TASK_QUEUE_KIND_NORMAL.\n\n - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.\n - TASK_QUEUE_KIND_WORKER_COMMANDS: A worker-commands task queue is used for server-to-worker communication (e.g. activity\ncancellations). These queues are ephemeral and per-worker-process — they exist only for\nthe lifetime of the worker process. Polled via PollNexusTaskQueue.", + "description": "Default: TASK_QUEUE_KIND_NORMAL.\n\n - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.\n - TASK_QUEUE_KIND_WORKER_COMMANDS: A worker-commands task queue is used for server-to-worker communication (e.g. activity\ncancellations). These queues are ephemeral and per-worker-process — they exist only for\nthe lifetime of the worker process. Used with TASK_QUEUE_TYPE_NEXUS and polled via\nPollNexusTaskQueue.", "in": "query", "required": false, "type": "string", @@ -16745,7 +16745,7 @@ "TASK_QUEUE_KIND_WORKER_COMMANDS" ], "default": "TASK_QUEUE_KIND_UNSPECIFIED", - "description": " - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.\n - TASK_QUEUE_KIND_WORKER_COMMANDS: A worker-commands task queue is used for server-to-worker communication (e.g. activity\ncancellations). These queues are ephemeral and per-worker-process — they exist only for\nthe lifetime of the worker process. Polled via PollNexusTaskQueue." + "description": " - TASK_QUEUE_KIND_UNSPECIFIED: Tasks from any non workflow task may be unspecified.\n\nTask queue kind is used to differentiate whether a workflow task queue is sticky or \nnormal. If a task is not a workflow task, Task queue kind will sometimes be \nunspecified.\n - TASK_QUEUE_KIND_NORMAL: Tasks from a normal workflow task queue always include complete workflow history\n\nThe task queue specified by the user is always a normal task queue. There can be as many\nworkers as desired for a single normal task queue. All those workers may pick up tasks from\nthat queue.\n - TASK_QUEUE_KIND_STICKY: A sticky queue only includes new history since the last workflow task, and they are\nper-worker.\n\nSticky queues are created dynamically by each worker during their start up. They only exist\nfor the lifetime of the worker process. Tasks in a sticky task queue are only available to\nthe worker that created the sticky queue.\n\nSticky queues are only for workflow tasks. There are no sticky task queues for activities.\n - TASK_QUEUE_KIND_WORKER_COMMANDS: A worker-commands task queue is used for server-to-worker communication (e.g. activity\ncancellations). These queues are ephemeral and per-worker-process — they exist only for\nthe lifetime of the worker process. Used with TASK_QUEUE_TYPE_NEXUS and polled via\nPollNexusTaskQueue." }, "v1TaskQueueReachability": { "type": "object", diff --git a/temporal/api/enums/v1/task_queue.proto b/temporal/api/enums/v1/task_queue.proto index cc2d0cebb..e583988fe 100644 --- a/temporal/api/enums/v1/task_queue.proto +++ b/temporal/api/enums/v1/task_queue.proto @@ -33,7 +33,8 @@ enum TaskQueueKind { TASK_QUEUE_KIND_STICKY = 2; // A worker-commands task queue is used for server-to-worker communication (e.g. activity // cancellations). These queues are ephemeral and per-worker-process — they exist only for - // the lifetime of the worker process. Polled via PollNexusTaskQueue. + // the lifetime of the worker process. Used with TASK_QUEUE_TYPE_NEXUS and polled via + // PollNexusTaskQueue. TASK_QUEUE_KIND_WORKER_COMMANDS = 3; }