worker.proto
Generated from proto/blitz/v1/worker.proto by proto-gen-md-diagrams.
| Import | Description |
|---|---|
| blitz/v1/turn.proto | |
| google/protobuf/duration.proto | |
| google/protobuf/timestamp.proto |
| Name | Value | Description |
|---|---|---|
| go_package | github.com/retail-cortex/blitz/proto/blitz/v1 |
classDiagram
direction LR
%% Mermaid Diagram for package: blitz.v1
%% WorkerLimits bound one run.
class WorkerLimits {
+ int32 max_turns
+ double max_cost_usd
+ google.protobuf.Duration timeout
}
%% Worker describes a worker.
class Worker {
+ string workspace
+ string name
+ string description
+ string path
+ string hash
+ WorkerState state
+ string schedule
+ string cron
+ string timezone
+ google.protobuf.Timestamp next_run
+ string agent
+ string model
+ List~string~ permissions
+ WorkerLimits limits
+ List~string~ problems
+ WorkerRun last_run
+ string workflow
}
Worker --> `WorkerState`
Worker --> `WorkerLimits`
Worker --> `WorkerRun`
%% Request message for WorkerService.ListWorkers.
class ListWorkersRequest {
+ string workspace
}
%% Response message for WorkerService.ListWorkers.
class ListWorkersResponse {
+ List~Worker~ workers
}
ListWorkersResponse --> `Worker`
%% Request message for WorkerService.CreateWorker: WORKER.md's frontmatter fields and the workflow. Empty fields are left out.
class CreateWorkerRequest {
+ string workspace
+ string name
+ string description
+ string schedule
+ string timezone
+ string agent
+ string model
+ List~string~ permissions
+ int32 max_turns
+ double max_cost_usd
+ string timeout
+ string catch_up
+ string prompt
+ string workflow
}
%% WorkerDefinition is a WORKER.md as written: its frontmatter fields and the workflow. Empty fields are left out of the file.
class WorkerDefinition {
+ string name
+ string description
+ string schedule
+ string timezone
+ string agent
+ string model
+ List~string~ permissions
+ int32 max_turns
+ double max_cost_usd
+ string timeout
+ string catch_up
+ string prompt
+ string workflow
}
%% Request message for WorkerService.GetWorkerSpec.
class GetWorkerSpecRequest {
+ string workspace
+ string name
}
%% Response message for WorkerService.GetWorkerSpec.
class GetWorkerSpecResponse {
+ WorkerDefinition worker
+ string hash
}
GetWorkerSpecResponse --> `WorkerDefinition`
%% Request message for WorkerService.UpdateWorker.
class UpdateWorkerRequest {
+ string workspace
+ string hash
+ WorkerDefinition worker
}
UpdateWorkerRequest --> `WorkerDefinition`
%% Response message for WorkerService.UpdateWorker.
class UpdateWorkerResponse {
+ Worker worker
+ List~string~ problems
}
UpdateWorkerResponse --> `Worker`
%% Response message for WorkerService.CreateWorker.
class CreateWorkerResponse {
+ Worker worker
+ List~string~ problems
}
CreateWorkerResponse --> `Worker`
%% Request message for WorkerService.EnableWorker.
class EnableWorkerRequest {
+ string workspace
+ string name
+ string hash
}
%% Response message for WorkerService.EnableWorker.
class EnableWorkerResponse {
+ Worker worker
}
EnableWorkerResponse --> `Worker`
%% Request message for WorkerService.DisableWorker.
class DisableWorkerRequest {
+ string workspace
+ string name
}
%% Response message for WorkerService.DisableWorker.
class DisableWorkerResponse {
+ Worker worker
}
DisableWorkerResponse --> `Worker`
%% Request message for WorkerService.DeleteWorker.
class DeleteWorkerRequest {
+ string workspace
+ string name
}
%% Response message for WorkerService.DeleteWorker.
class DeleteWorkerResponse {
}
%% Refusal is an action a run wasn't permitted.
class Refusal {
+ string tool
+ ActionKind kind
+ string detail
+ google.protobuf.Timestamp time
}
Refusal --> `ActionKind`
%% WorkerRun is one run of a worker.
class WorkerRun {
+ string id
+ string workspace
+ string worker
+ string hash
+ RunStatus status
+ bool manual
+ google.protobuf.Timestamp started
+ google.protobuf.Duration duration
+ Usage usage
+ string session_id
+ List~Refusal~ refusals
+ ErrorInfo error
+ List~string~ files
}
WorkerRun --> `RunStatus`
WorkerRun --> `Usage`
WorkerRun --> `Refusal`
WorkerRun --> `ErrorInfo`
%% Request message for WorkerService.UndoWorkerRun.
class UndoWorkerRunRequest {
+ string workspace
+ string run_id
+ bool force
}
%% Response message for WorkerService.UndoWorkerRun.
class UndoWorkerRunResponse {
+ List~string~ restored
+ ErrorInfo error
}
UndoWorkerRunResponse --> `ErrorInfo`
%% Request message for WorkerService.RunWorker.
class RunWorkerRequest {
+ string workspace
+ string name
}
%% Response message for WorkerService.RunWorker.
class RunWorkerResponse {
+ WorkerRun run
}
RunWorkerResponse --> `WorkerRun`
%% Request message for WorkerService.ListWorkerRuns.
class ListWorkerRunsRequest {
+ string workspace
+ string name
+ int32 limit
}
%% Response message for WorkerService.ListWorkerRuns.
class ListWorkerRunsResponse {
+ List~WorkerRun~ runs
}
ListWorkerRunsResponse --> `WorkerRun`
%% Request message for WorkerService.GetWorkerRun.
class GetWorkerRunRequest {
+ string run_id
}
%% Response message for WorkerService.GetWorkerRun.
class GetWorkerRunResponse {
+ WorkerRun run
}
GetWorkerRunResponse --> `WorkerRun`
%% Request message for WorkerService.WatchWorkerRun.
class WatchWorkerRunRequest {
+ string run_id
}
%% Response message for WorkerService.WatchWorkerRun.
class WatchWorkerRunResponse {
+ TurnEvent event
}
WatchWorkerRunResponse --> `TurnEvent`
%% Request message for WorkerService.ListRunningWorkerRuns.
class ListRunningWorkerRunsRequest {
}
%% Response message for WorkerService.ListRunningWorkerRuns.
class ListRunningWorkerRunsResponse {
+ List~WorkerRun~ runs
}
ListRunningWorkerRunsResponse --> `WorkerRun`
%% Request message for WorkerService.StopWorkerRun.
class StopWorkerRunRequest {
+ string run_id
}
%% Response message for WorkerService.StopWorkerRun.
class StopWorkerRunResponse {
+ WorkerRun run
}
StopWorkerRunResponse --> `WorkerRun`
%% Request message for WorkerService.RewriteWorker.
class RewriteWorkerRequest {
+ string workspace
+ WorkerDefinition worker
}
RewriteWorkerRequest --> `WorkerDefinition`
%% Response message for WorkerService.RewriteWorker.
class RewriteWorkerResponse {
+ string prompt
+ List~string~ permissions
+ List~string~ changes
+ string problem
}
%% Request message for WorkerService.ListAllWorkers.
class ListAllWorkersRequest {
}
%% One workspace's workers, in ListAllWorkersResponse.
class WorkspaceWorkers {
+ string workspace
+ bool home
+ bool missing
+ List~Worker~ workers
+ string problem
}
WorkspaceWorkers --> `Worker`
%% Response message for WorkerService.ListAllWorkers.
class ListAllWorkersResponse {
+ string home
+ List~WorkspaceWorkers~ workspaces
+ WorkerPolicySettings policy
}
ListAllWorkersResponse --> `WorkspaceWorkers`
ListAllWorkersResponse --> `WorkerPolicySettings`
%% The global limits on every worker, as the settings have them ([workers.policy]; spec_workers_023 WK-63). A worker asks for permissions and limits; these remove what isn't allowed, fill in what it leaves out, and cap the rest.
class WorkerPolicySettings {
+ List~string~ allow
+ int32 default_max_turns
+ double default_max_cost_usd
+ string default_timeout
+ int32 max_turns
+ double max_cost_usd
+ string max_timeout
+ int32 max_concurrent
+ int32 running_max_concurrent
+ string path
}
%% Request message for WorkerService.ForgetWorkspaceWorkers.
class ForgetWorkspaceWorkersRequest {
+ string workspace
}
%% Response message for WorkerService.ForgetWorkspaceWorkers.
class ForgetWorkspaceWorkersResponse {
}
%% WorkerState is whether a worker may run.
class WorkerState{
<<enumeration>>
WORKER_STATE_UNSPECIFIED
WORKER_STATE_NEW
WORKER_STATE_ENABLED
WORKER_STATE_DISABLED
WORKER_STATE_CHANGED
WORKER_STATE_INVALID
}
%% RunStatus is where a run stands.
class RunStatus{
<<enumeration>>
RUN_STATUS_UNSPECIFIED
RUN_STATUS_RUNNING
RUN_STATUS_SUCCEEDED
RUN_STATUS_FAILED
RUN_STATUS_LIMITED
RUN_STATUS_SKIPPED
RUN_STATUS_STOPPED
}
class WorkerService {
<<service>>
+ListWorkers(ListWorkersRequest) ListWorkersResponse
+CreateWorker(CreateWorkerRequest) CreateWorkerResponse
+GetWorkerSpec(GetWorkerSpecRequest) GetWorkerSpecResponse
+UpdateWorker(UpdateWorkerRequest) UpdateWorkerResponse
+EnableWorker(EnableWorkerRequest) EnableWorkerResponse
+DisableWorker(DisableWorkerRequest) DisableWorkerResponse
+DeleteWorker(DeleteWorkerRequest) DeleteWorkerResponse
+RunWorker(RunWorkerRequest) RunWorkerResponse
+ListWorkerRuns(ListWorkerRunsRequest) ListWorkerRunsResponse
+GetWorkerRun(GetWorkerRunRequest) GetWorkerRunResponse
+UndoWorkerRun(UndoWorkerRunRequest) UndoWorkerRunResponse
+WatchWorkerRun(WatchWorkerRunRequest) Stream~WatchWorkerRunResponse~
+ListRunningWorkerRuns(ListRunningWorkerRunsRequest) ListRunningWorkerRunsResponse
+StopWorkerRun(StopWorkerRunRequest) StopWorkerRunResponse
+RewriteWorker(RewriteWorkerRequest) RewriteWorkerResponse
+ListAllWorkers(ListAllWorkersRequest) ListAllWorkersResponse
+ForgetWorkspaceWorkers(ForgetWorkspaceWorkersRequest) ForgetWorkspaceWorkersResponse
}
WorkerService --> `ListWorkersRequest`
WorkerService --> `ListWorkersResponse`
WorkerService --> `CreateWorkerRequest`
WorkerService --> `CreateWorkerResponse`
WorkerService --> `GetWorkerSpecRequest`
WorkerService --> `GetWorkerSpecResponse`
WorkerService --> `UpdateWorkerRequest`
WorkerService --> `UpdateWorkerResponse`
WorkerService --> `EnableWorkerRequest`
WorkerService --> `EnableWorkerResponse`
WorkerService --> `DisableWorkerRequest`
WorkerService --> `DisableWorkerResponse`
WorkerService --> `DeleteWorkerRequest`
WorkerService --> `DeleteWorkerResponse`
WorkerService --> `RunWorkerRequest`
WorkerService --> `RunWorkerResponse`
WorkerService --> `ListWorkerRunsRequest`
WorkerService --> `ListWorkerRunsResponse`
WorkerService --> `GetWorkerRunRequest`
WorkerService --> `GetWorkerRunResponse`
WorkerService --> `UndoWorkerRunRequest`
WorkerService --> `UndoWorkerRunResponse`
WorkerService --> `WatchWorkerRunRequest`
WorkerService --o `WatchWorkerRunResponse` : server stream
WorkerService --> `ListRunningWorkerRunsRequest`
WorkerService --> `ListRunningWorkerRunsResponse`
WorkerService --> `StopWorkerRunRequest`
WorkerService --> `StopWorkerRunResponse`
WorkerService --> `RewriteWorkerRequest`
WorkerService --> `RewriteWorkerResponse`
WorkerService --> `ListAllWorkersRequest`
WorkerService --> `ListAllWorkersResponse`
WorkerService --> `ForgetWorkspaceWorkersRequest`
WorkerService --> `ForgetWorkspaceWorkersResponse`
FQN: blitz.v1
WorkerService manages workers: scheduled workflows a workspace defines in .agents/workers/<name>/WORKER.md or workers/<name>/WORKER.md (ROADMAP item 24). The service finds them by scanning trusted workspaces; a worker runs only once enabled against its content hash, and editing it disables it again. Actions outside a worker's permissions are refused and recorded, never left waiting.
classDiagram
direction LR
class WorkerService {
<<service>>
+ListWorkers(ListWorkersRequest) ListWorkersResponse
+CreateWorker(CreateWorkerRequest) CreateWorkerResponse
+GetWorkerSpec(GetWorkerSpecRequest) GetWorkerSpecResponse
+UpdateWorker(UpdateWorkerRequest) UpdateWorkerResponse
+EnableWorker(EnableWorkerRequest) EnableWorkerResponse
+DisableWorker(DisableWorkerRequest) DisableWorkerResponse
+DeleteWorker(DeleteWorkerRequest) DeleteWorkerResponse
+RunWorker(RunWorkerRequest) RunWorkerResponse
+ListWorkerRuns(ListWorkerRunsRequest) ListWorkerRunsResponse
+GetWorkerRun(GetWorkerRunRequest) GetWorkerRunResponse
+UndoWorkerRun(UndoWorkerRunRequest) UndoWorkerRunResponse
+WatchWorkerRun(WatchWorkerRunRequest) Stream~WatchWorkerRunResponse~
+ListRunningWorkerRuns(ListRunningWorkerRunsRequest) ListRunningWorkerRunsResponse
+StopWorkerRun(StopWorkerRunRequest) StopWorkerRunResponse
+RewriteWorker(RewriteWorkerRequest) RewriteWorkerResponse
+ListAllWorkers(ListAllWorkersRequest) ListAllWorkersResponse
+ForgetWorkspaceWorkers(ForgetWorkspaceWorkersRequest) ForgetWorkspaceWorkersResponse
}
WorkerService --> `ListWorkersRequest`
WorkerService --> `ListWorkersResponse`
WorkerService --> `CreateWorkerRequest`
WorkerService --> `CreateWorkerResponse`
WorkerService --> `GetWorkerSpecRequest`
WorkerService --> `GetWorkerSpecResponse`
WorkerService --> `UpdateWorkerRequest`
WorkerService --> `UpdateWorkerResponse`
WorkerService --> `EnableWorkerRequest`
WorkerService --> `EnableWorkerResponse`
WorkerService --> `DisableWorkerRequest`
WorkerService --> `DisableWorkerResponse`
WorkerService --> `DeleteWorkerRequest`
WorkerService --> `DeleteWorkerResponse`
WorkerService --> `RunWorkerRequest`
WorkerService --> `RunWorkerResponse`
WorkerService --> `ListWorkerRunsRequest`
WorkerService --> `ListWorkerRunsResponse`
WorkerService --> `GetWorkerRunRequest`
WorkerService --> `GetWorkerRunResponse`
WorkerService --> `UndoWorkerRunRequest`
WorkerService --> `UndoWorkerRunResponse`
WorkerService --> `WatchWorkerRunRequest`
WorkerService --o `WatchWorkerRunResponse` : server stream
WorkerService --> `ListRunningWorkerRunsRequest`
WorkerService --> `ListRunningWorkerRunsResponse`
WorkerService --> `StopWorkerRunRequest`
WorkerService --> `StopWorkerRunResponse`
WorkerService --> `RewriteWorkerRequest`
WorkerService --> `RewriteWorkerResponse`
WorkerService --> `ListAllWorkersRequest`
WorkerService --> `ListAllWorkersResponse`
WorkerService --> `ForgetWorkspaceWorkersRequest`
WorkerService --> `ForgetWorkspaceWorkersResponse`
| Method | Parameter (In) | Parameter (Out) | Description |
|---|---|---|---|
| ListWorkers | ListWorkersRequest | ListWorkersResponse | Returns a workspace’s workers, or every registered workspace’s. |
| CreateWorker | CreateWorkerRequest | CreateWorkerResponse | Writes a new worker’s WORKER.md (in the first of workers.paths, .agents/workers by default) from a form, once it would load as valid; otherwise writes nothing and says why (WORKER_INVALID; WORKER_EXISTS for a name the workspace has). It starts disabled. |
| GetWorkerSpec | GetWorkerSpecRequest | GetWorkerSpecResponse | Returns a worker’s WORKER.md as written (not as the policy caps it), for editing, with its current hash; it needn’t be valid (UNKNOWN_WORKER). |
| UpdateWorker | UpdateWorkerRequest | UpdateWorkerResponse | Rewrites a worker’s WORKER.md from a form, if it still has the hash the caller edited (HASH_MISMATCH) and the result would load as valid; otherwise writes nothing and says why. Its name can’t change. An enabled worker is suspended (changed) until it’s enabled again. |
| EnableWorker | EnableWorkerRequest | EnableWorkerResponse | Enables a worker at the content hash the caller reviewed (HASH_MISMATCH if the file changed since). |
| DisableWorker | DisableWorkerRequest | DisableWorkerResponse | Disables a worker. |
| DeleteWorker | DeleteWorkerRequest | DeleteWorkerResponse | Deletes a worker: its directory and whether it was enabled; its past runs stay. Refused while it runs (RUN_IN_PROGRESS); UNKNOWN_WORKER. |
| RunWorker | RunWorkerRequest | RunWorkerResponse | Starts a run now, outside the schedule (WORKER_DISABLED, RUN_IN_PROGRESS). |
| ListWorkerRuns | ListWorkerRunsRequest | ListWorkerRunsResponse | Returns a worker’s runs, newest first. |
| GetWorkerRun | GetWorkerRunRequest | GetWorkerRunResponse | Returns one run. |
| UndoWorkerRun | UndoWorkerRunRequest | UndoWorkerRunResponse | Restores the files a run changed as they were before it, refusing (UNDO_CONFLICT) when one changed since, unless force (NOTHING_TO_UNDO). |
| WatchWorkerRun | WatchWorkerRunRequest | Stream<WatchWorkerRunResponse> | Streams a run’s events: those already produced, then live ones until it finishes. |
| ListRunningWorkerRuns | ListRunningWorkerRunsRequest | ListRunningWorkerRunsResponse | Lists the runs going now, in every workspace (Studio › Workers and Settings › Workers). |
| StopWorkerRun | StopWorkerRunRequest | StopWorkerRunResponse | Stops a run going now: its turn is cancelled and it’s recorded as stopped (RUN_NOT_RUNNING when it isn’t going). |
| RewriteWorker | RewriteWorkerRequest | RewriteWorkerResponse | Has the model rewrite a worker’s instructions, as the form has them, for a good unattended run, with the permissions they need; nothing is saved. A model that fails gives problem instead of an error (NO_INSTRUCTIONS without instructions). |
| ListAllWorkers | ListAllWorkersRequest | ListAllWorkersResponse | Lists every workspace the service has workers on record for (enabled or disabled), and the home workspace the user’s global workers run in (~/.blitz/home, made when missing), each with its workers. A workspace whose folder is gone is listed as missing, with the workers on record; one that can’t be opened, with the problem. |
| ForgetWorkspaceWorkers | ForgetWorkspaceWorkersRequest | ForgetWorkspaceWorkersResponse | Forgets every worker of a workspace: none of them is enabled any more, and the service no longer looks for its folder. Their files aren’t touched. Refused while one of them runs (RUN_IN_PROGRESS). |
FQN: blitz.v1.WorkerState
WorkerState is whether a worker may run.
| Name | Ordinal | Description |
|---|---|---|
| WORKER_STATE_UNSPECIFIED | 0 | |
| WORKER_STATE_NEW | 1 | Found but never enabled. |
| WORKER_STATE_ENABLED | 2 | |
| WORKER_STATE_DISABLED | 3 | |
| WORKER_STATE_CHANGED | 4 | Enabled at an older hash; the file has changed since. |
| WORKER_STATE_INVALID | 5 | WORKER.md can’t be used; problems says why. |
FQN: blitz.v1.RunStatus
RunStatus is where a run stands.
| Name | Ordinal | Description |
|---|---|---|
| RUN_STATUS_UNSPECIFIED | 0 | |
| RUN_STATUS_RUNNING | 1 | |
| RUN_STATUS_SUCCEEDED | 2 | |
| RUN_STATUS_FAILED | 3 | |
| RUN_STATUS_LIMITED | 4 | Stopped at a limit (turns, cost, time). |
| RUN_STATUS_SKIPPED | 5 | Not started: the previous run was still going (overlap: skip). |
| RUN_STATUS_STOPPED | 6 | Stopped by the user while it went (StopWorkerRun). |
classDiagram
direction LR
%% WorkerState is whether a worker may run.
class WorkerState{
<<enumeration>>
WORKER_STATE_UNSPECIFIED
WORKER_STATE_NEW
WORKER_STATE_ENABLED
WORKER_STATE_DISABLED
WORKER_STATE_CHANGED
WORKER_STATE_INVALID
}
classDiagram
direction LR
%% RunStatus is where a run stands.
class RunStatus{
<<enumeration>>
RUN_STATUS_UNSPECIFIED
RUN_STATUS_RUNNING
RUN_STATUS_SUCCEEDED
RUN_STATUS_FAILED
RUN_STATUS_LIMITED
RUN_STATUS_SKIPPED
RUN_STATUS_STOPPED
}
classDiagram
direction LR
%% WorkerLimits bound one run.
class WorkerLimits {
+ int32 max_turns
+ double max_cost_usd
+ google.protobuf.Duration timeout
}
classDiagram
direction LR
%% Worker describes a worker.
class Worker {
+ string workspace
+ string name
+ string description
+ string path
+ string hash
+ WorkerState state
+ string schedule
+ string cron
+ string timezone
+ google.protobuf.Timestamp next_run
+ string agent
+ string model
+ List~string~ permissions
+ WorkerLimits limits
+ List~string~ problems
+ WorkerRun last_run
+ string workflow
}
Worker --> `WorkerState`
Worker --> `WorkerLimits`
Worker --> `WorkerRun`
classDiagram
direction LR
%% Request message for WorkerService.ListWorkers.
class ListWorkersRequest {
+ string workspace
}
classDiagram
direction LR
%% Response message for WorkerService.ListWorkers.
class ListWorkersResponse {
+ List~Worker~ workers
}
ListWorkersResponse --> `Worker`
classDiagram
direction LR
%% Request message for WorkerService.CreateWorker: WORKER.md's frontmatter fields and the workflow. Empty fields are left out.
class CreateWorkerRequest {
+ string workspace
+ string name
+ string description
+ string schedule
+ string timezone
+ string agent
+ string model
+ List~string~ permissions
+ int32 max_turns
+ double max_cost_usd
+ string timeout
+ string catch_up
+ string prompt
+ string workflow
}
classDiagram
direction LR
%% WorkerDefinition is a WORKER.md as written: its frontmatter fields and the workflow. Empty fields are left out of the file.
class WorkerDefinition {
+ string name
+ string description
+ string schedule
+ string timezone
+ string agent
+ string model
+ List~string~ permissions
+ int32 max_turns
+ double max_cost_usd
+ string timeout
+ string catch_up
+ string prompt
+ string workflow
}
classDiagram
direction LR
%% Request message for WorkerService.GetWorkerSpec.
class GetWorkerSpecRequest {
+ string workspace
+ string name
}
classDiagram
direction LR
%% Response message for WorkerService.GetWorkerSpec.
class GetWorkerSpecResponse {
+ WorkerDefinition worker
+ string hash
}
GetWorkerSpecResponse --> `WorkerDefinition`
classDiagram
direction LR
%% Request message for WorkerService.UpdateWorker.
class UpdateWorkerRequest {
+ string workspace
+ string hash
+ WorkerDefinition worker
}
UpdateWorkerRequest --> `WorkerDefinition`
classDiagram
direction LR
%% Response message for WorkerService.UpdateWorker.
class UpdateWorkerResponse {
+ Worker worker
+ List~string~ problems
}
UpdateWorkerResponse --> `Worker`
classDiagram
direction LR
%% Response message for WorkerService.CreateWorker.
class CreateWorkerResponse {
+ Worker worker
+ List~string~ problems
}
CreateWorkerResponse --> `Worker`
classDiagram
direction LR
%% Request message for WorkerService.EnableWorker.
class EnableWorkerRequest {
+ string workspace
+ string name
+ string hash
}
classDiagram
direction LR
%% Response message for WorkerService.EnableWorker.
class EnableWorkerResponse {
+ Worker worker
}
EnableWorkerResponse --> `Worker`
classDiagram
direction LR
%% Request message for WorkerService.DisableWorker.
class DisableWorkerRequest {
+ string workspace
+ string name
}
classDiagram
direction LR
%% Response message for WorkerService.DisableWorker.
class DisableWorkerResponse {
+ Worker worker
}
DisableWorkerResponse --> `Worker`
classDiagram
direction LR
%% Request message for WorkerService.DeleteWorker.
class DeleteWorkerRequest {
+ string workspace
+ string name
}
classDiagram
direction LR
%% Response message for WorkerService.DeleteWorker.
class DeleteWorkerResponse {
}
classDiagram
direction LR
%% Refusal is an action a run wasn't permitted.
class Refusal {
+ string tool
+ ActionKind kind
+ string detail
+ google.protobuf.Timestamp time
}
Refusal --> `ActionKind`
classDiagram
direction LR
%% WorkerRun is one run of a worker.
class WorkerRun {
+ string id
+ string workspace
+ string worker
+ string hash
+ RunStatus status
+ bool manual
+ google.protobuf.Timestamp started
+ google.protobuf.Duration duration
+ Usage usage
+ string session_id
+ List~Refusal~ refusals
+ ErrorInfo error
+ List~string~ files
}
WorkerRun --> `RunStatus`
WorkerRun --> `Usage`
WorkerRun --> `Refusal`
WorkerRun --> `ErrorInfo`
classDiagram
direction LR
%% Request message for WorkerService.UndoWorkerRun.
class UndoWorkerRunRequest {
+ string workspace
+ string run_id
+ bool force
}
classDiagram
direction LR
%% Response message for WorkerService.UndoWorkerRun.
class UndoWorkerRunResponse {
+ List~string~ restored
+ ErrorInfo error
}
UndoWorkerRunResponse --> `ErrorInfo`
classDiagram
direction LR
%% Request message for WorkerService.RunWorker.
class RunWorkerRequest {
+ string workspace
+ string name
}
classDiagram
direction LR
%% Response message for WorkerService.RunWorker.
class RunWorkerResponse {
+ WorkerRun run
}
RunWorkerResponse --> `WorkerRun`
classDiagram
direction LR
%% Request message for WorkerService.ListWorkerRuns.
class ListWorkerRunsRequest {
+ string workspace
+ string name
+ int32 limit
}
classDiagram
direction LR
%% Response message for WorkerService.ListWorkerRuns.
class ListWorkerRunsResponse {
+ List~WorkerRun~ runs
}
ListWorkerRunsResponse --> `WorkerRun`
classDiagram
direction LR
%% Request message for WorkerService.GetWorkerRun.
class GetWorkerRunRequest {
+ string run_id
}
classDiagram
direction LR
%% Response message for WorkerService.GetWorkerRun.
class GetWorkerRunResponse {
+ WorkerRun run
}
GetWorkerRunResponse --> `WorkerRun`
classDiagram
direction LR
%% Request message for WorkerService.WatchWorkerRun.
class WatchWorkerRunRequest {
+ string run_id
}
classDiagram
direction LR
%% Response message for WorkerService.WatchWorkerRun.
class WatchWorkerRunResponse {
+ TurnEvent event
}
WatchWorkerRunResponse --> `TurnEvent`
classDiagram
direction LR
%% Request message for WorkerService.ListRunningWorkerRuns.
class ListRunningWorkerRunsRequest {
}
classDiagram
direction LR
%% Response message for WorkerService.ListRunningWorkerRuns.
class ListRunningWorkerRunsResponse {
+ List~WorkerRun~ runs
}
ListRunningWorkerRunsResponse --> `WorkerRun`
classDiagram
direction LR
%% Request message for WorkerService.StopWorkerRun.
class StopWorkerRunRequest {
+ string run_id
}
classDiagram
direction LR
%% Response message for WorkerService.StopWorkerRun.
class StopWorkerRunResponse {
+ WorkerRun run
}
StopWorkerRunResponse --> `WorkerRun`
classDiagram
direction LR
%% Request message for WorkerService.RewriteWorker.
class RewriteWorkerRequest {
+ string workspace
+ WorkerDefinition worker
}
RewriteWorkerRequest --> `WorkerDefinition`
classDiagram
direction LR
%% Response message for WorkerService.RewriteWorker.
class RewriteWorkerResponse {
+ string prompt
+ List~string~ permissions
+ List~string~ changes
+ string problem
}
classDiagram
direction LR
%% Request message for WorkerService.ListAllWorkers.
class ListAllWorkersRequest {
}
classDiagram
direction LR
%% One workspace's workers, in ListAllWorkersResponse.
class WorkspaceWorkers {
+ string workspace
+ bool home
+ bool missing
+ List~Worker~ workers
+ string problem
}
WorkspaceWorkers --> `Worker`
classDiagram
direction LR
%% Response message for WorkerService.ListAllWorkers.
class ListAllWorkersResponse {
+ string home
+ List~WorkspaceWorkers~ workspaces
+ WorkerPolicySettings policy
}
ListAllWorkersResponse --> `WorkspaceWorkers`
ListAllWorkersResponse --> `WorkerPolicySettings`
classDiagram
direction LR
%% The global limits on every worker, as the settings have them ([workers.policy]; spec_workers_023 WK-63). A worker asks for permissions and limits; these remove what isn't allowed, fill in what it leaves out, and cap the rest.
class WorkerPolicySettings {
+ List~string~ allow
+ int32 default_max_turns
+ double default_max_cost_usd
+ string default_timeout
+ int32 max_turns
+ double max_cost_usd
+ string max_timeout
+ int32 max_concurrent
+ int32 running_max_concurrent
+ string path
}
classDiagram
direction LR
%% Request message for WorkerService.ForgetWorkspaceWorkers.
class ForgetWorkspaceWorkersRequest {
+ string workspace
}
classDiagram
direction LR
%% Response message for WorkerService.ForgetWorkspaceWorkers.
class ForgetWorkspaceWorkersResponse {
}
FQN: blitz.v1.WorkerLimits
WorkerLimits bound one run.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| max_turns | 1 | int32 | ||
| max_cost_usd | 2 | double | ||
| timeout | 3 | google.protobuf.Duration |
FQN: blitz.v1.Worker
Worker describes a worker.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| workspace | 1 | string | ||
| name | 2 | string | ||
| description | 3 | string | ||
| path | 4 | string | WORKER.md, absolute. | |
| hash | 5 | string | Of WORKER.md and the worker’s other files. | |
| state | 6 | WorkerState | ||
| schedule | 7 | string | As written (“Daily at 6 AM”), and as understood. | |
| cron | 8 | string | ||
| timezone | 9 | string | ||
| next_run | 10 | google.protobuf.Timestamp | ||
| agent | 11 | string | ||
| model | 12 | string | ||
| permissions | 13 | string | Repeated | What the worker may do without asking, as its frontmatter asks, after the host policy’s cap. |
| limits | 14 | WorkerLimits | ||
| problems | 15 | string | Repeated | Why the worker is invalid, or what the policy removed. |
| last_run | 16 | WorkerRun | Its latest recorded run (unset: none yet). | |
| workflow | 17 | string | The workflow it runs, its prompt the input (spec_workflows_043). |
FQN: blitz.v1.ListWorkersRequest
Request message for WorkerService.ListWorkers.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| workspace | 1 | string | Empty for every registered workspace. |
FQN: blitz.v1.ListWorkersResponse
Response message for WorkerService.ListWorkers.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| workers | 1 | Worker | Repeated |
FQN: blitz.v1.CreateWorkerRequest
Request message for WorkerService.CreateWorker: WORKER.md's frontmatter fields and the workflow. Empty fields are left out.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| workspace | 1 | string | ||
| name | 2 | string | Lowercase letters, digits, - and _: the worker’s directory. | |
| description | 3 | string | ||
| schedule | 4 | string | A cron expression, a descriptor, or plain text (“Weekdays at 9:30”). | |
| timezone | 5 | string | An IANA time zone; "" is the service machine’s. | |
| agent | 6 | string | ||
| model | 7 | string | ||
| permissions | 8 | string | Repeated | “kind:pattern”, kind shell, write, delete, web or mcp. |
| max_turns | 9 | int32 | ||
| max_cost_usd | 10 | double | ||
| timeout | 11 | string | A duration like “20m”. | |
| catch_up | 12 | string | “”, “none” or “once”. | |
| prompt | 13 | string | The workflow: WORKER.md’s body. | |
| workflow | 14 | string | The workflow it runs, its prompt the input. |
FQN: blitz.v1.WorkerDefinition
WorkerDefinition is a WORKER.md as written: its frontmatter fields and the workflow. Empty fields are left out of the file.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| name | 1 | string | The worker’s directory; fixed once created. | |
| description | 2 | string | ||
| schedule | 3 | string | A cron expression, a descriptor, or plain text (“Weekdays at 9:30”). | |
| timezone | 4 | string | An IANA time zone; "" is the service machine’s. | |
| agent | 5 | string | ||
| model | 6 | string | ||
| permissions | 7 | string | Repeated | “kind:pattern”, kind shell, write, delete, web or mcp. |
| max_turns | 8 | int32 | ||
| max_cost_usd | 9 | double | ||
| timeout | 10 | string | A duration like “20m”. | |
| catch_up | 11 | string | “”, “none” or “once”. | |
| prompt | 12 | string | The workflow: WORKER.md’s body. | |
| workflow | 13 | string | The workflow it runs, its prompt the input. |
FQN: blitz.v1.GetWorkerSpecRequest
Request message for WorkerService.GetWorkerSpec.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| workspace | 1 | string | ||
| name | 2 | string |
FQN: blitz.v1.GetWorkerSpecResponse
Response message for WorkerService.GetWorkerSpec.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| worker | 1 | WorkerDefinition | ||
| hash | 2 | string | The hash UpdateWorker must be given. |
FQN: blitz.v1.UpdateWorkerRequest
Request message for WorkerService.UpdateWorker.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| workspace | 1 | string | ||
| hash | 2 | string | The hash GetWorkerSpec returned: the content being replaced. | |
| worker | 3 | WorkerDefinition |
FQN: blitz.v1.UpdateWorkerResponse
Response message for WorkerService.UpdateWorker.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| worker | 1 | Worker | The worker as saved; unset when problems stopped it. | |
| problems | 2 | string | Repeated | Why it wasn’t saved (nothing was written). |
FQN: blitz.v1.CreateWorkerResponse
Response message for WorkerService.CreateWorker.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| worker | 1 | Worker | The new worker; unset when problems stopped it. | |
| problems | 2 | string | Repeated | Why the worker wasn’t created (nothing was written). |
FQN: blitz.v1.EnableWorkerRequest
Request message for WorkerService.EnableWorker.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| workspace | 1 | string | ||
| name | 2 | string | ||
| hash | 3 | string | The hash the caller reviewed. |
FQN: blitz.v1.EnableWorkerResponse
Response message for WorkerService.EnableWorker.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| worker | 1 | Worker |
FQN: blitz.v1.DisableWorkerRequest
Request message for WorkerService.DisableWorker.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| workspace | 1 | string | ||
| name | 2 | string |
FQN: blitz.v1.DisableWorkerResponse
Response message for WorkerService.DisableWorker.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| worker | 1 | Worker |
FQN: blitz.v1.DeleteWorkerRequest
Request message for WorkerService.DeleteWorker.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| workspace | 1 | string | ||
| name | 2 | string |
FQN: blitz.v1.DeleteWorkerResponse
Response message for WorkerService.DeleteWorker.
| Field | Ordinal | Type | Label | Description |
|---|
FQN: blitz.v1.Refusal
Refusal is an action a run wasn't permitted.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| tool | 1 | string | ||
| kind | 2 | ActionKind | ||
| detail | 3 | string | ||
| time | 4 | google.protobuf.Timestamp |
FQN: blitz.v1.WorkerRun
WorkerRun is one run of a worker.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| id | 1 | string | ||
| workspace | 2 | string | ||
| worker | 3 | string | ||
| hash | 4 | string | The hash the run used. | |
| status | 5 | RunStatus | ||
| manual | 6 | bool | Scheduled, or started by RunWorker. | |
| started | 7 | google.protobuf.Timestamp | ||
| duration | 8 | google.protobuf.Duration | ||
| usage | 9 | Usage | ||
| session_id | 10 | string | The session holding the run’s conversation. | |
| refusals | 11 | Refusal | Repeated | |
| error | 12 | ErrorInfo | Why the run failed or stopped. | |
| files | 13 | string | Repeated | The files the run changed (UndoWorkerRun restores them). |
FQN: blitz.v1.UndoWorkerRunRequest
Request message for WorkerService.UndoWorkerRun.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| workspace | 1 | string | ||
| run_id | 2 | string | ||
| force | 3 | bool |
FQN: blitz.v1.UndoWorkerRunResponse
Response message for WorkerService.UndoWorkerRun.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| restored | 1 | string | Repeated | |
| error | 2 | ErrorInfo | Why the rest wasn’t restored, after a partial restore. |
FQN: blitz.v1.RunWorkerRequest
Request message for WorkerService.RunWorker.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| workspace | 1 | string | ||
| name | 2 | string |
FQN: blitz.v1.RunWorkerResponse
Response message for WorkerService.RunWorker.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| run | 1 | WorkerRun |
FQN: blitz.v1.ListWorkerRunsRequest
Request message for WorkerService.ListWorkerRuns.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| workspace | 1 | string | ||
| name | 2 | string | ||
| limit | 3 | int32 | At most this many (0: a default). |
FQN: blitz.v1.ListWorkerRunsResponse
Response message for WorkerService.ListWorkerRuns.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| runs | 1 | WorkerRun | Repeated |
FQN: blitz.v1.GetWorkerRunRequest
Request message for WorkerService.GetWorkerRun.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| run_id | 1 | string |
FQN: blitz.v1.GetWorkerRunResponse
Response message for WorkerService.GetWorkerRun.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| run | 1 | WorkerRun |
FQN: blitz.v1.WatchWorkerRunRequest
Request message for WorkerService.WatchWorkerRun.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| run_id | 1 | string |
FQN: blitz.v1.WatchWorkerRunResponse
Response message for WorkerService.WatchWorkerRun.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| event | 1 | TurnEvent |
FQN: blitz.v1.ListRunningWorkerRunsRequest
Request message for WorkerService.ListRunningWorkerRuns.
| Field | Ordinal | Type | Label | Description |
|---|
FQN: blitz.v1.ListRunningWorkerRunsResponse
Response message for WorkerService.ListRunningWorkerRuns.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| runs | 1 | WorkerRun | Repeated | Oldest first. |
FQN: blitz.v1.StopWorkerRunRequest
Request message for WorkerService.StopWorkerRun.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| run_id | 1 | string |
FQN: blitz.v1.StopWorkerRunResponse
Response message for WorkerService.StopWorkerRun.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| run | 1 | WorkerRun | The run as it was when asked to stop; it ends, recorded as stopped, once its turn has wound down (WatchWorkerRun’s finished event). |
FQN: blitz.v1.RewriteWorkerRequest
Request message for WorkerService.RewriteWorker.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| workspace | 1 | string | ||
| worker | 2 | WorkerDefinition | The worker as the form has it (prompt required). |
FQN: blitz.v1.RewriteWorkerResponse
Response message for WorkerService.RewriteWorker.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| prompt | 1 | string | The rewritten instructions (empty when problem is set). | |
| permissions | 2 | string | Repeated | The permissions they need, “kind:pattern”, each valid. |
| changes | 3 | string | Repeated | What changed and why, a line each. |
| problem | 4 | string | Why there’s no rewrite: the model’s failure, redacted. |
FQN: blitz.v1.ListAllWorkersRequest
Request message for WorkerService.ListAllWorkers.
| Field | Ordinal | Type | Label | Description |
|---|
FQN: blitz.v1.WorkspaceWorkers
One workspace's workers, in ListAllWorkersResponse.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| workspace | 1 | string | The workspace’s folder. | |
| home | 2 | bool | Whether it’s the home workspace (the user’s global workers). | |
| missing | 3 | bool | Whether its folder is gone: workers then has only each worker on record’s workspace, name and state (enabled or disabled). | |
| workers | 4 | Worker | Repeated | Its workers, by name. |
| problem | 5 | string | Why its workers can’t be listed (it can’t be opened), redacted. |
FQN: blitz.v1.ListAllWorkersResponse
Response message for WorkerService.ListAllWorkers.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| home | 1 | string | The home workspace, where the global workers run. | |
| workspaces | 2 | WorkspaceWorkers | Repeated | The home workspace first, then the others by folder. |
| policy | 3 | WorkerPolicySettings | The global limits on every worker ([workers.policy]). |
FQN: blitz.v1.WorkerPolicySettings
The global limits on every worker, as the settings have them ([workers.policy]; spec_workers_023 WK-63). A worker asks for permissions and limits; these remove what isn't allowed, fill in what it leaves out, and cap the rest.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| allow | 1 | string | Repeated | The permission kinds a worker may be given: shell, write, delete, web, mcp (none: it may only read). |
| default_max_turns | 2 | int32 | What a worker that sets no limit gets. | |
| default_max_cost_usd | 3 | double | ||
| default_timeout | 4 | string | ||
| max_turns | 5 | int32 | The most a worker may ask for. | |
| max_cost_usd | 6 | double | ||
| max_timeout | 7 | string | ||
| max_concurrent | 8 | int32 | How many worker runs may go at once, across workspaces, as set. | |
| running_max_concurrent | 9 | int32 | How many the service allows now: a change to max_concurrent applies when the service restarts. | |
| path | 10 | string | The settings file they’re in. |
FQN: blitz.v1.ForgetWorkspaceWorkersRequest
Request message for WorkerService.ForgetWorkspaceWorkers.
| Field | Ordinal | Type | Label | Description |
|---|---|---|---|---|
| workspace | 1 | string |
FQN: blitz.v1.ForgetWorkspaceWorkersResponse
Response message for WorkerService.ForgetWorkspaceWorkers.
| Field | Ordinal | Type | Label | Description |
|---|