dograh/sdk/typescript
Mohamed-Mamdouh 5f28c1b2a9
feat: add Tuner Integration to Dograh (#311)
* 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>
2026-05-20 14:37:33 +05:30
..
scripts feat: add Tuner Integration to Dograh (#311) 2026-05-20 14:37:33 +05:30
src feat: add Tuner Integration to Dograh (#311) 2026-05-20 14:37:33 +05:30
tests feat: refactor node spec and add mcp tools (#244) 2026-04-21 07:56:16 +05:30
.gitignore feat: refactor node spec and add mcp tools (#244) 2026-04-21 07:56:16 +05:30
LICENSE feat: refactor node spec and add mcp tools (#244) 2026-04-21 07:56:16 +05:30
package-lock.json feat: add examples to create workflow and use sdk 2026-04-24 14:09:24 +05:30
package.json chore: bump sdk version 2026-05-02 17:04:12 +05:30
README.md feat: refactor node spec and add mcp tools (#244) 2026-04-21 07:56:16 +05:30
tsconfig.json feat: refactor node spec and add mcp tools (#244) 2026-04-21 07:56:16 +05:30

@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 options value 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.