@requence/service 0.8.2-edge.1149 → 0.8.2-edge.1154

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/build/chunk-974rc2jy.js.map +1 -1
  2. package/build/index.js +29 -7
  3. package/build/index.js.map +4 -4
  4. package/build/types/helpers/src/index.d.ts +1 -0
  5. package/build/types/helpers/src/index.d.ts.map +1 -1
  6. package/build/types/helpers/src/protocol/NodeTree.d.ts +21 -0
  7. package/build/types/helpers/src/protocol/NodeTree.d.ts.map +1 -1
  8. package/build/types/helpers/src/protocol/clientProperties.d.ts +50 -0
  9. package/build/types/helpers/src/protocol/clientProperties.d.ts.map +1 -1
  10. package/build/types/helpers/src/protocol/command.d.ts +799 -0
  11. package/build/types/helpers/src/protocol/command.d.ts.map +1 -1
  12. package/build/types/helpers/src/protocol/index.d.ts +1 -0
  13. package/build/types/helpers/src/protocol/index.d.ts.map +1 -1
  14. package/build/types/helpers/src/protocol/nodeType.d.ts +14 -0
  15. package/build/types/helpers/src/protocol/nodeType.d.ts.map +1 -1
  16. package/build/types/helpers/src/protocol/sliceTreeList.d.ts +81 -0
  17. package/build/types/helpers/src/protocol/sliceTreeList.d.ts.map +1 -0
  18. package/build/types/helpers/src/protocol/templateNodeTypes.d.ts.map +1 -1
  19. package/build/types/helpers/src/protocol/treeNodes.d.ts +629 -4
  20. package/build/types/helpers/src/protocol/treeNodes.d.ts.map +1 -1
  21. package/build/types/helpers/src/protocol/update.d.ts +14 -0
  22. package/build/types/helpers/src/protocol/update.d.ts.map +1 -1
  23. package/build/types/helpers/src/utils/amqpPublishRetry.d.ts +113 -18
  24. package/build/types/helpers/src/utils/amqpPublishRetry.d.ts.map +1 -1
  25. package/build/types/helpers/src/utils/sliceClock.d.ts +61 -0
  26. package/build/types/helpers/src/utils/sliceClock.d.ts.map +1 -0
  27. package/package.json +1 -1
@@ -10,7 +10,7 @@
10
10
  "import { z } from 'zod/v4'\n\nconst claimCheckObjectSchema = z.object({\n url: z.url(),\n size: z.int().positive(),\n __REQUENCE_type: z.literal('ClaimCheck'),\n})\n\n/**\n * Reference left behind by the oversized-message claim-check: the value was\n * offloaded to the files service and is fetched back (and re-walked) on\n * ingress by the `ClaimCheck` value handler.\n */\nexport type ClaimCheckObject = z.infer<typeof claimCheckObjectSchema>\n\nexport function toClaimCheckObject(info: {\n url: string\n size: number\n}): ClaimCheckObject {\n return {\n ...info,\n __REQUENCE_type: 'ClaimCheck',\n }\n}\n\nexport function isClaimCheckObject(data: unknown): data is ClaimCheckObject {\n return claimCheckObjectSchema.safeParse(data).success\n}\n\n/**\n * JSON-schema equivalent of the reference shape, for claim-check-aware\n * validation: a subschema position holding a `ClaimCheck` reference is\n * validated against this instead of the declared subschema (shape validation\n * of the offloaded value is deferred to the consumer after rehydration).\n */\nexport const claimCheckJsonSchema = {\n type: 'object',\n properties: {\n url: { type: 'string' },\n size: { type: 'integer' },\n __REQUENCE_type: { const: 'ClaimCheck' },\n },\n required: ['url', 'size', '__REQUENCE_type'],\n} as const\n",
11
11
  "import { z } from 'zod/v4'\n\nconst callbackObjectSchema = z.object({\n sourceId: z.string(),\n outputName: z.string().nullable(),\n propertyPath: z.array(z.union([z.string(), z.int()])),\n callbackId: z.uuid(),\n __REQUENCE_type: z.literal('RequenceCallback'),\n})\n\nexport type CallbackObject = z.infer<typeof callbackObjectSchema>\n\nexport function isCallbackObject(data: unknown): data is CallbackObject {\n return callbackObjectSchema.safeParse(data).success\n}\n\nexport type RequenceCallback<T> = (arg: T) => void\nexport type WrappedRequenceCallback<T> = RequenceCallback<T> & {\n response(): Promise<T>\n}\n\nexport function createCallback<T>(\n callback?: (arg: T) => void,\n): WrappedRequenceCallback<T> {\n const { promise, resolve } = Promise.withResolvers<T>()\n\n const executor = (arg: T) => {\n resolve(arg)\n callback?.(arg)\n }\n\n return Object.assign(executor, {\n response() {\n return promise\n },\n })\n}\n",
12
12
  "// The negotiated AMQP heartbeat is the CLIENT's choice: the broker sets no\n// `heartbeat` in `deploy/swarm/rabbitmq/rabbitmq.conf`, so its own 60s default\n// is only a ceiling. `amqp-connection-manager` defaults to 5s, which makes any\n// event-loop stall longer than 10s (two missed intervals) fatal to every\n// connection in the deployment at once — that is what dropped eight connections\n// simultaneously in the 2026-07-30 incident.\n//\n// 30s tolerates ~60s of stall: longer than any GC/IO pause that does not already\n// mean the process is dead, short enough that a genuinely wedged client is still\n// reaped.\nexport const DEFAULT_AMQP_HEARTBEAT_SECONDS = 30\n\n// Sets the heartbeat as a URL query parameter, which is the one mechanism every\n// client understands: plain `amqplib` reads it during negotiation, and\n// `amqp-connection-manager` appends its own 5s default only when the param is\n// absent (`dist/cjs/AmqpConnectionManager.js`), so this wins there too.\n//\n// Non-destructive by design — an explicit `?heartbeat=` in the configured URL\n// always wins, and the input URL is never mutated.\nexport function withAmqpHeartbeat(url: URL): URL {\n const next = new URL(url.toString())\n if (!next.searchParams.has('heartbeat')) {\n next.searchParams.set('heartbeat', String(DEFAULT_AMQP_HEARTBEAT_SECONDS))\n }\n return next\n}\n",
