@asyncify-hq/node@0.8.5
·
31 commits
to main
since this release
Patch Changes
- 9bc828d: The two per-agent guardrails are now typed on the client.
agents.update(id, { topics: { deny, allow, redirect } })decides what a managed agent will discuss: one small classifier call runs in front of the brain, names what the customer's message is about, and a message on a denied topic — or, whenallowis non-empty, outside it — getsredirectback word for word without the brain ever running.denybeatsallow, and a classifier that errors SKIPS the gate rather than blocking, since fail-closed would mute an agent's whole traffic behind one canned sentence.agents.update(id, { moderation: { denyPhrases, blockPii, fallback } })decides what may ship: every drafted reply is checked in-process — no model, no extra call, no added latency — against case-insensitive substring phrases and, withblockPii, against emails and phone numbers that are not the customer's own; a blocked reply is replaced byfallbackwith any buttons suppressed. It matches typed phrases, not paraphrases, which is the honest price of a check that cannot be down; and the fallback deserves care, because the turn's tools have already run by the time it ships — "a teammate will follow up" is safe where "I couldn't help" can be a lie.nullswitches either off and forgets its config,Agentgains both fields the API now returns, andEvalRunCandidategains them too — with the deliberate asymmetry that omitting them leaves the AGENT'S gates in force for the run (a check grades the agent you have, boundaries included), sonullis how you ask whether the evals still pass with a gate off. Managed agents only: a bridge agent answers 400.