Skip to main content

veryfront/agent

AI agents with memory, tools, and multi-agent composition.

Import

import {
  agent,
  AgentRuntime,
  registerAgent,
  getAgentsAsTools,
  createMemory,
  agentAsTool,
} from "veryfront/agent";

Examples

Basic agent

import { agent } from "veryfront/agent";

const assistant = agent({
  system: "You are a helpful assistant.",
});

Agent with tools

import { agent } from "veryfront/agent";
import { tool } from "veryfront/tool";
import { z } from "zod";

const searchTool = tool({
  id: "search",
  description: "Search the knowledge base",
  inputSchema: z.object({ query: z.string() }),
  execute: async ({ query }) => ({ results: [] }),
});

const assistant = agent({
  system: "You are a helpful assistant.",
  tools: { search: searchTool },
  memory: { type: "conversation", maxMessages: 50 },
});

Agent with skills

import { agent } from "veryfront/agent";

const assistant = agent({
  system: "You are a support engineer. Use skills when relevant.",
  skills: ["incident-response", "repo-maintainer"], // or `true` for all discovered skills
  tools: {
    Read: true,
    "github:list-issues": true,
  },
});

Streaming API route

// app/api/chat/route.ts
import { agent } from "veryfront/agent";

const assistant = agent({
  system: "You are a helpful assistant.",
});

export async function POST(req: Request) {
  const { messages } = await req.json();
  const result = await assistant.stream({ messages });
  return result.toDataStreamResponse();
}

Multi-agent composition

import { agent, registerAgent, getAgentsAsTools } from "veryfront/agent";

const researcher = agent({ system: "Research topics thoroughly." });
const writer = agent({ system: "Write clear prose." });

registerAgent(researcher);
registerAgent(writer);

const orchestrator = agent({
  system: "Coordinate research and writing.",
  tools: getAgentsAsTools(["researcher", "writer"]),
});

API

agent(config)

Create an agent
PropertyTypeDescription
id?stringUnique identifier (auto-generated if omitted)
model?ModelStringOptional model string in “provider/model” format.
systemstring | (() => string) | (() => Promise<string>)System prompt — string, function, or async function
tools?true | Record<string, Tool | boolean>Tools available to the agent
remoteTools?RemoteToolSource[]
maxSteps?numberMax tool-call iterations per request
streaming?booleanEnable streaming responses
memory?MemoryConfigConversation memory settings
middleware?AgentMiddleware[]Execution middleware pipeline
edge?EdgeConfigEdge runtime configuration
multimodal?{ vision?: boolean; audio?: boolean }Enable vision and/or audio
allowedModels?ModelString[]Restrict runtime model overrides to these “provider/model” strings.
resolveModelTransport?ModelTransportResolverOptional request-aware hook for overriding the resolved model runtime and
resolveRuntimeState?RuntimeStateResolverOptional step-boundary hook for refreshing the runtime system prompt and
skills?true | string[]Enable skills for this agent.
suggestions?AgentSuggestions
security?falseSet to false to disable the default security middleware
Returns: Agent

agent.generate(input)

Run the agent and return a complete response. Accepts a string or message array as input.
PropertyTypeDescription
inputstring | Message[]Prompt string or message history
context?Record<string, unknown>Additional context passed to the agent
model?ModelStringOverride the agent’s default model for this request. Must be in allowedModels if configured.
maxOutputTokens?numberOverride the maximum model output tokens for this request.
Returns: Promise<AgentResponse>

agent.stream(input)

Run the agent and stream the response. Returns a result with .toDataStreamResponse() for API routes.
PropertyTypeDescription
input?stringPrompt string
messages?Message[]Conversation message history
context?Record<string, unknown>Additional context passed to the agent
model?ModelStringOverride the agent’s default model for this request. Must be in allowedModels if configured.
maxOutputTokens?numberOverride the maximum model output tokens for this request.
onToolCall?(toolCall: ToolCall) => voidCallback fired when a tool is invoked
onChunk?(chunk: string) => voidCallback fired for each text chunk
onFinish?(response: AgentResponse) => void
abortSignal?AbortSignal
Returns: Promise<AgentStreamResult>

agent.respond(request)

Handle an incoming HTTP request and return a streaming Response. Reads messages from the request body. Returns: Promise<Response>

agent.getMemory()

Get the agent’s memory instance. Returns: Memory<Message>

agent.getMemoryStats()

