@vellumai/assistant 0.3.4 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Dockerfile +2 -0
- package/README.md +37 -2
- package/package.json +1 -1
- package/scripts/ipc/generate-swift.ts +13 -0
- package/src/__tests__/__snapshots__/ipc-snapshot.test.ts.snap +100 -0
- package/src/__tests__/approval-hardcoded-copy-guard.test.ts +41 -0
- package/src/__tests__/approval-message-composer.test.ts +253 -0
- package/src/__tests__/call-domain.test.ts +12 -2
- package/src/__tests__/call-orchestrator.test.ts +70 -1
- package/src/__tests__/call-routes-http.test.ts +27 -2
- package/src/__tests__/channel-approval-routes.test.ts +21 -17
- package/src/__tests__/channel-approvals.test.ts +48 -1
- package/src/__tests__/channel-guardian.test.ts +74 -22
- package/src/__tests__/channel-readiness-service.test.ts +257 -0
- package/src/__tests__/config-schema.test.ts +2 -1
- package/src/__tests__/credential-security-invariants.test.ts +1 -0
- package/src/__tests__/daemon-lifecycle.test.ts +13 -12
- package/src/__tests__/dictation-mode-detection.test.ts +63 -0
- package/src/__tests__/entity-search.test.ts +615 -0
- package/src/__tests__/handlers-twilio-config.test.ts +407 -0
- package/src/__tests__/ipc-snapshot.test.ts +63 -0
- package/src/__tests__/messaging-send-tool.test.ts +65 -0
- package/src/__tests__/run-orchestrator-assistant-events.test.ts +4 -0
- package/src/__tests__/run-orchestrator.test.ts +22 -0
- package/src/__tests__/session-runtime-assembly.test.ts +85 -1
- package/src/__tests__/sms-messaging-provider.test.ts +125 -0
- package/src/__tests__/twilio-routes.test.ts +39 -3
- package/src/__tests__/twitter-cli-error-shaping.test.ts +2 -2
- package/src/__tests__/web-search.test.ts +1 -1
- package/src/__tests__/work-item-output.test.ts +110 -0
- package/src/calls/call-domain.ts +8 -5
- package/src/calls/call-orchestrator.ts +22 -11
- package/src/calls/twilio-config.ts +17 -11
- package/src/calls/twilio-rest.ts +276 -0
- package/src/calls/twilio-routes.ts +39 -1
- package/src/config/bundled-skills/knowledge-graph/SKILL.md +15 -0
- package/src/config/bundled-skills/knowledge-graph/TOOLS.json +56 -0
- package/src/config/bundled-skills/knowledge-graph/tools/graph-query.ts +185 -0
- package/src/config/bundled-skills/media-processing/SKILL.md +199 -0
- package/src/config/bundled-skills/media-processing/TOOLS.json +320 -0
- package/src/config/bundled-skills/media-processing/services/capability-registry.ts +137 -0
- package/src/config/bundled-skills/media-processing/services/event-detection-service.ts +280 -0
- package/src/config/bundled-skills/media-processing/services/feedback-aggregation.ts +144 -0
- package/src/config/bundled-skills/media-processing/services/feedback-store.ts +136 -0
- package/src/config/bundled-skills/media-processing/services/processing-pipeline.ts +261 -0
- package/src/config/bundled-skills/media-processing/services/retrieval-service.ts +95 -0
- package/src/config/bundled-skills/media-processing/services/timeline-service.ts +267 -0
- package/src/config/bundled-skills/media-processing/tools/analyze-keyframes.ts +301 -0
- package/src/config/bundled-skills/media-processing/tools/detect-events.ts +110 -0
- package/src/config/bundled-skills/media-processing/tools/extract-keyframes.ts +190 -0
- package/src/config/bundled-skills/media-processing/tools/generate-clip.ts +195 -0
- package/src/config/bundled-skills/media-processing/tools/ingest-media.ts +197 -0
- package/src/config/bundled-skills/media-processing/tools/media-diagnostics.ts +166 -0
- package/src/config/bundled-skills/media-processing/tools/media-status.ts +75 -0
- package/src/config/bundled-skills/media-processing/tools/query-media-events.ts +300 -0
- package/src/config/bundled-skills/media-processing/tools/recalibrate.ts +235 -0
- package/src/config/bundled-skills/media-processing/tools/select-tracking-profile.ts +142 -0
- package/src/config/bundled-skills/media-processing/tools/submit-feedback.ts +150 -0
- package/src/config/bundled-skills/messaging/SKILL.md +21 -6
- package/src/config/bundled-skills/messaging/tools/messaging-send.ts +5 -1
- package/src/config/bundled-skills/phone-calls/SKILL.md +2 -2
- package/src/config/bundled-skills/twitter/SKILL.md +19 -3
- package/src/config/defaults.ts +2 -1
- package/src/config/schema.ts +9 -3
- package/src/config/system-prompt.ts +24 -0
- package/src/config/templates/IDENTITY.md +2 -2
- package/src/config/vellum-skills/catalog.json +6 -0
- package/src/config/vellum-skills/google-oauth-setup/SKILL.md +3 -3
- package/src/config/vellum-skills/slack-oauth-setup/SKILL.md +3 -3
- package/src/config/vellum-skills/sms-setup/SKILL.md +118 -0
- package/src/config/vellum-skills/twilio-setup/SKILL.md +40 -8
- package/src/daemon/handlers/config.ts +783 -9
- package/src/daemon/handlers/dictation.ts +182 -0
- package/src/daemon/handlers/identity.ts +14 -23
- package/src/daemon/handlers/index.ts +2 -0
- package/src/daemon/handlers/sessions.ts +2 -0
- package/src/daemon/handlers/shared.ts +3 -0
- package/src/daemon/handlers/work-items.ts +15 -7
- package/src/daemon/ipc-contract-inventory.json +10 -0
- package/src/daemon/ipc-contract.ts +108 -4
- package/src/daemon/lifecycle.ts +2 -0
- package/src/daemon/ride-shotgun-handler.ts +1 -1
- package/src/daemon/server.ts +6 -2
- package/src/daemon/session-agent-loop.ts +5 -1
- package/src/daemon/session-runtime-assembly.ts +55 -0
- package/src/daemon/session-tool-setup.ts +2 -0
- package/src/daemon/session.ts +11 -1
- package/src/inbound/public-ingress-urls.ts +3 -3
- package/src/memory/channel-guardian-store.ts +2 -1
- package/src/memory/db-init.ts +144 -0
- package/src/memory/job-handlers/media-processing.ts +100 -0
- package/src/memory/jobs-store.ts +2 -1
- package/src/memory/jobs-worker.ts +4 -0
- package/src/memory/media-store.ts +759 -0
- package/src/memory/retriever.ts +6 -1
- package/src/memory/schema.ts +98 -0
- package/src/memory/search/entity.ts +208 -25
- package/src/memory/search/ranking.ts +6 -1
- package/src/memory/search/types.ts +24 -0
- package/src/messaging/provider-types.ts +2 -0
- package/src/messaging/providers/sms/adapter.ts +204 -0
- package/src/messaging/providers/sms/client.ts +93 -0
- package/src/messaging/providers/sms/types.ts +7 -0
- package/src/permissions/checker.ts +16 -2
- package/src/runtime/approval-message-composer.ts +143 -0
- package/src/runtime/channel-approvals.ts +12 -4
- package/src/runtime/channel-guardian-service.ts +44 -18
- package/src/runtime/channel-readiness-service.ts +292 -0
- package/src/runtime/channel-readiness-types.ts +29 -0
- package/src/runtime/http-server.ts +53 -27
- package/src/runtime/http-types.ts +3 -0
- package/src/runtime/routes/call-routes.ts +2 -1
- package/src/runtime/routes/channel-routes.ts +67 -21
- package/src/runtime/run-orchestrator.ts +35 -2
- package/src/tools/assets/materialize.ts +2 -2
- package/src/tools/calls/call-start.ts +1 -0
- package/src/tools/credentials/vault.ts +1 -1
- package/src/tools/execution-target.ts +11 -1
- package/src/tools/network/web-search.ts +1 -1
- package/src/tools/types.ts +2 -0
- package/src/twitter/router.ts +1 -1
- package/src/util/platform.ts +35 -0
|
@@ -18,6 +18,27 @@ This skill manages the full Twilio lifecycle:
|
|
|
18
18
|
|
|
19
19
|
All operations go through the `twilio_config` IPC handler on the daemon, which validates inputs, stores credentials securely, and manages phone number state.
|
|
20
20
|
|
|
21
|
+
### Multi-Assistant Setups
|
|
22
|
+
|
|
23
|
+
In a multi-assistant environment (multiple assistants sharing the same daemon), some `twilio_config` actions are **assistant-scoped** while others are **global** (shared across all assistants):
|
|
24
|
+
|
|
25
|
+
**Global actions** (ignore `assistantId` — credentials are shared across all assistants):
|
|
26
|
+
- `set_credentials` — Stores Account SID and Auth Token in global secure storage (`credential:twilio:*` keys). All assistants share the same Twilio account credentials.
|
|
27
|
+
- `clear_credentials` — Removes the globally stored Account SID and Auth Token. This affects all assistants.
|
|
28
|
+
|
|
29
|
+
**Assistant-scoped actions** (use `assistantId` to scope phone number configuration per assistant):
|
|
30
|
+
- `get` — Returns the phone number assigned to the specified assistant (falls back to the legacy global number if no per-assistant mapping exists).
|
|
31
|
+
- `assign_number` — Assigns a phone number to a specific assistant via the per-assistant mapping.
|
|
32
|
+
- `provision_number` — Provisions a new number and assigns it to the specified assistant.
|
|
33
|
+
- `list_numbers` — Lists all phone numbers on the shared Twilio account (uses global credentials).
|
|
34
|
+
|
|
35
|
+
Include `assistantId` in assistant-scoped actions whenever:
|
|
36
|
+
- Multiple assistants share the same Twilio account but use different phone numbers
|
|
37
|
+
- You want to ensure configuration changes only affect a specific assistant
|
|
38
|
+
- The user has explicitly selected or referenced a particular assistant
|
|
39
|
+
|
|
40
|
+
All IPC examples below include the optional `assistantId` field in assistant-scoped actions. Omit it in single-assistant setups. For global actions (`set_credentials`, `clear_credentials`), the `assistantId` field is accepted but ignored.
|
|
41
|
+
|
|
21
42
|
## Step 1: Check Current Configuration
|
|
22
43
|
|
|
23
44
|
First, check whether Twilio is already configured by sending the `twilio_config` IPC message with `action: "get"`:
|
|
@@ -25,7 +46,8 @@ First, check whether Twilio is already configured by sending the `twilio_config`
|
|
|
25
46
|
```json
|
|
26
47
|
{
|
|
27
48
|
"type": "twilio_config",
|
|
28
|
-
"action": "get"
|
|
49
|
+
"action": "get",
|
|
50
|
+
"assistantId": "<optional — omit for single-assistant setups>"
|
|
29
51
|
}
|
|
30
52
|
```
|
|
31
53
|
|
|
@@ -62,6 +84,8 @@ After both credentials are collected, retrieve them from secure storage and pass
|
|
|
62
84
|
|
|
63
85
|
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.
|
|
64
86
|
|
|
87
|
+
**Note:** `set_credentials` is a global operation — credentials are stored once and shared across all assistants. The `assistantId` field is accepted but ignored.
|
|
88
|
+
|
|
65
89
|
## Step 3: Get a Phone Number
|
|
66
90
|
|
|
67
91
|
The assistant needs a phone number to make calls and send SMS. There are two paths:
|
|
@@ -75,7 +99,8 @@ If the user wants to buy a new number through Twilio, send:
|
|
|
75
99
|
"type": "twilio_config",
|
|
76
100
|
"action": "provision_number",
|
|
77
101
|
"areaCode": "415",
|
|
78
|
-
"country": "US"
|
|
102
|
+
"country": "US",
|
|
103
|
+
"assistantId": "<optional — omit for single-assistant setups>"
|
|
79
104
|
}
|
|
80
105
|
```
|
|
81
106
|
|
|
@@ -100,7 +125,8 @@ If the user already has a Twilio phone number, first list available numbers:
|
|
|
100
125
|
```json
|
|
101
126
|
{
|
|
102
127
|
"type": "twilio_config",
|
|
103
|
-
"action": "list_numbers"
|
|
128
|
+
"action": "list_numbers",
|
|
129
|
+
"assistantId": "<optional — omit for single-assistant setups>"
|
|
104
130
|
}
|
|
105
131
|
```
|
|
106
132
|
|
|
@@ -112,7 +138,8 @@ Then assign the chosen number:
|
|
|
112
138
|
{
|
|
113
139
|
"type": "twilio_config",
|
|
114
140
|
"action": "assign_number",
|
|
115
|
-
"phoneNumber": "+14155551234"
|
|
141
|
+
"phoneNumber": "+14155551234",
|
|
142
|
+
"assistantId": "<optional — omit for single-assistant setups>"
|
|
116
143
|
}
|
|
117
144
|
```
|
|
118
145
|
|
|
@@ -132,7 +159,8 @@ Then assign it through the IPC:
|
|
|
132
159
|
{
|
|
133
160
|
"type": "twilio_config",
|
|
134
161
|
"action": "assign_number",
|
|
135
|
-
"phoneNumber": "+14155551234"
|
|
162
|
+
"phoneNumber": "+14155551234",
|
|
163
|
+
"assistantId": "<optional — omit for single-assistant setups>"
|
|
136
164
|
}
|
|
137
165
|
```
|
|
138
166
|
|
|
@@ -181,7 +209,8 @@ Now link the user's phone number as the trusted SMS guardian for this assistant.
|
|
|
181
209
|
{
|
|
182
210
|
"type": "guardian_verification",
|
|
183
211
|
"action": "create_challenge",
|
|
184
|
-
"channel": "sms"
|
|
212
|
+
"channel": "sms",
|
|
213
|
+
"assistantId": "<optional — omit for single-assistant setups>"
|
|
185
214
|
}
|
|
186
215
|
```
|
|
187
216
|
|
|
@@ -195,7 +224,8 @@ Now link the user's phone number as the trusted SMS guardian for this assistant.
|
|
|
195
224
|
{
|
|
196
225
|
"type": "guardian_verification",
|
|
197
226
|
"action": "status",
|
|
198
|
-
"channel": "sms"
|
|
227
|
+
"channel": "sms",
|
|
228
|
+
"assistantId": "<optional — omit for single-assistant setups>"
|
|
199
229
|
}
|
|
200
230
|
```
|
|
201
231
|
|
|
@@ -232,7 +262,9 @@ If the user wants to disconnect Twilio, send:
|
|
|
232
262
|
}
|
|
233
263
|
```
|
|
234
264
|
|
|
235
|
-
This removes the stored Account SID and Auth Token.
|
|
265
|
+
This removes the stored Account SID and Auth Token. Phone number assignments are preserved. Voice calls and SMS will stop working until credentials are reconfigured.
|
|
266
|
+
|
|
267
|
+
**Note:** `clear_credentials` is a global operation — it removes credentials for all assistants, not just the current one. The `assistantId` field is accepted but ignored. In multi-assistant setups, warn the user that clearing credentials will affect all assistants sharing this Twilio account.
|
|
236
268
|
|
|
237
269
|
## Troubleshooting
|
|
238
270
|
|