[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-inngest-inngest-v3-v4-migration":3,"mdc--5yvkdx-key":41,"related-repo-inngest-inngest-v3-v4-migration":3684,"related-org-inngest-inngest-v3-v4-migration":3788},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":36,"sourceUrl":39,"mdContent":40},"inngest-v3-v4-migration","migrate Inngest SDK from v3 to v4","Use when upgrading an existing TypeScript codebase from Inngest SDK v3 to v4, or when fixing mixed v3\u002Fv4 API usage. Covers detecting current SDK usage, moving triggers into createFunction options, replacing EventSchemas with eventType\u002FstaticSchema, moving serve options to the client, updating realtime imports, rewriting step.invoke string IDs, checkpointing\u002Fserverless runtime settings, Connect option changes, and verification.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"inngest","Inngest","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Finngest.png",[12,14,17,20],{"name":9,"slug":8,"type":13},"tag",{"name":15,"slug":16,"type":13},"TypeScript","typescript",{"name":18,"slug":19,"type":13},"Migration","migration",{"name":21,"slug":22,"type":13},"Engineering","engineering",26,"https:\u002F\u002Fgithub.com\u002Finngest\u002Finngest-skills","2026-07-12T07:36:54.283618",null,5,[29,30,31,32,33,34,35],"agent-skill-repository","agent-skills","agentic-skills","ai-agents","claude-code-skills","cursor-skills","openclaw-skills",{"repoUrl":24,"stars":23,"forks":27,"topics":37,"description":38},[29,30,31,32,33,34,35],"Agent Skills for building with Inngest","https:\u002F\u002Fgithub.com\u002Finngest\u002Finngest-skills\u002Ftree\u002FHEAD\u002Fskills\u002Finngest-v3-v4-migration","---\nname: inngest-v3-v4-migration\ndescription: Use when upgrading an existing TypeScript codebase from Inngest SDK v3 to v4, or when fixing mixed v3\u002Fv4 API usage. Covers detecting current SDK usage, moving triggers into createFunction options, replacing EventSchemas with eventType\u002FstaticSchema, moving serve options to the client, updating realtime imports, rewriting step.invoke string IDs, checkpointing\u002Fserverless runtime settings, Connect option changes, and verification.\n---\n\n# Inngest v3 to v4 Migration\n\nUse this skill when the user asks to upgrade Inngest, fix v3\u002Fv4 errors, migrate\nrealtime, or clean up a codebase that has mixed SDK patterns.\n\nPrimary reference:\nhttps:\u002F\u002Fwww.inngest.com\u002Fdocs\u002Freference\u002Ftypescript\u002Fv4\u002Fmigrations\u002Fv3-to-v4\n\nThis skill is agent-first: detect actual usage first, make mechanical API\nchanges in a controlled order, then typecheck and run focused tests.\n\n## When to Trigger\n\nUse this skill for requests like:\n\n- \"Upgrade Inngest from v3 to v4\"\n- \"Fix our Inngest v4 migration\"\n- \"We're getting signing key required \u002F cloud mode errors after upgrading\"\n- \"`step.invoke` with a string function ID stopped working\"\n- \"`@inngest\u002Frealtime` broke after installing `inngest@4`\"\n- \"Move from EventSchemas to eventType\"\n- \"Make this existing Inngest repo v4-compatible\"\n\nIf the user asks for a broad codebase reliability audit first, use\n`inngest-brownfield-audit` to choose scope, then return here for the v4 changes.\n\n## Migration Scan\n\nStart by locating all Inngest surfaces:\n\n```bash\nrg -n '\"inngest\"|\"@inngest\u002Frealtime\"|\"@inngest\u002Fagent-kit\"' package.json **\u002Fpackage.json\nrg -n 'new Inngest|EventSchemas|eventType|staticSchema|createFunction\\\\(|serve\\\\(|connect\\\\(|step\\\\.invoke|referenceFunction|@inngest\u002Frealtime|realtimeMiddleware|useInngestSubscription|serveHost|rewriteGatewayEndpoint|logLevel|streaming:|signingKey|signingKeyFallback|baseUrl|INNGEST_DEV|INNGEST_SIGNING_KEY' .\n```\n\nThen classify the repo:\n\n- **No Inngest yet:** use `inngest-setup`, not this migration skill.\n- **v3 only:** migrate the SDK and all breaking changes together.\n- **mixed v3\u002Fv4:** prioritize removing broken v3 APIs from v4 code.\n- **v4 mostly done:** focus on missed runtime gotchas like local dev mode,\n  serverless `maxRuntime`, realtime package imports, and string `step.invoke`.\n\nBefore editing, record:\n\n```text\nInngest migration scan:\n- Current package versions:\n- Client files:\n- Serve\u002Fconnect entrypoints:\n- Functions using old trigger syntax:\n- EventSchemas usage:\n- Realtime v3 package usage:\n- step.invoke string IDs:\n- Serverless runtime constraints:\n- Tests\u002Fchecks available:\n```\n\n## Upgrade Order\n\n1. Update package versions.\n2. Fix client construction and local\u002Fprod mode.\n3. Move serve options to the client.\n4. Move triggers into `createFunction` options.\n5. Replace `EventSchemas` with `eventType()` \u002F `staticSchema()`.\n6. Rewrite `step.invoke()` string IDs.\n7. Migrate realtime from `@inngest\u002Frealtime` to v4 native APIs.\n8. Update middleware and logging.\n9. Configure checkpointing\u002Fserverless runtime.\n10. Typecheck, run tests, and optionally sync with the dev server.\n\n## Package and Environment\n\nInstall the latest v4 SDK:\n\n```bash\nnpm install inngest@latest\n# or pnpm add inngest@latest\n# or yarn add inngest@latest\n```\n\nIf the repo uses v3 realtime, remove `@inngest\u002Frealtime`; v4 realtime lives in\nthe `inngest` package and subpaths such as `inngest\u002Frealtime`, `inngest\u002Freact`,\nand native `step.realtime` \u002F `inngest.realtime`.\n\nv4 defaults to Cloud mode. For local development, use an env var:\n\n```bash\nINNGEST_DEV=1 npm run dev\n```\n\nDo not hardcode `isDev: true` in source unless the repo's existing environment\npattern clearly scopes it to local-only code. Production should use\n`INNGEST_SIGNING_KEY`.\n\n## Client and Serve Options\n\nIn v4, options such as `signingKey`, `signingKeyFallback`, and `baseUrl` belong\non `new Inngest(...)`, not on `serve(...)`.\n\n```typescript\n\u002F\u002F Old v3\napp.use(\n  \"\u002Fapi\u002Finngest\",\n  serve({\n    client: inngest,\n    functions,\n    signingKey: process.env.INNGEST_SIGNING_KEY,\n    baseUrl: process.env.INNGEST_BASE_URL,\n  })\n);\n\n\u002F\u002F New v4\nexport const inngest = new Inngest({\n  id: \"my-app\",\n  signingKey: process.env.INNGEST_SIGNING_KEY,\n  baseUrl: process.env.INNGEST_BASE_URL,\n});\n\napp.use(\"\u002Fapi\u002Finngest\", serve({ client: inngest, functions }));\n```\n\nIf the repo already relies on supported environment variables and does not pass\nserve options explicitly, no code change may be required for those keys.\n\nOther renames:\n\n- `serveHost` -> `serveOrigin`\n- `streaming: \"force\"` -> `streaming: true`\n- `streaming: \"allow\"` -> `streaming: true`\n- `streaming: false` stays `false`\n- `logLevel` is removed; pass a `logger` such as `new ConsoleLogger({ level })`\n\n## createFunction Triggers\n\nTriggers move into the first argument's options object.\n\n```typescript\n\u002F\u002F Old v3\ninngest.createFunction(\n  { id: \"send-welcome\" },\n  { event: \"user\u002Fcreated\" },\n  async ({ event, step }) => {}\n);\n\n\u002F\u002F New v4\ninngest.createFunction(\n  { id: \"send-welcome\", triggers: [{ event: \"user\u002Fcreated\" }] },\n  async ({ event, step }) => {}\n);\n```\n\nCron triggers move the same way:\n\n```typescript\ninngest.createFunction(\n  { id: \"nightly-sync\", triggers: [{ cron: \"0 2 * * *\" }] },\n  async ({ step }) => {}\n);\n```\n\nIf a function is invoked only via `step.invoke`, it may be triggerless.\n\n## EventSchemas to eventType\u002FstaticSchema\n\nReplace centralized `EventSchemas` with event-specific definitions.\n\n```typescript\nimport { Inngest, eventType, staticSchema } from \"inngest\";\nimport { z } from \"zod\";\n\nexport const userCreated = eventType(\"user\u002Fcreated\", {\n  schema: z.object({\n    userId: z.string(),\n    email: z.string().email(),\n  }),\n});\n\ntype InvoicePaid = {\n  invoiceId: string;\n  customerId: string;\n};\n\nexport const invoicePaid = eventType(\"billing\u002Finvoice.paid\", {\n  schema: staticSchema\u003CInvoicePaid>(),\n});\n```\n\nUse event types consistently:\n\n```typescript\nawait inngest.send(userCreated.create({ userId, email }));\n\ninngest.createFunction(\n  { id: \"on-user-created\", triggers: [userCreated] },\n  async ({ event }) => {}\n);\n\nawait step.waitForEvent(\"wait-for-invoice\", {\n  event: invoicePaid,\n  timeout: \"7d\",\n});\n```\n\nImportant: `staticSchema` expects a type, not an interface. Convert interfaces\nto type aliases when needed.\n\n## step.invoke\n\nv4 no longer accepts raw string function IDs. Use an imported function\nreference or `referenceFunction()`.\n\n```typescript\nimport { referenceFunction } from \"inngest\";\n\nawait step.invoke(\"run-report\", {\n  function: referenceFunction({\n    appId: \"analytics-app\",\n    functionId: \"generate-report\",\n  }),\n  data: { reportId },\n});\n```\n\nIf the target function is in the same codebase, prefer passing the imported\nfunction itself:\n\n```typescript\nawait step.invoke(\"run-report\", {\n  function: generateReport,\n  data: { reportId },\n});\n```\n\n## Realtime Migration\n\nv3 realtime used `@inngest\u002Frealtime` and middleware-injected `publish`.\nv4 realtime is native.\n\nReplace:\n\n- `@inngest\u002Frealtime` package\n- `realtimeMiddleware()`\n- handler args such as `{ publish }`\n- v3 React hooks such as `useInngestSubscription()`\n\nWith:\n\n- channel definitions from `inngest\u002Frealtime`\n- `step.realtime.publish` between steps\n- `inngest.realtime.publish` inside an existing `step.run`\n- subscription helpers\u002Fhooks from current v4 APIs\n\nUse `inngest-realtime` for detailed patterns. Do not call\n`step.realtime.publish` from inside `step.run`; use `inngest.realtime.publish`\nthere to avoid step-in-step behavior.\n\n## Parallelism and Checkpointing\n\nv4 enables optimized parallelism and checkpointing by default.\n\nWatch for `Promise.race` over steps. With optimized parallelism, `Promise.race`\nwaits for all step promises to settle. If the repo relies on first-winner\nbehavior, use `group.parallel()`.\n\nFor serverless platforms, configure checkpointing `maxRuntime` slightly below\nthe platform limit:\n\n```typescript\nexport const inngest = new Inngest({\n  id: \"my-app\",\n  checkpointing: {\n    maxRuntime: \"50s\",\n  },\n});\n```\n\nOn Vercel or similar frameworks, also set the route handler's max duration\nwhere the platform supports it.\n\n## Connect Changes\n\nIf the repo uses Connect:\n\n- `rewriteGatewayEndpoint` is replaced by `gatewayUrl`.\n- Connect may use worker-thread isolation. If integration issues appear, check\n  `isolateExecution: false` or `INNGEST_CONNECT_ISOLATE_EXECUTION=false`.\n- Keep target URLs and signing\u002Fevent keys in env vars.\n\n## Verification\n\nRun checks in increasing confidence:\n\n1. Package manager install\u002Fupdate.\n2. Typecheck.\n3. Unit\u002Fintegration tests around migrated functions.\n4. Start the app with `INNGEST_DEV=1`.\n5. Run `npx inngest-cli@latest dev` and confirm function discovery.\n6. Send one representative event and inspect the run.\n\nIf local dev-server verification is not possible, state exactly which static\nchecks passed and what runtime verification remains.\n\n## Common Failure Messages\n\n- **\"A signing key is required to run in Cloud mode\"**: set `INNGEST_DEV=1` for\n  local development or configure `INNGEST_SIGNING_KEY` for production.\n- **`Cls is not a constructor` on `\u002Fapi\u002Finngest`**: likely v3\n  `@inngest\u002Frealtime` middleware in a v4 app. Remove the package and migrate to\n  native realtime.\n- **`step.invoke` fails with string function ID**: replace strings with\n  imported function references or `referenceFunction()`.\n- **Type errors around schemas**: replace `EventSchemas` with `eventType()` and\n  `staticSchema()`.\n- **Unexpected `Promise.race` behavior**: use `group.parallel()` for first-winner\n  step races or disable optimized parallelism only when necessary.\n\n## Anti-Patterns\n\n- Mixing v3 realtime middleware with `inngest@4`.\n- Passing `signingKey`, `baseUrl`, or `signingKeyFallback` to `serve()`.\n- Moving event trigger syntax but forgetting cron\u002Finvoke-triggered functions.\n- Replacing `EventSchemas` with untyped string events everywhere.\n- Hardcoding `isDev: true` in production-bound source.\n- Leaving string IDs in `step.invoke`.\n- Skipping typecheck after mechanical migration.\n",{"data":42,"body":43},{"name":4,"description":6},{"type":44,"children":45},"root",[46,55,61,74,79,86,91,154,167,173,178,269,274,341,346,356,362,462,468,473,516,565,570,610,630,636,679,1178,1183,1188,1281,1287,1292,1609,1614,1760,1772,1778,1790,2283,2288,2594,2607,2612,2624,2860,2865,2973,2979,2999,3004,3048,3053,3099,3133,3139,3144,3171,3183,3320,3325,3331,3336,3382,3388,3393,3441,3446,3452,3581,3587,3678],{"type":47,"tag":48,"props":49,"children":51},"element","h1",{"id":50},"inngest-v3-to-v4-migration",[52],{"type":53,"value":54},"text","Inngest v3 to v4 Migration",{"type":47,"tag":56,"props":57,"children":58},"p",{},[59],{"type":53,"value":60},"Use this skill when the user asks to upgrade Inngest, fix v3\u002Fv4 errors, migrate\nrealtime, or clean up a codebase that has mixed SDK patterns.",{"type":47,"tag":56,"props":62,"children":63},{},[64,66],{"type":53,"value":65},"Primary reference:\n",{"type":47,"tag":67,"props":68,"children":72},"a",{"href":69,"rel":70},"https:\u002F\u002Fwww.inngest.com\u002Fdocs\u002Freference\u002Ftypescript\u002Fv4\u002Fmigrations\u002Fv3-to-v4",[71],"nofollow",[73],{"type":53,"value":69},{"type":47,"tag":56,"props":75,"children":76},{},[77],{"type":53,"value":78},"This skill is agent-first: detect actual usage first, make mechanical API\nchanges in a controlled order, then typecheck and run focused tests.",{"type":47,"tag":80,"props":81,"children":83},"h2",{"id":82},"when-to-trigger",[84],{"type":53,"value":85},"When to Trigger",{"type":47,"tag":56,"props":87,"children":88},{},[89],{"type":53,"value":90},"Use this skill for requests like:",{"type":47,"tag":92,"props":93,"children":94},"ul",{},[95,101,106,111,125,144,149],{"type":47,"tag":96,"props":97,"children":98},"li",{},[99],{"type":53,"value":100},"\"Upgrade Inngest from v3 to v4\"",{"type":47,"tag":96,"props":102,"children":103},{},[104],{"type":53,"value":105},"\"Fix our Inngest v4 migration\"",{"type":47,"tag":96,"props":107,"children":108},{},[109],{"type":53,"value":110},"\"We're getting signing key required \u002F cloud mode errors after upgrading\"",{"type":47,"tag":96,"props":112,"children":113},{},[114,116,123],{"type":53,"value":115},"\"",{"type":47,"tag":117,"props":118,"children":120},"code",{"className":119},[],[121],{"type":53,"value":122},"step.invoke",{"type":53,"value":124}," with a string function ID stopped working\"",{"type":47,"tag":96,"props":126,"children":127},{},[128,129,135,137,143],{"type":53,"value":115},{"type":47,"tag":117,"props":130,"children":132},{"className":131},[],[133],{"type":53,"value":134},"@inngest\u002Frealtime",{"type":53,"value":136}," broke after installing ",{"type":47,"tag":117,"props":138,"children":140},{"className":139},[],[141],{"type":53,"value":142},"inngest@4",{"type":53,"value":115},{"type":47,"tag":96,"props":145,"children":146},{},[147],{"type":53,"value":148},"\"Move from EventSchemas to eventType\"",{"type":47,"tag":96,"props":150,"children":151},{},[152],{"type":53,"value":153},"\"Make this existing Inngest repo v4-compatible\"",{"type":47,"tag":56,"props":155,"children":156},{},[157,159,165],{"type":53,"value":158},"If the user asks for a broad codebase reliability audit first, use\n",{"type":47,"tag":117,"props":160,"children":162},{"className":161},[],[163],{"type":53,"value":164},"inngest-brownfield-audit",{"type":53,"value":166}," to choose scope, then return here for the v4 changes.",{"type":47,"tag":80,"props":168,"children":170},{"id":169},"migration-scan",[171],{"type":53,"value":172},"Migration Scan",{"type":47,"tag":56,"props":174,"children":175},{},[176],{"type":53,"value":177},"Start by locating all Inngest surfaces:",{"type":47,"tag":179,"props":180,"children":185},"pre",{"className":181,"code":182,"language":183,"meta":184,"style":184},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","rg -n '\"inngest\"|\"@inngest\u002Frealtime\"|\"@inngest\u002Fagent-kit\"' package.json **\u002Fpackage.json\nrg -n 'new Inngest|EventSchemas|eventType|staticSchema|createFunction\\\\(|serve\\\\(|connect\\\\(|step\\\\.invoke|referenceFunction|@inngest\u002Frealtime|realtimeMiddleware|useInngestSubscription|serveHost|rewriteGatewayEndpoint|logLevel|streaming:|signingKey|signingKeyFallback|baseUrl|INNGEST_DEV|INNGEST_SIGNING_KEY' .\n","bash","",[186],{"type":47,"tag":117,"props":187,"children":188},{"__ignoreMap":184},[189,239],{"type":47,"tag":190,"props":191,"children":194},"span",{"class":192,"line":193},"line",1,[195,201,207,213,218,223,228,234],{"type":47,"tag":190,"props":196,"children":198},{"style":197},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[199],{"type":53,"value":200},"rg",{"type":47,"tag":190,"props":202,"children":204},{"style":203},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[205],{"type":53,"value":206}," -n",{"type":47,"tag":190,"props":208,"children":210},{"style":209},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[211],{"type":53,"value":212}," '",{"type":47,"tag":190,"props":214,"children":215},{"style":203},[216],{"type":53,"value":217},"\"inngest\"|\"@inngest\u002Frealtime\"|\"@inngest\u002Fagent-kit\"",{"type":47,"tag":190,"props":219,"children":220},{"style":209},[221],{"type":53,"value":222},"'",{"type":47,"tag":190,"props":224,"children":225},{"style":203},[226],{"type":53,"value":227}," package.json",{"type":47,"tag":190,"props":229,"children":231},{"style":230},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[232],{"type":53,"value":233}," **",{"type":47,"tag":190,"props":235,"children":236},{"style":203},[237],{"type":53,"value":238},"\u002Fpackage.json\n",{"type":47,"tag":190,"props":240,"children":242},{"class":192,"line":241},2,[243,247,251,255,260,264],{"type":47,"tag":190,"props":244,"children":245},{"style":197},[246],{"type":53,"value":200},{"type":47,"tag":190,"props":248,"children":249},{"style":203},[250],{"type":53,"value":206},{"type":47,"tag":190,"props":252,"children":253},{"style":209},[254],{"type":53,"value":212},{"type":47,"tag":190,"props":256,"children":257},{"style":203},[258],{"type":53,"value":259},"new Inngest|EventSchemas|eventType|staticSchema|createFunction\\\\(|serve\\\\(|connect\\\\(|step\\\\.invoke|referenceFunction|@inngest\u002Frealtime|realtimeMiddleware|useInngestSubscription|serveHost|rewriteGatewayEndpoint|logLevel|streaming:|signingKey|signingKeyFallback|baseUrl|INNGEST_DEV|INNGEST_SIGNING_KEY",{"type":47,"tag":190,"props":261,"children":262},{"style":209},[263],{"type":53,"value":222},{"type":47,"tag":190,"props":265,"children":266},{"style":203},[267],{"type":53,"value":268}," .\n",{"type":47,"tag":56,"props":270,"children":271},{},[272],{"type":53,"value":273},"Then classify the repo:",{"type":47,"tag":92,"props":275,"children":276},{},[277,296,306,316],{"type":47,"tag":96,"props":278,"children":279},{},[280,286,288,294],{"type":47,"tag":281,"props":282,"children":283},"strong",{},[284],{"type":53,"value":285},"No Inngest yet:",{"type":53,"value":287}," use ",{"type":47,"tag":117,"props":289,"children":291},{"className":290},[],[292],{"type":53,"value":293},"inngest-setup",{"type":53,"value":295},", not this migration skill.",{"type":47,"tag":96,"props":297,"children":298},{},[299,304],{"type":47,"tag":281,"props":300,"children":301},{},[302],{"type":53,"value":303},"v3 only:",{"type":53,"value":305}," migrate the SDK and all breaking changes together.",{"type":47,"tag":96,"props":307,"children":308},{},[309,314],{"type":47,"tag":281,"props":310,"children":311},{},[312],{"type":53,"value":313},"mixed v3\u002Fv4:",{"type":53,"value":315}," prioritize removing broken v3 APIs from v4 code.",{"type":47,"tag":96,"props":317,"children":318},{},[319,324,326,332,334,339],{"type":47,"tag":281,"props":320,"children":321},{},[322],{"type":53,"value":323},"v4 mostly done:",{"type":53,"value":325}," focus on missed runtime gotchas like local dev mode,\nserverless ",{"type":47,"tag":117,"props":327,"children":329},{"className":328},[],[330],{"type":53,"value":331},"maxRuntime",{"type":53,"value":333},", realtime package imports, and string ",{"type":47,"tag":117,"props":335,"children":337},{"className":336},[],[338],{"type":53,"value":122},{"type":53,"value":340},".",{"type":47,"tag":56,"props":342,"children":343},{},[344],{"type":53,"value":345},"Before editing, record:",{"type":47,"tag":179,"props":347,"children":351},{"className":348,"code":350,"language":53,"meta":184},[349],"language-text","Inngest migration scan:\n- Current package versions:\n- Client files:\n- Serve\u002Fconnect entrypoints:\n- Functions using old trigger syntax:\n- EventSchemas usage:\n- Realtime v3 package usage:\n- step.invoke string IDs:\n- Serverless runtime constraints:\n- Tests\u002Fchecks available:\n",[352],{"type":47,"tag":117,"props":353,"children":354},{"__ignoreMap":184},[355],{"type":53,"value":350},{"type":47,"tag":80,"props":357,"children":359},{"id":358},"upgrade-order",[360],{"type":53,"value":361},"Upgrade Order",{"type":47,"tag":363,"props":364,"children":365},"ol",{},[366,371,376,381,394,422,435,447,452,457],{"type":47,"tag":96,"props":367,"children":368},{},[369],{"type":53,"value":370},"Update package versions.",{"type":47,"tag":96,"props":372,"children":373},{},[374],{"type":53,"value":375},"Fix client construction and local\u002Fprod mode.",{"type":47,"tag":96,"props":377,"children":378},{},[379],{"type":53,"value":380},"Move serve options to the client.",{"type":47,"tag":96,"props":382,"children":383},{},[384,386,392],{"type":53,"value":385},"Move triggers into ",{"type":47,"tag":117,"props":387,"children":389},{"className":388},[],[390],{"type":53,"value":391},"createFunction",{"type":53,"value":393}," options.",{"type":47,"tag":96,"props":395,"children":396},{},[397,399,405,407,413,415,421],{"type":53,"value":398},"Replace ",{"type":47,"tag":117,"props":400,"children":402},{"className":401},[],[403],{"type":53,"value":404},"EventSchemas",{"type":53,"value":406}," with ",{"type":47,"tag":117,"props":408,"children":410},{"className":409},[],[411],{"type":53,"value":412},"eventType()",{"type":53,"value":414}," \u002F ",{"type":47,"tag":117,"props":416,"children":418},{"className":417},[],[419],{"type":53,"value":420},"staticSchema()",{"type":53,"value":340},{"type":47,"tag":96,"props":423,"children":424},{},[425,427,433],{"type":53,"value":426},"Rewrite ",{"type":47,"tag":117,"props":428,"children":430},{"className":429},[],[431],{"type":53,"value":432},"step.invoke()",{"type":53,"value":434}," string IDs.",{"type":47,"tag":96,"props":436,"children":437},{},[438,440,445],{"type":53,"value":439},"Migrate realtime from ",{"type":47,"tag":117,"props":441,"children":443},{"className":442},[],[444],{"type":53,"value":134},{"type":53,"value":446}," to v4 native APIs.",{"type":47,"tag":96,"props":448,"children":449},{},[450],{"type":53,"value":451},"Update middleware and logging.",{"type":47,"tag":96,"props":453,"children":454},{},[455],{"type":53,"value":456},"Configure checkpointing\u002Fserverless runtime.",{"type":47,"tag":96,"props":458,"children":459},{},[460],{"type":53,"value":461},"Typecheck, run tests, and optionally sync with the dev server.",{"type":47,"tag":80,"props":463,"children":465},{"id":464},"package-and-environment",[466],{"type":53,"value":467},"Package and Environment",{"type":47,"tag":56,"props":469,"children":470},{},[471],{"type":53,"value":472},"Install the latest v4 SDK:",{"type":47,"tag":179,"props":474,"children":476},{"className":181,"code":475,"language":183,"meta":184,"style":184},"npm install inngest@latest\n# or pnpm add inngest@latest\n# or yarn add inngest@latest\n",[477],{"type":47,"tag":117,"props":478,"children":479},{"__ignoreMap":184},[480,498,507],{"type":47,"tag":190,"props":481,"children":482},{"class":192,"line":193},[483,488,493],{"type":47,"tag":190,"props":484,"children":485},{"style":197},[486],{"type":53,"value":487},"npm",{"type":47,"tag":190,"props":489,"children":490},{"style":203},[491],{"type":53,"value":492}," install",{"type":47,"tag":190,"props":494,"children":495},{"style":203},[496],{"type":53,"value":497}," inngest@latest\n",{"type":47,"tag":190,"props":499,"children":500},{"class":192,"line":241},[501],{"type":47,"tag":190,"props":502,"children":504},{"style":503},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[505],{"type":53,"value":506},"# or pnpm add inngest@latest\n",{"type":47,"tag":190,"props":508,"children":510},{"class":192,"line":509},3,[511],{"type":47,"tag":190,"props":512,"children":513},{"style":503},[514],{"type":53,"value":515},"# or yarn add inngest@latest\n",{"type":47,"tag":56,"props":517,"children":518},{},[519,521,526,528,533,535,541,543,549,551,557,558,564],{"type":53,"value":520},"If the repo uses v3 realtime, remove ",{"type":47,"tag":117,"props":522,"children":524},{"className":523},[],[525],{"type":53,"value":134},{"type":53,"value":527},"; v4 realtime lives in\nthe ",{"type":47,"tag":117,"props":529,"children":531},{"className":530},[],[532],{"type":53,"value":8},{"type":53,"value":534}," package and subpaths such as ",{"type":47,"tag":117,"props":536,"children":538},{"className":537},[],[539],{"type":53,"value":540},"inngest\u002Frealtime",{"type":53,"value":542},", ",{"type":47,"tag":117,"props":544,"children":546},{"className":545},[],[547],{"type":53,"value":548},"inngest\u002Freact",{"type":53,"value":550},",\nand native ",{"type":47,"tag":117,"props":552,"children":554},{"className":553},[],[555],{"type":53,"value":556},"step.realtime",{"type":53,"value":414},{"type":47,"tag":117,"props":559,"children":561},{"className":560},[],[562],{"type":53,"value":563},"inngest.realtime",{"type":53,"value":340},{"type":47,"tag":56,"props":566,"children":567},{},[568],{"type":53,"value":569},"v4 defaults to Cloud mode. For local development, use an env var:",{"type":47,"tag":179,"props":571,"children":573},{"className":181,"code":572,"language":183,"meta":184,"style":184},"INNGEST_DEV=1 npm run dev\n",[574],{"type":47,"tag":117,"props":575,"children":576},{"__ignoreMap":184},[577],{"type":47,"tag":190,"props":578,"children":579},{"class":192,"line":193},[580,585,590,595,600,605],{"type":47,"tag":190,"props":581,"children":582},{"style":230},[583],{"type":53,"value":584},"INNGEST_DEV",{"type":47,"tag":190,"props":586,"children":587},{"style":209},[588],{"type":53,"value":589},"=",{"type":47,"tag":190,"props":591,"children":592},{"style":203},[593],{"type":53,"value":594},"1",{"type":47,"tag":190,"props":596,"children":597},{"style":197},[598],{"type":53,"value":599}," npm",{"type":47,"tag":190,"props":601,"children":602},{"style":203},[603],{"type":53,"value":604}," run",{"type":47,"tag":190,"props":606,"children":607},{"style":203},[608],{"type":53,"value":609}," dev\n",{"type":47,"tag":56,"props":611,"children":612},{},[613,615,621,623,629],{"type":53,"value":614},"Do not hardcode ",{"type":47,"tag":117,"props":616,"children":618},{"className":617},[],[619],{"type":53,"value":620},"isDev: true",{"type":53,"value":622}," in source unless the repo's existing environment\npattern clearly scopes it to local-only code. Production should use\n",{"type":47,"tag":117,"props":624,"children":626},{"className":625},[],[627],{"type":53,"value":628},"INNGEST_SIGNING_KEY",{"type":53,"value":340},{"type":47,"tag":80,"props":631,"children":633},{"id":632},"client-and-serve-options",[634],{"type":53,"value":635},"Client and Serve Options",{"type":47,"tag":56,"props":637,"children":638},{},[639,641,647,648,654,656,662,664,670,672,678],{"type":53,"value":640},"In v4, options such as ",{"type":47,"tag":117,"props":642,"children":644},{"className":643},[],[645],{"type":53,"value":646},"signingKey",{"type":53,"value":542},{"type":47,"tag":117,"props":649,"children":651},{"className":650},[],[652],{"type":53,"value":653},"signingKeyFallback",{"type":53,"value":655},", and ",{"type":47,"tag":117,"props":657,"children":659},{"className":658},[],[660],{"type":53,"value":661},"baseUrl",{"type":53,"value":663}," belong\non ",{"type":47,"tag":117,"props":665,"children":667},{"className":666},[],[668],{"type":53,"value":669},"new Inngest(...)",{"type":53,"value":671},", not on ",{"type":47,"tag":117,"props":673,"children":675},{"className":674},[],[676],{"type":53,"value":677},"serve(...)",{"type":53,"value":340},{"type":47,"tag":179,"props":680,"children":683},{"className":681,"code":682,"language":16,"meta":184,"style":184},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F Old v3\napp.use(\n  \"\u002Fapi\u002Finngest\",\n  serve({\n    client: inngest,\n    functions,\n    signingKey: process.env.INNGEST_SIGNING_KEY,\n    baseUrl: process.env.INNGEST_BASE_URL,\n  })\n);\n\n\u002F\u002F New v4\nexport const inngest = new Inngest({\n  id: \"my-app\",\n  signingKey: process.env.INNGEST_SIGNING_KEY,\n  baseUrl: process.env.INNGEST_BASE_URL,\n});\n\napp.use(\"\u002Fapi\u002Finngest\", serve({ client: inngest, functions }));\n",[684],{"type":47,"tag":117,"props":685,"children":686},{"__ignoreMap":184},[687,695,718,740,759,782,795,834,872,886,900,910,919,962,993,1030,1067,1084,1092],{"type":47,"tag":190,"props":688,"children":689},{"class":192,"line":193},[690],{"type":47,"tag":190,"props":691,"children":692},{"style":503},[693],{"type":53,"value":694},"\u002F\u002F Old v3\n",{"type":47,"tag":190,"props":696,"children":697},{"class":192,"line":241},[698,703,707,713],{"type":47,"tag":190,"props":699,"children":700},{"style":230},[701],{"type":53,"value":702},"app",{"type":47,"tag":190,"props":704,"children":705},{"style":209},[706],{"type":53,"value":340},{"type":47,"tag":190,"props":708,"children":710},{"style":709},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[711],{"type":53,"value":712},"use",{"type":47,"tag":190,"props":714,"children":715},{"style":230},[716],{"type":53,"value":717},"(\n",{"type":47,"tag":190,"props":719,"children":720},{"class":192,"line":509},[721,726,731,735],{"type":47,"tag":190,"props":722,"children":723},{"style":209},[724],{"type":53,"value":725},"  \"",{"type":47,"tag":190,"props":727,"children":728},{"style":203},[729],{"type":53,"value":730},"\u002Fapi\u002Finngest",{"type":47,"tag":190,"props":732,"children":733},{"style":209},[734],{"type":53,"value":115},{"type":47,"tag":190,"props":736,"children":737},{"style":209},[738],{"type":53,"value":739},",\n",{"type":47,"tag":190,"props":741,"children":743},{"class":192,"line":742},4,[744,749,754],{"type":47,"tag":190,"props":745,"children":746},{"style":709},[747],{"type":53,"value":748},"  serve",{"type":47,"tag":190,"props":750,"children":751},{"style":230},[752],{"type":53,"value":753},"(",{"type":47,"tag":190,"props":755,"children":756},{"style":209},[757],{"type":53,"value":758},"{\n",{"type":47,"tag":190,"props":760,"children":761},{"class":192,"line":27},[762,768,773,778],{"type":47,"tag":190,"props":763,"children":765},{"style":764},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[766],{"type":53,"value":767},"    client",{"type":47,"tag":190,"props":769,"children":770},{"style":209},[771],{"type":53,"value":772},":",{"type":47,"tag":190,"props":774,"children":775},{"style":230},[776],{"type":53,"value":777}," inngest",{"type":47,"tag":190,"props":779,"children":780},{"style":209},[781],{"type":53,"value":739},{"type":47,"tag":190,"props":783,"children":785},{"class":192,"line":784},6,[786,791],{"type":47,"tag":190,"props":787,"children":788},{"style":230},[789],{"type":53,"value":790},"    functions",{"type":47,"tag":190,"props":792,"children":793},{"style":209},[794],{"type":53,"value":739},{"type":47,"tag":190,"props":796,"children":798},{"class":192,"line":797},7,[799,804,808,813,817,822,826,830],{"type":47,"tag":190,"props":800,"children":801},{"style":764},[802],{"type":53,"value":803},"    signingKey",{"type":47,"tag":190,"props":805,"children":806},{"style":209},[807],{"type":53,"value":772},{"type":47,"tag":190,"props":809,"children":810},{"style":230},[811],{"type":53,"value":812}," process",{"type":47,"tag":190,"props":814,"children":815},{"style":209},[816],{"type":53,"value":340},{"type":47,"tag":190,"props":818,"children":819},{"style":230},[820],{"type":53,"value":821},"env",{"type":47,"tag":190,"props":823,"children":824},{"style":209},[825],{"type":53,"value":340},{"type":47,"tag":190,"props":827,"children":828},{"style":230},[829],{"type":53,"value":628},{"type":47,"tag":190,"props":831,"children":832},{"style":209},[833],{"type":53,"value":739},{"type":47,"tag":190,"props":835,"children":837},{"class":192,"line":836},8,[838,843,847,851,855,859,863,868],{"type":47,"tag":190,"props":839,"children":840},{"style":764},[841],{"type":53,"value":842},"    baseUrl",{"type":47,"tag":190,"props":844,"children":845},{"style":209},[846],{"type":53,"value":772},{"type":47,"tag":190,"props":848,"children":849},{"style":230},[850],{"type":53,"value":812},{"type":47,"tag":190,"props":852,"children":853},{"style":209},[854],{"type":53,"value":340},{"type":47,"tag":190,"props":856,"children":857},{"style":230},[858],{"type":53,"value":821},{"type":47,"tag":190,"props":860,"children":861},{"style":209},[862],{"type":53,"value":340},{"type":47,"tag":190,"props":864,"children":865},{"style":230},[866],{"type":53,"value":867},"INNGEST_BASE_URL",{"type":47,"tag":190,"props":869,"children":870},{"style":209},[871],{"type":53,"value":739},{"type":47,"tag":190,"props":873,"children":875},{"class":192,"line":874},9,[876,881],{"type":47,"tag":190,"props":877,"children":878},{"style":209},[879],{"type":53,"value":880},"  }",{"type":47,"tag":190,"props":882,"children":883},{"style":230},[884],{"type":53,"value":885},")\n",{"type":47,"tag":190,"props":887,"children":889},{"class":192,"line":888},10,[890,895],{"type":47,"tag":190,"props":891,"children":892},{"style":230},[893],{"type":53,"value":894},")",{"type":47,"tag":190,"props":896,"children":897},{"style":209},[898],{"type":53,"value":899},";\n",{"type":47,"tag":190,"props":901,"children":903},{"class":192,"line":902},11,[904],{"type":47,"tag":190,"props":905,"children":907},{"emptyLinePlaceholder":906},true,[908],{"type":53,"value":909},"\n",{"type":47,"tag":190,"props":911,"children":913},{"class":192,"line":912},12,[914],{"type":47,"tag":190,"props":915,"children":916},{"style":503},[917],{"type":53,"value":918},"\u002F\u002F New v4\n",{"type":47,"tag":190,"props":920,"children":922},{"class":192,"line":921},13,[923,929,935,940,944,949,954,958],{"type":47,"tag":190,"props":924,"children":926},{"style":925},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[927],{"type":53,"value":928},"export",{"type":47,"tag":190,"props":930,"children":932},{"style":931},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[933],{"type":53,"value":934}," const",{"type":47,"tag":190,"props":936,"children":937},{"style":230},[938],{"type":53,"value":939}," inngest ",{"type":47,"tag":190,"props":941,"children":942},{"style":209},[943],{"type":53,"value":589},{"type":47,"tag":190,"props":945,"children":946},{"style":209},[947],{"type":53,"value":948}," new",{"type":47,"tag":190,"props":950,"children":951},{"style":709},[952],{"type":53,"value":953}," Inngest",{"type":47,"tag":190,"props":955,"children":956},{"style":230},[957],{"type":53,"value":753},{"type":47,"tag":190,"props":959,"children":960},{"style":209},[961],{"type":53,"value":758},{"type":47,"tag":190,"props":963,"children":965},{"class":192,"line":964},14,[966,971,975,980,985,989],{"type":47,"tag":190,"props":967,"children":968},{"style":764},[969],{"type":53,"value":970},"  id",{"type":47,"tag":190,"props":972,"children":973},{"style":209},[974],{"type":53,"value":772},{"type":47,"tag":190,"props":976,"children":977},{"style":209},[978],{"type":53,"value":979}," \"",{"type":47,"tag":190,"props":981,"children":982},{"style":203},[983],{"type":53,"value":984},"my-app",{"type":47,"tag":190,"props":986,"children":987},{"style":209},[988],{"type":53,"value":115},{"type":47,"tag":190,"props":990,"children":991},{"style":209},[992],{"type":53,"value":739},{"type":47,"tag":190,"props":994,"children":996},{"class":192,"line":995},15,[997,1002,1006,1010,1014,1018,1022,1026],{"type":47,"tag":190,"props":998,"children":999},{"style":764},[1000],{"type":53,"value":1001},"  signingKey",{"type":47,"tag":190,"props":1003,"children":1004},{"style":209},[1005],{"type":53,"value":772},{"type":47,"tag":190,"props":1007,"children":1008},{"style":230},[1009],{"type":53,"value":812},{"type":47,"tag":190,"props":1011,"children":1012},{"style":209},[1013],{"type":53,"value":340},{"type":47,"tag":190,"props":1015,"children":1016},{"style":230},[1017],{"type":53,"value":821},{"type":47,"tag":190,"props":1019,"children":1020},{"style":209},[1021],{"type":53,"value":340},{"type":47,"tag":190,"props":1023,"children":1024},{"style":230},[1025],{"type":53,"value":628},{"type":47,"tag":190,"props":1027,"children":1028},{"style":209},[1029],{"type":53,"value":739},{"type":47,"tag":190,"props":1031,"children":1033},{"class":192,"line":1032},16,[1034,1039,1043,1047,1051,1055,1059,1063],{"type":47,"tag":190,"props":1035,"children":1036},{"style":764},[1037],{"type":53,"value":1038},"  baseUrl",{"type":47,"tag":190,"props":1040,"children":1041},{"style":209},[1042],{"type":53,"value":772},{"type":47,"tag":190,"props":1044,"children":1045},{"style":230},[1046],{"type":53,"value":812},{"type":47,"tag":190,"props":1048,"children":1049},{"style":209},[1050],{"type":53,"value":340},{"type":47,"tag":190,"props":1052,"children":1053},{"style":230},[1054],{"type":53,"value":821},{"type":47,"tag":190,"props":1056,"children":1057},{"style":209},[1058],{"type":53,"value":340},{"type":47,"tag":190,"props":1060,"children":1061},{"style":230},[1062],{"type":53,"value":867},{"type":47,"tag":190,"props":1064,"children":1065},{"style":209},[1066],{"type":53,"value":739},{"type":47,"tag":190,"props":1068,"children":1070},{"class":192,"line":1069},17,[1071,1076,1080],{"type":47,"tag":190,"props":1072,"children":1073},{"style":209},[1074],{"type":53,"value":1075},"}",{"type":47,"tag":190,"props":1077,"children":1078},{"style":230},[1079],{"type":53,"value":894},{"type":47,"tag":190,"props":1081,"children":1082},{"style":209},[1083],{"type":53,"value":899},{"type":47,"tag":190,"props":1085,"children":1087},{"class":192,"line":1086},18,[1088],{"type":47,"tag":190,"props":1089,"children":1090},{"emptyLinePlaceholder":906},[1091],{"type":53,"value":909},{"type":47,"tag":190,"props":1093,"children":1095},{"class":192,"line":1094},19,[1096,1100,1104,1108,1112,1116,1120,1124,1129,1134,1138,1143,1148,1152,1156,1160,1165,1169,1174],{"type":47,"tag":190,"props":1097,"children":1098},{"style":230},[1099],{"type":53,"value":702},{"type":47,"tag":190,"props":1101,"children":1102},{"style":209},[1103],{"type":53,"value":340},{"type":47,"tag":190,"props":1105,"children":1106},{"style":709},[1107],{"type":53,"value":712},{"type":47,"tag":190,"props":1109,"children":1110},{"style":230},[1111],{"type":53,"value":753},{"type":47,"tag":190,"props":1113,"children":1114},{"style":209},[1115],{"type":53,"value":115},{"type":47,"tag":190,"props":1117,"children":1118},{"style":203},[1119],{"type":53,"value":730},{"type":47,"tag":190,"props":1121,"children":1122},{"style":209},[1123],{"type":53,"value":115},{"type":47,"tag":190,"props":1125,"children":1126},{"style":209},[1127],{"type":53,"value":1128},",",{"type":47,"tag":190,"props":1130,"children":1131},{"style":709},[1132],{"type":53,"value":1133}," serve",{"type":47,"tag":190,"props":1135,"children":1136},{"style":230},[1137],{"type":53,"value":753},{"type":47,"tag":190,"props":1139,"children":1140},{"style":209},[1141],{"type":53,"value":1142},"{",{"type":47,"tag":190,"props":1144,"children":1145},{"style":764},[1146],{"type":53,"value":1147}," client",{"type":47,"tag":190,"props":1149,"children":1150},{"style":209},[1151],{"type":53,"value":772},{"type":47,"tag":190,"props":1153,"children":1154},{"style":230},[1155],{"type":53,"value":777},{"type":47,"tag":190,"props":1157,"children":1158},{"style":209},[1159],{"type":53,"value":1128},{"type":47,"tag":190,"props":1161,"children":1162},{"style":230},[1163],{"type":53,"value":1164}," functions ",{"type":47,"tag":190,"props":1166,"children":1167},{"style":209},[1168],{"type":53,"value":1075},{"type":47,"tag":190,"props":1170,"children":1171},{"style":230},[1172],{"type":53,"value":1173},"))",{"type":47,"tag":190,"props":1175,"children":1176},{"style":209},[1177],{"type":53,"value":899},{"type":47,"tag":56,"props":1179,"children":1180},{},[1181],{"type":53,"value":1182},"If the repo already relies on supported environment variables and does not pass\nserve options explicitly, no code change may be required for those keys.",{"type":47,"tag":56,"props":1184,"children":1185},{},[1186],{"type":53,"value":1187},"Other renames:",{"type":47,"tag":92,"props":1189,"children":1190},{},[1191,1208,1224,1239,1256],{"type":47,"tag":96,"props":1192,"children":1193},{},[1194,1200,1202],{"type":47,"tag":117,"props":1195,"children":1197},{"className":1196},[],[1198],{"type":53,"value":1199},"serveHost",{"type":53,"value":1201}," -> ",{"type":47,"tag":117,"props":1203,"children":1205},{"className":1204},[],[1206],{"type":53,"value":1207},"serveOrigin",{"type":47,"tag":96,"props":1209,"children":1210},{},[1211,1217,1218],{"type":47,"tag":117,"props":1212,"children":1214},{"className":1213},[],[1215],{"type":53,"value":1216},"streaming: \"force\"",{"type":53,"value":1201},{"type":47,"tag":117,"props":1219,"children":1221},{"className":1220},[],[1222],{"type":53,"value":1223},"streaming: true",{"type":47,"tag":96,"props":1225,"children":1226},{},[1227,1233,1234],{"type":47,"tag":117,"props":1228,"children":1230},{"className":1229},[],[1231],{"type":53,"value":1232},"streaming: \"allow\"",{"type":53,"value":1201},{"type":47,"tag":117,"props":1235,"children":1237},{"className":1236},[],[1238],{"type":53,"value":1223},{"type":47,"tag":96,"props":1240,"children":1241},{},[1242,1248,1250],{"type":47,"tag":117,"props":1243,"children":1245},{"className":1244},[],[1246],{"type":53,"value":1247},"streaming: false",{"type":53,"value":1249}," stays ",{"type":47,"tag":117,"props":1251,"children":1253},{"className":1252},[],[1254],{"type":53,"value":1255},"false",{"type":47,"tag":96,"props":1257,"children":1258},{},[1259,1265,1267,1273,1275],{"type":47,"tag":117,"props":1260,"children":1262},{"className":1261},[],[1263],{"type":53,"value":1264},"logLevel",{"type":53,"value":1266}," is removed; pass a ",{"type":47,"tag":117,"props":1268,"children":1270},{"className":1269},[],[1271],{"type":53,"value":1272},"logger",{"type":53,"value":1274}," such as ",{"type":47,"tag":117,"props":1276,"children":1278},{"className":1277},[],[1279],{"type":53,"value":1280},"new ConsoleLogger({ level })",{"type":47,"tag":80,"props":1282,"children":1284},{"id":1283},"createfunction-triggers",[1285],{"type":53,"value":1286},"createFunction Triggers",{"type":47,"tag":56,"props":1288,"children":1289},{},[1290],{"type":53,"value":1291},"Triggers move into the first argument's options object.",{"type":47,"tag":179,"props":1293,"children":1295},{"className":681,"code":1294,"language":16,"meta":184,"style":184},"\u002F\u002F Old v3\ninngest.createFunction(\n  { id: \"send-welcome\" },\n  { event: \"user\u002Fcreated\" },\n  async ({ event, step }) => {}\n);\n\n\u002F\u002F New v4\ninngest.createFunction(\n  { id: \"send-welcome\", triggers: [{ event: \"user\u002Fcreated\" }] },\n  async ({ event, step }) => {}\n);\n",[1296],{"type":47,"tag":117,"props":1297,"children":1298},{"__ignoreMap":184},[1299,1306,1325,1360,1393,1435,1446,1453,1460,1479,1563,1598],{"type":47,"tag":190,"props":1300,"children":1301},{"class":192,"line":193},[1302],{"type":47,"tag":190,"props":1303,"children":1304},{"style":503},[1305],{"type":53,"value":694},{"type":47,"tag":190,"props":1307,"children":1308},{"class":192,"line":241},[1309,1313,1317,1321],{"type":47,"tag":190,"props":1310,"children":1311},{"style":230},[1312],{"type":53,"value":8},{"type":47,"tag":190,"props":1314,"children":1315},{"style":209},[1316],{"type":53,"value":340},{"type":47,"tag":190,"props":1318,"children":1319},{"style":709},[1320],{"type":53,"value":391},{"type":47,"tag":190,"props":1322,"children":1323},{"style":230},[1324],{"type":53,"value":717},{"type":47,"tag":190,"props":1326,"children":1327},{"class":192,"line":509},[1328,1333,1338,1342,1346,1351,1355],{"type":47,"tag":190,"props":1329,"children":1330},{"style":209},[1331],{"type":53,"value":1332},"  {",{"type":47,"tag":190,"props":1334,"children":1335},{"style":764},[1336],{"type":53,"value":1337}," id",{"type":47,"tag":190,"props":1339,"children":1340},{"style":209},[1341],{"type":53,"value":772},{"type":47,"tag":190,"props":1343,"children":1344},{"style":209},[1345],{"type":53,"value":979},{"type":47,"tag":190,"props":1347,"children":1348},{"style":203},[1349],{"type":53,"value":1350},"send-welcome",{"type":47,"tag":190,"props":1352,"children":1353},{"style":209},[1354],{"type":53,"value":115},{"type":47,"tag":190,"props":1356,"children":1357},{"style":209},[1358],{"type":53,"value":1359}," },\n",{"type":47,"tag":190,"props":1361,"children":1362},{"class":192,"line":742},[1363,1367,1372,1376,1380,1385,1389],{"type":47,"tag":190,"props":1364,"children":1365},{"style":209},[1366],{"type":53,"value":1332},{"type":47,"tag":190,"props":1368,"children":1369},{"style":764},[1370],{"type":53,"value":1371}," event",{"type":47,"tag":190,"props":1373,"children":1374},{"style":209},[1375],{"type":53,"value":772},{"type":47,"tag":190,"props":1377,"children":1378},{"style":209},[1379],{"type":53,"value":979},{"type":47,"tag":190,"props":1381,"children":1382},{"style":203},[1383],{"type":53,"value":1384},"user\u002Fcreated",{"type":47,"tag":190,"props":1386,"children":1387},{"style":209},[1388],{"type":53,"value":115},{"type":47,"tag":190,"props":1390,"children":1391},{"style":209},[1392],{"type":53,"value":1359},{"type":47,"tag":190,"props":1394,"children":1395},{"class":192,"line":27},[1396,1401,1406,1411,1415,1420,1425,1430],{"type":47,"tag":190,"props":1397,"children":1398},{"style":931},[1399],{"type":53,"value":1400},"  async",{"type":47,"tag":190,"props":1402,"children":1403},{"style":209},[1404],{"type":53,"value":1405}," ({",{"type":47,"tag":190,"props":1407,"children":1409},{"style":1408},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[1410],{"type":53,"value":1371},{"type":47,"tag":190,"props":1412,"children":1413},{"style":209},[1414],{"type":53,"value":1128},{"type":47,"tag":190,"props":1416,"children":1417},{"style":1408},[1418],{"type":53,"value":1419}," step",{"type":47,"tag":190,"props":1421,"children":1422},{"style":209},[1423],{"type":53,"value":1424}," })",{"type":47,"tag":190,"props":1426,"children":1427},{"style":931},[1428],{"type":53,"value":1429}," =>",{"type":47,"tag":190,"props":1431,"children":1432},{"style":209},[1433],{"type":53,"value":1434}," {}\n",{"type":47,"tag":190,"props":1436,"children":1437},{"class":192,"line":784},[1438,1442],{"type":47,"tag":190,"props":1439,"children":1440},{"style":230},[1441],{"type":53,"value":894},{"type":47,"tag":190,"props":1443,"children":1444},{"style":209},[1445],{"type":53,"value":899},{"type":47,"tag":190,"props":1447,"children":1448},{"class":192,"line":797},[1449],{"type":47,"tag":190,"props":1450,"children":1451},{"emptyLinePlaceholder":906},[1452],{"type":53,"value":909},{"type":47,"tag":190,"props":1454,"children":1455},{"class":192,"line":836},[1456],{"type":47,"tag":190,"props":1457,"children":1458},{"style":503},[1459],{"type":53,"value":918},{"type":47,"tag":190,"props":1461,"children":1462},{"class":192,"line":874},[1463,1467,1471,1475],{"type":47,"tag":190,"props":1464,"children":1465},{"style":230},[1466],{"type":53,"value":8},{"type":47,"tag":190,"props":1468,"children":1469},{"style":209},[1470],{"type":53,"value":340},{"type":47,"tag":190,"props":1472,"children":1473},{"style":709},[1474],{"type":53,"value":391},{"type":47,"tag":190,"props":1476,"children":1477},{"style":230},[1478],{"type":53,"value":717},{"type":47,"tag":190,"props":1480,"children":1481},{"class":192,"line":888},[1482,1486,1490,1494,1498,1502,1506,1510,1515,1519,1524,1528,1532,1536,1540,1544,1548,1553,1558],{"type":47,"tag":190,"props":1483,"children":1484},{"style":209},[1485],{"type":53,"value":1332},{"type":47,"tag":190,"props":1487,"children":1488},{"style":764},[1489],{"type":53,"value":1337},{"type":47,"tag":190,"props":1491,"children":1492},{"style":209},[1493],{"type":53,"value":772},{"type":47,"tag":190,"props":1495,"children":1496},{"style":209},[1497],{"type":53,"value":979},{"type":47,"tag":190,"props":1499,"children":1500},{"style":203},[1501],{"type":53,"value":1350},{"type":47,"tag":190,"props":1503,"children":1504},{"style":209},[1505],{"type":53,"value":115},{"type":47,"tag":190,"props":1507,"children":1508},{"style":209},[1509],{"type":53,"value":1128},{"type":47,"tag":190,"props":1511,"children":1512},{"style":764},[1513],{"type":53,"value":1514}," triggers",{"type":47,"tag":190,"props":1516,"children":1517},{"style":209},[1518],{"type":53,"value":772},{"type":47,"tag":190,"props":1520,"children":1521},{"style":230},[1522],{"type":53,"value":1523}," [",{"type":47,"tag":190,"props":1525,"children":1526},{"style":209},[1527],{"type":53,"value":1142},{"type":47,"tag":190,"props":1529,"children":1530},{"style":764},[1531],{"type":53,"value":1371},{"type":47,"tag":190,"props":1533,"children":1534},{"style":209},[1535],{"type":53,"value":772},{"type":47,"tag":190,"props":1537,"children":1538},{"style":209},[1539],{"type":53,"value":979},{"type":47,"tag":190,"props":1541,"children":1542},{"style":203},[1543],{"type":53,"value":1384},{"type":47,"tag":190,"props":1545,"children":1546},{"style":209},[1547],{"type":53,"value":115},{"type":47,"tag":190,"props":1549,"children":1550},{"style":209},[1551],{"type":53,"value":1552}," }",{"type":47,"tag":190,"props":1554,"children":1555},{"style":230},[1556],{"type":53,"value":1557},"] ",{"type":47,"tag":190,"props":1559,"children":1560},{"style":209},[1561],{"type":53,"value":1562},"},\n",{"type":47,"tag":190,"props":1564,"children":1565},{"class":192,"line":902},[1566,1570,1574,1578,1582,1586,1590,1594],{"type":47,"tag":190,"props":1567,"children":1568},{"style":931},[1569],{"type":53,"value":1400},{"type":47,"tag":190,"props":1571,"children":1572},{"style":209},[1573],{"type":53,"value":1405},{"type":47,"tag":190,"props":1575,"children":1576},{"style":1408},[1577],{"type":53,"value":1371},{"type":47,"tag":190,"props":1579,"children":1580},{"style":209},[1581],{"type":53,"value":1128},{"type":47,"tag":190,"props":1583,"children":1584},{"style":1408},[1585],{"type":53,"value":1419},{"type":47,"tag":190,"props":1587,"children":1588},{"style":209},[1589],{"type":53,"value":1424},{"type":47,"tag":190,"props":1591,"children":1592},{"style":931},[1593],{"type":53,"value":1429},{"type":47,"tag":190,"props":1595,"children":1596},{"style":209},[1597],{"type":53,"value":1434},{"type":47,"tag":190,"props":1599,"children":1600},{"class":192,"line":912},[1601,1605],{"type":47,"tag":190,"props":1602,"children":1603},{"style":230},[1604],{"type":53,"value":894},{"type":47,"tag":190,"props":1606,"children":1607},{"style":209},[1608],{"type":53,"value":899},{"type":47,"tag":56,"props":1610,"children":1611},{},[1612],{"type":53,"value":1613},"Cron triggers move the same way:",{"type":47,"tag":179,"props":1615,"children":1617},{"className":681,"code":1616,"language":16,"meta":184,"style":184},"inngest.createFunction(\n  { id: \"nightly-sync\", triggers: [{ cron: \"0 2 * * *\" }] },\n  async ({ step }) => {}\n);\n",[1618],{"type":47,"tag":117,"props":1619,"children":1620},{"__ignoreMap":184},[1621,1640,1722,1749],{"type":47,"tag":190,"props":1622,"children":1623},{"class":192,"line":193},[1624,1628,1632,1636],{"type":47,"tag":190,"props":1625,"children":1626},{"style":230},[1627],{"type":53,"value":8},{"type":47,"tag":190,"props":1629,"children":1630},{"style":209},[1631],{"type":53,"value":340},{"type":47,"tag":190,"props":1633,"children":1634},{"style":709},[1635],{"type":53,"value":391},{"type":47,"tag":190,"props":1637,"children":1638},{"style":230},[1639],{"type":53,"value":717},{"type":47,"tag":190,"props":1641,"children":1642},{"class":192,"line":241},[1643,1647,1651,1655,1659,1664,1668,1672,1676,1680,1684,1688,1693,1697,1701,1706,1710,1714,1718],{"type":47,"tag":190,"props":1644,"children":1645},{"style":209},[1646],{"type":53,"value":1332},{"type":47,"tag":190,"props":1648,"children":1649},{"style":764},[1650],{"type":53,"value":1337},{"type":47,"tag":190,"props":1652,"children":1653},{"style":209},[1654],{"type":53,"value":772},{"type":47,"tag":190,"props":1656,"children":1657},{"style":209},[1658],{"type":53,"value":979},{"type":47,"tag":190,"props":1660,"children":1661},{"style":203},[1662],{"type":53,"value":1663},"nightly-sync",{"type":47,"tag":190,"props":1665,"children":1666},{"style":209},[1667],{"type":53,"value":115},{"type":47,"tag":190,"props":1669,"children":1670},{"style":209},[1671],{"type":53,"value":1128},{"type":47,"tag":190,"props":1673,"children":1674},{"style":764},[1675],{"type":53,"value":1514},{"type":47,"tag":190,"props":1677,"children":1678},{"style":209},[1679],{"type":53,"value":772},{"type":47,"tag":190,"props":1681,"children":1682},{"style":230},[1683],{"type":53,"value":1523},{"type":47,"tag":190,"props":1685,"children":1686},{"style":209},[1687],{"type":53,"value":1142},{"type":47,"tag":190,"props":1689,"children":1690},{"style":764},[1691],{"type":53,"value":1692}," cron",{"type":47,"tag":190,"props":1694,"children":1695},{"style":209},[1696],{"type":53,"value":772},{"type":47,"tag":190,"props":1698,"children":1699},{"style":209},[1700],{"type":53,"value":979},{"type":47,"tag":190,"props":1702,"children":1703},{"style":203},[1704],{"type":53,"value":1705},"0 2 * * *",{"type":47,"tag":190,"props":1707,"children":1708},{"style":209},[1709],{"type":53,"value":115},{"type":47,"tag":190,"props":1711,"children":1712},{"style":209},[1713],{"type":53,"value":1552},{"type":47,"tag":190,"props":1715,"children":1716},{"style":230},[1717],{"type":53,"value":1557},{"type":47,"tag":190,"props":1719,"children":1720},{"style":209},[1721],{"type":53,"value":1562},{"type":47,"tag":190,"props":1723,"children":1724},{"class":192,"line":509},[1725,1729,1733,1737,1741,1745],{"type":47,"tag":190,"props":1726,"children":1727},{"style":931},[1728],{"type":53,"value":1400},{"type":47,"tag":190,"props":1730,"children":1731},{"style":209},[1732],{"type":53,"value":1405},{"type":47,"tag":190,"props":1734,"children":1735},{"style":1408},[1736],{"type":53,"value":1419},{"type":47,"tag":190,"props":1738,"children":1739},{"style":209},[1740],{"type":53,"value":1424},{"type":47,"tag":190,"props":1742,"children":1743},{"style":931},[1744],{"type":53,"value":1429},{"type":47,"tag":190,"props":1746,"children":1747},{"style":209},[1748],{"type":53,"value":1434},{"type":47,"tag":190,"props":1750,"children":1751},{"class":192,"line":742},[1752,1756],{"type":47,"tag":190,"props":1753,"children":1754},{"style":230},[1755],{"type":53,"value":894},{"type":47,"tag":190,"props":1757,"children":1758},{"style":209},[1759],{"type":53,"value":899},{"type":47,"tag":56,"props":1761,"children":1762},{},[1763,1765,1770],{"type":53,"value":1764},"If a function is invoked only via ",{"type":47,"tag":117,"props":1766,"children":1768},{"className":1767},[],[1769],{"type":53,"value":122},{"type":53,"value":1771},", it may be triggerless.",{"type":47,"tag":80,"props":1773,"children":1775},{"id":1774},"eventschemas-to-eventtypestaticschema",[1776],{"type":53,"value":1777},"EventSchemas to eventType\u002FstaticSchema",{"type":47,"tag":56,"props":1779,"children":1780},{},[1781,1783,1788],{"type":53,"value":1782},"Replace centralized ",{"type":47,"tag":117,"props":1784,"children":1786},{"className":1785},[],[1787],{"type":53,"value":404},{"type":53,"value":1789}," with event-specific definitions.",{"type":47,"tag":179,"props":1791,"children":1793},{"className":681,"code":1792,"language":16,"meta":184,"style":184},"import { Inngest, eventType, staticSchema } from \"inngest\";\nimport { z } from \"zod\";\n\nexport const userCreated = eventType(\"user\u002Fcreated\", {\n  schema: z.object({\n    userId: z.string(),\n    email: z.string().email(),\n  }),\n});\n\ntype InvoicePaid = {\n  invoiceId: string;\n  customerId: string;\n};\n\nexport const invoicePaid = eventType(\"billing\u002Finvoice.paid\", {\n  schema: staticSchema\u003CInvoicePaid>(),\n});\n",[1794],{"type":47,"tag":117,"props":1795,"children":1796},{"__ignoreMap":184},[1797,1857,1898,1905,1954,1987,2021,2066,2081,2096,2103,2125,2146,2166,2174,2181,2230,2268],{"type":47,"tag":190,"props":1798,"children":1799},{"class":192,"line":193},[1800,1805,1810,1814,1818,1823,1827,1832,1836,1841,1845,1849,1853],{"type":47,"tag":190,"props":1801,"children":1802},{"style":925},[1803],{"type":53,"value":1804},"import",{"type":47,"tag":190,"props":1806,"children":1807},{"style":209},[1808],{"type":53,"value":1809}," {",{"type":47,"tag":190,"props":1811,"children":1812},{"style":230},[1813],{"type":53,"value":953},{"type":47,"tag":190,"props":1815,"children":1816},{"style":209},[1817],{"type":53,"value":1128},{"type":47,"tag":190,"props":1819,"children":1820},{"style":230},[1821],{"type":53,"value":1822}," eventType",{"type":47,"tag":190,"props":1824,"children":1825},{"style":209},[1826],{"type":53,"value":1128},{"type":47,"tag":190,"props":1828,"children":1829},{"style":230},[1830],{"type":53,"value":1831}," staticSchema",{"type":47,"tag":190,"props":1833,"children":1834},{"style":209},[1835],{"type":53,"value":1552},{"type":47,"tag":190,"props":1837,"children":1838},{"style":925},[1839],{"type":53,"value":1840}," from",{"type":47,"tag":190,"props":1842,"children":1843},{"style":209},[1844],{"type":53,"value":979},{"type":47,"tag":190,"props":1846,"children":1847},{"style":203},[1848],{"type":53,"value":8},{"type":47,"tag":190,"props":1850,"children":1851},{"style":209},[1852],{"type":53,"value":115},{"type":47,"tag":190,"props":1854,"children":1855},{"style":209},[1856],{"type":53,"value":899},{"type":47,"tag":190,"props":1858,"children":1859},{"class":192,"line":241},[1860,1864,1868,1873,1877,1881,1885,1890,1894],{"type":47,"tag":190,"props":1861,"children":1862},{"style":925},[1863],{"type":53,"value":1804},{"type":47,"tag":190,"props":1865,"children":1866},{"style":209},[1867],{"type":53,"value":1809},{"type":47,"tag":190,"props":1869,"children":1870},{"style":230},[1871],{"type":53,"value":1872}," z",{"type":47,"tag":190,"props":1874,"children":1875},{"style":209},[1876],{"type":53,"value":1552},{"type":47,"tag":190,"props":1878,"children":1879},{"style":925},[1880],{"type":53,"value":1840},{"type":47,"tag":190,"props":1882,"children":1883},{"style":209},[1884],{"type":53,"value":979},{"type":47,"tag":190,"props":1886,"children":1887},{"style":203},[1888],{"type":53,"value":1889},"zod",{"type":47,"tag":190,"props":1891,"children":1892},{"style":209},[1893],{"type":53,"value":115},{"type":47,"tag":190,"props":1895,"children":1896},{"style":209},[1897],{"type":53,"value":899},{"type":47,"tag":190,"props":1899,"children":1900},{"class":192,"line":509},[1901],{"type":47,"tag":190,"props":1902,"children":1903},{"emptyLinePlaceholder":906},[1904],{"type":53,"value":909},{"type":47,"tag":190,"props":1906,"children":1907},{"class":192,"line":742},[1908,1912,1916,1921,1925,1929,1933,1937,1941,1945,1949],{"type":47,"tag":190,"props":1909,"children":1910},{"style":925},[1911],{"type":53,"value":928},{"type":47,"tag":190,"props":1913,"children":1914},{"style":931},[1915],{"type":53,"value":934},{"type":47,"tag":190,"props":1917,"children":1918},{"style":230},[1919],{"type":53,"value":1920}," userCreated ",{"type":47,"tag":190,"props":1922,"children":1923},{"style":209},[1924],{"type":53,"value":589},{"type":47,"tag":190,"props":1926,"children":1927},{"style":709},[1928],{"type":53,"value":1822},{"type":47,"tag":190,"props":1930,"children":1931},{"style":230},[1932],{"type":53,"value":753},{"type":47,"tag":190,"props":1934,"children":1935},{"style":209},[1936],{"type":53,"value":115},{"type":47,"tag":190,"props":1938,"children":1939},{"style":203},[1940],{"type":53,"value":1384},{"type":47,"tag":190,"props":1942,"children":1943},{"style":209},[1944],{"type":53,"value":115},{"type":47,"tag":190,"props":1946,"children":1947},{"style":209},[1948],{"type":53,"value":1128},{"type":47,"tag":190,"props":1950,"children":1951},{"style":209},[1952],{"type":53,"value":1953}," {\n",{"type":47,"tag":190,"props":1955,"children":1956},{"class":192,"line":27},[1957,1962,1966,1970,1974,1979,1983],{"type":47,"tag":190,"props":1958,"children":1959},{"style":764},[1960],{"type":53,"value":1961},"  schema",{"type":47,"tag":190,"props":1963,"children":1964},{"style":209},[1965],{"type":53,"value":772},{"type":47,"tag":190,"props":1967,"children":1968},{"style":230},[1969],{"type":53,"value":1872},{"type":47,"tag":190,"props":1971,"children":1972},{"style":209},[1973],{"type":53,"value":340},{"type":47,"tag":190,"props":1975,"children":1976},{"style":709},[1977],{"type":53,"value":1978},"object",{"type":47,"tag":190,"props":1980,"children":1981},{"style":230},[1982],{"type":53,"value":753},{"type":47,"tag":190,"props":1984,"children":1985},{"style":209},[1986],{"type":53,"value":758},{"type":47,"tag":190,"props":1988,"children":1989},{"class":192,"line":784},[1990,1995,1999,2003,2007,2012,2017],{"type":47,"tag":190,"props":1991,"children":1992},{"style":764},[1993],{"type":53,"value":1994},"    userId",{"type":47,"tag":190,"props":1996,"children":1997},{"style":209},[1998],{"type":53,"value":772},{"type":47,"tag":190,"props":2000,"children":2001},{"style":230},[2002],{"type":53,"value":1872},{"type":47,"tag":190,"props":2004,"children":2005},{"style":209},[2006],{"type":53,"value":340},{"type":47,"tag":190,"props":2008,"children":2009},{"style":709},[2010],{"type":53,"value":2011},"string",{"type":47,"tag":190,"props":2013,"children":2014},{"style":230},[2015],{"type":53,"value":2016},"()",{"type":47,"tag":190,"props":2018,"children":2019},{"style":209},[2020],{"type":53,"value":739},{"type":47,"tag":190,"props":2022,"children":2023},{"class":192,"line":797},[2024,2029,2033,2037,2041,2045,2049,2053,2058,2062],{"type":47,"tag":190,"props":2025,"children":2026},{"style":764},[2027],{"type":53,"value":2028},"    email",{"type":47,"tag":190,"props":2030,"children":2031},{"style":209},[2032],{"type":53,"value":772},{"type":47,"tag":190,"props":2034,"children":2035},{"style":230},[2036],{"type":53,"value":1872},{"type":47,"tag":190,"props":2038,"children":2039},{"style":209},[2040],{"type":53,"value":340},{"type":47,"tag":190,"props":2042,"children":2043},{"style":709},[2044],{"type":53,"value":2011},{"type":47,"tag":190,"props":2046,"children":2047},{"style":230},[2048],{"type":53,"value":2016},{"type":47,"tag":190,"props":2050,"children":2051},{"style":209},[2052],{"type":53,"value":340},{"type":47,"tag":190,"props":2054,"children":2055},{"style":709},[2056],{"type":53,"value":2057},"email",{"type":47,"tag":190,"props":2059,"children":2060},{"style":230},[2061],{"type":53,"value":2016},{"type":47,"tag":190,"props":2063,"children":2064},{"style":209},[2065],{"type":53,"value":739},{"type":47,"tag":190,"props":2067,"children":2068},{"class":192,"line":836},[2069,2073,2077],{"type":47,"tag":190,"props":2070,"children":2071},{"style":209},[2072],{"type":53,"value":880},{"type":47,"tag":190,"props":2074,"children":2075},{"style":230},[2076],{"type":53,"value":894},{"type":47,"tag":190,"props":2078,"children":2079},{"style":209},[2080],{"type":53,"value":739},{"type":47,"tag":190,"props":2082,"children":2083},{"class":192,"line":874},[2084,2088,2092],{"type":47,"tag":190,"props":2085,"children":2086},{"style":209},[2087],{"type":53,"value":1075},{"type":47,"tag":190,"props":2089,"children":2090},{"style":230},[2091],{"type":53,"value":894},{"type":47,"tag":190,"props":2093,"children":2094},{"style":209},[2095],{"type":53,"value":899},{"type":47,"tag":190,"props":2097,"children":2098},{"class":192,"line":888},[2099],{"type":47,"tag":190,"props":2100,"children":2101},{"emptyLinePlaceholder":906},[2102],{"type":53,"value":909},{"type":47,"tag":190,"props":2104,"children":2105},{"class":192,"line":902},[2106,2111,2116,2121],{"type":47,"tag":190,"props":2107,"children":2108},{"style":931},[2109],{"type":53,"value":2110},"type",{"type":47,"tag":190,"props":2112,"children":2113},{"style":197},[2114],{"type":53,"value":2115}," InvoicePaid",{"type":47,"tag":190,"props":2117,"children":2118},{"style":209},[2119],{"type":53,"value":2120}," =",{"type":47,"tag":190,"props":2122,"children":2123},{"style":209},[2124],{"type":53,"value":1953},{"type":47,"tag":190,"props":2126,"children":2127},{"class":192,"line":912},[2128,2133,2137,2142],{"type":47,"tag":190,"props":2129,"children":2130},{"style":764},[2131],{"type":53,"value":2132},"  invoiceId",{"type":47,"tag":190,"props":2134,"children":2135},{"style":209},[2136],{"type":53,"value":772},{"type":47,"tag":190,"props":2138,"children":2139},{"style":197},[2140],{"type":53,"value":2141}," string",{"type":47,"tag":190,"props":2143,"children":2144},{"style":209},[2145],{"type":53,"value":899},{"type":47,"tag":190,"props":2147,"children":2148},{"class":192,"line":921},[2149,2154,2158,2162],{"type":47,"tag":190,"props":2150,"children":2151},{"style":764},[2152],{"type":53,"value":2153},"  customerId",{"type":47,"tag":190,"props":2155,"children":2156},{"style":209},[2157],{"type":53,"value":772},{"type":47,"tag":190,"props":2159,"children":2160},{"style":197},[2161],{"type":53,"value":2141},{"type":47,"tag":190,"props":2163,"children":2164},{"style":209},[2165],{"type":53,"value":899},{"type":47,"tag":190,"props":2167,"children":2168},{"class":192,"line":964},[2169],{"type":47,"tag":190,"props":2170,"children":2171},{"style":209},[2172],{"type":53,"value":2173},"};\n",{"type":47,"tag":190,"props":2175,"children":2176},{"class":192,"line":995},[2177],{"type":47,"tag":190,"props":2178,"children":2179},{"emptyLinePlaceholder":906},[2180],{"type":53,"value":909},{"type":47,"tag":190,"props":2182,"children":2183},{"class":192,"line":1032},[2184,2188,2192,2197,2201,2205,2209,2213,2218,2222,2226],{"type":47,"tag":190,"props":2185,"children":2186},{"style":925},[2187],{"type":53,"value":928},{"type":47,"tag":190,"props":2189,"children":2190},{"style":931},[2191],{"type":53,"value":934},{"type":47,"tag":190,"props":2193,"children":2194},{"style":230},[2195],{"type":53,"value":2196}," invoicePaid ",{"type":47,"tag":190,"props":2198,"children":2199},{"style":209},[2200],{"type":53,"value":589},{"type":47,"tag":190,"props":2202,"children":2203},{"style":709},[2204],{"type":53,"value":1822},{"type":47,"tag":190,"props":2206,"children":2207},{"style":230},[2208],{"type":53,"value":753},{"type":47,"tag":190,"props":2210,"children":2211},{"style":209},[2212],{"type":53,"value":115},{"type":47,"tag":190,"props":2214,"children":2215},{"style":203},[2216],{"type":53,"value":2217},"billing\u002Finvoice.paid",{"type":47,"tag":190,"props":2219,"children":2220},{"style":209},[2221],{"type":53,"value":115},{"type":47,"tag":190,"props":2223,"children":2224},{"style":209},[2225],{"type":53,"value":1128},{"type":47,"tag":190,"props":2227,"children":2228},{"style":209},[2229],{"type":53,"value":1953},{"type":47,"tag":190,"props":2231,"children":2232},{"class":192,"line":1069},[2233,2237,2241,2245,2250,2255,2260,2264],{"type":47,"tag":190,"props":2234,"children":2235},{"style":764},[2236],{"type":53,"value":1961},{"type":47,"tag":190,"props":2238,"children":2239},{"style":209},[2240],{"type":53,"value":772},{"type":47,"tag":190,"props":2242,"children":2243},{"style":709},[2244],{"type":53,"value":1831},{"type":47,"tag":190,"props":2246,"children":2247},{"style":209},[2248],{"type":53,"value":2249},"\u003C",{"type":47,"tag":190,"props":2251,"children":2252},{"style":197},[2253],{"type":53,"value":2254},"InvoicePaid",{"type":47,"tag":190,"props":2256,"children":2257},{"style":209},[2258],{"type":53,"value":2259},">",{"type":47,"tag":190,"props":2261,"children":2262},{"style":230},[2263],{"type":53,"value":2016},{"type":47,"tag":190,"props":2265,"children":2266},{"style":209},[2267],{"type":53,"value":739},{"type":47,"tag":190,"props":2269,"children":2270},{"class":192,"line":1086},[2271,2275,2279],{"type":47,"tag":190,"props":2272,"children":2273},{"style":209},[2274],{"type":53,"value":1075},{"type":47,"tag":190,"props":2276,"children":2277},{"style":230},[2278],{"type":53,"value":894},{"type":47,"tag":190,"props":2280,"children":2281},{"style":209},[2282],{"type":53,"value":899},{"type":47,"tag":56,"props":2284,"children":2285},{},[2286],{"type":53,"value":2287},"Use event types consistently:",{"type":47,"tag":179,"props":2289,"children":2291},{"className":681,"code":2290,"language":16,"meta":184,"style":184},"await inngest.send(userCreated.create({ userId, email }));\n\ninngest.createFunction(\n  { id: \"on-user-created\", triggers: [userCreated] },\n  async ({ event }) => {}\n);\n\nawait step.waitForEvent(\"wait-for-invoice\", {\n  event: invoicePaid,\n  timeout: \"7d\",\n});\n",[2292],{"type":47,"tag":117,"props":2293,"children":2294},{"__ignoreMap":184},[2295,2364,2371,2390,2439,2466,2477,2484,2529,2550,2579],{"type":47,"tag":190,"props":2296,"children":2297},{"class":192,"line":193},[2298,2303,2307,2311,2316,2321,2325,2330,2334,2338,2343,2347,2352,2356,2360],{"type":47,"tag":190,"props":2299,"children":2300},{"style":925},[2301],{"type":53,"value":2302},"await",{"type":47,"tag":190,"props":2304,"children":2305},{"style":230},[2306],{"type":53,"value":777},{"type":47,"tag":190,"props":2308,"children":2309},{"style":209},[2310],{"type":53,"value":340},{"type":47,"tag":190,"props":2312,"children":2313},{"style":709},[2314],{"type":53,"value":2315},"send",{"type":47,"tag":190,"props":2317,"children":2318},{"style":230},[2319],{"type":53,"value":2320},"(userCreated",{"type":47,"tag":190,"props":2322,"children":2323},{"style":209},[2324],{"type":53,"value":340},{"type":47,"tag":190,"props":2326,"children":2327},{"style":709},[2328],{"type":53,"value":2329},"create",{"type":47,"tag":190,"props":2331,"children":2332},{"style":230},[2333],{"type":53,"value":753},{"type":47,"tag":190,"props":2335,"children":2336},{"style":209},[2337],{"type":53,"value":1142},{"type":47,"tag":190,"props":2339,"children":2340},{"style":230},[2341],{"type":53,"value":2342}," userId",{"type":47,"tag":190,"props":2344,"children":2345},{"style":209},[2346],{"type":53,"value":1128},{"type":47,"tag":190,"props":2348,"children":2349},{"style":230},[2350],{"type":53,"value":2351}," email ",{"type":47,"tag":190,"props":2353,"children":2354},{"style":209},[2355],{"type":53,"value":1075},{"type":47,"tag":190,"props":2357,"children":2358},{"style":230},[2359],{"type":53,"value":1173},{"type":47,"tag":190,"props":2361,"children":2362},{"style":209},[2363],{"type":53,"value":899},{"type":47,"tag":190,"props":2365,"children":2366},{"class":192,"line":241},[2367],{"type":47,"tag":190,"props":2368,"children":2369},{"emptyLinePlaceholder":906},[2370],{"type":53,"value":909},{"type":47,"tag":190,"props":2372,"children":2373},{"class":192,"line":509},[2374,2378,2382,2386],{"type":47,"tag":190,"props":2375,"children":2376},{"style":230},[2377],{"type":53,"value":8},{"type":47,"tag":190,"props":2379,"children":2380},{"style":209},[2381],{"type":53,"value":340},{"type":47,"tag":190,"props":2383,"children":2384},{"style":709},[2385],{"type":53,"value":391},{"type":47,"tag":190,"props":2387,"children":2388},{"style":230},[2389],{"type":53,"value":717},{"type":47,"tag":190,"props":2391,"children":2392},{"class":192,"line":742},[2393,2397,2401,2405,2409,2414,2418,2422,2426,2430,2435],{"type":47,"tag":190,"props":2394,"children":2395},{"style":209},[2396],{"type":53,"value":1332},{"type":47,"tag":190,"props":2398,"children":2399},{"style":764},[2400],{"type":53,"value":1337},{"type":47,"tag":190,"props":2402,"children":2403},{"style":209},[2404],{"type":53,"value":772},{"type":47,"tag":190,"props":2406,"children":2407},{"style":209},[2408],{"type":53,"value":979},{"type":47,"tag":190,"props":2410,"children":2411},{"style":203},[2412],{"type":53,"value":2413},"on-user-created",{"type":47,"tag":190,"props":2415,"children":2416},{"style":209},[2417],{"type":53,"value":115},{"type":47,"tag":190,"props":2419,"children":2420},{"style":209},[2421],{"type":53,"value":1128},{"type":47,"tag":190,"props":2423,"children":2424},{"style":764},[2425],{"type":53,"value":1514},{"type":47,"tag":190,"props":2427,"children":2428},{"style":209},[2429],{"type":53,"value":772},{"type":47,"tag":190,"props":2431,"children":2432},{"style":230},[2433],{"type":53,"value":2434}," [userCreated] ",{"type":47,"tag":190,"props":2436,"children":2437},{"style":209},[2438],{"type":53,"value":1562},{"type":47,"tag":190,"props":2440,"children":2441},{"class":192,"line":27},[2442,2446,2450,2454,2458,2462],{"type":47,"tag":190,"props":2443,"children":2444},{"style":931},[2445],{"type":53,"value":1400},{"type":47,"tag":190,"props":2447,"children":2448},{"style":209},[2449],{"type":53,"value":1405},{"type":47,"tag":190,"props":2451,"children":2452},{"style":1408},[2453],{"type":53,"value":1371},{"type":47,"tag":190,"props":2455,"children":2456},{"style":209},[2457],{"type":53,"value":1424},{"type":47,"tag":190,"props":2459,"children":2460},{"style":931},[2461],{"type":53,"value":1429},{"type":47,"tag":190,"props":2463,"children":2464},{"style":209},[2465],{"type":53,"value":1434},{"type":47,"tag":190,"props":2467,"children":2468},{"class":192,"line":784},[2469,2473],{"type":47,"tag":190,"props":2470,"children":2471},{"style":230},[2472],{"type":53,"value":894},{"type":47,"tag":190,"props":2474,"children":2475},{"style":209},[2476],{"type":53,"value":899},{"type":47,"tag":190,"props":2478,"children":2479},{"class":192,"line":797},[2480],{"type":47,"tag":190,"props":2481,"children":2482},{"emptyLinePlaceholder":906},[2483],{"type":53,"value":909},{"type":47,"tag":190,"props":2485,"children":2486},{"class":192,"line":836},[2487,2491,2495,2499,2504,2508,2512,2517,2521,2525],{"type":47,"tag":190,"props":2488,"children":2489},{"style":925},[2490],{"type":53,"value":2302},{"type":47,"tag":190,"props":2492,"children":2493},{"style":230},[2494],{"type":53,"value":1419},{"type":47,"tag":190,"props":2496,"children":2497},{"style":209},[2498],{"type":53,"value":340},{"type":47,"tag":190,"props":2500,"children":2501},{"style":709},[2502],{"type":53,"value":2503},"waitForEvent",{"type":47,"tag":190,"props":2505,"children":2506},{"style":230},[2507],{"type":53,"value":753},{"type":47,"tag":190,"props":2509,"children":2510},{"style":209},[2511],{"type":53,"value":115},{"type":47,"tag":190,"props":2513,"children":2514},{"style":203},[2515],{"type":53,"value":2516},"wait-for-invoice",{"type":47,"tag":190,"props":2518,"children":2519},{"style":209},[2520],{"type":53,"value":115},{"type":47,"tag":190,"props":2522,"children":2523},{"style":209},[2524],{"type":53,"value":1128},{"type":47,"tag":190,"props":2526,"children":2527},{"style":209},[2528],{"type":53,"value":1953},{"type":47,"tag":190,"props":2530,"children":2531},{"class":192,"line":874},[2532,2537,2541,2546],{"type":47,"tag":190,"props":2533,"children":2534},{"style":764},[2535],{"type":53,"value":2536},"  event",{"type":47,"tag":190,"props":2538,"children":2539},{"style":209},[2540],{"type":53,"value":772},{"type":47,"tag":190,"props":2542,"children":2543},{"style":230},[2544],{"type":53,"value":2545}," invoicePaid",{"type":47,"tag":190,"props":2547,"children":2548},{"style":209},[2549],{"type":53,"value":739},{"type":47,"tag":190,"props":2551,"children":2552},{"class":192,"line":888},[2553,2558,2562,2566,2571,2575],{"type":47,"tag":190,"props":2554,"children":2555},{"style":764},[2556],{"type":53,"value":2557},"  timeout",{"type":47,"tag":190,"props":2559,"children":2560},{"style":209},[2561],{"type":53,"value":772},{"type":47,"tag":190,"props":2563,"children":2564},{"style":209},[2565],{"type":53,"value":979},{"type":47,"tag":190,"props":2567,"children":2568},{"style":203},[2569],{"type":53,"value":2570},"7d",{"type":47,"tag":190,"props":2572,"children":2573},{"style":209},[2574],{"type":53,"value":115},{"type":47,"tag":190,"props":2576,"children":2577},{"style":209},[2578],{"type":53,"value":739},{"type":47,"tag":190,"props":2580,"children":2581},{"class":192,"line":902},[2582,2586,2590],{"type":47,"tag":190,"props":2583,"children":2584},{"style":209},[2585],{"type":53,"value":1075},{"type":47,"tag":190,"props":2587,"children":2588},{"style":230},[2589],{"type":53,"value":894},{"type":47,"tag":190,"props":2591,"children":2592},{"style":209},[2593],{"type":53,"value":899},{"type":47,"tag":56,"props":2595,"children":2596},{},[2597,2599,2605],{"type":53,"value":2598},"Important: ",{"type":47,"tag":117,"props":2600,"children":2602},{"className":2601},[],[2603],{"type":53,"value":2604},"staticSchema",{"type":53,"value":2606}," expects a type, not an interface. Convert interfaces\nto type aliases when needed.",{"type":47,"tag":80,"props":2608,"children":2610},{"id":2609},"stepinvoke",[2611],{"type":53,"value":122},{"type":47,"tag":56,"props":2613,"children":2614},{},[2615,2617,2623],{"type":53,"value":2616},"v4 no longer accepts raw string function IDs. Use an imported function\nreference or ",{"type":47,"tag":117,"props":2618,"children":2620},{"className":2619},[],[2621],{"type":53,"value":2622},"referenceFunction()",{"type":53,"value":340},{"type":47,"tag":179,"props":2625,"children":2627},{"className":681,"code":2626,"language":16,"meta":184,"style":184},"import { referenceFunction } from \"inngest\";\n\nawait step.invoke(\"run-report\", {\n  function: referenceFunction({\n    appId: \"analytics-app\",\n    functionId: \"generate-report\",\n  }),\n  data: { reportId },\n});\n",[2628],{"type":47,"tag":117,"props":2629,"children":2630},{"__ignoreMap":184},[2631,2671,2678,2723,2747,2776,2805,2820,2845],{"type":47,"tag":190,"props":2632,"children":2633},{"class":192,"line":193},[2634,2638,2642,2647,2651,2655,2659,2663,2667],{"type":47,"tag":190,"props":2635,"children":2636},{"style":925},[2637],{"type":53,"value":1804},{"type":47,"tag":190,"props":2639,"children":2640},{"style":209},[2641],{"type":53,"value":1809},{"type":47,"tag":190,"props":2643,"children":2644},{"style":230},[2645],{"type":53,"value":2646}," referenceFunction",{"type":47,"tag":190,"props":2648,"children":2649},{"style":209},[2650],{"type":53,"value":1552},{"type":47,"tag":190,"props":2652,"children":2653},{"style":925},[2654],{"type":53,"value":1840},{"type":47,"tag":190,"props":2656,"children":2657},{"style":209},[2658],{"type":53,"value":979},{"type":47,"tag":190,"props":2660,"children":2661},{"style":203},[2662],{"type":53,"value":8},{"type":47,"tag":190,"props":2664,"children":2665},{"style":209},[2666],{"type":53,"value":115},{"type":47,"tag":190,"props":2668,"children":2669},{"style":209},[2670],{"type":53,"value":899},{"type":47,"tag":190,"props":2672,"children":2673},{"class":192,"line":241},[2674],{"type":47,"tag":190,"props":2675,"children":2676},{"emptyLinePlaceholder":906},[2677],{"type":53,"value":909},{"type":47,"tag":190,"props":2679,"children":2680},{"class":192,"line":509},[2681,2685,2689,2693,2698,2702,2706,2711,2715,2719],{"type":47,"tag":190,"props":2682,"children":2683},{"style":925},[2684],{"type":53,"value":2302},{"type":47,"tag":190,"props":2686,"children":2687},{"style":230},[2688],{"type":53,"value":1419},{"type":47,"tag":190,"props":2690,"children":2691},{"style":209},[2692],{"type":53,"value":340},{"type":47,"tag":190,"props":2694,"children":2695},{"style":709},[2696],{"type":53,"value":2697},"invoke",{"type":47,"tag":190,"props":2699,"children":2700},{"style":230},[2701],{"type":53,"value":753},{"type":47,"tag":190,"props":2703,"children":2704},{"style":209},[2705],{"type":53,"value":115},{"type":47,"tag":190,"props":2707,"children":2708},{"style":203},[2709],{"type":53,"value":2710},"run-report",{"type":47,"tag":190,"props":2712,"children":2713},{"style":209},[2714],{"type":53,"value":115},{"type":47,"tag":190,"props":2716,"children":2717},{"style":209},[2718],{"type":53,"value":1128},{"type":47,"tag":190,"props":2720,"children":2721},{"style":209},[2722],{"type":53,"value":1953},{"type":47,"tag":190,"props":2724,"children":2725},{"class":192,"line":742},[2726,2731,2735,2739,2743],{"type":47,"tag":190,"props":2727,"children":2728},{"style":764},[2729],{"type":53,"value":2730},"  function",{"type":47,"tag":190,"props":2732,"children":2733},{"style":209},[2734],{"type":53,"value":772},{"type":47,"tag":190,"props":2736,"children":2737},{"style":709},[2738],{"type":53,"value":2646},{"type":47,"tag":190,"props":2740,"children":2741},{"style":230},[2742],{"type":53,"value":753},{"type":47,"tag":190,"props":2744,"children":2745},{"style":209},[2746],{"type":53,"value":758},{"type":47,"tag":190,"props":2748,"children":2749},{"class":192,"line":27},[2750,2755,2759,2763,2768,2772],{"type":47,"tag":190,"props":2751,"children":2752},{"style":764},[2753],{"type":53,"value":2754},"    appId",{"type":47,"tag":190,"props":2756,"children":2757},{"style":209},[2758],{"type":53,"value":772},{"type":47,"tag":190,"props":2760,"children":2761},{"style":209},[2762],{"type":53,"value":979},{"type":47,"tag":190,"props":2764,"children":2765},{"style":203},[2766],{"type":53,"value":2767},"analytics-app",{"type":47,"tag":190,"props":2769,"children":2770},{"style":209},[2771],{"type":53,"value":115},{"type":47,"tag":190,"props":2773,"children":2774},{"style":209},[2775],{"type":53,"value":739},{"type":47,"tag":190,"props":2777,"children":2778},{"class":192,"line":784},[2779,2784,2788,2792,2797,2801],{"type":47,"tag":190,"props":2780,"children":2781},{"style":764},[2782],{"type":53,"value":2783},"    functionId",{"type":47,"tag":190,"props":2785,"children":2786},{"style":209},[2787],{"type":53,"value":772},{"type":47,"tag":190,"props":2789,"children":2790},{"style":209},[2791],{"type":53,"value":979},{"type":47,"tag":190,"props":2793,"children":2794},{"style":203},[2795],{"type":53,"value":2796},"generate-report",{"type":47,"tag":190,"props":2798,"children":2799},{"style":209},[2800],{"type":53,"value":115},{"type":47,"tag":190,"props":2802,"children":2803},{"style":209},[2804],{"type":53,"value":739},{"type":47,"tag":190,"props":2806,"children":2807},{"class":192,"line":797},[2808,2812,2816],{"type":47,"tag":190,"props":2809,"children":2810},{"style":209},[2811],{"type":53,"value":880},{"type":47,"tag":190,"props":2813,"children":2814},{"style":230},[2815],{"type":53,"value":894},{"type":47,"tag":190,"props":2817,"children":2818},{"style":209},[2819],{"type":53,"value":739},{"type":47,"tag":190,"props":2821,"children":2822},{"class":192,"line":836},[2823,2828,2832,2836,2841],{"type":47,"tag":190,"props":2824,"children":2825},{"style":764},[2826],{"type":53,"value":2827},"  data",{"type":47,"tag":190,"props":2829,"children":2830},{"style":209},[2831],{"type":53,"value":772},{"type":47,"tag":190,"props":2833,"children":2834},{"style":209},[2835],{"type":53,"value":1809},{"type":47,"tag":190,"props":2837,"children":2838},{"style":230},[2839],{"type":53,"value":2840}," reportId ",{"type":47,"tag":190,"props":2842,"children":2843},{"style":209},[2844],{"type":53,"value":1562},{"type":47,"tag":190,"props":2846,"children":2847},{"class":192,"line":874},[2848,2852,2856],{"type":47,"tag":190,"props":2849,"children":2850},{"style":209},[2851],{"type":53,"value":1075},{"type":47,"tag":190,"props":2853,"children":2854},{"style":230},[2855],{"type":53,"value":894},{"type":47,"tag":190,"props":2857,"children":2858},{"style":209},[2859],{"type":53,"value":899},{"type":47,"tag":56,"props":2861,"children":2862},{},[2863],{"type":53,"value":2864},"If the target function is in the same codebase, prefer passing the imported\nfunction itself:",{"type":47,"tag":179,"props":2866,"children":2868},{"className":681,"code":2867,"language":16,"meta":184,"style":184},"await step.invoke(\"run-report\", {\n  function: generateReport,\n  data: { reportId },\n});\n",[2869],{"type":47,"tag":117,"props":2870,"children":2871},{"__ignoreMap":184},[2872,2915,2935,2958],{"type":47,"tag":190,"props":2873,"children":2874},{"class":192,"line":193},[2875,2879,2883,2887,2891,2895,2899,2903,2907,2911],{"type":47,"tag":190,"props":2876,"children":2877},{"style":925},[2878],{"type":53,"value":2302},{"type":47,"tag":190,"props":2880,"children":2881},{"style":230},[2882],{"type":53,"value":1419},{"type":47,"tag":190,"props":2884,"children":2885},{"style":209},[2886],{"type":53,"value":340},{"type":47,"tag":190,"props":2888,"children":2889},{"style":709},[2890],{"type":53,"value":2697},{"type":47,"tag":190,"props":2892,"children":2893},{"style":230},[2894],{"type":53,"value":753},{"type":47,"tag":190,"props":2896,"children":2897},{"style":209},[2898],{"type":53,"value":115},{"type":47,"tag":190,"props":2900,"children":2901},{"style":203},[2902],{"type":53,"value":2710},{"type":47,"tag":190,"props":2904,"children":2905},{"style":209},[2906],{"type":53,"value":115},{"type":47,"tag":190,"props":2908,"children":2909},{"style":209},[2910],{"type":53,"value":1128},{"type":47,"tag":190,"props":2912,"children":2913},{"style":209},[2914],{"type":53,"value":1953},{"type":47,"tag":190,"props":2916,"children":2917},{"class":192,"line":241},[2918,2922,2926,2931],{"type":47,"tag":190,"props":2919,"children":2920},{"style":764},[2921],{"type":53,"value":2730},{"type":47,"tag":190,"props":2923,"children":2924},{"style":209},[2925],{"type":53,"value":772},{"type":47,"tag":190,"props":2927,"children":2928},{"style":230},[2929],{"type":53,"value":2930}," generateReport",{"type":47,"tag":190,"props":2932,"children":2933},{"style":209},[2934],{"type":53,"value":739},{"type":47,"tag":190,"props":2936,"children":2937},{"class":192,"line":509},[2938,2942,2946,2950,2954],{"type":47,"tag":190,"props":2939,"children":2940},{"style":764},[2941],{"type":53,"value":2827},{"type":47,"tag":190,"props":2943,"children":2944},{"style":209},[2945],{"type":53,"value":772},{"type":47,"tag":190,"props":2947,"children":2948},{"style":209},[2949],{"type":53,"value":1809},{"type":47,"tag":190,"props":2951,"children":2952},{"style":230},[2953],{"type":53,"value":2840},{"type":47,"tag":190,"props":2955,"children":2956},{"style":209},[2957],{"type":53,"value":1562},{"type":47,"tag":190,"props":2959,"children":2960},{"class":192,"line":742},[2961,2965,2969],{"type":47,"tag":190,"props":2962,"children":2963},{"style":209},[2964],{"type":53,"value":1075},{"type":47,"tag":190,"props":2966,"children":2967},{"style":230},[2968],{"type":53,"value":894},{"type":47,"tag":190,"props":2970,"children":2971},{"style":209},[2972],{"type":53,"value":899},{"type":47,"tag":80,"props":2974,"children":2976},{"id":2975},"realtime-migration",[2977],{"type":53,"value":2978},"Realtime Migration",{"type":47,"tag":56,"props":2980,"children":2981},{},[2982,2984,2989,2991,2997],{"type":53,"value":2983},"v3 realtime used ",{"type":47,"tag":117,"props":2985,"children":2987},{"className":2986},[],[2988],{"type":53,"value":134},{"type":53,"value":2990}," and middleware-injected ",{"type":47,"tag":117,"props":2992,"children":2994},{"className":2993},[],[2995],{"type":53,"value":2996},"publish",{"type":53,"value":2998},".\nv4 realtime is native.",{"type":47,"tag":56,"props":3000,"children":3001},{},[3002],{"type":53,"value":3003},"Replace:",{"type":47,"tag":92,"props":3005,"children":3006},{},[3007,3017,3026,3037],{"type":47,"tag":96,"props":3008,"children":3009},{},[3010,3015],{"type":47,"tag":117,"props":3011,"children":3013},{"className":3012},[],[3014],{"type":53,"value":134},{"type":53,"value":3016}," package",{"type":47,"tag":96,"props":3018,"children":3019},{},[3020],{"type":47,"tag":117,"props":3021,"children":3023},{"className":3022},[],[3024],{"type":53,"value":3025},"realtimeMiddleware()",{"type":47,"tag":96,"props":3027,"children":3028},{},[3029,3031],{"type":53,"value":3030},"handler args such as ",{"type":47,"tag":117,"props":3032,"children":3034},{"className":3033},[],[3035],{"type":53,"value":3036},"{ publish }",{"type":47,"tag":96,"props":3038,"children":3039},{},[3040,3042],{"type":53,"value":3041},"v3 React hooks such as ",{"type":47,"tag":117,"props":3043,"children":3045},{"className":3044},[],[3046],{"type":53,"value":3047},"useInngestSubscription()",{"type":47,"tag":56,"props":3049,"children":3050},{},[3051],{"type":53,"value":3052},"With:",{"type":47,"tag":92,"props":3054,"children":3055},{},[3056,3066,3077,3094],{"type":47,"tag":96,"props":3057,"children":3058},{},[3059,3061],{"type":53,"value":3060},"channel definitions from ",{"type":47,"tag":117,"props":3062,"children":3064},{"className":3063},[],[3065],{"type":53,"value":540},{"type":47,"tag":96,"props":3067,"children":3068},{},[3069,3075],{"type":47,"tag":117,"props":3070,"children":3072},{"className":3071},[],[3073],{"type":53,"value":3074},"step.realtime.publish",{"type":53,"value":3076}," between steps",{"type":47,"tag":96,"props":3078,"children":3079},{},[3080,3086,3088],{"type":47,"tag":117,"props":3081,"children":3083},{"className":3082},[],[3084],{"type":53,"value":3085},"inngest.realtime.publish",{"type":53,"value":3087}," inside an existing ",{"type":47,"tag":117,"props":3089,"children":3091},{"className":3090},[],[3092],{"type":53,"value":3093},"step.run",{"type":47,"tag":96,"props":3095,"children":3096},{},[3097],{"type":53,"value":3098},"subscription helpers\u002Fhooks from current v4 APIs",{"type":47,"tag":56,"props":3100,"children":3101},{},[3102,3104,3110,3112,3117,3119,3124,3126,3131],{"type":53,"value":3103},"Use ",{"type":47,"tag":117,"props":3105,"children":3107},{"className":3106},[],[3108],{"type":53,"value":3109},"inngest-realtime",{"type":53,"value":3111}," for detailed patterns. Do not call\n",{"type":47,"tag":117,"props":3113,"children":3115},{"className":3114},[],[3116],{"type":53,"value":3074},{"type":53,"value":3118}," from inside ",{"type":47,"tag":117,"props":3120,"children":3122},{"className":3121},[],[3123],{"type":53,"value":3093},{"type":53,"value":3125},"; use ",{"type":47,"tag":117,"props":3127,"children":3129},{"className":3128},[],[3130],{"type":53,"value":3085},{"type":53,"value":3132},"\nthere to avoid step-in-step behavior.",{"type":47,"tag":80,"props":3134,"children":3136},{"id":3135},"parallelism-and-checkpointing",[3137],{"type":53,"value":3138},"Parallelism and Checkpointing",{"type":47,"tag":56,"props":3140,"children":3141},{},[3142],{"type":53,"value":3143},"v4 enables optimized parallelism and checkpointing by default.",{"type":47,"tag":56,"props":3145,"children":3146},{},[3147,3149,3155,3157,3162,3164,3170],{"type":53,"value":3148},"Watch for ",{"type":47,"tag":117,"props":3150,"children":3152},{"className":3151},[],[3153],{"type":53,"value":3154},"Promise.race",{"type":53,"value":3156}," over steps. With optimized parallelism, ",{"type":47,"tag":117,"props":3158,"children":3160},{"className":3159},[],[3161],{"type":53,"value":3154},{"type":53,"value":3163},"\nwaits for all step promises to settle. If the repo relies on first-winner\nbehavior, use ",{"type":47,"tag":117,"props":3165,"children":3167},{"className":3166},[],[3168],{"type":53,"value":3169},"group.parallel()",{"type":53,"value":340},{"type":47,"tag":56,"props":3172,"children":3173},{},[3174,3176,3181],{"type":53,"value":3175},"For serverless platforms, configure checkpointing ",{"type":47,"tag":117,"props":3177,"children":3179},{"className":3178},[],[3180],{"type":53,"value":331},{"type":53,"value":3182}," slightly below\nthe platform limit:",{"type":47,"tag":179,"props":3184,"children":3186},{"className":681,"code":3185,"language":16,"meta":184,"style":184},"export const inngest = new Inngest({\n  id: \"my-app\",\n  checkpointing: {\n    maxRuntime: \"50s\",\n  },\n});\n",[3187],{"type":47,"tag":117,"props":3188,"children":3189},{"__ignoreMap":184},[3190,3225,3252,3268,3297,3305],{"type":47,"tag":190,"props":3191,"children":3192},{"class":192,"line":193},[3193,3197,3201,3205,3209,3213,3217,3221],{"type":47,"tag":190,"props":3194,"children":3195},{"style":925},[3196],{"type":53,"value":928},{"type":47,"tag":190,"props":3198,"children":3199},{"style":931},[3200],{"type":53,"value":934},{"type":47,"tag":190,"props":3202,"children":3203},{"style":230},[3204],{"type":53,"value":939},{"type":47,"tag":190,"props":3206,"children":3207},{"style":209},[3208],{"type":53,"value":589},{"type":47,"tag":190,"props":3210,"children":3211},{"style":209},[3212],{"type":53,"value":948},{"type":47,"tag":190,"props":3214,"children":3215},{"style":709},[3216],{"type":53,"value":953},{"type":47,"tag":190,"props":3218,"children":3219},{"style":230},[3220],{"type":53,"value":753},{"type":47,"tag":190,"props":3222,"children":3223},{"style":209},[3224],{"type":53,"value":758},{"type":47,"tag":190,"props":3226,"children":3227},{"class":192,"line":241},[3228,3232,3236,3240,3244,3248],{"type":47,"tag":190,"props":3229,"children":3230},{"style":764},[3231],{"type":53,"value":970},{"type":47,"tag":190,"props":3233,"children":3234},{"style":209},[3235],{"type":53,"value":772},{"type":47,"tag":190,"props":3237,"children":3238},{"style":209},[3239],{"type":53,"value":979},{"type":47,"tag":190,"props":3241,"children":3242},{"style":203},[3243],{"type":53,"value":984},{"type":47,"tag":190,"props":3245,"children":3246},{"style":209},[3247],{"type":53,"value":115},{"type":47,"tag":190,"props":3249,"children":3250},{"style":209},[3251],{"type":53,"value":739},{"type":47,"tag":190,"props":3253,"children":3254},{"class":192,"line":509},[3255,3260,3264],{"type":47,"tag":190,"props":3256,"children":3257},{"style":764},[3258],{"type":53,"value":3259},"  checkpointing",{"type":47,"tag":190,"props":3261,"children":3262},{"style":209},[3263],{"type":53,"value":772},{"type":47,"tag":190,"props":3265,"children":3266},{"style":209},[3267],{"type":53,"value":1953},{"type":47,"tag":190,"props":3269,"children":3270},{"class":192,"line":742},[3271,3276,3280,3284,3289,3293],{"type":47,"tag":190,"props":3272,"children":3273},{"style":764},[3274],{"type":53,"value":3275},"    maxRuntime",{"type":47,"tag":190,"props":3277,"children":3278},{"style":209},[3279],{"type":53,"value":772},{"type":47,"tag":190,"props":3281,"children":3282},{"style":209},[3283],{"type":53,"value":979},{"type":47,"tag":190,"props":3285,"children":3286},{"style":203},[3287],{"type":53,"value":3288},"50s",{"type":47,"tag":190,"props":3290,"children":3291},{"style":209},[3292],{"type":53,"value":115},{"type":47,"tag":190,"props":3294,"children":3295},{"style":209},[3296],{"type":53,"value":739},{"type":47,"tag":190,"props":3298,"children":3299},{"class":192,"line":27},[3300],{"type":47,"tag":190,"props":3301,"children":3302},{"style":209},[3303],{"type":53,"value":3304},"  },\n",{"type":47,"tag":190,"props":3306,"children":3307},{"class":192,"line":784},[3308,3312,3316],{"type":47,"tag":190,"props":3309,"children":3310},{"style":209},[3311],{"type":53,"value":1075},{"type":47,"tag":190,"props":3313,"children":3314},{"style":230},[3315],{"type":53,"value":894},{"type":47,"tag":190,"props":3317,"children":3318},{"style":209},[3319],{"type":53,"value":899},{"type":47,"tag":56,"props":3321,"children":3322},{},[3323],{"type":53,"value":3324},"On Vercel or similar frameworks, also set the route handler's max duration\nwhere the platform supports it.",{"type":47,"tag":80,"props":3326,"children":3328},{"id":3327},"connect-changes",[3329],{"type":53,"value":3330},"Connect Changes",{"type":47,"tag":56,"props":3332,"children":3333},{},[3334],{"type":53,"value":3335},"If the repo uses Connect:",{"type":47,"tag":92,"props":3337,"children":3338},{},[3339,3357,3377],{"type":47,"tag":96,"props":3340,"children":3341},{},[3342,3348,3350,3356],{"type":47,"tag":117,"props":3343,"children":3345},{"className":3344},[],[3346],{"type":53,"value":3347},"rewriteGatewayEndpoint",{"type":53,"value":3349}," is replaced by ",{"type":47,"tag":117,"props":3351,"children":3353},{"className":3352},[],[3354],{"type":53,"value":3355},"gatewayUrl",{"type":53,"value":340},{"type":47,"tag":96,"props":3358,"children":3359},{},[3360,3362,3368,3370,3376],{"type":53,"value":3361},"Connect may use worker-thread isolation. If integration issues appear, check\n",{"type":47,"tag":117,"props":3363,"children":3365},{"className":3364},[],[3366],{"type":53,"value":3367},"isolateExecution: false",{"type":53,"value":3369}," or ",{"type":47,"tag":117,"props":3371,"children":3373},{"className":3372},[],[3374],{"type":53,"value":3375},"INNGEST_CONNECT_ISOLATE_EXECUTION=false",{"type":53,"value":340},{"type":47,"tag":96,"props":3378,"children":3379},{},[3380],{"type":53,"value":3381},"Keep target URLs and signing\u002Fevent keys in env vars.",{"type":47,"tag":80,"props":3383,"children":3385},{"id":3384},"verification",[3386],{"type":53,"value":3387},"Verification",{"type":47,"tag":56,"props":3389,"children":3390},{},[3391],{"type":53,"value":3392},"Run checks in increasing confidence:",{"type":47,"tag":363,"props":3394,"children":3395},{},[3396,3401,3406,3411,3423,3436],{"type":47,"tag":96,"props":3397,"children":3398},{},[3399],{"type":53,"value":3400},"Package manager install\u002Fupdate.",{"type":47,"tag":96,"props":3402,"children":3403},{},[3404],{"type":53,"value":3405},"Typecheck.",{"type":47,"tag":96,"props":3407,"children":3408},{},[3409],{"type":53,"value":3410},"Unit\u002Fintegration tests around migrated functions.",{"type":47,"tag":96,"props":3412,"children":3413},{},[3414,3416,3422],{"type":53,"value":3415},"Start the app with ",{"type":47,"tag":117,"props":3417,"children":3419},{"className":3418},[],[3420],{"type":53,"value":3421},"INNGEST_DEV=1",{"type":53,"value":340},{"type":47,"tag":96,"props":3424,"children":3425},{},[3426,3428,3434],{"type":53,"value":3427},"Run ",{"type":47,"tag":117,"props":3429,"children":3431},{"className":3430},[],[3432],{"type":53,"value":3433},"npx inngest-cli@latest dev",{"type":53,"value":3435}," and confirm function discovery.",{"type":47,"tag":96,"props":3437,"children":3438},{},[3439],{"type":53,"value":3440},"Send one representative event and inspect the run.",{"type":47,"tag":56,"props":3442,"children":3443},{},[3444],{"type":53,"value":3445},"If local dev-server verification is not possible, state exactly which static\nchecks passed and what runtime verification remains.",{"type":47,"tag":80,"props":3447,"children":3449},{"id":3448},"common-failure-messages",[3450],{"type":53,"value":3451},"Common Failure Messages",{"type":47,"tag":92,"props":3453,"children":3454},{},[3455,3479,3507,3528,3557],{"type":47,"tag":96,"props":3456,"children":3457},{},[3458,3463,3465,3470,3472,3477],{"type":47,"tag":281,"props":3459,"children":3460},{},[3461],{"type":53,"value":3462},"\"A signing key is required to run in Cloud mode\"",{"type":53,"value":3464},": set ",{"type":47,"tag":117,"props":3466,"children":3468},{"className":3467},[],[3469],{"type":53,"value":3421},{"type":53,"value":3471}," for\nlocal development or configure ",{"type":47,"tag":117,"props":3473,"children":3475},{"className":3474},[],[3476],{"type":53,"value":628},{"type":53,"value":3478}," for production.",{"type":47,"tag":96,"props":3480,"children":3481},{},[3482,3498,3500,3505],{"type":47,"tag":281,"props":3483,"children":3484},{},[3485,3491,3493],{"type":47,"tag":117,"props":3486,"children":3488},{"className":3487},[],[3489],{"type":53,"value":3490},"Cls is not a constructor",{"type":53,"value":3492}," on ",{"type":47,"tag":117,"props":3494,"children":3496},{"className":3495},[],[3497],{"type":53,"value":730},{"type":53,"value":3499},": likely v3\n",{"type":47,"tag":117,"props":3501,"children":3503},{"className":3502},[],[3504],{"type":53,"value":134},{"type":53,"value":3506}," middleware in a v4 app. Remove the package and migrate to\nnative realtime.",{"type":47,"tag":96,"props":3508,"children":3509},{},[3510,3520,3522,3527],{"type":47,"tag":281,"props":3511,"children":3512},{},[3513,3518],{"type":47,"tag":117,"props":3514,"children":3516},{"className":3515},[],[3517],{"type":53,"value":122},{"type":53,"value":3519}," fails with string function ID",{"type":53,"value":3521},": replace strings with\nimported function references or ",{"type":47,"tag":117,"props":3523,"children":3525},{"className":3524},[],[3526],{"type":53,"value":2622},{"type":53,"value":340},{"type":47,"tag":96,"props":3529,"children":3530},{},[3531,3536,3538,3543,3544,3549,3551,3556],{"type":47,"tag":281,"props":3532,"children":3533},{},[3534],{"type":53,"value":3535},"Type errors around schemas",{"type":53,"value":3537},": replace ",{"type":47,"tag":117,"props":3539,"children":3541},{"className":3540},[],[3542],{"type":53,"value":404},{"type":53,"value":406},{"type":47,"tag":117,"props":3545,"children":3547},{"className":3546},[],[3548],{"type":53,"value":412},{"type":53,"value":3550}," and\n",{"type":47,"tag":117,"props":3552,"children":3554},{"className":3553},[],[3555],{"type":53,"value":420},{"type":53,"value":340},{"type":47,"tag":96,"props":3558,"children":3559},{},[3560,3572,3574,3579],{"type":47,"tag":281,"props":3561,"children":3562},{},[3563,3565,3570],{"type":53,"value":3564},"Unexpected ",{"type":47,"tag":117,"props":3566,"children":3568},{"className":3567},[],[3569],{"type":53,"value":3154},{"type":53,"value":3571}," behavior",{"type":53,"value":3573},": use ",{"type":47,"tag":117,"props":3575,"children":3577},{"className":3576},[],[3578],{"type":53,"value":3169},{"type":53,"value":3580}," for first-winner\nstep races or disable optimized parallelism only when necessary.",{"type":47,"tag":80,"props":3582,"children":3584},{"id":3583},"anti-patterns",[3585],{"type":53,"value":3586},"Anti-Patterns",{"type":47,"tag":92,"props":3588,"children":3589},{},[3590,3601,3633,3638,3650,3662,3673],{"type":47,"tag":96,"props":3591,"children":3592},{},[3593,3595,3600],{"type":53,"value":3594},"Mixing v3 realtime middleware with ",{"type":47,"tag":117,"props":3596,"children":3598},{"className":3597},[],[3599],{"type":53,"value":142},{"type":53,"value":340},{"type":47,"tag":96,"props":3602,"children":3603},{},[3604,3606,3611,3612,3617,3619,3624,3626,3632],{"type":53,"value":3605},"Passing ",{"type":47,"tag":117,"props":3607,"children":3609},{"className":3608},[],[3610],{"type":53,"value":646},{"type":53,"value":542},{"type":47,"tag":117,"props":3613,"children":3615},{"className":3614},[],[3616],{"type":53,"value":661},{"type":53,"value":3618},", or ",{"type":47,"tag":117,"props":3620,"children":3622},{"className":3621},[],[3623],{"type":53,"value":653},{"type":53,"value":3625}," to ",{"type":47,"tag":117,"props":3627,"children":3629},{"className":3628},[],[3630],{"type":53,"value":3631},"serve()",{"type":53,"value":340},{"type":47,"tag":96,"props":3634,"children":3635},{},[3636],{"type":53,"value":3637},"Moving event trigger syntax but forgetting cron\u002Finvoke-triggered functions.",{"type":47,"tag":96,"props":3639,"children":3640},{},[3641,3643,3648],{"type":53,"value":3642},"Replacing ",{"type":47,"tag":117,"props":3644,"children":3646},{"className":3645},[],[3647],{"type":53,"value":404},{"type":53,"value":3649}," with untyped string events everywhere.",{"type":47,"tag":96,"props":3651,"children":3652},{},[3653,3655,3660],{"type":53,"value":3654},"Hardcoding ",{"type":47,"tag":117,"props":3656,"children":3658},{"className":3657},[],[3659],{"type":53,"value":620},{"type":53,"value":3661}," in production-bound source.",{"type":47,"tag":96,"props":3663,"children":3664},{},[3665,3667,3672],{"type":53,"value":3666},"Leaving string IDs in ",{"type":47,"tag":117,"props":3668,"children":3670},{"className":3669},[],[3671],{"type":53,"value":122},{"type":53,"value":340},{"type":47,"tag":96,"props":3674,"children":3675},{},[3676],{"type":53,"value":3677},"Skipping typecheck after mechanical migration.",{"type":47,"tag":3679,"props":3680,"children":3681},"style",{},[3682],{"type":53,"value":3683},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":3685,"total":964},[3686,3706,3721,3735,3748,3760,3775],{"slug":3687,"name":3687,"fn":3688,"description":3689,"org":3690,"tags":3691,"stars":23,"repoUrl":24,"updatedAt":3705},"inngest-agent-evals","build and debug Inngest agent evals","Use when building, migrating, or debugging Agent Evals on Inngest: scoring AI agent or workflow outcomes, deferred scorers, sessions, traces, step experiments, experiment variant attribution, Insights queries, or production eval loops for prompts, models, tools, providers, and agent behavior. Covers TypeScript SDK v4 scoring beta APIs, `scoreMiddleware`, `step.score`, `inngest.score`, `createScorer`, `defer`, `group.experiment`, `experimentRef`, `meta.sessions`, and when to use durable workflow primitives for outcome-based evaluation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3692,3695,3698,3699,3702],{"name":3693,"slug":3694,"type":13},"Agents","agents",{"name":3696,"slug":3697,"type":13},"Evals","evals",{"name":9,"slug":8,"type":13},{"name":3700,"slug":3701,"type":13},"Observability","observability",{"name":3703,"slug":3704,"type":13},"Workflow Automation","workflow-automation","2026-07-12T07:36:51.711641",{"slug":3707,"name":3707,"fn":3708,"description":3709,"org":3710,"tags":3711,"stars":23,"repoUrl":24,"updatedAt":3720},"inngest-agents","build durable AI agent workflows","Use when building durable AI agents or agentic workflows with Inngest and AgentKit, including model calls, tool calls, multi-agent networks, human approval, realtime progress, provider rate limits, crash-safe execution, and Agent Evals handoff. Covers AgentKit, `step.ai`, `step.run`, `step.waitForEvent`, native realtime, and when to use lower-level Inngest primitives instead of an in-memory agent loop. Use `inngest-agent-evals` with this skill when the user wants scoring, sessions, experiments, deferred scorers, or outcome-based evaluation for the agent.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3712,3713,3716,3717],{"name":3693,"slug":3694,"type":13},{"name":3714,"slug":3715,"type":13},"Automation","automation",{"name":9,"slug":8,"type":13},{"name":3718,"slug":3719,"type":13},"LLM","llm","2026-07-12T07:36:45.984181",{"slug":3722,"name":3722,"fn":3723,"description":3724,"org":3725,"tags":3726,"stars":23,"repoUrl":24,"updatedAt":3734},"inngest-api","interact with Inngest REST API","Use when the user explicitly asks for the Inngest REST API v2, raw HTTP, OpenAPI, API docs, API authentication, or an endpoint that the Inngest CLI does not expose. Covers api-docs.inngest.com, llms.txt, the OpenAPI v2 spec, Bearer authentication with API keys or signing keys, production and local base URLs, raw curl\u002Ffetch requests, request-shape discovery, pagination, secret redaction, and when to prefer the `inngest-api-cli` skill instead.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3727,3730,3733],{"name":3728,"slug":3729,"type":13},"API Development","api-development",{"name":3731,"slug":3732,"type":13},"REST API","rest-api",{"name":3703,"slug":3704,"type":13},"2026-07-12T07:36:39.364409",{"slug":3736,"name":3736,"fn":3737,"description":3738,"org":3739,"tags":3740,"stars":23,"repoUrl":24,"updatedAt":3747},"inngest-api-cli","operate Inngest API resources via CLI","Use when operating Inngest API resources from the terminal with `npx inngest-cli@latest api`: Cloud\u002Flocal run debugging, event-run lookup, function traces, function invocation, app syncs, webhooks, environments, keys, account checks, and Insights queries. Provides prescriptive command routing for agents: which CLI command to run for a run ID, event ID, app ID, function ID, Cloud environment, API key, missing ID, or potentially mutating operation. Use `inngest-cli` for dev server setup\u002Fgeneral CLI workflows and `inngest-api` only when raw REST API v2 docs or OpenAPI fallback are needed.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3741,3742,3743,3746],{"name":3728,"slug":3729,"type":13},{"name":3714,"slug":3715,"type":13},{"name":3744,"slug":3745,"type":13},"CLI","cli",{"name":9,"slug":8,"type":13},"2026-07-12T07:36:47.58183",{"slug":164,"name":164,"fn":3749,"description":3750,"org":3751,"tags":3752,"stars":23,"repoUrl":24,"updatedAt":3759},"audit codebases for Inngest integration","Use when analyzing an existing TypeScript or JavaScript codebase to decide where and how to introduce Inngest. Covers repository discovery, framework and package detection, finding durability gaps in HTTP handlers, webhooks, cron jobs, queues, long-running jobs, AI agents, Agent Evals, polling loops, eval loops, and side-effect-heavy code, then producing and implementing an incremental integration plan.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3753,3754,3757,3758],{"name":3714,"slug":3715,"type":13},{"name":3755,"slug":3756,"type":13},"Code Analysis","code-analysis",{"name":21,"slug":22,"type":13},{"name":9,"slug":8,"type":13},"2026-07-12T07:36:55.811247",{"slug":3761,"name":3761,"fn":3762,"description":3763,"org":3764,"tags":3765,"stars":23,"repoUrl":24,"updatedAt":3774},"inngest-cli","configure Inngest CLI and dev server","Use when installing or running the Inngest CLI and Dev Server for local development, local testing, serve endpoint debugging, Docker or Docker Compose setup, MCP configuration, self-hosted `inngest start`, or deployment workflow checks. Covers `inngest dev`, `inngest start`, auto-discovery, config files, environment variables, `@inngest\u002Ftest`, local event sending, platform gotchas, and production\u002Fself-hosted server flags.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3766,3767,3770,3771],{"name":3744,"slug":3745,"type":13},{"name":3768,"slug":3769,"type":13},"Docker","docker",{"name":9,"slug":8,"type":13},{"name":3772,"slug":3773,"type":13},"Local Development","local-development","2026-07-12T07:36:40.694652",{"slug":3776,"name":3776,"fn":3777,"description":3778,"org":3779,"tags":3780,"stars":23,"repoUrl":24,"updatedAt":3787},"inngest-durable-functions","build durable and retry-safe functions","Use when building functions that must survive process crashes, retry automatically on failure, run on a schedule, react to events, or maintain state across infrastructure failures — e.g., webhook handlers that drop events, flaky cron jobs, background jobs that fail mid-execution, or workflows that need to resume where they left off. Covers Inngest function configuration, triggers (events, cron, invoke), step execution and memoization, idempotency, cancellation, error handling, retries, logging, and observability.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3781,3782,3785,3786],{"name":3714,"slug":3715,"type":13},{"name":3783,"slug":3784,"type":13},"Backend","backend",{"name":9,"slug":8,"type":13},{"name":3703,"slug":3704,"type":13},"2026-07-12T07:36:57.141023",{"items":3789,"total":964},[3790,3798,3805,3811,3818,3825,3832,3839,3851,3864,3880,3894],{"slug":3687,"name":3687,"fn":3688,"description":3689,"org":3791,"tags":3792,"stars":23,"repoUrl":24,"updatedAt":3705},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3793,3794,3795,3796,3797],{"name":3693,"slug":3694,"type":13},{"name":3696,"slug":3697,"type":13},{"name":9,"slug":8,"type":13},{"name":3700,"slug":3701,"type":13},{"name":3703,"slug":3704,"type":13},{"slug":3707,"name":3707,"fn":3708,"description":3709,"org":3799,"tags":3800,"stars":23,"repoUrl":24,"updatedAt":3720},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3801,3802,3803,3804],{"name":3693,"slug":3694,"type":13},{"name":3714,"slug":3715,"type":13},{"name":9,"slug":8,"type":13},{"name":3718,"slug":3719,"type":13},{"slug":3722,"name":3722,"fn":3723,"description":3724,"org":3806,"tags":3807,"stars":23,"repoUrl":24,"updatedAt":3734},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3808,3809,3810],{"name":3728,"slug":3729,"type":13},{"name":3731,"slug":3732,"type":13},{"name":3703,"slug":3704,"type":13},{"slug":3736,"name":3736,"fn":3737,"description":3738,"org":3812,"tags":3813,"stars":23,"repoUrl":24,"updatedAt":3747},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3814,3815,3816,3817],{"name":3728,"slug":3729,"type":13},{"name":3714,"slug":3715,"type":13},{"name":3744,"slug":3745,"type":13},{"name":9,"slug":8,"type":13},{"slug":164,"name":164,"fn":3749,"description":3750,"org":3819,"tags":3820,"stars":23,"repoUrl":24,"updatedAt":3759},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3821,3822,3823,3824],{"name":3714,"slug":3715,"type":13},{"name":3755,"slug":3756,"type":13},{"name":21,"slug":22,"type":13},{"name":9,"slug":8,"type":13},{"slug":3761,"name":3761,"fn":3762,"description":3763,"org":3826,"tags":3827,"stars":23,"repoUrl":24,"updatedAt":3774},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3828,3829,3830,3831],{"name":3744,"slug":3745,"type":13},{"name":3768,"slug":3769,"type":13},{"name":9,"slug":8,"type":13},{"name":3772,"slug":3773,"type":13},{"slug":3776,"name":3776,"fn":3777,"description":3778,"org":3833,"tags":3834,"stars":23,"repoUrl":24,"updatedAt":3787},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3835,3836,3837,3838],{"name":3714,"slug":3715,"type":13},{"name":3783,"slug":3784,"type":13},{"name":9,"slug":8,"type":13},{"name":3703,"slug":3704,"type":13},{"slug":3840,"name":3840,"fn":3841,"description":3842,"org":3843,"tags":3844,"stars":23,"repoUrl":24,"updatedAt":3850},"inngest-events","design event-driven workflows","Use when designing event-driven workflows, decoupling services, implementing fan-out patterns (one trigger, many downstream handlers), implementing idempotent event handling with IDs (24-hour dedupe window), or handling at-least-once delivery from external sources like Stripe webhooks. Covers Inngest event schema, payload format, naming conventions, IDs for idempotency, the ts param, fan-out patterns, and system events like inngest\u002Ffunction.failed.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3845,3848,3849],{"name":3846,"slug":3847,"type":13},"Data Pipeline","data-pipeline",{"name":9,"slug":8,"type":13},{"name":3703,"slug":3704,"type":13},"2026-07-12T07:36:44.685364",{"slug":3852,"name":3852,"fn":3853,"description":3854,"org":3855,"tags":3856,"stars":23,"repoUrl":24,"updatedAt":3863},"inngest-flow-control","manage API rate limits and load","Use when handling external API rate limits (e.g., OpenAI 429s, HubSpot or Stripe rate limits), preventing duplicate work from rapid event bursts (debouncing user actions), spreading load over time, ensuring per-tenant fairness, processing events in batches, limiting concurrent runs of the same operation, or assigning priority to important runs. Covers Inngest flow control: concurrency limits with keys, throttling, rate limiting, debounce, priority, singleton, and event batching.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3857,3858,3859,3860],{"name":3728,"slug":3729,"type":13},{"name":3714,"slug":3715,"type":13},{"name":9,"slug":8,"type":13},{"name":3861,"slug":3862,"type":13},"Performance","performance","2026-07-12T07:36:52.987451",{"slug":3865,"name":3865,"fn":3866,"description":3867,"org":3868,"tags":3869,"stars":23,"repoUrl":24,"updatedAt":3879},"inngest-middleware","add middleware to Inngest durable functions","Use when adding cross-cutting concerns to durable functions — structured logging or tracing across all functions, error tracking with Sentry, payload encryption for sensitive data, dependency injection of clients (DB, Stripe, etc.) into function handlers, custom telemetry, or behavior that should apply uniformly across many functions. Covers Inngest middleware lifecycle, creating custom middleware, dependencyInjectionMiddleware, @inngest\u002Fmiddleware-encryption, @inngest\u002Fmiddleware-sentry, and custom middleware patterns.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3870,3871,3872,3875,3876],{"name":21,"slug":22,"type":13},{"name":9,"slug":8,"type":13},{"name":3873,"slug":3874,"type":13},"Middleware","middleware",{"name":3700,"slug":3701,"type":13},{"name":3877,"slug":3878,"type":13},"Sentry","sentry","2026-07-12T07:36:50.127999",{"slug":3109,"name":3109,"fn":3881,"description":3882,"org":3883,"tags":3884,"stars":23,"repoUrl":24,"updatedAt":3893},"stream durable workflow updates to UI","Use when streaming durable workflow updates to a UI in real time — live order status pages that animate as steps complete, AI agent token streaming from a function to the browser, log tailing for long-running jobs, or human-in-the-loop approval flows that publish a prompt and wait for a user reply. Covers Inngest v4 native realtime: defining typed channels, publishing from inside step.run, minting subscription tokens via server actions, and consuming the stream from React\u002FNext.js client components.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3885,3886,3889,3890],{"name":3714,"slug":3715,"type":13},{"name":3887,"slug":3888,"type":13},"Frontend","frontend",{"name":9,"slug":8,"type":13},{"name":3891,"slug":3892,"type":13},"Real-time","real-time","2026-07-12T07:36:48.895092",{"slug":293,"name":293,"fn":3895,"description":3896,"org":3897,"tags":3898,"stars":23,"repoUrl":24,"updatedAt":3903},"build durable TypeScript workflows","Use when adding durable execution to a TypeScript project — building retry-safe webhook handlers, background jobs that survive crashes, scheduled tasks, or long-running workflows that outlive a single request. Covers Inngest SDK installation, client config, environment variables, serve endpoints (Next.js, Express, Hono, Fastify), connect-as-worker mode, and the local dev server.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3899,3900,3901,3902],{"name":3714,"slug":3715,"type":13},{"name":3783,"slug":3784,"type":13},{"name":9,"slug":8,"type":13},{"name":15,"slug":16,"type":13},"2026-07-12T07:36:42.004122"]