createInngestAgent()
createInngestAgent() enveloppe un Agent existant avec une exécution durable fondée sur Inngest. Comme createDurableAgent(), il diffuse les événements via PubSub et prend en charge les streams reprenables, mais exécute la boucle agentique sur le moteur d'exécution d'Inngest plutôt que dans le processus. Utilisez-le lorsqu'une exécution doit survivre au redémarrage des processus ou s'exécuter dans un environnement distribué.
Pour une exécution durable dans le processus, utilisez createDurableAgent(). Pour une exécution sans attente sur le moteur de Workflow intégré, utilisez createEventedAgent().
Exemple d'utilisationLien direct vers Exemple d'utilisation
Configurez le client Inngest, enveloppez un Agent, enregistrez-le auprès de Mastra et exposez l'endpoint de service Inngest :
import { Mastra } from '@mastra/core'
import { Agent } from '@mastra/core/agent'
import { createInngestAgent, serve as inngestServe } from '@mastra/inngest'
import { Inngest } from 'inngest'
const inngest = new Inngest({ id: 'my-app' })
const agent = new Agent({
id: 'my-agent',
name: 'My Agent',
instructions: 'You are a helpful assistant',
model: 'openai/gpt-5.6-sol',
})
const durableAgent = createInngestAgent({ agent, inngest })
export const mastra = new Mastra({
agents: { myAgent: durableAgent },
server: {
apiRoutes: [
{
path: '/inngest/api',
method: 'ALL',
createHandler: async ({ mastra }) => inngestServe({ mastra, inngest }),
},
],
},
})
Diffusez une réponse et lisez le résultat :
const { output, runId, cleanup } = await durableAgent.stream('Hello!')
const text = await output.text
cleanup()
createInngestAgent(options)Lien direct vers createinngestagentoptions
Enveloppe un Agent avec une exécution durable fondée sur Inngest et des streams reprenables.
import { createInngestAgent } from '@mastra/inngest'
const durableAgent = createInngestAgent({ agent, inngest })
Renvoie : InngestAgent
ParamètresLien direct vers Paramètres
agent:
InngestAgent, telles que listTools() et getMemory(), délèguent à cet Agent via un Proxy.inngest:
id?:
name?:
pubsub?:
InngestPubSub par défaut utilise Inngest Realtime, qui fonctionne entre les processus.cache?:
CachingPubSub. S'il est omis, l'Agent hérite du cache de l'instance Mastra.mastra?:
Interface InngestAgentLien direct vers inngestagent-interface
Objet renvoyé par createInngestAgent(). Il fournit les méthodes d'exécution durable ci-dessous. Toute propriété ou méthode non définie explicitement, telle que listTools() et getMemory(), est transmise à l'Agent sous-jacent via un Proxy.
PropriétésLien direct vers Propriétés
id:
name:
agent:
inngest:
cache:
pubsub:
MéthodesLien direct vers Méthodes
ExécutionLien direct vers Exécution
stream(messages, options?)Lien direct vers streammessages-options
Diffuse une réponse au moyen du moteur d'exécution durable d'Inngest. Le Workflow est déclenché via un événement Inngest après l'établissement de l'abonnement PubSub.
const { output, runId, cleanup } = await durableAgent.stream('Hello!', {
onChunk: chunk => console.log(chunk),
onFinish: result => console.log('done', result),
})
const text = await output.text
cleanup()
Renvoie : Promise<InngestAgentStreamResult>
resume(runId, resumeData, options?)Lien direct vers resumerunid-resumedata-options
Reprend une exécution Inngest suspendue, par exemple après l'approbation d'un Tool. Charge le snapshot du Workflow depuis le stockage, recherche l'étape suspendue et envoie un événement de reprise à Inngest.
const { output, cleanup } = await durableAgent.resume(
runId,
{
approved: true,
},
{ threadId: 'thread-1', resourceId: 'user-1' },
)
await output.text
cleanup()
Le troisième argument accepte threadId et resourceId en plus des callbacks du cycle de vie :
threadId?:
resourceId?:
onChunk?:
onStepFinish?:
onFinish?:
onError?:
onSuspended?:
Renvoie : Promise<InngestAgentStreamResult>
generate(messages, options?)Lien direct vers generatemessages-options
Exécute une réponse sur le moteur d'exécution durable d'Inngest et la résout en un unique FullOutput. Si l'exécution est suspendue, generate() est résolue avec finishReason: 'suspended'. L'option runId est facultative. Si vous l'omettez, generate() crée un identifiant d'exécution et le renvoie dans result.runId. Poursuivez l'exécution avec resumeGenerate(). Utilisez stream() avec onSuspended lorsque l'appelant a besoin d'un callback de suspension.
const result = await durableAgent.generate('Delete the old records', {
requireToolApproval: true,
})
result.runId // Generated automatically
result.finishReason // 'suspended' when approval is required
Renvoie : Promise<FullOutput<TOutput>>
resumeGenerate(runId, resumeData, options?)Lien direct vers resumegeneraterunid-resumedata-options
Reprend une exécution generate() suspendue et la résout en un unique FullOutput.
if (!result.runId) {
throw new Error('Run ID is missing')
}
const resumedResult = await durableAgent.resumeGenerate(result.runId, { approved: true })
Renvoie : Promise<FullOutput<TOutput>>
observe(runId, options?)Lien direct vers observerunid-options
Se reconnecte à une exécution existante, en rejouant les événements mis en cache avant de transmettre les événements en direct. Utilisez cette méthode après une déconnexion réseau. Transmettez offset pour commencer la relecture depuis une position connue.
const { output, cleanup } = await durableAgent.observe(runId, {
offset: 0,
onChunk: chunk => console.log(chunk),
})
await output.text
Le résultat de observe() n'inclut ni threadId ni resourceId.
Renvoie : Promise<Omit<InngestAgentStreamResult, 'threadId' | 'resourceId'>>
Le cleanup() renvoyé par observe() détruit les entrées du registre et les événements en cache de l'exécution. Appelez-le uniquement lorsque vous avez terminé cette exécution. Si elle est suspendue et que vous comptez la reprendre plus tard, n'appelez pas cleanup().
prepare(messages, options?)Lien direct vers preparemessages-options
Prépare une exécution durable sans la déclencher. Renvoie l'entrée sérialisée du Workflow qui permet de déclencher manuellement l'événement de Workflow Inngest.
const { runId, messageId, workflowInput, threadId, resourceId } = await durableAgent.prepare(
'Summarize the document',
{
memory: { threadId: 'thread-1', resourceId: 'user-1' },
},
)
Renvoie :
interface PrepareResult {
runId: string
messageId: string
workflowInput: any
threadId?: string
resourceId?: string
}
IntrospectionLien direct vers Introspection
isInngestAgent(obj)Lien direct vers isinngestagentobj
Garde de type qui vérifie si un objet est un InngestAgent.
import { isInngestAgent } from '@mastra/inngest'
if (isInngestAgent(agent)) {
// agent is InngestAgent
}
Renvoie : boolean
Options du streamLien direct vers Options du stream
stream() accepte un objet InngestAgentStreamOptions. Il prend en charge les mêmes options d'exécution d'Agent que DurableAgent.stream(), ainsi que les callbacks du cycle de vie.
runId?:
resume() ou observe().instructions?:
context?:
memory?:
requestContext?:
maxSteps?:
toolsets?:
clientTools?:
toolChoice?:
modelSettings?:
requireToolApproval?:
autoResumeSuspendedTools?:
resume().toolCallConcurrency?:
includeRawChunks?:
maxProcessorRetries?:
untilIdle?:
true pour le délai d'inactivité par défaut de 5 minutes, ou { maxIdleMs } pour le personnaliser.onChunk?:
onStepFinish?:
onFinish?:
onError?:
onSuspended?:
observe() accepte les callbacks du cycle de vie (onChunk, onStepFinish, onFinish, onError, onSuspended), ainsi qu'un offset contrôlant le point de départ de la relecture.
InngestAgentStreamResultLien direct vers inngestagentstreamresult
Objet renvoyé par stream() et resume(). La méthode observe() renvoie la même forme, mais omet threadId et resourceId.
interface InngestAgentStreamResult<OUTPUT = undefined> {
output: MastraModelOutput<OUTPUT>
readonly fullStream: ReadableStream<any>
runId: string
threadId?: string
resourceId?: string
cleanup: () => void
}
output:
output.text pour obtenir le texte complet, ou consommez output.fullStream.fullStream:
output.fullStream.runId:
resume() ou observe() pour vous reconnecter.threadId?:
resourceId?:
cleanup:
Mise à disposition des fonctions InngestLien direct vers Mise à disposition des fonctions Inngest
Le package @mastra/inngest fournit serve() et createServe() pour enregistrer les fonctions de Workflow Inngest auprès de votre framework HTTP.
serve(options)Lien direct vers serveoptions
Met à disposition les Workflows Mastra avec Hono, le framework par défaut. Collecte tous les Workflows Mastra fondés sur Inngest et les enregistre comme fonctions Inngest.
import { serve } from '@mastra/inngest'
app.use('/inngest/api', async c => {
return serve({ mastra, inngest })(c)
})
createServe(adapter)Lien direct vers createserveadapter
Factory qui accepte n'importe quel adaptateur de service Inngest (inngest/express, inngest/fastify, inngest/next, etc.) et renvoie une fonction de service pour ce framework.
import { createServe } from '@mastra/inngest'
import { serve } from 'inngest/express'
const serveExpress = createServe(serve)
app.use('/inngest/api', serveExpress({ mastra, inngest }))
import { createServe } from '@mastra/inngest'
import { serve } from 'inngest/next'
const serveNext = createServe(serve)
export const { GET, POST, PUT } = serveNext({ mastra, inngest })