37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
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,
|
|
})
|
|
}
|