@supaku/agentfactory-nextjs
v0.7.2
Published
Next.js API route handlers for AgentFactory — webhook processor, worker/session management, public stats
Downloads
2,062
Maintainers
Readme
@supaku/agentfactory-nextjs
Next.js route handlers, webhook processor, middleware, and OAuth for AgentFactory. Drop-in API routes that turn a Next.js app into a full agent fleet server.
Installation
npm install @supaku/agentfactory-nextjsOr scaffold a complete project:
npx @supaku/create-agentfactory-app my-agentQuick Start
1. Configure routes
// src/lib/config.ts
import { createAllRoutes, createDefaultLinearClientResolver } from '@supaku/agentfactory-nextjs'
export const routes = createAllRoutes({
linearClient: createDefaultLinearClientResolver(),
})2. Add webhook route
// src/app/webhook/route.ts
import { routes } from '@/lib/config'
export const POST = routes.webhook.POST
export const GET = routes.webhook.GET3. Add middleware
// src/middleware.ts
import { createAgentFactoryMiddleware } from '@supaku/agentfactory-nextjs'
const { middleware } = createAgentFactoryMiddleware()
export { middleware }
export const config = {
matcher: ['/api/:path*', '/webhook', '/dashboard', '/sessions/:path*', '/'],
}What's Included
createAllRoutes() generates 21+ route handlers from a single config:
| Route Group | Endpoints | Purpose |
|-------------|-----------|---------|
| Webhook | POST /webhook | Receive Linear events, dispatch agents |
| Workers | /api/workers/* | Worker registration, heartbeat, polling |
| Sessions | /api/sessions/* | Session management, status, activity |
| Public | /api/public/* | Public stats, session list |
| Cleanup | /api/cleanup | Orphaned resource cleanup |
| OAuth | /callback | Linear OAuth callback |
Each route file is a 2-line re-export:
import { routes } from '@/lib/config'
export const GET = routes.sessions.list.GETConfiguration
const routes = createAllRoutes({
// Required: how to resolve a Linear API client
linearClient: createDefaultLinearClientResolver(),
// Optional: customize prompts, detection, priority
generatePrompt: (identifier, workType, mentionContext) => string,
detectWorkTypeFromPrompt: (prompt, validWorkTypes) => AgentWorkType | undefined,
getPriority: (workType) => number,
// Optional: auto-trigger QA/acceptance
autoTrigger: {
enableAutoQA: true,
enableAutoAcceptance: false,
autoQARequireAgentWorked: true,
autoAcceptanceRequireAgentWorked: true,
autoQAProjects: [],
autoAcceptanceProjects: [],
autoQAExcludeLabels: [],
autoAcceptanceExcludeLabels: [],
},
// Optional: OAuth
oauth: { clientId: '...', clientSecret: '...' },
})Middleware
Handles API key auth, rate limiting, and webhook signature verification:
const { middleware } = createAgentFactoryMiddleware({
routes: {
public: ['/api/public/', '/dashboard', '/'],
protected: ['/api/sessions', '/api/workers'],
webhook: '/webhook',
},
rateLimits: {
public: { max: 60, windowMs: 60_000 },
webhook: { max: 10, windowMs: 1_000 },
},
})Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| LINEAR_ACCESS_TOKEN | Yes | Linear API key |
| LINEAR_WEBHOOK_SECRET | For webhooks | Webhook signature verification |
| REDIS_URL | For distributed | Redis connection URL |
Related Packages
| Package | Description | |---------|-------------| | @supaku/agentfactory | Core orchestrator | | @supaku/agentfactory-linear | Linear integration | | @supaku/agentfactory-server | Redis infrastructure | | @supaku/agentfactory-cli | CLI tools |
License
MIT