13
- "import { Buffer } from 'node:buffer'\n\nimport { Packr, addExtension } from 'msgpackr'\n\n/**\n * THE SHARED MSGPACK LAYER.\n *\n * Three things live here, and only these three:\n *\n * 1. `MSGPACK_EXTENSION_IDS` — the ONE allocation table for msgpack extension\n * type ids used anywhere in this repo.\n * 2. `packCommand` / `unpackCommand` — the AMQP task-command codec, shared by its\n * two parties: `@requence/task-builder` publishes, `@requence/operator`\n * consumes.\n * 3. `packWire` / `unpackWire` / `wireByteLength` — the high-volume AMQP wire\n * codec (service dispatch, service results, task updates). Its parties span\n * two languages, so unlike (2) it is a deliberately narrow, portable subset.\n *\n * It is its own subpath export (`@requence/helpers/msgpack`) so the msgpackr\n * dependency reaches only the packages that actually encode. Twelve packages\n * depend on `@requence/helpers`; most of them do not touch either codec and must\n * not carry a msgpack library into their bundle.\n *\n * Both codecs live in ONE module because `addExtension` is process-global (see\n * `MSGPACK_EXTENSION_IDS`). Splitting them would put the allocation table out of\n * sight of one of its two users, which is exactly the failure the table exists\n * to prevent.\n */\n\n/**\n * Extension type ids, allocated ONCE for the whole repo.\n *\n * **`addExtension` is process-global, not per-`Packr`.** Every instance in a\n * process shares one registry, so two codecs that pick the same id do not get two\n * namespaces — the second registration WINS and the first class silently decodes\n * as the second one. No error, no warning: a `NodeTree` comes back as a\n * `ReferenceCounter` and fails much later, somewhere unrelated. That is why the\n * numbers live in one table instead of next to each `addExtension` call.\n *\n * Ids 1 and 2 are also part of the stored Redis snapshot format, so renumbering\n * either one invalidates every live snapshot (a fleet-wide loud discard and\n * restart — there is no migration path, per the repo no-legacy-support policy).\n * Treat all of these as frozen; allocate a NEW number for anything new.\n */\nexport const MSGPACK_EXTENSION_IDS = {\n /** `@requence/operator`'s `ReferenceCounter` — snapshot path only. */\n referenceCounter: 1,\n /** `NodeTree` — snapshot path only; a command carries a `treeList`. */\n nodeTree: 2,\n /**\n * `URL` — registered below, because BOTH paths need it, and they need OPPOSITE\n * behaviour. See the registration for how one id serves both.\n */\n url: 3,\n} as const\n\n/**\n * Set for the duration of a `packWire` call, so the process-global `URL` extension\n * below can tell which codec is asking. `pack` is synchronous, so this cannot\n * interleave with another encode.\n *\n * Declared above the registration because `addExtension` reads `type` immediately.\n */\nlet packingForWire = false\n\n// THIS EXTENSION BELONGS TO THE SNAPSHOT AND COMMAND CODECS, NOT TO THE WIRE CODEC.\n// It exists because those two replaced superjson, which carried a `URL`;\n// structured-clone mode does not, so without this a `URL` in task input silently\n// becomes a string in transit — the same defect the `Date` handling prevents.\n//\n// The wire codec replaced `JSON.stringify`, which HAS no concept of a `URL` and\n// renders one as its href string. So it wants the opposite answer — and it cannot\n// simply decline this extension, because `addExtension` writes into module-level\n// arrays that every `Packr` in the process reads. There is no per-instance registry.\n//\n// Hence the getter, which is the wire codec's ONLY intrusion here. msgpackr's two\n// halves read `type` differently, and that is what lets one registration serve both:\n//\n// - `pack` reads it on EVERY call — `if (extension.type)` decides whether the ext\n// tag is written. `undefined` skips the tag, so `write`'s return value is encoded\n// as an ordinary string: exactly `JSON.stringify`'s output, with no pre-pack walk.\n// - `unpack` reads it ONCE, at registration (`currentExtensions[type] = …`), so the\n// decoder always knows id 3 and a command still round-trips to a real `URL`.\n//\n// Nothing about the snapshot or command format changes. `index.spec.ts` pins that:\n// a command still emits `d40300` and decodes to a `URL`, `packWire` never latches the\n// flag, and no ext tag reaches the wire — so a msgpackr release that started caching\n// `type` fails there rather than shipping undecodable bytes to a Python service.\naddExtension({\n Class: URL,\n get type() {\n return packingForWire ? undefined : MSGPACK_EXTENSION_IDS.url\n },\n write: (v: URL) => v.href,\n read: (href: string) => new URL(href),\n} as Parameters<typeof addExtension>[0])\n\n// `structuredClone: true` carries `Map`, `Set`, `Date`, `RegExp`, `Error`,\n// `BigInt`, typed arrays and `undefined` in the format itself, so there is no\n// annotation pass — which is the whole reason this beats superjson. `Map`\n// insertion order survives.\n//\n// Known and accepted difference from superjson: msgpack has no signed zero, so\n// `-0` arrives as `0`. No extension can fix it — the format has one zero.\nconst packr = new Packr({ structuredClone: true })\n\n/**\n * Encodes a task command (`CREATE` / `ABORT`) for the AMQP command queue.\n *\n * **Both parties must agree, and there is no negotiation on this queue.** A\n * command encoded by one codec and read by another does not degrade — it fails to\n * parse, and `consumers/tasks.ts` terminally fails that task. So a deploy that\n * changes this format has to move `task-builder` and the operator together;\n * anything in flight across the cutover is lost. That is the repo's\n * no-legacy-support policy applied deliberately: no dual-read, no format sniffing,\n * no version byte.\n */\nexport function packCommand(value: unknown) {\n return packr.pack(value)\n}\n\n/**\n * Decodes a task command off the AMQP command queue.\n *\n * Throws on anything that is not this codec's output — including a\n * superjson-shaped command from a pre-msgpack build, whose leading `{` decodes as\n * a positive fixint and whose trailing JSON text trips msgpack's end-of-buffer\n * check. The caller turns that into a terminal task failure; see `packCommand`\n * on why there is no fallback path.\n */\nexport function unpackCommand<T = unknown>(buffer: Buffer) {\n return packr.unpack(buffer) as T\n}\n\n/**\n * THE HIGH-VOLUME WIRE CODEC — a drop-in replacement for `JSON.stringify` /\n * `JSON.parse` on the three hot AMQP wires (service dispatch, service results,\n * task updates).\n *\n * **It is a codec swap, not a richer data model.** These wires are a\n * cross-language contract (TS service SDK, Python service SDK, `task-builder`),\n * so the format is a portable msgpack subset that any language's msgpack library\n * decodes — NOT the msgpackr dialect `packCommand` uses. Concretely:\n *\n * - `useRecords: false` — record structures are a msgpackr extension. They are\n * the single largest size win on the wide uniform arrays ETL moves (measured\n * -53% vs -17% without), and giving them up is the price of Python being able\n * to read the bytes at all.\n * - `structuredClone: false` — no reference/cycle extension, and no ext-type-0\n * `undefined`.\n * - `encodeUndefinedAsNil` — msgpackr's default `undefined` is ext type 0, which\n * is msgpackr-only. See `packWire` on why nil is still not free.\n * - `mapAsEmptyObject` / `setAsEmptyObject` — `JSON.stringify` renders a `Map` and\n * a `Set` as `{}`; without these msgpack would encode their contents and\n * silently start carrying data the JSON wire never did.\n * - `int64AsType: 'number'` — JSON has one number type, so a 64-bit integer from\n * the Python side must arrive as a `number`, not a `bigint`.\n *\n * A `URL` degrades to its href string, exactly as `JSON.stringify` does — see the\n * `URL` extension above for how it declines its own ext tag on this path.\n */\nconst wirePackr = new Packr({\n useRecords: false,\n structuredClone: false,\n encodeUndefinedAsNil: true,\n mapAsEmptyObject: true,\n setAsEmptyObject: true,\n int64AsType: 'number',\n})\n\n/**\n * **THE CONTRACT: this wire carries the JSON data model, and nothing else.**\n *\n * It replaced `JSON.stringify`, so by construction every value that reaches it is\n * already JSON-representable — task input arrives as JSON over HTTP, a node's output\n * arrives back over this same wire, and the envelope fields the operator adds are\n * strings and numbers. Nothing here has to carry a class.\n *\n * That is what makes the encoding usable from any language: it emits only msgpack's\n * CORE types, so a decoder needs no extension registered and no configuration.\n * `index.spec.ts` enforces this structurally — it walks the emitted bytes and fails\n * on any `ext` marker, over the JSON data model, real dispatch bodies, update\n * envelopes and `__REQUENCE_type` references.\n *\n * Two things to know about the encoding itself:\n *\n * 1. **`undefined` in a record becomes `null` instead of vanishing.** JSON drops the\n * key; msgpack has no way to express \"absent\" for a key it is already writing.\n * This is the one difference that can break a receiver: a Zod `.optional()`\n * accepts an absent key and rejects `null`. Envelope objects assembled on the\n * encode side must therefore omit undefined keys rather than assign them —\n * `omitUndefined` below is the shared way to do it. Values that came through JSON\n * cannot contain `undefined`, so only envelopes need the treatment.\n * 2. **`Uint8Array` becomes msgpack `bin`.** `bin` is a core type, not an extension,\n * so this costs nothing in portability — and it is the one place the wire is\n * denser than the JSON it replaced, which had to base64 (a 1.33x inflation).\n *\n * OUT OF CONTRACT, and deliberately not engineered around: `Date`, `RegExp`, `Error`\n * and any class registered via `addExtension` are not JSON, so they must not be put\n * on this wire. A `Date` in particular would emit msgpack's timestamp ext (-1) —\n * standard, but still an ext, which forfeits the \"decodes anywhere with no setup\"\n * guarantee above. The structural scan in the spec is what catches it if one ever\n * does slip in.\n */\nexport function packWire(value: unknown) {\n packingForWire = true\n try {\n return wirePackr.pack(value)\n } finally {\n packingForWire = false\n }\n}\n\n/** Decodes a body off one of the three high-volume wires. */\nexport function unpackWire<T = unknown>(buffer: Uint8Array) {\n return wirePackr.unpack(buffer) as T\n}\n\n/**\n * The encoded size of `value` under this codec, in bytes.\n *\n * The claim-check decides what to offload by measuring the serialized body, so\n * the codec and the size measurement are coupled: the invariant is **measured\n * size == published size**. A measurement taken with the wrong codec does not\n * fail loudly — it offloads too eagerly (a needless S3 round-trip on the hot\n * path) or too late (`PayloadTooLarge` at the broker). This is the only sanctioned\n * way to measure a body destined for this codec.\n */\nexport function wireByteLength(value: unknown) {\n return wirePackr.pack(value).length\n}\n\n/**\n * Drops keys whose value is `undefined`, so a record survives `packWire`\n * byte-equivalently to `JSON.stringify`.\n *\n * Needed only for envelope objects assembled right at an encode site (a dispatch\n * body's `options`, an update's optional fields): those are the only places an\n * `undefined` can still be present, per divergence (1) on `packWire`.\n */\nexport function omitUndefined<T extends Record<string, unknown>>(value: T): T {\n const out: Record<string, unknown> = {}\n for (const key of Object.keys(value)) {\n if (value[key] !== undefined) {\n out[key] = value[key]\n }\n }\n return out as T\n}\n\n/**\n * Which codec a body on one of the three high-volume wires is encoded with.\n *\n * `json` is the floor and never goes away: it is what an SDK that has not claimed\n * the `wire:msgpack1` capability speaks, and what every task keeps until it is\n * recreated. A rolling deploy therefore has both live at once, by design.\n */\nexport type WireCodec = 'json' | 'msgpack'\n\nexport const WIRE_CONTENT_TYPES = {\n json: 'application/json',\n msgpack: 'application/msgpack',\n} as const satisfies Record<WireCodec, string>\n\n/**\n * Maps an AMQP `content-type` to the codec that wrote the body.\n *\n * **Every decoder on these wires must go through here rather than assume.** An\n * absent or unrecognised content type is treated as `json`: that is the status\n * quo for anything published before this codec existed, and for any hop that\n * forwards a body without restating the header.\n */\nexport function wireCodecFromContentType(\n contentType: string | undefined,\n): WireCodec {\n return contentType === WIRE_CONTENT_TYPES.msgpack ? 'msgpack' : 'json'\n}\n\n/** Encodes a body for one of the three high-volume wires, with its content type. */\nexport function encodeWireBody(value: unknown, codec: WireCodec) {\n return {\n body:\n codec === 'msgpack'\n ? packWire(value)\n : Buffer.from(JSON.stringify(value ?? null)),\n contentType: WIRE_CONTENT_TYPES[codec],\n }\n}\n\n/**\n * Decodes a body off one of the three high-volume wires, switching on the codec\n * the publisher declared.\n *\n * This is what makes the migration rolling instead of a synchronised cutover: a\n * message already in flight when a deploy lands decodes under whichever codec\n * wrote it, so no queue has to be drained.\n */\nexport function decodeWireBody<T = unknown>(\n content: Uint8Array,\n contentType: string | undefined,\n): T {\n return wireCodecFromContentType(contentType) === 'msgpack'\n ? unpackWire<T>(content)\n : (JSON.parse(Buffer.from(content).toString()) as T)\n}\n\n/**\n * The encoded size of `value` under `codec`, in bytes — the claim-check's sizer.\n *\n * Both codecs are live at once (the choice is baked per service node), so the\n * threshold has to be measured with whichever codec this particular dispatch\n * uses. See `wireByteLength` on why a drifting measurement fails quietly.\n */\nexport function wireBodyByteLength(value: unknown, codec: WireCodec) {\n if (codec === 'msgpack') {\n return wireByteLength(value)\n }\n const json = JSON.stringify(value)\n return json === undefined ? 0 : Buffer.byteLength(json)\n}\n",
13
+ "import { Buffer } from 'node:buffer'\n\nimport { Packr, addExtension } from 'msgpackr'\n\n/**\n * THE SHARED MSGPACK LAYER.\n *\n * Three things live here, and only these three:\n *\n * 1. `MSGPACK_EXTENSION_IDS` — the ONE allocation table for msgpack extension\n * type ids used anywhere in this repo.\n * 2. `packCommand` / `unpackCommand` — the AMQP task-command codec, shared by its\n * two parties: `@requence/task-builder` publishes, `@requence/operator`\n * consumes.\n * 3. `packWire` / `unpackWire` / `wireByteLength` — the high-volume AMQP wire\n * codec (service dispatch, service results, task updates). Its parties span\n * two languages, so unlike (2) it is a deliberately narrow, portable subset.\n *\n * It is its own subpath export (`@requence/helpers/msgpack`) so the msgpackr\n * dependency reaches only the packages that actually encode. Twelve packages\n * depend on `@requence/helpers`; most of them do not touch either codec and must\n * not carry a msgpack library into their bundle.\n *\n * Both codecs live in ONE module because `addExtension` is process-global (see\n * `MSGPACK_EXTENSION_IDS`). Splitting them would put the allocation table out of\n * sight of one of its two users, which is exactly the failure the table exists\n * to prevent.\n */\n\n/**\n * Extension type ids, allocated ONCE for the whole repo.\n *\n * **`addExtension` is process-global, not per-`Packr`.** Every instance in a\n * process shares one registry, so two codecs that pick the same id do not get two\n * namespaces — the second registration WINS and the first class silently decodes\n * as the second one. No error, no warning: a `NodeTree` comes back as a\n * `ReferenceCounter` and fails much later, somewhere unrelated. That is why the\n * numbers live in one table instead of next to each `addExtension` call.\n *\n * Ids 1 and 2 are also part of the stored Redis snapshot format, so renumbering\n * either one invalidates every live snapshot (a fleet-wide loud discard and\n * restart — there is no migration path, per the repo no-legacy-support policy).\n * Treat all of these as frozen; allocate a NEW number for anything new.\n */\nexport const MSGPACK_EXTENSION_IDS = {\n /** `@requence/operator`'s `ReferenceCounter` — snapshot path only. */\n referenceCounter: 1,\n /** `NodeTree` — snapshot path only; a command carries a `treeList`. */\n nodeTree: 2,\n /**\n * `URL` — registered below, because BOTH paths need it, and they need OPPOSITE\n * behaviour. See the registration for how one id serves both.\n */\n url: 3,\n} as const\n\n/**\n * Set for the duration of a `packWire` call, so the process-global `URL` extension\n * below can tell which codec is asking. `pack` is synchronous, so this cannot\n * interleave with another encode.\n *\n * Declared above the registration because `addExtension` reads `type` immediately.\n */\nlet packingForWire = false\n\n// THIS EXTENSION BELONGS TO THE SNAPSHOT AND COMMAND CODECS, NOT TO THE WIRE CODEC.\n// It exists because those two replaced superjson, which carried a `URL`;\n// structured-clone mode does not, so without this a `URL` in task input silently\n// becomes a string in transit — the same defect the `Date` handling prevents.\n//\n// The wire codec replaced `JSON.stringify`, which HAS no concept of a `URL` and\n// renders one as its href string. So it wants the opposite answer — and it cannot\n// simply decline this extension, because `addExtension` writes into module-level\n// arrays that every `Packr` in the process reads. There is no per-instance registry.\n//\n// Hence the getter, which is the wire codec's ONLY intrusion here. msgpackr's two\n// halves read `type` differently, and that is what lets one registration serve both:\n//\n// - `pack` reads it on EVERY call — `if (extension.type)` decides whether the ext\n// tag is written. `undefined` skips the tag, so `write`'s return value is encoded\n// as an ordinary string: exactly `JSON.stringify`'s output, with no pre-pack walk.\n// - `unpack` reads it ONCE, at registration (`currentExtensions[type] = …`), so the\n// decoder always knows id 3 and a command still round-trips to a real `URL`.\n//\n// Nothing about the snapshot or command format changes. `index.spec.ts` pins that:\n// a command still emits `d40300` and decodes to a `URL`, `packWire` never latches the\n// flag, and no ext tag reaches the wire — so a msgpackr release that started caching\n// `type` fails there rather than shipping undecodable bytes to a Python service.\naddExtension({\n Class: URL,\n get type() {\n return packingForWire ? undefined : MSGPACK_EXTENSION_IDS.url\n },\n write: (v: URL) => v.href,\n read: (href: string) => new URL(href),\n} as Parameters<typeof addExtension>[0])\n\n// `structuredClone: true` carries `Map`, `Set`, `Date`, `RegExp`, `Error`,\n// `BigInt`, typed arrays and `undefined` in the format itself, so there is no\n// annotation pass — which is the whole reason this beats superjson. `Map`\n// insertion order survives.\n//\n// Known and accepted difference from superjson: msgpack has no signed zero, so\n// `-0` arrives as `0`. No extension can fix it — the format has one zero.\nconst packr = new Packr({ structuredClone: true })\n\n/**\n * Encodes a task command (`CREATE` / `ABORT`) for the AMQP command queue.\n *\n * **Both parties must agree, and there is no negotiation on this queue.** A\n * command encoded by one codec and read by another does not degrade — it fails to\n * parse, and `consumers/tasks.ts` terminally fails that task. So a deploy that\n * changes this format has to move `task-builder` and the operator together;\n * anything in flight across the cutover is lost. That is the repo's\n * no-legacy-support policy applied deliberately: no dual-read, no format sniffing,\n * no version byte.\n */\nexport function packCommand(value: unknown) {\n return packr.pack(value)\n}\n\n/**\n * Decodes a task command off the AMQP command queue.\n *\n * Throws on anything that is not this codec's output — including a\n * superjson-shaped command from a pre-msgpack build, whose leading `{` decodes as\n * a positive fixint and whose trailing JSON text trips msgpack's end-of-buffer\n * check. The caller turns that into a terminal task failure; see `packCommand`\n * on why there is no fallback path.\n */\nexport function unpackCommand<T = unknown>(buffer: Buffer) {\n return packr.unpack(buffer) as T\n}\n\n/**\n * THE HIGH-VOLUME WIRE CODEC — a drop-in replacement for `JSON.stringify` /\n * `JSON.parse` on the three hot AMQP wires (service dispatch, service results,\n * task updates).\n *\n * **It is a codec swap, not a richer data model.** These wires are a\n * cross-language contract (TS service SDK, Python service SDK, `task-builder`),\n * so the format is a portable msgpack subset that any language's msgpack library\n * decodes — NOT the msgpackr dialect `packCommand` uses. Concretely:\n *\n * - `useRecords: false` — record structures are a msgpackr extension. They are\n * the single largest size win on the wide uniform arrays ETL moves (measured\n * -53% vs -17% without), and giving them up is the price of Python being able\n * to read the bytes at all.\n * - `structuredClone: false` — no reference/cycle extension, and no ext-type-0\n * `undefined`.\n * - `encodeUndefinedAsNil` — msgpackr's default `undefined` is ext type 0, which\n * is msgpackr-only. See `packWire` on why nil is still not free.\n * - `mapAsEmptyObject` / `setAsEmptyObject` — `JSON.stringify` renders a `Map` and\n * a `Set` as `{}`; without these msgpack would encode their contents and\n * silently start carrying data the JSON wire never did.\n * - `int64AsType: 'number'` — JSON has one number type, so a 64-bit integer from\n * the Python side must arrive as a `number`, not a `bigint`.\n *\n * A `URL` degrades to its href string, exactly as `JSON.stringify` does — see the\n * `URL` extension above for how it declines its own ext tag on this path.\n */\nconst wirePackr = new Packr({\n useRecords: false,\n structuredClone: false,\n encodeUndefinedAsNil: true,\n mapAsEmptyObject: true,\n setAsEmptyObject: true,\n int64AsType: 'number',\n})\n\n/**\n * **THE CONTRACT: this wire carries the JSON data model, and nothing else.**\n *\n * It replaced `JSON.stringify`, so by construction every value that reaches it is\n * already JSON-representable — task input arrives as JSON over HTTP, a node's output\n * arrives back over this same wire, and the envelope fields the operator adds are\n * strings and numbers. Nothing here has to carry a class.\n *\n * That is what makes the encoding usable from any language: it emits only msgpack's\n * CORE types, so a decoder needs no extension registered and no configuration.\n * `index.spec.ts` enforces this structurally — it walks the emitted bytes and fails\n * on any `ext` marker, over the JSON data model, real dispatch bodies, update\n * envelopes and `__REQUENCE_type` references.\n *\n * Two things to know about the encoding itself:\n *\n * 1. **`undefined` in a record becomes `null` instead of vanishing.** JSON drops the\n * key; msgpack has no way to express \"absent\" for a key it is already writing.\n * This is the one difference that can break a receiver: a Zod `.optional()`\n * accepts an absent key and rejects `null`. Envelope objects assembled on the\n * encode side must therefore omit undefined keys rather than assign them —\n * `omitUndefined` below is the shared way to do it. Values that came through JSON\n * cannot contain `undefined`, so only envelopes need the treatment.\n * 2. **`Uint8Array` becomes msgpack `bin`.** `bin` is a core type, not an extension,\n * so this costs nothing in portability — and it is the one place the wire is\n * denser than the JSON it replaced, which had to base64 (a 1.33x inflation).\n *\n * OUT OF CONTRACT, and deliberately not engineered around: `Date`, `RegExp`, `Error`\n * and any class registered via `addExtension` are not JSON, so they must not be put\n * on this wire. A `Date` in particular would emit msgpack's timestamp ext (-1) —\n * standard, but still an ext, which forfeits the \"decodes anywhere with no setup\"\n * guarantee above. The structural scan in the spec is what catches it if one ever\n * does slip in.\n */\nexport function packWire(value: unknown) {\n packingForWire = true\n try {\n return wirePackr.pack(value)\n } finally {\n packingForWire = false\n }\n}\n\n/** Decodes a body off one of the three high-volume wires. */\nexport function unpackWire<T = unknown>(buffer: Uint8Array) {\n return wirePackr.unpack(buffer) as T\n}\n\n/**\n * The encoded size of `value` under this codec, in bytes.\n *\n * The claim-check decides what to offload by measuring the serialized body, so\n * the codec and the size measurement are coupled: the invariant is **measured\n * size == published size**. A measurement taken with the wrong codec does not\n * fail loudly — it offloads too eagerly (a needless S3 round-trip on the hot\n * path) or too late (`PayloadTooLarge` at the broker). This is the only sanctioned\n * way to measure a body destined for this codec.\n *\n * Which is why it measures THROUGH `packWire` rather than reaching for the same\n * `Packr` itself: `packingForWire` is what makes the process-global `URL`\n * extension stand down, so a bare `wirePackr.pack` here would measure a `URL` as\n * an ext-tagged value and then publish it as a bare href string — the two numbers\n * this function exists to keep equal, unequal. `packCommand` deliberately carries\n * real `URL`s, so task input can put one in a body that is measured here.\n */\nexport function wireByteLength(value: unknown) {\n return packWire(value).length\n}\n\n/**\n * Drops keys whose value is `undefined`, so a record survives `packWire`\n * byte-equivalently to `JSON.stringify`.\n *\n * Needed only for envelope objects assembled right at an encode site (a dispatch\n * body's `options`, an update's optional fields): those are the only places an\n * `undefined` can still be present, per divergence (1) on `packWire`.\n */\nexport function omitUndefined<T extends Record<string, unknown>>(value: T): T {\n const out: Record<string, unknown> = {}\n for (const key of Object.keys(value)) {\n if (value[key] !== undefined) {\n out[key] = value[key]\n }\n }\n return out as T\n}\n\n/**\n * Which codec a body on one of the three high-volume wires is encoded with.\n *\n * `json` is the floor and never goes away: it is what an SDK that has not claimed\n * the `wire:msgpack1` capability speaks, and what every task keeps until it is\n * recreated. A rolling deploy therefore has both live at once, by design.\n */\nexport type WireCodec = 'json' | 'msgpack'\n\nexport const WIRE_CONTENT_TYPES = {\n json: 'application/json',\n msgpack: 'application/msgpack',\n} as const satisfies Record<WireCodec, string>\n\n/**\n * Maps an AMQP `content-type` to the codec that wrote the body.\n *\n * **Every decoder on these wires must go through here rather than assume.** An\n * absent or unrecognised content type is treated as `json`: that is the status\n * quo for anything published before this codec existed, and for any hop that\n * forwards a body without restating the header.\n */\nexport function wireCodecFromContentType(\n contentType: string | undefined,\n): WireCodec {\n return contentType === WIRE_CONTENT_TYPES.msgpack ? 'msgpack' : 'json'\n}\n\n/** Encodes a body for one of the three high-volume wires, with its content type. */\nexport function encodeWireBody(value: unknown, codec: WireCodec) {\n return {\n body:\n codec === 'msgpack'\n ? packWire(value)\n : Buffer.from(JSON.stringify(value ?? null)),\n contentType: WIRE_CONTENT_TYPES[codec],\n }\n}\n\n/**\n * Decodes a body off one of the three high-volume wires, switching on the codec\n * the publisher declared.\n *\n * This is what makes the migration rolling instead of a synchronised cutover: a\n * message already in flight when a deploy lands decodes under whichever codec\n * wrote it, so no queue has to be drained.\n */\nexport function decodeWireBody<T = unknown>(\n content: Uint8Array,\n contentType: string | undefined,\n): T {\n return wireCodecFromContentType(contentType) === 'msgpack'\n ? unpackWire<T>(content)\n : (JSON.parse(Buffer.from(content).toString()) as T)\n}\n\n/**\n * The encoded size of `value` under `codec`, in bytes — the claim-check's sizer.\n *\n * Both codecs are live at once (the choice is baked per service node), so the\n * threshold has to be measured with whichever codec this particular dispatch\n * uses. See `wireByteLength` on why a drifting measurement fails quietly.\n */\nexport function wireBodyByteLength(value: unknown, codec: WireCodec) {\n if (codec === 'msgpack') {\n return wireByteLength(value)\n }\n const json = JSON.stringify(value)\n return json === undefined ? 0 : Buffer.byteLength(json)\n}\n",
14
14
  "import type { CallbackIngressContext } from '@requence/callbacks'\nimport {\n DEFAULT_AMQP_HEARTBEAT_SECONDS,\n type MaybePromise,\n deobfuscate,\n obfuscate,\n} from '@requence/helpers'\nimport type { WireCodec } from '@requence/helpers/msgpack'\nimport {\n decodeWireBody,\n encodeWireBody,\n wireCodecFromContentType,\n} from '@requence/helpers/msgpack'\nimport {\n CAPABILITY_HEADER_KEYS,\n buildServiceClientProperties,\n buildServiceIdentityHeaders,\n readRequiredCapabilities,\n unsupportedCapabilities,\n} from '@requence/helpers/protocol'\nimport { type Options, connect } from 'amqp-connection-manager'\nimport type { ConfirmChannel, ConsumeMessage } from 'amqplib'\nimport { z } from 'zod/v4'\n\nimport {\n type OutboundBoundary,\n createInboundBoundary,\n createOutboundBoundary,\n} from './boundary.ts'\nimport {\n PayloadTooLargeError,\n RequenceConnectionError,\n UnsupportedCapabilityError,\n} from './errors.ts'\nimport createContextHelper, {\n AbortError,\n type ContextHelper,\n type JSONValue,\n RetryError,\n SkipError,\n handlerStorage,\n unwrapOutputValue,\n} from './helpers.ts'\nimport { libVersion } from './macro.ts' with { type: 'macro' }\nimport { passthroughInboundTransformer } from './transformer.ts'\n\ntype InternalNamedOutput = '__internal_named_output__'\n\ntype Input<V extends keyof RequenceService.Version> =\n RequenceService.Version[V]['input']\ntype Configuration<V extends keyof RequenceService.Version> =\n RequenceService.Version[V]['configuration']\ntype OutputName<\n V extends keyof RequenceService.Version,\n K = keyof RequenceService.Version[V]['outputs'],\n> = K extends '__default__' ? null : K\n\ntype OutputValue<\n V extends keyof RequenceService.Version,\n O extends OutputName<V>,\n ON = O extends null ? '__default__' : O,\n> = ON extends keyof RequenceService.Version[V]['outputs']\n ? RequenceService.Version[V]['outputs'][ON]\n : never\n\ninterface ServiceContextHelper<\n V extends keyof RequenceService.Version,\n> extends Omit<\n ContextHelper,\n 'input' | 'configuration' | 'getData' | 'getConfiguration' | 'toOutput'\n> {\n input: Input<V>\n configuration: Configuration<V>\n\n toOutput<O extends OutputName<V>>(\n name: O,\n value: OutputValue<V, O>,\n ): InternalNamedOutput\n}\n\ntype ApiOutputName<V> = V extends keyof RequenceService.Version\n ? OutputName<V>\n : string | null\ntype ApiOutputValue<V, O> = V extends keyof RequenceService.Version\n ? O extends OutputName<V>\n ? OutputValue<V, O>\n : unknown\n : unknown\n\ninterface ActorApi<V> {\n sendToOutput<O extends ApiOutputName<V>>(\n outputName: O,\n data: ApiOutputValue<V, O>,\n options?: { overwrite?: boolean },\n ): void\n send(data: ApiOutputValue<V, null>, options?: { overwrite?: boolean }): void\n // Publishes a state writeback (`state: true` header). The operator honors\n // it only for privileged nodes; ordinary services' state messages are\n // ignored there.\n sendState(state: unknown): void\n abort(error: string | Error): void\n}\n\nexport interface ConnectionApi<V> {\n close(): Promise<void>\n open(): Promise<ConnectionApi<V>>\n act(\n messageKey: string,\n actor: (\n api: ActorApi<V>,\n ) =>\n | ApiOutputValue<V, null>\n | Promise<ApiOutputValue<V, null>>\n | void\n | Promise<void>\n | AsyncGenerator<ApiOutputValue<V, null>>\n | Generator<ApiOutputValue<V, null>>,\n ): Promise<void>\n}\n\nexport const messageKeySchema = z\n .string()\n .transform((str) => deobfuscate(str))\n .pipe(z.tuple([z.uuid(), z.uuid()]).rest(z.string()))\n .transform((arr) => ({\n taskId: arr[0],\n messageId: arr[1],\n uploadUrl: arr[2] || undefined,\n streamUrl: arr[3] || undefined,\n // Byte limits appended to the defer key alongside the transport URLs.\n // Old 4-part keys (pre-limits) parse with both absent → consumer defaults.\n maxPayloadSize:\n arr[4] && Number.isFinite(Number(arr[4])) ? Number(arr[4]) : undefined,\n maxFileSize:\n arr[5] && Number.isFinite(Number(arr[5])) ? Number(arr[5]) : undefined,\n }))\n\nconst headerSchema = z\n .object({\n properties: z.object({\n correlationId: z.uuid(),\n headers: z.object({\n taskId: z.uuid(),\n mode: z.enum(['LINEAR', 'CONTINUOUS']).default('LINEAR'),\n }),\n }),\n })\n .transform((msg) => ({\n messageId: msg.properties.correlationId,\n taskId: msg.properties.headers.taskId,\n mode: msg.properties.headers.mode,\n }))\n\nconst payloadSchema = z\n .object({\n content: z.instanceof(Buffer),\n properties: z.object({ contentType: z.string().optional() }),\n })\n // The dispatch codec is whatever the operator declared, never an assumption:\n // `ui/backend` bakes the choice per service node, so two nodes of one task can\n // legitimately arrive under different codecs, and a replica that has just been\n // rolled forward still receives JSON for tasks created before it attached.\n .transform((msg) => decodeWireBody(msg.content, msg.properties.contentType))\n .pipe(\n z.object({\n input: z.unknown(),\n configuration: z.unknown(),\n options: z.object({\n uploadUrl: z.url().optional(),\n streamUrl: z.url().optional(),\n maxPayloadSize: z.number().optional(),\n maxFileSize: z.number().optional(),\n }),\n }),\n )\n\nconst backchannelMessageSchema = z\n .object({\n content: z.instanceof(Buffer),\n properties: z.object({\n correlationId: z.string(),\n contentType: z.string().optional(),\n }),\n })\n // Header-driven like every other decoder on these wires. The backchannel itself\n // stays JSON — it is a low-volume control wire — but reading the header means it\n // is not the one consumer a later codec change has to remember to visit.\n .transform((message) => ({\n ...message,\n content: decodeWireBody(message.content, message.properties.contentType),\n }))\n .pipe(\n z.object({\n content: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('stop'),\n }),\n z.object({\n type: z.literal('callback'),\n callbackId: z.uuid(),\n arg: z.any(),\n }),\n ]),\n properties: z.object({\n correlationId: z.string(),\n }),\n }),\n )\n .transform((message) => ({\n payload: message.content,\n messageId: message.properties.correlationId,\n }))\n\nconst abortSymbol = Symbol()\n\nexport const connectionOptionsSchema = z.object({\n url: z.union([\n z\n .string()\n .regex(/^amqps?:\\/\\/(.+):(.+)@(.+)$/)\n .transform((str) => new URL(str)),\n z\n .instanceof(URL)\n .refine((url) => url.protocol.match(/^amqps?:/), 'Wrong protocol'),\n ]),\n version: z.string(),\n // Author-chosen debugging label announced in the AMQP client properties.\n // Not length-validated on purpose — an over-long label is capped, never a\n // startup failure. Nothing keys off it.\n name: z.string().optional(),\n devOverlay: z.string().optional(),\n silent: z.boolean().optional(),\n prefetch: z.number().int().optional(),\n connectionTimeout: z.number().positive().default(3_000),\n heartbeatInterval: z.number().int().positive().optional(),\n connectionOptions: z.any().optional(),\n // Hard cap on the serialized message body. A body above this is rejected with a\n // clear PayloadTooLargeError *before* it reaches the broker — the broker itself\n // only signals oversize by tearing down the connection, which amqplib surfaces\n // as an opaque \"channel closed\". Set to match the broker's max_message_size.\n maxMessageSize: z\n .number()\n .int()\n .positive()\n .default(128 * 1024 * 1024), // RabbitMQ's historical default max_message_size\n // Undocumented (privileged consumers): skip file/stream/callback rehydration\n // on ingress — claim-checks still resolve; byte references reach the handler\n // as raw `__REQUENCE_type` wire objects. See helpers.ts.\n passthroughByteReferences: z.boolean().optional(),\n})\n\nexport type PrivilegedConnectionOptions = z.output<\n typeof connectionOptionsSchema\n>\nexport type ConnectionOptions = Omit<\n PrivilegedConnectionOptions,\n 'passthroughByteReferences'\n>\n\n// Live connection state, surfaced so a caller (e.g. the logic runtime's health\n// probe) can react to loss/recovery instead of trusting a one-shot startup\n// signal. `connected: false` carries the disconnect error when the broker\n// supplied one; `connected: true` fires on the initial connect and on every\n// subsequent auto-reconnect.\nexport interface ConnectionState {\n connected: boolean\n err?: Error\n}\nexport type ConnectionStateListener = (state: ConnectionState) => void\n\ntype MessageHandlerContext<V> = V extends keyof RequenceService.Version\n ? ServiceContextHelper<V>\n : ContextHelper\ntype MessageHandlerReturnValue<\n V,\n O = null,\n> = V extends keyof RequenceService.Version\n ? O extends OutputName<V>\n ? OutputValue<V, O> | InternalNamedOutput\n : void\n : JSONValue\n\ntype MessageHandlerFunction<V> = (\n context: MessageHandlerContext<V>,\n) => MaybePromise<MessageHandlerReturnValue<V> | void>\n\ntype MessageHandlerGenerator<V> = (\n context: MessageHandlerContext<V>,\n) => Generator<\n MessageHandlerReturnValue<V>,\n MessageHandlerReturnValue<V> | void,\n void\n>\ntype MessageHandlerAsyncGenerator<V> = (\n context: MessageHandlerContext<V>,\n) => AsyncGenerator<\n MessageHandlerReturnValue<V>,\n MessageHandlerReturnValue<V> | void,\n void\n>\n\nexport type MessageHandler<V> = V extends keyof RequenceService.Version\n ? RequenceService.Version[V]['mode'] extends 'LINEAR'\n ? MessageHandlerFunction<V>\n :\n | MessageHandlerAsyncGenerator<V>\n | MessageHandlerGenerator<V>\n | MessageHandlerFunction<V>\n :\n | MessageHandlerAsyncGenerator<V>\n | MessageHandlerGenerator<V>\n | MessageHandlerFunction<V>\n\nfunction isMessageHandlerGenerator<V extends keyof RequenceService.Version>(\n // oxlint-disable-next-line typescript/no-unsafe-function-type\n handler: Function,\n): handler is MessageHandlerGenerator<V> | MessageHandlerAsyncGenerator<V> {\n return (\n handler.constructor.name === 'GeneratorFunction' ||\n handler.constructor.name === 'AsyncGeneratorFunction'\n )\n}\n\nconst activeMessages = new Map<string, Promise<void>>()\n\n/**\n * The codec each in-flight dispatch arrived under, keyed by messageId.\n *\n * **A reply echoes the codec of its dispatch.** That is what keeps this direction\n * of the wire free of any capability logic: the service never chooses, never\n * configures and never negotiates a codec — it answers in the language it was\n * addressed in. The operator's result consumer then reads the content type back\n * off the reply, so the round trip needs no field anywhere in the protocol.\n *\n * A messageId absent from this map means JSON, which is both the pre-migration\n * status quo and the right answer for an operator loopback that never went\n * through a dispatch.\n */\nconst messageCodecs = new Map<string, WireCodec>()\n\n// A delivery tag belongs to the exact channel that delivered the message. When\n// that channel closes (e.g. the connection dropped mid-processing), amqplib\n// turns ack/nack into a synchronous `IllegalOperationError: Channel closed`.\n// The broker has already requeued the delivery for redelivery, so there is\n// nothing left to acknowledge — and we must NOT route this through the\n// reconnecting channelWrapper, which would send the stale tag on the new\n// channel and trip a 406 PRECONDITION_FAILED that kills the fresh channel.\nfunction isChannelClosedError(error: unknown): boolean {\n return error instanceof Error && error.name === 'IllegalOperationError'\n}\n\nfunction safeAck(channel: ConfirmChannel, message: ConsumeMessage) {\n try {\n channel.ack(message)\n } catch (error) {\n if (!isChannelClosedError(error)) {\n throw error\n }\n }\n}\n\nfunction safeNack(channel: ConfirmChannel, message: ConsumeMessage) {\n try {\n channel.nack(message)\n } catch (error) {\n if (!isChannelClosedError(error)) {\n throw error\n }\n }\n}\n\nexport default function createConnection<V>(\n {\n url,\n version,\n prefetch = 1,\n silent = false,\n connectionTimeout,\n // Without a default this is `undefined` and amqp-connection-manager falls\n // back to 5s, which makes any event-loop stall >10s fatal to the connection.\n // Defaulted here rather than per service so every deployed service converges\n // on the same interval on its next release.\n heartbeatInterval = DEFAULT_AMQP_HEARTBEAT_SECONDS,\n connectionOptions,\n name,\n devOverlay = '',\n maxMessageSize,\n onConnectionStateChange,\n ...rest\n }: ConnectionOptions & { onConnectionStateChange?: ConnectionStateListener },\n messageHandler: MessageHandler<V>,\n) {\n const passthroughByteReferences =\n (rest as PrivilegedConnectionOptions).passthroughByteReferences ?? false\n const baseQueue = `${url.username}@${version}`\n const queue = devOverlay\n ? `${baseQueue}-dev-overlay-${devOverlay}`\n : baseQueue\n const exchange = url.username\n const connection = connect(url.toString(), {\n connectionOptions: {\n ...connectionOptions,\n // Who we are, what we run, what we can decode — declared in the AMQP\n // connection frame so `ui/backend` knows it BEFORE the first dispatch.\n // amqp-connection-manager reuses these options on every reconnect, so\n // the announcement re-lands automatically. Merged LAST: the requence_*\n // keys are the contract and a caller may not shadow them.\n clientProperties: {\n ...connectionOptions?.clientProperties,\n ...buildServiceClientProperties({\n libVersion: libVersion(),\n serviceVersion: version,\n name,\n devOverlay: Boolean(devOverlay),\n }),\n },\n },\n heartbeatIntervalInSeconds: heartbeatInterval,\n })\n\n // amqp-connection-manager auto-reconnects, but without a listener a mid-\n // processing disconnect is completely silent: the raw amqplib channel that an\n // in-flight handler closed over is torn down, and the broker requeues every\n // unacked delivery. Surface it so the drop is at least observable.\n connection.on('disconnect', ({ err }: { err?: Error }) => {\n if (!silent && err) {\n console.error('Requence AMQP connection lost:', err.message)\n }\n onConnectionStateChange?.({ connected: false, err })\n })\n\n // A reconnect fires 'connect' again, but the connectedPromise's listener has\n // already unsubscribed, so recovery was previously invisible. Track whether\n // we have connected before to distinguish the initial connect from a\n // reconnect: log the recovery (mirroring the loss above) and surface it so\n // the caller can flip its state back. Fires for the initial connect too;\n // callers treat `connected: true` idempotently.\n let hasConnected = false\n connection.on('connect', () => {\n if (hasConnected && !silent) {\n console.info('Requence AMQP reconnected')\n }\n hasConnected = true\n onConnectionStateChange?.({ connected: true })\n })\n\n const connectedPromise = new Promise<void>((resolve, reject) => {\n const unsubscribe = () => {\n clearTimeout(timeout)\n connection.removeListener('connect', handleConnect)\n connection.removeListener('connectFailed', handleConnectFailed)\n }\n\n const timeout = setTimeout(() => {\n handleConnectFailed({\n err: new RequenceConnectionError('Requence connection timeout'),\n })\n }, connectionTimeout)\n\n const handleConnect = () => {\n unsubscribe()\n resolve()\n }\n\n const handleConnectFailed = ({ err }: { err: Error }) => {\n unsubscribe()\n if (\n err.message.startsWith(\n 'Handshake terminated by server: 403 (ACCESS-REFUSED)',\n )\n ) {\n reject(new RequenceConnectionError('Invalid service credentials'))\n } else {\n reject(err)\n }\n }\n\n connection.addListener('connect', handleConnect)\n connection.addListener('connectFailed', handleConnectFailed)\n })\n\n const connectionId = crypto.randomUUID()\n const backchannelQueue = `${baseQueue}-backchannel-${connectionId}`\n const generatorTerminators = new Map<string, (reason: string) => void>()\n // Each registry entry keeps the invocation dispatcher of the message that\n // registered the callback. Entries are deleted when that message settles,\n // so a stored dispatcher is live exactly as long as its callback is — this\n // is what lets a nested function in a callback argument reconstruct as\n // invokable (chaining): its invocations egress through the registering\n // message's context (results stream → operator → peer backchannel).\n const callbacks = new Map<\n string,\n {\n callback: (...args: any[]) => void\n onCallbackInvoke: CallbackIngressContext['onCallbackInvoke']\n }\n >()\n\n // Backchannel ingress (concept invariant 2): a callback argument was\n // egress-transformed by the invoking side (files/streams → references,\n // oversized values → claim-checks), so it must rehydrate here before\n // reaching user code. Connection-scoped: the callback owner is typically a\n // CONTINUOUS service whose lifetime differs from any single message, so no\n // per-message signal applies. `onCallbackInvoke` is supplied per call from\n // the registry entry, so nested functions reconstruct invokable.\n // Passthrough consumers (the logic runtime's guest channel) keep byte/callback\n // references raw here too — claim-checks still resolve, but files/streams/\n // callbacks reach the registered callback as their JSON-safe wire objects so\n // they can cross the guest's process boundary.\n const backchannelInbound = createInboundBoundary(\n passthroughByteReferences\n ? { transformer: passthroughInboundTransformer }\n : {},\n )\n\n const channelWrapper = connection.createChannel({\n async setup(channel: ConfirmChannel) {\n if (devOverlay) {\n await channel.assertQueue(queue)\n await channel.bindQueue(queue, 'service', queue)\n }\n await channel.checkExchange(exchange)\n await channel.checkExchange(`${exchange}-retry`)\n await channel.checkQueue(queue)\n await channel.prefetch(prefetch)\n\n await channel.assertQueue(backchannelQueue, {\n exclusive: true,\n })\n\n await channel.bindQueue(backchannelQueue, 'service', backchannelQueue)\n\n await channel.consume(\n backchannelQueue,\n async (message) => {\n const result = backchannelMessageSchema.safeParse(message)\n\n if (!result.success) {\n return\n }\n\n const backchannelMessage = result.data\n\n switch (backchannelMessage.payload.type) {\n case 'stop': {\n generatorTerminators.get(backchannelMessage.messageId)?.(\n 'task stopped',\n )\n break\n }\n case 'callback': {\n const entry = callbacks.get(backchannelMessage.payload.callbackId)\n if (!entry) {\n break\n }\n let arg: unknown\n try {\n arg = await backchannelInbound(backchannelMessage.payload.arg, {\n onCallbackInvoke: entry.onCallbackInvoke,\n })\n } catch (error) {\n // The backchannel consumes with noAck and outside any message\n // context, so a failed rehydration has no failure channel.\n // Never hand user code a raw reference — log and drop the\n // invocation instead.\n console.warn(\n `dropped callback invocation |${backchannelMessage.payload.callbackId}|: argument rehydration failed`,\n error instanceof Error ? error.message : error,\n )\n break\n }\n entry.callback(arg)\n break\n }\n }\n },\n {\n noAck: true,\n },\n )\n },\n })\n\n // ChannelWrapper is an EventEmitter; an unhandled 'error' would otherwise\n // propagate. Observe it rather than letting it surface as an uncaught error.\n channelWrapper.on('error', (err: Error) => {\n if (!silent) {\n console.error('Requence AMQP channel error:', err.message)\n }\n })\n\n const publish = ({\n data,\n outputName,\n messageId,\n priority,\n ...headers\n }: {\n index: number\n data?: unknown\n outputName?: string | null\n messageId: string\n taskId: string\n priority?: number\n version: string\n debugMethod?: 'log' | 'warn' | 'info' | 'error'\n debug?: boolean\n connectionId?: string\n callbackId?: string\n propertyPath?: (string | number)[]\n begin?: boolean\n deferred?: boolean\n done?: boolean\n // Privileged result protocol: `overwrite` marks a data message whose\n // value replaces (instead of merges into) downstream aggregation;\n // `state` marks a nodeStates writeback. The operator honors both only\n // for privileged nodes. Flow through via `...headers`.\n overwrite?: boolean\n state?: boolean\n // Per-attempt id: identifies this consume-handler invocation so the\n // operator can fence a superseded attempt's stragglers on the same\n // messageId. Flows through via `...headers`.\n epoch?: string\n // Who ran this node, stamped on the `begin` publish ONLY (see\n // `buildServiceIdentityHeaders`). The operator freezes these into the\n // NODE_START update; they are display-only and nothing branches on them.\n libVersion?: string\n serviceName?: string\n capabilities?: string\n }) => {\n const { body, contentType } = encodeWireBody(\n data ?? null,\n messageCodecs.get(messageId) ?? 'json',\n )\n\n // Guard the body size before it hits the broker. An oversized publish makes\n // RabbitMQ drop the whole connection, which amqplib reports as a generic\n // \"channel closed\" for every in-flight message — impossible to attribute to\n // size after the fact. Rejecting here yields a precise, catchable error and\n // leaves the connection intact for other messages.\n if (body.byteLength > maxMessageSize) {\n return Promise.reject(\n new PayloadTooLargeError(body.byteLength, maxMessageSize),\n )\n }\n\n return channelWrapper.publish(exchange, '', body, {\n correlationId: messageId,\n contentType,\n persistent: true,\n priority,\n headers: {\n outputName: outputName ?? null,\n connectionId,\n ...headers,\n },\n })\n }\n\n // The privileged send API (unit 05 headers), shared by the main-path handler\n // context and act()'s ActorApi: imperative data/state publishes through the\n // caller's outbound boundary, enrolled in its ledger so `settle()` gates the\n // done marker on them — a final state emission mechanically flushes before\n // `done`. `epoch`/`priority` are main-path-only and omitted from the\n // published headers when absent, keeping act()'s output byte-identical.\n const buildSendApi = (deps: {\n outbound: OutboundBoundary\n registerCallback: (callback: (...args: any[]) => void) => {\n sourceId: string\n callbackId: string\n }\n taskId: string\n messageId: string\n nextIndex: () => number\n epoch?: string\n priority?: number\n // act() only: wait for the deferring message's own processing to finish.\n gate?: () => Promise<void>\n }) => {\n const base = {\n ...(deps.epoch === undefined ? {} : { epoch: deps.epoch }),\n ...(deps.priority === undefined ? {} : { priority: deps.priority }),\n }\n return {\n async sendToOutput(\n outputName: string,\n data: unknown,\n options?: { overwrite?: boolean },\n ) {\n await deps.gate?.()\n deps.outbound.track(\n publish({\n index: deps.nextIndex(),\n version,\n messageId: deps.messageId,\n taskId: deps.taskId,\n data: await deps.outbound.send(data, {\n outputName: outputName as string | null,\n onCallback: deps.registerCallback,\n }),\n outputName: outputName as string | null,\n // only set when requested — omitted publishes stay identical\n ...(options?.overwrite ? { overwrite: true } : {}),\n ...base,\n }),\n )\n },\n async send(data: unknown, options?: { overwrite?: boolean }) {\n await deps.gate?.()\n deps.outbound.track(\n publish({\n index: deps.nextIndex(),\n version,\n messageId: deps.messageId,\n taskId: deps.taskId,\n data: await deps.outbound.send(data, {\n outputName: null,\n onCallback: deps.registerCallback,\n }),\n ...(options?.overwrite ? { overwrite: true } : {}),\n ...base,\n }),\n )\n },\n async sendState(state: unknown) {\n await deps.gate?.()\n deps.outbound.track(\n publish({\n // out-of-band like callback publishes: state bypasses the\n // operator's ordered dispatch buffer, so it must not consume a\n // publishIndex slot — `done` would otherwise wait on a gap.\n index: 0,\n version,\n messageId: deps.messageId,\n taskId: deps.taskId,\n // through the outbound boundary: a large state blob offloads\n // via claim-check like any large body, and the tracked publish\n // is settled before `done` goes out.\n data: await deps.outbound.send(state, { outputName: null }),\n state: true,\n ...base,\n }),\n )\n },\n }\n }\n\n channelWrapper.addSetup(async (channel: ConfirmChannel) => {\n channel.consume(queue, async (message) => {\n if (!message) {\n return\n }\n\n let publishIndex = 0\n let acked = false\n let terminated = false\n const registeredCallbackIds = new Set<string>()\n let resolveActiveMessage = () => {}\n // Captured for the finally block; header parsing now happens inside the\n // try so a malformed header goes through the error handling below instead\n // of throwing out of this async consumer as an unhandled rejection.\n let messageIdForCleanup: string | undefined\n // One epoch per consume-handler invocation (declared out here so the\n // catch-branch republishes can stamp it too). On redelivery/reconnect a\n // second invocation gets a fresh epoch, letting the operator tell the\n // attempts apart and fence the superseded one.\n const epoch = crypto.randomUUID()\n\n try {\n const { messageId, taskId, mode } = headerSchema.parse(message)\n messageIdForCleanup = messageId\n\n // The capability gate, ahead of everything the dispatch could ask of\n // this build — including its own decoding. A requirement stated in the\n // body would be unreadable exactly when it matters, so it rides in the\n // headers and is checked here, before `payloadSchema` touches the bytes.\n //\n // An empty requirement (every message published before this existed)\n // passes untouched.\n const unsupported = unsupportedCapabilities(\n readRequiredCapabilities(message.properties.headers),\n )\n if (unsupported.length > 0) {\n throw new UnsupportedCapabilityError(unsupported)\n }\n\n // Recorded before anything can publish, so every reply on this message —\n // including one from an error path — echoes the codec it arrived under.\n const dispatchCodec = wireCodecFromContentType(\n message.properties.contentType,\n )\n messageCodecs.set(messageId, dispatchCodec)\n\n let deferred = false\n let deferredReason: string | null = null\n\n const messageExecution = Promise.withResolvers<void>()\n activeMessages.set(messageId, messageExecution.promise)\n messageExecution.promise.then(() => {\n activeMessages.delete(messageId)\n })\n resolveActiveMessage = () => {\n messageExecution.resolve()\n }\n\n const payload = payloadSchema.parse(message)\n\n // The per-message abort controller is hoisted out of\n // createContextHelper so the outbound boundary can share its signal.\n const abortController = new AbortController()\n\n // One callback registrar for every egress sub-path (result, deferred\n // send, callback arg). Registered callbacks carry this message's\n // dispatcher so nested functions in their invocation arguments\n // reconstruct invokable (chaining).\n const registerCallback = (callback: (...args: any[]) => void) => {\n const callbackId = crypto.randomUUID()\n registeredCallbackIds.add(callbackId)\n callbacks.set(callbackId, {\n callback,\n onCallbackInvoke: dispatchInvocation,\n })\n return { sourceId: connectionId, callbackId }\n }\n\n // The component's single outbound boundary: owns ctx construction,\n // the background-upload ledger (done-gate) and the fail policy.\n // Fail-hard sends surface via outbound.settle() before the done\n // marker + ack; best-effort (log) sends degrade to warnings.\n const outbound = createOutboundBoundary({\n uploadUrl: payload.options.uploadUrl,\n streamUrl: payload.options.streamUrl,\n maxPayloadSize: payload.options.maxPayloadSize,\n maxFileSize: payload.options.maxFileSize,\n // Replies echo the dispatch codec, so the claim-check must measure\n // with it too — measured size == published size.\n wireCodec: dispatchCodec,\n signal: abortController.signal,\n warn: (msg, error) =>\n console.warn(\n `${msg} (task ${taskId})`,\n error instanceof Error ? error.message : (error ?? ''),\n ),\n })\n\n // This message's single invocation egress: callback arguments are\n // real node output (they carry an outputName), so they go through the\n // same boundary as results — nested files offload, nested functions\n // become callbacks. The send + publish are tracked in the boundary's\n // ledger, so a failure fails the task at the settle gate. Used both\n // for callbacks arriving in this message's input (via\n // createContextHelper) and for callbacks this message registers\n // (chained invocations dispatched from the backchannel).\n const dispatchInvocation = (params: {\n sourceId: string\n callbackId: string\n outputName: string | null\n propertyPath: (string | number)[]\n arg: unknown\n }) => {\n outbound.track(\n outbound\n .send(params.arg, {\n outputName: params.outputName,\n onCallback: registerCallback,\n })\n .then((data) =>\n publish({\n index: 0,\n version,\n taskId,\n messageId,\n data,\n outputName: params.outputName,\n connectionId: params.sourceId,\n callbackId: params.callbackId,\n propertyPath: params.propertyPath,\n epoch,\n }),\n ),\n )\n }\n\n const [extendedContext, terminatePromise] = (await createContextHelper({\n taskId,\n // Rehydration (FileObject/StreamObject -> RequenceFile/RequenceStream)\n // happens inside createContextHelper via its inbound boundary — the\n // signal-aware pass whose instances reach the handler.\n input: payload.input,\n configuration: payload.configuration,\n abortController,\n passthroughByteReferences,\n // Privileged send API on the handler ctx (runtime-only, hidden from\n // the ContextHelper type): shares this message's outbound boundary,\n // publishIndex counter, epoch and priority.\n sends: {\n ...buildSendApi({\n outbound,\n registerCallback,\n taskId,\n messageId,\n nextIndex: () => publishIndex++,\n epoch,\n priority: message.properties.priority,\n }),\n // Passthrough consumers hold raw callback wire refs — this is\n // their invocation egress, routed through the same\n // dispatchInvocation as a rehydrated callback call (fire-and-\n // forget; the outbound ledger settles the publish).\n invokeCallback: (ref, arg) =>\n dispatchInvocation({\n sourceId: ref.sourceId,\n callbackId: ref.callbackId,\n outputName: ref.outputName,\n propertyPath: ref.propertyPath,\n arg,\n }),\n options: payload.options,\n },\n onLog(debugMethod, data) {\n // Best-effort: a debug log must never fail the task. The boundary\n // sanitizes the payload (functions/opaque instances → labels),\n // degrades offload failures to warnings, and keeps the done-gate\n // waiting for the upload without letting it fail the task. On a\n // transform error it resolves `undefined` and nothing is published.\n void outbound.send(data, { bestEffort: true }).then((mapped) => {\n if (mapped === undefined) {\n return\n }\n publish({\n index: publishIndex++,\n version,\n messageId,\n taskId,\n data: mapped,\n debugMethod,\n priority: message.properties.priority,\n debug: true,\n epoch,\n })\n })\n },\n onDefer(reason) {\n deferred = true\n deferredReason = reason || null\n\n return obfuscate(\n taskId,\n messageId,\n payload.options.uploadUrl ?? '',\n payload.options.streamUrl ?? '',\n payload.options.maxPayloadSize?.toString() ?? '',\n payload.options.maxFileSize?.toString() ?? '',\n )\n },\n onCallback: dispatchInvocation,\n })) as unknown as [\n MessageHandlerContext<V>,\n PromiseWithResolvers<string>,\n ]\n\n await publish({\n index: publishIndex++,\n version,\n messageId,\n taskId,\n priority: message.properties.priority,\n begin: true,\n epoch,\n // The one stamp per node execution: this build, this box. It becomes\n // the NODE_START update's `service`, which is written once and never\n // re-derived — so anything absent here is lost for that run.\n ...buildServiceIdentityHeaders({\n libVersion: libVersion(),\n name,\n }),\n })\n\n if (isMessageHandlerGenerator(messageHandler)) {\n if (mode === 'CONTINUOUS') {\n // CONTINUOUS: ACK immediately, operator watchdog supervises. A\n // LINEAR message stays unacked until done — prefetch keeps\n // bounding concurrent work and the broker redelivers on a crash.\n safeAck(channel, message)\n acked = true\n }\n\n const generator = messageHandler(extendedContext)\n const terminationPromise = Promise.withResolvers<typeof abortSymbol>()\n generatorTerminators.set(messageId, (reason) => {\n terminated = true\n // Suppress native AbortError that may reject generator.return() when\n // context.terminated.signal fires and cancels a pending await inside\n // the generator (e.g. node:timers/promises setTimeout with { signal }).\n ;(generator.return() as Promise<unknown>).catch(\n (error: unknown) => {\n if (\n terminated &&\n error instanceof Error &&\n error.name === 'AbortError' &&\n !(error instanceof AbortError)\n ) {\n return\n }\n throw error\n },\n )\n terminationPromise.resolve(abortSymbol)\n terminatePromise.resolve(reason)\n })\n\n await handlerStorage.run(\n extendedContext as ContextHelper,\n async () => {\n while (true) {\n type IterResult = IteratorResult<\n MessageHandlerReturnValue<V, null>,\n void | MessageHandlerReturnValue<V, null>\n >\n // Catch native AbortError from context.terminated.signal so\n // generator implementations don't need their own try/catch.\n const nextPromise = Promise.resolve(generator.next()).then(\n (r) => r,\n (error: unknown) => {\n if (\n terminated &&\n error instanceof Error &&\n error.name === 'AbortError' &&\n !(error instanceof AbortError)\n ) {\n return { value: undefined, done: true } as IterResult\n }\n throw error\n },\n )\n const next = await Promise.race([\n terminationPromise.promise,\n nextPromise,\n ])\n if (next === abortSymbol) {\n break\n }\n\n const { value: result, done } = next\n\n if (deferred) {\n deferred = false\n console.warn(\n 'returning a value in a deferred message resets the deferred status',\n )\n }\n\n const { value: rawValue, outputName } =\n unwrapOutputValue(result)\n const value = await outbound.send(rawValue, {\n outputName,\n onCallback: registerCallback,\n })\n\n if (!done || typeof value !== 'undefined') {\n await publish({\n index: publishIndex++,\n version,\n messageId,\n taskId,\n data: value,\n priority: message.properties.priority,\n outputName,\n epoch,\n })\n }\n\n if (done) {\n break\n }\n }\n },\n )\n } else {\n const result = await handlerStorage.run(\n extendedContext as ContextHelper,\n () => messageHandler(extendedContext),\n )\n const { value: rawValue, outputName } = unwrapOutputValue(result)\n const value = await outbound.send(rawValue, {\n outputName,\n onCallback: () => {\n throw new Error(\n 'callbacks can only be used in generator functions',\n )\n },\n })\n if (deferred && value) {\n console.warn(\n 'returning a value in a deferred message resets the deferred status',\n )\n deferred = false\n }\n\n if (!deferred || value) {\n await publish({\n index: publishIndex++,\n version,\n messageId,\n taskId,\n data: value,\n priority: message.properties.priority,\n outputName,\n epoch,\n })\n }\n }\n\n await new Promise<void>((resolve, reject) => {\n setImmediate(async () => {\n try {\n // The boundary's settle gate: waits for every tracked background\n // upload/publish, then throws an AggregateError on any fail-hard\n // failure — which surfaces here and reaches the outer catch ->\n // exception republish -> throwServiceError -> failNode. The done\n // marker + ack only happen once every upload succeeded.\n if (!deferred) {\n await outbound.settle()\n }\n\n await publish({\n index: publishIndex++,\n version,\n messageId,\n taskId,\n data: deferredReason,\n priority: message.properties.priority,\n deferred,\n done: !deferred,\n epoch,\n })\n\n if (!acked) {\n safeAck(channel, message)\n }\n resolve()\n } catch (error) {\n reject(error)\n }\n })\n })\n } catch (error) {\n if (error instanceof SkipError) {\n if (!acked) {\n safeNack(channel, message)\n }\n return\n }\n if (error instanceof RetryError) {\n if (!acked) {\n safeAck(channel, message)\n }\n const properties: Options.Publish = {\n ...message.properties,\n expiration: error.delay || 1_000, // 1s\n }\n channelWrapper\n .publish(\n `${exchange}-retry`,\n version, // to other services\n message.content,\n properties,\n )\n .catch((publishError: unknown) => {\n if (!silent) {\n console.error(\n 'Failed to republish message for retry:',\n publishError,\n )\n }\n })\n\n return\n }\n\n // A refusal, not a failure: this box is the wrong one, the message is\n // fine. It goes back by REPUBLISHING to `<exchange>-retry`, never by\n // nacking, because a nack can carry no rejection count and a classic\n // queue offers none either — see `CAPABILITY_HEADER_KEYS.mismatch` in\n // `@requence/helpers/protocol` for the full argument, and this file's\n // spec, which pins it. The republish reaches the operator's error\n // consumer, which already counts attempts, delays and fails the node.\n if (error instanceof UnsupportedCapabilityError) {\n if (!silent) {\n console.error(error.message)\n }\n\n if (!acked) {\n safeAck(channel, message)\n }\n channelWrapper\n .publish(\n `${exchange}-retry`,\n 'operator', // back to operator\n // The dispatch verbatim: a reroute re-dispatches these bytes, and\n // this build never decoded them.\n message.content,\n {\n ...message.properties,\n headers: {\n ...message.properties.headers,\n version,\n [CAPABILITY_HEADER_KEYS.mismatch]: true,\n index: publishIndex++,\n 'error-message': error.message,\n },\n },\n )\n .catch((publishError: unknown) => {\n if (!silent) {\n console.error(\n 'Failed to publish capability mismatch message:',\n publishError,\n )\n }\n })\n\n return\n }\n\n if (error instanceof AbortError && error.message.length > 0) {\n if (!acked) {\n safeAck(channel, message)\n }\n channelWrapper\n .publish(\n `${exchange}-retry`,\n 'operator', //back to operator\n error.message,\n {\n ...message.properties,\n contentType: 'text/plain',\n headers: {\n ...message.properties.headers,\n index: publishIndex++,\n abort: true,\n },\n },\n )\n .catch((publishError: unknown) => {\n if (!silent) {\n console.error('Failed to publish abort message:', publishError)\n }\n })\n\n return\n }\n\n // Native AbortError thrown when context.terminated.signal fires\n // (e.g. node:timers/promises setTimeout with { signal: context.terminated.signal }).\n // Only suppress when actually in a terminated state — otherwise a\n // different AbortSignal caused the error and it should propagate.\n if (\n terminated &&\n error instanceof Error &&\n error.name === 'AbortError' &&\n !(error instanceof AbortError)\n ) {\n if (!acked) {\n safeAck(channel, message)\n }\n return\n }\n\n if (error instanceof Error) {\n if (!silent) {\n console.error('Encountered an error inside service handler:')\n console.error(error)\n }\n\n if (!acked) {\n safeAck(channel, message)\n }\n channelWrapper\n .publish(\n `${exchange}-retry`,\n 'operator', // back to operator\n message.content,\n {\n ...message.properties,\n headers: {\n ...message.properties.headers,\n version,\n exception: true,\n index: publishIndex++,\n 'error-message': error.message || 'error in service handler',\n },\n },\n )\n .catch((publishError: unknown) => {\n if (!silent) {\n console.error(\n 'Failed to publish exception message:',\n publishError,\n )\n }\n })\n\n return\n }\n } finally {\n if (messageIdForCleanup) {\n generatorTerminators.delete(messageIdForCleanup)\n // Bounded with the delivery rather than left to accumulate. A publish\n // that outlives the handler — a deferred message's later send — then\n // falls back to JSON, which the operator decodes correctly off the\n // header. It loses the size win for that one message and nothing else:\n // degrading to JSON is always safe, which is why the fallback is JSON\n // and not \"the last codec we saw\".\n messageCodecs.delete(messageIdForCleanup)\n }\n registeredCallbackIds.forEach((id) => callbacks.delete(id))\n resolveActiveMessage()\n }\n })\n })\n\n const activeMessageKeys = new Set<string>()\n const api: ConnectionApi<V> = {\n close: async () => {\n await channelWrapper.close()\n await connection.close()\n },\n open: () => connectedPromise.then(() => api),\n\n async act(messageKey, actor) {\n if (activeMessageKeys.has(messageKey)) {\n throw new Error('a defer key can only be used once')\n }\n\n activeMessageKeys.add(messageKey)\n\n let publishIndex = 0\n const { taskId, messageId, ...options } =\n messageKeySchema.parse(messageKey)\n\n const activeMessage = async () => {\n if (activeMessages.has(messageId)) {\n await activeMessages.get(messageId)\n }\n }\n\n const registeredCallbackIds = new Set<string>()\n // The deferred path's own outbound boundary: its ledger replaces the\n // old donePromises/uploadErrors pair — errors are caught at\n // registration time (nothing sits unhandled during long generator\n // iteration) and surfaced by settle() after the loop.\n const outbound = createOutboundBoundary(options)\n const registerCallback = (callback: (...args: any[]) => void) => {\n const callbackId = crypto.randomUUID()\n registeredCallbackIds.add(callbackId)\n callbacks.set(callbackId, {\n callback,\n onCallbackInvoke: dispatchInvocation,\n })\n return { sourceId: connectionId, callbackId }\n }\n\n // Deferred-path analogue of the main path's dispatchInvocation: chained\n // invocations of callbacks registered here egress through this deferred\n // message's context (no epoch, matching its other publishes).\n const dispatchInvocation = (params: {\n sourceId: string\n callbackId: string\n outputName: string | null\n propertyPath: (string | number)[]\n arg: unknown\n }) => {\n outbound.track(\n outbound\n .send(params.arg, {\n outputName: params.outputName,\n onCallback: registerCallback,\n })\n .then((data) =>\n publish({\n index: 0,\n version,\n taskId,\n messageId,\n data,\n outputName: params.outputName,\n connectionId: params.sourceId,\n callbackId: params.callbackId,\n propertyPath: params.propertyPath,\n }),\n ),\n )\n }\n\n const sendApi = {\n // The shared privileged send API, composed with act()'s own index\n // counter and its active-message gate; no epoch/priority — the\n // deferred path's publishes never carried them.\n ...buildSendApi({\n outbound,\n registerCallback,\n taskId,\n messageId,\n nextIndex: () => publishIndex++,\n gate: activeMessage,\n }),\n async abort(error: string | Error) {\n await activeMessage()\n channelWrapper.publish(\n `${exchange}-retry`,\n 'operator',\n error instanceof Error ? error.message : error,\n {\n persistent: true,\n correlationId: messageId,\n expiration: 0,\n priority: 0,\n contentType: 'text/plain',\n headers: {\n taskId,\n index: publishIndex++,\n abort: true,\n },\n },\n )\n },\n }\n\n const result = await actor(sendApi as ActorApi<V>)\n\n if (\n result != null &&\n typeof result === 'object' &&\n (Symbol.asyncIterator in result || Symbol.iterator in result)\n ) {\n // Generator: iterate and send each yielded value\n const iterable = result as AsyncIterable<unknown> | Iterable<unknown>\n for await (const value of iterable) {\n if (value !== undefined) {\n await sendApi.send(value)\n }\n }\n } else if (result !== undefined) {\n await sendApi.send(result)\n }\n\n await new Promise((resolve) => setImmediate(resolve))\n await activeMessage()\n\n try {\n // Settle gate: waits while sends enqueue more sends, then throws an\n // AggregateError on any failed background upload or publish.\n await outbound.settle()\n } catch (error) {\n // Do not mark the message done with a dangling reference. Signal\n // failure over the deferred-path error channel (abort -> operator\n // fails the node) and throw so act()'s caller sees it too.\n registeredCallbackIds.forEach((id) => callbacks.delete(id))\n const first =\n error instanceof AggregateError && error.errors[0] instanceof Error\n ? error.errors[0]\n : error instanceof Error\n ? error\n : new Error(String(error))\n await sendApi.abort(first)\n activeMessageKeys.delete(messageKey)\n throw error\n }\n\n registeredCallbackIds.forEach((id) => callbacks.delete(id))\n\n await publish({\n index: publishIndex++,\n version,\n messageId,\n taskId,\n done: true,\n })\n\n activeMessageKeys.delete(messageKey)\n },\n }\n\n return api\n}\n",
