From 99b1d50d1053e5787b3ece410c80c2ebab688774 Mon Sep 17 00:00:00 2001 From: Noa Flaherty Date: Sun, 22 Feb 2026 15:41:17 -0500 Subject: [PATCH] fix: twilio skill credential passing, install-before-load, and clear dialog text Co-Authored-By: Claude --- .../src/config/bundled-skills/phone-calls/SKILL.md | 7 +++---- .../src/config/vellum-skills/twilio-setup/SKILL.md | 10 ++++++---- clients/ios/Views/Settings/TwilioSettingsSection.swift | 2 +- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/assistant/src/config/bundled-skills/phone-calls/SKILL.md b/assistant/src/config/bundled-skills/phone-calls/SKILL.md index c6ceb064c8d..042339e69ed 100644 --- a/assistant/src/config/bundled-skills/phone-calls/SKILL.md +++ b/assistant/src/config/bundled-skills/phone-calls/SKILL.md @@ -10,11 +10,10 @@ You are helping the user set up and make outgoing phone calls via Twilio. This s ## Prerequisites — Shared Twilio Setup -Twilio credentials and phone number configuration are shared between voice calls and SMS messaging. If Twilio is not yet configured, load the **twilio-setup** skill first: +Twilio credentials and phone number configuration are shared between voice calls and SMS messaging. If Twilio is not yet configured, install and load the **twilio-setup** skill first: -``` -skill_load skill=twilio-setup -``` +- Call `vellum_skills_catalog` with `action: "install"` and `skill_id: "twilio-setup"`. +- Then call `skill_load` with `skill: "twilio-setup"`. The twilio-setup skill handles credential storage, phone number provisioning/assignment, and public ingress setup. Once complete, return here to enable the calls feature and start making calls. diff --git a/assistant/src/config/vellum-skills/twilio-setup/SKILL.md b/assistant/src/config/vellum-skills/twilio-setup/SKILL.md index e8dae7988e9..01869713b55 100644 --- a/assistant/src/config/vellum-skills/twilio-setup/SKILL.md +++ b/assistant/src/config/vellum-skills/twilio-setup/SKILL.md @@ -49,16 +49,18 @@ If credentials are not yet stored, guide the user through Twilio account setup: - Call `credential_store` with `action: "prompt"`, `service: "twilio"`, `field: "account_sid"`, `label: "Twilio Account SID"`, `description: "Enter your Account SID from the Twilio Console dashboard"`, and `placeholder: "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"`. - Call `credential_store` with `action: "prompt"`, `service: "twilio"`, `field: "auth_token"`, `label: "Twilio Auth Token"`, `description: "Enter your Auth Token from the Twilio Console dashboard"`, and `placeholder: "your_auth_token"`. -After both credentials are collected, store them via the daemon: +After both credentials are collected, retrieve them from secure storage and pass them to the daemon: ```json { "type": "twilio_config", - "action": "set_credentials" + "action": "set_credentials", + "accountSid": "", + "authToken": "" } ``` -The daemon retrieves the credentials from secure storage internally — you do not need to pass them in the message. If credentials are invalid, the daemon returns an error. Tell the user and ask them to re-enter via the secure prompt. +Both `accountSid` and `authToken` are required — the daemon validates the credentials against the Twilio API before storing them. If credentials are invalid, the daemon returns an error. Tell the user and ask them to re-enter via the secure prompt. ## Step 3: Get a Phone Number @@ -185,7 +187,7 @@ If the user wants to disconnect Twilio, send: } ``` -This removes the stored Account SID, Auth Token, and phone number assignment. Both voice calls and SMS will stop working until credentials are reconfigured. +This removes the stored Account SID and Auth Token. Your phone number assignment will be preserved. Voice calls and SMS will stop working until credentials are reconfigured. ## Troubleshooting diff --git a/clients/ios/Views/Settings/TwilioSettingsSection.swift b/clients/ios/Views/Settings/TwilioSettingsSection.swift index 7bdf1f7f947..eed2f103730 100644 --- a/clients/ios/Views/Settings/TwilioSettingsSection.swift +++ b/clients/ios/Views/Settings/TwilioSettingsSection.swift @@ -90,7 +90,7 @@ struct TwilioSettingsSection: View { } Button("Cancel", role: .cancel) {} } message: { - Text("This will remove your Twilio Account SID, Auth Token, and phone number assignment. Voice calls and SMS will stop working until reconfigured.") + Text("This will remove your Twilio Account SID and Auth Token. Your phone number assignment will be preserved. Voice calls and SMS will stop working until credentials are reconfigured.") } .onAppear { loadStatus() } .onChange(of: clientProvider.isConnected) { _, connected in