( request: SwarmPermissionRequest, )
| 674 | * @returns true if the message was sent successfully |
| 675 | */ |
| 676 | export async function sendPermissionRequestViaMailbox( |
| 677 | request: SwarmPermissionRequest, |
| 678 | ): Promise<boolean> { |
| 679 | const leaderName = await getLeaderName(request.teamName) |
| 680 | if (!leaderName) { |
| 681 | logForDebugging( |
| 682 | `[PermissionSync] Cannot send permission request: leader name not found`, |
| 683 | ) |
| 684 | return false |
| 685 | } |
| 686 | |
| 687 | try { |
| 688 | // Create the permission request message |
| 689 | const message = createPermissionRequestMessage({ |
| 690 | request_id: request.id, |
| 691 | agent_id: request.workerName, |
| 692 | tool_name: request.toolName, |
| 693 | tool_use_id: request.toolUseId, |
| 694 | description: request.description, |
| 695 | input: request.input, |
| 696 | permission_suggestions: request.permissionSuggestions, |
| 697 | }) |
| 698 | |
| 699 | // Send to leader's mailbox (routes to in-process or file-based based on recipient) |
| 700 | await writeToMailbox( |
| 701 | leaderName, |
| 702 | { |
| 703 | from: request.workerName, |
| 704 | text: jsonStringify(message), |
| 705 | timestamp: new Date().toISOString(), |
| 706 | color: request.workerColor, |
| 707 | }, |
| 708 | request.teamName, |
| 709 | ) |
| 710 | |
| 711 | logForDebugging( |
| 712 | `[PermissionSync] Sent permission request ${request.id} to leader ${leaderName} via mailbox`, |
| 713 | ) |
| 714 | return true |
| 715 | } catch (error) { |
| 716 | logForDebugging( |
| 717 | `[PermissionSync] Failed to send permission request via mailbox: ${error}`, |
| 718 | ) |
| 719 | logError(error) |
| 720 | return false |
| 721 | } |
| 722 | } |
| 723 | |
| 724 | /** |
| 725 | * Send a permission response to a worker via mailbox. |
no test coverage detected