15
15
  "/**\n * Thrown by a `RequenceStream` remote read when the producer terminated\n * abnormally (or vanished) mid-stream — the explicit alternative to the\n * clean-looking EOF a truncated live relay used to produce. Surfaced through\n * the framed consumer-GET protocol (see `streamFraming.ts`): a TRUNCATED\n * terminal frame, or an EOF with no terminal frame at all.\n */\nexport class RequenceStreamTruncatedError extends Error {\n constructor(message = 'stream truncated') {\n super(message)\n this.name = 'RequenceStreamTruncatedError'\n }\n}\n",
16
16
  "import { RequenceStreamTruncatedError } from './errors.ts'\n\n/**\n * Opt-in framed protocol for the consumer stream GET, closing the\n * silent-truncation gap: the server *decides* complete-vs-truncated (Redis\n * EOS/ERR markers) but a plain HTTP body cannot state it — a mid-stream\n * producer abort and a clean end both look like EOF. A client that sends\n * `x-requence-stream-protocol: framed` receives length-prefixed frames ending\n * in an explicit terminal frame; the server echoes the header only when it\n * actually frames. Clients that don't send the header (Python SDK, older TS)\n * get today's raw bytes — compatible in both directions.\n *\n * Frame layout: `type u8 | length u32 BE | payload[length]`.\n */\nexport const STREAM_PROTOCOL_HEADER = 'x-requence-stream-protocol'\nexport const STREAM_PROTOCOL_FRAMED = 'framed'\n\nconst DATA = 0x00\n/** Terminal: the stream is complete. Nothing may follow. */\nconst END = 0x01\n/** Terminal: the producer aborted / vanished. Payload = UTF-8 reason. */\nconst TRUNCATED = 0x02\n\nconst HEADER_BYTES = 5\n\n/** 5-byte DATA frame header; write it, then the chunk itself (no copy). */\nexport function dataFrameHeader(byteLength: number): Uint8Array {\n const header = new Uint8Array(HEADER_BYTES)\n new DataView(header.buffer).setUint32(1, byteLength, false)\n header[0] = DATA\n return header\n}\n\nexport const END_FRAME: Uint8Array = new Uint8Array([END, 0, 0, 0, 0])\n\nexport function truncatedFrame(reason: string): Uint8Array {\n const payload = new TextEncoder().encode(reason)\n const frame = new Uint8Array(HEADER_BYTES + payload.byteLength)\n new DataView(frame.buffer).setUint32(1, payload.byteLength, false)\n frame[0] = TRUNCATED\n frame.set(payload, HEADER_BYTES)\n return frame\n}\n\n/**\n * Decode a framed body back into raw chunks. DATA payloads are re-emitted;\n * END terminates cleanly; TRUNCATED — and an EOF without any terminal frame\n * (transport drop, proxy cut) — error the stream with a typed\n * `RequenceStreamTruncatedError`. Frames may be split across chunk boundaries.\n */\nexport function createFrameDecoder(): TransformStream<Uint8Array, Uint8Array> {\n let buffer: Uint8Array = new Uint8Array(0)\n let terminal = false\n\n return new TransformStream<Uint8Array, Uint8Array>({\n transform(chunk, controller) {\n if (terminal) {\n if (chunk.byteLength > 0) {\n throw new Error('stream protocol error: bytes after terminal frame')\n }\n return\n }\n\n if (buffer.byteLength === 0) {\n buffer = chunk\n } else {\n const merged = new Uint8Array(buffer.byteLength + chunk.byteLength)\n merged.set(buffer, 0)\n merged.set(chunk, buffer.byteLength)\n buffer = merged\n }\n\n while (buffer.byteLength >= HEADER_BYTES) {\n const type = buffer[0]\n const length = new DataView(\n buffer.buffer,\n buffer.byteOffset,\n buffer.byteLength,\n ).getUint32(1, false)\n if (buffer.byteLength < HEADER_BYTES + length) {\n break\n }\n // slice (copy): the emitted chunk must not pin the merge buffer\n const payload = buffer.slice(HEADER_BYTES, HEADER_BYTES + length)\n buffer = buffer.subarray(HEADER_BYTES + length)\n\n switch (type) {\n case DATA: {\n if (payload.byteLength > 0) {\n controller.enqueue(payload)\n }\n break\n }\n case END: {\n terminal = true\n if (buffer.byteLength > 0) {\n throw new Error(\n 'stream protocol error: bytes after terminal frame',\n )\n }\n controller.terminate()\n return\n }\n case TRUNCATED: {\n terminal = true\n controller.error(\n new RequenceStreamTruncatedError(\n new TextDecoder().decode(payload) || undefined,\n ),\n )\n return\n }\n default: {\n throw new Error(`stream protocol error: unknown frame type ${type}`)\n }\n }\n }\n },\n flush(controller) {\n if (!terminal) {\n controller.error(\n new RequenceStreamTruncatedError(\n 'connection closed before terminal frame',\n ),\n )\n }\n },\n })\n}\n",
