convertToProgressEvent 转换事件为进度事件
(handle *SubAgentHandle, env types.AgentEventEnvelope)
| 619 | |
| 620 | // convertToProgressEvent 转换事件为进度事件 |
| 621 | func (m *SubAgentManager) convertToProgressEvent(handle *SubAgentHandle, env types.AgentEventEnvelope) *types.SubAgentProgressEvent { |
| 622 | event := env.Event |
| 623 | if event == nil { |
| 624 | return nil |
| 625 | } |
| 626 | |
| 627 | var phase string |
| 628 | var message string |
| 629 | var progress int |
| 630 | |
| 631 | switch e := event.(type) { |
| 632 | case *types.ProgressTextChunkEvent: |
| 633 | phase = "thinking" |
| 634 | message = truncateString(e.Delta, 100) |
| 635 | progress = 30 |
| 636 | case *types.ProgressToolStartEvent: |
| 637 | phase = "tool_use" |
| 638 | message = "Using tool: " + e.Call.Name |
| 639 | progress = 50 |
| 640 | case *types.ProgressToolEndEvent: |
| 641 | phase = "tool_use" |
| 642 | message = "Tool completed: " + e.Call.Name |
| 643 | progress = 70 |
| 644 | default: |
| 645 | return nil |
| 646 | } |
| 647 | |
| 648 | return &types.SubAgentProgressEvent{ |
| 649 | AgentType: handle.AgentType, |
| 650 | TaskID: handle.ID, |
| 651 | Phase: phase, |
| 652 | Progress: progress, |
| 653 | Message: message, |
| 654 | } |
| 655 | } |
| 656 | |
| 657 | // truncateString 截断字符串 |
| 658 | func truncateString(s string, maxLen int) string { |
no test coverage detected