mirror of
https://github.com/dograh-hq/dograh.git
synced 2026-06-07 07:55:16 +02:00
* Add tuner integration * bump pipecat version * chore: update pipecat submodule to match upstream and use tuner-pipecat-sdk 0.2.0 Update pipecat submodule from 0.0.109.dev23 to 13e98d0d9 (the exact commit upstream dograh-hq/dograh uses after v1.30.1). This installs pipecat-ai as 1.1.0.post277 via setuptools_scm, satisfying tuner-pipecat-sdk 0.2.0's pipecat-ai>=1.0.0 requirement. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * wire tuner * feat: refactor integrations into self contained packages * chore: simplify ensure_public_access_token * fix: remove NodeSpec and make DTOs the source of truth * feat: send relevant signal to mcp using to_mcp_dict * fix: fix tests * cleanup: remove nango integrations * feat: add agents.md for integrations --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: Abhishek Kumar <abhishek@a6k.me> |
||
|---|---|---|
| .. | ||
| 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.