@@ -21,7 +21,7 @@
21
21
  "import type { FileObject } from '@requence/helpers'\nimport { isFileObject, toFileObject } from '@requence/helpers'\nimport type { TransformContext, ValueHandler } from '@requence/transformer'\n\nimport type { FileEgressContext } from './context.ts'\nimport { assertOk } from './transport.ts'\nimport { RequenceFile } from '../RequenceFile.ts'\n\nasync function upload(\n ctx: TransformContext,\n uploadUrl: string,\n body: BodyInit | null,\n contentType?: string | null,\n maxFileSize?: number,\n): Promise<FileObject> {\n const uploadResponse = await ctx.fetch(uploadUrl, {\n method: 'POST',\n signal: ctx.signal,\n headers: {\n ...(contentType ? { 'Content-Type': contentType } : {}),\n // Per-task cap transmitted via task options; the files service\n // enforces it (absent ⇒ its hardcoded fallback cap).\n ...(maxFileSize !== undefined\n ? { 'file-size': String(maxFileSize) }\n : {}),\n },\n body,\n })\n\n await assertOk(uploadResponse, uploadUrl, 'upload')\n\n const data = await uploadResponse.json()\n // Explicit field checks rather than `isFileObject`: the FileObject schema\n // requires a positive size, but a legitimate 0-byte file is valid here.\n if (\n !data ||\n typeof data !== 'object' ||\n typeof (data as { url?: unknown }).url !== 'string' ||\n !(data as { url: string }).url ||\n typeof (data as { mime?: unknown }).mime !== 'string' ||\n typeof (data as { size?: unknown }).size !== 'number'\n ) {\n throw new Error(`malformed upload response (${uploadUrl})`)\n }\n\n return toFileObject(data as { size: number; mime: string; url: string })\n}\n\n/**\n * Value handler owning `RequenceFile` — and, through it, raw `Blob`s (a Blob\n * adapts through RequenceFile; no separate Blob branch exists anywhere else).\n *\n * Egress uploads the bytes via the injected transport and returns the\n * `FileObject` reference (idempotent for an already-remote file). Ingress\n * reconstructs the lazy remote instance.\n */\nexport function createRequenceFileHandler(): ValueHandler<\n RequenceFile | Blob,\n FileObject | null,\n FileEgressContext\n> {\n return {\n tag: 'RequenceFile',\n\n canHandle: (value) => RequenceFile.canHandle(value),\n\n async serialize(value, ctx) {\n // Idempotent: an already-remote file keeps its existing reference.\n if (value instanceof RequenceFile && value.fileObject) {\n return value.fileObject\n }\n\n if (!ctx.uploadUrl) {\n ctx.onOffloadSkip?.()\n return null\n }\n\n try {\n if (value instanceof RequenceFile) {\n return await upload(\n ctx,\n ctx.uploadUrl,\n await value.blob(),\n value.mimeType,\n ctx.maxFileSize,\n )\n }\n return await upload(\n ctx,\n ctx.uploadUrl,\n value,\n value.type,\n ctx.maxFileSize,\n )\n } catch (error) {\n if (!(error instanceof Error)) {\n throw error\n }\n // Fail-hard by default: only swallow (to null) when a caller opts in\n // with `onOffloadFail`. Otherwise propagate so the node/task fails loudly.\n if (ctx.onOffloadFail) {\n ctx.onOffloadFail(error)\n return null\n }\n throw error\n }\n },\n\n isReference: (value): value is FileObject => isFileObject(value),\n\n deserialize(ref, ctx) {\n return RequenceFile.fromFileObject(ref as FileObject, ctx.signal)\n },\n }\n}\n",
