@ariaflowagents/hono-server
v0.7.1
Published
Hono router for hosting AriaFlow Runtime and AgentFlowManager over HTTP and WebSocket
Downloads
877
Readme
@ariaflowagents/hono-server
Hono router for hosting AriaFlow Runtime and flow managers over HTTP + WebSocket.
Usage (Node.js)
import { Hono } from 'hono';
import { serve } from '@hono/node-server';
import { createNodeWebSocket } from '@hono/node-ws';
import { Runtime } from '@ariaflowagents/core';
import { createAriaChatRouter } from '@ariaflowagents/hono-server';
const app = new Hono();
const { upgradeWebSocket, injectWebSocket } = createNodeWebSocket({ app });
const runtime = new Runtime({
agents: [],
defaultAgentId: 'triage',
});
app.route('/', createAriaChatRouter({ runtime, upgradeWebSocket }));
const server = serve({ fetch: app.fetch, port: 3000 });
injectWebSocket(server);Usage (Bun)
import { Hono } from 'hono';
import { upgradeWebSocket } from 'hono/bun';
import { Runtime } from '@ariaflowagents/core';
import { createAriaChatRouter } from '@ariaflowagents/hono-server';
const app = new Hono();
const runtime = new Runtime({
agents: [],
defaultAgentId: 'triage',
});
app.route('/', createAriaChatRouter({ runtime, upgradeWebSocket }));
export default app;Widget Welcome Behavior
createAriaChatRouter supports deterministic first-turn behavior for widget sockets (/agents/chat/:sessionId):
app.route('/', createAriaChatRouter({
runtime,
upgradeWebSocket,
widgetWelcomeMode: 'static', // 'off' | 'model' | 'static'
widgetWelcomeMessage: "I'm the virtual assistant. How can I help?",
widgetWelcomeSuggestions: [
'Check Availability',
'Book Appointment',
'Inquiries',
], // optional
}));Modes
off: no welcome turn on socket connectmodel: welcome generated viaruntime.stream(...)static: sendwidgetWelcomeMessagedirectly (no model call)
sendWidgetWelcomeMessage is still accepted for backward compatibility, but widgetWelcomeMode is recommended.
Flow Support
For structured conversation flows, use createAriaFlowRouter:
import { FlowManager } from '@ariaflowagents/core';
import { createAriaFlowRouter } from '@ariaflowagents/hono-server';
const flowManager = new FlowManager({
initialNode: 'greeting',
nodes: [...],
model: ...,
});
app.route('/', createAriaFlowRouter({
flowManager,
sessionId: 'flow-session',
upgradeWebSocket,
}));Examples
examples/basic-server(Node.js) - Runtime exampleexamples/bun-server(Bun) - Runtime exampleexamples/flow-server(Node.js) - Flow example
Runtime Routes
GET /healthPOST /api/chatPOST /api/chat/streamPOST /api/chat/sseGET /api/session/:idDELETE /api/session/:idGET /ws/:sessionId
Flow Routes
GET /healthGET /infoGET /flow-statePOST /api/flow/chatPOST /api/flow/streamPOST /api/flow/sseGET /ws
