| import type { SdkWorkflowProgress } from '../../types/tools.js' | |
| import { enqueueSdkEvent } from '../sdkEventQueue.js' | |
| /** | |
| * Emit a `task_progress` SDK event. Shared by background agents (per tool_use | |
| * in runAsyncAgentLifecycle) and workflows (per flushProgress batch). Accepts | |
| * already-computed primitives so callers can derive them from their own state | |
| * shapes (ProgressTracker for agents, LocalWorkflowTaskState for workflows). | |
| */ | |
| export function emitTaskProgress(params: { | |
| taskId: string | |
| toolUseId: string | undefined | |
| description: string | |
| startTime: number | |
| totalTokens: number | |
| toolUses: number | |
| lastToolName?: string | |
| summary?: string | |
| workflowProgress?: SdkWorkflowProgress[] | |
| }): void { | |
| enqueueSdkEvent({ | |
| type: 'system', | |
| subtype: 'task_progress', | |
| task_id: params.taskId, | |
| tool_use_id: params.toolUseId, | |
| description: params.description, | |
| usage: { | |
| total_tokens: params.totalTokens, | |
| tool_uses: params.toolUses, | |
| duration_ms: Date.now() - params.startTime, | |
| }, | |
| last_tool_name: params.lastToolName, | |
| summary: params.summary, | |
| workflow_progress: params.workflowProgress, | |
| }) | |
| } | |