22
22
  "import { AsyncLocalStorage } from 'node:async_hooks'\n\n/**\n * Ambient collection scope for background stream-body uploads.\n *\n * A `RequenceStream` serializes in two beats: the reference (`StreamObject`) is\n * known right after registration, but the body keeps uploading in the\n * background — that is what lets a consumer join the stream *while* the\n * producer is still pushing. The caller, however, must not treat the transform\n * as durably complete (ack the task, mark it done) until every background body\n * upload has settled.\n *\n * `withRequenceStreams` is that collection point: the stream handler registers\n * its background upload into the ambient store, and the caller receives a\n * single `done` promise to feed its completion gate.\n */\nconst pendingUploads = new AsyncLocalStorage<Array<Promise<void>>>()\n\n/**\n * Run `fn` (typically a `transformOutbound` call) collecting every background\n * stream-body upload started within it. Returns the function's result together\n * with a `done` promise that resolves when all collected uploads settle and\n * rejects on the first failure. `value` is available immediately — publish it\n * while the bodies still stream; await `done` before acking.\n */\nexport async function withRequenceStreams<T>(\n fn: () => Promise<T> | T,\n): Promise<{ value: T; done: Promise<void> }> {\n const uploads: Array<Promise<void>> = []\n const value = await pendingUploads.run(uploads, fn)\n return { value, done: Promise.all(uploads).then(() => undefined) }\n}\n\n/**\n * Hand a background upload to the ambient scope. Returns false when no scope\n * is active — the caller (the stream handler) must then await the work inline:\n * still correct, just not live. Never fire-and-forget.\n *\n * @internal\n */\nexport function registerPendingUpload(work: Promise<void>): boolean {\n const store = pendingUploads.getStore()\n if (!store) {\n return false\n }\n store.push(work)\n return true\n}\n",
