@yak-io/trpc
v0.1.3
Published
tRPC adapter for yak chatbot - enables tRPC procedures as chatbot tools
Readme
@yak-io/trpc
Adapters that turn tRPC procedures into Yak tool definitions. This package plugs directly into @yak-io/javascript and works seamlessly with the Next.js helpers.
What you get
createTRPCToolExecutor– a thin wrapper that turns procedure names into a tool executor function.createTRPCToolAdapter– a higher level helper that returns a fullToolSource(manifest + executor) that can be passed straight intocreateYakHandlerorcreateNextYakHandler.buildToolManifest– introspection utility used by the adapter (exposed for custom pipelines).
Installation
pnpm add @yak-io/trpc @yak-io/javascriptYou also need @trpc/server (v10+ or v11+) in your project.
Usage
1. Build a tRPC adapter
By default, all procedures from your router are exposed as tools:
import { createTRPCToolAdapter } from "@yak-io/trpc";
import { appRouter, createContext } from "@/server/trpc";
// All procedures are available
const trpcTools = createTRPCToolAdapter({
router: appRouter,
createContext: async ({ req }) => createContext({ req }),
});Restricting procedures
Use allowedProcedures to whitelist specific procedures:
const trpcTools = createTRPCToolAdapter({
router: appRouter,
createContext: async ({ req }) => createContext({ req }),
allowedProcedures: ["orders.list", "orders.detail"],
});Use disallowedProcedures to block specific procedures while allowing the rest:
const trpcTools = createTRPCToolAdapter({
router: appRouter,
createContext: async ({ req }) => createContext({ req }),
disallowedProcedures: ["admin.deleteUser", "billing.refund"],
});2. Attach it to a Yak handler
import { createYakHandler } from "@yak-io/javascript/server";
export const { GET, POST } = createYakHandler({
routes: () => Promise.resolve([{ path: "/" }]),
tools: trpcTools,
});If you are in a Next.js app, simply pass the adapter to createNextYakHandler instead.
3. Executor only
If you already generate manifests elsewhere you can still use the lower level executor helper:
import { createTRPCToolExecutor } from "@yak-io/trpc";
const executeTool = createTRPCToolExecutor({
router: appRouter,
createContext,
allowedProcedures: ["orders.list"],
});Then supply getTools + executeTool to any Yak handler.
Types
All tool/route/chat config types are re-exported from @yak-io/javascript/server, e.g.
import type { ToolDefinition, ToolManifest, ToolExecutor } from "@yak-io/trpc";Security tips
- For production apps, consider using
allowedProceduresto restrict to the minimal surface area needed by the assistant, or usedisallowedProceduresto block sensitive operations. - Build per-request contexts so each call is authorized with the user session from
req. - Combine the adapter with additional
ToolSources (e.g., GraphQL or REST) by passing arrays tocreateYakHandler/createNextYakHandler.
License
Proprietary - see LICENSE file
