Skip to content

Commit 475014f

Browse files
committed
docs(learnings): document immortal Vapi-default simulation personalities
1 parent 9e23bce commit 475014f

1 file changed

Lines changed: 18 additions & 0 deletions

File tree

docs/learnings/simulations.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,24 @@ Returns the org's voice-simulation concurrency budget:
350350
- `PATCH /eval/simulation/personality/:id` — body fields all optional: `name`, `assistant`, `path`
351351
- `DELETE /eval/simulation/personality/:id`
352352

353+
### Vapi default personalities are immortal (and noisy on `--force` push)
354+
355+
**What actually happens:** Every Vapi org is auto-seeded with 7 stock simulation personalities — `confused-carl`, `decisive-derek`, `emotional-eva`, `impatient-irene`, `multitasking-maya`, `rambling-roger`, `skeptical-sam` — with predictable UUIDs of the form `a0000000-0000-4000-8000-00000000000<n>`. Their `orgId` is `null` (the "Vapi-provided defaults" referenced above). The platform refuses to delete them: `DELETE /eval/simulation/personality/:id` returns **HTTP 404** with the error string `Personality <uuid> not found or is a Vapi default (cannot be deleted)`.
356+
357+
**Why it matters for gitops:** in a freshly-scaffolded org (no local `simulations/personalities/` directory), the engine sees these 7 personalities as orphans on every push — "exist on the dashboard, not in local files." Without `--force` this is just log noise. With `--force`, the push halts on the FIRST delete attempt against an immortal default and exits non-zero, before reaching any legitimate orphans you actually wanted to clean.
358+
359+
**Also note:** `.vapi-ignore` does **not** suppress these from the "pending deletions" warning. `matchesIgnore` is only called during pull operations (`src/pull.ts:695`), not during the push-time deletion-detection sweep. Adding `simulations/personalities/**` to `.vapi-ignore` quiets future pulls from materializing the defaults locally, but the push warning persists.
360+
361+
**Recommendations:**
362+
1. **Skip `--force` against fresh orgs** that haven't had their stock fixtures touched. The pending-deletions warning is harmless without `--force`.
363+
2. **To clean other orphans (real assistants, tools you removed locally) without tripping on defaults**, delete them via direct API call instead of `--force`:
364+
```bash
365+
curl -X DELETE -H "Authorization: Bearer $VAPI_TOKEN" \
366+
https://api.vapi.ai/assistant/<orphan-uuid>
367+
```
368+
Then `npm run pull -- <org> --bootstrap` to refresh state. This bypasses the engine's "delete all orphans" loop entirely.
369+
3. **Possible engine improvement:** the orphan-deletion sweep could skip resources whose `orgId === null` (the canonical "Vapi default" marker) or maintain a hardcoded UUID skiplist matching `a0000000-0000-4000-8000-00000000000<n>`. Until that lands, the workarounds above are the operational path.
370+
353371
---
354372

355373
## Simulation Suites (`/eval/simulation/suite`)

0 commit comments

Comments
 (0)