Repository navigation
Commit 0cbcd8e
feat(check): fail closed on tools and servers in inline check payloads
A PR check runs the branch's agents in a real org, so nothing it sends may
reach a real server by default. The payload builder's last pass now:
- classifies every tool at a handled position (model.tools, tools:append
in overrides, hook do[], same-org knowledge bases in model.toolIds):
endCall/dtmf/voicemail/output are sent as written; function tools by
function.name and apiRequest by name are mocked; transferCall becomes
a mocked dead-server function; handoffs pass only to squad members or
inline assistants; everything else (sms, sipRequest, code, mcp,
integrations, unknown types) fails the build naming the tool;
- fails any tool-bearing key (TOOL_BEARING_KEYS) outside those positions,
so a new API field can't slip through unclassified;
- replaces servers with https://vapi-gitops-ci.invalid on every assistant
and function tool rather than deleting them (a deleted server falls back
to the phone number's or org's), clears serverMessages, and dead-ends
scenario webhook hooks;
- adds a default error mock for every mocked tool to each scenario's
toolMocks, replacing disabled ones, and warns about mocks that match no
tool;
- fails custom knowledge bases, model.knowledgeBaseId, personality tools
with side effects, hook transfer actions, and cross-org query or
knowledge-base tools.
`toolMocks: off` skips the tool rules; `stripWebhooks: false` keeps
assistant servers while tool servers are still replaced.
Refs TEST-141
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>1 parent d3e6a1b commit 0cbcd8e
4 files changed
Lines changed: 1178 additions & 2 deletions
0 commit comments