Introducing Socket Firewall: Free, Proactive Protection for Your Software Supply Chain.Learn More
Socket
Book a DemoInstallSign in
Socket

@inferable/trpc-adapter

Package Overview
Dependencies
Maintainers
0
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@inferable/trpc-adapter

Build your Inferable agent functions from your existing tRPC procedures.

latest
Source
npmnpm
Version
0.1.2
Version published
Maintainers
0
Created
Source

tRPC Adapter for Inferable

npm version License: MIT

The Inferable tRPC Adapter allows you to expose your existing tRPC router endpoints as Inferable functions. This enables AI agents to interact with your tRPC API while preserving all your existing middleware and type safety.

Installation

npm

npm install @inferable/trpc-adapter

yarn

yarn add @inferable/trpc-adapter

pnpm

pnpm add @inferable/trpc-adapter

Quick Start

Create your tRPC router with the Inferable plugin:

import { inferablePlugin } from "@inferable/trpc-adapter";

const t = initTRPC.create();
const withInferable = inferablePlugin();

const appRouter = t.router({
  userById: t.procedure
    .unstable_concat(withInferable) // It's safe to use unstable_concat - https://trpc.io/docs/faq#unstable
    .input(z.object({ id: z.string() }))
    .meta({ description: "Fetch a user by their ID" }) // This will be used to encrich the LLM context
    .query(({ input }) => {
      return users.find((user) => user.id === input.id);
    }),
});

Create an Inferable service from your router:

import { createInferableService } from "@inferable/trpc-adapter";
import { Inferable } from "inferable";

const client = new Inferable({
  apiSecret: process.env.INFERABLE_API_SECRET,
});

const service = createInferableService({
  router: appRouter,
  createCaller: t.createCallerFactory(appRouter),
  name: "userService",
  client,
});

// Start the service
await service.start();
  • Your tRPC procedures are now available as Inferable functions!
const result = await client.run({
  initialPrompt: "Get the user with id 1",
  resultSchema: z.object({
    id: z.string(),
    name: z.string(),
    email: z.string(),
  }),
});

Technical Details

The plugin does two things:

  • It adds a meta field to the procedures with { inferable: { enabled: true } }. This is used to identify the procedures that should be exposed as Inferable functions.
  • It adds a ctx field to the tRPC procedure so you can validate the context that's passed by Inferable in your down stream procedures or middleware.
  • This allows you model human in the loop workflows where you can fire off a approval request to a human before the function is run.
  • It also allows you to handle end-user authentication in your tRPC procedures.
  • For more information on the context object, see the context documentation.

Documentation

Inferable documentation contains all the information you need to get started with Inferable.

Support

For support or questions, please create an issue in the repository.

Contributing

Contributions to the Inferable tRPC Connector are welcome. Please ensure that your code adheres to the existing style and includes appropriate tests.

Keywords

inferable

FAQs

Package last updated on 11 Dec 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts