4f45adb7 Thanks @jakobevangelista! - Fix signing key propagation from serve() options to InngestApi for outgoing API calls#1288 daf858f0 Thanks @jpwilliams! - Add the ability to create Durable Endpoint Proxies, used to redirect to Inngest run results using a user's own domain.
import { Inngest, step } from "inngest";
import { endpointAdapter } from "inngest/edge";
const inngest = new Inngest({
id: "bun-sync-example",
endpointAdapter: endpointAdapter.withOptions({
asyncRedirectUrl: "/poll",
}),
});
const server = Bun.serve({
port: 3000,
routes: {
"/": inngest.endpoint(async (_req) => {
const foo = await step.run("example/step", async () => {
return "Hello from step!";
});
return new Response(`Step result: ${foo}`);
}),
// Proxy endpoint - fetches results from Inngest and decrypts if needed
"/poll": inngest.endpointProxy(),
},
});
console.log(`Listening on ${server.hostname}:${server.port}`);
#1284 5717c64b Thanks @jpwilliams! - Add a Durable Endpoints Next.js Adapter
// app/api/my-endpoint/route.ts
import { Inngest, step } from "inngest";
import { endpointAdapter } from "inngest/next";
const inngest = new Inngest({
id: "my-app",
endpointAdapter,
});
export const GET = inngest.endpoint(async (req) => {
const foo = await step.run("my-step", () => ({ foo: "bar" }));
return new Response(`Result: ${JSON.stringify(foo)}`);
});
#1297 32b59507 Thanks @ptts! - Fix extendProvider() failing to extend existing OTel providers by unwrapping the ProxyTracerProvider returned by trace.getTracerProvider(). Previously, the proxy wrapper hid the underlying provider's addSpanProcessor method, causing "auto" mode to fall through to createProvider() and register duplicate instrumentations.
#1292 9c8f5d94 Thanks @jpwilliams! - Fix Durable Endpoints not capturing and obeying step plan forcing, resulting in strange behaviour during parallel flows
#1285 9a7b0528 Thanks @jpwilliams! - Handle checkpointing failures more gracefully across async checkpointing and Durable Endpoints
8e377c27 Thanks @jpwilliams! - Add isInngestRequest() export for lightly checking if a Request looks like it comes from Inngest#1269 8e377c27 Thanks @jpwilliams! - Stabilise execution version when switching from sync to async
#1269 8e377c27 Thanks @jpwilliams! - Use endpoint adapters for experimental Durable Endpoints instead of wrappers
#1250 ad078067 Thanks @Linell! - NonRetriableError && RetryAfterError instanceof checks help resolve issues of errors not working as expected in monorepos.
#1168 4371be38 Thanks @Linell! - Add Anthropic Open Telemetry instrumentation so that calls to the Anthropic API are automatically captured.
#1269 8e377c27 Thanks @jpwilliams! - Rename http/run.started event created from Durable Endpoints to inngest/http.request
#1266 b6361ee1 Thanks @djfarrelly! - Fix issue where middleware transformOutput is not called.
#1226 dab4607c Thanks @jpwilliams! - Adds the ability to configure the number of bufferedSteps and maxInterval when checkpointing.
import { inngest } from "./client";
export const helloWorld = inngest.createFunction(
{
id: "hello-world",
checkpointing: { bufferedSteps: Infinity, maxInterval: "5s" },
},
{ event: "demo/event.sent" },
async ({ event, step }) => {
const a = await step.run("a", () => "a");
const b = await step.run("b", () => "b");
const c = await step.run("c", () => "c");
return {
message: `Hello ${event.name}! ${a} ${b} ${c}`,
};
},
);
If checkpointing: true is used, bufferedSteps defaults to 1 and no maxInterval is set.
#1093 ad044e05 Thanks @jpwilliams! - Add realtime client methods to inngest:
inngest.realtime.publish()inngest.realtime.getSubscriptionToken()step.realtime.publish()#1267 093c4f96 Thanks @amh4r! - Fix not properly handling transfer chunked requests
#1233 df7d3023 Thanks @Linell! - Lazily load ulid to avoid issues in edge environments.
#1257 0eb6b473 Thanks @Linell! - Use native Web Crypto API for HMAC-SHA256 signing with hash.js fallback
This change improves performance by using the native Web Crypto API when available for request signature verification. Falls back to hash.js for environments without crypto support.
#1226 dab4607c Thanks @jpwilliams! - Correctly access parallel step IDs from resumed sync requests
#1226 dab4607c Thanks @jpwilliams! - Default to v2 execution version when checkpointing
#1244 f5c565e8 Thanks @jpwilliams! - Ensure execution version doesn't slide when going to/from checkpointing
#1245 6694bccc Thanks @jpwilliams! - Fix async data fetching not happening with optimizedParallelism: true
#1215 29307e2e Thanks @rhino1998! - Fix step.fetch response status code
#1222 ecf46a58 Thanks @amh4r! - Remove "authentication_succeeded: false" when responding to unsigned requests
#1214 326fe06b Thanks @djfarrelly! - Fix Connect heartbeater stops too soon during shutdown
28ffbc89 Thanks @jpwilliams! - Bring checkpointing out of experimental#1155 9fa34d12 Thanks @mar-inngest! - Connect - Adding support for worker concurrency limits
#1160 ab446473 Thanks @jpwilliams! - Widen zod dependency range to support v3/v4 across libraries
#1165 b5139f04 Thanks @jpwilliams! - Remove setImmediate use (Node only)
#1160 ab446473 Thanks @jpwilliams! - Widen zod dependency range to support v3/v4 across libraries
#1166 1d08b13b Thanks @jpwilliams! - Re-export realtime types from middleware entrypoint
#1159 a79b55af Thanks @jpwilliams! - Fix @inngest/realtime attempting to nest steps with inngest@3.45.0
Updated dependencies [9fa34d12, ab446473, b5139f04]:
ead9837b Thanks @jpwilliams! - Add experimental APIs for supporting synchronous execution