mirror of
https://github.com/dograh-hq/dograh.git
synced 2026-06-07 07:55:16 +02:00
If there are multiple telephony configurations, the form number should be initialized from the campaigns given telephonic configuration rather than the organization default telephonic configuration. |
||
|---|---|---|
| .. | ||
| scripts | ||
| src | ||
| tests | ||
| .gitignore | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
@dograh/sdk
Typed builder for Dograh voice-AI workflows. Fetches the node-spec catalog from
the Dograh backend at session start, validates every call against it at the
call site, and produces wire-format JSON that round-trips through the Python
ReactFlowDTO.
Install
npm install @dograh/sdk
# or
pnpm add @dograh/sdk
For local development against a checked-out monorepo, add a tsconfig paths entry:
{
"paths": {
"@dograh/sdk": ["../sdk/typescript/src/index.ts"]
}
}
Usage
import { DograhClient, Workflow } from "@dograh/sdk";
const client = new DograhClient({
baseUrl: "http://localhost:8000",
apiKey: process.env.DOGRAH_API_KEY,
});
const wf = new Workflow({ client, name: "loan_qualification" });
const start = await wf.add({
type: "startCall",
name: "greeting",
prompt: "You are Sarah from Acme Loans. Greet the caller warmly.",
greeting_type: "text",
greeting: "Hi {{first_name}}, this is Sarah.",
});
const qualify = await wf.add({
type: "agentNode",
name: "qualify",
prompt: "Ask about loan amount and timeline.",
});
const done = await wf.add({ type: "endCall", name: "done", prompt: "Thank them." });
wf.edge(start, qualify, { label: "interested", condition: "Caller expressed interest." });
wf.edge(qualify, done, { label: "done", condition: "Qualification complete." });
await client.saveWorkflow(123, wf);
Client-side validation
Each add() call validates kwargs against the fetched spec. ValidationError
is thrown immediately when:
- an unknown field is passed (catches typos)
- a required field is missing or empty
- a scalar type is wrong (e.g., string for a boolean)
- an
optionsvalue isn't in the allowed list
When a spec carries an llm_hint, the hint is appended to the error so an LLM
agent can self-correct on retry:
tool_uuids: expected tool_refs, got string
Hint: List of tool UUIDs from `list_tools`.
Server-side Pydantic validators run on save and surface anything the client lets through.
Environment
DOGRAH_API_URL=http://localhost:8000 # default
DOGRAH_API_KEY=sk-... # sent as X-API-Key
License
BSD 2-Clause — see LICENSE.