Communitygithub.com

Agentuity: Posicionamento em Frameworks

Use ao adicionar código Agentuity a um app de framework e escolher onde rotas, páginas, funções de servidor, configuração ou clientes de serviços devem ficar. Abrange Next.js, Nuxt, SvelteKit, Astro, Hono, React Router, Vite com React e TanStack Start.

O que é Agentuity: Posicionamento em Frameworks?

Este documento define as melhores práticas e a localização exata dos arquivos ao integrar o SDK da Agentuity em aplicações baseadas em frameworks web modernos. Ele descreve como posicionar rotas de API, páginas, funções de servidor e clientes de serviços dentro da estrutura de diretórios padrão de frameworks como Next.js, Nuxt, SvelteKit, Astro, Hono, React Router, Vite com React e TanStack Start. A principal regra é que clientes Agentuity (como KeyValueClient) e chaves SDK nunca devem ser expostos em código do lado do navegador; todo o código de integração deve ser executado exclusivamente no servidor, seja em rotas de API, server actions, workers ou scripts. O guia também recomenda uma arquitetura de 'rota fina com função compartilhada', separando a lógica de negócio (em funções puras) do código específico do framework, facilitando a portabilidade entre diferentes frameworks, testes, filas e agendadores. Além disso, oferece uma opção de middleware para Hono e uma tabela de erros comuns para evitar más práticas de desenvolvimento.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/agentuity/sdk/tree/HEAD/skills/agentuity-frameworks

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Posicionamento no Framework com Agentuity

A Agentuity funciona com a estrutura de arquivos normal do seu framework. Coloque rotas, páginas, funções de servidor e configuração onde o framework espera. Adicione clientes Agentuity apenas em código do lado do servidor.

Frameworks Suportados pelo Comando create

O comando agentuity create pode gerar a estrutura inicial para estes frameworks:

FrameworkLocalização da Rota de APILocalização da UI do AppDono do Script de Desenvolvimento
Next.jssrc/app/api/<nome>/route.tssrc/app/page.tsxNext.js
Nuxtserver/api/<nome>.get.ts ou .post.tsapp/app.vueNuxt
SvelteKitsrc/routes/<caminho>/+server.tssrc/routes/+page.svelteVite/SvelteKit
Astrosrc/pages/api/<nome>.tssrc/pages/index.astroAstro
HonoManipuladores de rota em src/index.tssrc/landing.tsx (quando gerado)Servidor Hono

Use o manipulador de rotas do framework para validar a requisição e, em seguida, chame uma função compartilhada para o trabalho real.

Adoção em Aplicações Existentes

Para aplicações que você já possui, instale a CLI e importe o projeto sem alterar a estrutura do app:

npm install -D @agentuity/cli
agentuity project import --name existing-app --confirm

Localizações úteis de rotas:

FrameworkEstrutura da Rota de Servidor
React Routerapp/routes/api.agentuity.ts, registrado em app/routes.ts
TanStack Startsrc/routes/api.agentuity.tsx com manipuladores de servidor
Vite + ReactUm limite de servidor como server.ts; o código do navegador chama esse servidor
Express ou outros roteadoresMódulo de rota existente; importe os clientes Agentuity no lado do servidor

Regra: Apenas Servidor

Não exponha chaves do SDK da Agentuity em bundles do navegador. Os clientes de serviço pertencem a rotas, server actions, workers, scripts ou outros módulos exclusivos do servidor.

import { KeyValueClient } from '@agentuity/keyvalue';

const kv = new KeyValueClient();

export async function GET(): Promise<Response> {
  const result = await kv.get<{ checkedAt: string }>('health', 'latest');
  return Response.json({ ok: true, exists: result.exists });
}

Os componentes do navegador devem chamar sua rota de servidor:

const response = await fetch('/api/agentuity-health');
const status = await response.json();

Rota Fina, Função Compartilhada

Prefira esta separação para funcionalidades de IA, trabalhos em segundo plano e chamadas de serviço:

// lib/triage.ts
export async function triageMessage(message: string): Promise<{ priority: string }> {
  return { priority: message.includes('urgent') ? 'high' : 'normal' };
}
// arquivo de rota do framework
import { triageMessage } from '@/lib/triage';

export async function POST(request: Request): Promise<Response> {
  const body = (await request.json()) as { message?: string };
  if (!body.message) {
    return Response.json({ error: 'message is required' }, { status: 400 });
  }

  const result = await triageMessage(body.message);
  return Response.json(result);
}

Isso mantém o código específico da rota pequeno e permite que a função principal seja movida entre frameworks, testes, filas, agendadores e scripts.

Opção de Middleware para Hono

Em aplicações Hono, use clientes diretos por padrão quando a portabilidade for importante. Use @agentuity/hono quando acessar clientes através do contexto do Hono melhorar a legibilidade:

import { Hono } from 'hono';
import { agentuity } from '@agentuity/hono';
import type { Services } from '@agentuity/hono';

const app = new Hono<{ Variables: Pick<Services, 'kv'> }>();

app.use('*', agentuity());

app.get('/api/preferences/:userId', async (c) => {
  const result = await c.var.kv.get('preferences', c.req.param('userId'));
  return c.json({ exists: result.exists });
});

AI Gateway, banco de dados, armazenamento de objetos, webhooks e o Coder usam clientes diretos.

Erros Comuns

ErroMelhor abordagem
Colocar clientes de serviço em componentes do navegadorChame uma rota de servidor que possua o cliente
Adicionar novas pastas que ignoram as convenções do frameworkUse as localizações de rota/página do framework
Duplicar lógica de IA ou serviço em cada rotaColoque o trabalho compartilhado em uma função simples e importe-a
Supor que todo framework usa o mesmo caminho de rota de APIVerifique a tabela de rotas antes de editar
Colocar chaves SDK em prefixos públicos de envMantenha AGENTUITY_SDK_KEY no lado do servidor

Documentação Útil

Habilidades Relacionadas