23
23
  "import type { StreamObject } from '@requence/helpers'\nimport { isStreamObject, toStreamObject } from '@requence/helpers'\nimport type { TransformContext, ValueHandler } from '@requence/transformer'\n\nimport type { StreamEgressContext } from './context.ts'\nimport { assertOk } from './transport.ts'\nimport { RequenceStream } from '../RequenceStream.ts'\nimport { registerPendingUpload } from '../withRequenceStreams.ts'\n\nasync function registerAndUpload(\n ctx: TransformContext,\n streamUrl: string,\n stream: ReadableStream,\n contentType?: string | null,\n maxFileSize?: number,\n): Promise<{ ref: StreamObject; bodyUpload?: Promise<void> }> {\n const [testStream, dataStream] = stream.tee()\n\n // Read the first chunk before firing the body upload: nodejs closes an empty\n // duplex `half` body before the fetch executes, so we must know whether any\n // data exists. `dataStream` keeps the buffered chunk (tee), so no bytes are\n // lost. (Obsolete once we move to bun.)\n const reader = testStream.getReader()\n const { done: isEmpty } = await reader.read()\n reader.cancel()\n\n const streamResponse = await ctx.fetch(streamUrl, {\n method: 'POST',\n signal: ctx.signal,\n headers: {\n ...(contentType ? { 'Content-Type': contentType } : {}),\n // Per-task cap transmitted via task options; the files service stores\n // it with the stream and enforces it during the body upload (absent ⇒\n // its hardcoded fallback cap).\n ...(maxFileSize !== undefined\n ? { 'file-size': String(maxFileSize) }\n : {}),\n },\n })\n\n await assertOk(streamResponse, streamUrl, 'stream registration')\n\n const data = await streamResponse.json()\n if (!isStreamObject(toStreamObject(data as { mime: string; url: string }))) {\n throw new Error(`malformed stream registration response (${streamUrl})`)\n }\n\n const { mime, url } = data as { mime: string; url: string }\n\n if (isEmpty) {\n // Legitimate zero-byte stream: POST a static empty body. The duplex\n // \"wait for first byte\" workaround only applies to a streaming body.\n const emptyResponse = await ctx.fetch(url, {\n method: 'POST',\n signal: ctx.signal,\n headers: contentType ? { 'Content-Type': contentType } : {},\n body: new Uint8Array(0),\n })\n await assertOk(emptyResponse, url, 'stream body upload')\n await emptyResponse.body?.cancel()\n return { ref: toStreamObject({ mime, url }) }\n }\n\n // Not awaited here: the body streams in the background so the reference can\n // be published while data still flows. Completion/failure surfaces through\n // the returned promise, collected by `withRequenceStreams`.\n const bodyUpload = (async () => {\n const bodyResponse = await ctx.fetch(url, {\n method: 'POST',\n signal: ctx.signal,\n duplex: 'half', // not typed but needed for nodejs to handle readable streams\n body: dataStream,\n } as RequestInit)\n await assertOk(bodyResponse, url, 'stream body upload')\n await bodyResponse.body?.cancel()\n })()\n\n return { ref: toStreamObject({ mime, url }), bodyUpload }\n}\n\n/**\n * Value handler owning `RequenceStream` — and, through it, raw `Response`s (a\n * Response body adapts through RequenceStream; no separate Response branch\n * exists anywhere else).\n *\n * Egress registers the stream, returns the `StreamObject` reference\n * immediately, and pushes the body in the background (collected by the ambient\n * `withRequenceStreams` scope; without a scope the upload is awaited inline —\n * still correct, just not live). Ingress reconstructs a lazy stream that reads\n * live-or-durable.\n */\nexport function createRequenceStreamHandler(): ValueHandler<\n RequenceStream | Response,\n StreamObject | null,\n StreamEgressContext\n> {\n return {\n tag: 'RequenceStream',\n\n canHandle: (value) => RequenceStream.canHandle(value),\n\n async serialize(value, ctx) {\n // Idempotent: an already-remote stream keeps its existing reference.\n if (value instanceof RequenceStream && value.streamObject) {\n return value.streamObject\n }\n\n if (!ctx.streamUrl) {\n ctx.onOffloadSkip?.()\n return null\n }\n\n const body =\n value instanceof Response\n ? // A body-less Response is a legitimate empty stream.\n (value.body ??\n new ReadableStream({\n start(controller) {\n controller.close()\n },\n }))\n : value.stream()\n const contentType =\n value instanceof Response\n ? value.headers.get('Content-Type')\n : value.mimeType\n\n try {\n const { ref, bodyUpload } = await registerAndUpload(\n ctx,\n ctx.streamUrl,\n body,\n contentType,\n ctx.maxFileSize,\n )\n if (bodyUpload && !registerPendingUpload(bodyUpload)) {\n // No ambient scope collecting background work: await inline. Correct,\n // just not live — never fire-and-forget.\n await bodyUpload\n }\n return ref\n } catch (error) {\n if (!(error instanceof Error)) {\n throw error\n }\n // Fail-hard by default: only swallow (to null) when a caller opts in\n // with `onOffloadFail`. Otherwise propagate so the node/task fails loudly.\n if (ctx.onOffloadFail) {\n ctx.onOffloadFail(error)\n return null\n }\n throw error\n }\n },\n\n isReference: (value): value is StreamObject => isStreamObject(value),\n\n deserialize(ref, ctx) {\n return RequenceStream.fromStreamObject(ref as StreamObject, ctx.signal)\n },\n }\n}\n",