Get memory usage statistics (message count, estimated tokens, type). Returns: Promise<{ totalMessages: number; estimatedTokens: number; type: string }>

agent.clearMemory()

Clear all stored messages from memory. Returns: Promise<void>

Exports

Components

NameDescription
AgUiDetachedStartAcceptedSchema
AgUiDetachedStartRequestSchema
AgUiRequestSchema
AgUiResumeSignalSchema
AgUiRuntimeContextItemSchema
AgUiRuntimeInjectedToolSchema
AgUiRuntimeMessageSchema
AgUiRuntimeRequestSchema
AppendConversationRunEventsResponseSchema
CompleteConversationRunResponseSchema
ConversationMessageRecordSchema
ConversationRecordSchema
ConversationRunEventSchema
ConversationRunProjectionSchema
ConversationRunStatusSchema
ConversationRunTargetsSchema
HumanInputFieldSchema
HumanInputOptionSchema
HumanInputPendingRequestSchema
HumanInputRequestSchema
HumanInputResultSchema
InvokeAgentChildRunLifecycleCustomEventSchema
InvokeAgentChildRunLifecycleValueSchema
InvokeAgentChildRunStateDeltaSchema

Functions

NameDescription
agentCreate an agent
agentAsToolWrap agent as callable tool
appendConversationRunEvents
appendHostedChildMirrorChunk
bootstrapConversationAgentRun
bootstrapHostedChildRun
buildAgUiBrowserFinalizeResponse
buildChatStreamChunkMessageMetadata
buildHostedChildConversationBody
buildInvokeAgentChildRunLifecycleCustomEvent
buildInvokeAgentChildRunProgressEvents
buildInvokeAgentChildRunStateDelta
closeHostedChildReasoningSegment
closeHostedChildTextSegment
createAgUiBrowserChunkEncoder
createAgUiBrowserEncoderState
createAgUiBrowserFinalizeTracker
createAgUiBrowserResponseStream
createAgUiCancelHandler
createAgUiChunkEncoderBridge
createAgUiDetachedStartHandler
createAgUiHandler
createAgUiHandler
createAgUiHandler
createAgUiResumeHandler
createAgUiRunErrorEvent
createAgUiRuntimeBrowserResponse
createAgUiRuntimeChatStreamEncoder
createAgUiRuntimeEventEncoder
createAgUiRuntimeHandler
createAgUiSseErrorResponse
createAgUiSseResponse
createAgUiTrackedBrowserResponse
createChatHandlerCreate a POST handler for a chat API route.
createChatHandler
createChatHandler
createConversationAgentRun
createConversationChildLifecycleAdapter
createConversationHostedLifecycleAdapter
createConversationHostedStreamLifecycleAdapter
createConversationHostedTerminalAdapter
createConversationMessage
createConversationRecord
createConversationRootRunContext
createConversationRootRunStartAdapter
createConversationRunContext
createConversationRunEventQueueController
createConversationRunMirror
createConversationRunStreamMirror
createMemoryCreate memory (buffer, conversation, summary)
createRedisMemoryCreate Redis-backed memory
createWorkflowCreate sequential agent workflow
dedupeChatUiMessageChunks
defineAgentServiceReserve the public hosted agent-service signature before the runtime
encodeConversationRunEvents
ensureConversationProjectLink
executeAgUiDetachedStart
expandAllowedRemoteToolNames
extractChatMessageMetadata
fetchConversationRecord
finalizeAgUiBrowserEvents
finalizeConversationAgentRun
finalizeHostedDetached
finalizeHostedResponse
flushConversationRunEventBatches
flushConversationRunEventQueue
getAgentGet agent by ID
getAgentsAsToolsGet agents as tools (multi-agent)
getAllAgentIdsList registered agent IDs
getConversationRun
getConversationRunEventJsonByteLength
getProviderNativeToolNames
getTextFromPartsExtract text from multi-part message
getToolArgumentsExtract parsed tool call args
hasArgsCheck for parsed args on tool call
hasInputCheck for raw input on tool call
isActiveConversationRunStatus
isAlreadyMirroredHostedChunk
isAppendableConversationRunProjection
isCursorMismatchConversationRunAppendError
isIgnorableConversationRunAppendError
mapHostedStreamPartToChatUiChunks
mapRuntimeStreamEventToAgUiBrowserEvents
mergeToolCallInput
mergeToolInputDelta
monitorConversationRunStatus
monitorHostedChildRunStatus
normalizeAgUiBrowserRuntimeRequest
normalizeAgUiMessages
normalizeAgUiRuntimeMessages
normalizeChatMessageMetadata
normalizeChatUiMessageChunk
normalizeChatUiMessageStream
normalizeConversationRunEvent
normalizeConversationRunEvents
normalizeEncodedConversationRunEvents
parseAgUiRequest
parseAgUiRequestOrError
parseAgUiRuntimeRequest
parseAgUiRuntimeRequestOrError
parseAppendConversationRunEventsErrorBody
parseDataStreamSseEvents
parseToolInputObject
prepareConversationRootRunContext
prepareConversationRootRunLifecycle
prepareConversationRunChunkEvents
prepareConversationRunExternalEvents
prepareConversationRunStreamEvents
publishInvokeAgentChildRunProgress
recoverConversationRunAppendExecution
recoverConversationRunAppendFailure
recoverConversationRunCursorMismatch
registerAgentRegister agent for discovery
resolveConversationRunTargets
resolveHostedChildTerminalErrorCode
resyncConversationRunAppendCursor
runHostedChildLifecycle
runHostedLifecycle
runHostedResponseStreamWithHeartbeat
startConversationRootRun
streamDataStreamEvents
stripLeadingEmptyObjectPlaceholder
toConversationHostedTerminalState
toConversationRunStreamEvent
toMirroredHostedStreamPart
waitForHumanInput

