feat: WhatsApp connector changes (send gate, local API default, bundle script) #1

Open
tim.lingo wants to merge 2 commits from feat/send-tools-readonly-gate into main
Showing only changes of commit eaa92b4255 - Show all commits
+7
View File
@@ -62,6 +62,12 @@ func InitMcpTool() {
Description: "Get most recent WhatsApp message involving the contact.", Description: "Get most recent WhatsApp message involving the contact.",
}, getLastInteractionHandler) }, getLastInteractionHandler)
// Send tools are registered unless the connector runs in read-only mode.
// WHATSAPP_READ_ONLY=true (or 1) hides all outbound tools — defense-in-depth on top of the
// soul's per-send consent gate. Default: send tools available (consent still required upstream).
readOnly := strings.ToLower(ReadEnv("WHATSAPP_READ_ONLY", "false")) == "true" ||
ReadEnv("WHATSAPP_READ_ONLY", "0") == "1"
if !readOnly {
mcp.AddTool[sendMessageInput, map[string]any](server, &mcp.Tool{ mcp.AddTool[sendMessageInput, map[string]any](server, &mcp.Tool{
Name: "send_message", Name: "send_message",
Description: "Send a text message to a person or group on WhatsApp. For groups use the group JID.", Description: "Send a text message to a person or group on WhatsApp. For groups use the group JID.",
@@ -76,6 +82,7 @@ func InitMcpTool() {
Name: "send_audio_message", Name: "send_audio_message",
Description: "Send audio/voice message (converted to Opus .ogg if needed).", Description: "Send audio/voice message (converted to Opus .ogg if needed).",
}, sendAudioMessageHandler) }, sendAudioMessageHandler)
}
mcp.AddTool[downloadMediaInput, map[string]any](server, &mcp.Tool{ mcp.AddTool[downloadMediaInput, map[string]any](server, &mcp.Tool{
Name: "download_media", Name: "download_media",