(workspaceId: string, status: AgentTaskStatus)
| 7247 | } |
| 7248 | |
| 7249 | private async setTaskStatus(workspaceId: string, status: AgentTaskStatus): Promise<void> { |
| 7250 | assert(workspaceId.length > 0, "setTaskStatus: workspaceId must be non-empty"); |
| 7251 | |
| 7252 | await this.editWorkspaceEntry(workspaceId, (ws) => { |
| 7253 | ws.taskStatus = status; |
| 7254 | if (status === "running") { |
| 7255 | ws.taskPrompt = undefined; |
| 7256 | } |
| 7257 | }); |
| 7258 | |
| 7259 | await this.emitWorkspaceMetadata(workspaceId); |
| 7260 | |
| 7261 | if (status === "running") { |
| 7262 | const waiters = this.pendingStartWaitersByTaskId.get(workspaceId); |
| 7263 | if (!waiters || waiters.length === 0) return; |
| 7264 | this.pendingStartWaitersByTaskId.delete(workspaceId); |
| 7265 | for (const waiter of waiters) { |
| 7266 | try { |
| 7267 | waiter.start(); |
| 7268 | } catch (error: unknown) { |
| 7269 | log.error("Task start waiter callback failed", { workspaceId, error }); |
| 7270 | } |
| 7271 | } |
| 7272 | } |
| 7273 | } |
| 7274 | |
| 7275 | /** |
| 7276 | * Reset interrupt + auto-resume state for a workspace (called when user sends a real message). |
no test coverage detected