Classes

NameDescription
AgentRuntimeAgent execution runtime
AppendConversationRunEventsError
BufferMemoryIn-memory message buffer
ConversationMemoryFull conversation history
ConversationRunEventEncoder
ConversationRunTerminalStateError
HostedChildTerminalStateError
HumanInputResumeError
InvalidHumanInputResultError
RedisMemoryRedis-backed persistent memory
RunAlreadyExistsError
RunCancelledError
RunNotActiveError
RunResumeSessionManager
SummaryMemoryCompresses old messages into summaries
WaitConflictError
WaitNotPendingError

Types

NameDescription
ActiveConversationRunStatus
Agentagent() return type
AgentConfigAgent configuration
AgentContextAgent handler context
AgentContractPhase-0 contract draft for the future framework-owned hosted agent service.
AgentMessage
AgentMiddlewareAgent execution middleware
AgentResponseAgent execution response
AgentServiceDefinitionType-preserving service definition reserved ahead of the runtime
AgentServiceServerConfigPlaceholder host-facing server config reserved for the future hosted service
AgentStatusAgent status (idle, running, etc.)
AgentStreamResultStreaming result (.toDataStreamResponse())
AgentSuggestion
AgentSuggestions
AgUiBrowserChunkEncoder
AgUiBrowserEncodedEvent
AgUiBrowserEncoderState
AgUiBrowserFinalizeTracker
AgUiBrowserResponseEncoder
AgUiBrowserResponseExecution
AgUiBrowserResponseRequestState
AgUiBrowserRunFinishedMetadata
AgUiCancelHandlerOptions
AgUiChunkEncoderBridge
AgUiContextItem
AgUiDetachedStartAccepted
AgUiDetachedStartHandlerOptions
AgUiDetachedStartRequest
AgUiHandlerConfigWithAgent
AgUiHandlerOptions
AgUiInjectedTool
AgUiRequest
AgUiResumeHandlerOptions
AgUiResumeSignal
AgUiRuntimeChatStreamEncoder
AgUiRuntimeChatStreamEncoderState
AgUiRuntimeContextItem
AgUiRuntimeEventEncoder
AgUiRuntimeHandlerConfig
AgUiRuntimeHandlerConfigWithAgent
AgUiRuntimeHandlerExecute
AgUiRuntimeHandlerExecuteInput
AgUiRuntimeHandlerOptions
AgUiRuntimeInjectedTool
AgUiRuntimeLifecycleContext
AgUiRuntimeMessage
AgUiRuntimeRequest
AgUiRuntimeStreamEvent
AgUiSseEvent
AppendConversationRunEventsResponse
BootstrapConversationAgentRunResult
BootstrapHostedChildRunInput
BootstrapHostedChildRunResult
BuildChatStreamChunkMessageMetadataInput
ChatHandlerBeforeStream
ChatHandlerBeforeStreamContext
ChatHandlerBeforeStreamResult
ChatHandlerConfigWithAgentOptions when passing an agent instance directly.
ChatHandlerMessageInput
ChatHandlerOptionsOptions for createChatHandler — customize the context passed to the agent.
ChatMessageMetadata
ChatMessageMetadataUsage
ChatUiMessageChunk
ChildRunAudit
ChildRunAuditToolCall
ChildRunAuditToolResult
ConversationAgentRunUsage
ConversationChildLifecycleContext
ConversationHostedLifecycleFinalizeInput
ConversationHostedTerminalAdapter
ConversationHostedTerminalStateInput
ConversationMessageRecord
ConversationRecord
ConversationRootRunContext
ConversationRootRunDescriptor
ConversationRootRunLifecycle
ConversationRunAppendCursorResyncResult
ConversationRunAppendExecutionOutcome
ConversationRunAppendFailureOutcome
ConversationRunAppendRecoveryOutcome
ConversationRunBatchFlushOutcome
ConversationRunContext
ConversationRunEvent
ConversationRunEventQueueController
ConversationRunMirror
ConversationRunMirrorRetryScheduledState
ConversationRunMirrorSnapshot
ConversationRunMirrorStoppedState
ConversationRunProjection
ConversationRunQueueFlushOutcome
ConversationRunStreamMirror
ConversationRunTargets
CreateAgUiBrowserChunkEncoderOptions
CreateAgUiBrowserFinalizeTrackerOptions
CreateAgUiBrowserResponseStreamInput
CreateAgUiChunkEncoderBridgeOptions
CreateAgUiRuntimeBrowserResponseInput
CreateAgUiRuntimeChatStreamEncoderOptions
CreateAgUiRuntimeEventEncoderOptions
CreateAgUiTrackedBrowserResponseInput
CreateConversationHostedLifecycleAdapterOptions
CreateConversationHostedTerminalAdapterOptions
DurableRunSinkTransport-neutral durable run lifecycle sink reserved for hosted agent-service
EdgeConfigAgent-to-agent edge config
ExecuteAgUiDetachedStartInput
FinalizeHostedDetachedOptions
FinalizeHostedResponseOptions
HostedChildChunkMirror
HostedChildConversationBodyInput
HostedChildLifecycleAdapter
HostedChildLifecycleRunnerOptions
HostedChildLifecycleRunResult
HostedChildLifecycleTerminalState
HostedChildMirrorPart
HostedChildMirrorState
HostedChildRunIdentifiers
HostedChildTerminalStatus
HostedDetachedFinalizationState
HostedLifecycleAdapter
HostedLifecycleExecution
HostedLifecycleRunnerOptions
HostedLifecycleRunResult
HostedLifecycleTerminalState
HostedResponseFinalizationState
HostedResponseStreamHeartbeat
HostedResponseStreamHeartbeatState
HostedResponseStreamWriter
HostedStreamPartForUiChunkMapping
HostedTerminalError
HostedUiChunkMappingOptions
HumanInputField
HumanInputFieldInput
HumanInputOption
HumanInputPendingRequest
HumanInputRequest
HumanInputRequestInput
HumanInputResult
InvokeAgentChildRunLifecycleCustomEvent
InvokeAgentChildRunLifecycleValue
InvokeAgentChildRunProgressEvent
InvokeAgentChildRunProgressInput
InvokeAgentChildRunStateDelta
MemoryMemory interface
MemoryConfigMemory creation config
MemoryPersistenceMemory storage backend
MemoryStatsMemory usage stats
MessagePartMulti-part message segment
ModelProviderModel provider interface
ModelStringModel configuration string format: “provider/model-name”
ModelTransportRequest
ModelTransportResolver
PrepareConversationRootRunLifecycleOptions
ProviderNativeToolInventoryOptions
RedisClientRedis client interface (compatible with ioredis and node-redis)
RedisMemoryConfigRedis memory configuration
ResolvedAgentConfig
ResolvedModelTransport
ResolvedRuntimeState
RunResumeSessionManagerOptions
RunSessionStatus
RuntimeStateRequest
RuntimeStateResolver
StreamToolCallStreaming tool call
SubmitResumeValueOutcome
TerminalConversationRunStatus
ToolCallCompleted tool call
ToolCallPartTool call message segment
ToolCallPartWithArgsTool call with parsed args
ToolCallPartWithInputTool call with raw input
ToolResultPartTool execution result segment
WaitForHumanInputOptions
WorkflowConfigcreateWorkflow config
WorkflowResultCompleted workflow result
WorkflowStepWorkflow step definition

Constants

NameDescription
conversationRunEventTypes