24
- "import { Buffer } from 'node:buffer'\n\nimport type { ClaimCheckObject } from '@requence/helpers'\nimport { isClaimCheckObject, toClaimCheckObject } from '@requence/helpers'\nimport type {\n HandlerBundle,\n MessageHandler,\n TransformContext,\n ValueHandler,\n} from '@requence/transformer'\n\nimport type { ClaimCheckEgressContext } from './context.ts'\nimport { assertOk } from './transport.ts'\n\n/**\n * Oversized-message claim-check — one `withHandler` bundle carrying both\n * contract halves:\n *\n * - **Egress** is the bundle's `messageHandler`: it size-checks the already\n * value-serialized body and offloads oversized top-level values to the\n * files service, preserving a record body's top-level keys (the transformer\n * asserts this). A non-record body is offloaded wholesale.\n * - **Ingress** is the bundle's `valueHandler`: a reference can resurface at\n * any depth of a later message once a forwarding hop merged it into other\n * data — only the value walk finds it there.\n *\n * Offload failure always **throws** — deliberately ignoring the\n * `onOffloadFail` swallow-to-null contract, which means \"null *reference*\n * for one value\": a silently nulled body part would corrupt the message, and\n * an oversized body that cannot be offloaded fails at the broker anyway.\n * Without an `uploadUrl` on the ctx the handler skips (status quo: the broker\n * rejects the message exactly as it does today).\n */\n\n/**\n * Fallback offload threshold in bytes when the ctx carries no\n * `maxPayloadSize` (safe headroom under RabbitMQ's 16 MiB default\n * `max_message_size`). The per-task value is minted by the ui backend and\n * arrives via task options, like the upload URL.\n */\nconst DEFAULT_MAX_PAYLOAD_SIZE = 4 * 1024 * 1024\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nasync function offload(\n ctx: TransformContext,\n uploadUrl: string,\n json: string,\n): Promise<ClaimCheckObject> {\n const response = await ctx.fetch(uploadUrl, {\n method: 'POST',\n signal: ctx.signal,\n headers: { 'Content-Type': 'application/json' },\n body: json,\n })\n await assertOk(response, uploadUrl, 'claim-check offload')\n\n const data = (await response.json()) as { url?: unknown; size?: unknown }\n if (\n !data ||\n typeof data !== 'object' ||\n typeof data.url !== 'string' ||\n !data.url ||\n typeof data.size !== 'number'\n ) {\n throw new Error(`malformed claim-check offload response (${uploadUrl})`)\n }\n return toClaimCheckObject({ url: data.url, size: data.size })\n}\n\n/** The historical sizer: correct for any caller still publishing JSON. */\nfunction jsonByteLength(value: unknown) {\n const json = JSON.stringify(value)\n return json === undefined ? 0 : Buffer.byteLength(json)\n}\n\nfunction createMessageHandler(): MessageHandler<ClaimCheckEgressContext> {\n return {\n async wrapOutbound(body, ctx) {\n const maxBytes = ctx.maxPayloadSize ?? DEFAULT_MAX_PAYLOAD_SIZE\n if (maxBytes <= 0 || body === undefined) {\n return body\n }\n\n // Two different questions about the same value, and they no longer have the\n // same answer:\n // - how big will this be ON THE WIRE → `measure`, the publisher's codec;\n // - what bytes do we PUT in the offloaded object → JSON, always.\n // The stored object is an HTTP/S3 payload read back by `JSON.parse` in the\n // ingress half below, so it stays JSON regardless of the wire codec. Only\n // the threshold arithmetic follows the codec.\n const measure = ctx.measure ?? jsonByteLength\n\n if (measure(body) <= maxBytes) {\n return body\n }\n const { uploadUrl } = ctx\n if (!uploadUrl) {\n ctx.onOffloadSkip?.()\n return body\n }\n\n if (!isRecord(body)) {\n const json = JSON.stringify(body)\n if (json === undefined) {\n return body\n }\n return offload(ctx, uploadUrl, json)\n }\n\n // Record body: offload oversized top-level values largest-first until\n // the body fits, keys preserved. If every value is offloaded and the\n // body still exceeds the threshold there is nothing more a\n // key-preserving wrap can do — return it and let the broker decide.\n const entries = Object.entries(body)\n .map(([key, value]) => ({\n key,\n valueJson: JSON.stringify(value),\n size: measure(value),\n }))\n .sort((a, b) => b.size - a.size)\n\n const wrapped: Record<string, unknown> = { ...body }\n let total = measure(body)\n for (const entry of entries) {\n // A reference is ~100–150 bytes; offloading a value that small can\n // only grow the body. Entries are sorted largest-first, so stop.\n if (\n total <= maxBytes ||\n entry.valueJson === undefined ||\n entry.size <= 256\n ) {\n break\n }\n const ref = await offload(ctx, uploadUrl, entry.valueJson)\n wrapped[entry.key] = ref\n total += measure(ref) - entry.size\n }\n return wrapped\n },\n }\n}\n\n/**\n * Ingress half: fetch the offloaded value back and hand it to the walk. The\n * result is re-walked to a fixpoint, so references nested *inside* the\n * offloaded value (files, streams, callbacks) rehydrate as usual.\n * Reconstruction needs only `ctx.fetch`, so transport-less consumers (task\n * watchers, ui) can always unwrap.\n */\nfunction createValueHandler(): ValueHandler<unknown, ClaimCheckObject> {\n return {\n tag: 'ClaimCheck',\n\n canHandle: () => false, // egress happens at message level, never per value\n\n serialize() {\n throw new Error(\n 'ClaimCheck egress is the bundled MessageHandler (wrapOutbound); it never reaches the value walk',\n )\n },\n\n isReference: (value): value is ClaimCheckObject =>\n isClaimCheckObject(value),\n\n async deserialize(ref, ctx) {\n const response = await ctx.fetch(ref.url, { signal: ctx.signal })\n await assertOk(response, ref.url, 'claim-check fetch')\n const text = await response.text()\n try {\n return JSON.parse(text)\n } catch {\n throw new Error(`malformed claim-check payload (${ref.url})`)\n }\n },\n }\n}\n\n/** The claim-check as one composable bundle: message-wrap egress + value-walk ingress. */\nexport function createClaimCheckHandler(): HandlerBundle<\n object,\n object,\n ClaimCheckEgressContext\n> & {\n valueHandler: ValueHandler<unknown, ClaimCheckObject>\n messageHandler: MessageHandler<ClaimCheckEgressContext>\n} {\n return {\n valueHandler: createValueHandler(),\n messageHandler: createMessageHandler(),\n }\n}\n",
24
+ "import { Buffer } from 'node:buffer'\n\nimport type { ClaimCheckObject } from '@requence/helpers'\nimport { isClaimCheckObject, toClaimCheckObject } from '@requence/helpers'\nimport type {\n HandlerBundle,\n MessageHandler,\n TransformContext,\n ValueHandler,\n} from '@requence/transformer'\n\nimport type { ClaimCheckEgressContext } from './context.ts'\nimport { assertOk } from './transport.ts'\n\n/**\n * Oversized-message claim-check — one `withHandler` bundle carrying both\n * contract halves:\n *\n * - **Egress** is the bundle's `messageHandler`: it size-checks the already\n * value-serialized body and offloads oversized top-level values to the\n * files service, preserving a record body's top-level keys (the transformer\n * asserts this). A non-record body is offloaded wholesale.\n * - **Ingress** is the bundle's `valueHandler`: a reference can resurface at\n * any depth of a later message once a forwarding hop merged it into other\n * data — only the value walk finds it there.\n *\n * Offload failure always **throws** — deliberately ignoring the\n * `onOffloadFail` swallow-to-null contract, which means \"null *reference*\n * for one value\": a silently nulled body part would corrupt the message, and\n * an oversized body that cannot be offloaded fails at the broker anyway.\n * Without an `uploadUrl` on the ctx the handler skips (status quo: the broker\n * rejects the message exactly as it does today).\n */\n\n/**\n * Fallback offload threshold in bytes when the ctx carries no\n * `maxPayloadSize` (safe headroom under RabbitMQ's 16 MiB default\n * `max_message_size`). The per-task value is minted by the ui backend and\n * arrives via task options, like the upload URL.\n */\nconst DEFAULT_MAX_PAYLOAD_SIZE = 4 * 1024 * 1024\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nasync function offload(\n ctx: TransformContext,\n uploadUrl: string,\n json: string,\n): Promise<ClaimCheckObject> {\n const response = await ctx.fetch(uploadUrl, {\n method: 'POST',\n signal: ctx.signal,\n headers: { 'Content-Type': 'application/json' },\n body: json,\n })\n await assertOk(response, uploadUrl, 'claim-check offload')\n\n const data = (await response.json()) as { url?: unknown; size?: unknown }\n if (\n !data ||\n typeof data !== 'object' ||\n typeof data.url !== 'string' ||\n !data.url ||\n typeof data.size !== 'number'\n ) {\n throw new Error(`malformed claim-check offload response (${uploadUrl})`)\n }\n return toClaimCheckObject({ url: data.url, size: data.size })\n}\n\n/** The historical sizer: correct for any caller still publishing JSON. */\nfunction jsonByteLength(value: unknown) {\n const json = JSON.stringify(value)\n return json === undefined ? 0 : Buffer.byteLength(json)\n}\n\n/** Thrown by the replacer below, caught by its own `toOffloadJson`, never escapes. */\nclass UnserializableValue extends Error {}\n\n/**\n * The bytes PUT in an offloaded object — always JSON, whatever the wire codec,\n * because the ingress half reads them back with `JSON.parse`. `undefined` means\n * JSON cannot carry this value, so it must not be offloaded at all.\n *\n * The msgpack wire made that case reachable: it carries a `Uint8Array` as\n * msgpack `bin`, and the value walk does not claim binary (`RequenceFile`\n * handles only `RequenceFile | Blob`). `JSON.stringify` does not refuse it\n * either — it renders a `Uint8Array` as `{\"0\":1,…}` and a `Buffer` as\n * `{\"type\":\"Buffer\",\"data\":[…]}`. Offloading either is silent corruption (the\n * consumer gets a plain object where bytes were) on top of a ~4x size increase,\n * so binary is rejected at any depth instead. The Python handler gets this for\n * free — `json.dumps` refuses `bytes`.\n *\n * The replacer reads `this[key]` rather than its own second argument because\n * `toJSON` runs BEFORE the replacer: a `Buffer` has already become that plain\n * object by the time the replacer is called. At the root, the holder is\n * `{ '': value }` and the key is `''`, so one expression covers both.\n */\nfunction toOffloadJson(value: unknown) {\n try {\n return JSON.stringify(\n value,\n function (this: Record<string, unknown>, key: string, encoded: unknown) {\n const raw = this[key]\n if (ArrayBuffer.isView(raw) || raw instanceof ArrayBuffer) {\n throw new UnserializableValue()\n }\n return encoded\n },\n )\n } catch (error) {\n if (error instanceof UnserializableValue) {\n return undefined\n }\n throw error\n }\n}\n\nfunction createMessageHandler(): MessageHandler<ClaimCheckEgressContext> {\n return {\n async wrapOutbound(body, ctx) {\n const maxBytes = ctx.maxPayloadSize ?? DEFAULT_MAX_PAYLOAD_SIZE\n if (maxBytes <= 0 || body === undefined) {\n return body\n }\n\n // Two different questions about the same value, and they no longer have the\n // same answer:\n // - how big will this be ON THE WIRE → `measure`, the publisher's codec;\n // - what bytes do we PUT in the offloaded object → JSON, always.\n // The stored object is an HTTP/S3 payload read back by `JSON.parse` in the\n // ingress half below, so it stays JSON regardless of the wire codec. Only\n // the threshold arithmetic follows the codec.\n const measure = ctx.measure ?? jsonByteLength\n\n if (measure(body) <= maxBytes) {\n return body\n }\n const { uploadUrl } = ctx\n if (!uploadUrl) {\n ctx.onOffloadSkip?.()\n return body\n }\n\n if (!isRecord(body)) {\n const json = toOffloadJson(body)\n if (json === undefined) {\n return body\n }\n return offload(ctx, uploadUrl, json)\n }\n\n // Record body: offload oversized top-level values largest-first until\n // the body fits, keys preserved. If every value is offloaded and the\n // body still exceeds the threshold there is nothing more a\n // key-preserving wrap can do — return it and let the broker decide.\n const entries = Object.entries(body)\n .map(([key, value]) => ({\n key,\n valueJson: toOffloadJson(value),\n size: measure(value),\n }))\n .sort((a, b) => b.size - a.size)\n\n const wrapped: Record<string, unknown> = { ...body }\n let total = measure(body)\n for (const entry of entries) {\n // A reference is ~100–150 bytes; offloading a value that small can\n // only grow the body. Entries are sorted largest-first, so stop.\n if (total <= maxBytes || entry.size <= 256) {\n break\n }\n if (entry.valueJson === undefined) {\n // A value JSON cannot carry cannot be offloaded (see `toOffloadJson`).\n // SKIP it rather than stop: entries are largest-first, so stopping here\n // would strand every smaller value that CAN be offloaded — and the whole\n // oversized body would reach the broker.\n continue\n }\n const ref = await offload(ctx, uploadUrl, entry.valueJson)\n wrapped[entry.key] = ref\n total += measure(ref) - entry.size\n }\n return wrapped\n },\n }\n}\n\n/**\n * Ingress half: fetch the offloaded value back and hand it to the walk. The\n * result is re-walked to a fixpoint, so references nested *inside* the\n * offloaded value (files, streams, callbacks) rehydrate as usual.\n * Reconstruction needs only `ctx.fetch`, so transport-less consumers (task\n * watchers, ui) can always unwrap.\n */\nfunction createValueHandler(): ValueHandler<unknown, ClaimCheckObject> {\n return {\n tag: 'ClaimCheck',\n\n canHandle: () => false, // egress happens at message level, never per value\n\n serialize() {\n throw new Error(\n 'ClaimCheck egress is the bundled MessageHandler (wrapOutbound); it never reaches the value walk',\n )\n },\n\n isReference: (value): value is ClaimCheckObject =>\n isClaimCheckObject(value),\n\n async deserialize(ref, ctx) {\n const response = await ctx.fetch(ref.url, { signal: ctx.signal })\n await assertOk(response, ref.url, 'claim-check fetch')\n const text = await response.text()\n try {\n return JSON.parse(text)\n } catch {\n throw new Error(`malformed claim-check payload (${ref.url})`)\n }\n },\n }\n}\n\n/** The claim-check as one composable bundle: message-wrap egress + value-walk ingress. */\nexport function createClaimCheckHandler(): HandlerBundle<\n object,\n object,\n ClaimCheckEgressContext\n> & {\n valueHandler: ValueHandler<unknown, ClaimCheckObject>\n messageHandler: MessageHandler<ClaimCheckEgressContext>\n} {\n return {\n valueHandler: createValueHandler(),\n messageHandler: createMessageHandler(),\n }\n}\n",
25
25
  "import { mapData } from '@requence/helpers'\n\nimport { RequenceFile } from './RequenceFile.ts'\nimport { RequenceStream } from './RequenceStream.ts'\n\n/**\n * Best-effort pre-pass for log/console payloads: a log must never fail the\n * task/node or mint a live callback registration, so everything the\n * transformer would loudly reject is rendered to a readable label instead.\n * Requence types pass through untouched (the handlers offload them), plain\n * data and toJSON-serializable instances pass through (JSON parity),\n * everything else becomes a string.\n */\nexport function sanitizeLogData(data: unknown) {\n return mapData(data, {\n Function: () => '[Function]',\n Symbol: (sym) => String(sym),\n Object(obj) {\n if (RequenceFile.canHandle(obj) || RequenceStream.canHandle(obj)) {\n return undefined\n }\n const proto = Object.getPrototypeOf(obj)\n if (proto === null || proto === Object.prototype) {\n return undefined\n }\n if (typeof (obj as { toJSON?: unknown }).toJSON === 'function') {\n return undefined\n }\n return String(obj)\n },\n })\n}\n",
