Repository navigation
Releases
v1.9.1
v1.9.0
Added
- The agent may use the
ingfahCLI 0.1.0 or newer instead of
scripts/ingfah_api.pywhen it is installed. SKILL.md maps the script's
flags to the CLI's, requires a--dry-runpreview and the user's yes
before--yes, and prefersingfah agents reviseand
ingfah agents publishfor agent revisions. The script stays the default.
Removed
GET /client/text-chats/channel-configs,/providers, and/{id}from
the allowlist. Use the canonical/client/text-channel-configsroutes,
which return the same data.
v1.8.0
Added
GET /client/calls/inbound-admissionwithinbound_admission:readto
check current inbound call capacity before a SIP transfer.GET /client/text-chats/tagswithchat_sessions:readto list and search
customer tags and their customer counts.- Automation discovery through
GET /client/products/{id}/automations/catalog
andGET /client/automations/trigger-variableswithclient_products:read. - Consulting guidance for choosing a setup, explaining tradeoffs, planning
a pilot, and measuring results from the user's business goal.
Changed
- Refreshed the bundled Thai guide to 73 pages, including callbacks, speech
previews, text channels, analytics, and team Automations. - Updated Automation instructions to the current
httpanddo_not_contact
catalog and Jinja configuration, with guidance for legacy rows.
Fixed
- Reporting guidance now documents API-key bot mute control rather than
describing it as dashboard-only.
v1.7.0
Added
GET /client/text-chat-tools(ai_agents:read), the tools a text agent
may call in a chat, starting withhandoff_to_human.- The
text_chat_conversations:writescope and its two routes, which turn the
AI on or off for one text conversation:PUT /client/chat-conversations/{uuid}
andPUT /client/text-chats/{provider_type}/channels/{channel_identifier}/conversations/{provider_conversation_id}. references/text-chat-handoff.md: whathandoff_to_humandoes, the four
questions to settle with a client before binding it, how the bot switch
behaves, and why dashboard test chats cannot show a handoff.references/voice-handoff.md: the cold and warm transfer tools compared,
what only Ingfah's team can configure (numbers, ring timeout, hold and
no-answer messages), the questions to settle with a client, and how to
verify a transfer from the call's messages.
Fixed
- The revision guard now checks a text agent's
text_chat_tools. Before, a
prompt-only revision that omitted them silently unboundhandoff_to_human.
v1.6.0
Added
references/multi-agent-teams.md: building a production team of agents
that hand one call between them, from a four-agent helpline tuned on its
first two days of real calls. It covers when to split (and giving an
agent only the tools its job needs), how the platform runs a team (edges,
handoff tools namedtransfer_to_<target slug>, who joins the call, tools
staying per agent, the prompt rendered once at call start), the default
and seamless handoff modes, the router/specialist line and return paths,
the "taking over a call in progress" section every receiving agent needs,
tool-only handoff turns, post-call results and automations across agents,
the API steps, testing each agent and edge with the promptfoo template, a
go-live checklist, and what to watch on the first real calls.- What an API key cannot do for a team: create phone tools, set the handoff
mode (an API-created team starts in default mode), or choose an agent's
slug, so prompts naming handoff tools are written after the shells exist.
Changed
agents-and-teams.md,testing.md,troubleshooting.md, and the
SKILL.mdtask table point to the new file; the team-splitting tips moved
there.
v1.5.1
v1.5.0
Added
- Lessons from tuning live agents, written without client specifics:
prompt-authoring.md: branches and fallbacks (clear-but-unexpected answers,
accept branches, a general no-information line, per-question mismatch
branches, routing fixes, absolute-reading prohibitions, scoping
contradictions), content that must be said despite interruptions,
mishearing (letter/digit codes, no echo, saying the limit aloud, separate
ladders), persuasion ladders, knowledge-base search (query wording, facts
that suppress search, the two-search rule, a search check at the end of the
task), one-line flow examples, the greeting's own rendering, concrete values
in examples, asking for silence, no in-call summaries, computed numbers in
say-as, price tables, scoped pronunciation rules, business-hours gates that
fail closed, and where to place new texttools.md: tools that ask the customer something, lookup keys, failed
transfers, returning decisions instead of raw values, exception lists in
descriptions, sending the day and time together toresolve_date, and a
caveat on model-sidedays_from_todaycomparisonsagents-and-teams.md: splitting one agent into a teamoutcome-design.md: the labels that go wrong most, and schema pitfalls
(integer enums, stored field order, tool results visible to post-call
steps but not webhooks)postprocessors.md,faq-authoring.md,troubleshooting.md: instruction
wording, fixing a repeatedly wrong entry, greeting hang-ups, and cut-off
numbers from malformed say-as tags
Changed
-
The knowledge-base query guidance no longer suggests adding a brand name to
queries; the company's own name measurably lowers retrieval. -
references/testing.mdandtemplates/promptfoo-suite/: how to set up an
automated conversation test suite for an agent with promptfoo. The template
exports the agent and its tools through the client API, composes the prompt
in the platform's order, plays whole conversations on the production model
(google/gemma-4-26b-a4b-it, temperature 0.5, 768 output tokens), and tests
the disposition outcomes ongoogle/gemini-3.1-flash-lite. It includes
reusable assertions (tool fired, silence after a transfer, no tool name
spoken, spoken-Thai digit matching), a fictional example agent to check the
setup, token and cost reporting, and guidance on keys, cost, what to test,
and how to write assertions that survive run-to-run variation. Verified end
to end: 8 conversations × 3 repeats and 4 disposition cases passing, with
assertions confirmed to fail when their behaviour breaks.
v1.4.0
Added
references/prompt-authoring.md:- where the template engine (gonja v2.9.0) differs from Python Jinja, as a
table of traps that fail silently, probed on the production version - how to parse
{{now}}safely (its current shape, the non-breaking-space
history, a validity check with a fallback), and a preference for{{hour}}
and the other dedicated variables - computing derived values onto
customerContextso the body stays
cacheable - the 1024-character limit on
ai_instruction_identity - silence after a successful transfer
- "Scripted lines are copied, so scope them" and "How scripted to make it"
(controlled variety as the default, with the measured cost of going fully
free-form) - "Testing a change": re-test beyond the edited state, treat greeting edits
as affecting every call, repeat a scenario before concluding, and a go-live
checklist of guardrail and complaint cases
- where the template engine (gonja v2.9.0) differs from Python Jinja, as a
references/tools.md: whatresolve_dateunderstands and returns, checked
against the platform source: the phrase coverage,thai_readback, the two
meanings ofneeds_confirmation, past dates, weekend-onlyis_business_day,
and how to order the instruction.
v1.3.0
Fixed
- Publishing a prompt edit could strip every tool from a live agent. A
revision stores only the tool ids it is sent, and
GET /client/agents/{slug}/revisions/{id}returns none, so a body rebuilt
from the revision read unbound the transfer and hang-up tools. The agent
then readtransfer_to_human_agent{}aloud instead of transferring and
could not hang up.scripts/ingfah_api.pynow reads the agent before
POST /client/agents/{slug}/revisionsand refuses a body that omits
phone_toolsorai_plugin_function_ids, drops an id the published agent
uses, or has a flow state naming a tool that is not bound.
--allow-tool-dropoverrides it when removing a tool is the intended
change.
Added
references/agents-and-teams.md: "Carry the tools into every revision",
covering where the ids are read from, the preview and post-publish checks, and
publishing by id when others edit the same agent.references/troubleshooting.md: the "reads a tool name aloud / promises a
transfer that never happens / repeats its goodbye" complaint, in check order
(bindings, the call's tool messages, then the prompt).references/prompt-authoring.md: "Tools in the prompt" (silent transfers,
never quote a forbidden output, keep the tool description and prompt
consistent), theend_call_keywordtool as a third requirement for
hanging up, and two pre-publish checks.references/tools.md: a tool is callable only while bound, and a tool's
description is part of every turn.
v1.2.0
Added
references/troubleshooting.mdand a "When the user reports a problem"
section inSKILL.md: they map what a user sees in the dashboard (a call
title or summary, an outcome label, metadata, what the agent says, missed
calls) to the setting that produces it, and describe how to consult before
proposing a fix.references/postprocessors.mdnow explains what each post-call result type
writes and where it shows up. It also notes that asummarypostprocessor
sets both the call title and the summary, and that a team without one falls
back to a global default with no business context.- Newly allowlisted API-key routes, confirmed against the backend router:
- analytics (
analytics:read):/client/analytics/*and
/client/text-analytics/*, including the XLSX report download - text chats (
chat_sessions:read):/client/text-chats/conversations
and/client/text-chats/chat-sessions-list(plus CSV) - text channels (
client_products:read):/client/text-channel-configs
and the provider catalog, read only - customer templates (
client_outbound_options:write): create, update,
and delete/client/outbound/options GET /client/outbound/call-data-records, for per-attempt SIP resultsGET /client/voicesandPOST /client/agents/{slug}/publish
- analytics (
references/reporting.mddocuments the analytics, text chat, and
call-attempt routes.
Changed
- Creating, editing, and deleting a customer template is no longer listed as
dashboard-only. Only copying a template still is.