sdkProgress.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import type { SdkWorkflowProgress } from '../../types/tools.js'
  2. import { enqueueSdkEvent } from '../sdkEventQueue.js'
  3. /**
  4. * Emit a `task_progress` SDK event. Shared by background agents (per tool_use
  5. * in runAsyncAgentLifecycle) and workflows (per flushProgress batch). Accepts
  6. * already-computed primitives so callers can derive them from their own state
  7. * shapes (ProgressTracker for agents, LocalWorkflowTaskState for workflows).
  8. */
  9. export function emitTaskProgress(params: {
  10. taskId: string
  11. toolUseId: string | undefined
  12. description: string
  13. startTime: number
  14. totalTokens: number
  15. toolUses: number
  16. lastToolName?: string
  17. summary?: string
  18. workflowProgress?: SdkWorkflowProgress[]
  19. }): void {
  20. enqueueSdkEvent({
  21. type: 'system',
  22. subtype: 'task_progress',
  23. task_id: params.taskId,
  24. tool_use_id: params.toolUseId,
  25. description: params.description,
  26. usage: {
  27. total_tokens: params.totalTokens,
  28. tool_uses: params.toolUses,
  29. duration_ms: Date.now() - params.startTime,
  30. },
  31. last_tool_name: params.lastToolName,
  32. summary: params.summary,
  33. workflow_progress: params.workflowProgress,
  34. })
  35. }