26
26
  "import type { CallbackObject } from '@requence/helpers'\nimport { isCallbackObject } from '@requence/helpers'\nimport type { ValueHandler } from '@requence/transformer'\n\nimport type {\n CallbackEgressContext,\n CallbackIngressContext,\n} from './context.ts'\n\ntype ReconstructedCallback = (arg: unknown) => void\n\n/**\n * Bidirectional handler owning the `RequenceCallback` reference tag.\n *\n * Egress serializes any function into a full callback reference: identity\n * (`callbackId`/`sourceId`) comes from `ctx.onCallback`, the emission from\n * `ctx.outputName`, and the position from the walk's `path` — the reference's\n * public identity (the operator validates invocation args against the output\n * schema at `propertyPath`). A boundary that cannot register callbacks (no\n * `ctx.onCallback`) fails loud.\n *\n * Ingress reconstructs the reference into a callable function that dispatches\n * through `ctx.onCallbackInvoke` — with no `onCallbackInvoke` provided,\n * invoking the callback is a no-op; callers that forbid callbacks pass a\n * throwing implementation.\n */\nexport function createRequenceCallbackHandler(): ValueHandler<\n ReconstructedCallback,\n CallbackObject,\n CallbackEgressContext,\n CallbackIngressContext\n> {\n return {\n tag: 'RequenceCallback',\n\n canHandle: (value) => typeof value === 'function',\n\n serialize(callback, ctx, path) {\n if (!ctx.onCallback) {\n // handler throws are not path-wrapped by the transformer — carry the\n // position in the message ourselves\n throw new Error(\n `functions are not serializable on this boundary (no ctx.onCallback) at path \"${path.join('.')}\"`,\n )\n }\n return {\n ...ctx.onCallback(callback),\n outputName: ctx.outputName ?? null,\n propertyPath: [...path],\n __REQUENCE_type: 'RequenceCallback',\n }\n },\n\n isReference: (value): value is CallbackObject => isCallbackObject(value),\n\n deserialize(ref, ctx) {\n return (arg: unknown) => {\n ctx.onCallbackInvoke?.({ ...(ref as CallbackObject), arg })\n }\n },\n }\n}\n",
27
27
  "/** A position in the message tree, as visited by the walk. */\nexport type TransformPath = ReadonlyArray<string | number>\n\n/** Render a path as a readable dotted/indexed accessor, e.g. `data.items[2].file`. */\nexport function formatPath(path: TransformPath): string {\n if (path.length === 0) {\n return '<root>'\n }\n let out = ''\n for (const segment of path) {\n out +=\n typeof segment === 'number'\n ? `[${segment}]`\n : out\n ? `.${segment}`\n : segment\n }\n return out\n}\n\n/**\n * Thrown when the transformer cannot fully resolve a message: a complex value\n * on egress that no registered `ValueHandler` claims, or a reference tag on\n * ingress that no handler owns. The message names the offending type/tag and\n * its path so the failure is diagnosable rather than a silent pass-through.\n */\nexport class TransformError extends Error {\n readonly path: TransformPath\n readonly detail: string\n\n constructor(detail: string, path: TransformPath) {\n super(`${detail} at ${formatPath(path)}`)\n this.name = 'TransformError'\n this.path = path\n this.detail = detail\n }\n}\n",
@@ -33,7 +33,7 @@
33
33
  "import { AsyncLocalStorage } from 'node:async_hooks'\n\nimport type { CallbackObject } from '@requence/helpers'\n\nimport { createInboundBoundary } from './boundary.ts'\nimport { passthroughInboundTransformer } from './transformer.ts'\n\nexport type JSONValue =\n | string\n | number\n | boolean\n | { [x: string]: JSONValue }\n | Array<JSONValue>\n | null\n | undefined\n\nexport class RetryError extends Error {\n constructor(public delay?: number) {\n super()\n }\n}\n\nexport class SkipError extends Error {}\n\nexport class AbortError extends Error {}\n\nconst OUTPUT_VALUE = Symbol('output_value')\n\ntype OutputValue = {\n [OUTPUT_VALUE]: string | null\n value: any\n}\n\nfunction isOutputValue(value: unknown): value is OutputValue {\n return value !== null && typeof value === 'object' && OUTPUT_VALUE in value\n}\n\n/**\n * Unwrap the `context.toOutput(...)` symbol wrapper into its raw value and\n * output name. Pure — serialization happens at the component's outbound\n * boundary (`createOutboundBoundary`), not here.\n */\nexport function unwrapOutputValue(result: unknown): {\n value: unknown\n outputName: string | null\n} {\n if (isOutputValue(result)) {\n return { value: result.value, outputName: result[OUTPUT_VALUE] }\n }\n return { value: result, outputName: null }\n}\n\n// The privileged send API (unit 05 headers, main-path variant). Runtime-attached\n// to every handler context but deliberately absent from the inferred\n// `ContextHelper` type — ordinary services must not discover it via typing.\n// Privileged consumers (the reserved requence-logic runtime) cast their context\n// to `PrivilegedContext`.\nexport interface PrivilegedSends {\n send(data: unknown, options?: { overwrite?: boolean }): void\n sendToOutput(\n name: string,\n data: unknown,\n options?: { overwrite?: boolean },\n ): void\n sendState(state: unknown): void\n // Fire-and-forget invocation of a raw RequenceCallback wire ref (todo/11):\n // passthrough consumers receive callback refs un-rehydrated, so this is\n // their dispatch path. The arg goes through the message's outbound boundary\n // like any callback invocation; failures surface at the settle gate, not\n // here.\n invokeCallback(ref: CallbackObject, arg: unknown): void\n // The dispatch's transport options (payload.options, verbatim) so a\n // privileged consumer can forward upload targets across its own boundary.\n options: {\n uploadUrl?: string\n streamUrl?: string\n maxPayloadSize?: number\n maxFileSize?: number\n }\n}\n\nexport default async function createContextHelper(options: {\n taskId: string\n input: unknown\n configuration: unknown\n // Hoisted per-message controller (shared with the outbound boundary);\n // created here when the caller does not provide one.\n abortController?: AbortController\n // Skip file/stream/callback rehydration on ingress (claim-checks still\n // resolve): byte references reach the handler as their raw JSON-safe\n // `__REQUENCE_type` wire objects. Used by consumers that forward values\n // across a JSON process boundary (the logic runtime's guest channel).\n passthroughByteReferences?: boolean\n onLog: (method: 'log' | 'warn' | 'info' | 'error', data: any[]) => void\n onDefer: (reason?: string) => string\n onCallback: (params: {\n sourceId: string\n callbackId: string\n outputName: string | null\n propertyPath: (string | number)[]\n arg: unknown\n }) => void\n sends: PrivilegedSends\n}) {\n const terminatePromise = Promise.withResolvers<string>()\n const abortController = options.abortController ?? new AbortController()\n terminatePromise.promise.then(() => abortController.abort())\n\n const terminated = Object.assign(terminatePromise.promise, {\n signal: abortController.signal,\n })\n\n // Rehydration (FileObject/StreamObject → RequenceFile/RequenceStream,\n // RequenceCallback → function) — the component's single signal-aware\n // inbound boundary, called once per inbound sub-path. Passthrough mode swaps\n // in the chain that resolves claim-checks but keeps byte references raw.\n const inbound = createInboundBoundary({\n signal: abortController.signal,\n ...(options.passthroughByteReferences\n ? { transformer: passthroughInboundTransformer }\n : {}),\n })\n const [input, configuration] = await Promise.all([\n inbound(options.input, { onCallbackInvoke: options.onCallback }),\n inbound(options.configuration, {\n onCallbackInvoke: () => {\n throw new Error('configuration may not have callbacks')\n },\n }),\n ])\n\n const context = {\n taskId: options.taskId,\n input,\n configuration,\n\n toOutput(name: string | null, value: unknown): OutputValue {\n return {\n [OUTPUT_VALUE]: name,\n value,\n }\n },\n defer: options.onDefer,\n\n debug: {\n log(...data: any[]) {\n options.onLog('log', data)\n },\n info(...data: any[]) {\n options.onLog('info', data)\n },\n warn(...data: any[]) {\n options.onLog('warn', data)\n },\n error(...data: any[]) {\n options.onLog('error', data)\n },\n },\n retry(delay?: number) {\n throw new RetryError(delay)\n },\n abort(reason?: string) {\n throw new AbortError(reason)\n },\n skip() {\n throw new SkipError()\n },\n terminated,\n }\n\n // Attached at runtime only: `context`'s inferred type (and therefore the\n // public `ContextHelper`) must not include the privileged send API.\n Object.assign(context, options.sends)\n\n return [context, terminatePromise] as const\n}\n\nexport type ContextHelper = Awaited<ReturnType<typeof createContextHelper>>[0]\n\n// Undocumented — the context shape privileged consumers (requence-logic) cast\n// to. The send methods are present at runtime on every handler context but\n// hidden from `ContextHelper`; the operator honors their `state`/`overwrite`\n// headers only for privileged nodes.\nexport type PrivilegedContext = ContextHelper & PrivilegedSends\n\nexport const handlerStorage = new AsyncLocalStorage<ContextHelper>()\n",
34
34
  "import { handlerStorage } from './helpers.ts'\n\nfunction isAsyncIterable<T>(\n iterable: Iterable<T> | AsyncIterable<T>,\n): iterable is AsyncIterable<T> {\n return typeof (iterable as any)[Symbol.asyncIterator] === 'function'\n}\n\nexport function wrapIterable<T extends Iterable<any> | AsyncIterable<any>>(\n iterable: T,\n): T {\n const context = handlerStorage.getStore()\n\n if (!context) {\n return iterable\n }\n\n let terminated = false\n\n context.terminated.then(() => {\n terminated = true\n })\n\n if (isAsyncIterable(iterable)) {\n return {\n [Symbol.asyncIterator]() {\n const iterator = iterable[Symbol.asyncIterator]()\n\n return {\n async next() {\n const result = await Promise.race([\n context.terminated,\n iterator.next(),\n ])\n\n if (terminated) {\n return { done: true, value: undefined }\n }\n\n return result\n },\n }\n },\n } as T\n }\n\n return {\n [Symbol.iterator]() {\n const iterator = iterable[Symbol.iterator]()\n\n return {\n next() {\n if (terminated) {\n return { done: true, value: undefined }\n }\n const result = iterator.next()\n return result\n },\n }\n },\n } as T\n}\n\nexport function asyncEventEmitter<T>(initial: Array<T> = []) {\n const context = handlerStorage.getStore()\n\n let terminated = false\n context?.terminated.then(() => {\n terminated = true\n })\n\n let resolve: (value: T) => void\n const initialValues = structuredClone(initial)\n return {\n push: (value: T) => {\n if (resolve) {\n resolve(value)\n } else {\n initialValues.push(value)\n }\n },\n [Symbol.asyncIterator](): AsyncIterator<T> {\n return {\n async next() {\n if (initialValues.length > 0) {\n return { value: initialValues.shift()!, done: false }\n }\n const defer = Promise.withResolvers<T>()\n resolve = defer.resolve\n\n if (context) {\n const value = await Promise.race([\n defer.promise,\n context.terminated,\n ])\n\n return terminated\n ? { done: true, value: undefined }\n : { done: false, value: value as Awaited<T> }\n }\n\n return { value: await defer.promise, done: false }\n },\n }\n },\n }\n}\n"
35
35
  ],
36
- "mappings": "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",
37
- "debugId": "339E2FADB6C273CF64756E2164756E21",
36
+ "mappings": "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",
37
+ "debugId": "41D75F3F387C9AE364756E2164756E21",
38
38
  "names": []
39
39
  }
@@ -16,4 +16,5 @@ export * from './utils/debounce.ts';
16
16
  export * from './utils/obj.ts';
17
17
  export * from './utils/amqpHeartbeat.ts';
18
18
  export * from './utils/amqpPublishRetry.ts';
19
+ export * from './utils/sliceClock.ts';
19
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../helpers/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oCAAoC,CAAA;AAClD,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,wBAAwB,CAAA;AACtC,cAAc,mCAAmC,CAAA;AACjD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,0BAA0B,CAAA;AACxC,cAAc,6BAA6B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../helpers/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oCAAoC,CAAA;AAClD,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,wBAAwB,CAAA;AACtC,cAAc,mCAAmC,CAAA;AACjD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,0BAA0B,CAAA;AACxC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,uBAAuB,CAAA"}