@syntrologie/adapt-chatbot 2.27.0 → 2.28.0

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 (99) hide show
  1. package/dist/AdaptiveChatBar.d.ts +76 -0
  2. package/dist/AdaptiveChatBar.d.ts.map +1 -0
  3. package/dist/AdaptiveChatBar.js +10 -0
  4. package/dist/AdaptiveChatBar.js.map +7 -0
  5. package/dist/AdaptiveChatBarMountable.d.ts +35 -0
  6. package/dist/AdaptiveChatBarMountable.d.ts.map +1 -0
  7. package/dist/AdaptiveChatTrail.d.ts +77 -0
  8. package/dist/AdaptiveChatTrail.d.ts.map +1 -0
  9. package/dist/AdaptiveChatTrail.js +9 -0
  10. package/dist/AdaptiveChatTrail.js.map +7 -0
  11. package/dist/AdaptiveChipsStrip.d.ts +1150 -0
  12. package/dist/AdaptiveChipsStrip.d.ts.map +1 -0
  13. package/dist/AdaptiveChipsStrip.js +11 -0
  14. package/dist/AdaptiveChipsStrip.js.map +7 -0
  15. package/dist/AdaptiveChipsStripMountable.d.ts +24 -0
  16. package/dist/AdaptiveChipsStripMountable.d.ts.map +1 -0
  17. package/dist/ChatAssistantLit.d.ts +22 -50
  18. package/dist/ChatAssistantLit.d.ts.map +1 -1
  19. package/dist/ChatAssistantLit.js +5 -3
  20. package/dist/ChatSession.d.ts +178 -0
  21. package/dist/ChatSession.d.ts.map +1 -0
  22. package/dist/ChatTransport.d.ts +283 -0
  23. package/dist/ChatTransport.d.ts.map +1 -0
  24. package/dist/NavLinkMountable.d.ts +25 -0
  25. package/dist/NavLinkMountable.d.ts.map +1 -0
  26. package/dist/NavLinkMountable.test.d.ts +2 -0
  27. package/dist/NavLinkMountable.test.d.ts.map +1 -0
  28. package/dist/TextAnswerMountable.d.ts +17 -0
  29. package/dist/TextAnswerMountable.d.ts.map +1 -0
  30. package/dist/Turnstile.d.ts +83 -0
  31. package/dist/Turnstile.d.ts.map +1 -0
  32. package/dist/chunk-435KJD27.js +192 -0
  33. package/dist/chunk-435KJD27.js.map +7 -0
  34. package/dist/chunk-AUER7ZCK.js +634 -0
  35. package/dist/chunk-AUER7ZCK.js.map +7 -0
  36. package/dist/chunk-DOMEUJR7.js +382 -0
  37. package/dist/chunk-DOMEUJR7.js.map +7 -0
  38. package/dist/{chunk-W457NMGD.js → chunk-KUO67E2W.js} +1537 -4130
  39. package/dist/chunk-KUO67E2W.js.map +7 -0
  40. package/dist/chunk-QELVKBQV.js +214 -0
  41. package/dist/chunk-QELVKBQV.js.map +7 -0
  42. package/dist/chunk-UC4XU6GH.js +3306 -0
  43. package/dist/chunk-UC4XU6GH.js.map +7 -0
  44. package/dist/elements/ActionHandler.d.ts +34 -0
  45. package/dist/elements/ActionHandler.d.ts.map +1 -0
  46. package/dist/elements/ElementInstanceStore.d.ts +155 -0
  47. package/dist/elements/ElementInstanceStore.d.ts.map +1 -0
  48. package/dist/elements/ElementInstanceStore.test.d.ts +2 -0
  49. package/dist/elements/ElementInstanceStore.test.d.ts.map +1 -0
  50. package/dist/elements/ElementTypeHandler.d.ts +77 -0
  51. package/dist/elements/ElementTypeHandler.d.ts.map +1 -0
  52. package/dist/elements/ItemHandler.d.ts +60 -0
  53. package/dist/elements/ItemHandler.d.ts.map +1 -0
  54. package/dist/elements/ItemHandler.test.d.ts +2 -0
  55. package/dist/elements/ItemHandler.test.d.ts.map +1 -0
  56. package/dist/elements/TileHandler.d.ts +52 -0
  57. package/dist/elements/TileHandler.d.ts.map +1 -0
  58. package/dist/elements/blockRenderer.d.ts +46 -0
  59. package/dist/elements/blockRenderer.d.ts.map +1 -0
  60. package/dist/elements/blockRenderer.test.d.ts +13 -0
  61. package/dist/elements/blockRenderer.test.d.ts.map +1 -0
  62. package/dist/elements/blocks.d.ts +58 -0
  63. package/dist/elements/blocks.d.ts.map +1 -0
  64. package/dist/elements/envelope.d.ts +24 -0
  65. package/dist/elements/envelope.d.ts.map +1 -0
  66. package/dist/elements/fetcher.d.ts +40 -0
  67. package/dist/elements/fetcher.d.ts.map +1 -0
  68. package/dist/elements/index.d.ts +32 -0
  69. package/dist/elements/index.d.ts.map +1 -0
  70. package/dist/elements/types.d.ts +106 -0
  71. package/dist/elements/types.d.ts.map +1 -0
  72. package/dist/observer/__tests__/allowlist.test.d.ts +9 -0
  73. package/dist/observer/__tests__/allowlist.test.d.ts.map +1 -0
  74. package/dist/observer/__tests__/observer-isolation.test.d.ts +13 -0
  75. package/dist/observer/__tests__/observer-isolation.test.d.ts.map +1 -0
  76. package/dist/observer/__tests__/queue.test.d.ts +2 -0
  77. package/dist/observer/__tests__/queue.test.d.ts.map +1 -0
  78. package/dist/observer/__tests__/transport.test.d.ts +2 -0
  79. package/dist/observer/__tests__/transport.test.d.ts.map +1 -0
  80. package/dist/observer/allowlist.d.ts +32 -0
  81. package/dist/observer/allowlist.d.ts.map +1 -0
  82. package/dist/observer/index.d.ts +35 -0
  83. package/dist/observer/index.d.ts.map +1 -0
  84. package/dist/observer/queue.d.ts +57 -0
  85. package/dist/observer/queue.d.ts.map +1 -0
  86. package/dist/observer/transport.d.ts +26 -0
  87. package/dist/observer/transport.d.ts.map +1 -0
  88. package/dist/runtime.d.ts +7 -0
  89. package/dist/runtime.d.ts.map +1 -1
  90. package/dist/runtime.js +1617 -2
  91. package/dist/runtime.js.map +4 -4
  92. package/dist/schema.d.ts +3120 -7
  93. package/dist/schema.d.ts.map +1 -1
  94. package/dist/schema.js +40 -0
  95. package/dist/schema.js.map +2 -2
  96. package/dist/types.d.ts +30 -2
  97. package/dist/types.d.ts.map +1 -1
  98. package/package.json +13 -1
  99. package/dist/chunk-W457NMGD.js.map +0 -7
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../node_modules/@ag-ui/client/node_modules/uuid/dist/esm-browser/stringify.js", "../../../../node_modules/@ag-ui/client/node_modules/uuid/dist/esm-browser/rng.js", "../../../../node_modules/@ag-ui/client/node_modules/uuid/dist/esm-browser/native.js", "../../../../node_modules/@ag-ui/client/node_modules/uuid/dist/esm-browser/v4.js", "../../../../node_modules/@ag-ui/core/src/types.ts", "../../../../node_modules/@ag-ui/core/src/capabilities.ts", "../../../../node_modules/@ag-ui/core/src/events.ts", "../../../../node_modules/fast-json-patch/module/core.mjs", "../../../../node_modules/fast-json-patch/module/helpers.mjs", "../../../../node_modules/fast-json-patch/module/duplex.mjs", "../../../../node_modules/fast-json-patch/index.mjs", "../../../../node_modules/tslib/tslib.es6.mjs", "../../../../node_modules/rxjs/src/internal/util/isFunction.ts", "../../../../node_modules/rxjs/src/internal/util/createErrorClass.ts", "../../../../node_modules/rxjs/src/internal/util/UnsubscriptionError.ts", "../../../../node_modules/rxjs/src/internal/util/arrRemove.ts", "../../../../node_modules/rxjs/src/internal/Subscription.ts", "../../../../node_modules/rxjs/src/internal/config.ts", "../../../../node_modules/rxjs/src/internal/scheduler/timeoutProvider.ts", "../../../../node_modules/rxjs/src/internal/util/reportUnhandledError.ts", "../../../../node_modules/rxjs/src/internal/util/noop.ts", "../../../../node_modules/rxjs/src/internal/NotificationFactories.ts", "../../../../node_modules/rxjs/src/internal/util/errorContext.ts", "../../../../node_modules/rxjs/src/internal/Subscriber.ts", "../../../../node_modules/rxjs/src/internal/symbol/observable.ts", "../../../../node_modules/rxjs/src/internal/util/identity.ts", "../../../../node_modules/rxjs/src/internal/util/pipe.ts", "../../../../node_modules/rxjs/src/internal/Observable.ts", "../../../../node_modules/rxjs/src/internal/util/lift.ts", "../../../../node_modules/rxjs/src/internal/operators/OperatorSubscriber.ts", "../../../../node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts", "../../../../node_modules/rxjs/src/internal/Subject.ts", "../../../../node_modules/rxjs/src/internal/scheduler/dateTimestampProvider.ts", "../../../../node_modules/rxjs/src/internal/ReplaySubject.ts", "../../../../node_modules/rxjs/src/internal/observable/empty.ts", "../../../../node_modules/rxjs/src/internal/util/isScheduler.ts", "../../../../node_modules/rxjs/src/internal/util/args.ts", "../../../../node_modules/rxjs/src/internal/util/isArrayLike.ts", "../../../../node_modules/rxjs/src/internal/util/isPromise.ts", "../../../../node_modules/rxjs/src/internal/util/isInteropObservable.ts", "../../../../node_modules/rxjs/src/internal/util/isAsyncIterable.ts", "../../../../node_modules/rxjs/src/internal/util/throwUnobservableError.ts", "../../../../node_modules/rxjs/src/internal/symbol/iterator.ts", "../../../../node_modules/rxjs/src/internal/util/isIterable.ts", "../../../../node_modules/rxjs/src/internal/util/isReadableStreamLike.ts", "../../../../node_modules/rxjs/src/internal/observable/innerFrom.ts", "../../../../node_modules/rxjs/src/internal/util/executeSchedule.ts", "../../../../node_modules/rxjs/src/internal/operators/observeOn.ts", "../../../../node_modules/rxjs/src/internal/operators/subscribeOn.ts", "../../../../node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts", "../../../../node_modules/rxjs/src/internal/scheduled/schedulePromise.ts", "../../../../node_modules/rxjs/src/internal/scheduled/scheduleArray.ts", "../../../../node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts", "../../../../node_modules/rxjs/src/internal/scheduled/scheduleAsyncIterable.ts", "../../../../node_modules/rxjs/src/internal/scheduled/scheduleReadableStreamLike.ts", "../../../../node_modules/rxjs/src/internal/scheduled/scheduled.ts", "../../../../node_modules/rxjs/src/internal/observable/from.ts", "../../../../node_modules/rxjs/src/internal/observable/of.ts", "../../../../node_modules/rxjs/src/internal/observable/throwError.ts", "../../../../node_modules/rxjs/src/internal/util/EmptyError.ts", "../../../../node_modules/rxjs/src/internal/lastValueFrom.ts", "../../../../node_modules/rxjs/src/internal/operators/map.ts", "../../../../node_modules/rxjs/src/internal/operators/mergeInternals.ts", "../../../../node_modules/rxjs/src/internal/operators/mergeMap.ts", "../../../../node_modules/rxjs/src/internal/operators/mergeAll.ts", "../../../../node_modules/rxjs/src/internal/observable/defer.ts", "../../../../node_modules/rxjs/src/internal/operators/catchError.ts", "../../../../node_modules/rxjs/src/internal/operators/concatMap.ts", "../../../../node_modules/rxjs/src/internal/operators/defaultIfEmpty.ts", "../../../../node_modules/rxjs/src/internal/operators/finalize.ts", "../../../../node_modules/rxjs/src/internal/operators/switchMap.ts", "../../../../node_modules/rxjs/src/internal/operators/takeUntil.ts", "../../../../node_modules/rxjs/src/internal/operators/tap.ts", "../../../../node_modules/untruncate-json/src/index.ts", "../../../../node_modules/@bufbuild/protobuf/dist/esm/wire/varint.js", "../../../../node_modules/@bufbuild/protobuf/dist/esm/proto-int64.js", "../../../../node_modules/@bufbuild/protobuf/dist/esm/wire/text-encoding.js", "../../../../node_modules/@bufbuild/protobuf/dist/esm/wire/binary-encoding.js", "../../../../node_modules/@ag-ui/proto/src/generated/google/protobuf/struct.ts", "../../../../node_modules/@ag-ui/proto/src/generated/patch.ts", "../../../../node_modules/@ag-ui/proto/src/generated/types.ts", "../../../../node_modules/@ag-ui/proto/src/generated/events.ts", "../../../../node_modules/@ag-ui/proto/src/proto.ts", "../../../../node_modules/@ag-ui/proto/src/index.ts", "../../../../node_modules/compare-versions/src/utils.ts", "../../../../node_modules/compare-versions/src/compareVersions.ts", "../../../../node_modules/@ag-ui/client/src/utils.ts", "../../../../node_modules/@ag-ui/client/src/agent/subscriber.ts", "../../../../node_modules/@ag-ui/client/src/agent/types.ts", "../../../../node_modules/@ag-ui/client/src/debug-logger.ts", "../../../../node_modules/@ag-ui/client/src/apply/default.ts", "../../../../node_modules/@ag-ui/client/src/verify/verify.ts", "../../../../node_modules/@ag-ui/client/src/run/http-request.ts", "../../../../node_modules/@ag-ui/client/src/transform/sse.ts", "../../../../node_modules/@ag-ui/client/src/transform/proto.ts", "../../../../node_modules/@ag-ui/client/src/transform/http.ts", "../../../../node_modules/@ag-ui/client/src/legacy/types.ts", "../../../../node_modules/@ag-ui/client/src/legacy/convert.ts", "../../../../node_modules/@ag-ui/client/src/chunks/transform.ts", "../../../../node_modules/@ag-ui/client/src/middleware/middleware.ts", "../../../../node_modules/@ag-ui/client/src/middleware/filter-tool-calls.ts", "../../../../node_modules/@ag-ui/client/src/middleware/backward-compatibility-0-0-39.ts", "../../../../node_modules/@ag-ui/client/src/middleware/backward-compatibility-0-0-45.ts", "../../../../node_modules/@ag-ui/client/src/middleware/backward-compatibility-0-0-47.ts", "../../../../node_modules/@ag-ui/client/package.json", "../../../../node_modules/@ag-ui/client/src/agent/agent.ts", "../../../../node_modules/@ag-ui/client/src/agent/http.ts", "../../../../node_modules/@ag-ui/client/src/compact/compact.ts", "../../../chat/src/transport/agui.ts", "../src/elements/ActionHandler.ts", "../src/elements/ElementInstanceStore.ts", "../src/elements/envelope.ts", "../src/elements/fetcher.ts", "../src/elements/ItemHandler.ts", "../src/elements/TileHandler.ts", "../src/Turnstile.ts", "../src/ChatAssistantLit.ts"],
4
+ "sourcesContent": ["import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n", "let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n", "const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n", "import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n", "import { z } from \"zod\";\n\nexport const FunctionCallSchema = z.object({\n name: z.string(),\n arguments: z.string(),\n});\n\nexport const ToolCallSchema = z.object({\n id: z.string(),\n type: z.literal(\"function\"),\n function: FunctionCallSchema,\n encryptedValue: z.string().optional(),\n});\n\nexport const BaseMessageSchema = z.object({\n id: z.string(),\n role: z.string(),\n content: z.string().optional(),\n name: z.string().optional(),\n encryptedValue: z.string().optional(),\n});\n\nexport const TextInputContentSchema = z.object({\n type: z.literal(\"text\"),\n text: z.string(),\n});\n\nexport const InputContentDataSourceSchema = z.object({\n type: z.literal(\"data\"),\n value: z.string(),\n mimeType: z.string(),\n});\n\nexport const InputContentUrlSourceSchema = z.object({\n type: z.literal(\"url\"),\n value: z.string(),\n mimeType: z.string().optional(),\n});\n\nexport const InputContentSourceSchema = z.discriminatedUnion(\"type\", [\n InputContentDataSourceSchema,\n InputContentUrlSourceSchema,\n]);\n\nexport const ImageInputContentSchema = z.object({\n type: z.literal(\"image\"),\n source: InputContentSourceSchema,\n metadata: z.unknown().optional(),\n});\n\nexport const AudioInputContentSchema = z.object({\n type: z.literal(\"audio\"),\n source: InputContentSourceSchema,\n metadata: z.unknown().optional(),\n});\n\nexport const VideoInputContentSchema = z.object({\n type: z.literal(\"video\"),\n source: InputContentSourceSchema,\n metadata: z.unknown().optional(),\n});\n\nexport const DocumentInputContentSchema = z.object({\n type: z.literal(\"document\"),\n source: InputContentSourceSchema,\n metadata: z.unknown().optional(),\n});\n\nexport const ImageInputPartSchema = ImageInputContentSchema;\nexport const AudioInputPartSchema = AudioInputContentSchema;\nexport const VideoInputPartSchema = VideoInputContentSchema;\nexport const DocumentInputPartSchema = DocumentInputContentSchema;\n\nconst LegacyBinaryInputContentObjectSchema = z.object({\n type: z.literal(\"binary\"),\n mimeType: z.string(),\n id: z.string().optional(),\n url: z.string().optional(),\n data: z.string().optional(),\n filename: z.string().optional(),\n});\n\nconst ensureBinaryPayload = (\n value: { id?: string; url?: string; data?: string },\n ctx: z.RefinementCtx,\n) => {\n if (!value.id && !value.url && !value.data) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"BinaryInputContent requires at least one of id, url, or data.\",\n path: [\"id\"],\n });\n }\n};\n\nexport const BinaryInputContentSchema = LegacyBinaryInputContentObjectSchema.superRefine(\n (value, ctx) => {\n ensureBinaryPayload(value, ctx);\n },\n);\n\nconst InputContentBaseSchema = z.discriminatedUnion(\"type\", [\n TextInputContentSchema,\n ImageInputContentSchema,\n AudioInputContentSchema,\n VideoInputContentSchema,\n DocumentInputContentSchema,\n LegacyBinaryInputContentObjectSchema,\n]);\n\nexport const InputContentSchema = InputContentBaseSchema.superRefine((value, ctx) => {\n if (value.type === \"binary\") {\n ensureBinaryPayload(value, ctx);\n }\n});\n\nexport const DeveloperMessageSchema = BaseMessageSchema.extend({\n role: z.literal(\"developer\"),\n content: z.string(),\n});\n\nexport const SystemMessageSchema = BaseMessageSchema.extend({\n role: z.literal(\"system\"),\n content: z.string(),\n});\n\nexport const AssistantMessageSchema = BaseMessageSchema.extend({\n role: z.literal(\"assistant\"),\n content: z.string().optional(),\n toolCalls: z.array(ToolCallSchema).optional(),\n});\n\nexport const UserMessageSchema = BaseMessageSchema.extend({\n role: z.literal(\"user\"),\n content: z.union([z.string(), z.array(InputContentSchema)]),\n});\n\nexport const ToolMessageSchema = z.object({\n id: z.string(),\n content: z.string(),\n role: z.literal(\"tool\"),\n toolCallId: z.string(),\n error: z.string().optional(),\n encryptedValue: z.string().optional(),\n});\n\nexport const ActivityMessageSchema = z.object({\n id: z.string(),\n role: z.literal(\"activity\"),\n activityType: z.string(),\n content: z.record(z.any()),\n});\n\nexport const ReasoningMessageSchema = z.object({\n id: z.string(),\n role: z.literal(\"reasoning\"),\n content: z.string(),\n encryptedValue: z.string().optional(),\n});\n\nexport const MessageSchema = z.discriminatedUnion(\"role\", [\n DeveloperMessageSchema,\n SystemMessageSchema,\n AssistantMessageSchema,\n UserMessageSchema,\n ToolMessageSchema,\n ActivityMessageSchema,\n ReasoningMessageSchema,\n]);\n\nexport const RoleSchema = z.union([\n z.literal(\"developer\"),\n z.literal(\"system\"),\n z.literal(\"assistant\"),\n z.literal(\"user\"),\n z.literal(\"tool\"),\n z.literal(\"activity\"),\n z.literal(\"reasoning\"),\n]);\n\nexport const ContextSchema = z.object({\n description: z.string(),\n value: z.string(),\n});\n\nexport const ToolSchema = z.object({\n name: z.string(),\n description: z.string(),\n parameters: z.any(), // JSON Schema for the tool parameters\n metadata: z.record(z.any()).optional(), // Arbitrary tool metadata (e.g. a2ui schema)\n});\n\nexport const RunAgentInputSchema = z.object({\n threadId: z.string(),\n runId: z.string(),\n parentRunId: z.string().optional(),\n state: z.any(),\n messages: z.array(MessageSchema),\n tools: z.array(ToolSchema),\n context: z.array(ContextSchema),\n forwardedProps: z.any(),\n});\n\nexport const StateSchema = z.any();\n\nexport type ToolCall = z.infer<typeof ToolCallSchema>;\nexport type FunctionCall = z.infer<typeof FunctionCallSchema>;\nexport type TextInputContent = z.infer<typeof TextInputContentSchema>;\nexport type InputContentDataSource = z.infer<typeof InputContentDataSourceSchema>;\nexport type InputContentUrlSource = z.infer<typeof InputContentUrlSourceSchema>;\nexport type InputContentSource = z.infer<typeof InputContentSourceSchema>;\nexport type ImageInputContent = z.infer<typeof ImageInputContentSchema>;\nexport type AudioInputContent = z.infer<typeof AudioInputContentSchema>;\nexport type VideoInputContent = z.infer<typeof VideoInputContentSchema>;\nexport type DocumentInputContent = z.infer<typeof DocumentInputContentSchema>;\nexport type ImageInputPart = ImageInputContent;\nexport type AudioInputPart = AudioInputContent;\nexport type VideoInputPart = VideoInputContent;\nexport type DocumentInputPart = DocumentInputContent;\nexport type BinaryInputContent = z.infer<typeof BinaryInputContentSchema>;\nexport type InputContent = z.infer<typeof InputContentSchema>;\nexport type InputContentPart = z.infer<typeof InputContentSchema>;\nexport type DeveloperMessage = z.infer<typeof DeveloperMessageSchema>;\nexport type SystemMessage = z.infer<typeof SystemMessageSchema>;\nexport type AssistantMessage = z.infer<typeof AssistantMessageSchema>;\nexport type UserMessage = z.infer<typeof UserMessageSchema>;\nexport type ToolMessage = z.infer<typeof ToolMessageSchema>;\nexport type ActivityMessage = z.infer<typeof ActivityMessageSchema>;\nexport type ReasoningMessage = z.infer<typeof ReasoningMessageSchema>;\nexport type Message = z.infer<typeof MessageSchema>;\nexport type Context = z.infer<typeof ContextSchema>;\nexport type Tool = z.infer<typeof ToolSchema>;\nexport type RunAgentInput = z.infer<typeof RunAgentInputSchema>;\nexport type State = z.infer<typeof StateSchema>;\nexport type Role = z.infer<typeof RoleSchema>;\n\nexport class AGUIError extends Error {\n constructor(message: string) {\n super(message);\n }\n}\n\nexport class AGUIConnectNotImplementedError extends AGUIError {\n constructor() {\n super(\"Connect not implemented. This method is not supported by the current agent.\");\n }\n}\n", "import { z } from \"zod\";\nimport { ToolSchema } from \"./types\";\n\n/** Describes a sub-agent that can be invoked by a parent agent. */\nexport const SubAgentInfoSchema = z.object({\n /** Unique name or identifier of the sub-agent. */\n name: z.string(),\n /** What this sub-agent specializes in. Helps clients build agent selection UIs. */\n description: z.string().optional(),\n});\n\n/**\n * Basic metadata about the agent. Useful for discovery UIs, agent marketplaces,\n * and debugging. Set these when you want clients to display agent information\n * or when multiple agents are available and users need to pick one.\n */\nexport const IdentityCapabilitiesSchema = z.object({\n /** Human-readable name shown in UIs and agent selectors. */\n name: z.string().optional(),\n /** The framework or platform powering this agent (e.g., \"langgraph\", \"mastra\", \"crewai\"). */\n type: z.string().optional(),\n /** What this agent does — helps users and routing logic decide when to use it. */\n description: z.string().optional(),\n /** Semantic version of the agent (e.g., \"1.2.0\"). Useful for compatibility checks. */\n version: z.string().optional(),\n /** Organization or team that maintains this agent. */\n provider: z.string().optional(),\n /** URL to the agent's documentation or homepage. */\n documentationUrl: z.string().optional(),\n /** Arbitrary key-value pairs for integration-specific identity info. */\n metadata: z.record(z.unknown()).optional(),\n});\n\n/**\n * Declares which transport mechanisms the agent supports. Clients use this\n * to pick the best connection strategy. Only set flags to `true` for transports\n * your agent actually handles — omit or set `false` for unsupported ones.\n */\nexport const TransportCapabilitiesSchema = z.object({\n /** Set `true` if the agent streams responses via SSE. Most agents enable this. */\n streaming: z.boolean().optional(),\n /** Set `true` if the agent accepts persistent WebSocket connections. */\n websocket: z.boolean().optional(),\n /** Set `true` if the agent supports the AG-UI binary protocol (protobuf over HTTP). */\n httpBinary: z.boolean().optional(),\n /** Set `true` if the agent can send async updates via webhooks after a run finishes. */\n pushNotifications: z.boolean().optional(),\n /** Set `true` if the agent supports resuming interrupted streams via sequence numbers. */\n resumable: z.boolean().optional(),\n});\n\n/**\n * Tool calling capabilities. Distinguishes between tools the agent itself provides\n * (listed in `items`) and tools the client passes at runtime via `RunAgentInput.tools`.\n * Enable this when your agent can call functions, search the web, execute code, etc.\n */\nexport const ToolsCapabilitiesSchema = z.object({\n /** Set `true` if the agent can make tool calls at all. Set `false` to explicitly\n * signal tool calling is disabled even if items are present. */\n supported: z.boolean().optional(),\n /** The tools this agent provides on its own (full JSON Schema definitions).\n * These are distinct from client-provided tools passed in `RunAgentInput.tools`. */\n items: z.array(ToolSchema).optional(),\n /** Set `true` if the agent can invoke multiple tools concurrently within a single step. */\n parallelCalls: z.boolean().optional(),\n /** Set `true` if the agent accepts and uses tools provided by the client at runtime. */\n clientProvided: z.boolean().optional(),\n});\n\n/**\n * Output format support. Enable `structuredOutput` when your agent can return\n * responses conforming to a JSON schema, which is useful for programmatic consumption.\n */\nexport const OutputCapabilitiesSchema = z.object({\n /** Set `true` if the agent can produce structured JSON output matching a provided schema. */\n structuredOutput: z.boolean().optional(),\n /** MIME types the agent can produce (e.g., `[\"text/plain\", \"application/json\"]`).\n * Omit if the agent only produces plain text. */\n supportedMimeTypes: z.array(z.string()).optional(),\n});\n\n/**\n * State and memory management capabilities. These tell the client how the agent\n * handles shared state and whether conversation context persists across runs.\n */\nexport const StateCapabilitiesSchema = z.object({\n /** Set `true` if the agent emits `STATE_SNAPSHOT` events (full state replacement). */\n snapshots: z.boolean().optional(),\n /** Set `true` if the agent emits `STATE_DELTA` events (JSON Patch incremental updates). */\n deltas: z.boolean().optional(),\n /** Set `true` if the agent has long-term memory beyond the current thread\n * (e.g., vector store, knowledge base, or cross-session recall). */\n memory: z.boolean().optional(),\n /** Set `true` if state is preserved across multiple runs within the same thread.\n * When `false`, state resets on each run. */\n persistentState: z.boolean().optional(),\n});\n\n/**\n * Multi-agent coordination capabilities. Enable these when your agent can\n * orchestrate or hand off work to other agents.\n */\nexport const MultiAgentCapabilitiesSchema = z.object({\n /** Set `true` if the agent participates in any form of multi-agent coordination. */\n supported: z.boolean().optional(),\n /** Set `true` if the agent can delegate subtasks to other agents while retaining control. */\n delegation: z.boolean().optional(),\n /** Set `true` if the agent can transfer the conversation entirely to another agent. */\n handoffs: z.boolean().optional(),\n /** List of sub-agents this agent can invoke. Helps clients build agent selection UIs. */\n subAgents: z.array(SubAgentInfoSchema).optional(),\n});\n\n/**\n * Reasoning and thinking capabilities. Enable these when your agent exposes its\n * internal thought process (e.g., chain-of-thought, extended thinking).\n */\nexport const ReasoningCapabilitiesSchema = z.object({\n /** Set `true` if the agent produces reasoning/thinking tokens visible to the client. */\n supported: z.boolean().optional(),\n /** Set `true` if reasoning tokens are streamed incrementally (vs. returned all at once). */\n streaming: z.boolean().optional(),\n /** Set `true` if reasoning content is encrypted (zero-data-retention mode).\n * Clients should expect opaque `encryptedValue` fields instead of readable content. */\n encrypted: z.boolean().optional(),\n});\n\n/**\n * Modalities the agent can accept as input. Clients use this to show/hide\n * file upload buttons, audio recorders, image pickers, etc.\n */\nexport const MultimodalInputCapabilitiesSchema = z.object({\n /** Set `true` if the agent can process image inputs (e.g., screenshots, photos). */\n image: z.boolean().optional(),\n /** Set `true` if the agent can process audio inputs (speech, recordings). */\n audio: z.boolean().optional(),\n /** Set `true` if the agent can process video inputs. */\n video: z.boolean().optional(),\n /** Set `true` if the agent can process PDF documents. */\n pdf: z.boolean().optional(),\n /** Set `true` if the agent can process arbitrary file uploads. */\n file: z.boolean().optional(),\n});\n\n/**\n * Modalities the agent can produce as output. Clients use this to anticipate\n * rich content in the agent's response.\n */\nexport const MultimodalOutputCapabilitiesSchema = z.object({\n /** Set `true` if the agent can generate images as part of its response. */\n image: z.boolean().optional(),\n /** Set `true` if the agent can produce audio output (text-to-speech, audio files). */\n audio: z.boolean().optional(),\n});\n\n/**\n * Multimodal input and output support. Organized into `input` and `output`\n * sub-objects so clients can independently query what the agent accepts\n * versus what it produces.\n */\nexport const MultimodalCapabilitiesSchema = z.object({\n /** Modalities the agent can accept as input (images, audio, video, PDFs, files). */\n input: MultimodalInputCapabilitiesSchema.optional(),\n /** Modalities the agent can produce as output (images, audio). */\n output: MultimodalOutputCapabilitiesSchema.optional(),\n});\n\n/**\n * Execution control and limits. Declare these so clients can set expectations\n * about how long or how many steps an agent run might take.\n */\nexport const ExecutionCapabilitiesSchema = z.object({\n /** Set `true` if the agent can execute code (e.g., Python, JavaScript) during a run. */\n codeExecution: z.boolean().optional(),\n /** Set `true` if code execution happens in a sandboxed/isolated environment.\n * Only meaningful when `codeExecution` is `true`. */\n sandboxed: z.boolean().optional(),\n /** Maximum number of tool-call/reasoning iterations the agent will perform per run.\n * Helps clients display progress or set timeout expectations. */\n maxIterations: z.number().optional(),\n /** Maximum wall-clock time (in milliseconds) the agent will run before timing out. */\n maxExecutionTime: z.number().optional(),\n});\n\n/**\n * Human-in-the-loop interaction support. Enable these when your agent can pause\n * execution to request human input, approval, or feedback before continuing.\n */\nexport const HumanInTheLoopCapabilitiesSchema = z.object({\n /** Set `true` if the agent supports any form of human-in-the-loop interaction. */\n supported: z.boolean().optional(),\n /** Set `true` if the agent can pause and request explicit approval before\n * performing sensitive actions (e.g., sending emails, deleting data). */\n approvals: z.boolean().optional(),\n /** Set `true` if the agent allows humans to intervene and modify its plan mid-execution. */\n interventions: z.boolean().optional(),\n /** Set `true` if the agent can incorporate user feedback (thumbs up/down, corrections)\n * to improve its behavior within the current session. */\n feedback: z.boolean().optional(),\n});\n\n/**\n * A typed, categorized snapshot of an agent's current capabilities.\n * Returned by `getCapabilities()` on `AbstractAgent`.\n *\n * All fields are optional — agents only declare what they support.\n * Omitted fields mean the capability is not declared (unknown), not that\n * it's unsupported.\n *\n * The `custom` field is an escape hatch for integration-specific capabilities\n * that don't fit into the standard categories.\n */\nexport const AgentCapabilitiesSchema = z.object({\n /** Agent identity and metadata. */\n identity: IdentityCapabilitiesSchema.optional(),\n /** Supported transport mechanisms (SSE, WebSocket, binary, etc.). */\n transport: TransportCapabilitiesSchema.optional(),\n /** Tools the agent provides and tool calling configuration. */\n tools: ToolsCapabilitiesSchema.optional(),\n /** Output format support (structured output, MIME types). */\n output: OutputCapabilitiesSchema.optional(),\n /** State and memory management (snapshots, deltas, persistence). */\n state: StateCapabilitiesSchema.optional(),\n /** Multi-agent coordination (delegation, handoffs, sub-agents). */\n multiAgent: MultiAgentCapabilitiesSchema.optional(),\n /** Reasoning and thinking support (chain-of-thought, encrypted thinking). */\n reasoning: ReasoningCapabilitiesSchema.optional(),\n /** Multimodal input/output support (images, audio, video, files). */\n multimodal: MultimodalCapabilitiesSchema.optional(),\n /** Execution control and limits (code execution, timeouts, iteration caps). */\n execution: ExecutionCapabilitiesSchema.optional(),\n /** Human-in-the-loop support (approvals, interventions, feedback). */\n humanInTheLoop: HumanInTheLoopCapabilitiesSchema.optional(),\n /** Integration-specific capabilities not covered by the standard categories. */\n custom: z.record(z.unknown()).optional(),\n});\n\n/** Describes a sub-agent that can be invoked by a parent agent. */\nexport type SubAgentInfo = z.infer<typeof SubAgentInfoSchema>;\n/** Agent identity and metadata for discovery UIs, marketplaces, and debugging. */\nexport type IdentityCapabilities = z.infer<typeof IdentityCapabilitiesSchema>;\n/** Supported transport mechanisms (SSE, WebSocket, binary protocol, push notifications). */\nexport type TransportCapabilities = z.infer<typeof TransportCapabilitiesSchema>;\n/** Tool calling support and agent-provided tool definitions. */\nexport type ToolsCapabilities = z.infer<typeof ToolsCapabilitiesSchema>;\n/** Output format support (structured output, MIME types). */\nexport type OutputCapabilities = z.infer<typeof OutputCapabilitiesSchema>;\n/** State and memory management (snapshots, deltas, persistence, long-term memory). */\nexport type StateCapabilities = z.infer<typeof StateCapabilitiesSchema>;\n/** Multi-agent coordination (delegation, handoffs, sub-agent orchestration). */\nexport type MultiAgentCapabilities = z.infer<typeof MultiAgentCapabilitiesSchema>;\n/** Reasoning and thinking visibility (streaming, encrypted chain-of-thought). */\nexport type ReasoningCapabilities = z.infer<typeof ReasoningCapabilitiesSchema>;\n/** Modalities the agent can accept as input (images, audio, video, PDFs, files). */\nexport type MultimodalInputCapabilities = z.infer<typeof MultimodalInputCapabilitiesSchema>;\n/** Modalities the agent can produce as output (images, audio). */\nexport type MultimodalOutputCapabilities = z.infer<typeof MultimodalOutputCapabilitiesSchema>;\n/** Multimodal input/output support (images, audio, video, PDFs, file uploads). */\nexport type MultimodalCapabilities = z.infer<typeof MultimodalCapabilitiesSchema>;\n/** Execution control and limits (code execution, sandboxing, iteration caps, timeouts). */\nexport type ExecutionCapabilities = z.infer<typeof ExecutionCapabilitiesSchema>;\n/** Human-in-the-loop interaction support (approvals, interventions, feedback). */\nexport type HumanInTheLoopCapabilities = z.infer<typeof HumanInTheLoopCapabilitiesSchema>;\n/** A typed, categorized snapshot of an agent's current capabilities. Returned by `getCapabilities()`. */\nexport type AgentCapabilities = z.infer<typeof AgentCapabilitiesSchema>;\n", "import { z } from \"zod\";\nimport { MessageSchema, StateSchema, RunAgentInputSchema } from \"./types\";\n\n// Text messages can have any role except \"tool\"\nconst TextMessageRoleSchema = z.union([\n z.literal(\"developer\"),\n z.literal(\"system\"),\n z.literal(\"assistant\"),\n z.literal(\"user\"),\n]);\n\nexport enum EventType {\n TEXT_MESSAGE_START = \"TEXT_MESSAGE_START\",\n TEXT_MESSAGE_CONTENT = \"TEXT_MESSAGE_CONTENT\",\n TEXT_MESSAGE_END = \"TEXT_MESSAGE_END\",\n TEXT_MESSAGE_CHUNK = \"TEXT_MESSAGE_CHUNK\",\n TOOL_CALL_START = \"TOOL_CALL_START\",\n TOOL_CALL_ARGS = \"TOOL_CALL_ARGS\",\n TOOL_CALL_END = \"TOOL_CALL_END\",\n TOOL_CALL_CHUNK = \"TOOL_CALL_CHUNK\",\n TOOL_CALL_RESULT = \"TOOL_CALL_RESULT\",\n /**\n * @deprecated Use REASONING_START instead. Will be removed in 1.0.0.\n */\n THINKING_START = \"THINKING_START\",\n /**\n * @deprecated Use REASONING_END instead. Will be removed in 1.0.0.\n */\n THINKING_END = \"THINKING_END\",\n /**\n * @deprecated Use REASONING_MESSAGE_START instead. Will be removed in 1.0.0.\n */\n THINKING_TEXT_MESSAGE_START = \"THINKING_TEXT_MESSAGE_START\",\n /**\n * @deprecated Use REASONING_MESSAGE_CONTENT instead. Will be removed in 1.0.0.\n */\n THINKING_TEXT_MESSAGE_CONTENT = \"THINKING_TEXT_MESSAGE_CONTENT\",\n /**\n * @deprecated Use REASONING_MESSAGE_END instead. Will be removed in 1.0.0.\n */\n THINKING_TEXT_MESSAGE_END = \"THINKING_TEXT_MESSAGE_END\",\n STATE_SNAPSHOT = \"STATE_SNAPSHOT\",\n STATE_DELTA = \"STATE_DELTA\",\n MESSAGES_SNAPSHOT = \"MESSAGES_SNAPSHOT\",\n ACTIVITY_SNAPSHOT = \"ACTIVITY_SNAPSHOT\",\n ACTIVITY_DELTA = \"ACTIVITY_DELTA\",\n RAW = \"RAW\",\n CUSTOM = \"CUSTOM\",\n RUN_STARTED = \"RUN_STARTED\",\n RUN_FINISHED = \"RUN_FINISHED\",\n RUN_ERROR = \"RUN_ERROR\",\n STEP_STARTED = \"STEP_STARTED\",\n STEP_FINISHED = \"STEP_FINISHED\",\n REASONING_START = \"REASONING_START\",\n REASONING_MESSAGE_START = \"REASONING_MESSAGE_START\",\n REASONING_MESSAGE_CONTENT = \"REASONING_MESSAGE_CONTENT\",\n REASONING_MESSAGE_END = \"REASONING_MESSAGE_END\",\n REASONING_MESSAGE_CHUNK = \"REASONING_MESSAGE_CHUNK\",\n REASONING_END = \"REASONING_END\",\n REASONING_ENCRYPTED_VALUE = \"REASONING_ENCRYPTED_VALUE\",\n}\n\nexport const BaseEventSchema = z\n .object({\n type: z.nativeEnum(EventType),\n timestamp: z.number().optional(),\n rawEvent: z.any().optional(),\n })\n .passthrough();\n\nexport const TextMessageStartEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.TEXT_MESSAGE_START),\n messageId: z.string(),\n role: TextMessageRoleSchema.default(\"assistant\"),\n name: z.string().optional(),\n});\n\nexport const TextMessageContentEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.TEXT_MESSAGE_CONTENT),\n messageId: z.string(),\n delta: z.string(),\n});\n\nexport const TextMessageEndEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.TEXT_MESSAGE_END),\n messageId: z.string(),\n});\n\nexport const TextMessageChunkEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.TEXT_MESSAGE_CHUNK),\n messageId: z.string().optional(),\n role: TextMessageRoleSchema.optional(),\n delta: z.string().optional(),\n name: z.string().optional(),\n});\n\n/**\n * @deprecated Use ReasoningMessageStartEventSchema instead. Will be removed in 1.0.0.\n */\nexport const ThinkingTextMessageStartEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.THINKING_TEXT_MESSAGE_START),\n});\n\n/**\n * @deprecated Use ReasoningMessageContentEventSchema instead. Will be removed in 1.0.0.\n */\nexport const ThinkingTextMessageContentEventSchema = TextMessageContentEventSchema.omit({\n messageId: true,\n type: true,\n}).extend({\n type: z.literal(EventType.THINKING_TEXT_MESSAGE_CONTENT),\n});\n\n/**\n * @deprecated Use ReasoningMessageEndEventSchema instead. Will be removed in 1.0.0.\n */\nexport const ThinkingTextMessageEndEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.THINKING_TEXT_MESSAGE_END),\n});\n\nexport const ToolCallStartEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.TOOL_CALL_START),\n toolCallId: z.string(),\n toolCallName: z.string(),\n parentMessageId: z.string().optional(),\n});\n\nexport const ToolCallArgsEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.TOOL_CALL_ARGS),\n toolCallId: z.string(),\n delta: z.string(),\n});\n\nexport const ToolCallEndEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.TOOL_CALL_END),\n toolCallId: z.string(),\n});\n\nexport const ToolCallResultEventSchema = BaseEventSchema.extend({\n messageId: z.string(),\n type: z.literal(EventType.TOOL_CALL_RESULT),\n toolCallId: z.string(),\n content: z.string(),\n role: z.literal(\"tool\").optional(),\n});\n\nexport const ToolCallChunkEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.TOOL_CALL_CHUNK),\n toolCallId: z.string().optional(),\n toolCallName: z.string().optional(),\n parentMessageId: z.string().optional(),\n delta: z.string().optional(),\n});\n\n/**\n * @deprecated Use ReasoningStartEventSchema instead. Will be removed in 1.0.0.\n */\nexport const ThinkingStartEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.THINKING_START),\n title: z.string().optional(),\n});\n\n/**\n * @deprecated Use ReasoningEndEventSchema instead. Will be removed in 1.0.0.\n */\nexport const ThinkingEndEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.THINKING_END),\n});\n\nexport const StateSnapshotEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.STATE_SNAPSHOT),\n snapshot: StateSchema,\n});\n\nexport const StateDeltaEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.STATE_DELTA),\n delta: z.array(z.any()), // JSON Patch (RFC 6902)\n});\n\nexport const MessagesSnapshotEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.MESSAGES_SNAPSHOT),\n messages: z.array(MessageSchema),\n});\n\nexport const ActivitySnapshotEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.ACTIVITY_SNAPSHOT),\n messageId: z.string(),\n activityType: z.string(),\n content: z.record(z.any()),\n replace: z.boolean().optional().default(true),\n});\n\nexport const ActivityDeltaEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.ACTIVITY_DELTA),\n messageId: z.string(),\n activityType: z.string(),\n patch: z.array(z.any()),\n});\n\nexport const RawEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.RAW),\n event: z.any(),\n source: z.string().optional(),\n});\n\nexport const CustomEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.CUSTOM),\n name: z.string(),\n value: z.any(),\n});\n\nexport const RunStartedEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.RUN_STARTED),\n threadId: z.string(),\n runId: z.string(),\n parentRunId: z.string().optional(),\n input: RunAgentInputSchema.optional(),\n});\n\nexport const RunFinishedEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.RUN_FINISHED),\n threadId: z.string(),\n runId: z.string(),\n result: z.any().optional(),\n});\n\nexport const RunErrorEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.RUN_ERROR),\n message: z.string(),\n code: z.string().optional(),\n});\n\nexport const StepStartedEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.STEP_STARTED),\n stepName: z.string(),\n});\n\nexport const StepFinishedEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.STEP_FINISHED),\n stepName: z.string(),\n});\n\n// Schema for the encrypted signature subtype\nexport const ReasoningEncryptedValueSubtypeSchema = z.union([\n z.literal(\"tool-call\"),\n z.literal(\"message\"),\n]);\n\nexport const ReasoningStartEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.REASONING_START),\n messageId: z.string(),\n});\n\nexport const ReasoningMessageStartEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.REASONING_MESSAGE_START),\n messageId: z.string(),\n role: z.literal(\"reasoning\"),\n});\n\nexport const ReasoningMessageContentEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.REASONING_MESSAGE_CONTENT),\n messageId: z.string(),\n delta: z.string(),\n});\n\nexport const ReasoningMessageEndEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.REASONING_MESSAGE_END),\n messageId: z.string(),\n});\n\nexport const ReasoningMessageChunkEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.REASONING_MESSAGE_CHUNK),\n messageId: z.string().optional(),\n delta: z.string().optional(),\n});\n\nexport const ReasoningEndEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.REASONING_END),\n messageId: z.string(),\n});\n\nexport const ReasoningEncryptedValueEventSchema = BaseEventSchema.extend({\n type: z.literal(EventType.REASONING_ENCRYPTED_VALUE),\n subtype: ReasoningEncryptedValueSubtypeSchema,\n entityId: z.string(),\n encryptedValue: z.string(),\n});\n\nexport const EventSchemas = z.discriminatedUnion(\"type\", [\n TextMessageStartEventSchema,\n TextMessageContentEventSchema,\n TextMessageEndEventSchema,\n TextMessageChunkEventSchema,\n ThinkingStartEventSchema,\n ThinkingEndEventSchema,\n ThinkingTextMessageStartEventSchema,\n ThinkingTextMessageContentEventSchema,\n ThinkingTextMessageEndEventSchema,\n ToolCallStartEventSchema,\n ToolCallArgsEventSchema,\n ToolCallEndEventSchema,\n ToolCallChunkEventSchema,\n ToolCallResultEventSchema,\n StateSnapshotEventSchema,\n StateDeltaEventSchema,\n MessagesSnapshotEventSchema,\n ActivitySnapshotEventSchema,\n ActivityDeltaEventSchema,\n RawEventSchema,\n CustomEventSchema,\n RunStartedEventSchema,\n RunFinishedEventSchema,\n RunErrorEventSchema,\n StepStartedEventSchema,\n StepFinishedEventSchema,\n ReasoningStartEventSchema,\n ReasoningMessageStartEventSchema,\n ReasoningMessageContentEventSchema,\n ReasoningMessageEndEventSchema,\n ReasoningMessageChunkEventSchema,\n ReasoningEndEventSchema,\n ReasoningEncryptedValueEventSchema,\n]);\n\nexport type BaseEvent = z.infer<typeof BaseEventSchema>;\nexport type AGUIEvent = z.infer<typeof EventSchemas>;\nexport type BaseEventFields = z.infer<typeof BaseEventSchema>;\nexport type AGUIEventByType = {\n [EventType.TEXT_MESSAGE_START]: TextMessageStartEvent;\n [EventType.TEXT_MESSAGE_CONTENT]: TextMessageContentEvent;\n [EventType.TEXT_MESSAGE_END]: TextMessageEndEvent;\n [EventType.TEXT_MESSAGE_CHUNK]: TextMessageChunkEvent;\n [EventType.THINKING_TEXT_MESSAGE_START]: ThinkingTextMessageStartEvent;\n [EventType.THINKING_TEXT_MESSAGE_CONTENT]: ThinkingTextMessageContentEvent;\n [EventType.THINKING_TEXT_MESSAGE_END]: ThinkingTextMessageEndEvent;\n [EventType.TOOL_CALL_START]: ToolCallStartEvent;\n [EventType.TOOL_CALL_ARGS]: ToolCallArgsEvent;\n [EventType.TOOL_CALL_END]: ToolCallEndEvent;\n [EventType.TOOL_CALL_CHUNK]: ToolCallChunkEvent;\n [EventType.TOOL_CALL_RESULT]: ToolCallResultEvent;\n [EventType.THINKING_START]: ThinkingStartEvent;\n [EventType.THINKING_END]: ThinkingEndEvent;\n [EventType.STATE_SNAPSHOT]: StateSnapshotEvent;\n [EventType.STATE_DELTA]: StateDeltaEvent;\n [EventType.MESSAGES_SNAPSHOT]: MessagesSnapshotEvent;\n [EventType.ACTIVITY_SNAPSHOT]: ActivitySnapshotEvent;\n [EventType.ACTIVITY_DELTA]: ActivityDeltaEvent;\n [EventType.RAW]: RawEvent;\n [EventType.CUSTOM]: CustomEvent;\n [EventType.RUN_STARTED]: RunStartedEvent;\n [EventType.RUN_FINISHED]: RunFinishedEvent;\n [EventType.RUN_ERROR]: RunErrorEvent;\n [EventType.STEP_STARTED]: StepStartedEvent;\n [EventType.STEP_FINISHED]: StepFinishedEvent;\n [EventType.REASONING_START]: ReasoningStartEvent;\n [EventType.REASONING_MESSAGE_START]: ReasoningMessageStartEvent;\n [EventType.REASONING_MESSAGE_CONTENT]: ReasoningMessageContentEvent;\n [EventType.REASONING_MESSAGE_END]: ReasoningMessageEndEvent;\n [EventType.REASONING_MESSAGE_CHUNK]: ReasoningMessageChunkEvent;\n [EventType.REASONING_END]: ReasoningEndEvent;\n [EventType.REASONING_ENCRYPTED_VALUE]: ReasoningEncryptedValueEvent;\n};\nexport type AGUIEventOf<T extends EventType> = AGUIEventByType[T];\nexport type EventPayloadOf<T extends EventType> = Omit<AGUIEventOf<T>, keyof BaseEventFields>;\n\ntype EventProps<Schema extends z.ZodTypeAny> = Omit<z.input<Schema>, \"type\">;\n\nexport type BaseEventProps = EventProps<typeof BaseEventSchema>;\n\nexport type TextMessageStartEventProps = EventProps<typeof TextMessageStartEventSchema>;\nexport type TextMessageContentEventProps = EventProps<typeof TextMessageContentEventSchema>;\nexport type TextMessageEndEventProps = EventProps<typeof TextMessageEndEventSchema>;\nexport type TextMessageChunkEventProps = EventProps<typeof TextMessageChunkEventSchema>;\nexport type ThinkingTextMessageStartEventProps = EventProps<\n typeof ThinkingTextMessageStartEventSchema\n>;\nexport type ThinkingTextMessageContentEventProps = EventProps<\n typeof ThinkingTextMessageContentEventSchema\n>;\nexport type ThinkingTextMessageEndEventProps = EventProps<typeof ThinkingTextMessageEndEventSchema>;\nexport type ToolCallStartEventProps = EventProps<typeof ToolCallStartEventSchema>;\nexport type ToolCallArgsEventProps = EventProps<typeof ToolCallArgsEventSchema>;\nexport type ToolCallEndEventProps = EventProps<typeof ToolCallEndEventSchema>;\nexport type ToolCallChunkEventProps = EventProps<typeof ToolCallChunkEventSchema>;\nexport type ToolCallResultEventProps = EventProps<typeof ToolCallResultEventSchema>;\nexport type ThinkingStartEventProps = EventProps<typeof ThinkingStartEventSchema>;\nexport type ThinkingEndEventProps = EventProps<typeof ThinkingEndEventSchema>;\nexport type StateSnapshotEventProps = EventProps<typeof StateSnapshotEventSchema>;\nexport type StateDeltaEventProps = EventProps<typeof StateDeltaEventSchema>;\nexport type MessagesSnapshotEventProps = EventProps<typeof MessagesSnapshotEventSchema>;\nexport type ActivitySnapshotEventProps = EventProps<typeof ActivitySnapshotEventSchema>;\nexport type ActivityDeltaEventProps = EventProps<typeof ActivityDeltaEventSchema>;\nexport type RawEventProps = EventProps<typeof RawEventSchema>;\nexport type CustomEventProps = EventProps<typeof CustomEventSchema>;\nexport type RunStartedEventProps = EventProps<typeof RunStartedEventSchema>;\nexport type RunFinishedEventProps = EventProps<typeof RunFinishedEventSchema>;\nexport type RunErrorEventProps = EventProps<typeof RunErrorEventSchema>;\nexport type StepStartedEventProps = EventProps<typeof StepStartedEventSchema>;\nexport type StepFinishedEventProps = EventProps<typeof StepFinishedEventSchema>;\nexport type ReasoningStartEventProps = EventProps<typeof ReasoningStartEventSchema>;\nexport type ReasoningMessageStartEventProps = EventProps<typeof ReasoningMessageStartEventSchema>;\nexport type ReasoningMessageContentEventProps = EventProps<\n typeof ReasoningMessageContentEventSchema\n>;\nexport type ReasoningMessageEndEventProps = EventProps<typeof ReasoningMessageEndEventSchema>;\nexport type ReasoningMessageChunkEventProps = EventProps<typeof ReasoningMessageChunkEventSchema>;\nexport type ReasoningEndEventProps = EventProps<typeof ReasoningEndEventSchema>;\nexport type ReasoningEncryptedValueEventProps = EventProps<\n typeof ReasoningEncryptedValueEventSchema\n>;\n\nexport type TextMessageStartEvent = z.infer<typeof TextMessageStartEventSchema>;\nexport type TextMessageContentEvent = z.infer<typeof TextMessageContentEventSchema>;\nexport type TextMessageEndEvent = z.infer<typeof TextMessageEndEventSchema>;\nexport type TextMessageChunkEvent = z.infer<typeof TextMessageChunkEventSchema>;\nexport type ThinkingTextMessageStartEvent = z.infer<typeof ThinkingTextMessageStartEventSchema>;\nexport type ThinkingTextMessageContentEvent = z.infer<typeof ThinkingTextMessageContentEventSchema>;\nexport type ThinkingTextMessageEndEvent = z.infer<typeof ThinkingTextMessageEndEventSchema>;\nexport type ToolCallStartEvent = z.infer<typeof ToolCallStartEventSchema>;\nexport type ToolCallArgsEvent = z.infer<typeof ToolCallArgsEventSchema>;\nexport type ToolCallEndEvent = z.infer<typeof ToolCallEndEventSchema>;\nexport type ToolCallChunkEvent = z.infer<typeof ToolCallChunkEventSchema>;\nexport type ToolCallResultEvent = z.infer<typeof ToolCallResultEventSchema>;\nexport type ThinkingStartEvent = z.infer<typeof ThinkingStartEventSchema>;\nexport type ThinkingEndEvent = z.infer<typeof ThinkingEndEventSchema>;\nexport type StateSnapshotEvent = z.infer<typeof StateSnapshotEventSchema>;\nexport type StateDeltaEvent = z.infer<typeof StateDeltaEventSchema>;\nexport type MessagesSnapshotEvent = z.infer<typeof MessagesSnapshotEventSchema>;\nexport type ActivitySnapshotEvent = z.infer<typeof ActivitySnapshotEventSchema>;\nexport type ActivityDeltaEvent = z.infer<typeof ActivityDeltaEventSchema>;\nexport type RawEvent = z.infer<typeof RawEventSchema>;\nexport type CustomEvent = z.infer<typeof CustomEventSchema>;\nexport type RunStartedEvent = z.infer<typeof RunStartedEventSchema>;\nexport type RunFinishedEvent = z.infer<typeof RunFinishedEventSchema>;\nexport type RunErrorEvent = z.infer<typeof RunErrorEventSchema>;\nexport type StepStartedEvent = z.infer<typeof StepStartedEventSchema>;\nexport type StepFinishedEvent = z.infer<typeof StepFinishedEventSchema>;\nexport type ReasoningStartEvent = z.infer<typeof ReasoningStartEventSchema>;\nexport type ReasoningMessageStartEvent = z.infer<typeof ReasoningMessageStartEventSchema>;\nexport type ReasoningMessageContentEvent = z.infer<typeof ReasoningMessageContentEventSchema>;\nexport type ReasoningMessageEndEvent = z.infer<typeof ReasoningMessageEndEventSchema>;\nexport type ReasoningMessageChunkEvent = z.infer<typeof ReasoningMessageChunkEventSchema>;\nexport type ReasoningEndEvent = z.infer<typeof ReasoningEndEventSchema>;\nexport type ReasoningEncryptedValueEvent = z.infer<typeof ReasoningEncryptedValueEventSchema>;\nexport type ReasoningEncryptedValueSubtype = z.infer<typeof ReasoningEncryptedValueSubtypeSchema>;\n", "import { PatchError, _deepClone, isInteger, unescapePathComponent, hasUndefined } from './helpers.mjs';\nexport var JsonPatchError = PatchError;\nexport var deepClone = _deepClone;\n/* We use a Javascript hash to store each\n function. Each hash entry (property) uses\n the operation identifiers specified in rfc6902.\n In this way, we can map each patch operation\n to its dedicated function in efficient way.\n */\n/* The operations applicable to an object */\nvar objOps = {\n add: function (obj, key, document) {\n obj[key] = this.value;\n return { newDocument: document };\n },\n remove: function (obj, key, document) {\n var removed = obj[key];\n delete obj[key];\n return { newDocument: document, removed: removed };\n },\n replace: function (obj, key, document) {\n var removed = obj[key];\n obj[key] = this.value;\n return { newDocument: document, removed: removed };\n },\n move: function (obj, key, document) {\n /* in case move target overwrites an existing value,\n return the removed value, this can be taxing performance-wise,\n and is potentially unneeded */\n var removed = getValueByPointer(document, this.path);\n if (removed) {\n removed = _deepClone(removed);\n }\n var originalValue = applyOperation(document, { op: \"remove\", path: this.from }).removed;\n applyOperation(document, { op: \"add\", path: this.path, value: originalValue });\n return { newDocument: document, removed: removed };\n },\n copy: function (obj, key, document) {\n var valueToCopy = getValueByPointer(document, this.from);\n // enforce copy by value so further operations don't affect source (see issue #177)\n applyOperation(document, { op: \"add\", path: this.path, value: _deepClone(valueToCopy) });\n return { newDocument: document };\n },\n test: function (obj, key, document) {\n return { newDocument: document, test: _areEquals(obj[key], this.value) };\n },\n _get: function (obj, key, document) {\n this.value = obj[key];\n return { newDocument: document };\n }\n};\n/* The operations applicable to an array. Many are the same as for the object */\nvar arrOps = {\n add: function (arr, i, document) {\n if (isInteger(i)) {\n arr.splice(i, 0, this.value);\n }\n else { // array props\n arr[i] = this.value;\n }\n // this may be needed when using '-' in an array\n return { newDocument: document, index: i };\n },\n remove: function (arr, i, document) {\n var removedList = arr.splice(i, 1);\n return { newDocument: document, removed: removedList[0] };\n },\n replace: function (arr, i, document) {\n var removed = arr[i];\n arr[i] = this.value;\n return { newDocument: document, removed: removed };\n },\n move: objOps.move,\n copy: objOps.copy,\n test: objOps.test,\n _get: objOps._get\n};\n/**\n * Retrieves a value from a JSON document by a JSON pointer.\n * Returns the value.\n *\n * @param document The document to get the value from\n * @param pointer an escaped JSON pointer\n * @return The retrieved value\n */\nexport function getValueByPointer(document, pointer) {\n if (pointer == '') {\n return document;\n }\n var getOriginalDestination = { op: \"_get\", path: pointer };\n applyOperation(document, getOriginalDestination);\n return getOriginalDestination.value;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the {newDocument, result} of the operation.\n * It modifies the `document` and `operation` objects - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyOperation(document, jsonpatch._deepClone(operation))`.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return `{newDocument, result}` after the operation\n */\nexport function applyOperation(document, operation, validateOperation, mutateDocument, banPrototypeModifications, index) {\n if (validateOperation === void 0) { validateOperation = false; }\n if (mutateDocument === void 0) { mutateDocument = true; }\n if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }\n if (index === void 0) { index = 0; }\n if (validateOperation) {\n if (typeof validateOperation == 'function') {\n validateOperation(operation, 0, document, operation.path);\n }\n else {\n validator(operation, 0);\n }\n }\n /* ROOT OPERATIONS */\n if (operation.path === \"\") {\n var returnValue = { newDocument: document };\n if (operation.op === 'add') {\n returnValue.newDocument = operation.value;\n return returnValue;\n }\n else if (operation.op === 'replace') {\n returnValue.newDocument = operation.value;\n returnValue.removed = document; //document we removed\n return returnValue;\n }\n else if (operation.op === 'move' || operation.op === 'copy') { // it's a move or copy to root\n returnValue.newDocument = getValueByPointer(document, operation.from); // get the value by json-pointer in `from` field\n if (operation.op === 'move') { // report removed item\n returnValue.removed = document;\n }\n return returnValue;\n }\n else if (operation.op === 'test') {\n returnValue.test = _areEquals(document, operation.value);\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n returnValue.newDocument = document;\n return returnValue;\n }\n else if (operation.op === 'remove') { // a remove on root\n returnValue.removed = document;\n returnValue.newDocument = null;\n return returnValue;\n }\n else if (operation.op === '_get') {\n operation.value = document;\n return returnValue;\n }\n else { /* bad operation */\n if (validateOperation) {\n throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n }\n else {\n return returnValue;\n }\n }\n } /* END ROOT OPERATIONS */\n else {\n if (!mutateDocument) {\n document = _deepClone(document);\n }\n var path = operation.path || \"\";\n var keys = path.split('/');\n var obj = document;\n var t = 1; //skip empty element - http://jsperf.com/to-shift-or-not-to-shift\n var len = keys.length;\n var existingPathFragment = undefined;\n var key = void 0;\n var validateFunction = void 0;\n if (typeof validateOperation == 'function') {\n validateFunction = validateOperation;\n }\n else {\n validateFunction = validator;\n }\n while (true) {\n key = keys[t];\n if (key && key.indexOf('~') != -1) {\n key = unescapePathComponent(key);\n }\n if (banPrototypeModifications &&\n (key == '__proto__' ||\n (key == 'prototype' && t > 0 && keys[t - 1] == 'constructor'))) {\n throw new TypeError('JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README');\n }\n if (validateOperation) {\n if (existingPathFragment === undefined) {\n if (obj[key] === undefined) {\n existingPathFragment = keys.slice(0, t).join('/');\n }\n else if (t == len - 1) {\n existingPathFragment = operation.path;\n }\n if (existingPathFragment !== undefined) {\n validateFunction(operation, 0, document, existingPathFragment);\n }\n }\n }\n t++;\n if (Array.isArray(obj)) {\n if (key === '-') {\n key = obj.length;\n }\n else {\n if (validateOperation && !isInteger(key)) {\n throw new JsonPatchError(\"Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index\", \"OPERATION_PATH_ILLEGAL_ARRAY_INDEX\", index, operation, document);\n } // only parse key when it's an integer for `arr.prop` to work\n else if (isInteger(key)) {\n key = ~~key;\n }\n }\n if (t >= len) {\n if (validateOperation && operation.op === \"add\" && key > obj.length) {\n throw new JsonPatchError(\"The specified index MUST NOT be greater than the number of elements in the array\", \"OPERATION_VALUE_OUT_OF_BOUNDS\", index, operation, document);\n }\n var returnValue = arrOps[operation.op].call(operation, obj, key, document); // Apply patch\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return returnValue;\n }\n }\n else {\n if (t >= len) {\n var returnValue = objOps[operation.op].call(operation, obj, key, document); // Apply patch\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return returnValue;\n }\n }\n obj = obj[key];\n // If we have more keys in the path, but the next value isn't a non-null object,\n // throw an OPERATION_PATH_UNRESOLVABLE error instead of iterating again.\n if (validateOperation && t < len && (!obj || typeof obj !== \"object\")) {\n throw new JsonPatchError('Cannot perform operation at the desired path', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n }\n }\n }\n}\n/**\n * Apply a full JSON Patch array on a JSON document.\n * Returns the {newDocument, result} of the patch.\n * It modifies the `document` object and `patch` - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyPatch(document, jsonpatch._deepClone(patch))`.\n *\n * @param document The document to patch\n * @param patch The patch to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return An array of `{newDocument, result}` after the patch\n */\nexport function applyPatch(document, patch, validateOperation, mutateDocument, banPrototypeModifications) {\n if (mutateDocument === void 0) { mutateDocument = true; }\n if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }\n if (validateOperation) {\n if (!Array.isArray(patch)) {\n throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n }\n }\n if (!mutateDocument) {\n document = _deepClone(document);\n }\n var results = new Array(patch.length);\n for (var i = 0, length_1 = patch.length; i < length_1; i++) {\n // we don't need to pass mutateDocument argument because if it was true, we already deep cloned the object, we'll just pass `true`\n results[i] = applyOperation(document, patch[i], validateOperation, true, banPrototypeModifications, i);\n document = results[i].newDocument; // in case root was replaced\n }\n results.newDocument = document;\n return results;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the updated document.\n * Suitable as a reducer.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @return The updated document\n */\nexport function applyReducer(document, operation, index) {\n var operationResult = applyOperation(document, operation);\n if (operationResult.test === false) { // failed test\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return operationResult.newDocument;\n}\n/**\n * Validates a single operation. Called from `jsonpatch.validate`. Throws `JsonPatchError` in case of an error.\n * @param {object} operation - operation object (patch)\n * @param {number} index - index of operation in the sequence\n * @param {object} [document] - object where the operation is supposed to be applied\n * @param {string} [existingPathFragment] - comes along with `document`\n */\nexport function validator(operation, index, document, existingPathFragment) {\n if (typeof operation !== 'object' || operation === null || Array.isArray(operation)) {\n throw new JsonPatchError('Operation is not an object', 'OPERATION_NOT_AN_OBJECT', index, operation, document);\n }\n else if (!objOps[operation.op]) {\n throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n }\n else if (typeof operation.path !== 'string') {\n throw new JsonPatchError('Operation `path` property is not a string', 'OPERATION_PATH_INVALID', index, operation, document);\n }\n else if (operation.path.indexOf('/') !== 0 && operation.path.length > 0) {\n // paths that aren't empty string should start with \"/\"\n throw new JsonPatchError('Operation `path` property must start with \"/\"', 'OPERATION_PATH_INVALID', index, operation, document);\n }\n else if ((operation.op === 'move' || operation.op === 'copy') && typeof operation.from !== 'string') {\n throw new JsonPatchError('Operation `from` property is not present (applicable in `move` and `copy` operations)', 'OPERATION_FROM_REQUIRED', index, operation, document);\n }\n else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && operation.value === undefined) {\n throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_REQUIRED', index, operation, document);\n }\n else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && hasUndefined(operation.value)) {\n throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED', index, operation, document);\n }\n else if (document) {\n if (operation.op == \"add\") {\n var pathLen = operation.path.split(\"/\").length;\n var existingPathLen = existingPathFragment.split(\"/\").length;\n if (pathLen !== existingPathLen + 1 && pathLen !== existingPathLen) {\n throw new JsonPatchError('Cannot perform an `add` operation at the desired path', 'OPERATION_PATH_CANNOT_ADD', index, operation, document);\n }\n }\n else if (operation.op === 'replace' || operation.op === 'remove' || operation.op === '_get') {\n if (operation.path !== existingPathFragment) {\n throw new JsonPatchError('Cannot perform the operation at a path that does not exist', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n }\n }\n else if (operation.op === 'move' || operation.op === 'copy') {\n var existingValue = { op: \"_get\", path: operation.from, value: undefined };\n var error = validate([existingValue], document);\n if (error && error.name === 'OPERATION_PATH_UNRESOLVABLE') {\n throw new JsonPatchError('Cannot perform the operation from a path that does not exist', 'OPERATION_FROM_UNRESOLVABLE', index, operation, document);\n }\n }\n }\n}\n/**\n * Validates a sequence of operations. If `document` parameter is provided, the sequence is additionally validated against the object document.\n * If error is encountered, returns a JsonPatchError object\n * @param sequence\n * @param document\n * @returns {JsonPatchError|undefined}\n */\nexport function validate(sequence, document, externalValidator) {\n try {\n if (!Array.isArray(sequence)) {\n throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n }\n if (document) {\n //clone document and sequence so that we can safely try applying operations\n applyPatch(_deepClone(document), _deepClone(sequence), externalValidator || true);\n }\n else {\n externalValidator = externalValidator || validator;\n for (var i = 0; i < sequence.length; i++) {\n externalValidator(sequence[i], i, document, undefined);\n }\n }\n }\n catch (e) {\n if (e instanceof JsonPatchError) {\n return e;\n }\n else {\n throw e;\n }\n }\n}\n// based on https://github.com/epoberezkin/fast-deep-equal\n// MIT License\n// Copyright (c) 2017 Evgeny Poberezkin\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\nexport function _areEquals(a, b) {\n if (a === b)\n return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = Array.isArray(a), arrB = Array.isArray(b), i, length, key;\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length)\n return false;\n for (i = length; i-- !== 0;)\n if (!_areEquals(a[i], b[i]))\n return false;\n return true;\n }\n if (arrA != arrB)\n return false;\n var keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length)\n return false;\n for (i = length; i-- !== 0;)\n if (!b.hasOwnProperty(keys[i]))\n return false;\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!_areEquals(a[key], b[key]))\n return false;\n }\n return true;\n }\n return a !== a && b !== b;\n}\n;\n", "/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017-2022 Joachim Wester\n * MIT licensed\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function hasOwnProperty(obj, key) {\n return _hasOwnProperty.call(obj, key);\n}\nexport function _objectKeys(obj) {\n if (Array.isArray(obj)) {\n var keys_1 = new Array(obj.length);\n for (var k = 0; k < keys_1.length; k++) {\n keys_1[k] = \"\" + k;\n }\n return keys_1;\n }\n if (Object.keys) {\n return Object.keys(obj);\n }\n var keys = [];\n for (var i in obj) {\n if (hasOwnProperty(obj, i)) {\n keys.push(i);\n }\n }\n return keys;\n}\n;\n/**\n* Deeply clone the object.\n* https://jsperf.com/deep-copy-vs-json-stringify-json-parse/25 (recursiveDeepCopy)\n* @param {any} obj value to clone\n* @return {any} cloned obj\n*/\nexport function _deepClone(obj) {\n switch (typeof obj) {\n case \"object\":\n return JSON.parse(JSON.stringify(obj)); //Faster than ES5 clone - http://jsperf.com/deep-cloning-of-objects/5\n case \"undefined\":\n return null; //this is how JSON.stringify behaves for array items\n default:\n return obj; //no need to clone primitives\n }\n}\n//3x faster than cached /^\\d+$/.test(str)\nexport function isInteger(str) {\n var i = 0;\n var len = str.length;\n var charCode;\n while (i < len) {\n charCode = str.charCodeAt(i);\n if (charCode >= 48 && charCode <= 57) {\n i++;\n continue;\n }\n return false;\n }\n return true;\n}\n/**\n* Escapes a json pointer path\n* @param path The raw pointer\n* @return the Escaped path\n*/\nexport function escapePathComponent(path) {\n if (path.indexOf('/') === -1 && path.indexOf('~') === -1)\n return path;\n return path.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n/**\n * Unescapes a json pointer path\n * @param path The escaped pointer\n * @return The unescaped path\n */\nexport function unescapePathComponent(path) {\n return path.replace(/~1/g, '/').replace(/~0/g, '~');\n}\nexport function _getPathRecursive(root, obj) {\n var found;\n for (var key in root) {\n if (hasOwnProperty(root, key)) {\n if (root[key] === obj) {\n return escapePathComponent(key) + '/';\n }\n else if (typeof root[key] === 'object') {\n found = _getPathRecursive(root[key], obj);\n if (found != '') {\n return escapePathComponent(key) + '/' + found;\n }\n }\n }\n }\n return '';\n}\nexport function getPath(root, obj) {\n if (root === obj) {\n return '/';\n }\n var path = _getPathRecursive(root, obj);\n if (path === '') {\n throw new Error(\"Object not found in root\");\n }\n return \"/\" + path;\n}\n/**\n* Recursively checks whether an object has any undefined values inside.\n*/\nexport function hasUndefined(obj) {\n if (obj === undefined) {\n return true;\n }\n if (obj) {\n if (Array.isArray(obj)) {\n for (var i_1 = 0, len = obj.length; i_1 < len; i_1++) {\n if (hasUndefined(obj[i_1])) {\n return true;\n }\n }\n }\n else if (typeof obj === \"object\") {\n var objKeys = _objectKeys(obj);\n var objKeysLength = objKeys.length;\n for (var i = 0; i < objKeysLength; i++) {\n if (hasUndefined(obj[objKeys[i]])) {\n return true;\n }\n }\n }\n }\n return false;\n}\nfunction patchErrorMessageFormatter(message, args) {\n var messageParts = [message];\n for (var key in args) {\n var value = typeof args[key] === 'object' ? JSON.stringify(args[key], null, 2) : args[key]; // pretty print\n if (typeof value !== 'undefined') {\n messageParts.push(key + \": \" + value);\n }\n }\n return messageParts.join('\\n');\n}\nvar PatchError = /** @class */ (function (_super) {\n __extends(PatchError, _super);\n function PatchError(message, name, index, operation, tree) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree })) || this;\n _this.name = name;\n _this.index = index;\n _this.operation = operation;\n _this.tree = tree;\n Object.setPrototypeOf(_this, _newTarget.prototype); // restore prototype chain, see https://stackoverflow.com/a/48342359\n _this.message = patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree });\n return _this;\n }\n return PatchError;\n}(Error));\nexport { PatchError };\n", "/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017-2021 Joachim Wester\n * MIT license\n */\nimport { _deepClone, _objectKeys, escapePathComponent, hasOwnProperty } from './helpers.mjs';\nimport { applyPatch } from './core.mjs';\nvar beforeDict = new WeakMap();\nvar Mirror = /** @class */ (function () {\n function Mirror(obj) {\n this.observers = new Map();\n this.obj = obj;\n }\n return Mirror;\n}());\nvar ObserverInfo = /** @class */ (function () {\n function ObserverInfo(callback, observer) {\n this.callback = callback;\n this.observer = observer;\n }\n return ObserverInfo;\n}());\nfunction getMirror(obj) {\n return beforeDict.get(obj);\n}\nfunction getObserverFromMirror(mirror, callback) {\n return mirror.observers.get(callback);\n}\nfunction removeObserverFromMirror(mirror, observer) {\n mirror.observers.delete(observer.callback);\n}\n/**\n * Detach an observer from an object\n */\nexport function unobserve(root, observer) {\n observer.unobserve();\n}\n/**\n * Observes changes made to an object, which can then be retrieved using generate\n */\nexport function observe(obj, callback) {\n var patches = [];\n var observer;\n var mirror = getMirror(obj);\n if (!mirror) {\n mirror = new Mirror(obj);\n beforeDict.set(obj, mirror);\n }\n else {\n var observerInfo = getObserverFromMirror(mirror, callback);\n observer = observerInfo && observerInfo.observer;\n }\n if (observer) {\n return observer;\n }\n observer = {};\n mirror.value = _deepClone(obj);\n if (callback) {\n observer.callback = callback;\n observer.next = null;\n var dirtyCheck = function () {\n generate(observer);\n };\n var fastCheck = function () {\n clearTimeout(observer.next);\n observer.next = setTimeout(dirtyCheck);\n };\n if (typeof window !== 'undefined') { //not Node\n window.addEventListener('mouseup', fastCheck);\n window.addEventListener('keyup', fastCheck);\n window.addEventListener('mousedown', fastCheck);\n window.addEventListener('keydown', fastCheck);\n window.addEventListener('change', fastCheck);\n }\n }\n observer.patches = patches;\n observer.object = obj;\n observer.unobserve = function () {\n generate(observer);\n clearTimeout(observer.next);\n removeObserverFromMirror(mirror, observer);\n if (typeof window !== 'undefined') {\n window.removeEventListener('mouseup', fastCheck);\n window.removeEventListener('keyup', fastCheck);\n window.removeEventListener('mousedown', fastCheck);\n window.removeEventListener('keydown', fastCheck);\n window.removeEventListener('change', fastCheck);\n }\n };\n mirror.observers.set(callback, new ObserverInfo(callback, observer));\n return observer;\n}\n/**\n * Generate an array of patches from an observer\n */\nexport function generate(observer, invertible) {\n if (invertible === void 0) { invertible = false; }\n var mirror = beforeDict.get(observer.object);\n _generate(mirror.value, observer.object, observer.patches, \"\", invertible);\n if (observer.patches.length) {\n applyPatch(mirror.value, observer.patches);\n }\n var temp = observer.patches;\n if (temp.length > 0) {\n observer.patches = [];\n if (observer.callback) {\n observer.callback(temp);\n }\n }\n return temp;\n}\n// Dirty check if obj is different from mirror, generate patches and update mirror\nfunction _generate(mirror, obj, patches, path, invertible) {\n if (obj === mirror) {\n return;\n }\n if (typeof obj.toJSON === \"function\") {\n obj = obj.toJSON();\n }\n var newKeys = _objectKeys(obj);\n var oldKeys = _objectKeys(mirror);\n var changed = false;\n var deleted = false;\n //if ever \"move\" operation is implemented here, make sure this test runs OK: \"should not generate the same patch twice (move)\"\n for (var t = oldKeys.length - 1; t >= 0; t--) {\n var key = oldKeys[t];\n var oldVal = mirror[key];\n if (hasOwnProperty(obj, key) && !(obj[key] === undefined && oldVal !== undefined && Array.isArray(obj) === false)) {\n var newVal = obj[key];\n if (typeof oldVal == \"object\" && oldVal != null && typeof newVal == \"object\" && newVal != null && Array.isArray(oldVal) === Array.isArray(newVal)) {\n _generate(oldVal, newVal, patches, path + \"/\" + escapePathComponent(key), invertible);\n }\n else {\n if (oldVal !== newVal) {\n changed = true;\n if (invertible) {\n patches.push({ op: \"test\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(oldVal) });\n }\n patches.push({ op: \"replace\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(newVal) });\n }\n }\n }\n else if (Array.isArray(mirror) === Array.isArray(obj)) {\n if (invertible) {\n patches.push({ op: \"test\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(oldVal) });\n }\n patches.push({ op: \"remove\", path: path + \"/\" + escapePathComponent(key) });\n deleted = true; // property has been deleted\n }\n else {\n if (invertible) {\n patches.push({ op: \"test\", path: path, value: mirror });\n }\n patches.push({ op: \"replace\", path: path, value: obj });\n changed = true;\n }\n }\n if (!deleted && newKeys.length == oldKeys.length) {\n return;\n }\n for (var t = 0; t < newKeys.length; t++) {\n var key = newKeys[t];\n if (!hasOwnProperty(mirror, key) && obj[key] !== undefined) {\n patches.push({ op: \"add\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(obj[key]) });\n }\n }\n}\n/**\n * Create an array of patches from the differences in two objects\n */\nexport function compare(tree1, tree2, invertible) {\n if (invertible === void 0) { invertible = false; }\n var patches = [];\n _generate(tree1, tree2, patches, '', invertible);\n return patches;\n}\n", "export * from './module/core.mjs';\nexport * from './module/duplex.mjs';\nexport {\n PatchError as JsonPatchError,\n _deepClone as deepClone,\n escapePathComponent,\n unescapePathComponent\n} from './module/helpers.mjs';\n\n\n/**\n * Default export for backwards compat\n */\n\nimport * as core from './module/core.mjs';\nimport * as duplex from './module/duplex.mjs';\nimport {\n PatchError as JsonPatchError,\n _deepClone as deepClone,\n escapePathComponent,\n unescapePathComponent\n} from './module/helpers.mjs';\n\nexport default Object.assign({}, core, duplex, {\n JsonPatchError,\n deepClone,\n escapePathComponent,\n unescapePathComponent\n});", "/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n", "/**\n * Returns true if the object is a function.\n * @param value The value to check\n */\nexport function isFunction(value: any): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n", "/**\n * Used to create Error subclasses until the community moves away from ES5.\n *\n * This is because compiling from TypeScript down to ES5 has issues with subclassing Errors\n * as well as other built-in types: https://github.com/Microsoft/TypeScript/issues/12123\n *\n * @param createImpl A factory function to create the actual constructor implementation. The returned\n * function should be a named function that calls `_super` internally.\n */\nexport function createErrorClass<T>(createImpl: (_super: any) => any): T {\n const _super = (instance: any) => {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n\n const ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n", "import { createErrorClass } from './createErrorClass';\n\nexport interface UnsubscriptionError extends Error {\n readonly errors: any[];\n}\n\nexport interface UnsubscriptionErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (errors: any[]): UnsubscriptionError;\n}\n\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nexport const UnsubscriptionError: UnsubscriptionErrorCtor = createErrorClass(\n (_super) =>\n function UnsubscriptionErrorImpl(this: any, errors: (Error | string)[]) {\n _super(this);\n this.message = errors\n ? `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}`\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n }\n);\n", "/**\n * Removes an item from an array, mutating it.\n * @param arr The array to remove the item from\n * @param item The item to remove\n */\nexport function arrRemove<T>(arr: T[] | undefined | null, item: T) {\n if (arr) {\n const index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n", "import { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { SubscriptionLike, TeardownLogic, Unsubscribable } from './types';\nimport { arrRemove } from './util/arrRemove';\n\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nexport class Subscription implements SubscriptionLike {\n /** @nocollapse */\n public static EMPTY = (() => {\n const empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n\n /**\n * A flag to indicate whether this Subscription has already been unsubscribed.\n */\n public closed = false;\n\n private _parentage: Subscription[] | Subscription | null = null;\n\n /**\n * The list of registered finalizers to execute upon unsubscription. Adding and removing from this\n * list occurs in the {@link #add} and {@link #remove} methods.\n */\n private _finalizers: Exclude<TeardownLogic, void>[] | null = null;\n\n /**\n * @param initialTeardown A function executed first as part of the finalization\n * process that is kicked off when {@link #unsubscribe} is called.\n */\n constructor(private initialTeardown?: () => void) {}\n\n /**\n * Disposes the resources held by the subscription. May, for instance, cancel\n * an ongoing Observable execution or cancel any other type of work that\n * started when the Subscription was created.\n * @return {void}\n */\n unsubscribe(): void {\n let errors: any[] | undefined;\n\n if (!this.closed) {\n this.closed = true;\n\n // Remove this from it's parents.\n const { _parentage } = this;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n for (const parent of _parentage) {\n parent.remove(this);\n }\n } else {\n _parentage.remove(this);\n }\n }\n\n const { initialTeardown: initialFinalizer } = this;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n } catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n\n const { _finalizers } = this;\n if (_finalizers) {\n this._finalizers = null;\n for (const finalizer of _finalizers) {\n try {\n execFinalizer(finalizer);\n } catch (err) {\n errors = errors ?? [];\n if (err instanceof UnsubscriptionError) {\n errors = [...errors, ...err.errors];\n } else {\n errors.push(err);\n }\n }\n }\n }\n\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n }\n\n /**\n * Adds a finalizer to this subscription, so that finalization will be unsubscribed/called\n * when this subscription is unsubscribed. If this subscription is already {@link #closed},\n * because it has already been unsubscribed, then whatever finalizer is passed to it\n * will automatically be executed (unless the finalizer itself is also a closed subscription).\n *\n * Closed Subscriptions cannot be added as finalizers to any subscription. Adding a closed\n * subscription to a any subscription will result in no operation. (A noop).\n *\n * Adding a subscription to itself, or adding `null` or `undefined` will not perform any\n * operation at all. (A noop).\n *\n * `Subscription` instances that are added to this instance will automatically remove themselves\n * if they are unsubscribed. Functions and {@link Unsubscribable} objects that you wish to remove\n * will need to be removed manually with {@link #remove}\n *\n * @param teardown The finalization logic to add to this subscription.\n */\n add(teardown: TeardownLogic): void {\n // Only add the finalizer if it's not undefined\n // and don't add a subscription to itself.\n if (teardown && teardown !== this) {\n if (this.closed) {\n // If this subscription is already closed,\n // execute whatever finalizer is handed to it automatically.\n execFinalizer(teardown);\n } else {\n if (teardown instanceof Subscription) {\n // We don't add closed subscriptions, and we don't add the same subscription\n // twice. Subscription unsubscribe is idempotent.\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = this._finalizers ?? []).push(teardown);\n }\n }\n }\n\n /**\n * Checks to see if a this subscription already has a particular parent.\n * This will signal that this subscription has already been added to the parent in question.\n * @param parent the parent to check for\n */\n private _hasParent(parent: Subscription) {\n const { _parentage } = this;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n }\n\n /**\n * Adds a parent to this subscription so it can be removed from the parent if it\n * unsubscribes on it's own.\n *\n * NOTE: THIS ASSUMES THAT {@link _hasParent} HAS ALREADY BEEN CHECKED.\n * @param parent The parent subscription to add\n */\n private _addParent(parent: Subscription) {\n const { _parentage } = this;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n }\n\n /**\n * Called on a child when it is removed via {@link #remove}.\n * @param parent The parent to remove\n */\n private _removeParent(parent: Subscription) {\n const { _parentage } = this;\n if (_parentage === parent) {\n this._parentage = null;\n } else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n }\n\n /**\n * Removes a finalizer from this subscription that was previously added with the {@link #add} method.\n *\n * Note that `Subscription` instances, when unsubscribed, will automatically remove themselves\n * from every other `Subscription` they have been added to. This means that using the `remove` method\n * is not a common thing and should be used thoughtfully.\n *\n * If you add the same finalizer instance of a function or an unsubscribable object to a `Subscription` instance\n * more than once, you will need to call `remove` the same number of times to remove all instances.\n *\n * All finalizer instances are removed to free up memory upon unsubscription.\n *\n * @param teardown The finalizer to remove from this subscription\n */\n remove(teardown: Exclude<TeardownLogic, void>): void {\n const { _finalizers } = this;\n _finalizers && arrRemove(_finalizers, teardown);\n\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n }\n}\n\nexport const EMPTY_SUBSCRIPTION = Subscription.EMPTY;\n\nexport function isSubscription(value: any): value is Subscription {\n return (\n value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe))\n );\n}\n\nfunction execFinalizer(finalizer: Unsubscribable | (() => void)) {\n if (isFunction(finalizer)) {\n finalizer();\n } else {\n finalizer.unsubscribe();\n }\n}\n", "import { Subscriber } from './Subscriber';\nimport { ObservableNotification } from './types';\n\n/**\n * The {@link GlobalConfig} object for RxJS. It is used to configure things\n * like how to react on unhandled errors.\n */\nexport const config: GlobalConfig = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n\n/**\n * The global configuration object for RxJS, used to configure things\n * like how to react on unhandled errors. Accessible via {@link config}\n * object.\n */\nexport interface GlobalConfig {\n /**\n * A registration point for unhandled errors from RxJS. These are errors that\n * cannot were not handled by consuming code in the usual subscription path. For\n * example, if you have this configured, and you subscribe to an observable without\n * providing an error handler, errors from that subscription will end up here. This\n * will _always_ be called asynchronously on another job in the runtime. This is because\n * we do not want errors thrown in this user-configured handler to interfere with the\n * behavior of the library.\n */\n onUnhandledError: ((err: any) => void) | null;\n\n /**\n * A registration point for notifications that cannot be sent to subscribers because they\n * have completed, errored or have been explicitly unsubscribed. By default, next, complete\n * and error notifications sent to stopped subscribers are noops. However, sometimes callers\n * might want a different behavior. For example, with sources that attempt to report errors\n * to stopped subscribers, a caller can configure RxJS to throw an unhandled error instead.\n * This will _always_ be called asynchronously on another job in the runtime. This is because\n * we do not want errors thrown in this user-configured handler to interfere with the\n * behavior of the library.\n */\n onStoppedNotification: ((notification: ObservableNotification<any>, subscriber: Subscriber<any>) => void) | null;\n\n /**\n * The promise constructor used by default for {@link Observable#toPromise toPromise} and {@link Observable#forEach forEach}\n * methods.\n *\n * @deprecated As of version 8, RxJS will no longer support this sort of injection of a\n * Promise constructor. If you need a Promise implementation other than native promises,\n * please polyfill/patch Promise as you see appropriate. Will be removed in v8.\n */\n Promise?: PromiseConstructorLike;\n\n /**\n * If true, turns on synchronous error rethrowing, which is a deprecated behavior\n * in v6 and higher. This behavior enables bad patterns like wrapping a subscribe\n * call in a try/catch block. It also enables producer interference, a nasty bug\n * where a multicast can be broken for all observers by a downstream consumer with\n * an unhandled error. DO NOT USE THIS FLAG UNLESS IT'S NEEDED TO BUY TIME\n * FOR MIGRATION REASONS.\n *\n * @deprecated As of version 8, RxJS will no longer support synchronous throwing\n * of unhandled errors. All errors will be thrown on a separate call stack to prevent bad\n * behaviors described above. Will be removed in v8.\n */\n useDeprecatedSynchronousErrorHandling: boolean;\n\n /**\n * If true, enables an as-of-yet undocumented feature from v5: The ability to access\n * `unsubscribe()` via `this` context in `next` functions created in observers passed\n * to `subscribe`.\n *\n * This is being removed because the performance was severely problematic, and it could also cause\n * issues when types other than POJOs are passed to subscribe as subscribers, as they will likely have\n * their `this` context overwritten.\n *\n * @deprecated As of version 8, RxJS will no longer support altering the\n * context of next functions provided as part of an observer to Subscribe. Instead,\n * you will have access to a subscription or a signal or token that will allow you to do things like\n * unsubscribe and test closed status. Will be removed in v8.\n */\n useDeprecatedNextContext: boolean;\n}\n", "import type { TimerHandle } from './timerHandle';\ntype SetTimeoutFunction = (handler: () => void, timeout?: number, ...args: any[]) => TimerHandle;\ntype ClearTimeoutFunction = (handle: TimerHandle) => void;\n\ninterface TimeoutProvider {\n setTimeout: SetTimeoutFunction;\n clearTimeout: ClearTimeoutFunction;\n delegate:\n | {\n setTimeout: SetTimeoutFunction;\n clearTimeout: ClearTimeoutFunction;\n }\n | undefined;\n}\n\nexport const timeoutProvider: TimeoutProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n setTimeout(handler: () => void, timeout?: number, ...args) {\n const { delegate } = timeoutProvider;\n if (delegate?.setTimeout) {\n return delegate.setTimeout(handler, timeout, ...args);\n }\n return setTimeout(handler, timeout, ...args);\n },\n clearTimeout(handle) {\n const { delegate } = timeoutProvider;\n return (delegate?.clearTimeout || clearTimeout)(handle as any);\n },\n delegate: undefined,\n};\n", "import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\n\n/**\n * Handles an error on another job either with the user-configured {@link onUnhandledError},\n * or by throwing it on that new job so it can be picked up by `window.onerror`, `process.on('error')`, etc.\n *\n * This should be called whenever there is an error that is out-of-band with the subscription\n * or when an error hits a terminal boundary of the subscription and no error handler was provided.\n *\n * @param err the error to report\n */\nexport function reportUnhandledError(err: any) {\n timeoutProvider.setTimeout(() => {\n const { onUnhandledError } = config;\n if (onUnhandledError) {\n // Execute the user-configured error handler.\n onUnhandledError(err);\n } else {\n // Throw so it is picked up by the runtime's uncaught error mechanism.\n throw err;\n }\n });\n}\n", "/* tslint:disable:no-empty */\nexport function noop() { }\n", "import { CompleteNotification, NextNotification, ErrorNotification } from './types';\n\n/**\n * A completion object optimized for memory use and created to be the\n * same \"shape\" as other notifications in v8.\n * @internal\n */\nexport const COMPLETE_NOTIFICATION = (() => createNotification('C', undefined, undefined) as CompleteNotification)();\n\n/**\n * Internal use only. Creates an optimized error notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function errorNotification(error: any): ErrorNotification {\n return createNotification('E', undefined, error) as any;\n}\n\n/**\n * Internal use only. Creates an optimized next notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function nextNotification<T>(value: T) {\n return createNotification('N', value, undefined) as NextNotification<T>;\n}\n\n/**\n * Ensures that all notifications created internally have the same \"shape\" in v8.\n *\n * TODO: This is only exported to support a crazy legacy test in `groupBy`.\n * @internal\n */\nexport function createNotification(kind: 'N' | 'E' | 'C', value: any, error: any) {\n return {\n kind,\n value,\n error,\n };\n}\n", "import { config } from '../config';\n\nlet context: { errorThrown: boolean; error: any } | null = null;\n\n/**\n * Handles dealing with errors for super-gross mode. Creates a context, in which\n * any synchronously thrown errors will be passed to {@link captureError}. Which\n * will record the error such that it will be rethrown after the call back is complete.\n * TODO: Remove in v8\n * @param cb An immediately executed function.\n */\nexport function errorContext(cb: () => void) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n const isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n const { errorThrown, error } = context!;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n } else {\n // This is the general non-deprecated path for everyone that\n // isn't crazy enough to use super-gross mode (useDeprecatedSynchronousErrorHandling)\n cb();\n }\n}\n\n/**\n * Captures errors only in super-gross mode.\n * @param err the error to capture\n */\nexport function captureError(err: any) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n", "import { isFunction } from './util/isFunction';\nimport { Observer, ObservableNotification } from './types';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\n\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber<T>\n */\nexport class Subscriber<T> extends Subscription implements Observer<T> {\n /**\n * A static factory for a Subscriber, given a (potentially partial) definition\n * of an Observer.\n * @param next The `next` callback of an Observer.\n * @param error The `error` callback of an\n * Observer.\n * @param complete The `complete` callback of an\n * Observer.\n * @return A Subscriber wrapping the (partially defined)\n * Observer represented by the given arguments.\n * @nocollapse\n * @deprecated Do not use. Will be removed in v8. There is no replacement for this\n * method, and there is no reason to be creating instances of `Subscriber` directly.\n * If you have a specific use case, please file an issue.\n */\n static create<T>(next?: (x?: T) => void, error?: (e?: any) => void, complete?: () => void): Subscriber<T> {\n return new SafeSubscriber(next, error, complete);\n }\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n protected isStopped: boolean = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n protected destination: Subscriber<any> | Observer<any>; // this `any` is the escape hatch to erase extra type param (e.g. R)\n\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n * There is no reason to directly create an instance of Subscriber. This type is exported for typings reasons.\n */\n constructor(destination?: Subscriber<any> | Observer<any>) {\n super();\n if (destination) {\n this.destination = destination;\n // Automatically chain subscriptions together here.\n // if destination is a Subscription, then it is a Subscriber.\n if (isSubscription(destination)) {\n destination.add(this);\n }\n } else {\n this.destination = EMPTY_OBSERVER;\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `next` from\n * the Observable, with a value. The Observable may call this method 0 or more\n * times.\n * @param {T} [value] The `next` value.\n * @return {void}\n */\n next(value?: T): void {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n } else {\n this._next(value!);\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `error` from\n * the Observable, with an attached `Error`. Notifies the Observer that\n * the Observable has experienced an error condition.\n * @param {any} [err] The `error` exception.\n * @return {void}\n */\n error(err?: any): void {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n } else {\n this.isStopped = true;\n this._error(err);\n }\n }\n\n /**\n * The {@link Observer} callback to receive a valueless notification of type\n * `complete` from the Observable. Notifies the Observer that the Observable\n * has finished sending push-based notifications.\n * @return {void}\n */\n complete(): void {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n } else {\n this.isStopped = true;\n this._complete();\n }\n }\n\n unsubscribe(): void {\n if (!this.closed) {\n this.isStopped = true;\n super.unsubscribe();\n this.destination = null!;\n }\n }\n\n protected _next(value: T): void {\n this.destination.next(value);\n }\n\n protected _error(err: any): void {\n try {\n this.destination.error(err);\n } finally {\n this.unsubscribe();\n }\n }\n\n protected _complete(): void {\n try {\n this.destination.complete();\n } finally {\n this.unsubscribe();\n }\n }\n}\n\n/**\n * This bind is captured here because we want to be able to have\n * compatibility with monoid libraries that tend to use a method named\n * `bind`. In particular, a library called Monio requires this.\n */\nconst _bind = Function.prototype.bind;\n\nfunction bind<Fn extends (...args: any[]) => any>(fn: Fn, thisArg: any): Fn {\n return _bind.call(fn, thisArg);\n}\n\n/**\n * Internal optimization only, DO NOT EXPOSE.\n * @internal\n */\nclass ConsumerObserver<T> implements Observer<T> {\n constructor(private partialObserver: Partial<Observer<T>>) {}\n\n next(value: T): void {\n const { partialObserver } = this;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n } catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n\n error(err: any): void {\n const { partialObserver } = this;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n } catch (error) {\n handleUnhandledError(error);\n }\n } else {\n handleUnhandledError(err);\n }\n }\n\n complete(): void {\n const { partialObserver } = this;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n } catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n}\n\nexport class SafeSubscriber<T> extends Subscriber<T> {\n constructor(\n observerOrNext?: Partial<Observer<T>> | ((value: T) => void) | null,\n error?: ((e?: any) => void) | null,\n complete?: (() => void) | null\n ) {\n super();\n\n let partialObserver: Partial<Observer<T>>;\n if (isFunction(observerOrNext) || !observerOrNext) {\n // The first argument is a function, not an observer. The next\n // two arguments *could* be observers, or they could be empty.\n partialObserver = {\n next: (observerOrNext ?? undefined) as (((value: T) => void) | undefined),\n error: error ?? undefined,\n complete: complete ?? undefined,\n };\n } else {\n // The first argument is a partial observer.\n let context: any;\n if (this && config.useDeprecatedNextContext) {\n // This is a deprecated path that made `this.unsubscribe()` available in\n // next handler functions passed to subscribe. This only exists behind a flag\n // now, as it is *very* slow.\n context = Object.create(observerOrNext);\n context.unsubscribe = () => this.unsubscribe();\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context),\n error: observerOrNext.error && bind(observerOrNext.error, context),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context),\n };\n } else {\n // The \"normal\" path. Just use the partial observer directly.\n partialObserver = observerOrNext;\n }\n }\n\n // Wrap the partial observer to ensure it's a full observer, and\n // make sure proper error handling is accounted for.\n this.destination = new ConsumerObserver(partialObserver);\n }\n}\n\nfunction handleUnhandledError(error: any) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n } else {\n // Ideal path, we report this as an unhandled error,\n // which is thrown on a new call stack.\n reportUnhandledError(error);\n }\n}\n\n/**\n * An error handler used when no error handler was supplied\n * to the SafeSubscriber -- meaning no error handler was supplied\n * do the `subscribe` call on our observable.\n * @param err The error to handle\n */\nfunction defaultErrorHandler(err: any) {\n throw err;\n}\n\n/**\n * A handler for notifications that cannot be sent to a stopped subscriber.\n * @param notification The notification being sent\n * @param subscriber The stopped subscriber\n */\nfunction handleStoppedNotification(notification: ObservableNotification<any>, subscriber: Subscriber<any>) {\n const { onStoppedNotification } = config;\n onStoppedNotification && timeoutProvider.setTimeout(() => onStoppedNotification(notification, subscriber));\n}\n\n/**\n * The observer used as a stub for subscriptions where the user did not\n * pass any arguments to `subscribe`. Comes with the default error handling\n * behavior.\n */\nexport const EMPTY_OBSERVER: Readonly<Observer<any>> & { closed: true } = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n", "/**\n * Symbol.observable or a string \"@@observable\". Used for interop\n *\n * @deprecated We will no longer be exporting this symbol in upcoming versions of RxJS.\n * Instead polyfill and use Symbol.observable directly *or* use https://www.npmjs.com/package/symbol-observable\n */\nexport const observable: string | symbol = (() => (typeof Symbol === 'function' && Symbol.observable) || '@@observable')();\n", "/**\n * This function takes one parameter and just returns it. Simply put,\n * this is like `<T>(x: T): T => x`.\n *\n * ## Examples\n *\n * This is useful in some cases when using things like `mergeMap`\n *\n * ```ts\n * import { interval, take, map, range, mergeMap, identity } from 'rxjs';\n *\n * const source$ = interval(1000).pipe(take(5));\n *\n * const result$ = source$.pipe(\n * map(i => range(i)),\n * mergeMap(identity) // same as mergeMap(x => x)\n * );\n *\n * result$.subscribe({\n * next: console.log\n * });\n * ```\n *\n * Or when you want to selectively apply an operator\n *\n * ```ts\n * import { interval, take, identity } from 'rxjs';\n *\n * const shouldLimit = () => Math.random() < 0.5;\n *\n * const source$ = interval(1000);\n *\n * const result$ = source$.pipe(shouldLimit() ? take(5) : identity);\n *\n * result$.subscribe({\n * next: console.log\n * });\n * ```\n *\n * @param x Any value that is returned by this function\n * @returns The value passed as the first parameter to this function\n */\nexport function identity<T>(x: T): T {\n return x;\n}\n", "import { identity } from './identity';\nimport { UnaryFunction } from '../types';\n\nexport function pipe(): typeof identity;\nexport function pipe<T, A>(fn1: UnaryFunction<T, A>): UnaryFunction<T, A>;\nexport function pipe<T, A, B>(fn1: UnaryFunction<T, A>, fn2: UnaryFunction<A, B>): UnaryFunction<T, B>;\nexport function pipe<T, A, B, C>(fn1: UnaryFunction<T, A>, fn2: UnaryFunction<A, B>, fn3: UnaryFunction<B, C>): UnaryFunction<T, C>;\nexport function pipe<T, A, B, C, D>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>\n): UnaryFunction<T, D>;\nexport function pipe<T, A, B, C, D, E>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>\n): UnaryFunction<T, E>;\nexport function pipe<T, A, B, C, D, E, F>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>,\n fn6: UnaryFunction<E, F>\n): UnaryFunction<T, F>;\nexport function pipe<T, A, B, C, D, E, F, G>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>,\n fn6: UnaryFunction<E, F>,\n fn7: UnaryFunction<F, G>\n): UnaryFunction<T, G>;\nexport function pipe<T, A, B, C, D, E, F, G, H>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>,\n fn6: UnaryFunction<E, F>,\n fn7: UnaryFunction<F, G>,\n fn8: UnaryFunction<G, H>\n): UnaryFunction<T, H>;\nexport function pipe<T, A, B, C, D, E, F, G, H, I>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>,\n fn6: UnaryFunction<E, F>,\n fn7: UnaryFunction<F, G>,\n fn8: UnaryFunction<G, H>,\n fn9: UnaryFunction<H, I>\n): UnaryFunction<T, I>;\nexport function pipe<T, A, B, C, D, E, F, G, H, I>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>,\n fn6: UnaryFunction<E, F>,\n fn7: UnaryFunction<F, G>,\n fn8: UnaryFunction<G, H>,\n fn9: UnaryFunction<H, I>,\n ...fns: UnaryFunction<any, any>[]\n): UnaryFunction<T, unknown>;\n\n/**\n * pipe() can be called on one or more functions, each of which can take one argument (\"UnaryFunction\")\n * and uses it to return a value.\n * It returns a function that takes one argument, passes it to the first UnaryFunction, and then\n * passes the result to the next one, passes that result to the next one, and so on. \n */\nexport function pipe(...fns: Array<UnaryFunction<any, any>>): UnaryFunction<any, any> {\n return pipeFromArray(fns);\n}\n\n/** @internal */\nexport function pipeFromArray<T, R>(fns: Array<UnaryFunction<T, R>>): UnaryFunction<T, R> {\n if (fns.length === 0) {\n return identity as UnaryFunction<any, any>;\n }\n\n if (fns.length === 1) {\n return fns[0];\n }\n\n return function piped(input: T): R {\n return fns.reduce((prev: any, fn: UnaryFunction<T, R>) => fn(prev), input as any);\n };\n}\n", "import { Operator } from './Operator';\nimport { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription, Subscription } from './Subscription';\nimport { TeardownLogic, OperatorFunction, Subscribable, Observer } from './types';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable<T>\n */\nexport class Observable<T> implements Subscribable<T> {\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n source: Observable<any> | undefined;\n\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n operator: Operator<any, T> | undefined;\n\n /**\n * @constructor\n * @param {Function} subscribe the function that is called when the Observable is\n * initially subscribed to. This function is given a Subscriber, to which new values\n * can be `next`ed, or an `error` method can be called to raise an error, or\n * `complete` can be called to notify of a successful completion.\n */\n constructor(subscribe?: (this: Observable<T>, subscriber: Subscriber<T>) => TeardownLogic) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n\n // HACK: Since TypeScript inherits static properties too, we have to\n // fight against TypeScript here so Subject can have a different static create signature\n /**\n * Creates a new Observable by calling the Observable constructor\n * @owner Observable\n * @method create\n * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n * @return {Observable} a new observable\n * @nocollapse\n * @deprecated Use `new Observable()` instead. Will be removed in v8.\n */\n static create: (...args: any[]) => any = <T>(subscribe?: (subscriber: Subscriber<T>) => TeardownLogic) => {\n return new Observable<T>(subscribe);\n };\n\n /**\n * Creates a new Observable, with this Observable instance as the source, and the passed\n * operator defined as the new observable's operator.\n * @method lift\n * @param operator the operator defining the operation to take on the observable\n * @return a new observable with the Operator applied\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n * If you have implemented an operator using `lift`, it is recommended that you create an\n * operator by simply returning `new Observable()` directly. See \"Creating new operators from\n * scratch\" section here: https://rxjs.dev/guide/operators\n */\n lift<R>(operator?: Operator<T, R>): Observable<R> {\n const observable = new Observable<R>();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n\n subscribe(observerOrNext?: Partial<Observer<T>> | ((value: T) => void)): Subscription;\n /** @deprecated Instead of passing separate callback arguments, use an observer argument. Signatures taking separate callback arguments will be removed in v8. Details: https://rxjs.dev/deprecations/subscribe-arguments */\n subscribe(next?: ((value: T) => void) | null, error?: ((error: any) => void) | null, complete?: (() => void) | null): Subscription;\n /**\n * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n *\n * <span class=\"informal\">Use it when you have all these Observables, but still nothing is happening.</span>\n *\n * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n * might be for example a function that you passed to Observable's constructor, but most of the time it is\n * a library implementation, which defines what will be emitted by an Observable, and when it be will emitted. This means\n * that calling `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n * the thought.\n *\n * Apart from starting the execution of an Observable, this method allows you to listen for values\n * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n * of the following ways.\n *\n * The first way is creating an object that implements {@link Observer} interface. It should have methods\n * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular, do\n * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n * do anything, you can simply omit it. Note however, if the `error` method is not provided and an error happens,\n * it will be thrown asynchronously. Errors thrown asynchronously cannot be caught using `try`/`catch`. Instead,\n * use the {@link onUnhandledError} configuration option or use a runtime handler (like `window.onerror` or\n * `process.on('error)`) to be notified of unhandled errors. Because of this, it's recommended that you provide\n * an `error` method to avoid missing thrown errors.\n *\n * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n * This means you can provide three functions as arguments to `subscribe`, where the first function is equivalent\n * of a `next` method, the second of an `error` method and the third of a `complete` method. Just as in case of an Observer,\n * if you do not need to listen for something, you can omit a function by passing `undefined` or `null`,\n * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n * to the `error` function, as with an Observer, if not provided, errors emitted by an Observable will be thrown asynchronously.\n *\n * You can, however, subscribe with no parameters at all. This may be the case where you're not interested in terminal events\n * and you also handled emissions internally by using operators (e.g. using `tap`).\n *\n * Whichever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n * This object allows you to call `unsubscribe` on it, which in turn will stop the work that an Observable does and will clean\n * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n *\n * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n * It is an Observable itself that decides when these functions will be called. For example {@link of}\n * by default emits all its values synchronously. Always check documentation for how given Observable\n * will behave when subscribed and if its default behavior can be modified with a `scheduler`.\n *\n * #### Examples\n *\n * Subscribe with an {@link guide/observer Observer}\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * const sumObserver = {\n * sum: 0,\n * next(value) {\n * console.log('Adding: ' + value);\n * this.sum = this.sum + value;\n * },\n * error() {\n * // We actually could just remove this method,\n * // since we do not really care about errors right now.\n * },\n * complete() {\n * console.log('Sum equals: ' + this.sum);\n * }\n * };\n *\n * of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n * .subscribe(sumObserver);\n *\n * // Logs:\n * // 'Adding: 1'\n * // 'Adding: 2'\n * // 'Adding: 3'\n * // 'Sum equals: 6'\n * ```\n *\n * Subscribe with functions ({@link deprecations/subscribe-arguments deprecated})\n *\n * ```ts\n * import { of } from 'rxjs'\n *\n * let sum = 0;\n *\n * of(1, 2, 3).subscribe(\n * value => {\n * console.log('Adding: ' + value);\n * sum = sum + value;\n * },\n * undefined,\n * () => console.log('Sum equals: ' + sum)\n * );\n *\n * // Logs:\n * // 'Adding: 1'\n * // 'Adding: 2'\n * // 'Adding: 3'\n * // 'Sum equals: 6'\n * ```\n *\n * Cancel a subscription\n *\n * ```ts\n * import { interval } from 'rxjs';\n *\n * const subscription = interval(1000).subscribe({\n * next(num) {\n * console.log(num)\n * },\n * complete() {\n * // Will not be called, even when cancelling subscription.\n * console.log('completed!');\n * }\n * });\n *\n * setTimeout(() => {\n * subscription.unsubscribe();\n * console.log('unsubscribed!');\n * }, 2500);\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 'unsubscribed!' after 2.5s\n * ```\n *\n * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n * Observable.\n * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n * the error will be thrown asynchronously as unhandled.\n * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n * @return {Subscription} a subscription reference to the registered handlers\n * @method subscribe\n */\n subscribe(\n observerOrNext?: Partial<Observer<T>> | ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null\n ): Subscription {\n const subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n\n errorContext(() => {\n const { operator, source } = this;\n subscriber.add(\n operator\n ? // We're dealing with a subscription in the\n // operator chain to one of our lifted operators.\n operator.call(subscriber, source)\n : source\n ? // If `source` has a value, but `operator` does not, something that\n // had intimate knowledge of our API, like our `Subject`, must have\n // set it. We're going to just call `_subscribe` directly.\n this._subscribe(subscriber)\n : // In all other cases, we're likely wrapping a user-provided initializer\n // function, so we need to catch errors and handle them appropriately.\n this._trySubscribe(subscriber)\n );\n });\n\n return subscriber;\n }\n\n /** @internal */\n protected _trySubscribe(sink: Subscriber<T>): TeardownLogic {\n try {\n return this._subscribe(sink);\n } catch (err) {\n // We don't need to return anything in this case,\n // because it's just going to try to `add()` to a subscription\n // above.\n sink.error(err);\n }\n }\n\n /**\n * Used as a NON-CANCELLABLE means of subscribing to an observable, for use with\n * APIs that expect promises, like `async/await`. You cannot unsubscribe from this.\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * #### Example\n *\n * ```ts\n * import { interval, take } from 'rxjs';\n *\n * const source$ = interval(1000).pipe(take(4));\n *\n * async function getTotal() {\n * let total = 0;\n *\n * await source$.forEach(value => {\n * total += value;\n * console.log('observable -> ' + value);\n * });\n *\n * return total;\n * }\n *\n * getTotal().then(\n * total => console.log('Total: ' + total)\n * );\n *\n * // Expected:\n * // 'observable -> 0'\n * // 'observable -> 1'\n * // 'observable -> 2'\n * // 'observable -> 3'\n * // 'Total: 6'\n * ```\n *\n * @param next a handler for each value emitted by the observable\n * @return a promise that either resolves on observable completion or\n * rejects with the handled error\n */\n forEach(next: (value: T) => void): Promise<void>;\n\n /**\n * @param next a handler for each value emitted by the observable\n * @param promiseCtor a constructor function used to instantiate the Promise\n * @return a promise that either resolves on observable completion or\n * rejects with the handled error\n * @deprecated Passing a Promise constructor will no longer be available\n * in upcoming versions of RxJS. This is because it adds weight to the library, for very\n * little benefit. If you need this functionality, it is recommended that you either\n * polyfill Promise, or you create an adapter to convert the returned native promise\n * to whatever promise implementation you wanted. Will be removed in v8.\n */\n forEach(next: (value: T) => void, promiseCtor: PromiseConstructorLike): Promise<void>;\n\n forEach(next: (value: T) => void, promiseCtor?: PromiseConstructorLike): Promise<void> {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor<void>((resolve, reject) => {\n const subscriber = new SafeSubscriber<T>({\n next: (value) => {\n try {\n next(value);\n } catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n this.subscribe(subscriber);\n }) as Promise<void>;\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber<any>): TeardownLogic {\n return this.source?.subscribe(subscriber);\n }\n\n /**\n * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n * @method Symbol.observable\n * @return {Observable} this instance of the observable\n */\n [Symbol_observable]() {\n return this;\n }\n\n /* tslint:disable:max-line-length */\n pipe(): Observable<T>;\n pipe<A>(op1: OperatorFunction<T, A>): Observable<A>;\n pipe<A, B>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>): Observable<B>;\n pipe<A, B, C>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>): Observable<C>;\n pipe<A, B, C, D>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>\n ): Observable<D>;\n pipe<A, B, C, D, E>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>\n ): Observable<E>;\n pipe<A, B, C, D, E, F>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>\n ): Observable<F>;\n pipe<A, B, C, D, E, F, G>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>\n ): Observable<G>;\n pipe<A, B, C, D, E, F, G, H>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>\n ): Observable<H>;\n pipe<A, B, C, D, E, F, G, H, I>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>\n ): Observable<I>;\n pipe<A, B, C, D, E, F, G, H, I>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n ...operations: OperatorFunction<any, any>[]\n ): Observable<unknown>;\n /* tslint:enable:max-line-length */\n\n /**\n * Used to stitch together functional operators into a chain.\n * @method pipe\n * @return {Observable} the Observable result of all of the operators having\n * been called in the order they were passed in.\n *\n * ## Example\n *\n * ```ts\n * import { interval, filter, map, scan } from 'rxjs';\n *\n * interval(1000)\n * .pipe(\n * filter(x => x % 2 === 0),\n * map(x => x + x),\n * scan((acc, x) => acc + x)\n * )\n * .subscribe(x => console.log(x));\n * ```\n */\n pipe(...operations: OperatorFunction<any, any>[]): Observable<any> {\n return pipeFromArray(operations)(this);\n }\n\n /* tslint:disable:max-line-length */\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(): Promise<T | undefined>;\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(PromiseCtor: typeof Promise): Promise<T | undefined>;\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(PromiseCtor: PromiseConstructorLike): Promise<T | undefined>;\n /* tslint:enable:max-line-length */\n\n /**\n * Subscribe to this Observable and get a Promise resolving on\n * `complete` with the last emission (if any).\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * @method toPromise\n * @param [promiseCtor] a constructor function used to instantiate\n * the Promise\n * @return A Promise that resolves with the last value emit, or\n * rejects on an error. If there were no emissions, Promise\n * resolves with undefined.\n * @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise\n */\n toPromise(promiseCtor?: PromiseConstructorLike): Promise<T | undefined> {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n let value: T | undefined;\n this.subscribe(\n (x: T) => (value = x),\n (err: any) => reject(err),\n () => resolve(value)\n );\n }) as Promise<T | undefined>;\n }\n}\n\n/**\n * Decides between a passed promise constructor from consuming code,\n * A default configured promise constructor, and the native promise\n * constructor and returns it. If nothing can be found, it will throw\n * an error.\n * @param promiseCtor The optional promise constructor to passed by consuming code\n */\nfunction getPromiseCtor(promiseCtor: PromiseConstructorLike | undefined) {\n return promiseCtor ?? config.Promise ?? Promise;\n}\n\nfunction isObserver<T>(value: any): value is Observer<T> {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\n\nfunction isSubscriber<T>(value: any): value is Subscriber<T> {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n", "import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction } from '../types';\nimport { isFunction } from './isFunction';\n\n/**\n * Used to determine if an object is an Observable with a lift function.\n */\nexport function hasLift(source: any): source is { lift: InstanceType<typeof Observable>['lift'] } {\n return isFunction(source?.lift);\n}\n\n/**\n * Creates an `OperatorFunction`. Used to define operators throughout the library in a concise way.\n * @param init The logic to connect the liftedSource to the subscriber at the moment of subscription.\n */\nexport function operate<T, R>(\n init: (liftedSource: Observable<T>, subscriber: Subscriber<R>) => (() => void) | void\n): OperatorFunction<T, R> {\n return (source: Observable<T>) => {\n if (hasLift(source)) {\n return source.lift(function (this: Subscriber<R>, liftedSource: Observable<T>) {\n try {\n return init(liftedSource, this);\n } catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n", "import { Subscriber } from '../Subscriber';\n\n/**\n * Creates an instance of an `OperatorSubscriber`.\n * @param destination The downstream subscriber.\n * @param onNext Handles next values, only called if this subscriber is not stopped or closed. Any\n * error that occurs in this function is caught and sent to the `error` method of this subscriber.\n * @param onError Handles errors from the subscription, any errors that occur in this handler are caught\n * and send to the `destination` error handler.\n * @param onComplete Handles completion notification from the subscription. Any errors that occur in\n * this handler are sent to the `destination` error handler.\n * @param onFinalize Additional teardown logic here. This will only be called on teardown if the\n * subscriber itself is not already closed. This is called after all other teardown logic is executed.\n */\nexport function createOperatorSubscriber<T>(\n destination: Subscriber<any>,\n onNext?: (value: T) => void,\n onComplete?: () => void,\n onError?: (err: any) => void,\n onFinalize?: () => void\n): Subscriber<T> {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\n\n/**\n * A generic helper for allowing operators to be created with a Subscriber and\n * use closures to capture necessary state from the operator function itself.\n */\nexport class OperatorSubscriber<T> extends Subscriber<T> {\n /**\n * Creates an instance of an `OperatorSubscriber`.\n * @param destination The downstream subscriber.\n * @param onNext Handles next values, only called if this subscriber is not stopped or closed. Any\n * error that occurs in this function is caught and sent to the `error` method of this subscriber.\n * @param onError Handles errors from the subscription, any errors that occur in this handler are caught\n * and send to the `destination` error handler.\n * @param onComplete Handles completion notification from the subscription. Any errors that occur in\n * this handler are sent to the `destination` error handler.\n * @param onFinalize Additional finalization logic here. This will only be called on finalization if the\n * subscriber itself is not already closed. This is called after all other finalization logic is executed.\n * @param shouldUnsubscribe An optional check to see if an unsubscribe call should truly unsubscribe.\n * NOTE: This currently **ONLY** exists to support the strange behavior of {@link groupBy}, where unsubscription\n * to the resulting observable does not actually disconnect from the source if there are active subscriptions\n * to any grouped observable. (DO NOT EXPOSE OR USE EXTERNALLY!!!)\n */\n constructor(\n destination: Subscriber<any>,\n onNext?: (value: T) => void,\n onComplete?: () => void,\n onError?: (err: any) => void,\n private onFinalize?: () => void,\n private shouldUnsubscribe?: () => boolean\n ) {\n // It's important - for performance reasons - that all of this class's\n // members are initialized and that they are always initialized in the same\n // order. This will ensure that all OperatorSubscriber instances have the\n // same hidden class in V8. This, in turn, will help keep the number of\n // hidden classes involved in property accesses within the base class as\n // low as possible. If the number of hidden classes involved exceeds four,\n // the property accesses will become megamorphic and performance penalties\n // will be incurred - i.e. inline caches won't be used.\n //\n // The reasons for ensuring all instances have the same hidden class are\n // further discussed in this blog post from Benedikt Meurer:\n // https://benediktmeurer.de/2018/03/23/impact-of-polymorphism-on-component-based-frameworks-like-react/\n super(destination);\n this._next = onNext\n ? function (this: OperatorSubscriber<T>, value: T) {\n try {\n onNext(value);\n } catch (err) {\n destination.error(err);\n }\n }\n : super._next;\n this._error = onError\n ? function (this: OperatorSubscriber<T>, err: any) {\n try {\n onError(err);\n } catch (err) {\n // Send any errors that occur down stream.\n destination.error(err);\n } finally {\n // Ensure finalization.\n this.unsubscribe();\n }\n }\n : super._error;\n this._complete = onComplete\n ? function (this: OperatorSubscriber<T>) {\n try {\n onComplete();\n } catch (err) {\n // Send any errors that occur down stream.\n destination.error(err);\n } finally {\n // Ensure finalization.\n this.unsubscribe();\n }\n }\n : super._complete;\n }\n\n unsubscribe() {\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n const { closed } = this;\n super.unsubscribe();\n // Execute additional teardown if we have any and we didn't already do so.\n !closed && this.onFinalize?.();\n }\n }\n}\n", "import { createErrorClass } from './createErrorClass';\n\nexport interface ObjectUnsubscribedError extends Error {}\n\nexport interface ObjectUnsubscribedErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (): ObjectUnsubscribedError;\n}\n\n/**\n * An error thrown when an action is invalid because the object has been\n * unsubscribed.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n *\n * @class ObjectUnsubscribedError\n */\nexport const ObjectUnsubscribedError: ObjectUnsubscribedErrorCtor = createErrorClass(\n (_super) =>\n function ObjectUnsubscribedErrorImpl(this: any) {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n }\n);\n", "import { Operator } from './Operator';\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { Observer, SubscriptionLike, TeardownLogic } from './types';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A Subject is a special type of Observable that allows values to be\n * multicasted to many Observers. Subjects are like EventEmitters.\n *\n * Every Subject is an Observable and an Observer. You can subscribe to a\n * Subject, and you can call next to feed values as well as error and complete.\n */\nexport class Subject<T> extends Observable<T> implements SubscriptionLike {\n closed = false;\n\n private currentObservers: Observer<T>[] | null = null;\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n observers: Observer<T>[] = [];\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n isStopped = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n hasError = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n thrownError: any = null;\n\n /**\n * Creates a \"subject\" by basically gluing an observer to an observable.\n *\n * @nocollapse\n * @deprecated Recommended you do not use. Will be removed at some point in the future. Plans for replacement still under discussion.\n */\n static create: (...args: any[]) => any = <T>(destination: Observer<T>, source: Observable<T>): AnonymousSubject<T> => {\n return new AnonymousSubject<T>(destination, source);\n };\n\n constructor() {\n // NOTE: This must be here to obscure Observable's constructor.\n super();\n }\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n lift<R>(operator: Operator<T, R>): Observable<R> {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator as any;\n return subject as any;\n }\n\n /** @internal */\n protected _throwIfClosed() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n }\n\n next(value: T) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n if (!this.currentObservers) {\n this.currentObservers = Array.from(this.observers);\n }\n for (const observer of this.currentObservers) {\n observer.next(value);\n }\n }\n });\n }\n\n error(err: any) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.hasError = this.isStopped = true;\n this.thrownError = err;\n const { observers } = this;\n while (observers.length) {\n observers.shift()!.error(err);\n }\n }\n });\n }\n\n complete() {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.isStopped = true;\n const { observers } = this;\n while (observers.length) {\n observers.shift()!.complete();\n }\n }\n });\n }\n\n unsubscribe() {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null!;\n }\n\n get observed() {\n return this.observers?.length > 0;\n }\n\n /** @internal */\n protected _trySubscribe(subscriber: Subscriber<T>): TeardownLogic {\n this._throwIfClosed();\n return super._trySubscribe(subscriber);\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber<T>): Subscription {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n }\n\n /** @internal */\n protected _innerSubscribe(subscriber: Subscriber<any>) {\n const { hasError, isStopped, observers } = this;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(() => {\n this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n }\n\n /** @internal */\n protected _checkFinalizedStatuses(subscriber: Subscriber<any>) {\n const { hasError, thrownError, isStopped } = this;\n if (hasError) {\n subscriber.error(thrownError);\n } else if (isStopped) {\n subscriber.complete();\n }\n }\n\n /**\n * Creates a new Observable with this Subject as the source. You can do this\n * to create custom Observer-side logic of the Subject and conceal it from\n * code that uses the Observable.\n * @return {Observable} Observable that the Subject casts to\n */\n asObservable(): Observable<T> {\n const observable: any = new Observable<T>();\n observable.source = this;\n return observable;\n }\n}\n\n/**\n * @class AnonymousSubject<T>\n */\nexport class AnonymousSubject<T> extends Subject<T> {\n constructor(\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n public destination?: Observer<T>,\n source?: Observable<T>\n ) {\n super();\n this.source = source;\n }\n\n next(value: T) {\n this.destination?.next?.(value);\n }\n\n error(err: any) {\n this.destination?.error?.(err);\n }\n\n complete() {\n this.destination?.complete?.();\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber<T>): Subscription {\n return this.source?.subscribe(subscriber) ?? EMPTY_SUBSCRIPTION;\n }\n}\n", "import { TimestampProvider } from '../types';\n\ninterface DateTimestampProvider extends TimestampProvider {\n delegate: TimestampProvider | undefined;\n}\n\nexport const dateTimestampProvider: DateTimestampProvider = {\n now() {\n // Use the variable rather than `this` so that the function can be called\n // without being bound to the provider.\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n", "import { Subject } from './Subject';\nimport { TimestampProvider } from './types';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\n\n/**\n * A variant of {@link Subject} that \"replays\" old values to new subscribers by emitting them when they first subscribe.\n *\n * `ReplaySubject` has an internal buffer that will store a specified number of values that it has observed. Like `Subject`,\n * `ReplaySubject` \"observes\" values by having them passed to its `next` method. When it observes a value, it will store that\n * value for a time determined by the configuration of the `ReplaySubject`, as passed to its constructor.\n *\n * When a new subscriber subscribes to the `ReplaySubject` instance, it will synchronously emit all values in its buffer in\n * a First-In-First-Out (FIFO) manner. The `ReplaySubject` will also complete, if it has observed completion; and it will\n * error if it has observed an error.\n *\n * There are two main configuration items to be concerned with:\n *\n * 1. `bufferSize` - This will determine how many items are stored in the buffer, defaults to infinite.\n * 2. `windowTime` - The amount of time to hold a value in the buffer before removing it from the buffer.\n *\n * Both configurations may exist simultaneously. So if you would like to buffer a maximum of 3 values, as long as the values\n * are less than 2 seconds old, you could do so with a `new ReplaySubject(3, 2000)`.\n *\n * ### Differences with BehaviorSubject\n *\n * `BehaviorSubject` is similar to `new ReplaySubject(1)`, with a couple of exceptions:\n *\n * 1. `BehaviorSubject` comes \"primed\" with a single value upon construction.\n * 2. `ReplaySubject` will replay values, even after observing an error, where `BehaviorSubject` will not.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n * @see {@link shareReplay}\n */\nexport class ReplaySubject<T> extends Subject<T> {\n private _buffer: (T | number)[] = [];\n private _infiniteTimeWindow = true;\n\n /**\n * @param bufferSize The size of the buffer to replay on subscription\n * @param windowTime The amount of time the buffered items will stay buffered\n * @param timestampProvider An object with a `now()` method that provides the current timestamp. This is used to\n * calculate the amount of time something has been buffered.\n */\n constructor(\n private _bufferSize = Infinity,\n private _windowTime = Infinity,\n private _timestampProvider: TimestampProvider = dateTimestampProvider\n ) {\n super();\n this._infiniteTimeWindow = _windowTime === Infinity;\n this._bufferSize = Math.max(1, _bufferSize);\n this._windowTime = Math.max(1, _windowTime);\n }\n\n next(value: T): void {\n const { isStopped, _buffer, _infiniteTimeWindow, _timestampProvider, _windowTime } = this;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n super.next(value);\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber<T>): Subscription {\n this._throwIfClosed();\n this._trimBuffer();\n\n const subscription = this._innerSubscribe(subscriber);\n\n const { _infiniteTimeWindow, _buffer } = this;\n // We use a copy here, so reentrant code does not mutate our array while we're\n // emitting it to a new subscriber.\n const copy = _buffer.slice();\n for (let i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i] as T);\n }\n\n this._checkFinalizedStatuses(subscriber);\n\n return subscription;\n }\n\n private _trimBuffer() {\n const { _bufferSize, _timestampProvider, _buffer, _infiniteTimeWindow } = this;\n // If we don't have an infinite buffer size, and we're over the length,\n // use splice to truncate the old buffer values off. Note that we have to\n // double the size for instances where we're not using an infinite time window\n // because we're storing the values and the timestamps in the same array.\n const adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n\n // Now, if we're not in an infinite time window, remove all values where the time is\n // older than what is allowed.\n if (!_infiniteTimeWindow) {\n const now = _timestampProvider.now();\n let last = 0;\n // Search the array for the first timestamp that isn't expired and\n // truncate the buffer up to that point.\n for (let i = 1; i < _buffer.length && (_buffer[i] as number) <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n }\n}\n", "import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\n/**\n * A simple Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * <span class=\"informal\">Just emits 'complete', and nothing else.</span>\n *\n * ![](empty.png)\n *\n * A simple Observable that only emits the complete notification. It can be used\n * for composing with other Observables, such as in a {@link mergeMap}.\n *\n * ## Examples\n *\n * Log complete notification\n *\n * ```ts\n * import { EMPTY } from 'rxjs';\n *\n * EMPTY.subscribe({\n * next: () => console.log('Next'),\n * complete: () => console.log('Complete!')\n * });\n *\n * // Outputs\n * // Complete!\n * ```\n *\n * Emit the number 7, then complete\n *\n * ```ts\n * import { EMPTY, startWith } from 'rxjs';\n *\n * const result = EMPTY.pipe(startWith(7));\n * result.subscribe(x => console.log(x));\n *\n * // Outputs\n * // 7\n * ```\n *\n * Map and flatten only odd numbers to the sequence `'a'`, `'b'`, `'c'`\n *\n * ```ts\n * import { interval, mergeMap, of, EMPTY } from 'rxjs';\n *\n * const interval$ = interval(1000);\n * const result = interval$.pipe(\n * mergeMap(x => x % 2 === 1 ? of('a', 'b', 'c') : EMPTY),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following to the console:\n * // x is equal to the count on the interval, e.g. (0, 1, 2, 3, ...)\n * // x will occur every 1000ms\n * // if x % 2 is equal to 1, print a, b, c (each on its own)\n * // if x % 2 is not equal to 1, nothing will be output\n * ```\n *\n * @see {@link Observable}\n * @see {@link NEVER}\n * @see {@link of}\n * @see {@link throwError}\n */\nexport const EMPTY = new Observable<never>((subscriber) => subscriber.complete());\n\n/**\n * @param scheduler A {@link SchedulerLike} to use for scheduling\n * the emission of the complete notification.\n * @deprecated Replaced with the {@link EMPTY} constant or {@link scheduled} (e.g. `scheduled([], scheduler)`). Will be removed in v8.\n */\nexport function empty(scheduler?: SchedulerLike) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\n\nfunction emptyScheduled(scheduler: SchedulerLike) {\n return new Observable<never>((subscriber) => scheduler.schedule(() => subscriber.complete()));\n}\n", "import { SchedulerLike } from '../types';\nimport { isFunction } from './isFunction';\n\nexport function isScheduler(value: any): value is SchedulerLike {\n return value && isFunction(value.schedule);\n}\n", "import { SchedulerLike } from '../types';\nimport { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\n\nfunction last<T>(arr: T[]): T | undefined {\n return arr[arr.length - 1];\n}\n\nexport function popResultSelector(args: any[]): ((...args: unknown[]) => unknown) | undefined {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\n\nexport function popScheduler(args: any[]): SchedulerLike | undefined {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\n\nexport function popNumber(args: any[], defaultValue: number): number {\n return typeof last(args) === 'number' ? args.pop()! : defaultValue;\n}\n", "export const isArrayLike = (<T>(x: any): x is ArrayLike<T> => x && typeof x.length === 'number' && typeof x !== 'function');", "import { isFunction } from \"./isFunction\";\n\n/**\n * Tests to see if the object is \"thennable\".\n * @param value the object to test\n */\nexport function isPromise(value: any): value is PromiseLike<any> {\n return isFunction(value?.then);\n}\n", "import { InteropObservable } from '../types';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being Observable (but not necessary an Rx Observable) */\nexport function isInteropObservable(input: any): input is InteropObservable<any> {\n return isFunction(input[Symbol_observable]);\n}\n", "import { isFunction } from './isFunction';\n\nexport function isAsyncIterable<T>(obj: any): obj is AsyncIterable<T> {\n return Symbol.asyncIterator && isFunction(obj?.[Symbol.asyncIterator]);\n}\n", "/**\n * Creates the TypeError to throw if an invalid object is passed to `from` or `scheduled`.\n * @param input The object that was passed.\n */\nexport function createInvalidObservableTypeError(input: any) {\n // TODO: We should create error codes that can be looked up, so this can be less verbose.\n return new TypeError(\n `You provided ${\n input !== null && typeof input === 'object' ? 'an invalid object' : `'${input}'`\n } where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`\n );\n}\n", "export function getSymbolIterator(): symbol {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator' as any;\n }\n\n return Symbol.iterator;\n}\n\nexport const iterator = getSymbolIterator();\n", "import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being an Iterable */\nexport function isIterable(input: any): input is Iterable<any> {\n return isFunction(input?.[Symbol_iterator]);\n}\n", "import { ReadableStreamLike } from '../types';\nimport { isFunction } from './isFunction';\n\nexport async function* readableStreamLikeToAsyncGenerator<T>(readableStream: ReadableStreamLike<T>): AsyncGenerator<T> {\n const reader = readableStream.getReader();\n try {\n while (true) {\n const { value, done } = await reader.read();\n if (done) {\n return;\n }\n yield value!;\n }\n } finally {\n reader.releaseLock();\n }\n}\n\nexport function isReadableStreamLike<T>(obj: any): obj is ReadableStreamLike<T> {\n // We don't want to use instanceof checks because they would return\n // false for instances from another Realm, like an <iframe>.\n return isFunction(obj?.getReader);\n}\n", "import { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { ObservableInput, ObservedValueOf, ReadableStreamLike } from '../types';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { Subscriber } from '../Subscriber';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\n\nexport function innerFrom<O extends ObservableInput<any>>(input: O): Observable<ObservedValueOf<O>>;\nexport function innerFrom<T>(input: ObservableInput<T>): Observable<T> {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n\n throw createInvalidObservableTypeError(input);\n}\n\n/**\n * Creates an RxJS Observable from an object that implements `Symbol.observable`.\n * @param obj An object that properly implements `Symbol.observable`.\n */\nexport function fromInteropObservable<T>(obj: any) {\n return new Observable((subscriber: Subscriber<T>) => {\n const obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n // Should be caught by observable subscribe function error handling.\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\n\n/**\n * Synchronously emits the values of an array like and completes.\n * This is exported because there are creation functions and operators that need to\n * make direct use of the same logic, and there's no reason to make them run through\n * `from` conditionals because we *know* they're dealing with an array.\n * @param array The array to emit values from\n */\nexport function fromArrayLike<T>(array: ArrayLike<T>) {\n return new Observable((subscriber: Subscriber<T>) => {\n // Loop over the array and emit each value. Note two things here:\n // 1. We're making sure that the subscriber is not closed on each loop.\n // This is so we don't continue looping over a very large array after\n // something like a `take`, `takeWhile`, or other synchronous unsubscription\n // has already unsubscribed.\n // 2. In this form, reentrant code can alter that array we're looping over.\n // This is a known issue, but considered an edge case. The alternative would\n // be to copy the array before executing the loop, but this has\n // performance implications.\n for (let i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\n\nexport function fromPromise<T>(promise: PromiseLike<T>) {\n return new Observable((subscriber: Subscriber<T>) => {\n promise\n .then(\n (value) => {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n },\n (err: any) => subscriber.error(err)\n )\n .then(null, reportUnhandledError);\n });\n}\n\nexport function fromIterable<T>(iterable: Iterable<T>) {\n return new Observable((subscriber: Subscriber<T>) => {\n for (const value of iterable) {\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n subscriber.complete();\n });\n}\n\nexport function fromAsyncIterable<T>(asyncIterable: AsyncIterable<T>) {\n return new Observable((subscriber: Subscriber<T>) => {\n process(asyncIterable, subscriber).catch((err) => subscriber.error(err));\n });\n}\n\nexport function fromReadableStreamLike<T>(readableStream: ReadableStreamLike<T>) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\n\nasync function process<T>(asyncIterable: AsyncIterable<T>, subscriber: Subscriber<T>) {\n for await (const value of asyncIterable) {\n subscriber.next(value);\n // A side-effect may have closed our subscriber,\n // check before the next iteration.\n if (subscriber.closed) {\n return;\n }\n }\n subscriber.complete();\n}\n", "import { Subscription } from '../Subscription';\nimport { SchedulerAction, SchedulerLike } from '../types';\n\nexport function executeSchedule(\n parentSubscription: Subscription,\n scheduler: SchedulerLike,\n work: () => void,\n delay: number,\n repeat: true\n): void;\nexport function executeSchedule(\n parentSubscription: Subscription,\n scheduler: SchedulerLike,\n work: () => void,\n delay?: number,\n repeat?: false\n): Subscription;\n\nexport function executeSchedule(\n parentSubscription: Subscription,\n scheduler: SchedulerLike,\n work: () => void,\n delay = 0,\n repeat = false\n): Subscription | void {\n const scheduleSubscription = scheduler.schedule(function (this: SchedulerAction<any>) {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n } else {\n this.unsubscribe();\n }\n }, delay);\n\n parentSubscription.add(scheduleSubscription);\n\n if (!repeat) {\n // Because user-land scheduler implementations are unlikely to properly reuse\n // Actions for repeat scheduling, we can't trust that the returned subscription\n // will control repeat subscription scenarios. So we're trying to avoid using them\n // incorrectly within this library.\n return scheduleSubscription;\n }\n}\n", "/** @prettier */\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Re-emits all notifications from source Observable with specified scheduler.\n *\n * <span class=\"informal\">Ensure a specific scheduler is used, from outside of an Observable.</span>\n *\n * `observeOn` is an operator that accepts a scheduler as a first parameter, which will be used to reschedule\n * notifications emitted by the source Observable. It might be useful, if you do not have control over\n * internal scheduler of a given Observable, but want to control when its values are emitted nevertheless.\n *\n * Returned Observable emits the same notifications (nexted values, complete and error events) as the source Observable,\n * but rescheduled with provided scheduler. Note that this doesn't mean that source Observables internal\n * scheduler will be replaced in any way. Original scheduler still will be used, but when the source Observable emits\n * notification, it will be immediately scheduled again - this time with scheduler passed to `observeOn`.\n * An anti-pattern would be calling `observeOn` on Observable that emits lots of values synchronously, to split\n * that emissions into asynchronous chunks. For this to happen, scheduler would have to be passed into the source\n * Observable directly (usually into the operator that creates it). `observeOn` simply delays notifications a\n * little bit more, to ensure that they are emitted at expected moments.\n *\n * As a matter of fact, `observeOn` accepts second parameter, which specifies in milliseconds with what delay notifications\n * will be emitted. The main difference between {@link delay} operator and `observeOn` is that `observeOn`\n * will delay all notifications - including error notifications - while `delay` will pass through error\n * from source Observable immediately when it is emitted. In general it is highly recommended to use `delay` operator\n * for any kind of delaying of values in the stream, while using `observeOn` to specify which scheduler should be used\n * for notification emissions in general.\n *\n * ## Example\n *\n * Ensure values in subscribe are called just before browser repaint\n *\n * ```ts\n * import { interval, observeOn, animationFrameScheduler } from 'rxjs';\n *\n * const someDiv = document.createElement('div');\n * someDiv.style.cssText = 'width: 200px;background: #09c';\n * document.body.appendChild(someDiv);\n * const intervals = interval(10); // Intervals are scheduled\n * // with async scheduler by default...\n * intervals.pipe(\n * observeOn(animationFrameScheduler) // ...but we will observe on animationFrame\n * ) // scheduler to ensure smooth animation.\n * .subscribe(val => {\n * someDiv.style.height = val + 'px';\n * });\n * ```\n *\n * @see {@link delay}\n *\n * @param scheduler Scheduler that will be used to reschedule notifications from source Observable.\n * @param delay Number of milliseconds that states with what delay every notification should be rescheduled.\n * @return A function that returns an Observable that emits the same\n * notifications as the source Observable, but with provided scheduler.\n */\nexport function observeOn<T>(scheduler: SchedulerLike, delay = 0): MonoTypeOperatorFunction<T> {\n return operate((source, subscriber) => {\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => executeSchedule(subscriber, scheduler, () => subscriber.next(value), delay),\n () => executeSchedule(subscriber, scheduler, () => subscriber.complete(), delay),\n (err) => executeSchedule(subscriber, scheduler, () => subscriber.error(err), delay)\n )\n );\n });\n}\n", "import { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { operate } from '../util/lift';\n\n/**\n * Asynchronously subscribes Observers to this Observable on the specified {@link SchedulerLike}.\n *\n * With `subscribeOn` you can decide what type of scheduler a specific Observable will be using when it is subscribed to.\n *\n * Schedulers control the speed and order of emissions to observers from an Observable stream.\n *\n * ![](subscribeOn.png)\n *\n * ## Example\n *\n * Given the following code:\n *\n * ```ts\n * import { of, merge } from 'rxjs';\n *\n * const a = of(1, 2, 3);\n * const b = of(4, 5, 6);\n *\n * merge(a, b).subscribe(console.log);\n *\n * // Outputs\n * // 1\n * // 2\n * // 3\n * // 4\n * // 5\n * // 6\n * ```\n *\n * Both Observable `a` and `b` will emit their values directly and synchronously once they are subscribed to.\n *\n * If we instead use the `subscribeOn` operator declaring that we want to use the {@link asyncScheduler} for values emitted by Observable `a`:\n *\n * ```ts\n * import { of, subscribeOn, asyncScheduler, merge } from 'rxjs';\n *\n * const a = of(1, 2, 3).pipe(subscribeOn(asyncScheduler));\n * const b = of(4, 5, 6);\n *\n * merge(a, b).subscribe(console.log);\n *\n * // Outputs\n * // 4\n * // 5\n * // 6\n * // 1\n * // 2\n * // 3\n * ```\n *\n * The reason for this is that Observable `b` emits its values directly and synchronously like before\n * but the emissions from `a` are scheduled on the event loop because we are now using the {@link asyncScheduler} for that specific Observable.\n *\n * @param scheduler The {@link SchedulerLike} to perform subscription actions on.\n * @param delay A delay to pass to the scheduler to delay subscriptions\n * @return A function that returns an Observable modified so that its\n * subscriptions happen on the specified {@link SchedulerLike}.\n */\nexport function subscribeOn<T>(scheduler: SchedulerLike, delay: number = 0): MonoTypeOperatorFunction<T> {\n return operate((source, subscriber) => {\n subscriber.add(scheduler.schedule(() => source.subscribe(subscriber), delay));\n });\n}\n", "import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nimport { InteropObservable, SchedulerLike } from '../types';\n\nexport function scheduleObservable<T>(input: InteropObservable<T>, scheduler: SchedulerLike) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n", "import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nimport { SchedulerLike } from '../types';\n\nexport function schedulePromise<T>(input: PromiseLike<T>, scheduler: SchedulerLike) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n", "import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\nexport function scheduleArray<T>(input: ArrayLike<T>, scheduler: SchedulerLike) {\n return new Observable<T>((subscriber) => {\n // The current array index.\n let i = 0;\n // Start iterating over the array like on a schedule.\n return scheduler.schedule(function () {\n if (i === input.length) {\n // If we have hit the end of the array like in the\n // previous job, we can complete.\n subscriber.complete();\n } else {\n // Otherwise let's next the value at the current index,\n // then increment our index.\n subscriber.next(input[i++]);\n // If the last emission didn't cause us to close the subscriber\n // (via take or some side effect), reschedule the job and we'll\n // make another pass.\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n", "import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\n\n/**\n * Used in {@link scheduled} to create an observable from an Iterable.\n * @param input The iterable to create an observable from\n * @param scheduler The scheduler to use\n */\nexport function scheduleIterable<T>(input: Iterable<T>, scheduler: SchedulerLike) {\n return new Observable<T>((subscriber) => {\n let iterator: Iterator<T, T>;\n\n // Schedule the initial creation of the iterator from\n // the iterable. This is so the code in the iterable is\n // not called until the scheduled job fires.\n executeSchedule(subscriber, scheduler, () => {\n // Create the iterator.\n iterator = (input as any)[Symbol_iterator]();\n\n executeSchedule(\n subscriber,\n scheduler,\n () => {\n let value: T;\n let done: boolean | undefined;\n try {\n // Pull the value out of the iterator\n ({ value, done } = iterator.next());\n } catch (err) {\n // We got an error while pulling from the iterator\n subscriber.error(err);\n return;\n }\n\n if (done) {\n // If it is \"done\" we just complete. This mimics the\n // behavior of JavaScript's `for..of` consumption of\n // iterables, which will not emit the value from an iterator\n // result of `{ done: true: value: 'here' }`.\n subscriber.complete();\n } else {\n // The iterable is not done, emit the value.\n subscriber.next(value);\n }\n },\n 0,\n true\n );\n });\n\n // During finalization, if we see this iterator has a `return` method,\n // then we know it is a Generator, and not just an Iterator. So we call\n // the `return()` function. This will ensure that any `finally { }` blocks\n // inside of the generator we can hit will be hit properly.\n return () => isFunction(iterator?.return) && iterator.return();\n });\n}\n", "import { SchedulerLike } from '../types';\nimport { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\n\nexport function scheduleAsyncIterable<T>(input: AsyncIterable<T>, scheduler: SchedulerLike) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable<T>((subscriber) => {\n executeSchedule(subscriber, scheduler, () => {\n const iterator = input[Symbol.asyncIterator]();\n executeSchedule(\n subscriber,\n scheduler,\n () => {\n iterator.next().then((result) => {\n if (result.done) {\n // This will remove the subscriptions from\n // the parent subscription.\n subscriber.complete();\n } else {\n subscriber.next(result.value);\n }\n });\n },\n 0,\n true\n );\n });\n });\n}\n", "import { SchedulerLike, ReadableStreamLike } from '../types';\nimport { Observable } from '../Observable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\n\nexport function scheduleReadableStreamLike<T>(input: ReadableStreamLike<T>, scheduler: SchedulerLike): Observable<T> {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n", "import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { ObservableInput, SchedulerLike } from '../types';\nimport { Observable } from '../Observable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\n\n/**\n * Converts from a common {@link ObservableInput} type to an observable where subscription and emissions\n * are scheduled on the provided scheduler.\n *\n * @see {@link from}\n * @see {@link of}\n *\n * @param input The observable, array, promise, iterable, etc you would like to schedule\n * @param scheduler The scheduler to use to schedule the subscription and emissions from\n * the returned observable.\n */\nexport function scheduled<T>(input: ObservableInput<T>, scheduler: SchedulerLike): Observable<T> {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n", "import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike, ObservedValueOf } from '../types';\nimport { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\n\nexport function from<O extends ObservableInput<any>>(input: O): Observable<ObservedValueOf<O>>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function from<O extends ObservableInput<any>>(input: O, scheduler: SchedulerLike | undefined): Observable<ObservedValueOf<O>>;\n\n/**\n * Creates an Observable from an Array, an array-like object, a Promise, an iterable object, or an Observable-like object.\n *\n * <span class=\"informal\">Converts almost anything to an Observable.</span>\n *\n * ![](from.png)\n *\n * `from` converts various other objects and data types into Observables. It also converts a Promise, an array-like, or an\n * <a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#iterable\" target=\"_blank\">iterable</a>\n * object into an Observable that emits the items in that promise, array, or iterable. A String, in this context, is treated\n * as an array of characters. Observable-like objects (contains a function named with the ES2015 Symbol for Observable) can also be\n * converted through this operator.\n *\n * ## Examples\n *\n * Converts an array to an Observable\n *\n * ```ts\n * import { from } from 'rxjs';\n *\n * const array = [10, 20, 30];\n * const result = from(array);\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 10\n * // 20\n * // 30\n * ```\n *\n * Convert an infinite iterable (from a generator) to an Observable\n *\n * ```ts\n * import { from, take } from 'rxjs';\n *\n * function* generateDoubles(seed) {\n * let i = seed;\n * while (true) {\n * yield i;\n * i = 2 * i; // double it\n * }\n * }\n *\n * const iterator = generateDoubles(3);\n * const result = from(iterator).pipe(take(10));\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 3\n * // 6\n * // 12\n * // 24\n * // 48\n * // 96\n * // 192\n * // 384\n * // 768\n * // 1536\n * ```\n *\n * With `asyncScheduler`\n *\n * ```ts\n * import { from, asyncScheduler } from 'rxjs';\n *\n * console.log('start');\n *\n * const array = [10, 20, 30];\n * const result = from(array, asyncScheduler);\n *\n * result.subscribe(x => console.log(x));\n *\n * console.log('end');\n *\n * // Logs:\n * // 'start'\n * // 'end'\n * // 10\n * // 20\n * // 30\n * ```\n *\n * @see {@link fromEvent}\n * @see {@link fromEventPattern}\n *\n * @param {ObservableInput<T>} A subscription object, a Promise, an Observable-like,\n * an Array, an iterable, or an array-like object to be converted.\n * @param {SchedulerLike} An optional {@link SchedulerLike} on which to schedule the emission of values.\n * @return {Observable<T>}\n */\nexport function from<T>(input: ObservableInput<T>, scheduler?: SchedulerLike): Observable<T> {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n", "import { SchedulerLike, ValueFromArray } from '../types';\nimport { Observable } from '../Observable';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\n\n// Devs are more likely to pass null or undefined than they are a scheduler\n// without accompanying values. To make things easier for (naughty) devs who\n// use the `strictNullChecks: false` TypeScript compiler option, these\n// overloads with explicit null and undefined values are included.\n\nexport function of(value: null): Observable<null>;\nexport function of(value: undefined): Observable<undefined>;\n\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function of(scheduler: SchedulerLike): Observable<never>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function of<A extends readonly unknown[]>(...valuesAndScheduler: [...A, SchedulerLike]): Observable<ValueFromArray<A>>;\n\nexport function of(): Observable<never>;\n/** @deprecated Do not specify explicit type parameters. Signatures with type parameters that cannot be inferred will be removed in v8. */\nexport function of<T>(): Observable<T>;\nexport function of<T>(value: T): Observable<T>;\nexport function of<A extends readonly unknown[]>(...values: A): Observable<ValueFromArray<A>>;\n\n/**\n * Converts the arguments to an observable sequence.\n *\n * <span class=\"informal\">Each argument becomes a `next` notification.</span>\n *\n * ![](of.png)\n *\n * Unlike {@link from}, it does not do any flattening and emits each argument in whole\n * as a separate `next` notification.\n *\n * ## Examples\n *\n * Emit the values `10, 20, 30`\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * of(10, 20, 30)\n * .subscribe({\n * next: value => console.log('next:', value),\n * error: err => console.log('error:', err),\n * complete: () => console.log('the end'),\n * });\n *\n * // Outputs\n * // next: 10\n * // next: 20\n * // next: 30\n * // the end\n * ```\n *\n * Emit the array `[1, 2, 3]`\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * of([1, 2, 3])\n * .subscribe({\n * next: value => console.log('next:', value),\n * error: err => console.log('error:', err),\n * complete: () => console.log('the end'),\n * });\n *\n * // Outputs\n * // next: [1, 2, 3]\n * // the end\n * ```\n *\n * @see {@link from}\n * @see {@link range}\n *\n * @param {...T} values A comma separated list of arguments you want to be emitted\n * @return {Observable} An Observable that emits the arguments\n * described above and then completes.\n */\nexport function of<T>(...args: Array<T | SchedulerLike>): Observable<T> {\n const scheduler = popScheduler(args);\n return from(args as T[], scheduler);\n}\n", "import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { SchedulerLike } from '../types';\nimport { isFunction } from '../util/isFunction';\n\n/**\n * Creates an observable that will create an error instance and push it to the consumer as an error\n * immediately upon subscription.\n *\n * <span class=\"informal\">Just errors and does nothing else</span>\n *\n * ![](throw.png)\n *\n * This creation function is useful for creating an observable that will create an error and error every\n * time it is subscribed to. Generally, inside of most operators when you might want to return an errored\n * observable, this is unnecessary. In most cases, such as in the inner return of {@link concatMap},\n * {@link mergeMap}, {@link defer}, and many others, you can simply throw the error, and RxJS will pick\n * that up and notify the consumer of the error.\n *\n * ## Example\n *\n * Create a simple observable that will create a new error with a timestamp and log it\n * and the message every time you subscribe to it\n *\n * ```ts\n * import { throwError } from 'rxjs';\n *\n * let errorCount = 0;\n *\n * const errorWithTimestamp$ = throwError(() => {\n * const error: any = new Error(`This is error number ${ ++errorCount }`);\n * error.timestamp = Date.now();\n * return error;\n * });\n *\n * errorWithTimestamp$.subscribe({\n * error: err => console.log(err.timestamp, err.message)\n * });\n *\n * errorWithTimestamp$.subscribe({\n * error: err => console.log(err.timestamp, err.message)\n * });\n *\n * // Logs the timestamp and a new error message for each subscription\n * ```\n *\n * ### Unnecessary usage\n *\n * Using `throwError` inside of an operator or creation function\n * with a callback, is usually not necessary\n *\n * ```ts\n * import { of, concatMap, timer, throwError } from 'rxjs';\n *\n * const delays$ = of(1000, 2000, Infinity, 3000);\n *\n * delays$.pipe(\n * concatMap(ms => {\n * if (ms < 10000) {\n * return timer(ms);\n * } else {\n * // This is probably overkill.\n * return throwError(() => new Error(`Invalid time ${ ms }`));\n * }\n * })\n * )\n * .subscribe({\n * next: console.log,\n * error: console.error\n * });\n * ```\n *\n * You can just throw the error instead\n *\n * ```ts\n * import { of, concatMap, timer } from 'rxjs';\n *\n * const delays$ = of(1000, 2000, Infinity, 3000);\n *\n * delays$.pipe(\n * concatMap(ms => {\n * if (ms < 10000) {\n * return timer(ms);\n * } else {\n * // Cleaner and easier to read for most folks.\n * throw new Error(`Invalid time ${ ms }`);\n * }\n * })\n * )\n * .subscribe({\n * next: console.log,\n * error: console.error\n * });\n * ```\n *\n * @param errorFactory A factory function that will create the error instance that is pushed.\n */\nexport function throwError(errorFactory: () => any): Observable<never>;\n\n/**\n * Returns an observable that will error with the specified error immediately upon subscription.\n *\n * @param error The error instance to emit\n * @deprecated Support for passing an error value will be removed in v8. Instead, pass a factory function to `throwError(() => new Error('test'))`. This is\n * because it will create the error at the moment it should be created and capture a more appropriate stack trace. If\n * for some reason you need to create the error ahead of time, you can still do that: `const err = new Error('test'); throwError(() => err);`.\n */\nexport function throwError(error: any): Observable<never>;\n\n/**\n * Notifies the consumer of an error using a given scheduler by scheduling it at delay `0` upon subscription.\n *\n * @param errorOrErrorFactory An error instance or error factory\n * @param scheduler A scheduler to use to schedule the error notification\n * @deprecated The `scheduler` parameter will be removed in v8.\n * Use `throwError` in combination with {@link observeOn}: `throwError(() => new Error('test')).pipe(observeOn(scheduler));`.\n * Details: https://rxjs.dev/deprecations/scheduler-argument\n */\nexport function throwError(errorOrErrorFactory: any, scheduler: SchedulerLike): Observable<never>;\n\nexport function throwError(errorOrErrorFactory: any, scheduler?: SchedulerLike): Observable<never> {\n const errorFactory = isFunction(errorOrErrorFactory) ? errorOrErrorFactory : () => errorOrErrorFactory;\n const init = (subscriber: Subscriber<never>) => subscriber.error(errorFactory());\n return new Observable(scheduler ? (subscriber) => scheduler.schedule(init as any, 0, subscriber) : init);\n}\n", "import { createErrorClass } from './createErrorClass';\n\nexport interface EmptyError extends Error {}\n\nexport interface EmptyErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (): EmptyError;\n}\n\n/**\n * An error thrown when an Observable or a sequence was queried but has no\n * elements.\n *\n * @see {@link first}\n * @see {@link last}\n * @see {@link single}\n * @see {@link firstValueFrom}\n * @see {@link lastValueFrom}\n *\n * @class EmptyError\n */\nexport const EmptyError: EmptyErrorCtor = createErrorClass((_super) => function EmptyErrorImpl(this: any) {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n});\n", "import { Observable } from './Observable';\nimport { EmptyError } from './util/EmptyError';\n\nexport interface LastValueFromConfig<T> {\n defaultValue: T;\n}\n\nexport function lastValueFrom<T, D>(source: Observable<T>, config: LastValueFromConfig<D>): Promise<T | D>;\nexport function lastValueFrom<T>(source: Observable<T>): Promise<T>;\n\n/**\n * Converts an observable to a promise by subscribing to the observable,\n * waiting for it to complete, and resolving the returned promise with the\n * last value from the observed stream.\n *\n * If the observable stream completes before any values were emitted, the\n * returned promise will reject with {@link EmptyError} or will resolve\n * with the default value if a default was specified.\n *\n * If the observable stream emits an error, the returned promise will reject\n * with that error.\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * ## Example\n *\n * Wait for the last value from a stream and emit it from a promise in\n * an async function\n *\n * ```ts\n * import { interval, take, lastValueFrom } from 'rxjs';\n *\n * async function execute() {\n * const source$ = interval(2000).pipe(take(10));\n * const finalNumber = await lastValueFrom(source$);\n * console.log(`The final number is ${ finalNumber }`);\n * }\n *\n * execute();\n *\n * // Expected output:\n * // 'The final number is 9'\n * ```\n *\n * @see {@link firstValueFrom}\n *\n * @param source the observable to convert to a promise\n * @param config a configuration object to define the `defaultValue` to use if the source completes without emitting a value\n */\nexport function lastValueFrom<T, D>(source: Observable<T>, config?: LastValueFromConfig<D>): Promise<T | D> {\n const hasConfig = typeof config === 'object';\n return new Promise<T | D>((resolve, reject) => {\n let _hasValue = false;\n let _value: T;\n source.subscribe({\n next: (value) => {\n _value = value;\n _hasValue = true;\n },\n error: reject,\n complete: () => {\n if (_hasValue) {\n resolve(_value);\n } else if (hasConfig) {\n resolve(config!.defaultValue);\n } else {\n reject(new EmptyError());\n }\n },\n });\n });\n}\n", "import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\nexport function map<T, R>(project: (value: T, index: number) => R): OperatorFunction<T, R>;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function map<T, R, A>(project: (this: A, value: T, index: number) => R, thisArg: A): OperatorFunction<T, R>;\n\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * <span class=\"informal\">Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.</span>\n *\n * ![](map.png)\n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * ## Example\n *\n * Map every click to the `clientX` position of that click\n *\n * ```ts\n * import { fromEvent, map } from 'rxjs';\n *\n * const clicks = fromEvent<PointerEvent>(document, 'click');\n * const positions = clicks.pipe(map(ev => ev.clientX));\n *\n * positions.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param {function(value: T, index: number): R} project The function to apply\n * to each `value` emitted by the source Observable. The `index` parameter is\n * the number `i` for the i-th emission that has happened since the\n * subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to define what `this` is in the\n * `project` function.\n * @return A function that returns an Observable that emits the values from the\n * source Observable transformed by the given `project` function.\n */\nexport function map<T, R>(project: (value: T, index: number) => R, thisArg?: any): OperatorFunction<T, R> {\n return operate((source, subscriber) => {\n // The index of the value from the source. Used with projection.\n let index = 0;\n // Subscribe to the source, all errors and completions are sent along\n // to the consumer.\n source.subscribe(\n createOperatorSubscriber(subscriber, (value: T) => {\n // Call the projection function with the appropriate this context,\n // and send the resulting value to the consumer.\n subscriber.next(project.call(thisArg, value, index++));\n })\n );\n });\n}\n", "import { Observable } from '../Observable';\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subscriber } from '../Subscriber';\nimport { ObservableInput, SchedulerLike } from '../types';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * A process embodying the general \"merge\" strategy. This is used in\n * `mergeMap` and `mergeScan` because the logic is otherwise nearly identical.\n * @param source The original source observable\n * @param subscriber The consumer subscriber\n * @param project The projection function to get our inner sources\n * @param concurrent The number of concurrent inner subscriptions\n * @param onBeforeNext Additional logic to apply before nexting to our consumer\n * @param expand If `true` this will perform an \"expand\" strategy, which differs only\n * in that it recurses, and the inner subscription must be schedule-able.\n * @param innerSubScheduler A scheduler to use to schedule inner subscriptions,\n * this is to support the expand strategy, mostly, and should be deprecated\n */\nexport function mergeInternals<T, R>(\n source: Observable<T>,\n subscriber: Subscriber<R>,\n project: (value: T, index: number) => ObservableInput<R>,\n concurrent: number,\n onBeforeNext?: (innerValue: R) => void,\n expand?: boolean,\n innerSubScheduler?: SchedulerLike,\n additionalFinalizer?: () => void\n) {\n // Buffered values, in the event of going over our concurrency limit\n const buffer: T[] = [];\n // The number of active inner subscriptions.\n let active = 0;\n // An index to pass to our accumulator function\n let index = 0;\n // Whether or not the outer source has completed.\n let isComplete = false;\n\n /**\n * Checks to see if we can complete our result or not.\n */\n const checkComplete = () => {\n // If the outer has completed, and nothing is left in the buffer,\n // and we don't have any active inner subscriptions, then we can\n // Emit the state and complete.\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n\n // If we're under our concurrency limit, just start the inner subscription, otherwise buffer and wait.\n const outerNext = (value: T) => (active < concurrent ? doInnerSub(value) : buffer.push(value));\n\n const doInnerSub = (value: T) => {\n // If we're expanding, we need to emit the outer values and the inner values\n // as the inners will \"become outers\" in a way as they are recursively fed\n // back to the projection mechanism.\n expand && subscriber.next(value as any);\n\n // Increment the number of active subscriptions so we can track it\n // against our concurrency limit later.\n active++;\n\n // A flag used to show that the inner observable completed.\n // This is checked during finalization to see if we should\n // move to the next item in the buffer, if there is on.\n let innerComplete = false;\n\n // Start our inner subscription.\n innerFrom(project(value, index++)).subscribe(\n createOperatorSubscriber(\n subscriber,\n (innerValue) => {\n // `mergeScan` has additional handling here. For example\n // taking the inner value and updating state.\n onBeforeNext?.(innerValue);\n\n if (expand) {\n // If we're expanding, then just recurse back to our outer\n // handler. It will emit the value first thing.\n outerNext(innerValue as any);\n } else {\n // Otherwise, emit the inner value.\n subscriber.next(innerValue);\n }\n },\n () => {\n // Flag that we have completed, so we know to check the buffer\n // during finalization.\n innerComplete = true;\n },\n // Errors are passed to the destination.\n undefined,\n () => {\n // During finalization, if the inner completed (it wasn't errored or\n // cancelled), then we want to try the next item in the buffer if\n // there is one.\n if (innerComplete) {\n // We have to wrap this in a try/catch because it happens during\n // finalization, possibly asynchronously, and we want to pass\n // any errors that happen (like in a projection function) to\n // the outer Subscriber.\n try {\n // INNER SOURCE COMPLETE\n // Decrement the active count to ensure that the next time\n // we try to call `doInnerSub`, the number is accurate.\n active--;\n // If we have more values in the buffer, try to process those\n // Note that this call will increment `active` ahead of the\n // next conditional, if there were any more inner subscriptions\n // to start.\n while (buffer.length && active < concurrent) {\n const bufferedValue = buffer.shift()!;\n // Particularly for `expand`, we need to check to see if a scheduler was provided\n // for when we want to start our inner subscription. Otherwise, we just start\n // are next inner subscription.\n if (innerSubScheduler) {\n executeSchedule(subscriber, innerSubScheduler, () => doInnerSub(bufferedValue));\n } else {\n doInnerSub(bufferedValue);\n }\n }\n // Check to see if we can complete, and complete if so.\n checkComplete();\n } catch (err) {\n subscriber.error(err);\n }\n }\n }\n )\n );\n };\n\n // Subscribe to our source observable.\n source.subscribe(\n createOperatorSubscriber(subscriber, outerNext, () => {\n // Outer completed, make a note of it, and check to see if we can complete everything.\n isComplete = true;\n checkComplete();\n })\n );\n\n // Additional finalization (for when the destination is torn down).\n // Other finalization is added implicitly via subscription above.\n return () => {\n additionalFinalizer?.();\n };\n}\n", "import { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\n\n/* tslint:disable:max-line-length */\nexport function mergeMap<T, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n concurrent?: number\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function mergeMap<T, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector: undefined,\n concurrent?: number\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function mergeMap<T, R, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R,\n concurrent?: number\n): OperatorFunction<T, R>;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link mergeAll}.</span>\n *\n * ![](mergeMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger.\n *\n * ## Example\n *\n * Map and flatten each letter to an Observable ticking every 1 second\n *\n * ```ts\n * import { of, mergeMap, interval, map } from 'rxjs';\n *\n * const letters = of('a', 'b', 'c');\n * const result = letters.pipe(\n * mergeMap(x => interval(1000).pipe(map(i => x + i)))\n * );\n *\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // a0\n * // b0\n * // c0\n * // a1\n * // b1\n * // c1\n * // continues to list a, b, c every second with respective ascending integers\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {number} [concurrent=Infinity] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return A function that returns an Observable that emits the result of\n * applying the projection function (and the optional deprecated\n * `resultSelector`) to each item emitted by the source Observable and merging\n * the results of the Observables obtained from this transformation.\n */\nexport function mergeMap<T, R, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector?: ((outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R) | number,\n concurrent: number = Infinity\n): OperatorFunction<T, ObservedValueOf<O> | R> {\n if (isFunction(resultSelector)) {\n // DEPRECATED PATH\n return mergeMap((a, i) => map((b: any, ii: number) => resultSelector(a, b, i, ii))(innerFrom(project(a, i))), concurrent);\n } else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n\n return operate((source, subscriber) => mergeInternals(source, subscriber, project, concurrent));\n}\n", "import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nimport { OperatorFunction, ObservableInput, ObservedValueOf } from '../types';\n\n/**\n * Converts a higher-order Observable into a first-order Observable which\n * concurrently delivers all values that are emitted on the inner Observables.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables.</span>\n *\n * ![](mergeAll.png)\n *\n * `mergeAll` subscribes to an Observable that emits Observables, also known as\n * a higher-order Observable. Each time it observes one of these emitted inner\n * Observables, it subscribes to that and delivers all the values from the\n * inner Observable on the output Observable. The output Observable only\n * completes once all inner Observables have completed. Any error delivered by\n * a inner Observable will be immediately emitted on the output Observable.\n *\n * ## Examples\n *\n * Spawn a new interval Observable for each click event, and blend their outputs as one Observable\n *\n * ```ts\n * import { fromEvent, map, interval, mergeAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(map(() => interval(1000)));\n * const firstOrder = higherOrder.pipe(mergeAll());\n *\n * firstOrder.subscribe(x => console.log(x));\n * ```\n *\n * Count from 0 to 9 every second for each click, but only allow 2 concurrent timers\n *\n * ```ts\n * import { fromEvent, map, interval, take, mergeAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map(() => interval(1000).pipe(take(10)))\n * );\n * const firstOrder = higherOrder.pipe(mergeAll(2));\n *\n * firstOrder.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineLatestAll}\n * @see {@link concatAll}\n * @see {@link exhaustAll}\n * @see {@link merge}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link zipAll}\n *\n * @param {number} [concurrent=Infinity] Maximum number of inner\n * Observables being subscribed to concurrently.\n * @return A function that returns an Observable that emits values coming from\n * all the inner Observables emitted by the source Observable.\n */\nexport function mergeAll<O extends ObservableInput<any>>(concurrent: number = Infinity): OperatorFunction<O, ObservedValueOf<O>> {\n return mergeMap(identity, concurrent);\n}\n", "import { Observable } from '../Observable';\nimport { ObservedValueOf, ObservableInput } from '../types';\nimport { innerFrom } from './innerFrom';\n\n/**\n * Creates an Observable that, on subscribe, calls an Observable factory to\n * make an Observable for each new Observer.\n *\n * <span class=\"informal\">Creates the Observable lazily, that is, only when it\n * is subscribed.\n * </span>\n *\n * ![](defer.png)\n *\n * `defer` allows you to create an Observable only when the Observer\n * subscribes. It waits until an Observer subscribes to it, calls the given\n * factory function to get an Observable -- where a factory function typically\n * generates a new Observable -- and subscribes the Observer to this Observable.\n * In case the factory function returns a falsy value, then EMPTY is used as\n * Observable instead. Last but not least, an exception during the factory\n * function call is transferred to the Observer by calling `error`.\n *\n * ## Example\n *\n * Subscribe to either an Observable of clicks or an Observable of interval, at random\n *\n * ```ts\n * import { defer, fromEvent, interval } from 'rxjs';\n *\n * const clicksOrInterval = defer(() => {\n * return Math.random() > 0.5\n * ? fromEvent(document, 'click')\n * : interval(1000);\n * });\n * clicksOrInterval.subscribe(x => console.log(x));\n *\n * // Results in the following behavior:\n * // If the result of Math.random() is greater than 0.5 it will listen\n * // for clicks anywhere on the \"document\"; when document is clicked it\n * // will log a MouseEvent object to the console. If the result is less\n * // than 0.5 it will emit ascending numbers, one every second(1000ms).\n * ```\n *\n * @see {@link Observable}\n *\n * @param {function(): ObservableInput} observableFactory The Observable\n * factory function to invoke for each Observer that subscribes to the output\n * Observable. May also return a Promise, which will be converted on the fly\n * to an Observable.\n * @return {Observable} An Observable whose Observers' subscriptions trigger\n * an invocation of the given Observable factory function.\n */\nexport function defer<R extends ObservableInput<any>>(observableFactory: () => R): Observable<ObservedValueOf<R>> {\n return new Observable<ObservedValueOf<R>>((subscriber) => {\n innerFrom(observableFactory()).subscribe(subscriber);\n });\n}\n", "import { Observable } from '../Observable';\n\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { Subscription } from '../Subscription';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { operate } from '../util/lift';\n\n/* tslint:disable:max-line-length */\nexport function catchError<T, O extends ObservableInput<any>>(\n selector: (err: any, caught: Observable<T>) => O\n): OperatorFunction<T, T | ObservedValueOf<O>>;\n/* tslint:enable:max-line-length */\n\n/**\n * Catches errors on the observable to be handled by returning a new observable or throwing an error.\n *\n * <span class=\"informal\">\n * It only listens to the error channel and ignores notifications.\n * Handles errors from the source observable, and maps them to a new observable.\n * The error may also be rethrown, or a new error can be thrown to emit an error from the result.\n * </span>\n *\n * ![](catch.png)\n *\n * This operator handles errors, but forwards along all other events to the resulting observable.\n * If the source observable terminates with an error, it will map that error to a new observable,\n * subscribe to it, and forward all of its events to the resulting observable.\n *\n * ## Examples\n *\n * Continue with a different Observable when there's an error\n *\n * ```ts\n * import { of, map, catchError } from 'rxjs';\n *\n * of(1, 2, 3, 4, 5)\n * .pipe(\n * map(n => {\n * if (n === 4) {\n * throw 'four!';\n * }\n * return n;\n * }),\n * catchError(err => of('I', 'II', 'III', 'IV', 'V'))\n * )\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, I, II, III, IV, V\n * ```\n *\n * Retry the caught source Observable again in case of error, similar to `retry()` operator\n *\n * ```ts\n * import { of, map, catchError, take } from 'rxjs';\n *\n * of(1, 2, 3, 4, 5)\n * .pipe(\n * map(n => {\n * if (n === 4) {\n * throw 'four!';\n * }\n * return n;\n * }),\n * catchError((err, caught) => caught),\n * take(30)\n * )\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, 1, 2, 3, ...\n * ```\n *\n * Throw a new error when the source Observable throws an error\n *\n * ```ts\n * import { of, map, catchError } from 'rxjs';\n *\n * of(1, 2, 3, 4, 5)\n * .pipe(\n * map(n => {\n * if (n === 4) {\n * throw 'four!';\n * }\n * return n;\n * }),\n * catchError(err => {\n * throw 'error in source. Details: ' + err;\n * })\n * )\n * .subscribe({\n * next: x => console.log(x),\n * error: err => console.log(err)\n * });\n * // 1, 2, 3, error in source. Details: four!\n * ```\n *\n * @see {@link onErrorResumeNext}\n * @see {@link repeat}\n * @see {@link repeatWhen}\n * @see {@link retry }\n * @see {@link retryWhen}\n *\n * @param {function} selector a function that takes as arguments `err`, which is the error, and `caught`, which\n * is the source observable, in case you'd like to \"retry\" that observable by returning it again. Whatever observable\n * is returned by the `selector` will be used to continue the observable chain.\n * @return A function that returns an Observable that originates from either\n * the source or the Observable returned by the `selector` function.\n */\nexport function catchError<T, O extends ObservableInput<any>>(\n selector: (err: any, caught: Observable<T>) => O\n): OperatorFunction<T, T | ObservedValueOf<O>> {\n return operate((source, subscriber) => {\n let innerSub: Subscription | null = null;\n let syncUnsub = false;\n let handledResult: Observable<ObservedValueOf<O>>;\n\n innerSub = source.subscribe(\n createOperatorSubscriber(subscriber, undefined, undefined, (err) => {\n handledResult = innerFrom(selector(err, catchError(selector)(source)));\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n } else {\n // We don't have an innerSub yet, that means the error was synchronous\n // because the subscribe call hasn't returned yet.\n syncUnsub = true;\n }\n })\n );\n\n if (syncUnsub) {\n // We have a synchronous error, we need to make sure to\n // finalize right away. This ensures that callbacks in the `finalize` operator are called\n // at the right time, and that finalization occurs at the expected\n // time between the source error and the subscription to the\n // next observable.\n innerSub.unsubscribe();\n innerSub = null;\n handledResult!.subscribe(subscriber);\n }\n });\n}\n", "import { mergeMap } from './mergeMap';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { isFunction } from '../util/isFunction';\n\n/* tslint:disable:max-line-length */\nexport function concatMap<T, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function concatMap<T, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector: undefined\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function concatMap<T, R, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R\n): OperatorFunction<T, R>;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, in a serialized fashion waiting for each one to complete before\n * merging the next.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link concatAll}.</span>\n *\n * ![](concatMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each new inner Observable is\n * concatenated with the previous inner Observable.\n *\n * __Warning:__ if source values arrive endlessly and faster than their\n * corresponding inner Observables can complete, it will result in memory issues\n * as inner Observables amass in an unbounded buffer waiting for their turn to\n * be subscribed to.\n *\n * Note: `concatMap` is equivalent to `mergeMap` with concurrency parameter set\n * to `1`.\n *\n * ## Example\n *\n * For each click event, tick every second from 0 to 3, with no concurrency\n *\n * ```ts\n * import { fromEvent, concatMap, interval, take } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * concatMap(ev => interval(1000).pipe(take(4)))\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link concat}\n * @see {@link concatAll}\n * @see {@link concatMapTo}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @return A function that returns an Observable that emits the result of\n * applying the projection function (and the optional deprecated\n * `resultSelector`) to each item emitted by the source Observable and taking\n * values from each projected inner Observable sequentially.\n */\nexport function concatMap<T, R, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R\n): OperatorFunction<T, ObservedValueOf<O> | R> {\n return isFunction(resultSelector) ? mergeMap(project, resultSelector, 1) : mergeMap(project, 1);\n}\n", "import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Emits a given value if the source Observable completes without emitting any\n * `next` value, otherwise mirrors the source Observable.\n *\n * <span class=\"informal\">If the source Observable turns out to be empty, then\n * this operator will emit a default value.</span>\n *\n * ![](defaultIfEmpty.png)\n *\n * `defaultIfEmpty` emits the values emitted by the source Observable or a\n * specified default value if the source Observable is empty (completes without\n * having emitted any `next` value).\n *\n * ## Example\n *\n * If no clicks happen in 5 seconds, then emit 'no clicks'\n *\n * ```ts\n * import { fromEvent, takeUntil, interval, defaultIfEmpty } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const clicksBeforeFive = clicks.pipe(takeUntil(interval(5000)));\n * const result = clicksBeforeFive.pipe(defaultIfEmpty('no clicks'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link empty}\n * @see {@link last}\n *\n * @param defaultValue The default value used if the source\n * Observable is empty.\n * @return A function that returns an Observable that emits either the\n * specified `defaultValue` if the source Observable emits no items, or the\n * values emitted by the source Observable.\n */\nexport function defaultIfEmpty<T, R>(defaultValue: R): OperatorFunction<T, T | R> {\n return operate((source, subscriber) => {\n let hasValue = false;\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n hasValue = true;\n subscriber.next(value);\n },\n () => {\n if (!hasValue) {\n subscriber.next(defaultValue!);\n }\n subscriber.complete();\n }\n )\n );\n });\n}\n", "import { MonoTypeOperatorFunction } from '../types';\nimport { operate } from '../util/lift';\n\n/**\n * Returns an Observable that mirrors the source Observable, but will call a specified function when\n * the source terminates on complete or error.\n * The specified function will also be called when the subscriber explicitly unsubscribes.\n *\n * ## Examples\n *\n * Execute callback function when the observable completes\n *\n * ```ts\n * import { interval, take, finalize } from 'rxjs';\n *\n * // emit value in sequence every 1 second\n * const source = interval(1000);\n * const example = source.pipe(\n * take(5), //take only the first 5 values\n * finalize(() => console.log('Sequence complete')) // Execute when the observable completes\n * );\n * const subscribe = example.subscribe(val => console.log(val));\n *\n * // results:\n * // 0\n * // 1\n * // 2\n * // 3\n * // 4\n * // 'Sequence complete'\n * ```\n *\n * Execute callback function when the subscriber explicitly unsubscribes\n *\n * ```ts\n * import { interval, finalize, tap, noop, timer } from 'rxjs';\n *\n * const source = interval(100).pipe(\n * finalize(() => console.log('[finalize] Called')),\n * tap({\n * next: () => console.log('[next] Called'),\n * error: () => console.log('[error] Not called'),\n * complete: () => console.log('[tap complete] Not called')\n * })\n * );\n *\n * const sub = source.subscribe({\n * next: x => console.log(x),\n * error: noop,\n * complete: () => console.log('[complete] Not called')\n * });\n *\n * timer(150).subscribe(() => sub.unsubscribe());\n *\n * // results:\n * // '[next] Called'\n * // 0\n * // '[finalize] Called'\n * ```\n *\n * @param {function} callback Function to be called when source terminates.\n * @return A function that returns an Observable that mirrors the source, but\n * will call the specified function on termination.\n */\nexport function finalize<T>(callback: () => void): MonoTypeOperatorFunction<T> {\n return operate((source, subscriber) => {\n // TODO: This try/finally was only added for `useDeprecatedSynchronousErrorHandling`.\n // REMOVE THIS WHEN THAT HOT GARBAGE IS REMOVED IN V8.\n try {\n source.subscribe(subscriber);\n } finally {\n subscriber.add(callback);\n }\n });\n}\n", "import { Subscriber } from '../Subscriber';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/* tslint:disable:max-line-length */\nexport function switchMap<T, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function switchMap<T, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector: undefined\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function switchMap<T, R, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R\n): OperatorFunction<T, R>;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, emitting values only from the most recently projected Observable.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link switchAll}.</span>\n *\n * ![](switchMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each time it observes one of these\n * inner Observables, the output Observable begins emitting the items emitted by\n * that inner Observable. When a new inner Observable is emitted, `switchMap`\n * stops emitting items from the earlier-emitted inner Observable and begins\n * emitting items from the new one. It continues to behave like this for\n * subsequent inner Observables.\n *\n * ## Example\n *\n * Generate new Observable according to source Observable values\n *\n * ```ts\n * import { of, switchMap } from 'rxjs';\n *\n * const switched = of(1, 2, 3).pipe(switchMap(x => of(x, x ** 2, x ** 3)));\n * switched.subscribe(x => console.log(x));\n * // outputs\n * // 1\n * // 1\n * // 1\n * // 2\n * // 4\n * // 8\n * // 3\n * // 9\n * // 27\n * ```\n *\n * Restart an interval Observable on every click event\n *\n * ```ts\n * import { fromEvent, switchMap, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(switchMap(() => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switchAll}\n * @see {@link switchMapTo}\n *\n * @param {function(value: T, index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @return A function that returns an Observable that emits the result of\n * applying the projection function (and the optional deprecated\n * `resultSelector`) to each item emitted by the source Observable and taking\n * only the values from the most recently projected inner Observable.\n */\nexport function switchMap<T, R, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R\n): OperatorFunction<T, ObservedValueOf<O> | R> {\n return operate((source, subscriber) => {\n let innerSubscriber: Subscriber<ObservedValueOf<O>> | null = null;\n let index = 0;\n // Whether or not the source subscription has completed\n let isComplete = false;\n\n // We only complete the result if the source is complete AND we don't have an active inner subscription.\n // This is called both when the source completes and when the inners complete.\n const checkComplete = () => isComplete && !innerSubscriber && subscriber.complete();\n\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n // Cancel the previous inner subscription if there was one\n innerSubscriber?.unsubscribe();\n let innerIndex = 0;\n const outerIndex = index++;\n // Start the next inner subscription\n innerFrom(project(value, outerIndex)).subscribe(\n (innerSubscriber = createOperatorSubscriber(\n subscriber,\n // When we get a new inner value, next it through. Note that this is\n // handling the deprecate result selector here. This is because with this architecture\n // it ends up being smaller than using the map operator.\n (innerValue) => subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue),\n () => {\n // The inner has completed. Null out the inner subscriber to\n // free up memory and to signal that we have no inner subscription\n // currently.\n innerSubscriber = null!;\n checkComplete();\n }\n ))\n );\n },\n () => {\n isComplete = true;\n checkComplete();\n }\n )\n );\n });\n}\n", "import { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\n\n/**\n * Emits the values emitted by the source Observable until a `notifier`\n * Observable emits a value.\n *\n * <span class=\"informal\">Lets values pass until a second Observable,\n * `notifier`, emits a value. Then, it completes.</span>\n *\n * ![](takeUntil.png)\n *\n * `takeUntil` subscribes and begins mirroring the source Observable. It also\n * monitors a second Observable, `notifier` that you provide. If the `notifier`\n * emits a value, the output Observable stops mirroring the source Observable\n * and completes. If the `notifier` doesn't emit any value and completes\n * then `takeUntil` will pass all values.\n *\n * ## Example\n *\n * Tick every second until the first click happens\n *\n * ```ts\n * import { interval, fromEvent, takeUntil } from 'rxjs';\n *\n * const source = interval(1000);\n * const clicks = fromEvent(document, 'click');\n * const result = source.pipe(takeUntil(clicks));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link take}\n * @see {@link takeLast}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @param {Observable} notifier The Observable whose first emitted value will\n * cause the output Observable of `takeUntil` to stop emitting values from the\n * source Observable.\n * @return A function that returns an Observable that emits the values from the\n * source Observable until `notifier` emits its first value.\n */\nexport function takeUntil<T>(notifier: ObservableInput<any>): MonoTypeOperatorFunction<T> {\n return operate((source, subscriber) => {\n innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, () => subscriber.complete(), noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\n", "import { MonoTypeOperatorFunction, Observer } from '../types';\nimport { isFunction } from '../util/isFunction';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\n\n/**\n * An extension to the {@link Observer} interface used only by the {@link tap} operator.\n *\n * It provides a useful set of callbacks a user can register to do side-effects in\n * cases other than what the usual {@link Observer} callbacks are\n * ({@link guide/glossary-and-semantics#next next},\n * {@link guide/glossary-and-semantics#error error} and/or\n * {@link guide/glossary-and-semantics#complete complete}).\n *\n * ## Example\n *\n * ```ts\n * import { fromEvent, switchMap, tap, interval, take } from 'rxjs';\n *\n * const source$ = fromEvent(document, 'click');\n * const result$ = source$.pipe(\n * switchMap((_, i) => i % 2 === 0\n * ? fromEvent(document, 'mousemove').pipe(\n * tap({\n * subscribe: () => console.log('Subscribed to the mouse move events after click #' + i),\n * unsubscribe: () => console.log('Mouse move events #' + i + ' unsubscribed'),\n * finalize: () => console.log('Mouse move events #' + i + ' finalized')\n * })\n * )\n * : interval(1_000).pipe(\n * take(5),\n * tap({\n * subscribe: () => console.log('Subscribed to the 1-second interval events after click #' + i),\n * unsubscribe: () => console.log('1-second interval events #' + i + ' unsubscribed'),\n * finalize: () => console.log('1-second interval events #' + i + ' finalized')\n * })\n * )\n * )\n * );\n *\n * const subscription = result$.subscribe({\n * next: console.log\n * });\n *\n * setTimeout(() => {\n * console.log('Unsubscribe after 60 seconds');\n * subscription.unsubscribe();\n * }, 60_000);\n * ```\n */\nexport interface TapObserver<T> extends Observer<T> {\n /**\n * The callback that `tap` operator invokes at the moment when the source Observable\n * gets subscribed to.\n */\n subscribe: () => void;\n /**\n * The callback that `tap` operator invokes when an explicit\n * {@link guide/glossary-and-semantics#unsubscription unsubscribe} happens. It won't get invoked on\n * `error` or `complete` events.\n */\n unsubscribe: () => void;\n /**\n * The callback that `tap` operator invokes when any kind of\n * {@link guide/glossary-and-semantics#finalization finalization} happens - either when\n * the source Observable `error`s or `complete`s or when it gets explicitly unsubscribed\n * by the user. There is no difference in using this callback or the {@link finalize}\n * operator, but if you're already using `tap` operator, you can use this callback\n * instead. You'd get the same result in either case.\n */\n finalize: () => void;\n}\nexport function tap<T>(observerOrNext?: Partial<TapObserver<T>> | ((value: T) => void)): MonoTypeOperatorFunction<T>;\n/** @deprecated Instead of passing separate callback arguments, use an observer argument. Signatures taking separate callback arguments will be removed in v8. Details: https://rxjs.dev/deprecations/subscribe-arguments */\nexport function tap<T>(\n next?: ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null\n): MonoTypeOperatorFunction<T>;\n\n/**\n * Used to perform side-effects for notifications from the source observable\n *\n * <span class=\"informal\">Used when you want to affect outside state with a notification without altering the notification</span>\n *\n * ![](tap.png)\n *\n * Tap is designed to allow the developer a designated place to perform side effects. While you _could_ perform side-effects\n * inside of a `map` or a `mergeMap`, that would make their mapping functions impure, which isn't always a big deal, but will\n * make it so you can't do things like memoize those functions. The `tap` operator is designed solely for such side-effects to\n * help you remove side-effects from other operations.\n *\n * For any notification, next, error, or complete, `tap` will call the appropriate callback you have provided to it, via a function\n * reference, or a partial observer, then pass that notification down the stream.\n *\n * The observable returned by `tap` is an exact mirror of the source, with one exception: Any error that occurs -- synchronously -- in a handler\n * provided to `tap` will be emitted as an error from the returned observable.\n *\n * > Be careful! You can mutate objects as they pass through the `tap` operator's handlers.\n *\n * The most common use of `tap` is actually for debugging. You can place a `tap(console.log)` anywhere\n * in your observable `pipe`, log out the notifications as they are emitted by the source returned by the previous\n * operation.\n *\n * ## Examples\n *\n * Check a random number before it is handled. Below is an observable that will use a random number between 0 and 1,\n * and emit `'big'` or `'small'` depending on the size of that number. But we wanted to log what the original number\n * was, so we have added a `tap(console.log)`.\n *\n * ```ts\n * import { of, tap, map } from 'rxjs';\n *\n * of(Math.random()).pipe(\n * tap(console.log),\n * map(n => n > 0.5 ? 'big' : 'small')\n * ).subscribe(console.log);\n * ```\n *\n * Using `tap` to analyze a value and force an error. Below is an observable where in our system we only\n * want to emit numbers 3 or less we get from another source. We can force our observable to error\n * using `tap`.\n *\n * ```ts\n * import { of, tap } from 'rxjs';\n *\n * const source = of(1, 2, 3, 4, 5);\n *\n * source.pipe(\n * tap(n => {\n * if (n > 3) {\n * throw new TypeError(`Value ${ n } is greater than 3`);\n * }\n * })\n * )\n * .subscribe({ next: console.log, error: err => console.log(err.message) });\n * ```\n *\n * We want to know when an observable completes before moving on to the next observable. The system\n * below will emit a random series of `'X'` characters from 3 different observables in sequence. The\n * only way we know when one observable completes and moves to the next one, in this case, is because\n * we have added a `tap` with the side effect of logging to console.\n *\n * ```ts\n * import { of, concatMap, interval, take, map, tap } from 'rxjs';\n *\n * of(1, 2, 3).pipe(\n * concatMap(n => interval(1000).pipe(\n * take(Math.round(Math.random() * 10)),\n * map(() => 'X'),\n * tap({ complete: () => console.log(`Done with ${ n }`) })\n * ))\n * )\n * .subscribe(console.log);\n * ```\n *\n * @see {@link finalize}\n * @see {@link TapObserver}\n *\n * @param observerOrNext A next handler or partial observer\n * @param error An error handler\n * @param complete A completion handler\n * @return A function that returns an Observable identical to the source, but\n * runs the specified Observer or callback(s) for each item.\n */\nexport function tap<T>(\n observerOrNext?: Partial<TapObserver<T>> | ((value: T) => void) | null,\n error?: ((e: any) => void) | null,\n complete?: (() => void) | null\n): MonoTypeOperatorFunction<T> {\n // We have to check to see not only if next is a function,\n // but if error or complete were passed. This is because someone\n // could technically call tap like `tap(null, fn)` or `tap(null, null, fn)`.\n const tapObserver =\n isFunction(observerOrNext) || error || complete\n ? // tslint:disable-next-line: no-object-literal-type-assertion\n ({ next: observerOrNext as Exclude<typeof observerOrNext, Partial<TapObserver<T>>>, error, complete } as Partial<TapObserver<T>>)\n : observerOrNext;\n\n return tapObserver\n ? operate((source, subscriber) => {\n tapObserver.subscribe?.();\n let isUnsub = true;\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n tapObserver.next?.(value);\n subscriber.next(value);\n },\n () => {\n isUnsub = false;\n tapObserver.complete?.();\n subscriber.complete();\n },\n (err) => {\n isUnsub = false;\n tapObserver.error?.(err);\n subscriber.error(err);\n },\n () => {\n if (isUnsub) {\n tapObserver.unsubscribe?.();\n }\n tapObserver.finalize?.();\n }\n )\n );\n })\n : // Tap was called with no valid tap observer or handler\n // (e.g. `tap(null, null, null)` or `tap(null)` or `tap()`)\n // so we're going to just mirror the source.\n identity;\n}\n", "const enum ContextType {\n TOP_LEVEL = \"topLevel\",\n STRING = \"string\",\n STRING_ESCAPED = \"stringEscaped\",\n STRING_UNICODE = \"stringUnicode\",\n NUMBER = \"number\",\n NUMBER_NEEDS_DIGIT = \"numberNeedsDigit\",\n NUMBER_NEEDS_EXPONENT = \"numberNeedsExponent\",\n TRUE = \"true\",\n FALSE = \"false\",\n NULL = \"null\",\n ARRAY_NEEDS_VALUE = \"arrayNeedsValue\",\n ARRAY_NEEDS_COMMA = \"arrayNeedsComma\",\n OBJECT_NEEDS_KEY = \"objectNeedsKey\",\n OBJECT_NEEDS_COLON = \"objectNeedsColon\",\n OBJECT_NEEDS_VALUE = \"objectNeedsValue\",\n OBJECT_NEEDS_COMMA = \"objectNeedsComma\",\n}\n\nconst enum RespawnReason {\n STRING_ESCAPE = \"stringEscape\",\n COLLECTION_ITEM = \"collectionItem\",\n}\n\nfunction isWhitespace(char: string): boolean {\n return \"\\u0020\\u000D\\u000A\\u0009\".indexOf(char) >= 0;\n}\n\nexport default function untruncateJson(json: string): string {\n const contextStack: ContextType[] = [ContextType.TOP_LEVEL];\n let position = 0;\n let respawnPosition: number | undefined;\n let respawnStackLength: number | undefined;\n let respawnReason: RespawnReason | undefined;\n\n const push = (context: ContextType) => contextStack.push(context);\n const replace = (context: ContextType) =>\n (contextStack[contextStack.length - 1] = context);\n const setRespawn = (reason: RespawnReason) => {\n if (respawnPosition == null) {\n respawnPosition = position;\n respawnStackLength = contextStack.length;\n respawnReason = reason;\n }\n };\n const clearRespawn = (reason: RespawnReason) => {\n if (reason === respawnReason) {\n respawnPosition = undefined;\n respawnStackLength = undefined;\n respawnReason = undefined;\n }\n };\n const pop = () => contextStack.pop();\n const dontConsumeCharacter = () => position--;\n\n const startAny = (char: string) => {\n if (\"0\" <= char && char <= \"9\") {\n push(ContextType.NUMBER);\n return;\n }\n switch (char) {\n case '\"':\n push(ContextType.STRING);\n return;\n case \"-\":\n push(ContextType.NUMBER_NEEDS_DIGIT);\n return;\n case \"t\":\n push(ContextType.TRUE);\n return;\n case \"f\":\n push(ContextType.FALSE);\n return;\n case \"n\":\n push(ContextType.NULL);\n return;\n case \"[\":\n push(ContextType.ARRAY_NEEDS_VALUE);\n return;\n case \"{\":\n push(ContextType.OBJECT_NEEDS_KEY);\n return;\n }\n };\n\n for (const { length } = json; position < length; position++) {\n const char = json[position];\n switch (contextStack[contextStack.length - 1]) {\n case ContextType.TOP_LEVEL:\n startAny(char);\n break;\n case ContextType.STRING:\n switch (char) {\n case '\"':\n pop();\n break;\n case \"\\\\\":\n setRespawn(RespawnReason.STRING_ESCAPE);\n push(ContextType.STRING_ESCAPED);\n break;\n }\n break;\n case ContextType.STRING_ESCAPED:\n if (char === \"u\") {\n push(ContextType.STRING_UNICODE);\n } else {\n clearRespawn(RespawnReason.STRING_ESCAPE);\n pop();\n }\n break;\n case ContextType.STRING_UNICODE:\n if (position - json.lastIndexOf(\"u\", position) === 4) {\n clearRespawn(RespawnReason.STRING_ESCAPE);\n pop();\n }\n break;\n case ContextType.NUMBER:\n if (char === \".\") {\n replace(ContextType.NUMBER_NEEDS_DIGIT);\n } else if (char === \"e\" || char === \"E\") {\n replace(ContextType.NUMBER_NEEDS_EXPONENT);\n } else if (char < \"0\" || char > \"9\") {\n dontConsumeCharacter();\n pop();\n }\n break;\n case ContextType.NUMBER_NEEDS_DIGIT:\n replace(ContextType.NUMBER);\n break;\n case ContextType.NUMBER_NEEDS_EXPONENT:\n if (char === \"+\" || char === \"-\") {\n replace(ContextType.NUMBER_NEEDS_DIGIT);\n } else {\n replace(ContextType.NUMBER);\n }\n break;\n case ContextType.TRUE:\n case ContextType.FALSE:\n case ContextType.NULL:\n if (char < \"a\" || char > \"z\") {\n dontConsumeCharacter();\n pop();\n }\n break;\n case ContextType.ARRAY_NEEDS_VALUE:\n if (char === \"]\") {\n pop();\n } else if (!isWhitespace(char)) {\n clearRespawn(RespawnReason.COLLECTION_ITEM);\n replace(ContextType.ARRAY_NEEDS_COMMA);\n startAny(char);\n }\n break;\n case ContextType.ARRAY_NEEDS_COMMA:\n if (char === \"]\") {\n pop();\n } else if (char === \",\") {\n setRespawn(RespawnReason.COLLECTION_ITEM);\n replace(ContextType.ARRAY_NEEDS_VALUE);\n }\n break;\n case ContextType.OBJECT_NEEDS_KEY:\n if (char === \"}\") {\n pop();\n } else if (char === '\"') {\n setRespawn(RespawnReason.COLLECTION_ITEM);\n replace(ContextType.OBJECT_NEEDS_COLON);\n push(ContextType.STRING);\n }\n break;\n case ContextType.OBJECT_NEEDS_COLON:\n if (char === \":\") {\n replace(ContextType.OBJECT_NEEDS_VALUE);\n }\n break;\n case ContextType.OBJECT_NEEDS_VALUE:\n if (!isWhitespace(char)) {\n clearRespawn(RespawnReason.COLLECTION_ITEM);\n replace(ContextType.OBJECT_NEEDS_COMMA);\n startAny(char);\n }\n break;\n case ContextType.OBJECT_NEEDS_COMMA:\n if (char === \"}\") {\n pop();\n } else if (char === \",\") {\n setRespawn(RespawnReason.COLLECTION_ITEM);\n replace(ContextType.OBJECT_NEEDS_KEY);\n }\n break;\n }\n }\n\n if (respawnStackLength != null) {\n contextStack.length = respawnStackLength;\n }\n const result = [\n respawnPosition != null ? json.slice(0, respawnPosition) : json,\n ];\n const finishWord = (word: string) =>\n result.push(word.slice(json.length - json.lastIndexOf(word[0])));\n for (let i = contextStack.length - 1; i >= 0; i--) {\n switch (contextStack[i]) {\n case ContextType.STRING:\n result.push('\"');\n break;\n case ContextType.NUMBER_NEEDS_DIGIT:\n case ContextType.NUMBER_NEEDS_EXPONENT:\n result.push(\"0\");\n break;\n case ContextType.TRUE:\n finishWord(\"true\");\n break;\n case ContextType.FALSE:\n finishWord(\"false\");\n break;\n case ContextType.NULL:\n finishWord(\"null\");\n break;\n case ContextType.ARRAY_NEEDS_VALUE:\n case ContextType.ARRAY_NEEDS_COMMA:\n result.push(\"]\");\n break;\n case ContextType.OBJECT_NEEDS_KEY:\n case ContextType.OBJECT_NEEDS_COLON:\n case ContextType.OBJECT_NEEDS_VALUE:\n case ContextType.OBJECT_NEEDS_COMMA:\n result.push(\"}\");\n break;\n }\n }\n return result.join(\"\");\n}\n", "// Copyright 2008 Google Inc. All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n// * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Code generated by the Protocol Buffer compiler is owned by the owner\n// of the input file used when generating it. This code is not\n// standalone and requires a support library to be linked with it. This\n// support library is itself covered by the above license.\n/**\n * Read a 64 bit varint as two JS numbers.\n *\n * Returns tuple:\n * [0]: low bits\n * [1]: high bits\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/buffer_decoder.js#L175\n */\nexport function varint64read() {\n let lowBits = 0;\n let highBits = 0;\n for (let shift = 0; shift < 28; shift += 7) {\n let b = this.buf[this.pos++];\n lowBits |= (b & 0x7f) << shift;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return [lowBits, highBits];\n }\n }\n let middleByte = this.buf[this.pos++];\n // last four bits of the first 32 bit number\n lowBits |= (middleByte & 0x0f) << 28;\n // 3 upper bits are part of the next 32 bit number\n highBits = (middleByte & 0x70) >> 4;\n if ((middleByte & 0x80) == 0) {\n this.assertBounds();\n return [lowBits, highBits];\n }\n for (let shift = 3; shift <= 31; shift += 7) {\n let b = this.buf[this.pos++];\n highBits |= (b & 0x7f) << shift;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return [lowBits, highBits];\n }\n }\n throw new Error(\"invalid varint\");\n}\n/**\n * Write a 64 bit varint, given as two JS numbers, to the given bytes array.\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/writer.js#L344\n */\nexport function varint64write(lo, hi, bytes) {\n for (let i = 0; i < 28; i = i + 7) {\n const shift = lo >>> i;\n const hasNext = !(shift >>> 7 == 0 && hi == 0);\n const byte = (hasNext ? shift | 0x80 : shift) & 0xff;\n bytes.push(byte);\n if (!hasNext) {\n return;\n }\n }\n const splitBits = ((lo >>> 28) & 0x0f) | ((hi & 0x07) << 4);\n const hasMoreBits = !(hi >> 3 == 0);\n bytes.push((hasMoreBits ? splitBits | 0x80 : splitBits) & 0xff);\n if (!hasMoreBits) {\n return;\n }\n for (let i = 3; i < 31; i = i + 7) {\n const shift = hi >>> i;\n const hasNext = !(shift >>> 7 == 0);\n const byte = (hasNext ? shift | 0x80 : shift) & 0xff;\n bytes.push(byte);\n if (!hasNext) {\n return;\n }\n }\n bytes.push((hi >>> 31) & 0x01);\n}\n// constants for binary math\nconst TWO_PWR_32_DBL = 0x100000000;\n/**\n * Parse decimal string of 64 bit integer value as two JS numbers.\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf-javascript/blob/a428c58273abad07c66071d9753bc4d1289de426/experimental/runtime/int64.js#L10\n */\nexport function int64FromString(dec) {\n // Check for minus sign.\n const minus = dec[0] === \"-\";\n if (minus) {\n dec = dec.slice(1);\n }\n // Work 6 decimal digits at a time, acting like we're converting base 1e6\n // digits to binary. This is safe to do with floating point math because\n // Number.isSafeInteger(ALL_32_BITS * 1e6) == true.\n const base = 1e6;\n let lowBits = 0;\n let highBits = 0;\n function add1e6digit(begin, end) {\n // Note: Number('') is 0.\n const digit1e6 = Number(dec.slice(begin, end));\n highBits *= base;\n lowBits = lowBits * base + digit1e6;\n // Carry bits from lowBits to\n if (lowBits >= TWO_PWR_32_DBL) {\n highBits = highBits + ((lowBits / TWO_PWR_32_DBL) | 0);\n lowBits = lowBits % TWO_PWR_32_DBL;\n }\n }\n add1e6digit(-24, -18);\n add1e6digit(-18, -12);\n add1e6digit(-12, -6);\n add1e6digit(-6);\n return minus ? negate(lowBits, highBits) : newBits(lowBits, highBits);\n}\n/**\n * Losslessly converts a 64-bit signed integer in 32:32 split representation\n * into a decimal string.\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf-javascript/blob/a428c58273abad07c66071d9753bc4d1289de426/experimental/runtime/int64.js#L10\n */\nexport function int64ToString(lo, hi) {\n let bits = newBits(lo, hi);\n // If we're treating the input as a signed value and the high bit is set, do\n // a manual two's complement conversion before the decimal conversion.\n const negative = bits.hi & 0x80000000;\n if (negative) {\n bits = negate(bits.lo, bits.hi);\n }\n const result = uInt64ToString(bits.lo, bits.hi);\n return negative ? \"-\" + result : result;\n}\n/**\n * Losslessly converts a 64-bit unsigned integer in 32:32 split representation\n * into a decimal string.\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf-javascript/blob/a428c58273abad07c66071d9753bc4d1289de426/experimental/runtime/int64.js#L10\n */\nexport function uInt64ToString(lo, hi) {\n ({ lo, hi } = toUnsigned(lo, hi));\n // Skip the expensive conversion if the number is small enough to use the\n // built-in conversions.\n // Number.MAX_SAFE_INTEGER = 0x001FFFFF FFFFFFFF, thus any number with\n // highBits <= 0x1FFFFF can be safely expressed with a double and retain\n // integer precision.\n // Proven by: Number.isSafeInteger(0x1FFFFF * 2**32 + 0xFFFFFFFF) == true.\n if (hi <= 0x1fffff) {\n return String(TWO_PWR_32_DBL * hi + lo);\n }\n // What this code is doing is essentially converting the input number from\n // base-2 to base-1e7, which allows us to represent the 64-bit range with\n // only 3 (very large) digits. Those digits are then trivial to convert to\n // a base-10 string.\n // The magic numbers used here are -\n // 2^24 = 16777216 = (1,6777216) in base-1e7.\n // 2^48 = 281474976710656 = (2,8147497,6710656) in base-1e7.\n // Split 32:32 representation into 16:24:24 representation so our\n // intermediate digits don't overflow.\n const low = lo & 0xffffff;\n const mid = ((lo >>> 24) | (hi << 8)) & 0xffffff;\n const high = (hi >> 16) & 0xffff;\n // Assemble our three base-1e7 digits, ignoring carries. The maximum\n // value in a digit at this step is representable as a 48-bit integer, which\n // can be stored in a 64-bit floating point number.\n let digitA = low + mid * 6777216 + high * 6710656;\n let digitB = mid + high * 8147497;\n let digitC = high * 2;\n // Apply carries from A to B and from B to C.\n const base = 10000000;\n if (digitA >= base) {\n digitB += Math.floor(digitA / base);\n digitA %= base;\n }\n if (digitB >= base) {\n digitC += Math.floor(digitB / base);\n digitB %= base;\n }\n // If digitC is 0, then we should have returned in the trivial code path\n // at the top for non-safe integers. Given this, we can assume both digitB\n // and digitA need leading zeros.\n return (digitC.toString() +\n decimalFrom1e7WithLeadingZeros(digitB) +\n decimalFrom1e7WithLeadingZeros(digitA));\n}\nfunction toUnsigned(lo, hi) {\n return { lo: lo >>> 0, hi: hi >>> 0 };\n}\nfunction newBits(lo, hi) {\n return { lo: lo | 0, hi: hi | 0 };\n}\n/**\n * Returns two's compliment negation of input.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Signed_32-bit_integers\n */\nfunction negate(lowBits, highBits) {\n highBits = ~highBits;\n if (lowBits) {\n lowBits = ~lowBits + 1;\n }\n else {\n // If lowBits is 0, then bitwise-not is 0xFFFFFFFF,\n // adding 1 to that, results in 0x100000000, which leaves\n // the low bits 0x0 and simply adds one to the high bits.\n highBits += 1;\n }\n return newBits(lowBits, highBits);\n}\n/**\n * Returns decimal representation of digit1e7 with leading zeros.\n */\nconst decimalFrom1e7WithLeadingZeros = (digit1e7) => {\n const partial = String(digit1e7);\n return \"0000000\".slice(partial.length) + partial;\n};\n/**\n * Write a 32 bit varint, signed or unsigned. Same as `varint64write(0, value, bytes)`\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/1b18833f4f2a2f681f4e4a25cdf3b0a43115ec26/js/binary/encoder.js#L144\n */\nexport function varint32write(value, bytes) {\n if (value >= 0) {\n // write value as varint 32\n while (value > 0x7f) {\n bytes.push((value & 0x7f) | 0x80);\n value = value >>> 7;\n }\n bytes.push(value);\n }\n else {\n for (let i = 0; i < 9; i++) {\n bytes.push((value & 127) | 128);\n value = value >> 7;\n }\n bytes.push(1);\n }\n}\n/**\n * Read an unsigned 32 bit varint.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/buffer_decoder.js#L220\n */\nexport function varint32read() {\n let b = this.buf[this.pos++];\n let result = b & 0x7f;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n b = this.buf[this.pos++];\n result |= (b & 0x7f) << 7;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n b = this.buf[this.pos++];\n result |= (b & 0x7f) << 14;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n b = this.buf[this.pos++];\n result |= (b & 0x7f) << 21;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n // Extract only last 4 bits\n b = this.buf[this.pos++];\n result |= (b & 0x0f) << 28;\n for (let readBytes = 5; (b & 0x80) !== 0 && readBytes < 10; readBytes++)\n b = this.buf[this.pos++];\n if ((b & 0x80) != 0)\n throw new Error(\"invalid varint\");\n this.assertBounds();\n // Result can have 32 bits, convert it to unsigned\n return result >>> 0;\n}\n", "// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { int64FromString, int64ToString, uInt64ToString, } from \"./wire/varint.js\";\n/**\n * Int64Support for the current environment.\n */\nexport const protoInt64 = /*@__PURE__*/ makeInt64Support();\nfunction makeInt64Support() {\n const dv = new DataView(new ArrayBuffer(8));\n // note that Safari 14 implements BigInt, but not the DataView methods\n const ok = typeof BigInt === \"function\" &&\n typeof dv.getBigInt64 === \"function\" &&\n typeof dv.getBigUint64 === \"function\" &&\n typeof dv.setBigInt64 === \"function\" &&\n typeof dv.setBigUint64 === \"function\" &&\n (!!globalThis.Deno ||\n typeof process != \"object\" ||\n typeof process.env != \"object\" ||\n process.env.BUF_BIGINT_DISABLE !== \"1\");\n if (ok) {\n const MIN = BigInt(\"-9223372036854775808\");\n const MAX = BigInt(\"9223372036854775807\");\n const UMIN = BigInt(\"0\");\n const UMAX = BigInt(\"18446744073709551615\");\n return {\n zero: BigInt(0),\n supported: true,\n parse(value) {\n const bi = typeof value == \"bigint\" ? value : BigInt(value);\n if (bi > MAX || bi < MIN) {\n throw new Error(`invalid int64: ${value}`);\n }\n return bi;\n },\n uParse(value) {\n const bi = typeof value == \"bigint\" ? value : BigInt(value);\n if (bi > UMAX || bi < UMIN) {\n throw new Error(`invalid uint64: ${value}`);\n }\n return bi;\n },\n enc(value) {\n dv.setBigInt64(0, this.parse(value), true);\n return {\n lo: dv.getInt32(0, true),\n hi: dv.getInt32(4, true),\n };\n },\n uEnc(value) {\n dv.setBigInt64(0, this.uParse(value), true);\n return {\n lo: dv.getInt32(0, true),\n hi: dv.getInt32(4, true),\n };\n },\n dec(lo, hi) {\n dv.setInt32(0, lo, true);\n dv.setInt32(4, hi, true);\n return dv.getBigInt64(0, true);\n },\n uDec(lo, hi) {\n dv.setInt32(0, lo, true);\n dv.setInt32(4, hi, true);\n return dv.getBigUint64(0, true);\n },\n };\n }\n return {\n zero: \"0\",\n supported: false,\n parse(value) {\n if (typeof value != \"string\") {\n value = value.toString();\n }\n assertInt64String(value);\n return value;\n },\n uParse(value) {\n if (typeof value != \"string\") {\n value = value.toString();\n }\n assertUInt64String(value);\n return value;\n },\n enc(value) {\n if (typeof value != \"string\") {\n value = value.toString();\n }\n assertInt64String(value);\n return int64FromString(value);\n },\n uEnc(value) {\n if (typeof value != \"string\") {\n value = value.toString();\n }\n assertUInt64String(value);\n return int64FromString(value);\n },\n dec(lo, hi) {\n return int64ToString(lo, hi);\n },\n uDec(lo, hi) {\n return uInt64ToString(lo, hi);\n },\n };\n}\nfunction assertInt64String(value) {\n if (!/^-?[0-9]+$/.test(value)) {\n throw new Error(\"invalid int64: \" + value);\n }\n}\nfunction assertUInt64String(value) {\n if (!/^[0-9]+$/.test(value)) {\n throw new Error(\"invalid uint64: \" + value);\n }\n}\n", "// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nconst symbol = Symbol.for(\"@bufbuild/protobuf/text-encoding\");\n/**\n * Protobuf-ES requires the Text Encoding API to convert UTF-8 from and to\n * binary. This WHATWG API is widely available, but it is not part of the\n * ECMAScript standard. On runtimes where it is not available, use this\n * function to provide your own implementation.\n *\n * Note that the Text Encoding API does not provide a way to validate UTF-8.\n * Our implementation falls back to use encodeURIComponent().\n */\nexport function configureTextEncoding(textEncoding) {\n globalThis[symbol] = textEncoding;\n}\nexport function getTextEncoding() {\n if (globalThis[symbol] == undefined) {\n const te = new globalThis.TextEncoder();\n const td = new globalThis.TextDecoder();\n let tdStrict;\n globalThis[symbol] = {\n encodeUtf8(text) {\n return te.encode(text);\n },\n decodeUtf8(bytes, strict) {\n if (strict) {\n if (tdStrict === undefined) {\n tdStrict = new globalThis.TextDecoder(\"utf-8\", { fatal: true });\n }\n return tdStrict.decode(bytes);\n }\n return td.decode(bytes);\n },\n checkUtf8(text) {\n try {\n encodeURIComponent(text);\n return true;\n }\n catch (_) {\n return false;\n }\n },\n };\n }\n return globalThis[symbol];\n}\n", "// Copyright 2021-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nimport { varint32read, varint32write, varint64read, varint64write, } from \"./varint.js\";\nimport { protoInt64 } from \"../proto-int64.js\";\nimport { getTextEncoding } from \"./text-encoding.js\";\n/**\n * Protobuf binary format wire types.\n *\n * A wire type provides just enough information to find the length of the\n * following value.\n *\n * See https://developers.google.com/protocol-buffers/docs/encoding#structure\n */\nexport var WireType;\n(function (WireType) {\n /**\n * Used for int32, int64, uint32, uint64, sint32, sint64, bool, enum\n */\n WireType[WireType[\"Varint\"] = 0] = \"Varint\";\n /**\n * Used for fixed64, sfixed64, double.\n * Always 8 bytes with little-endian byte order.\n */\n WireType[WireType[\"Bit64\"] = 1] = \"Bit64\";\n /**\n * Used for string, bytes, embedded messages, packed repeated fields\n *\n * Only repeated numeric types (types which use the varint, 32-bit,\n * or 64-bit wire types) can be packed. In proto3, such fields are\n * packed by default.\n */\n WireType[WireType[\"LengthDelimited\"] = 2] = \"LengthDelimited\";\n /**\n * Start of a tag-delimited aggregate, such as a proto2 group, or a message\n * in editions with message_encoding = DELIMITED.\n */\n WireType[WireType[\"StartGroup\"] = 3] = \"StartGroup\";\n /**\n * End of a tag-delimited aggregate.\n */\n WireType[WireType[\"EndGroup\"] = 4] = \"EndGroup\";\n /**\n * Used for fixed32, sfixed32, float.\n * Always 4 bytes with little-endian byte order.\n */\n WireType[WireType[\"Bit32\"] = 5] = \"Bit32\";\n})(WireType || (WireType = {}));\n/**\n * Maximum value for a 32-bit floating point value (Protobuf FLOAT).\n */\nexport const FLOAT32_MAX = 3.4028234663852886e38;\n/**\n * Minimum value for a 32-bit floating point value (Protobuf FLOAT).\n */\nexport const FLOAT32_MIN = -3.4028234663852886e38;\n/**\n * Maximum value for an unsigned 32-bit integer (Protobuf UINT32, FIXED32).\n */\nexport const UINT32_MAX = 0xffffffff;\n/**\n * Maximum value for a signed 32-bit integer (Protobuf INT32, SFIXED32, SINT32).\n */\nexport const INT32_MAX = 0x7fffffff;\n/**\n * Minimum value for a signed 32-bit integer (Protobuf INT32, SFIXED32, SINT32).\n */\nexport const INT32_MIN = -0x80000000;\nexport class BinaryWriter {\n constructor(encodeUtf8 = getTextEncoding().encodeUtf8) {\n this.encodeUtf8 = encodeUtf8;\n /**\n * Previous fork states.\n */\n this.stack = [];\n this.chunks = [];\n this.buf = [];\n }\n /**\n * Return all bytes written and reset this writer.\n */\n finish() {\n if (this.buf.length) {\n this.chunks.push(new Uint8Array(this.buf)); // flush the buffer\n this.buf = [];\n }\n let len = 0;\n for (let i = 0; i < this.chunks.length; i++)\n len += this.chunks[i].length;\n let bytes = new Uint8Array(len);\n let offset = 0;\n for (let i = 0; i < this.chunks.length; i++) {\n bytes.set(this.chunks[i], offset);\n offset += this.chunks[i].length;\n }\n this.chunks = [];\n return bytes;\n }\n /**\n * Start a new fork for length-delimited data like a message\n * or a packed repeated field.\n *\n * Must be joined later with `join()`.\n */\n fork() {\n this.stack.push({ chunks: this.chunks, buf: this.buf });\n this.chunks = [];\n this.buf = [];\n return this;\n }\n /**\n * Join the last fork. Write its length and bytes, then\n * return to the previous state.\n */\n join() {\n // get chunk of fork\n let chunk = this.finish();\n // restore previous state\n let prev = this.stack.pop();\n if (!prev)\n throw new Error(\"invalid state, fork stack empty\");\n this.chunks = prev.chunks;\n this.buf = prev.buf;\n // write length of chunk as varint\n this.uint32(chunk.byteLength);\n return this.raw(chunk);\n }\n /**\n * Writes a tag (field number and wire type).\n *\n * Equivalent to `uint32( (fieldNo << 3 | type) >>> 0 )`.\n *\n * Generated code should compute the tag ahead of time and call `uint32()`.\n */\n tag(fieldNo, type) {\n return this.uint32(((fieldNo << 3) | type) >>> 0);\n }\n /**\n * Write a chunk of raw bytes.\n */\n raw(chunk) {\n if (this.buf.length) {\n this.chunks.push(new Uint8Array(this.buf));\n this.buf = [];\n }\n this.chunks.push(chunk);\n return this;\n }\n /**\n * Write a `uint32` value, an unsigned 32 bit varint.\n */\n uint32(value) {\n assertUInt32(value);\n // write value as varint 32, inlined for speed\n while (value > 0x7f) {\n this.buf.push((value & 0x7f) | 0x80);\n value = value >>> 7;\n }\n this.buf.push(value);\n return this;\n }\n /**\n * Write a `int32` value, a signed 32 bit varint.\n */\n int32(value) {\n assertInt32(value);\n varint32write(value, this.buf);\n return this;\n }\n /**\n * Write a `bool` value, a varint.\n */\n bool(value) {\n this.buf.push(value ? 1 : 0);\n return this;\n }\n /**\n * Write a `bytes` value, length-delimited arbitrary data.\n */\n bytes(value) {\n this.uint32(value.byteLength); // write length of chunk as varint\n return this.raw(value);\n }\n /**\n * Write a `string` value, length-delimited data converted to UTF-8 text.\n */\n string(value) {\n let chunk = this.encodeUtf8(value);\n this.uint32(chunk.byteLength); // write length of chunk as varint\n return this.raw(chunk);\n }\n /**\n * Write a `float` value, 32-bit floating point number.\n */\n float(value) {\n assertFloat32(value);\n let chunk = new Uint8Array(4);\n new DataView(chunk.buffer).setFloat32(0, value, true);\n return this.raw(chunk);\n }\n /**\n * Write a `double` value, a 64-bit floating point number.\n */\n double(value) {\n let chunk = new Uint8Array(8);\n new DataView(chunk.buffer).setFloat64(0, value, true);\n return this.raw(chunk);\n }\n /**\n * Write a `fixed32` value, an unsigned, fixed-length 32-bit integer.\n */\n fixed32(value) {\n assertUInt32(value);\n let chunk = new Uint8Array(4);\n new DataView(chunk.buffer).setUint32(0, value, true);\n return this.raw(chunk);\n }\n /**\n * Write a `sfixed32` value, a signed, fixed-length 32-bit integer.\n */\n sfixed32(value) {\n assertInt32(value);\n let chunk = new Uint8Array(4);\n new DataView(chunk.buffer).setInt32(0, value, true);\n return this.raw(chunk);\n }\n /**\n * Write a `sint32` value, a signed, zigzag-encoded 32-bit varint.\n */\n sint32(value) {\n assertInt32(value);\n // zigzag encode\n value = ((value << 1) ^ (value >> 31)) >>> 0;\n varint32write(value, this.buf);\n return this;\n }\n /**\n * Write a `sfixed64` value, a signed, fixed-length 64-bit integer.\n */\n sfixed64(value) {\n let chunk = new Uint8Array(8), view = new DataView(chunk.buffer), tc = protoInt64.enc(value);\n view.setInt32(0, tc.lo, true);\n view.setInt32(4, tc.hi, true);\n return this.raw(chunk);\n }\n /**\n * Write a `fixed64` value, an unsigned, fixed-length 64 bit integer.\n */\n fixed64(value) {\n let chunk = new Uint8Array(8), view = new DataView(chunk.buffer), tc = protoInt64.uEnc(value);\n view.setInt32(0, tc.lo, true);\n view.setInt32(4, tc.hi, true);\n return this.raw(chunk);\n }\n /**\n * Write a `int64` value, a signed 64-bit varint.\n */\n int64(value) {\n let tc = protoInt64.enc(value);\n varint64write(tc.lo, tc.hi, this.buf);\n return this;\n }\n /**\n * Write a `sint64` value, a signed, zig-zag-encoded 64-bit varint.\n */\n sint64(value) {\n const tc = protoInt64.enc(value), \n // zigzag encode\n sign = tc.hi >> 31, lo = (tc.lo << 1) ^ sign, hi = ((tc.hi << 1) | (tc.lo >>> 31)) ^ sign;\n varint64write(lo, hi, this.buf);\n return this;\n }\n /**\n * Write a `uint64` value, an unsigned 64-bit varint.\n */\n uint64(value) {\n const tc = protoInt64.uEnc(value);\n varint64write(tc.lo, tc.hi, this.buf);\n return this;\n }\n}\nexport class BinaryReader {\n constructor(buf, decodeUtf8 = getTextEncoding().decodeUtf8) {\n this.decodeUtf8 = decodeUtf8;\n this.varint64 = varint64read; // dirty cast for `this`\n /**\n * Read a `uint32` field, an unsigned 32 bit varint.\n */\n this.uint32 = varint32read;\n this.buf = buf;\n this.len = buf.length;\n this.pos = 0;\n this.view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n /**\n * Reads a tag - field number and wire type. Tags are uint32 varints; values\n * that do not fit in uint32 are rejected.\n */\n tag() {\n const start = this.pos;\n const tag = this.uint32();\n const bytesRead = this.pos - start;\n if (bytesRead > 5 || (bytesRead == 5 && this.buf[this.pos - 1] > 0x0f)) {\n throw new Error(\"illegal tag: varint overflows uint32\");\n }\n const fieldNo = tag >>> 3;\n const wireType = tag & 7;\n if (fieldNo <= 0 || wireType > 5) {\n throw new Error(\"illegal tag: field no \" + fieldNo + \" wire type \" + wireType);\n }\n return [fieldNo, wireType];\n }\n /**\n * Skip one element and return the skipped data.\n *\n * When skipping StartGroup, provide the tags field number to check for\n * matching field number in the EndGroup tag.\n */\n skip(wireType, fieldNo) {\n let start = this.pos;\n switch (wireType) {\n case WireType.Varint:\n while (this.buf[this.pos++] & 0x80) {\n // ignore\n }\n break;\n // @ts-ignore TS7029: Fallthrough case in switch -- ignore instead of expect-error for compiler settings without noFallthroughCasesInSwitch: true\n case WireType.Bit64:\n this.pos += 4;\n case WireType.Bit32:\n this.pos += 4;\n break;\n case WireType.LengthDelimited:\n let len = this.uint32();\n this.pos += len;\n break;\n case WireType.StartGroup:\n for (;;) {\n const [fn, wt] = this.tag();\n if (wt === WireType.EndGroup) {\n if (fieldNo !== undefined && fn !== fieldNo) {\n throw new Error(\"invalid end group tag\");\n }\n break;\n }\n this.skip(wt, fn);\n }\n break;\n default:\n throw new Error(\"cant skip wire type \" + wireType);\n }\n this.assertBounds();\n return this.buf.subarray(start, this.pos);\n }\n /**\n * Throws error if position in byte array is out of range.\n */\n assertBounds() {\n if (this.pos > this.len)\n throw new RangeError(\"premature EOF\");\n }\n /**\n * Read a `int32` field, a signed 32 bit varint.\n */\n int32() {\n return this.uint32() | 0;\n }\n /**\n * Read a `sint32` field, a signed, zigzag-encoded 32-bit varint.\n */\n sint32() {\n let zze = this.uint32();\n // decode zigzag\n return (zze >>> 1) ^ -(zze & 1);\n }\n /**\n * Read a `int64` field, a signed 64-bit varint.\n */\n int64() {\n return protoInt64.dec(...this.varint64());\n }\n /**\n * Read a `uint64` field, an unsigned 64-bit varint.\n */\n uint64() {\n return protoInt64.uDec(...this.varint64());\n }\n /**\n * Read a `sint64` field, a signed, zig-zag-encoded 64-bit varint.\n */\n sint64() {\n let [lo, hi] = this.varint64();\n // decode zig zag\n let s = -(lo & 1);\n lo = ((lo >>> 1) | ((hi & 1) << 31)) ^ s;\n hi = (hi >>> 1) ^ s;\n return protoInt64.dec(lo, hi);\n }\n /**\n * Read a `bool` field, a variant.\n */\n bool() {\n let [lo, hi] = this.varint64();\n return lo !== 0 || hi !== 0;\n }\n /**\n * Read a `fixed32` field, an unsigned, fixed-length 32-bit integer.\n */\n fixed32() {\n // biome-ignore lint/suspicious/noAssignInExpressions: no\n return this.view.getUint32((this.pos += 4) - 4, true);\n }\n /**\n * Read a `sfixed32` field, a signed, fixed-length 32-bit integer.\n */\n sfixed32() {\n // biome-ignore lint/suspicious/noAssignInExpressions: no\n return this.view.getInt32((this.pos += 4) - 4, true);\n }\n /**\n * Read a `fixed64` field, an unsigned, fixed-length 64 bit integer.\n */\n fixed64() {\n return protoInt64.uDec(this.sfixed32(), this.sfixed32());\n }\n /**\n * Read a `fixed64` field, a signed, fixed-length 64-bit integer.\n */\n sfixed64() {\n return protoInt64.dec(this.sfixed32(), this.sfixed32());\n }\n /**\n * Read a `float` field, 32-bit floating point number.\n */\n float() {\n // biome-ignore lint/suspicious/noAssignInExpressions: no\n return this.view.getFloat32((this.pos += 4) - 4, true);\n }\n /**\n * Read a `double` field, a 64-bit floating point number.\n */\n double() {\n // biome-ignore lint/suspicious/noAssignInExpressions: no\n return this.view.getFloat64((this.pos += 8) - 8, true);\n }\n /**\n * Read a `bytes` field, length-delimited arbitrary data.\n */\n bytes() {\n let len = this.uint32(), start = this.pos;\n this.pos += len;\n this.assertBounds();\n return this.buf.subarray(start, start + len);\n }\n /**\n * Read a `string` field, length-delimited data converted to UTF-8 text. If\n * `strict` is true, throw on invalid UTF-8 instead of substituting U+FFFD.\n */\n string(strict) {\n return this.decodeUtf8(this.bytes(), strict);\n }\n}\n/**\n * Assert a valid signed protobuf 32-bit integer as a number or string.\n */\nfunction assertInt32(arg) {\n if (typeof arg == \"string\") {\n arg = Number(arg);\n }\n else if (typeof arg != \"number\") {\n throw new Error(\"invalid int32: \" + typeof arg);\n }\n if (!Number.isInteger(arg) ||\n arg > INT32_MAX ||\n arg < INT32_MIN)\n throw new Error(\"invalid int32: \" + arg);\n}\n/**\n * Assert a valid unsigned protobuf 32-bit integer as a number or string.\n */\nfunction assertUInt32(arg) {\n if (typeof arg == \"string\") {\n arg = Number(arg);\n }\n else if (typeof arg != \"number\") {\n throw new Error(\"invalid uint32: \" + typeof arg);\n }\n if (!Number.isInteger(arg) ||\n arg > UINT32_MAX ||\n arg < 0)\n throw new Error(\"invalid uint32: \" + arg);\n}\n/**\n * Assert a valid protobuf float value as a number or string.\n */\nfunction assertFloat32(arg) {\n if (typeof arg == \"string\") {\n const o = arg;\n arg = Number(arg);\n if (Number.isNaN(arg) && o !== \"NaN\") {\n throw new Error(\"invalid float32: \" + o);\n }\n }\n else if (typeof arg != \"number\") {\n throw new Error(\"invalid float32: \" + typeof arg);\n }\n if (Number.isFinite(arg) &&\n (arg > FLOAT32_MAX || arg < FLOAT32_MIN))\n throw new Error(\"invalid float32: \" + arg);\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v2.7.7\n// protoc v4.25.9\n// source: google/protobuf/struct.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\n\nexport const protobufPackage = \"google.protobuf\";\n\n/**\n * `NullValue` is a singleton enumeration to represent the null value for the\n * `Value` type union.\n *\n * The JSON representation for `NullValue` is JSON `null`.\n */\nexport enum NullValue {\n /** NULL_VALUE - Null value. */\n NULL_VALUE = 0,\n UNRECOGNIZED = -1,\n}\n\n/**\n * `Struct` represents a structured data value, consisting of fields\n * which map to dynamically typed values. In some languages, `Struct`\n * might be supported by a native representation. For example, in\n * scripting languages like JS a struct is represented as an\n * object. The details of that representation are described together\n * with the proto support for the language.\n *\n * The JSON representation for `Struct` is JSON object.\n */\nexport interface Struct {\n /** Unordered map of dynamically typed values. */\n fields: { [key: string]: any | undefined };\n}\n\nexport interface Struct_FieldsEntry {\n key: string;\n value: any | undefined;\n}\n\n/**\n * `Value` represents a dynamically typed value which can be either\n * null, a number, a string, a boolean, a recursive struct value, or a\n * list of values. A producer of value is expected to set one of these\n * variants. Absence of any variant indicates an error.\n *\n * The JSON representation for `Value` is JSON value.\n */\nexport interface Value {\n /** Represents a null value. */\n nullValue?:\n | NullValue\n | undefined;\n /** Represents a double value. */\n numberValue?:\n | number\n | undefined;\n /** Represents a string value. */\n stringValue?:\n | string\n | undefined;\n /** Represents a boolean value. */\n boolValue?:\n | boolean\n | undefined;\n /** Represents a structured value. */\n structValue?:\n | { [key: string]: any }\n | undefined;\n /** Represents a repeated `Value`. */\n listValue?: Array<any> | undefined;\n}\n\n/**\n * `ListValue` is a wrapper around a repeated field of values.\n *\n * The JSON representation for `ListValue` is JSON array.\n */\nexport interface ListValue {\n /** Repeated field of dynamically typed values. */\n values: any[];\n}\n\nfunction createBaseStruct(): Struct {\n return { fields: {} };\n}\n\nexport const Struct: MessageFns<Struct> & StructWrapperFns = {\n encode(message: Struct, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n Object.entries(message.fields).forEach(([key, value]) => {\n if (value !== undefined) {\n Struct_FieldsEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join();\n }\n });\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): Struct {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseStruct();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n const entry1 = Struct_FieldsEntry.decode(reader, reader.uint32());\n if (entry1.value !== undefined) {\n message.fields[entry1.key] = entry1.value;\n }\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<Struct>, I>>(base?: I): Struct {\n return Struct.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<Struct>, I>>(object: I): Struct {\n const message = createBaseStruct();\n message.fields = Object.entries(object.fields ?? {}).reduce<{ [key: string]: any | undefined }>(\n (acc, [key, value]) => {\n if (value !== undefined) {\n acc[key] = value;\n }\n return acc;\n },\n {},\n );\n return message;\n },\n\n wrap(object: { [key: string]: any } | undefined): Struct {\n const struct = createBaseStruct();\n\n if (object !== undefined) {\n for (const key of Object.keys(object)) {\n struct.fields[key] = object[key];\n }\n }\n return struct;\n },\n\n unwrap(message: Struct): { [key: string]: any } {\n const object: { [key: string]: any } = {};\n if (message.fields) {\n for (const key of Object.keys(message.fields)) {\n object[key] = message.fields[key];\n }\n }\n return object;\n },\n};\n\nfunction createBaseStruct_FieldsEntry(): Struct_FieldsEntry {\n return { key: \"\", value: undefined };\n}\n\nexport const Struct_FieldsEntry: MessageFns<Struct_FieldsEntry> = {\n encode(message: Struct_FieldsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.key !== \"\") {\n writer.uint32(10).string(message.key);\n }\n if (message.value !== undefined) {\n Value.encode(Value.wrap(message.value), writer.uint32(18).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): Struct_FieldsEntry {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseStruct_FieldsEntry();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.key = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.value = Value.unwrap(Value.decode(reader, reader.uint32()));\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<Struct_FieldsEntry>, I>>(base?: I): Struct_FieldsEntry {\n return Struct_FieldsEntry.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<Struct_FieldsEntry>, I>>(object: I): Struct_FieldsEntry {\n const message = createBaseStruct_FieldsEntry();\n message.key = object.key ?? \"\";\n message.value = object.value ?? undefined;\n return message;\n },\n};\n\nfunction createBaseValue(): Value {\n return {\n nullValue: undefined,\n numberValue: undefined,\n stringValue: undefined,\n boolValue: undefined,\n structValue: undefined,\n listValue: undefined,\n };\n}\n\nexport const Value: MessageFns<Value> & AnyValueWrapperFns = {\n encode(message: Value, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.nullValue !== undefined) {\n writer.uint32(8).int32(message.nullValue);\n }\n if (message.numberValue !== undefined) {\n writer.uint32(17).double(message.numberValue);\n }\n if (message.stringValue !== undefined) {\n writer.uint32(26).string(message.stringValue);\n }\n if (message.boolValue !== undefined) {\n writer.uint32(32).bool(message.boolValue);\n }\n if (message.structValue !== undefined) {\n Struct.encode(Struct.wrap(message.structValue), writer.uint32(42).fork()).join();\n }\n if (message.listValue !== undefined) {\n ListValue.encode(ListValue.wrap(message.listValue), writer.uint32(50).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): Value {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseValue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 8) {\n break;\n }\n\n message.nullValue = reader.int32() as any;\n continue;\n }\n case 2: {\n if (tag !== 17) {\n break;\n }\n\n message.numberValue = reader.double();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.stringValue = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 32) {\n break;\n }\n\n message.boolValue = reader.bool();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.structValue = Struct.unwrap(Struct.decode(reader, reader.uint32()));\n continue;\n }\n case 6: {\n if (tag !== 50) {\n break;\n }\n\n message.listValue = ListValue.unwrap(ListValue.decode(reader, reader.uint32()));\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<Value>, I>>(base?: I): Value {\n return Value.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<Value>, I>>(object: I): Value {\n const message = createBaseValue();\n message.nullValue = object.nullValue ?? undefined;\n message.numberValue = object.numberValue ?? undefined;\n message.stringValue = object.stringValue ?? undefined;\n message.boolValue = object.boolValue ?? undefined;\n message.structValue = object.structValue ?? undefined;\n message.listValue = object.listValue ?? undefined;\n return message;\n },\n\n wrap(value: any): Value {\n const result = createBaseValue();\n if (value === null) {\n result.nullValue = NullValue.NULL_VALUE;\n } else if (typeof value === \"boolean\") {\n result.boolValue = value;\n } else if (typeof value === \"number\") {\n result.numberValue = value;\n } else if (typeof value === \"string\") {\n result.stringValue = value;\n } else if (globalThis.Array.isArray(value)) {\n result.listValue = value;\n } else if (typeof value === \"object\") {\n result.structValue = value;\n } else if (typeof value !== \"undefined\") {\n throw new globalThis.Error(\"Unsupported any value type: \" + typeof value);\n }\n return result;\n },\n\n unwrap(message: any): string | number | boolean | Object | null | Array<any> | undefined {\n if (message.stringValue !== undefined) {\n return message.stringValue;\n } else if (message?.numberValue !== undefined) {\n return message.numberValue;\n } else if (message?.boolValue !== undefined) {\n return message.boolValue;\n } else if (message?.structValue !== undefined) {\n return message.structValue as any;\n } else if (message?.listValue !== undefined) {\n return message.listValue;\n } else if (message?.nullValue !== undefined) {\n return null;\n }\n return undefined;\n },\n};\n\nfunction createBaseListValue(): ListValue {\n return { values: [] };\n}\n\nexport const ListValue: MessageFns<ListValue> & ListValueWrapperFns = {\n encode(message: ListValue, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n for (const v of message.values) {\n Value.encode(Value.wrap(v!), writer.uint32(10).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): ListValue {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseListValue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.values.push(Value.unwrap(Value.decode(reader, reader.uint32())));\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<ListValue>, I>>(base?: I): ListValue {\n return ListValue.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<ListValue>, I>>(object: I): ListValue {\n const message = createBaseListValue();\n message.values = object.values?.map((e) => e) || [];\n return message;\n },\n\n wrap(array: Array<any> | undefined): ListValue {\n const result = createBaseListValue();\n result.values = array ?? [];\n return result;\n },\n\n unwrap(message: ListValue): Array<any> {\n if (message?.hasOwnProperty(\"values\") && globalThis.Array.isArray(message.values)) {\n return message.values;\n } else {\n return message as any;\n }\n },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\ntype KeysOfUnion<T> = T extends T ? keyof T : never;\nexport type Exact<P, I extends P> = P extends Builtin ? P\n : P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };\n\nexport interface MessageFns<T> {\n encode(message: T, writer?: BinaryWriter): BinaryWriter;\n decode(input: BinaryReader | Uint8Array, length?: number): T;\n create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;\n fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;\n}\n\nexport interface StructWrapperFns {\n wrap(object: { [key: string]: any } | undefined): Struct;\n unwrap(message: Struct): { [key: string]: any };\n}\n\nexport interface AnyValueWrapperFns {\n wrap(value: any): Value;\n unwrap(message: any): string | number | boolean | Object | null | Array<any> | undefined;\n}\n\nexport interface ListValueWrapperFns {\n wrap(array: Array<any> | undefined): ListValue;\n unwrap(message: ListValue): Array<any>;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v2.7.7\n// protoc v4.25.9\n// source: patch.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { Value } from \"./google/protobuf/struct\";\n\nexport const protobufPackage = \"ag_ui\";\n\nexport enum JsonPatchOperationType {\n ADD = 0,\n REMOVE = 1,\n REPLACE = 2,\n MOVE = 3,\n COPY = 4,\n TEST = 5,\n UNRECOGNIZED = -1,\n}\n\nexport interface JsonPatchOperation {\n op: JsonPatchOperationType;\n path: string;\n from?: string | undefined;\n value?: any | undefined;\n}\n\nfunction createBaseJsonPatchOperation(): JsonPatchOperation {\n return { op: 0, path: \"\", from: undefined, value: undefined };\n}\n\nexport const JsonPatchOperation: MessageFns<JsonPatchOperation> = {\n encode(message: JsonPatchOperation, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.op !== 0) {\n writer.uint32(8).int32(message.op);\n }\n if (message.path !== \"\") {\n writer.uint32(18).string(message.path);\n }\n if (message.from !== undefined) {\n writer.uint32(26).string(message.from);\n }\n if (message.value !== undefined) {\n Value.encode(Value.wrap(message.value), writer.uint32(34).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): JsonPatchOperation {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseJsonPatchOperation();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 8) {\n break;\n }\n\n message.op = reader.int32() as any;\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.path = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.from = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.value = Value.unwrap(Value.decode(reader, reader.uint32()));\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<JsonPatchOperation>, I>>(base?: I): JsonPatchOperation {\n return JsonPatchOperation.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<JsonPatchOperation>, I>>(object: I): JsonPatchOperation {\n const message = createBaseJsonPatchOperation();\n message.op = object.op ?? 0;\n message.path = object.path ?? \"\";\n message.from = object.from ?? undefined;\n message.value = object.value ?? undefined;\n return message;\n },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\ntype KeysOfUnion<T> = T extends T ? keyof T : never;\nexport type Exact<P, I extends P> = P extends Builtin ? P\n : P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };\n\nexport interface MessageFns<T> {\n encode(message: T, writer?: BinaryWriter): BinaryWriter;\n decode(input: BinaryReader | Uint8Array, length?: number): T;\n create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;\n fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v2.7.7\n// protoc v4.25.9\n// source: types.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { Value } from \"./google/protobuf/struct\";\n\nexport const protobufPackage = \"ag_ui\";\n\nexport interface ToolCall {\n id: string;\n type: string;\n function: ToolCall_Function | undefined;\n}\n\nexport interface ToolCall_Function {\n name: string;\n arguments: string;\n}\n\nexport interface InputContentDataSource {\n value: string;\n mimeType: string;\n}\n\nexport interface InputContentUrlSource {\n value: string;\n mimeType?: string | undefined;\n}\n\nexport interface InputContentSource {\n data?: InputContentDataSource | undefined;\n url?: InputContentUrlSource | undefined;\n}\n\nexport interface TextInputPart {\n text: string;\n}\n\nexport interface ImageInputPart {\n source: InputContentSource | undefined;\n metadata?: any | undefined;\n}\n\nexport interface AudioInputPart {\n source: InputContentSource | undefined;\n metadata?: any | undefined;\n}\n\nexport interface VideoInputPart {\n source: InputContentSource | undefined;\n metadata?: any | undefined;\n}\n\nexport interface DocumentInputPart {\n source: InputContentSource | undefined;\n metadata?: any | undefined;\n}\n\nexport interface InputContent {\n text?: TextInputPart | undefined;\n image?: ImageInputPart | undefined;\n audio?: AudioInputPart | undefined;\n video?: VideoInputPart | undefined;\n document?: DocumentInputPart | undefined;\n}\n\nexport interface Message {\n id: string;\n role: string;\n content?: string | undefined;\n name?: string | undefined;\n toolCalls: ToolCall[];\n toolCallId?: string | undefined;\n error?: string | undefined;\n contentParts: InputContent[];\n}\n\nfunction createBaseToolCall(): ToolCall {\n return { id: \"\", type: \"\", function: undefined };\n}\n\nexport const ToolCall: MessageFns<ToolCall> = {\n encode(message: ToolCall, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.id !== \"\") {\n writer.uint32(10).string(message.id);\n }\n if (message.type !== \"\") {\n writer.uint32(18).string(message.type);\n }\n if (message.function !== undefined) {\n ToolCall_Function.encode(message.function, writer.uint32(26).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): ToolCall {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseToolCall();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.id = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.type = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.function = ToolCall_Function.decode(reader, reader.uint32());\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<ToolCall>, I>>(base?: I): ToolCall {\n return ToolCall.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<ToolCall>, I>>(object: I): ToolCall {\n const message = createBaseToolCall();\n message.id = object.id ?? \"\";\n message.type = object.type ?? \"\";\n message.function = (object.function !== undefined && object.function !== null)\n ? ToolCall_Function.fromPartial(object.function)\n : undefined;\n return message;\n },\n};\n\nfunction createBaseToolCall_Function(): ToolCall_Function {\n return { name: \"\", arguments: \"\" };\n}\n\nexport const ToolCall_Function: MessageFns<ToolCall_Function> = {\n encode(message: ToolCall_Function, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.name !== \"\") {\n writer.uint32(10).string(message.name);\n }\n if (message.arguments !== \"\") {\n writer.uint32(18).string(message.arguments);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): ToolCall_Function {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseToolCall_Function();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.name = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.arguments = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<ToolCall_Function>, I>>(base?: I): ToolCall_Function {\n return ToolCall_Function.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<ToolCall_Function>, I>>(object: I): ToolCall_Function {\n const message = createBaseToolCall_Function();\n message.name = object.name ?? \"\";\n message.arguments = object.arguments ?? \"\";\n return message;\n },\n};\n\nfunction createBaseInputContentDataSource(): InputContentDataSource {\n return { value: \"\", mimeType: \"\" };\n}\n\nexport const InputContentDataSource: MessageFns<InputContentDataSource> = {\n encode(message: InputContentDataSource, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.value !== \"\") {\n writer.uint32(10).string(message.value);\n }\n if (message.mimeType !== \"\") {\n writer.uint32(18).string(message.mimeType);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): InputContentDataSource {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseInputContentDataSource();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.value = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.mimeType = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<InputContentDataSource>, I>>(base?: I): InputContentDataSource {\n return InputContentDataSource.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<InputContentDataSource>, I>>(object: I): InputContentDataSource {\n const message = createBaseInputContentDataSource();\n message.value = object.value ?? \"\";\n message.mimeType = object.mimeType ?? \"\";\n return message;\n },\n};\n\nfunction createBaseInputContentUrlSource(): InputContentUrlSource {\n return { value: \"\", mimeType: undefined };\n}\n\nexport const InputContentUrlSource: MessageFns<InputContentUrlSource> = {\n encode(message: InputContentUrlSource, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.value !== \"\") {\n writer.uint32(10).string(message.value);\n }\n if (message.mimeType !== undefined) {\n writer.uint32(18).string(message.mimeType);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): InputContentUrlSource {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseInputContentUrlSource();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.value = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.mimeType = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<InputContentUrlSource>, I>>(base?: I): InputContentUrlSource {\n return InputContentUrlSource.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<InputContentUrlSource>, I>>(object: I): InputContentUrlSource {\n const message = createBaseInputContentUrlSource();\n message.value = object.value ?? \"\";\n message.mimeType = object.mimeType ?? undefined;\n return message;\n },\n};\n\nfunction createBaseInputContentSource(): InputContentSource {\n return { data: undefined, url: undefined };\n}\n\nexport const InputContentSource: MessageFns<InputContentSource> = {\n encode(message: InputContentSource, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.data !== undefined) {\n InputContentDataSource.encode(message.data, writer.uint32(10).fork()).join();\n }\n if (message.url !== undefined) {\n InputContentUrlSource.encode(message.url, writer.uint32(18).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): InputContentSource {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseInputContentSource();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.data = InputContentDataSource.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.url = InputContentUrlSource.decode(reader, reader.uint32());\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<InputContentSource>, I>>(base?: I): InputContentSource {\n return InputContentSource.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<InputContentSource>, I>>(object: I): InputContentSource {\n const message = createBaseInputContentSource();\n message.data = (object.data !== undefined && object.data !== null)\n ? InputContentDataSource.fromPartial(object.data)\n : undefined;\n message.url = (object.url !== undefined && object.url !== null)\n ? InputContentUrlSource.fromPartial(object.url)\n : undefined;\n return message;\n },\n};\n\nfunction createBaseTextInputPart(): TextInputPart {\n return { text: \"\" };\n}\n\nexport const TextInputPart: MessageFns<TextInputPart> = {\n encode(message: TextInputPart, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.text !== \"\") {\n writer.uint32(10).string(message.text);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): TextInputPart {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseTextInputPart();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.text = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<TextInputPart>, I>>(base?: I): TextInputPart {\n return TextInputPart.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<TextInputPart>, I>>(object: I): TextInputPart {\n const message = createBaseTextInputPart();\n message.text = object.text ?? \"\";\n return message;\n },\n};\n\nfunction createBaseImageInputPart(): ImageInputPart {\n return { source: undefined, metadata: undefined };\n}\n\nexport const ImageInputPart: MessageFns<ImageInputPart> = {\n encode(message: ImageInputPart, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.source !== undefined) {\n InputContentSource.encode(message.source, writer.uint32(10).fork()).join();\n }\n if (message.metadata !== undefined) {\n Value.encode(Value.wrap(message.metadata), writer.uint32(18).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): ImageInputPart {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseImageInputPart();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.source = InputContentSource.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.metadata = Value.unwrap(Value.decode(reader, reader.uint32()));\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<ImageInputPart>, I>>(base?: I): ImageInputPart {\n return ImageInputPart.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<ImageInputPart>, I>>(object: I): ImageInputPart {\n const message = createBaseImageInputPart();\n message.source = (object.source !== undefined && object.source !== null)\n ? InputContentSource.fromPartial(object.source)\n : undefined;\n message.metadata = object.metadata ?? undefined;\n return message;\n },\n};\n\nfunction createBaseAudioInputPart(): AudioInputPart {\n return { source: undefined, metadata: undefined };\n}\n\nexport const AudioInputPart: MessageFns<AudioInputPart> = {\n encode(message: AudioInputPart, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.source !== undefined) {\n InputContentSource.encode(message.source, writer.uint32(10).fork()).join();\n }\n if (message.metadata !== undefined) {\n Value.encode(Value.wrap(message.metadata), writer.uint32(18).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): AudioInputPart {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseAudioInputPart();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.source = InputContentSource.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.metadata = Value.unwrap(Value.decode(reader, reader.uint32()));\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<AudioInputPart>, I>>(base?: I): AudioInputPart {\n return AudioInputPart.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<AudioInputPart>, I>>(object: I): AudioInputPart {\n const message = createBaseAudioInputPart();\n message.source = (object.source !== undefined && object.source !== null)\n ? InputContentSource.fromPartial(object.source)\n : undefined;\n message.metadata = object.metadata ?? undefined;\n return message;\n },\n};\n\nfunction createBaseVideoInputPart(): VideoInputPart {\n return { source: undefined, metadata: undefined };\n}\n\nexport const VideoInputPart: MessageFns<VideoInputPart> = {\n encode(message: VideoInputPart, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.source !== undefined) {\n InputContentSource.encode(message.source, writer.uint32(10).fork()).join();\n }\n if (message.metadata !== undefined) {\n Value.encode(Value.wrap(message.metadata), writer.uint32(18).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): VideoInputPart {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseVideoInputPart();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.source = InputContentSource.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.metadata = Value.unwrap(Value.decode(reader, reader.uint32()));\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<VideoInputPart>, I>>(base?: I): VideoInputPart {\n return VideoInputPart.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<VideoInputPart>, I>>(object: I): VideoInputPart {\n const message = createBaseVideoInputPart();\n message.source = (object.source !== undefined && object.source !== null)\n ? InputContentSource.fromPartial(object.source)\n : undefined;\n message.metadata = object.metadata ?? undefined;\n return message;\n },\n};\n\nfunction createBaseDocumentInputPart(): DocumentInputPart {\n return { source: undefined, metadata: undefined };\n}\n\nexport const DocumentInputPart: MessageFns<DocumentInputPart> = {\n encode(message: DocumentInputPart, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.source !== undefined) {\n InputContentSource.encode(message.source, writer.uint32(10).fork()).join();\n }\n if (message.metadata !== undefined) {\n Value.encode(Value.wrap(message.metadata), writer.uint32(18).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): DocumentInputPart {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseDocumentInputPart();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.source = InputContentSource.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.metadata = Value.unwrap(Value.decode(reader, reader.uint32()));\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<DocumentInputPart>, I>>(base?: I): DocumentInputPart {\n return DocumentInputPart.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<DocumentInputPart>, I>>(object: I): DocumentInputPart {\n const message = createBaseDocumentInputPart();\n message.source = (object.source !== undefined && object.source !== null)\n ? InputContentSource.fromPartial(object.source)\n : undefined;\n message.metadata = object.metadata ?? undefined;\n return message;\n },\n};\n\nfunction createBaseInputContent(): InputContent {\n return { text: undefined, image: undefined, audio: undefined, video: undefined, document: undefined };\n}\n\nexport const InputContent: MessageFns<InputContent> = {\n encode(message: InputContent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.text !== undefined) {\n TextInputPart.encode(message.text, writer.uint32(10).fork()).join();\n }\n if (message.image !== undefined) {\n ImageInputPart.encode(message.image, writer.uint32(18).fork()).join();\n }\n if (message.audio !== undefined) {\n AudioInputPart.encode(message.audio, writer.uint32(26).fork()).join();\n }\n if (message.video !== undefined) {\n VideoInputPart.encode(message.video, writer.uint32(34).fork()).join();\n }\n if (message.document !== undefined) {\n DocumentInputPart.encode(message.document, writer.uint32(42).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): InputContent {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseInputContent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.text = TextInputPart.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.image = ImageInputPart.decode(reader, reader.uint32());\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.audio = AudioInputPart.decode(reader, reader.uint32());\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.video = VideoInputPart.decode(reader, reader.uint32());\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.document = DocumentInputPart.decode(reader, reader.uint32());\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<InputContent>, I>>(base?: I): InputContent {\n return InputContent.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<InputContent>, I>>(object: I): InputContent {\n const message = createBaseInputContent();\n message.text = (object.text !== undefined && object.text !== null)\n ? TextInputPart.fromPartial(object.text)\n : undefined;\n message.image = (object.image !== undefined && object.image !== null)\n ? ImageInputPart.fromPartial(object.image)\n : undefined;\n message.audio = (object.audio !== undefined && object.audio !== null)\n ? AudioInputPart.fromPartial(object.audio)\n : undefined;\n message.video = (object.video !== undefined && object.video !== null)\n ? VideoInputPart.fromPartial(object.video)\n : undefined;\n message.document = (object.document !== undefined && object.document !== null)\n ? DocumentInputPart.fromPartial(object.document)\n : undefined;\n return message;\n },\n};\n\nfunction createBaseMessage(): Message {\n return {\n id: \"\",\n role: \"\",\n content: undefined,\n name: undefined,\n toolCalls: [],\n toolCallId: undefined,\n error: undefined,\n contentParts: [],\n };\n}\n\nexport const Message: MessageFns<Message> = {\n encode(message: Message, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.id !== \"\") {\n writer.uint32(10).string(message.id);\n }\n if (message.role !== \"\") {\n writer.uint32(18).string(message.role);\n }\n if (message.content !== undefined) {\n writer.uint32(26).string(message.content);\n }\n if (message.name !== undefined) {\n writer.uint32(34).string(message.name);\n }\n for (const v of message.toolCalls) {\n ToolCall.encode(v!, writer.uint32(42).fork()).join();\n }\n if (message.toolCallId !== undefined) {\n writer.uint32(50).string(message.toolCallId);\n }\n if (message.error !== undefined) {\n writer.uint32(58).string(message.error);\n }\n for (const v of message.contentParts) {\n InputContent.encode(v!, writer.uint32(66).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): Message {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMessage();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.id = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.role = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.content = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.name = reader.string();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.toolCalls.push(ToolCall.decode(reader, reader.uint32()));\n continue;\n }\n case 6: {\n if (tag !== 50) {\n break;\n }\n\n message.toolCallId = reader.string();\n continue;\n }\n case 7: {\n if (tag !== 58) {\n break;\n }\n\n message.error = reader.string();\n continue;\n }\n case 8: {\n if (tag !== 66) {\n break;\n }\n\n message.contentParts.push(InputContent.decode(reader, reader.uint32()));\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<Message>, I>>(base?: I): Message {\n return Message.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<Message>, I>>(object: I): Message {\n const message = createBaseMessage();\n message.id = object.id ?? \"\";\n message.role = object.role ?? \"\";\n message.content = object.content ?? undefined;\n message.name = object.name ?? undefined;\n message.toolCalls = object.toolCalls?.map((e) => ToolCall.fromPartial(e)) || [];\n message.toolCallId = object.toolCallId ?? undefined;\n message.error = object.error ?? undefined;\n message.contentParts = object.contentParts?.map((e) => InputContent.fromPartial(e)) || [];\n return message;\n },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\ntype KeysOfUnion<T> = T extends T ? keyof T : never;\nexport type Exact<P, I extends P> = P extends Builtin ? P\n : P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };\n\nexport interface MessageFns<T> {\n encode(message: T, writer?: BinaryWriter): BinaryWriter;\n decode(input: BinaryReader | Uint8Array, length?: number): T;\n create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;\n fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v2.7.7\n// protoc v4.25.9\n// source: events.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { Value } from \"./google/protobuf/struct\";\nimport { JsonPatchOperation } from \"./patch\";\nimport { Message } from \"./types\";\n\nexport const protobufPackage = \"ag_ui\";\n\nexport enum EventType {\n TEXT_MESSAGE_START = 0,\n TEXT_MESSAGE_CONTENT = 1,\n TEXT_MESSAGE_END = 2,\n TOOL_CALL_START = 3,\n TOOL_CALL_ARGS = 4,\n TOOL_CALL_END = 5,\n STATE_SNAPSHOT = 6,\n STATE_DELTA = 7,\n MESSAGES_SNAPSHOT = 8,\n RAW = 9,\n CUSTOM = 10,\n RUN_STARTED = 11,\n RUN_FINISHED = 12,\n RUN_ERROR = 13,\n STEP_STARTED = 14,\n STEP_FINISHED = 15,\n UNRECOGNIZED = -1,\n}\n\nexport interface BaseEvent {\n type: EventType;\n timestamp?: number | undefined;\n rawEvent?: any | undefined;\n}\n\nexport interface TextMessageStartEvent {\n baseEvent: BaseEvent | undefined;\n messageId: string;\n role?: string | undefined;\n name?: string | undefined;\n}\n\nexport interface TextMessageContentEvent {\n baseEvent: BaseEvent | undefined;\n messageId: string;\n delta: string;\n}\n\nexport interface TextMessageEndEvent {\n baseEvent: BaseEvent | undefined;\n messageId: string;\n}\n\nexport interface ToolCallStartEvent {\n baseEvent: BaseEvent | undefined;\n toolCallId: string;\n toolCallName: string;\n parentMessageId?: string | undefined;\n}\n\nexport interface ToolCallArgsEvent {\n baseEvent: BaseEvent | undefined;\n toolCallId: string;\n delta: string;\n}\n\nexport interface ToolCallEndEvent {\n baseEvent: BaseEvent | undefined;\n toolCallId: string;\n}\n\nexport interface StateSnapshotEvent {\n baseEvent: BaseEvent | undefined;\n snapshot: any | undefined;\n}\n\nexport interface StateDeltaEvent {\n baseEvent: BaseEvent | undefined;\n delta: JsonPatchOperation[];\n}\n\nexport interface MessagesSnapshotEvent {\n baseEvent: BaseEvent | undefined;\n messages: Message[];\n}\n\nexport interface RawEvent {\n baseEvent: BaseEvent | undefined;\n event: any | undefined;\n source?: string | undefined;\n}\n\nexport interface CustomEvent {\n baseEvent: BaseEvent | undefined;\n name: string;\n value?: any | undefined;\n}\n\nexport interface RunStartedEvent {\n baseEvent: BaseEvent | undefined;\n threadId: string;\n runId: string;\n}\n\nexport interface RunFinishedEvent {\n baseEvent: BaseEvent | undefined;\n threadId: string;\n runId: string;\n result?: any | undefined;\n}\n\nexport interface RunErrorEvent {\n baseEvent: BaseEvent | undefined;\n code?: string | undefined;\n message: string;\n}\n\nexport interface StepStartedEvent {\n baseEvent: BaseEvent | undefined;\n stepName: string;\n}\n\nexport interface StepFinishedEvent {\n baseEvent: BaseEvent | undefined;\n stepName: string;\n}\n\nexport interface TextMessageChunkEvent {\n baseEvent: BaseEvent | undefined;\n messageId?: string | undefined;\n role?: string | undefined;\n delta?: string | undefined;\n name?: string | undefined;\n}\n\nexport interface ToolCallChunkEvent {\n baseEvent: BaseEvent | undefined;\n toolCallId?: string | undefined;\n toolCallName?: string | undefined;\n parentMessageId?: string | undefined;\n delta?: string | undefined;\n}\n\nexport interface Event {\n textMessageStart?: TextMessageStartEvent | undefined;\n textMessageContent?: TextMessageContentEvent | undefined;\n textMessageEnd?: TextMessageEndEvent | undefined;\n toolCallStart?: ToolCallStartEvent | undefined;\n toolCallArgs?: ToolCallArgsEvent | undefined;\n toolCallEnd?: ToolCallEndEvent | undefined;\n stateSnapshot?: StateSnapshotEvent | undefined;\n stateDelta?: StateDeltaEvent | undefined;\n messagesSnapshot?: MessagesSnapshotEvent | undefined;\n raw?: RawEvent | undefined;\n custom?: CustomEvent | undefined;\n runStarted?: RunStartedEvent | undefined;\n runFinished?: RunFinishedEvent | undefined;\n runError?: RunErrorEvent | undefined;\n stepStarted?: StepStartedEvent | undefined;\n stepFinished?: StepFinishedEvent | undefined;\n textMessageChunk?: TextMessageChunkEvent | undefined;\n toolCallChunk?: ToolCallChunkEvent | undefined;\n}\n\nfunction createBaseBaseEvent(): BaseEvent {\n return { type: 0, timestamp: undefined, rawEvent: undefined };\n}\n\nexport const BaseEvent: MessageFns<BaseEvent> = {\n encode(message: BaseEvent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.type !== 0) {\n writer.uint32(8).int32(message.type);\n }\n if (message.timestamp !== undefined) {\n writer.uint32(16).int64(message.timestamp);\n }\n if (message.rawEvent !== undefined) {\n Value.encode(Value.wrap(message.rawEvent), writer.uint32(26).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): BaseEvent {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseBaseEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 8) {\n break;\n }\n\n message.type = reader.int32() as any;\n continue;\n }\n case 2: {\n if (tag !== 16) {\n break;\n }\n\n message.timestamp = longToNumber(reader.int64());\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.rawEvent = Value.unwrap(Value.decode(reader, reader.uint32()));\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<BaseEvent>, I>>(base?: I): BaseEvent {\n return BaseEvent.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<BaseEvent>, I>>(object: I): BaseEvent {\n const message = createBaseBaseEvent();\n message.type = object.type ?? 0;\n message.timestamp = object.timestamp ?? undefined;\n message.rawEvent = object.rawEvent ?? undefined;\n return message;\n },\n};\n\nfunction createBaseTextMessageStartEvent(): TextMessageStartEvent {\n return { baseEvent: undefined, messageId: \"\", role: undefined, name: undefined };\n}\n\nexport const TextMessageStartEvent: MessageFns<TextMessageStartEvent> = {\n encode(message: TextMessageStartEvent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.baseEvent !== undefined) {\n BaseEvent.encode(message.baseEvent, writer.uint32(10).fork()).join();\n }\n if (message.messageId !== \"\") {\n writer.uint32(18).string(message.messageId);\n }\n if (message.role !== undefined) {\n writer.uint32(26).string(message.role);\n }\n if (message.name !== undefined) {\n writer.uint32(34).string(message.name);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): TextMessageStartEvent {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseTextMessageStartEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.baseEvent = BaseEvent.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.messageId = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.role = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.name = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<TextMessageStartEvent>, I>>(base?: I): TextMessageStartEvent {\n return TextMessageStartEvent.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<TextMessageStartEvent>, I>>(object: I): TextMessageStartEvent {\n const message = createBaseTextMessageStartEvent();\n message.baseEvent = (object.baseEvent !== undefined && object.baseEvent !== null)\n ? BaseEvent.fromPartial(object.baseEvent)\n : undefined;\n message.messageId = object.messageId ?? \"\";\n message.role = object.role ?? undefined;\n message.name = object.name ?? undefined;\n return message;\n },\n};\n\nfunction createBaseTextMessageContentEvent(): TextMessageContentEvent {\n return { baseEvent: undefined, messageId: \"\", delta: \"\" };\n}\n\nexport const TextMessageContentEvent: MessageFns<TextMessageContentEvent> = {\n encode(message: TextMessageContentEvent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.baseEvent !== undefined) {\n BaseEvent.encode(message.baseEvent, writer.uint32(10).fork()).join();\n }\n if (message.messageId !== \"\") {\n writer.uint32(18).string(message.messageId);\n }\n if (message.delta !== \"\") {\n writer.uint32(26).string(message.delta);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): TextMessageContentEvent {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseTextMessageContentEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.baseEvent = BaseEvent.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.messageId = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.delta = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<TextMessageContentEvent>, I>>(base?: I): TextMessageContentEvent {\n return TextMessageContentEvent.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<TextMessageContentEvent>, I>>(object: I): TextMessageContentEvent {\n const message = createBaseTextMessageContentEvent();\n message.baseEvent = (object.baseEvent !== undefined && object.baseEvent !== null)\n ? BaseEvent.fromPartial(object.baseEvent)\n : undefined;\n message.messageId = object.messageId ?? \"\";\n message.delta = object.delta ?? \"\";\n return message;\n },\n};\n\nfunction createBaseTextMessageEndEvent(): TextMessageEndEvent {\n return { baseEvent: undefined, messageId: \"\" };\n}\n\nexport const TextMessageEndEvent: MessageFns<TextMessageEndEvent> = {\n encode(message: TextMessageEndEvent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.baseEvent !== undefined) {\n BaseEvent.encode(message.baseEvent, writer.uint32(10).fork()).join();\n }\n if (message.messageId !== \"\") {\n writer.uint32(18).string(message.messageId);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): TextMessageEndEvent {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseTextMessageEndEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.baseEvent = BaseEvent.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.messageId = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<TextMessageEndEvent>, I>>(base?: I): TextMessageEndEvent {\n return TextMessageEndEvent.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<TextMessageEndEvent>, I>>(object: I): TextMessageEndEvent {\n const message = createBaseTextMessageEndEvent();\n message.baseEvent = (object.baseEvent !== undefined && object.baseEvent !== null)\n ? BaseEvent.fromPartial(object.baseEvent)\n : undefined;\n message.messageId = object.messageId ?? \"\";\n return message;\n },\n};\n\nfunction createBaseToolCallStartEvent(): ToolCallStartEvent {\n return { baseEvent: undefined, toolCallId: \"\", toolCallName: \"\", parentMessageId: undefined };\n}\n\nexport const ToolCallStartEvent: MessageFns<ToolCallStartEvent> = {\n encode(message: ToolCallStartEvent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.baseEvent !== undefined) {\n BaseEvent.encode(message.baseEvent, writer.uint32(10).fork()).join();\n }\n if (message.toolCallId !== \"\") {\n writer.uint32(18).string(message.toolCallId);\n }\n if (message.toolCallName !== \"\") {\n writer.uint32(26).string(message.toolCallName);\n }\n if (message.parentMessageId !== undefined) {\n writer.uint32(34).string(message.parentMessageId);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): ToolCallStartEvent {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseToolCallStartEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.baseEvent = BaseEvent.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.toolCallId = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.toolCallName = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.parentMessageId = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<ToolCallStartEvent>, I>>(base?: I): ToolCallStartEvent {\n return ToolCallStartEvent.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<ToolCallStartEvent>, I>>(object: I): ToolCallStartEvent {\n const message = createBaseToolCallStartEvent();\n message.baseEvent = (object.baseEvent !== undefined && object.baseEvent !== null)\n ? BaseEvent.fromPartial(object.baseEvent)\n : undefined;\n message.toolCallId = object.toolCallId ?? \"\";\n message.toolCallName = object.toolCallName ?? \"\";\n message.parentMessageId = object.parentMessageId ?? undefined;\n return message;\n },\n};\n\nfunction createBaseToolCallArgsEvent(): ToolCallArgsEvent {\n return { baseEvent: undefined, toolCallId: \"\", delta: \"\" };\n}\n\nexport const ToolCallArgsEvent: MessageFns<ToolCallArgsEvent> = {\n encode(message: ToolCallArgsEvent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.baseEvent !== undefined) {\n BaseEvent.encode(message.baseEvent, writer.uint32(10).fork()).join();\n }\n if (message.toolCallId !== \"\") {\n writer.uint32(18).string(message.toolCallId);\n }\n if (message.delta !== \"\") {\n writer.uint32(26).string(message.delta);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): ToolCallArgsEvent {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseToolCallArgsEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.baseEvent = BaseEvent.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.toolCallId = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.delta = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<ToolCallArgsEvent>, I>>(base?: I): ToolCallArgsEvent {\n return ToolCallArgsEvent.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<ToolCallArgsEvent>, I>>(object: I): ToolCallArgsEvent {\n const message = createBaseToolCallArgsEvent();\n message.baseEvent = (object.baseEvent !== undefined && object.baseEvent !== null)\n ? BaseEvent.fromPartial(object.baseEvent)\n : undefined;\n message.toolCallId = object.toolCallId ?? \"\";\n message.delta = object.delta ?? \"\";\n return message;\n },\n};\n\nfunction createBaseToolCallEndEvent(): ToolCallEndEvent {\n return { baseEvent: undefined, toolCallId: \"\" };\n}\n\nexport const ToolCallEndEvent: MessageFns<ToolCallEndEvent> = {\n encode(message: ToolCallEndEvent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.baseEvent !== undefined) {\n BaseEvent.encode(message.baseEvent, writer.uint32(10).fork()).join();\n }\n if (message.toolCallId !== \"\") {\n writer.uint32(18).string(message.toolCallId);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): ToolCallEndEvent {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseToolCallEndEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.baseEvent = BaseEvent.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.toolCallId = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<ToolCallEndEvent>, I>>(base?: I): ToolCallEndEvent {\n return ToolCallEndEvent.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<ToolCallEndEvent>, I>>(object: I): ToolCallEndEvent {\n const message = createBaseToolCallEndEvent();\n message.baseEvent = (object.baseEvent !== undefined && object.baseEvent !== null)\n ? BaseEvent.fromPartial(object.baseEvent)\n : undefined;\n message.toolCallId = object.toolCallId ?? \"\";\n return message;\n },\n};\n\nfunction createBaseStateSnapshotEvent(): StateSnapshotEvent {\n return { baseEvent: undefined, snapshot: undefined };\n}\n\nexport const StateSnapshotEvent: MessageFns<StateSnapshotEvent> = {\n encode(message: StateSnapshotEvent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.baseEvent !== undefined) {\n BaseEvent.encode(message.baseEvent, writer.uint32(10).fork()).join();\n }\n if (message.snapshot !== undefined) {\n Value.encode(Value.wrap(message.snapshot), writer.uint32(18).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): StateSnapshotEvent {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseStateSnapshotEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.baseEvent = BaseEvent.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.snapshot = Value.unwrap(Value.decode(reader, reader.uint32()));\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<StateSnapshotEvent>, I>>(base?: I): StateSnapshotEvent {\n return StateSnapshotEvent.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<StateSnapshotEvent>, I>>(object: I): StateSnapshotEvent {\n const message = createBaseStateSnapshotEvent();\n message.baseEvent = (object.baseEvent !== undefined && object.baseEvent !== null)\n ? BaseEvent.fromPartial(object.baseEvent)\n : undefined;\n message.snapshot = object.snapshot ?? undefined;\n return message;\n },\n};\n\nfunction createBaseStateDeltaEvent(): StateDeltaEvent {\n return { baseEvent: undefined, delta: [] };\n}\n\nexport const StateDeltaEvent: MessageFns<StateDeltaEvent> = {\n encode(message: StateDeltaEvent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.baseEvent !== undefined) {\n BaseEvent.encode(message.baseEvent, writer.uint32(10).fork()).join();\n }\n for (const v of message.delta) {\n JsonPatchOperation.encode(v!, writer.uint32(18).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): StateDeltaEvent {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseStateDeltaEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.baseEvent = BaseEvent.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.delta.push(JsonPatchOperation.decode(reader, reader.uint32()));\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<StateDeltaEvent>, I>>(base?: I): StateDeltaEvent {\n return StateDeltaEvent.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<StateDeltaEvent>, I>>(object: I): StateDeltaEvent {\n const message = createBaseStateDeltaEvent();\n message.baseEvent = (object.baseEvent !== undefined && object.baseEvent !== null)\n ? BaseEvent.fromPartial(object.baseEvent)\n : undefined;\n message.delta = object.delta?.map((e) => JsonPatchOperation.fromPartial(e)) || [];\n return message;\n },\n};\n\nfunction createBaseMessagesSnapshotEvent(): MessagesSnapshotEvent {\n return { baseEvent: undefined, messages: [] };\n}\n\nexport const MessagesSnapshotEvent: MessageFns<MessagesSnapshotEvent> = {\n encode(message: MessagesSnapshotEvent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.baseEvent !== undefined) {\n BaseEvent.encode(message.baseEvent, writer.uint32(10).fork()).join();\n }\n for (const v of message.messages) {\n Message.encode(v!, writer.uint32(18).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MessagesSnapshotEvent {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMessagesSnapshotEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.baseEvent = BaseEvent.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.messages.push(Message.decode(reader, reader.uint32()));\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<MessagesSnapshotEvent>, I>>(base?: I): MessagesSnapshotEvent {\n return MessagesSnapshotEvent.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<MessagesSnapshotEvent>, I>>(object: I): MessagesSnapshotEvent {\n const message = createBaseMessagesSnapshotEvent();\n message.baseEvent = (object.baseEvent !== undefined && object.baseEvent !== null)\n ? BaseEvent.fromPartial(object.baseEvent)\n : undefined;\n message.messages = object.messages?.map((e) => Message.fromPartial(e)) || [];\n return message;\n },\n};\n\nfunction createBaseRawEvent(): RawEvent {\n return { baseEvent: undefined, event: undefined, source: undefined };\n}\n\nexport const RawEvent: MessageFns<RawEvent> = {\n encode(message: RawEvent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.baseEvent !== undefined) {\n BaseEvent.encode(message.baseEvent, writer.uint32(10).fork()).join();\n }\n if (message.event !== undefined) {\n Value.encode(Value.wrap(message.event), writer.uint32(18).fork()).join();\n }\n if (message.source !== undefined) {\n writer.uint32(26).string(message.source);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): RawEvent {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseRawEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.baseEvent = BaseEvent.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.event = Value.unwrap(Value.decode(reader, reader.uint32()));\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.source = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<RawEvent>, I>>(base?: I): RawEvent {\n return RawEvent.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<RawEvent>, I>>(object: I): RawEvent {\n const message = createBaseRawEvent();\n message.baseEvent = (object.baseEvent !== undefined && object.baseEvent !== null)\n ? BaseEvent.fromPartial(object.baseEvent)\n : undefined;\n message.event = object.event ?? undefined;\n message.source = object.source ?? undefined;\n return message;\n },\n};\n\nfunction createBaseCustomEvent(): CustomEvent {\n return { baseEvent: undefined, name: \"\", value: undefined };\n}\n\nexport const CustomEvent: MessageFns<CustomEvent> = {\n encode(message: CustomEvent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.baseEvent !== undefined) {\n BaseEvent.encode(message.baseEvent, writer.uint32(10).fork()).join();\n }\n if (message.name !== \"\") {\n writer.uint32(18).string(message.name);\n }\n if (message.value !== undefined) {\n Value.encode(Value.wrap(message.value), writer.uint32(26).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): CustomEvent {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseCustomEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.baseEvent = BaseEvent.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.name = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.value = Value.unwrap(Value.decode(reader, reader.uint32()));\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<CustomEvent>, I>>(base?: I): CustomEvent {\n return CustomEvent.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<CustomEvent>, I>>(object: I): CustomEvent {\n const message = createBaseCustomEvent();\n message.baseEvent = (object.baseEvent !== undefined && object.baseEvent !== null)\n ? BaseEvent.fromPartial(object.baseEvent)\n : undefined;\n message.name = object.name ?? \"\";\n message.value = object.value ?? undefined;\n return message;\n },\n};\n\nfunction createBaseRunStartedEvent(): RunStartedEvent {\n return { baseEvent: undefined, threadId: \"\", runId: \"\" };\n}\n\nexport const RunStartedEvent: MessageFns<RunStartedEvent> = {\n encode(message: RunStartedEvent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.baseEvent !== undefined) {\n BaseEvent.encode(message.baseEvent, writer.uint32(10).fork()).join();\n }\n if (message.threadId !== \"\") {\n writer.uint32(18).string(message.threadId);\n }\n if (message.runId !== \"\") {\n writer.uint32(26).string(message.runId);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): RunStartedEvent {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseRunStartedEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.baseEvent = BaseEvent.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.threadId = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.runId = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<RunStartedEvent>, I>>(base?: I): RunStartedEvent {\n return RunStartedEvent.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<RunStartedEvent>, I>>(object: I): RunStartedEvent {\n const message = createBaseRunStartedEvent();\n message.baseEvent = (object.baseEvent !== undefined && object.baseEvent !== null)\n ? BaseEvent.fromPartial(object.baseEvent)\n : undefined;\n message.threadId = object.threadId ?? \"\";\n message.runId = object.runId ?? \"\";\n return message;\n },\n};\n\nfunction createBaseRunFinishedEvent(): RunFinishedEvent {\n return { baseEvent: undefined, threadId: \"\", runId: \"\", result: undefined };\n}\n\nexport const RunFinishedEvent: MessageFns<RunFinishedEvent> = {\n encode(message: RunFinishedEvent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.baseEvent !== undefined) {\n BaseEvent.encode(message.baseEvent, writer.uint32(10).fork()).join();\n }\n if (message.threadId !== \"\") {\n writer.uint32(18).string(message.threadId);\n }\n if (message.runId !== \"\") {\n writer.uint32(26).string(message.runId);\n }\n if (message.result !== undefined) {\n Value.encode(Value.wrap(message.result), writer.uint32(34).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): RunFinishedEvent {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseRunFinishedEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.baseEvent = BaseEvent.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.threadId = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.runId = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.result = Value.unwrap(Value.decode(reader, reader.uint32()));\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<RunFinishedEvent>, I>>(base?: I): RunFinishedEvent {\n return RunFinishedEvent.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<RunFinishedEvent>, I>>(object: I): RunFinishedEvent {\n const message = createBaseRunFinishedEvent();\n message.baseEvent = (object.baseEvent !== undefined && object.baseEvent !== null)\n ? BaseEvent.fromPartial(object.baseEvent)\n : undefined;\n message.threadId = object.threadId ?? \"\";\n message.runId = object.runId ?? \"\";\n message.result = object.result ?? undefined;\n return message;\n },\n};\n\nfunction createBaseRunErrorEvent(): RunErrorEvent {\n return { baseEvent: undefined, code: undefined, message: \"\" };\n}\n\nexport const RunErrorEvent: MessageFns<RunErrorEvent> = {\n encode(message: RunErrorEvent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.baseEvent !== undefined) {\n BaseEvent.encode(message.baseEvent, writer.uint32(10).fork()).join();\n }\n if (message.code !== undefined) {\n writer.uint32(18).string(message.code);\n }\n if (message.message !== \"\") {\n writer.uint32(26).string(message.message);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): RunErrorEvent {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseRunErrorEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.baseEvent = BaseEvent.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.code = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.message = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<RunErrorEvent>, I>>(base?: I): RunErrorEvent {\n return RunErrorEvent.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<RunErrorEvent>, I>>(object: I): RunErrorEvent {\n const message = createBaseRunErrorEvent();\n message.baseEvent = (object.baseEvent !== undefined && object.baseEvent !== null)\n ? BaseEvent.fromPartial(object.baseEvent)\n : undefined;\n message.code = object.code ?? undefined;\n message.message = object.message ?? \"\";\n return message;\n },\n};\n\nfunction createBaseStepStartedEvent(): StepStartedEvent {\n return { baseEvent: undefined, stepName: \"\" };\n}\n\nexport const StepStartedEvent: MessageFns<StepStartedEvent> = {\n encode(message: StepStartedEvent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.baseEvent !== undefined) {\n BaseEvent.encode(message.baseEvent, writer.uint32(10).fork()).join();\n }\n if (message.stepName !== \"\") {\n writer.uint32(18).string(message.stepName);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): StepStartedEvent {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseStepStartedEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.baseEvent = BaseEvent.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.stepName = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<StepStartedEvent>, I>>(base?: I): StepStartedEvent {\n return StepStartedEvent.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<StepStartedEvent>, I>>(object: I): StepStartedEvent {\n const message = createBaseStepStartedEvent();\n message.baseEvent = (object.baseEvent !== undefined && object.baseEvent !== null)\n ? BaseEvent.fromPartial(object.baseEvent)\n : undefined;\n message.stepName = object.stepName ?? \"\";\n return message;\n },\n};\n\nfunction createBaseStepFinishedEvent(): StepFinishedEvent {\n return { baseEvent: undefined, stepName: \"\" };\n}\n\nexport const StepFinishedEvent: MessageFns<StepFinishedEvent> = {\n encode(message: StepFinishedEvent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.baseEvent !== undefined) {\n BaseEvent.encode(message.baseEvent, writer.uint32(10).fork()).join();\n }\n if (message.stepName !== \"\") {\n writer.uint32(18).string(message.stepName);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): StepFinishedEvent {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseStepFinishedEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.baseEvent = BaseEvent.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.stepName = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<StepFinishedEvent>, I>>(base?: I): StepFinishedEvent {\n return StepFinishedEvent.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<StepFinishedEvent>, I>>(object: I): StepFinishedEvent {\n const message = createBaseStepFinishedEvent();\n message.baseEvent = (object.baseEvent !== undefined && object.baseEvent !== null)\n ? BaseEvent.fromPartial(object.baseEvent)\n : undefined;\n message.stepName = object.stepName ?? \"\";\n return message;\n },\n};\n\nfunction createBaseTextMessageChunkEvent(): TextMessageChunkEvent {\n return { baseEvent: undefined, messageId: undefined, role: undefined, delta: undefined, name: undefined };\n}\n\nexport const TextMessageChunkEvent: MessageFns<TextMessageChunkEvent> = {\n encode(message: TextMessageChunkEvent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.baseEvent !== undefined) {\n BaseEvent.encode(message.baseEvent, writer.uint32(10).fork()).join();\n }\n if (message.messageId !== undefined) {\n writer.uint32(18).string(message.messageId);\n }\n if (message.role !== undefined) {\n writer.uint32(26).string(message.role);\n }\n if (message.delta !== undefined) {\n writer.uint32(34).string(message.delta);\n }\n if (message.name !== undefined) {\n writer.uint32(42).string(message.name);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): TextMessageChunkEvent {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseTextMessageChunkEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.baseEvent = BaseEvent.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.messageId = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.role = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.delta = reader.string();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.name = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<TextMessageChunkEvent>, I>>(base?: I): TextMessageChunkEvent {\n return TextMessageChunkEvent.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<TextMessageChunkEvent>, I>>(object: I): TextMessageChunkEvent {\n const message = createBaseTextMessageChunkEvent();\n message.baseEvent = (object.baseEvent !== undefined && object.baseEvent !== null)\n ? BaseEvent.fromPartial(object.baseEvent)\n : undefined;\n message.messageId = object.messageId ?? undefined;\n message.role = object.role ?? undefined;\n message.delta = object.delta ?? undefined;\n message.name = object.name ?? undefined;\n return message;\n },\n};\n\nfunction createBaseToolCallChunkEvent(): ToolCallChunkEvent {\n return {\n baseEvent: undefined,\n toolCallId: undefined,\n toolCallName: undefined,\n parentMessageId: undefined,\n delta: undefined,\n };\n}\n\nexport const ToolCallChunkEvent: MessageFns<ToolCallChunkEvent> = {\n encode(message: ToolCallChunkEvent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.baseEvent !== undefined) {\n BaseEvent.encode(message.baseEvent, writer.uint32(10).fork()).join();\n }\n if (message.toolCallId !== undefined) {\n writer.uint32(18).string(message.toolCallId);\n }\n if (message.toolCallName !== undefined) {\n writer.uint32(26).string(message.toolCallName);\n }\n if (message.parentMessageId !== undefined) {\n writer.uint32(34).string(message.parentMessageId);\n }\n if (message.delta !== undefined) {\n writer.uint32(42).string(message.delta);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): ToolCallChunkEvent {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseToolCallChunkEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.baseEvent = BaseEvent.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.toolCallId = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.toolCallName = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.parentMessageId = reader.string();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.delta = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<ToolCallChunkEvent>, I>>(base?: I): ToolCallChunkEvent {\n return ToolCallChunkEvent.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<ToolCallChunkEvent>, I>>(object: I): ToolCallChunkEvent {\n const message = createBaseToolCallChunkEvent();\n message.baseEvent = (object.baseEvent !== undefined && object.baseEvent !== null)\n ? BaseEvent.fromPartial(object.baseEvent)\n : undefined;\n message.toolCallId = object.toolCallId ?? undefined;\n message.toolCallName = object.toolCallName ?? undefined;\n message.parentMessageId = object.parentMessageId ?? undefined;\n message.delta = object.delta ?? undefined;\n return message;\n },\n};\n\nfunction createBaseEvent(): Event {\n return {\n textMessageStart: undefined,\n textMessageContent: undefined,\n textMessageEnd: undefined,\n toolCallStart: undefined,\n toolCallArgs: undefined,\n toolCallEnd: undefined,\n stateSnapshot: undefined,\n stateDelta: undefined,\n messagesSnapshot: undefined,\n raw: undefined,\n custom: undefined,\n runStarted: undefined,\n runFinished: undefined,\n runError: undefined,\n stepStarted: undefined,\n stepFinished: undefined,\n textMessageChunk: undefined,\n toolCallChunk: undefined,\n };\n}\n\nexport const Event: MessageFns<Event> = {\n encode(message: Event, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.textMessageStart !== undefined) {\n TextMessageStartEvent.encode(message.textMessageStart, writer.uint32(10).fork()).join();\n }\n if (message.textMessageContent !== undefined) {\n TextMessageContentEvent.encode(message.textMessageContent, writer.uint32(18).fork()).join();\n }\n if (message.textMessageEnd !== undefined) {\n TextMessageEndEvent.encode(message.textMessageEnd, writer.uint32(26).fork()).join();\n }\n if (message.toolCallStart !== undefined) {\n ToolCallStartEvent.encode(message.toolCallStart, writer.uint32(34).fork()).join();\n }\n if (message.toolCallArgs !== undefined) {\n ToolCallArgsEvent.encode(message.toolCallArgs, writer.uint32(42).fork()).join();\n }\n if (message.toolCallEnd !== undefined) {\n ToolCallEndEvent.encode(message.toolCallEnd, writer.uint32(50).fork()).join();\n }\n if (message.stateSnapshot !== undefined) {\n StateSnapshotEvent.encode(message.stateSnapshot, writer.uint32(58).fork()).join();\n }\n if (message.stateDelta !== undefined) {\n StateDeltaEvent.encode(message.stateDelta, writer.uint32(66).fork()).join();\n }\n if (message.messagesSnapshot !== undefined) {\n MessagesSnapshotEvent.encode(message.messagesSnapshot, writer.uint32(74).fork()).join();\n }\n if (message.raw !== undefined) {\n RawEvent.encode(message.raw, writer.uint32(82).fork()).join();\n }\n if (message.custom !== undefined) {\n CustomEvent.encode(message.custom, writer.uint32(90).fork()).join();\n }\n if (message.runStarted !== undefined) {\n RunStartedEvent.encode(message.runStarted, writer.uint32(98).fork()).join();\n }\n if (message.runFinished !== undefined) {\n RunFinishedEvent.encode(message.runFinished, writer.uint32(106).fork()).join();\n }\n if (message.runError !== undefined) {\n RunErrorEvent.encode(message.runError, writer.uint32(114).fork()).join();\n }\n if (message.stepStarted !== undefined) {\n StepStartedEvent.encode(message.stepStarted, writer.uint32(122).fork()).join();\n }\n if (message.stepFinished !== undefined) {\n StepFinishedEvent.encode(message.stepFinished, writer.uint32(130).fork()).join();\n }\n if (message.textMessageChunk !== undefined) {\n TextMessageChunkEvent.encode(message.textMessageChunk, writer.uint32(138).fork()).join();\n }\n if (message.toolCallChunk !== undefined) {\n ToolCallChunkEvent.encode(message.toolCallChunk, writer.uint32(146).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): Event {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.textMessageStart = TextMessageStartEvent.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.textMessageContent = TextMessageContentEvent.decode(reader, reader.uint32());\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.textMessageEnd = TextMessageEndEvent.decode(reader, reader.uint32());\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.toolCallStart = ToolCallStartEvent.decode(reader, reader.uint32());\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.toolCallArgs = ToolCallArgsEvent.decode(reader, reader.uint32());\n continue;\n }\n case 6: {\n if (tag !== 50) {\n break;\n }\n\n message.toolCallEnd = ToolCallEndEvent.decode(reader, reader.uint32());\n continue;\n }\n case 7: {\n if (tag !== 58) {\n break;\n }\n\n message.stateSnapshot = StateSnapshotEvent.decode(reader, reader.uint32());\n continue;\n }\n case 8: {\n if (tag !== 66) {\n break;\n }\n\n message.stateDelta = StateDeltaEvent.decode(reader, reader.uint32());\n continue;\n }\n case 9: {\n if (tag !== 74) {\n break;\n }\n\n message.messagesSnapshot = MessagesSnapshotEvent.decode(reader, reader.uint32());\n continue;\n }\n case 10: {\n if (tag !== 82) {\n break;\n }\n\n message.raw = RawEvent.decode(reader, reader.uint32());\n continue;\n }\n case 11: {\n if (tag !== 90) {\n break;\n }\n\n message.custom = CustomEvent.decode(reader, reader.uint32());\n continue;\n }\n case 12: {\n if (tag !== 98) {\n break;\n }\n\n message.runStarted = RunStartedEvent.decode(reader, reader.uint32());\n continue;\n }\n case 13: {\n if (tag !== 106) {\n break;\n }\n\n message.runFinished = RunFinishedEvent.decode(reader, reader.uint32());\n continue;\n }\n case 14: {\n if (tag !== 114) {\n break;\n }\n\n message.runError = RunErrorEvent.decode(reader, reader.uint32());\n continue;\n }\n case 15: {\n if (tag !== 122) {\n break;\n }\n\n message.stepStarted = StepStartedEvent.decode(reader, reader.uint32());\n continue;\n }\n case 16: {\n if (tag !== 130) {\n break;\n }\n\n message.stepFinished = StepFinishedEvent.decode(reader, reader.uint32());\n continue;\n }\n case 17: {\n if (tag !== 138) {\n break;\n }\n\n message.textMessageChunk = TextMessageChunkEvent.decode(reader, reader.uint32());\n continue;\n }\n case 18: {\n if (tag !== 146) {\n break;\n }\n\n message.toolCallChunk = ToolCallChunkEvent.decode(reader, reader.uint32());\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n create<I extends Exact<DeepPartial<Event>, I>>(base?: I): Event {\n return Event.fromPartial(base ?? ({} as any));\n },\n fromPartial<I extends Exact<DeepPartial<Event>, I>>(object: I): Event {\n const message = createBaseEvent();\n message.textMessageStart = (object.textMessageStart !== undefined && object.textMessageStart !== null)\n ? TextMessageStartEvent.fromPartial(object.textMessageStart)\n : undefined;\n message.textMessageContent = (object.textMessageContent !== undefined && object.textMessageContent !== null)\n ? TextMessageContentEvent.fromPartial(object.textMessageContent)\n : undefined;\n message.textMessageEnd = (object.textMessageEnd !== undefined && object.textMessageEnd !== null)\n ? TextMessageEndEvent.fromPartial(object.textMessageEnd)\n : undefined;\n message.toolCallStart = (object.toolCallStart !== undefined && object.toolCallStart !== null)\n ? ToolCallStartEvent.fromPartial(object.toolCallStart)\n : undefined;\n message.toolCallArgs = (object.toolCallArgs !== undefined && object.toolCallArgs !== null)\n ? ToolCallArgsEvent.fromPartial(object.toolCallArgs)\n : undefined;\n message.toolCallEnd = (object.toolCallEnd !== undefined && object.toolCallEnd !== null)\n ? ToolCallEndEvent.fromPartial(object.toolCallEnd)\n : undefined;\n message.stateSnapshot = (object.stateSnapshot !== undefined && object.stateSnapshot !== null)\n ? StateSnapshotEvent.fromPartial(object.stateSnapshot)\n : undefined;\n message.stateDelta = (object.stateDelta !== undefined && object.stateDelta !== null)\n ? StateDeltaEvent.fromPartial(object.stateDelta)\n : undefined;\n message.messagesSnapshot = (object.messagesSnapshot !== undefined && object.messagesSnapshot !== null)\n ? MessagesSnapshotEvent.fromPartial(object.messagesSnapshot)\n : undefined;\n message.raw = (object.raw !== undefined && object.raw !== null) ? RawEvent.fromPartial(object.raw) : undefined;\n message.custom = (object.custom !== undefined && object.custom !== null)\n ? CustomEvent.fromPartial(object.custom)\n : undefined;\n message.runStarted = (object.runStarted !== undefined && object.runStarted !== null)\n ? RunStartedEvent.fromPartial(object.runStarted)\n : undefined;\n message.runFinished = (object.runFinished !== undefined && object.runFinished !== null)\n ? RunFinishedEvent.fromPartial(object.runFinished)\n : undefined;\n message.runError = (object.runError !== undefined && object.runError !== null)\n ? RunErrorEvent.fromPartial(object.runError)\n : undefined;\n message.stepStarted = (object.stepStarted !== undefined && object.stepStarted !== null)\n ? StepStartedEvent.fromPartial(object.stepStarted)\n : undefined;\n message.stepFinished = (object.stepFinished !== undefined && object.stepFinished !== null)\n ? StepFinishedEvent.fromPartial(object.stepFinished)\n : undefined;\n message.textMessageChunk = (object.textMessageChunk !== undefined && object.textMessageChunk !== null)\n ? TextMessageChunkEvent.fromPartial(object.textMessageChunk)\n : undefined;\n message.toolCallChunk = (object.toolCallChunk !== undefined && object.toolCallChunk !== null)\n ? ToolCallChunkEvent.fromPartial(object.toolCallChunk)\n : undefined;\n return message;\n },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\ntype KeysOfUnion<T> = T extends T ? keyof T : never;\nexport type Exact<P, I extends P> = P extends Builtin ? P\n : P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };\n\nfunction longToNumber(int64: { toString(): string }): number {\n const num = globalThis.Number(int64.toString());\n if (num > globalThis.Number.MAX_SAFE_INTEGER) {\n throw new globalThis.Error(\"Value is larger than Number.MAX_SAFE_INTEGER\");\n }\n if (num < globalThis.Number.MIN_SAFE_INTEGER) {\n throw new globalThis.Error(\"Value is smaller than Number.MIN_SAFE_INTEGER\");\n }\n return num;\n}\n\nexport interface MessageFns<T> {\n encode(message: T, writer?: BinaryWriter): BinaryWriter;\n decode(input: BinaryReader | Uint8Array, length?: number): T;\n create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;\n fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;\n}\n", "import { BaseEvent, AGUIEvent, EventSchemas, EventType, Message } from \"@ag-ui/core\";\nimport * as protoEvents from \"./generated/events\";\nimport * as protoPatch from \"./generated/patch\";\n\nconst toProtoSource = (source: any): any => {\n if (!source || typeof source !== \"object\") {\n return undefined;\n }\n\n if (source.type === \"data\") {\n return {\n data: {\n value: source.value,\n mimeType: source.mimeType,\n },\n };\n }\n\n if (source.type === \"url\") {\n return {\n url: {\n value: source.value,\n mimeType: source.mimeType,\n },\n };\n }\n\n return undefined;\n};\n\nconst toProtoContentPart = (part: any): any => {\n if (!part || typeof part !== \"object\") {\n return undefined;\n }\n\n switch (part.type) {\n case \"text\":\n return {\n text: {\n text: part.text,\n },\n };\n case \"image\":\n return {\n image: {\n source: toProtoSource(part.source),\n metadata: part.metadata,\n },\n };\n case \"audio\":\n return {\n audio: {\n source: toProtoSource(part.source),\n metadata: part.metadata,\n },\n };\n case \"video\":\n return {\n video: {\n source: toProtoSource(part.source),\n metadata: part.metadata,\n },\n };\n case \"document\":\n return {\n document: {\n source: toProtoSource(part.source),\n metadata: part.metadata,\n },\n };\n case \"binary\": {\n const source = part.data\n ? { data: { value: part.data, mimeType: part.mimeType } }\n : part.url\n ? { url: { value: part.url, mimeType: part.mimeType } }\n : part.id\n ? { url: { value: part.id, mimeType: part.mimeType } }\n : undefined;\n\n if (!source) {\n return undefined;\n }\n\n return {\n document: {\n source,\n metadata: {\n legacyBinary: true,\n filename: part.filename,\n id: part.id,\n },\n },\n };\n }\n default:\n return undefined;\n }\n};\n\nconst fromProtoSource = (source: any): any => {\n if (!source || typeof source !== \"object\") {\n return undefined;\n }\n\n if (source.data) {\n return {\n type: \"data\",\n value: source.data.value,\n mimeType: source.data.mimeType,\n };\n }\n\n if (source.url) {\n return {\n type: \"url\",\n value: source.url.value,\n mimeType: source.url.mimeType,\n };\n }\n\n return undefined;\n};\n\nconst fromProtoContentPart = (part: any): any => {\n if (!part || typeof part !== \"object\") {\n return undefined;\n }\n\n if (part.text) {\n return {\n type: \"text\",\n text: part.text.text,\n };\n }\n\n if (part.image) {\n return {\n type: \"image\",\n source: fromProtoSource(part.image.source),\n metadata: part.image.metadata,\n };\n }\n\n if (part.audio) {\n return {\n type: \"audio\",\n source: fromProtoSource(part.audio.source),\n metadata: part.audio.metadata,\n };\n }\n\n if (part.video) {\n return {\n type: \"video\",\n source: fromProtoSource(part.video.source),\n metadata: part.video.metadata,\n };\n }\n\n if (part.document) {\n return {\n type: \"document\",\n source: fromProtoSource(part.document.source),\n metadata: part.document.metadata,\n };\n }\n\n return undefined;\n};\n\nfunction toCamelCase(str: string): string {\n return str.toLowerCase().replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n}\n\n/**\n * Encodes an event message to a protocol buffer binary format.\n */\nexport function encode(event: BaseEvent): Uint8Array {\n /**\n * In previous versions of AG-UI, we didn't really validate the events\n * against a schema. With stronger types for events and Zod schemas, we\n * can now validate.\n *\n * However, I don't want to break compatibility with existing clients\n * even if they are encoding invalid events. This surfaces a warning\n * to them in those situations.\n *\n * @author mikeryandev\n */\n let validatedEvent: AGUIEvent | BaseEvent;\n try {\n validatedEvent = EventSchemas.parse(event) as AGUIEvent;\n } catch (err) {\n console.warn(\n \"[ag-ui][proto.encode] Malformed devent detected, falling back to unvalidated event\",\n err,\n event,\n );\n validatedEvent = event;\n }\n const oneofField = toCamelCase(validatedEvent.type);\n const { type, timestamp, rawEvent, ...rest } = validatedEvent as AGUIEvent as Record<string, any>;\n\n // since protobuf does not support optional arrays, we need to ensure that the toolCalls array is always present\n if (type === EventType.MESSAGES_SNAPSHOT && Array.isArray(rest.messages)) {\n rest.messages = (rest.messages as Message[]).map((message) => {\n const untypedMessage = message as any;\n const normalizedMessage: any = { ...untypedMessage, contentParts: [] };\n\n if (Array.isArray(untypedMessage.content)) {\n const contentParts = untypedMessage.content\n .map((part: any) => toProtoContentPart(part))\n .filter((part: any) => part !== undefined);\n\n normalizedMessage.contentParts = contentParts;\n normalizedMessage.content = undefined;\n }\n\n if (untypedMessage.toolCalls === undefined) {\n normalizedMessage.toolCalls = [];\n }\n\n return normalizedMessage;\n });\n }\n\n // custom mapping for json patch operations\n if (type === EventType.STATE_DELTA && Array.isArray(rest.delta)) {\n rest.delta = (rest.delta as any[]).map((operation: any) => ({\n ...operation,\n op: protoPatch.JsonPatchOperationType[operation.op.toUpperCase()],\n }));\n }\n\n const eventMessage = {\n [oneofField]: {\n baseEvent: {\n type: protoEvents.EventType[event.type as keyof typeof protoEvents.EventType],\n timestamp,\n rawEvent,\n },\n ...rest,\n },\n };\n return protoEvents.Event.encode(eventMessage).finish();\n}\n\n/**\n * Decodes a protocol buffer binary format to an event message.\n * The format includes a 4-byte length prefix followed by the message.\n */\nexport function decode(data: Uint8Array): BaseEvent {\n const event = protoEvents.Event.decode(data);\n const decoded = Object.values(event).find((value) => value !== undefined);\n if (!decoded) {\n throw new Error(\"Invalid event\");\n }\n decoded.type = protoEvents.EventType[decoded.baseEvent.type];\n decoded.timestamp = decoded.baseEvent.timestamp;\n decoded.rawEvent = decoded.baseEvent.rawEvent;\n\n // we want tool calls to be optional, so we need to remove them if they are empty\n if (decoded.type === EventType.MESSAGES_SNAPSHOT) {\n for (const message of (decoded as any).messages as Message[]) {\n const untypedMessage = message as any;\n\n if (untypedMessage.role === \"user\" && Array.isArray(untypedMessage.contentParts)) {\n const contentParts = untypedMessage.contentParts\n .map((part: any) => fromProtoContentPart(part))\n .filter((part: any) => part !== undefined);\n\n if (contentParts.length > 0) {\n untypedMessage.content = contentParts;\n }\n }\n\n if (Array.isArray(untypedMessage.contentParts) && untypedMessage.contentParts.length === 0) {\n untypedMessage.contentParts = undefined;\n }\n\n if (untypedMessage.toolCalls?.length === 0) {\n untypedMessage.toolCalls = undefined;\n }\n }\n }\n\n // custom mapping for json patch operations\n if (decoded.type === EventType.STATE_DELTA) {\n for (const operation of (decoded as any).delta) {\n operation.op = protoPatch.JsonPatchOperationType[operation.op].toLowerCase();\n Object.keys(operation).forEach((key) => {\n if (operation[key] === undefined) {\n delete operation[key];\n }\n });\n }\n }\n\n Object.keys(decoded).forEach((key) => {\n if (decoded[key] === undefined) {\n delete decoded[key];\n }\n });\n\n return EventSchemas.parse(decoded);\n}\n", "export { encode, decode } from \"./proto\";\n\nexport const AGUI_MEDIA_TYPE = \"application/vnd.ag-ui.event+proto\";\n", "/**\n * Allowed arithmetic operators\n */\nexport type CompareOperator = '>' | '>=' | '=' | '<' | '<=' | '!=';\n\nexport const semver =\n /^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\-]+(?:\\.[\\da-z\\-]+)*))?(?:\\+[\\da-z\\-]+(?:\\.[\\da-z\\-]+)*)?)?)?$/i;\n\nexport const validateAndParse = (version: string) => {\n if (typeof version !== 'string') {\n throw new TypeError('Invalid argument expected string');\n }\n const match = version.match(semver);\n if (!match) {\n throw new Error(\n `Invalid argument not valid semver ('${version}' received)`\n );\n }\n match.shift();\n return match;\n};\n\nconst isWildcard = (s: string) => s === '*' || s === 'x' || s === 'X';\n\nconst tryParse = (v: string) => {\n const n = parseInt(v, 10);\n return isNaN(n) ? v : n;\n};\n\nconst forceType = (a: string | number, b: string | number) =>\n typeof a !== typeof b ? [String(a), String(b)] : [a, b];\n\nconst compareStrings = (a: string, b: string) => {\n if (isWildcard(a) || isWildcard(b)) return 0;\n const [ap, bp] = forceType(tryParse(a), tryParse(b));\n if (ap > bp) return 1;\n if (ap < bp) return -1;\n return 0;\n};\n\nexport const compareSegments = (\n a: string | string[] | RegExpMatchArray,\n b: string | string[] | RegExpMatchArray\n) => {\n for (let i = 0; i < Math.max(a.length, b.length); i++) {\n const r = compareStrings(a[i] || '0', b[i] || '0');\n if (r !== 0) return r;\n }\n return 0;\n};\n", "import { compareSegments, validateAndParse } from './utils.js';\n\n/**\n * Compare [semver](https://semver.org/) version strings to find greater, equal or lesser.\n * This library supports the full semver specification, including comparing versions with different number of digits like `1.0.0`, `1.0`, `1`, and pre-release versions like `1.0.0-alpha`.\n * @param v1 - First version to compare\n * @param v2 - Second version to compare\n * @returns Numeric value compatible with the [Array.sort(fn) interface](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#Parameters).\n */\nexport const compareVersions = (v1: string, v2: string) => {\n // validate input and split into segments\n const n1 = validateAndParse(v1);\n const n2 = validateAndParse(v2);\n\n // pop off the patch\n const p1 = n1.pop();\n const p2 = n2.pop();\n\n // validate numbers\n const r = compareSegments(n1, n2);\n if (r !== 0) return r;\n\n // validate pre-release\n if (p1 && p2) {\n return compareSegments(p1.split('.'), p2.split('.'));\n } else if (p1 || p2) {\n return p1 ? -1 : 1;\n }\n\n return 0;\n};\n", "import { v4 as uuidv4 } from \"uuid\";\n\nexport const structuredClone_ = <T>(obj: T): T => {\n if (typeof structuredClone === \"function\") {\n return structuredClone(obj);\n }\n\n try {\n return JSON.parse(JSON.stringify(obj));\n } catch (err) {\n // Preserve array vs object type in shallow fallback\n if (Array.isArray(obj)) {\n return [...obj] as unknown as T;\n }\n return { ...obj } as T;\n }\n};\n\n/**\n * Generate a random UUID v4\n * Cross-platform compatible (Node.js, browsers, React Native)\n */\nexport function randomUUID(): string {\n return uuidv4();\n}\n\n// Note: semver helpers were removed in favor of using\n// the external `compare-versions` library directly at call sites.\n\n/**\n * Parses a semantic version string into its numeric components.\n * Supports incomplete versions (e.g. \"1\", \"1.2\") by defaulting missing segments to zero.\n *\n * @throws If the version string is not a valid semantic version.\n */\n// (Intentionally left minimal.)\n", "import {\n BaseEvent,\n Message,\n RunAgentInput,\n RunErrorEvent,\n RunFinishedEvent,\n RunStartedEvent,\n State,\n StateDeltaEvent,\n StateSnapshotEvent,\n StepFinishedEvent,\n StepStartedEvent,\n TextMessageContentEvent,\n TextMessageEndEvent,\n TextMessageStartEvent,\n ToolCallArgsEvent,\n ToolCallEndEvent,\n ToolCallResultEvent,\n ToolCallStartEvent,\n MessagesSnapshotEvent,\n RawEvent,\n CustomEvent,\n ToolCall,\n ActivitySnapshotEvent,\n ActivityDeltaEvent,\n ActivityMessage,\n ReasoningStartEvent,\n ReasoningMessageStartEvent,\n ReasoningMessageContentEvent,\n ReasoningMessageEndEvent,\n ReasoningEndEvent,\n ReasoningEncryptedValueEvent,\n} from \"@ag-ui/core\";\nimport { AbstractAgent } from \"./agent\";\nimport { structuredClone_ } from \"@/utils\";\n\nexport interface AgentStateMutation {\n messages?: Message[];\n state?: State;\n stopPropagation?: boolean;\n}\n\nexport interface AgentSubscriberParams {\n messages: ReadonlyArray<Readonly<Message>>;\n // NOTE: State resolves to `any` at the type level (z.infer<typeof z.any()>), so Readonly<State>\n // provides no compile-time mutation protection. Runtime enforcement via deepFreeze in\n // dev/test mode is the only guard against in-place mutation of state.\n state: Readonly<State>;\n agent: AbstractAgent;\n input: RunAgentInput;\n}\n\n// Utility type to allow callbacks to be implemented either synchronously or asynchronously.\nexport type MaybePromise<T> = T | Promise<T>;\n\nexport interface AgentSubscriber {\n // Request lifecycle\n onRunInitialized?(\n params: AgentSubscriberParams,\n ): MaybePromise<Omit<AgentStateMutation, \"stopPropagation\"> | void>;\n onRunFailed?(\n params: { error: Error } & AgentSubscriberParams,\n ): MaybePromise<Omit<AgentStateMutation, \"stopPropagation\"> | void>;\n onRunFinalized?(\n params: AgentSubscriberParams,\n ): MaybePromise<Omit<AgentStateMutation, \"stopPropagation\"> | void>;\n\n // Events\n onEvent?(\n params: { event: BaseEvent } & AgentSubscriberParams,\n ): MaybePromise<AgentStateMutation | void>;\n\n onRunStartedEvent?(\n params: { event: RunStartedEvent } & AgentSubscriberParams,\n ): MaybePromise<AgentStateMutation | void>;\n onRunFinishedEvent?(\n params: { event: RunFinishedEvent; result?: any } & AgentSubscriberParams,\n ): MaybePromise<AgentStateMutation | void>;\n onRunErrorEvent?(\n params: { event: RunErrorEvent } & AgentSubscriberParams,\n ): MaybePromise<AgentStateMutation | void>;\n\n onStepStartedEvent?(\n params: { event: StepStartedEvent } & AgentSubscriberParams,\n ): MaybePromise<AgentStateMutation | void>;\n onStepFinishedEvent?(\n params: { event: StepFinishedEvent } & AgentSubscriberParams,\n ): MaybePromise<AgentStateMutation | void>;\n\n onTextMessageStartEvent?(\n params: { event: TextMessageStartEvent } & AgentSubscriberParams,\n ): MaybePromise<AgentStateMutation | void>;\n onTextMessageContentEvent?(\n params: {\n event: TextMessageContentEvent;\n textMessageBuffer: string;\n } & AgentSubscriberParams,\n ): MaybePromise<AgentStateMutation | void>;\n onTextMessageEndEvent?(\n params: { event: TextMessageEndEvent; textMessageBuffer: string } & AgentSubscriberParams,\n ): MaybePromise<AgentStateMutation | void>;\n\n onToolCallStartEvent?(\n params: { event: ToolCallStartEvent } & AgentSubscriberParams,\n ): MaybePromise<AgentStateMutation | void>;\n onToolCallArgsEvent?(\n params: {\n event: ToolCallArgsEvent;\n toolCallBuffer: string;\n toolCallName: string;\n partialToolCallArgs: Record<string, any>;\n } & AgentSubscriberParams,\n ): MaybePromise<AgentStateMutation | void>;\n onToolCallEndEvent?(\n params: {\n event: ToolCallEndEvent;\n toolCallName: string;\n toolCallArgs: Record<string, any>;\n } & AgentSubscriberParams,\n ): MaybePromise<AgentStateMutation | void>;\n\n onToolCallResultEvent?(\n params: { event: ToolCallResultEvent } & AgentSubscriberParams,\n ): MaybePromise<AgentStateMutation | void>;\n\n onStateSnapshotEvent?(\n params: { event: StateSnapshotEvent } & AgentSubscriberParams,\n ): MaybePromise<AgentStateMutation | void>;\n\n onStateDeltaEvent?(\n params: { event: StateDeltaEvent } & AgentSubscriberParams,\n ): MaybePromise<AgentStateMutation | void>;\n\n onMessagesSnapshotEvent?(\n params: { event: MessagesSnapshotEvent } & AgentSubscriberParams,\n ): MaybePromise<AgentStateMutation | void>;\n\n onActivitySnapshotEvent?(\n params: {\n event: ActivitySnapshotEvent;\n activityMessage?: ActivityMessage;\n existingMessage?: Message;\n } & AgentSubscriberParams,\n ): MaybePromise<AgentStateMutation | void>;\n\n onActivityDeltaEvent?(\n params: {\n event: ActivityDeltaEvent;\n activityMessage?: ActivityMessage;\n } & AgentSubscriberParams,\n ): MaybePromise<AgentStateMutation | void>;\n\n onRawEvent?(\n params: { event: RawEvent } & AgentSubscriberParams,\n ): MaybePromise<AgentStateMutation | void>;\n\n onCustomEvent?(\n params: { event: CustomEvent } & AgentSubscriberParams,\n ): MaybePromise<AgentStateMutation | void>;\n\n // Reasoning events\n onReasoningStartEvent?(\n params: { event: ReasoningStartEvent } & AgentSubscriberParams,\n ): MaybePromise<AgentStateMutation | void>;\n\n onReasoningMessageStartEvent?(\n params: { event: ReasoningMessageStartEvent } & AgentSubscriberParams,\n ): MaybePromise<AgentStateMutation | void>;\n\n onReasoningMessageContentEvent?(\n params: {\n event: ReasoningMessageContentEvent;\n reasoningMessageBuffer: string;\n } & AgentSubscriberParams,\n ): MaybePromise<AgentStateMutation | void>;\n\n onReasoningMessageEndEvent?(\n params: {\n event: ReasoningMessageEndEvent;\n reasoningMessageBuffer: string;\n } & AgentSubscriberParams,\n ): MaybePromise<AgentStateMutation | void>;\n\n onReasoningEndEvent?(\n params: { event: ReasoningEndEvent } & AgentSubscriberParams,\n ): MaybePromise<AgentStateMutation | void>;\n\n onReasoningEncryptedValueEvent?(\n params: { event: ReasoningEncryptedValueEvent } & AgentSubscriberParams,\n ): MaybePromise<AgentStateMutation | void>;\n\n // State changes\n onMessagesChanged?(\n params: Omit<AgentSubscriberParams, \"input\"> & { input?: RunAgentInput },\n ): MaybePromise<void>;\n onStateChanged?(\n params: Omit<AgentSubscriberParams, \"input\"> & { input?: RunAgentInput },\n ): MaybePromise<void>;\n onNewMessage?(\n params: { message: Message } & Omit<AgentSubscriberParams, \"input\"> & {\n input?: RunAgentInput;\n },\n ): MaybePromise<void>;\n onNewToolCall?(\n params: { toolCall: ToolCall } & Omit<AgentSubscriberParams, \"input\"> & {\n input?: RunAgentInput;\n },\n ): MaybePromise<void>;\n}\n\nfunction deepFreeze<T>(obj: T): T {\n Object.freeze(obj);\n if (obj !== null && typeof obj === \"object\") {\n for (const value of Object.values(obj)) {\n if (value !== null && typeof value === \"object\" && !Object.isFrozen(value)) {\n deepFreeze(value);\n }\n }\n }\n return obj;\n}\n\nexport async function runSubscribersWithMutation(\n subscribers: AgentSubscriber[],\n initialMessages: Message[],\n initialState: State,\n executor: (\n subscriber: AgentSubscriber,\n messages: ReadonlyArray<Readonly<Message>>,\n state: Readonly<State>,\n ) => MaybePromise<AgentStateMutation | void>,\n): Promise<AgentStateMutation> {\n const hasProcess = typeof process !== \"undefined\" && typeof process.env !== \"undefined\";\n const isTestEnvironment =\n hasProcess && (process.env.NODE_ENV === \"test\" || Boolean(process.env.VITEST_WORKER_ID));\n const isDev =\n hasProcess &&\n (process.env.NODE_ENV === \"development\" ||\n process.env.NODE_ENV === \"test\" ||\n Boolean(process.env.VITEST_WORKER_ID));\n const baselineMessages = structuredClone_(initialMessages);\n const baselineState = structuredClone_(initialState);\n let messages: Message[] = baselineMessages;\n let state: State = baselineState;\n\n let stopPropagation: boolean | undefined = undefined;\n\n for (const subscriber of subscribers) {\n try {\n // Subscribers receive shared references and must not mutate them in-place.\n // Mutations should only be communicated via the return value.\n // In dev/test mode only: deep-freeze inputs so accidental in-place mutations surface\n // as TypeErrors immediately. In production, enforcement is type-level only.\n if (isDev) {\n deepFreeze(messages);\n deepFreeze(state);\n }\n const mutation = await executor(subscriber, messages, state);\n\n if (mutation === undefined) {\n // Nothing returned – keep going\n continue;\n }\n\n // Replace with a defensive copy of the subscriber's mutation,\n // but skip if the subscriber returned the same reference (no-op).\n if (mutation.messages !== undefined && mutation.messages !== messages) {\n messages = structuredClone_(mutation.messages);\n }\n\n if (mutation.state !== undefined && mutation.state !== state) {\n state = structuredClone_(mutation.state);\n }\n\n stopPropagation = mutation.stopPropagation;\n\n if (stopPropagation === true) {\n break;\n }\n } catch (error) {\n if (isDev && error instanceof TypeError) {\n // Likely a freeze violation: subscriber attempted to mutate frozen inputs in-place.\n // In test environments, re-throw so tests fail fast and the violation is visible.\n // In development (non-test), log a specific message to distinguish freeze violations\n // from ordinary subscriber errors.\n if (isTestEnvironment) {\n throw error;\n }\n console.error(\n \"AG-UI: Subscriber attempted to mutate frozen inputs in-place. \" +\n \"Return mutations via AgentStateMutation instead of mutating directly.\",\n error,\n );\n } else if (!isTestEnvironment) {\n console.error(\"Subscriber error:\", error);\n }\n // Skip this subscriber's mutation and continue\n continue;\n }\n }\n\n // In dev/test mode, the canonical messages/state references may have been\n // frozen in-place (for subscriber mutation detection). Clone them before\n // returning so callers receive a mutable copy, not a frozen one.\n return {\n ...(messages !== baselineMessages\n ? { messages: isDev && Object.isFrozen(messages) ? structuredClone_(messages) : messages }\n : {}),\n ...(state !== baselineState\n ? { state: isDev && Object.isFrozen(state) ? structuredClone_(state) : state }\n : {}),\n ...(stopPropagation !== undefined ? { stopPropagation } : {}),\n };\n}\n", "import { Message, RunAgentInput, State } from \"@ag-ui/core\";\n\n/** Normalized debug configuration for the AG-UI agent. */\nexport interface ResolvedAgentDebugConfig {\n enabled: boolean;\n events: boolean;\n lifecycle: boolean;\n verbose: boolean;\n}\n\n/** Debug input — boolean shorthand or granular config. */\nexport type AgentDebugConfig =\n | boolean\n | {\n events?: boolean;\n lifecycle?: boolean;\n verbose?: boolean;\n };\n\n/** Resolves an AgentDebugConfig into a normalized ResolvedAgentDebugConfig. */\nexport function resolveAgentDebugConfig(\n debug: AgentDebugConfig | undefined,\n): ResolvedAgentDebugConfig {\n if (!debug) return { enabled: false, events: false, lifecycle: false, verbose: false };\n if (debug === true) return { enabled: true, events: true, lifecycle: true, verbose: true };\n\n const events = debug.events ?? true;\n const lifecycle = debug.lifecycle ?? true;\n const verbose = debug.verbose ?? false;\n return { enabled: events || lifecycle, events, lifecycle, verbose };\n}\n\nexport interface AgentConfig {\n agentId?: string;\n description?: string;\n threadId?: string;\n initialMessages?: Message[];\n initialState?: State;\n debug?: AgentDebugConfig;\n}\n\nexport interface HttpAgentConfig extends AgentConfig {\n url: string;\n headers?: Record<string, string>;\n}\n\nexport type RunAgentParameters = Partial<\n Pick<RunAgentInput, \"runId\" | \"tools\" | \"context\" | \"forwardedProps\">\n>;\n", "import { ResolvedAgentDebugConfig, resolveAgentDebugConfig } from \"@/agent/types\";\n\n/** Accepted input wherever a debug logger can be provided. */\nexport type DebugLoggerInput = DebugLogger | boolean | null | undefined;\n\n/**\n * Resolves a DebugLoggerInput into a DebugLogger or undefined.\n * - `true` → creates a new DebugLogger with all logging enabled\n * - `DebugLogger` instance → returned as-is\n * - `false`, `null`, `undefined` → returns undefined\n */\nexport function resolveDebugLogger(input: DebugLoggerInput): DebugLogger | undefined {\n if (input instanceof DebugLogger) return input;\n if (input === true) return new DebugLogger(resolveAgentDebugConfig(true));\n return undefined;\n}\n\n/**\n * Centralized debug logger for the AG-UI event pipeline.\n * Handles verbose vs summary output based on config.\n */\nexport class DebugLogger {\n constructor(private config: ResolvedAgentDebugConfig) {}\n\n /**\n * Log an event-level debug message.\n * Only logs when `config.events` is enabled.\n * In verbose mode, logs the full data; otherwise logs the summary.\n */\n event(prefix: string, label: string, data: unknown, summary?: Record<string, unknown>): void {\n if (!this.config.events) return;\n if (this.config.verbose) {\n console.debug(`[${prefix}] ${label}`, typeof data === \"string\" ? data : JSON.stringify(data));\n } else {\n console.debug(`[${prefix}] ${label}`, summary ?? data);\n }\n }\n\n /**\n * Log a lifecycle-level debug message.\n * Only logs when `config.lifecycle` is enabled.\n */\n lifecycle(prefix: string, label: string, data?: Record<string, unknown>): void {\n if (!this.config.lifecycle) return;\n if (data) {\n console.debug(`[${prefix}] ${label}`, data);\n } else {\n console.debug(`[${prefix}] ${label}`);\n }\n }\n\n /** Whether event-level logging is enabled. */\n get eventsEnabled(): boolean {\n return this.config.events;\n }\n\n /** Whether lifecycle-level logging is enabled. */\n get lifecycleEnabled(): boolean {\n return this.config.lifecycle;\n }\n\n /** Whether any logging is enabled. */\n get enabled(): boolean {\n return this.config.enabled;\n }\n}\n\n/**\n * Creates a DebugLogger if debug is enabled, otherwise returns undefined.\n * This allows consumers to pass it around cheaply when debug is off.\n */\nexport function createDebugLogger(config: ResolvedAgentDebugConfig): DebugLogger | undefined {\n return config.enabled ? new DebugLogger(config) : undefined;\n}\n", "import type { AbstractAgent } from \"@/agent/agent\";\nimport {\n type AgentStateMutation,\n type AgentSubscriber,\n runSubscribersWithMutation,\n} from \"@/agent/subscriber\";\nimport {\n type ActivityDeltaEvent,\n type ActivityMessage,\n type ActivitySnapshotEvent,\n type AssistantMessage,\n type BaseEvent,\n type CustomEvent,\n DeveloperMessage,\n EventType,\n type Message,\n type MessagesSnapshotEvent,\n type RawEvent,\n type ReasoningEncryptedValueEvent,\n type ReasoningEndEvent,\n type ReasoningMessage,\n type ReasoningMessageContentEvent,\n type ReasoningMessageEndEvent,\n type ReasoningMessageStartEvent,\n type ReasoningStartEvent,\n type RunAgentInput,\n type RunErrorEvent,\n type RunFinishedEvent,\n type RunStartedEvent,\n type StateDeltaEvent,\n type StateSnapshotEvent,\n type StepFinishedEvent,\n type StepStartedEvent,\n SystemMessage,\n type TextMessageContentEvent,\n type TextMessageEndEvent,\n type TextMessageStartEvent,\n type ToolCallArgsEvent,\n type ToolCallEndEvent,\n type ToolCallResultEvent,\n type ToolCallStartEvent,\n type ToolMessage,\n UserMessage,\n} from \"@ag-ui/core\";\nimport jsonpatch from \"fast-json-patch\";\nimport { EMPTY, of } from \"rxjs\";\nimport type { Observable } from \"rxjs\";\nimport { concatMap, defaultIfEmpty, mergeAll, mergeMap } from \"rxjs/operators\";\nimport untruncateJson from \"untruncate-json\";\nimport { structuredClone_ } from \"../utils\";\nimport { type DebugLoggerInput, resolveDebugLogger } from \"@/debug-logger\";\n\n/**\n * Resolves (or creates) the assistant message that a tool call should attach to.\n *\n * Resolution order:\n * 1. `parentMessageId` matches an existing assistant message — return it.\n * 2. `parentMessageId` matches a non-assistant message (collision) — create new, keyed by `toolCallId`.\n * 3. `parentMessageId` not found — create new, keyed by `parentMessageId`.\n * 4. No `parentMessageId` — create new, keyed by `toolCallId`.\n */\nfunction resolveOrCreateAssistantMessage(\n messages: Message[],\n parentMessageId: string | undefined,\n toolCallId: string,\n): AssistantMessage {\n if (parentMessageId) {\n const existing = messages.find((m) => m.id === parentMessageId);\n if (existing?.role === \"assistant\") {\n return existing as AssistantMessage;\n }\n\n if (existing) {\n console.warn(\n `TOOL_CALL_START: parentMessageId '${parentMessageId}' matches a '${existing.role}' message, ` +\n `not assistant — falling back to toolCallId`,\n );\n }\n\n const created: AssistantMessage = {\n id: existing ? toolCallId : parentMessageId,\n role: \"assistant\",\n toolCalls: [],\n };\n messages.push(created);\n return created;\n }\n\n const created: AssistantMessage = { id: toolCallId, role: \"assistant\", toolCalls: [] };\n messages.push(created);\n return created;\n}\n\nexport const defaultApplyEvents = (\n input: RunAgentInput,\n events$: Observable<BaseEvent>,\n agent: AbstractAgent,\n subscribers: AgentSubscriber[],\n debugLogger?: DebugLoggerInput,\n): Observable<AgentStateMutation> => {\n const log = resolveDebugLogger(debugLogger);\n let messages = structuredClone_(agent.messages);\n let state = structuredClone_(input.state);\n let currentMutation: AgentStateMutation = {};\n\n const applyMutation = (mutation: AgentStateMutation) => {\n if (mutation.messages !== undefined) {\n messages = mutation.messages;\n currentMutation.messages = mutation.messages;\n }\n if (mutation.state !== undefined) {\n state = mutation.state;\n currentMutation.state = mutation.state;\n }\n };\n\n const emitUpdates = () => {\n const result = structuredClone_(currentMutation) as AgentStateMutation;\n currentMutation = {};\n if (result.messages !== undefined || result.state !== undefined) {\n return of(result);\n }\n return EMPTY;\n };\n\n return events$.pipe(\n concatMap(async (event) => {\n const mutation = await runSubscribersWithMutation(\n subscribers,\n messages,\n state,\n (subscriber, messages, state) =>\n subscriber.onEvent?.({ event, agent, input, messages, state }),\n );\n applyMutation(mutation);\n\n if (mutation.stopPropagation === true) {\n log?.event(\"APPLY\", \"Event dropped:\", event, {\n type: event.type,\n reason: \"stopPropagation by subscriber\",\n });\n } else {\n log?.event(\"APPLY\", \"Event applied:\", event, {\n type: event.type,\n subscribers: subscribers.length,\n });\n }\n\n if (mutation.stopPropagation === true) {\n return emitUpdates();\n }\n\n switch (event.type) {\n case EventType.TEXT_MESSAGE_START: {\n const mutation = await runSubscribersWithMutation(\n subscribers,\n messages,\n state,\n (subscriber, messages, state) =>\n subscriber.onTextMessageStartEvent?.({\n event: event as TextMessageStartEvent,\n messages,\n state,\n agent,\n input,\n }),\n );\n applyMutation(mutation);\n\n if (mutation.stopPropagation !== true) {\n const { messageId, role = \"assistant\", name } = event as TextMessageStartEvent;\n\n // Check if a message with this ID already exists (e.g., created by TOOL_CALL_START\n // with the same parentMessageId)\n const existingMessage = messages.find((m) => m.id === messageId);\n\n if (!existingMessage) {\n // Create a new message using properties from the event\n // Text messages can be developer, system, assistant, or user (not tool)\n const newMessage: Message = {\n id: messageId,\n role: role,\n content: \"\",\n ...(name !== undefined && { name }),\n };\n\n // Add the new message to the messages array\n messages.push(newMessage);\n applyMutation({ messages });\n }\n // If message already exists, we don't need to create a new one\n // The TEXT_MESSAGE_CONTENT events will update the existing message's content\n }\n return emitUpdates();\n }\n\n case EventType.TEXT_MESSAGE_CONTENT: {\n const { messageId, delta } = event as TextMessageContentEvent;\n\n // Find the target message by ID\n const targetMessage = messages.find((m) => m.id === messageId);\n if (!targetMessage) {\n console.warn(`TEXT_MESSAGE_CONTENT: No message found with ID '${messageId}'`);\n return emitUpdates();\n }\n\n const mutation = await runSubscribersWithMutation(\n subscribers,\n messages,\n state,\n (subscriber, messages, state) =>\n subscriber.onTextMessageContentEvent?.({\n event: event as TextMessageContentEvent,\n messages,\n state,\n agent,\n input,\n textMessageBuffer:\n typeof targetMessage.content === \"string\" ? targetMessage.content : \"\",\n }),\n );\n applyMutation(mutation);\n\n if (mutation.stopPropagation !== true) {\n // Append content to the correct message by ID\n const existingContent =\n typeof targetMessage.content === \"string\" ? targetMessage.content : \"\";\n targetMessage.content = `${existingContent}${delta}`;\n applyMutation({ messages });\n }\n\n return emitUpdates();\n }\n\n case EventType.TEXT_MESSAGE_END: {\n const { messageId } = event as TextMessageEndEvent;\n\n // Find the target message by ID\n const targetMessage = messages.find((m) => m.id === messageId);\n if (!targetMessage) {\n console.warn(`TEXT_MESSAGE_END: No message found with ID '${messageId}'`);\n return emitUpdates();\n }\n\n const mutation = await runSubscribersWithMutation(\n subscribers,\n messages,\n state,\n (subscriber, messages, state) =>\n subscriber.onTextMessageEndEvent?.({\n event: event as TextMessageEndEvent,\n messages,\n state,\n agent,\n input,\n textMessageBuffer:\n typeof targetMessage.content === \"string\" ? targetMessage.content : \"\",\n }),\n );\n applyMutation(mutation);\n\n await Promise.all(\n subscribers.map((subscriber) => {\n subscriber.onNewMessage?.({\n message: targetMessage,\n messages,\n state,\n agent,\n input,\n });\n }),\n );\n\n return emitUpdates();\n }\n\n case EventType.TOOL_CALL_START: {\n const mutation = await runSubscribersWithMutation(\n subscribers,\n messages,\n state,\n (subscriber, messages, state) =>\n subscriber.onToolCallStartEvent?.({\n event: event as ToolCallStartEvent,\n messages,\n state,\n agent,\n input,\n }),\n );\n applyMutation(mutation);\n\n if (mutation.stopPropagation !== true) {\n const { toolCallId, toolCallName, parentMessageId } = event as ToolCallStartEvent;\n\n const targetMessage = resolveOrCreateAssistantMessage(\n messages,\n parentMessageId,\n toolCallId,\n );\n\n targetMessage.toolCalls ??= [];\n\n // Add the new tool call\n targetMessage.toolCalls.push({\n id: toolCallId,\n type: \"function\",\n function: {\n name: toolCallName,\n arguments: \"\",\n },\n });\n\n applyMutation({ messages });\n }\n\n return emitUpdates();\n }\n\n case EventType.TOOL_CALL_ARGS: {\n const { toolCallId, delta } = event as ToolCallArgsEvent;\n\n // Find the message containing this tool call\n const targetMessage = messages.find((m) =>\n (m as AssistantMessage).toolCalls?.some((tc) => tc.id === toolCallId),\n ) as AssistantMessage;\n\n if (!targetMessage) {\n console.warn(\n `TOOL_CALL_ARGS: No message found containing tool call with ID '${toolCallId}'`,\n );\n return emitUpdates();\n }\n\n // Find the specific tool call\n const targetToolCall = targetMessage.toolCalls?.find((tc) => tc.id === toolCallId);\n if (!targetToolCall) {\n console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${toolCallId}'`);\n return emitUpdates();\n }\n\n const mutation = await runSubscribersWithMutation(\n subscribers,\n messages,\n state,\n (subscriber, messages, state) => {\n const toolCallBuffer = targetToolCall.function.arguments;\n const toolCallName = targetToolCall.function.name;\n let partialToolCallArgs = {};\n try {\n // Parse from toolCallBuffer only (before current delta is applied)\n partialToolCallArgs = untruncateJson(toolCallBuffer);\n } catch (error) {}\n\n return subscriber.onToolCallArgsEvent?.({\n event: event as ToolCallArgsEvent,\n messages,\n state,\n agent,\n input,\n toolCallBuffer,\n toolCallName,\n partialToolCallArgs,\n });\n },\n );\n applyMutation(mutation);\n\n if (mutation.stopPropagation !== true) {\n // Append the arguments to the correct tool call by ID\n targetToolCall.function.arguments += delta;\n applyMutation({ messages });\n }\n\n return emitUpdates();\n }\n\n case EventType.TOOL_CALL_END: {\n const { toolCallId } = event as ToolCallEndEvent;\n\n // Find the message containing this tool call\n const targetMessage = messages.find((m) =>\n (m as AssistantMessage).toolCalls?.some((tc) => tc.id === toolCallId),\n ) as AssistantMessage;\n\n if (!targetMessage) {\n console.warn(\n `TOOL_CALL_END: No message found containing tool call with ID '${toolCallId}'`,\n );\n return emitUpdates();\n }\n\n // Find the specific tool call\n const targetToolCall = targetMessage.toolCalls?.find((tc) => tc.id === toolCallId);\n if (!targetToolCall) {\n console.warn(`TOOL_CALL_END: No tool call found with ID '${toolCallId}'`);\n return emitUpdates();\n }\n\n const mutation = await runSubscribersWithMutation(\n subscribers,\n messages,\n state,\n (subscriber, messages, state) => {\n const toolCallArgsString = targetToolCall.function.arguments;\n const toolCallName = targetToolCall.function.name;\n let toolCallArgs = {};\n try {\n toolCallArgs = JSON.parse(toolCallArgsString);\n } catch (error) {}\n return subscriber.onToolCallEndEvent?.({\n event: event as ToolCallEndEvent,\n messages,\n state,\n agent,\n input,\n toolCallName,\n toolCallArgs,\n });\n },\n );\n applyMutation(mutation);\n\n await Promise.all(\n subscribers.map((subscriber) => {\n subscriber.onNewToolCall?.({\n toolCall: targetToolCall,\n messages,\n state,\n agent,\n input,\n });\n }),\n );\n\n return emitUpdates();\n }\n\n case EventType.TOOL_CALL_RESULT: {\n const mutation = await runSubscribersWithMutation(\n subscribers,\n messages,\n state,\n (subscriber, messages, state) =>\n subscriber.onToolCallResultEvent?.({\n event: event as ToolCallResultEvent,\n messages,\n state,\n agent,\n input,\n }),\n );\n\n applyMutation(mutation);\n\n if (mutation.stopPropagation !== true) {\n const { messageId, toolCallId, content, role } = event as ToolCallResultEvent;\n\n const toolMessage: ToolMessage = {\n id: messageId,\n toolCallId,\n role: role || \"tool\",\n content: content,\n };\n\n messages.push(toolMessage);\n\n await Promise.all(\n subscribers.map((subscriber) => {\n subscriber.onNewMessage?.({\n message: toolMessage,\n messages,\n state,\n agent,\n input,\n });\n }),\n );\n\n applyMutation({ messages });\n }\n\n return emitUpdates();\n }\n\n case EventType.STATE_SNAPSHOT: {\n const mutation = await runSubscribersWithMutation(\n subscribers,\n messages,\n state,\n (subscriber, messages, state) =>\n subscriber.onStateSnapshotEvent?.({\n event: event as StateSnapshotEvent,\n messages,\n state,\n agent,\n input,\n }),\n );\n applyMutation(mutation);\n\n if (mutation.stopPropagation !== true) {\n const { snapshot } = event as StateSnapshotEvent;\n\n // Replace state with the literal snapshot\n state = snapshot;\n\n applyMutation({ state });\n }\n\n return emitUpdates();\n }\n\n case EventType.STATE_DELTA: {\n const mutation = await runSubscribersWithMutation(\n subscribers,\n messages,\n state,\n (subscriber, messages, state) =>\n subscriber.onStateDeltaEvent?.({\n event: event as StateDeltaEvent,\n messages,\n state,\n agent,\n input,\n }),\n );\n applyMutation(mutation);\n\n if (mutation.stopPropagation !== true) {\n const { delta } = event as StateDeltaEvent;\n\n try {\n // Apply the JSON Patch operations to the current state without mutating the original\n const result = jsonpatch.applyPatch(state, delta, true, false);\n state = result.newDocument;\n applyMutation({ state });\n } catch (error: unknown) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n console.warn(\n `Failed to apply state patch:\\nCurrent state: ${JSON.stringify(state, null, 2)}\\nPatch operations: ${JSON.stringify(delta, null, 2)}\\nError: ${errorMessage}`,\n );\n // If patch failed, only emit updates if there were subscriber mutations\n // This prevents emitting updates when both patch fails AND no subscriber mutations\n }\n }\n\n return emitUpdates();\n }\n\n case EventType.MESSAGES_SNAPSHOT: {\n const mutation = await runSubscribersWithMutation(\n subscribers,\n messages,\n state,\n (subscriber, messages, state) =>\n subscriber.onMessagesSnapshotEvent?.({\n event: event as MessagesSnapshotEvent,\n messages,\n state,\n agent,\n input,\n }),\n );\n applyMutation(mutation);\n\n if (mutation.stopPropagation !== true) {\n const { messages: newMessages } = event as MessagesSnapshotEvent;\n\n // Edit-based merge: update existing messages with snapshot data while\n // preserving activity and reasoning messages (which the backend\n // doesn't include in the snapshot).\n const snapshotMap = new Map(newMessages.map((m) => [m.id, m]));\n\n // Step 1 + 2: Keep activity/reasoning messages as-is, keep messages\n // present in the snapshot (replaced with snapshot version), drop\n // everything else.\n const isClientOnlyRole = (role: string) =>\n role === \"activity\" || role === \"reasoning\";\n messages = messages\n .filter((m) => isClientOnlyRole(m.role) || snapshotMap.has(m.id))\n .map((m) => (isClientOnlyRole(m.role) ? m : snapshotMap.get(m.id)!));\n\n // Step 3: Append messages from the snapshot that we don't have yet.\n const existingIds = new Set(messages.map((m) => m.id));\n for (const snapshotMsg of newMessages) {\n if (!existingIds.has(snapshotMsg.id)) {\n messages.push(snapshotMsg);\n }\n }\n\n applyMutation({ messages });\n }\n\n return emitUpdates();\n }\n\n case EventType.ACTIVITY_SNAPSHOT: {\n const activityEvent = event as ActivitySnapshotEvent;\n const existingIndex = messages.findIndex((m) => m.id === activityEvent.messageId);\n const existingMessage = existingIndex >= 0 ? messages[existingIndex] : undefined;\n const existingActivityMessage =\n existingMessage?.role === \"activity\" ? (existingMessage as ActivityMessage) : undefined;\n const replace = activityEvent.replace ?? true;\n\n const mutation = await runSubscribersWithMutation(\n subscribers,\n messages,\n state,\n (subscriber, messages, state) =>\n subscriber.onActivitySnapshotEvent?.({\n event: activityEvent,\n messages,\n state,\n agent,\n input,\n activityMessage: existingActivityMessage,\n existingMessage,\n }),\n );\n applyMutation(mutation);\n\n if (mutation.stopPropagation !== true) {\n const activityMessage: ActivityMessage = {\n id: activityEvent.messageId,\n role: \"activity\",\n activityType: activityEvent.activityType,\n content: structuredClone_(activityEvent.content),\n };\n\n let createdMessage: ActivityMessage | undefined;\n\n if (existingIndex === -1) {\n messages.push(activityMessage);\n createdMessage = activityMessage;\n } else if (existingActivityMessage) {\n if (replace) {\n messages[existingIndex] = {\n ...existingActivityMessage,\n activityType: activityEvent.activityType,\n content: structuredClone_(activityEvent.content),\n };\n }\n } else if (replace) {\n messages[existingIndex] = activityMessage;\n createdMessage = activityMessage;\n }\n\n applyMutation({ messages });\n\n if (createdMessage) {\n await Promise.all(\n subscribers.map((subscriber) =>\n subscriber.onNewMessage?.({\n message: createdMessage,\n messages,\n state,\n agent,\n input,\n }),\n ),\n );\n }\n }\n\n return emitUpdates();\n }\n\n case EventType.ACTIVITY_DELTA: {\n const activityEvent = event as ActivityDeltaEvent;\n const existingIndex = messages.findIndex((m) => m.id === activityEvent.messageId);\n if (existingIndex === -1) {\n return emitUpdates();\n }\n\n const existingMessage = messages[existingIndex];\n if (existingMessage.role !== \"activity\") {\n console.warn(\n `ACTIVITY_DELTA: Message '${activityEvent.messageId}' is not an activity message`,\n );\n return emitUpdates();\n }\n\n const existingActivityMessage = existingMessage as ActivityMessage;\n\n const mutation = await runSubscribersWithMutation(\n subscribers,\n messages,\n state,\n (subscriber, messages, state) =>\n subscriber.onActivityDeltaEvent?.({\n event: activityEvent,\n messages,\n state,\n agent,\n input,\n activityMessage: existingActivityMessage,\n }),\n );\n applyMutation(mutation);\n\n if (mutation.stopPropagation !== true) {\n try {\n const baseContent = structuredClone_(existingActivityMessage.content ?? {});\n\n const result = jsonpatch.applyPatch(\n baseContent,\n activityEvent.patch ?? [],\n true,\n false,\n );\n const updatedContent = result.newDocument as ActivityMessage[\"content\"];\n\n messages[existingIndex] = {\n ...existingActivityMessage,\n content: structuredClone_(updatedContent),\n activityType: activityEvent.activityType,\n };\n\n applyMutation({ messages });\n } catch (error: unknown) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n console.warn(\n `Failed to apply activity patch for '${activityEvent.messageId}': ${errorMessage}`,\n );\n }\n }\n\n return emitUpdates();\n }\n\n case EventType.RAW: {\n const mutation = await runSubscribersWithMutation(\n subscribers,\n messages,\n state,\n (subscriber, messages, state) =>\n subscriber.onRawEvent?.({\n event: event as RawEvent,\n messages,\n state,\n agent,\n input,\n }),\n );\n applyMutation(mutation);\n\n return emitUpdates();\n }\n\n case EventType.CUSTOM: {\n const mutation = await runSubscribersWithMutation(\n subscribers,\n messages,\n state,\n (subscriber, messages, state) =>\n subscriber.onCustomEvent?.({\n event: event as CustomEvent,\n messages,\n state,\n agent,\n input,\n }),\n );\n applyMutation(mutation);\n\n return emitUpdates();\n }\n\n case EventType.RUN_STARTED: {\n const mutation = await runSubscribersWithMutation(\n subscribers,\n messages,\n state,\n (subscriber, messages, state) =>\n subscriber.onRunStartedEvent?.({\n event: event as RunStartedEvent,\n messages,\n state,\n agent,\n input,\n }),\n );\n applyMutation(mutation);\n\n // Handle input.messages if present and stopPropagation is not set\n if (mutation.stopPropagation !== true) {\n const runStartedEvent = event as RunStartedEvent;\n\n // Check if the event contains input with messages\n if (runStartedEvent.input?.messages) {\n // Add messages that aren't already present (checked by ID)\n for (const message of runStartedEvent.input.messages) {\n const existingMessage = messages.find((m) => m.id === message.id);\n if (!existingMessage) {\n messages.push(message);\n }\n }\n\n // Apply mutation to emit the updated messages\n applyMutation({ messages });\n }\n }\n\n return emitUpdates();\n }\n\n case EventType.RUN_FINISHED: {\n const mutation = await runSubscribersWithMutation(\n subscribers,\n messages,\n state,\n (subscriber, messages, state) =>\n subscriber.onRunFinishedEvent?.({\n event: event as RunFinishedEvent,\n messages,\n state,\n agent,\n input,\n result: (event as RunFinishedEvent).result,\n }),\n );\n applyMutation(mutation);\n\n return emitUpdates();\n }\n\n case EventType.RUN_ERROR: {\n const mutation = await runSubscribersWithMutation(\n subscribers,\n messages,\n state,\n (subscriber, messages, state) =>\n subscriber.onRunErrorEvent?.({\n event: event as RunErrorEvent,\n messages,\n state,\n agent,\n input,\n }),\n );\n applyMutation(mutation);\n\n return emitUpdates();\n }\n\n case EventType.STEP_STARTED: {\n const mutation = await runSubscribersWithMutation(\n subscribers,\n messages,\n state,\n (subscriber, messages, state) =>\n subscriber.onStepStartedEvent?.({\n event: event as StepStartedEvent,\n messages,\n state,\n agent,\n input,\n }),\n );\n applyMutation(mutation);\n\n return emitUpdates();\n }\n\n case EventType.STEP_FINISHED: {\n const mutation = await runSubscribersWithMutation(\n subscribers,\n messages,\n state,\n (subscriber, messages, state) =>\n subscriber.onStepFinishedEvent?.({\n event: event as StepFinishedEvent,\n messages,\n state,\n agent,\n input,\n }),\n );\n applyMutation(mutation);\n\n return emitUpdates();\n }\n\n case EventType.TEXT_MESSAGE_CHUNK: {\n throw new Error(\"TEXT_MESSAGE_CHUNK must be tranformed before being applied\");\n }\n\n case EventType.TOOL_CALL_CHUNK: {\n throw new Error(\"TOOL_CALL_CHUNK must be tranformed before being applied\");\n }\n\n case EventType.THINKING_START: {\n return emitUpdates();\n }\n\n case EventType.THINKING_END: {\n return emitUpdates();\n }\n\n case EventType.THINKING_TEXT_MESSAGE_START: {\n return emitUpdates();\n }\n\n case EventType.THINKING_TEXT_MESSAGE_CONTENT: {\n return emitUpdates();\n }\n\n case EventType.THINKING_TEXT_MESSAGE_END: {\n return emitUpdates();\n }\n\n case EventType.REASONING_START: {\n const mutation = await runSubscribersWithMutation(\n subscribers,\n messages,\n state,\n (subscriber, messages, state) =>\n subscriber.onReasoningStartEvent?.({\n event: event as ReasoningStartEvent,\n messages,\n state,\n agent,\n input,\n }),\n );\n applyMutation(mutation);\n return emitUpdates();\n }\n\n case EventType.REASONING_MESSAGE_START: {\n const mutation = await runSubscribersWithMutation(\n subscribers,\n messages,\n state,\n (subscriber, messages, state) =>\n subscriber.onReasoningMessageStartEvent?.({\n event: event as ReasoningMessageStartEvent,\n messages,\n state,\n agent,\n input,\n }),\n );\n applyMutation(mutation);\n\n if (mutation.stopPropagation !== true) {\n const { messageId } = event as ReasoningMessageStartEvent;\n const existingMessage = messages.find((m) => m.id === messageId);\n\n if (!existingMessage) {\n const newMessage: ReasoningMessage = {\n id: messageId,\n role: \"reasoning\",\n content: \"\",\n };\n messages.push(newMessage);\n applyMutation({ messages });\n }\n }\n return emitUpdates();\n }\n\n case EventType.REASONING_MESSAGE_CONTENT: {\n const { messageId, delta } = event as ReasoningMessageContentEvent;\n\n const targetMessage = messages.find((m) => m.id === messageId);\n if (!targetMessage) {\n console.warn(`REASONING_MESSAGE_CONTENT: No message found with ID '${messageId}'`);\n return emitUpdates();\n }\n\n const mutation = await runSubscribersWithMutation(\n subscribers,\n messages,\n state,\n (subscriber, messages, state) =>\n subscriber.onReasoningMessageContentEvent?.({\n event: event as ReasoningMessageContentEvent,\n messages,\n state,\n agent,\n input,\n reasoningMessageBuffer:\n typeof targetMessage.content === \"string\" ? targetMessage.content : \"\",\n }),\n );\n applyMutation(mutation);\n\n if (mutation.stopPropagation !== true) {\n const existingContent =\n typeof targetMessage.content === \"string\" ? targetMessage.content : \"\";\n targetMessage.content = `${existingContent}${delta}`;\n applyMutation({ messages });\n }\n return emitUpdates();\n }\n\n case EventType.REASONING_MESSAGE_END: {\n const { messageId } = event as ReasoningMessageEndEvent;\n\n const targetMessage = messages.find((m) => m.id === messageId);\n if (!targetMessage) {\n console.warn(`REASONING_MESSAGE_END: No message found with ID '${messageId}'`);\n return emitUpdates();\n }\n\n const mutation = await runSubscribersWithMutation(\n subscribers,\n messages,\n state,\n (subscriber, messages, state) =>\n subscriber.onReasoningMessageEndEvent?.({\n event: event as ReasoningMessageEndEvent,\n messages,\n state,\n agent,\n input,\n reasoningMessageBuffer:\n typeof targetMessage.content === \"string\" ? targetMessage.content : \"\",\n }),\n );\n applyMutation(mutation);\n\n await Promise.all(\n subscribers.map((subscriber) => {\n subscriber.onNewMessage?.({\n message: targetMessage,\n messages,\n state,\n agent,\n input,\n });\n }),\n );\n\n return emitUpdates();\n }\n\n case EventType.REASONING_MESSAGE_CHUNK: {\n throw new Error(\"REASONING_MESSAGE_CHUNK must be transformed before being applied\");\n }\n\n case EventType.REASONING_END: {\n const mutation = await runSubscribersWithMutation(\n subscribers,\n messages,\n state,\n (subscriber, messages, state) =>\n subscriber.onReasoningEndEvent?.({\n event: event as ReasoningEndEvent,\n messages,\n state,\n agent,\n input,\n }),\n );\n applyMutation(mutation);\n return emitUpdates();\n }\n\n case EventType.REASONING_ENCRYPTED_VALUE: {\n const { subtype, entityId, encryptedValue } = event as ReasoningEncryptedValueEvent;\n const mutation = await runSubscribersWithMutation(\n subscribers,\n messages,\n state,\n (subscriber, messages, state) =>\n subscriber.onReasoningEncryptedValueEvent?.({\n event: event as ReasoningEncryptedValueEvent,\n messages,\n state,\n agent,\n input,\n }),\n );\n applyMutation(mutation);\n if (mutation.stopPropagation !== true) {\n let entityUpdated = false;\n if (subtype === \"tool-call\") {\n // Find tool call by entityId and set encryptedValue\n for (const message of messages) {\n if (message.role === \"assistant\" && message.toolCalls) {\n const toolCall = message.toolCalls.find((tc) => tc.id === entityId);\n if (toolCall) {\n toolCall.encryptedValue = encryptedValue;\n entityUpdated = true;\n break;\n }\n }\n }\n } else {\n // subtype is \"message\"\n // Find message by entityId and set encryptedValue\n const message = messages.find((m) => m.id === entityId);\n // Activity messages do not have encryptedValue\n if (message?.role !== \"activity\" && message) {\n message.encryptedValue = encryptedValue;\n entityUpdated = true;\n }\n }\n if (entityUpdated) {\n currentMutation.messages = messages;\n }\n }\n return emitUpdates();\n }\n }\n\n // This makes TypeScript check that the switch is exhaustive\n // If a new EventType is added, this will cause a compile error\n const _exhaustiveCheck: never = event.type;\n return emitUpdates();\n }),\n mergeAll(),\n // Only use defaultIfEmpty when there are subscribers to avoid emitting empty updates\n // when patches fail and there are no subscribers (like in state patching test)\n subscribers.length > 0 ? defaultIfEmpty({} as AgentStateMutation) : (stream: any) => stream,\n );\n};\n", "import { BaseEvent, EventType, AGUIError } from \"@ag-ui/core\";\nimport { Observable, throwError, of } from \"rxjs\";\nimport { mergeMap } from \"rxjs/operators\";\nimport { type DebugLoggerInput, resolveDebugLogger } from \"@/debug-logger\";\n\nexport const verifyEvents =\n (debugLogger?: DebugLoggerInput) =>\n (source$: Observable<BaseEvent>): Observable<BaseEvent> => {\n const log = resolveDebugLogger(debugLogger);\n // Declare variables in closure to maintain state across events\n let activeMessages = new Map<string, boolean>(); // Map of message ID -> active status\n let activeToolCalls = new Map<string, boolean>(); // Map of tool call ID -> active status\n let runFinished = false;\n let runError = false; // New flag to track if RUN_ERROR has been sent\n // New flags to track first/last event requirements\n let firstEventReceived = false;\n // Track active steps\n let activeSteps = new Map<string, boolean>(); // Map of step name -> active status\n let activeThinkingStep = false;\n let activeThinkingStepMessage = false;\n let runStarted = false; // Track if a run has started\n\n // Function to reset state for a new run\n const resetRunState = () => {\n activeMessages.clear();\n activeToolCalls.clear();\n activeSteps.clear();\n activeThinkingStep = false;\n activeThinkingStepMessage = false;\n runFinished = false;\n runError = false;\n runStarted = true;\n };\n\n return source$.pipe(\n // Process each event through our state machine\n mergeMap((event) => {\n const eventType = event.type;\n\n log?.event(\"VERIFY\", \"Event:\", event, { type: event.type });\n\n // Check if run has errored\n if (runError) {\n return throwError(\n () =>\n new AGUIError(\n `Cannot send event type '${eventType}': The run has already errored with 'RUN_ERROR'. No further events can be sent.`,\n ),\n );\n }\n\n // Check if run has already finished (but allow new RUN_STARTED to start a new run)\n if (\n runFinished &&\n eventType !== EventType.RUN_ERROR &&\n eventType !== EventType.RUN_STARTED\n ) {\n return throwError(\n () =>\n new AGUIError(\n `Cannot send event type '${eventType}': The run has already finished with 'RUN_FINISHED'. Start a new run with 'RUN_STARTED'.`,\n ),\n );\n }\n\n // Handle first event requirement and sequential RUN_STARTED\n if (!firstEventReceived) {\n firstEventReceived = true;\n if (eventType !== EventType.RUN_STARTED && eventType !== EventType.RUN_ERROR) {\n return throwError(() => new AGUIError(`First event must be 'RUN_STARTED'`));\n }\n } else if (eventType === EventType.RUN_STARTED) {\n // Allow RUN_STARTED after RUN_FINISHED (new run), but not during an active run\n if (runStarted && !runFinished) {\n return throwError(\n () =>\n new AGUIError(\n `Cannot send 'RUN_STARTED' while a run is still active. The previous run must be finished with 'RUN_FINISHED' before starting a new run.`,\n ),\n );\n }\n // If we're here, it's either the first RUN_STARTED or a new run after RUN_FINISHED\n if (runFinished) {\n // This is a new run after the previous one finished, reset state\n resetRunState();\n }\n }\n\n // Validate event based on type and current state\n switch (eventType) {\n // Text message flow\n case EventType.TEXT_MESSAGE_START: {\n const messageId = (event as any).messageId;\n\n // Check if this message is already in progress\n if (activeMessages.has(messageId)) {\n return throwError(\n () =>\n new AGUIError(\n `Cannot send 'TEXT_MESSAGE_START' event: A text message with ID '${messageId}' is already in progress. Complete it with 'TEXT_MESSAGE_END' first.`,\n ),\n );\n }\n\n activeMessages.set(messageId, true);\n return of(event);\n }\n\n case EventType.TEXT_MESSAGE_CONTENT: {\n const messageId = (event as any).messageId;\n\n // Must be in a message with this ID\n if (!activeMessages.has(messageId)) {\n return throwError(\n () =>\n new AGUIError(\n `Cannot send 'TEXT_MESSAGE_CONTENT' event: No active text message found with ID '${messageId}'. Start a text message with 'TEXT_MESSAGE_START' first.`,\n ),\n );\n }\n\n return of(event);\n }\n\n case EventType.TEXT_MESSAGE_END: {\n const messageId = (event as any).messageId;\n\n // Must be in a message with this ID\n if (!activeMessages.has(messageId)) {\n return throwError(\n () =>\n new AGUIError(\n `Cannot send 'TEXT_MESSAGE_END' event: No active text message found with ID '${messageId}'. A 'TEXT_MESSAGE_START' event must be sent first.`,\n ),\n );\n }\n\n // Remove message from active set\n activeMessages.delete(messageId);\n return of(event);\n }\n\n // Tool call flow\n case EventType.TOOL_CALL_START: {\n const toolCallId = (event as any).toolCallId;\n\n // Check if this tool call is already in progress\n if (activeToolCalls.has(toolCallId)) {\n return throwError(\n () =>\n new AGUIError(\n `Cannot send 'TOOL_CALL_START' event: A tool call with ID '${toolCallId}' is already in progress. Complete it with 'TOOL_CALL_END' first.`,\n ),\n );\n }\n\n activeToolCalls.set(toolCallId, true);\n return of(event);\n }\n\n case EventType.TOOL_CALL_ARGS: {\n const toolCallId = (event as any).toolCallId;\n\n // Must be in a tool call with this ID\n if (!activeToolCalls.has(toolCallId)) {\n return throwError(\n () =>\n new AGUIError(\n `Cannot send 'TOOL_CALL_ARGS' event: No active tool call found with ID '${toolCallId}'. Start a tool call with 'TOOL_CALL_START' first.`,\n ),\n );\n }\n\n return of(event);\n }\n\n case EventType.TOOL_CALL_END: {\n const toolCallId = (event as any).toolCallId;\n\n // Must be in a tool call with this ID\n if (!activeToolCalls.has(toolCallId)) {\n return throwError(\n () =>\n new AGUIError(\n `Cannot send 'TOOL_CALL_END' event: No active tool call found with ID '${toolCallId}'. A 'TOOL_CALL_START' event must be sent first.`,\n ),\n );\n }\n\n // Remove tool call from active set\n activeToolCalls.delete(toolCallId);\n return of(event);\n }\n\n // Step flow\n case EventType.STEP_STARTED: {\n const stepName = (event as any).stepName;\n if (activeSteps.has(stepName)) {\n return throwError(\n () => new AGUIError(`Step \"${stepName}\" is already active for 'STEP_STARTED'`),\n );\n }\n activeSteps.set(stepName, true);\n return of(event);\n }\n\n case EventType.STEP_FINISHED: {\n const stepName = (event as any).stepName;\n if (!activeSteps.has(stepName)) {\n return throwError(\n () =>\n new AGUIError(\n `Cannot send 'STEP_FINISHED' for step \"${stepName}\" that was not started`,\n ),\n );\n }\n activeSteps.delete(stepName);\n return of(event);\n }\n\n // Run flow\n case EventType.RUN_STARTED: {\n // We've already validated this above\n runStarted = true;\n return of(event);\n }\n\n case EventType.RUN_FINISHED: {\n // Can't be the first event (already checked)\n // and can't happen after already being finished (already checked)\n\n // Check that all steps are finished before run ends\n if (activeSteps.size > 0) {\n const unfinishedSteps = Array.from(activeSteps.keys()).join(\", \");\n return throwError(\n () =>\n new AGUIError(\n `Cannot send 'RUN_FINISHED' while steps are still active: ${unfinishedSteps}`,\n ),\n );\n }\n\n // Check that all messages are finished before run ends\n if (activeMessages.size > 0) {\n const unfinishedMessages = Array.from(activeMessages.keys()).join(\", \");\n return throwError(\n () =>\n new AGUIError(\n `Cannot send 'RUN_FINISHED' while text messages are still active: ${unfinishedMessages}`,\n ),\n );\n }\n\n // Check that all tool calls are finished before run ends\n if (activeToolCalls.size > 0) {\n const unfinishedToolCalls = Array.from(activeToolCalls.keys()).join(\", \");\n return throwError(\n () =>\n new AGUIError(\n `Cannot send 'RUN_FINISHED' while tool calls are still active: ${unfinishedToolCalls}`,\n ),\n );\n }\n\n runFinished = true;\n return of(event);\n }\n\n case EventType.RUN_ERROR: {\n // RUN_ERROR can happen at any time\n runError = true; // Set flag to prevent any further events\n return of(event);\n }\n\n case EventType.CUSTOM: {\n return of(event);\n }\n\n // Text message flow\n case EventType.THINKING_TEXT_MESSAGE_START: {\n if (!activeThinkingStep) {\n return throwError(\n () =>\n new AGUIError(\n `Cannot send 'THINKING_TEXT_MESSAGE_START' event: A thinking step is not in progress. Create one with 'THINKING_START' first.`,\n ),\n );\n }\n // Can't start a message if one is already in progress\n if (activeThinkingStepMessage) {\n return throwError(\n () =>\n new AGUIError(\n `Cannot send 'THINKING_TEXT_MESSAGE_START' event: A thinking message is already in progress. Complete it with 'THINKING_TEXT_MESSAGE_END' first.`,\n ),\n );\n }\n\n activeThinkingStepMessage = true;\n return of(event);\n }\n\n case EventType.THINKING_TEXT_MESSAGE_CONTENT: {\n // Must be in a message and IDs must match\n if (!activeThinkingStepMessage) {\n return throwError(\n () =>\n new AGUIError(\n `Cannot send 'THINKING_TEXT_MESSAGE_CONTENT' event: No active thinking message found. Start a message with 'THINKING_TEXT_MESSAGE_START' first.`,\n ),\n );\n }\n\n return of(event);\n }\n\n case EventType.THINKING_TEXT_MESSAGE_END: {\n // Must be in a message and IDs must match\n if (!activeThinkingStepMessage) {\n return throwError(\n () =>\n new AGUIError(\n `Cannot send 'THINKING_TEXT_MESSAGE_END' event: No active thinking message found. A 'THINKING_TEXT_MESSAGE_START' event must be sent first.`,\n ),\n );\n }\n\n // Reset message state\n activeThinkingStepMessage = false;\n return of(event);\n }\n\n case EventType.THINKING_START: {\n if (activeThinkingStep) {\n return throwError(\n () =>\n new AGUIError(\n `Cannot send 'THINKING_START' event: A thinking step is already in progress. End it with 'THINKING_END' first.`,\n ),\n );\n }\n\n activeThinkingStep = true;\n return of(event);\n }\n\n case EventType.THINKING_END: {\n // Must be in a message and IDs must match\n if (!activeThinkingStep) {\n return throwError(\n () =>\n new AGUIError(\n `Cannot send 'THINKING_END' event: No active thinking step found. A 'THINKING_START' event must be sent first.`,\n ),\n );\n }\n\n // Reset message state\n activeThinkingStep = false;\n return of(event);\n }\n\n default: {\n return of(event);\n }\n }\n }),\n );\n };\n", "import { Observable, from, defer, throwError } from \"rxjs\";\nimport { mergeMap, switchMap } from \"rxjs/operators\";\n\nexport enum HttpEventType {\n HEADERS = \"headers\",\n DATA = \"data\",\n}\n\nexport interface HttpDataEvent {\n type: HttpEventType.DATA;\n data?: Uint8Array;\n}\n\nexport interface HttpHeadersEvent {\n type: HttpEventType.HEADERS;\n status: number;\n headers: Headers;\n}\n\nexport type HttpEvent = HttpDataEvent | HttpHeadersEvent;\n\nexport const runHttpRequest = (url: string, requestInit: RequestInit): Observable<HttpEvent> => {\n // Defer the fetch so that it's executed when subscribed to\n return defer(() => from(fetch(url, requestInit))).pipe(\n switchMap((response) => {\n if (!response.ok) {\n const contentType = response.headers.get(\"content-type\") || \"\";\n // Read the (small) error body once, then error the stream\n return from(response.text()).pipe(\n mergeMap((text) => {\n let payload: unknown = text;\n if (contentType.includes(\"application/json\")) {\n try { payload = JSON.parse(text); } catch {/* keep raw text */}\n }\n const err: any = new Error(\n `HTTP ${response.status}: ${typeof payload === \"string\" ? payload : JSON.stringify(payload)}`\n );\n err.status = response.status;\n err.payload = payload;\n return throwError(() => err);\n })\n );\n }\n // Emit headers event first\n const headersEvent: HttpHeadersEvent = {\n type: HttpEventType.HEADERS,\n status: response.status,\n headers: response.headers,\n };\n\n const reader = response.body?.getReader();\n if (!reader) {\n return throwError(() => new Error(\"Failed to getReader() from response\"));\n }\n\n return new Observable<HttpEvent>((subscriber) => {\n // Emit headers event first\n subscriber.next(headersEvent);\n\n (async () => {\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n // Emit data event instead of raw Uint8Array\n const dataEvent: HttpDataEvent = {\n type: HttpEventType.DATA,\n data: value,\n };\n subscriber.next(dataEvent);\n }\n subscriber.complete();\n } catch (error) {\n subscriber.error(error);\n }\n })();\n\n return () => {\n reader.cancel().catch((error) => {\n if ((error as DOMException)?.name === \"AbortError\") {\n return;\n }\n\n throw error;\n });\n };\n });\n }),\n );\n};\n", "import { Observable, Subject } from \"rxjs\";\nimport { HttpEvent, HttpEventType } from \"../run/http-request\";\nimport { type DebugLoggerInput, resolveDebugLogger } from \"@/debug-logger\";\n\n/**\n * Parses a stream of HTTP events into a stream of JSON objects using Server-Sent Events (SSE) format.\n * Strictly follows the SSE standard where:\n * - Events are separated by double newlines ('\\n\\n')\n * - Only 'data:' prefixed lines are processed\n * - Multi-line data events are supported and joined\n * - Non-data fields (event, id, retry) are ignored\n */\nexport const parseSSEStream = (\n source$: Observable<HttpEvent>,\n debugLogger?: DebugLoggerInput,\n): Observable<any> => {\n const log = resolveDebugLogger(debugLogger);\n const jsonSubject = new Subject<any>();\n // Create TextDecoder with stream option set to true to handle split UTF-8 characters\n const decoder = new TextDecoder(\"utf-8\", { fatal: false });\n let buffer = \"\";\n\n // Subscribe to the source once and multicast to all subscribers\n source$.subscribe({\n next: (event: HttpEvent) => {\n if (event.type === HttpEventType.HEADERS) {\n return;\n }\n\n if (event.type === HttpEventType.DATA && event.data) {\n // Decode chunk carefully to handle UTF-8\n const text = decoder.decode(event.data, { stream: true });\n buffer += text;\n\n // Process complete events (separated by double newlines)\n const events = buffer.split(/\\n\\n/);\n // Keep the last potentially incomplete event in buffer\n buffer = events.pop() || \"\";\n\n for (const event of events) {\n processSSEEvent(event);\n }\n }\n },\n error: (err) => jsonSubject.error(err),\n complete: () => {\n // Use the final call to decoder.decode() to flush any remaining bytes\n if (buffer) {\n buffer += decoder.decode();\n // Process any remaining SSE event data\n processSSEEvent(buffer);\n }\n jsonSubject.complete();\n },\n });\n\n /**\n * Helper function to process an SSE event.\n * Extracts and joins data lines, then parses the result as JSON.\n *\n * Follows the SSE spec by processing lines starting with 'data:',\n * ignoring a single space if it is present after the colon.\n *\n * @param eventText The raw event text to process\n */\n function processSSEEvent(eventText: string) {\n const lines = eventText.split(\"\\n\");\n const dataLines: string[] = [];\n\n for (const line of lines) {\n if (line.startsWith(\"data:\")) {\n // Remove 'data:' prefix, and optionally a single space afterwards\n dataLines.push(line.slice(5).replace(/^ /, \"\"));\n }\n }\n\n // Only process if we have data lines\n if (dataLines.length > 0) {\n try {\n // Join multi-line data and parse JSON\n const jsonStr = dataLines.join(\"\\n\");\n const json = JSON.parse(jsonStr);\n log?.event(\"SSE\", \"Event received:\", json, { type: json.type });\n jsonSubject.next(json);\n } catch (err) {\n jsonSubject.error(err);\n }\n }\n }\n\n return jsonSubject.asObservable();\n};\n", "import { Observable, Subject } from \"rxjs\";\nimport { HttpEvent, HttpEventType } from \"../run/http-request\";\nimport { BaseEvent } from \"@ag-ui/core\";\nimport * as proto from \"@ag-ui/proto\";\n\n/**\n * Parses a stream of HTTP events into a stream of BaseEvent objects using Protocol Buffer format.\n * Each message is prefixed with a 4-byte length header (uint32 in big-endian format)\n * followed by the protocol buffer encoded message.\n */\nexport const parseProtoStream = (source$: Observable<HttpEvent>): Observable<BaseEvent> => {\n const eventSubject = new Subject<BaseEvent>();\n let buffer = new Uint8Array(0);\n\n source$.subscribe({\n next: (event: HttpEvent) => {\n if (event.type === HttpEventType.HEADERS) {\n return;\n }\n\n if (event.type === HttpEventType.DATA && event.data) {\n // Append the new data to our buffer\n const newBuffer = new Uint8Array(buffer.length + event.data.length);\n newBuffer.set(buffer, 0);\n newBuffer.set(event.data, buffer.length);\n buffer = newBuffer;\n\n // Process as many complete messages as possible\n processBuffer();\n }\n },\n error: (err) => eventSubject.error(err),\n complete: () => {\n // Try to process any remaining data in the buffer\n if (buffer.length > 0) {\n try {\n processBuffer();\n } catch (error: unknown) {\n console.warn(\"Incomplete or invalid protocol buffer data at stream end\");\n }\n }\n eventSubject.complete();\n },\n });\n\n /**\n * Process as many complete messages as possible from the buffer\n */\n function processBuffer() {\n // Keep processing while we have enough data for at least a header (4 bytes)\n while (buffer.length >= 4) {\n // Read message length from the first 4 bytes (big-endian uint32)\n const view = new DataView(buffer.buffer, buffer.byteOffset, 4);\n const messageLength = view.getUint32(0, false); // false = big-endian\n\n // Check if we have the complete message (header + message body)\n const totalLength = 4 + messageLength;\n if (buffer.length < totalLength) {\n // Not enough data yet, wait for more\n break;\n }\n\n try {\n // Extract the message (skipping the 4-byte header)\n const message = buffer.slice(4, totalLength);\n\n // Decode the protocol buffer message using the imported decode function\n const event = proto.decode(message);\n\n // Emit the parsed event\n eventSubject.next(event);\n\n // Remove the processed message from the buffer\n buffer = buffer.slice(totalLength);\n } catch (error: unknown) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n eventSubject.error(new Error(`Failed to decode protocol buffer message: ${errorMessage}`));\n return;\n }\n }\n }\n\n return eventSubject.asObservable();\n};\n", "import { BaseEvent, EventSchemas } from \"@ag-ui/core\";\nimport { Subject, ReplaySubject, Observable } from \"rxjs\";\nimport { HttpEvent, HttpEventType } from \"../run/http-request\";\nimport { parseSSEStream } from \"./sse\";\nimport { parseProtoStream } from \"./proto\";\nimport * as proto from \"@ag-ui/proto\";\nimport { EventType } from \"@ag-ui/core\";\nimport { type DebugLoggerInput, resolveDebugLogger } from \"@/debug-logger\";\n\n/**\n * Transforms HTTP events into BaseEvents using the appropriate format parser based on content type.\n */\nexport const transformHttpEventStream = (\n source$: Observable<HttpEvent>,\n debugLogger?: DebugLoggerInput,\n): Observable<BaseEvent> => {\n const log = resolveDebugLogger(debugLogger);\n const eventSubject = new Subject<BaseEvent>();\n\n // Use ReplaySubject to buffer events until we decide on the parser\n const bufferSubject = new ReplaySubject<HttpEvent>();\n\n // Flag to track whether we've set up the parser\n let parserInitialized = false;\n\n // Subscribe to source and buffer events while we determine the content type\n source$.subscribe({\n next: (event: HttpEvent) => {\n // Forward event to buffer\n bufferSubject.next(event);\n\n // If we get headers and haven't initialized a parser yet, check content type\n if (event.type === HttpEventType.HEADERS && !parserInitialized) {\n parserInitialized = true;\n const contentType = event.headers.get(\"content-type\");\n\n log?.lifecycle(\"HTTP\", \"Stream format detected:\", {\n contentType,\n parser: contentType === proto.AGUI_MEDIA_TYPE ? \"protobuf\" : \"sse\",\n });\n\n // Choose parser based on content type\n if (contentType === proto.AGUI_MEDIA_TYPE) {\n // Use protocol buffer parser\n parseProtoStream(bufferSubject).subscribe({\n next: (event) => eventSubject.next(event),\n error: (err) => eventSubject.error(err),\n complete: () => eventSubject.complete(),\n });\n } else {\n // Use SSE JSON parser for all other cases\n parseSSEStream(bufferSubject, log).subscribe({\n next: (json) => {\n try {\n const parsedEvent = EventSchemas.parse(json);\n log?.event(\"HTTP\", \"Event validated:\", parsedEvent, {\n type: parsedEvent.type,\n valid: true,\n });\n eventSubject.next(parsedEvent as BaseEvent);\n } catch (err) {\n log?.event(\"HTTP\", \"Event invalid:\", { json, error: String(err) });\n eventSubject.error(err);\n }\n },\n error: (err) => {\n if ((err as DOMException)?.name === \"AbortError\") {\n eventSubject.next({\n type: EventType.RUN_ERROR,\n message: (err as DOMException).message || \"Request aborted\",\n code: \"abort\",\n rawEvent: err,\n });\n eventSubject.complete();\n return;\n }\n return eventSubject.error(err);\n },\n complete: () => eventSubject.complete(),\n });\n }\n } else if (!parserInitialized) {\n eventSubject.error(new Error(\"No headers event received before data events\"));\n }\n },\n error: (err) => {\n bufferSubject.error(err);\n eventSubject.error(err);\n },\n complete: () => {\n bufferSubject.complete();\n },\n });\n\n return eventSubject.asObservable();\n};\n", "import { z } from \"zod\";\n\n// Protocol Events\nexport const LegacyRuntimeEventTypes = z.enum([\n \"TextMessageStart\",\n \"TextMessageContent\",\n \"TextMessageEnd\",\n \"ActionExecutionStart\",\n \"ActionExecutionArgs\",\n \"ActionExecutionEnd\",\n \"ActionExecutionResult\",\n \"AgentStateMessage\",\n \"MetaEvent\",\n \"RunStarted\",\n \"RunFinished\",\n \"RunError\",\n \"NodeStarted\",\n \"NodeFinished\",\n]);\n\nexport const LegacyRuntimeMetaEventName = z.enum([\n \"LangGraphInterruptEvent\",\n \"PredictState\",\n \"Exit\",\n]);\n\nexport const LegacyTextMessageStart = z.object({\n type: z.literal(LegacyRuntimeEventTypes.enum.TextMessageStart),\n messageId: z.string(),\n parentMessageId: z.string().optional(),\n role: z.string().optional(),\n});\n\nexport const LegacyTextMessageContent = z.object({\n type: z.literal(LegacyRuntimeEventTypes.enum.TextMessageContent),\n messageId: z.string(),\n content: z.string(),\n});\n\nexport const LegacyTextMessageEnd = z.object({\n type: z.literal(LegacyRuntimeEventTypes.enum.TextMessageEnd),\n messageId: z.string(),\n});\n\nexport const LegacyActionExecutionStart = z.object({\n type: z.literal(LegacyRuntimeEventTypes.enum.ActionExecutionStart),\n actionExecutionId: z.string(),\n actionName: z.string(),\n parentMessageId: z.string().optional(),\n});\n\nexport const LegacyActionExecutionArgs = z.object({\n type: z.literal(LegacyRuntimeEventTypes.enum.ActionExecutionArgs),\n actionExecutionId: z.string(),\n args: z.string(),\n});\n\nexport const LegacyActionExecutionEnd = z.object({\n type: z.literal(LegacyRuntimeEventTypes.enum.ActionExecutionEnd),\n actionExecutionId: z.string(),\n});\n\nexport const LegacyActionExecutionResult = z.object({\n type: z.literal(LegacyRuntimeEventTypes.enum.ActionExecutionResult),\n actionName: z.string(),\n actionExecutionId: z.string(),\n result: z.string(),\n});\n\nexport const LegacyAgentStateMessage = z.object({\n type: z.literal(LegacyRuntimeEventTypes.enum.AgentStateMessage),\n threadId: z.string(),\n agentName: z.string(),\n nodeName: z.string(),\n runId: z.string(),\n active: z.boolean(),\n role: z.string(),\n state: z.string(),\n running: z.boolean(),\n});\n\nexport const LegacyMetaEvent = z.object({\n type: z.literal(LegacyRuntimeEventTypes.enum.MetaEvent),\n name: LegacyRuntimeMetaEventName,\n value: z.any(),\n});\n\n\nexport const LegacyRunError = z.object({\n type: z.literal(LegacyRuntimeEventTypes.enum.RunError),\n message: z.string(),\n code: z.string().optional(),\n});\n\nexport const LegacyRuntimeProtocolEvent = z.discriminatedUnion(\"type\", [\n LegacyTextMessageStart,\n LegacyTextMessageContent,\n LegacyTextMessageEnd,\n LegacyActionExecutionStart,\n LegacyActionExecutionArgs,\n LegacyActionExecutionEnd,\n LegacyActionExecutionResult,\n LegacyAgentStateMessage,\n LegacyMetaEvent,\n LegacyRunError,\n]);\n\n// Protocol Event type exports\nexport type RuntimeEventTypes = z.infer<typeof LegacyRuntimeEventTypes>;\nexport type RuntimeMetaEventName = z.infer<typeof LegacyRuntimeMetaEventName>;\nexport type LegacyTextMessageStart = z.infer<typeof LegacyTextMessageStart>;\nexport type LegacyTextMessageContent = z.infer<typeof LegacyTextMessageContent>;\nexport type LegacyTextMessageEnd = z.infer<typeof LegacyTextMessageEnd>;\nexport type LegacyActionExecutionStart = z.infer<typeof LegacyActionExecutionStart>;\nexport type LegacyActionExecutionArgs = z.infer<typeof LegacyActionExecutionArgs>;\nexport type LegacyActionExecutionEnd = z.infer<typeof LegacyActionExecutionEnd>;\nexport type LegacyActionExecutionResult = z.infer<typeof LegacyActionExecutionResult>;\nexport type LegacyAgentStateMessage = z.infer<typeof LegacyAgentStateMessage>;\nexport type LegacyMetaEvent = z.infer<typeof LegacyMetaEvent>;\nexport type LegacyRuntimeProtocolEvent = z.infer<typeof LegacyRuntimeProtocolEvent>;\nexport type LegacyRunError = z.infer<typeof LegacyRunError>;\n\n// Message schemas (with kind discriminator)\nexport const LegacyTextMessageSchema = z.object({\n id: z.string(),\n role: z.string(),\n content: z.string(),\n parentMessageId: z.string().optional(),\n});\n\nexport const LegacyActionExecutionMessageSchema = z.object({\n id: z.string(),\n name: z.string(),\n arguments: z.any(),\n parentMessageId: z.string().optional(),\n});\n\nexport const LegacyResultMessageSchema = z.object({\n id: z.string(),\n result: z.any(),\n actionExecutionId: z.string(),\n actionName: z.string(),\n});\n\n// Message type exports\nexport type LegacyTextMessage = z.infer<typeof LegacyTextMessageSchema>;\nexport type LegacyActionExecutionMessage = z.infer<typeof LegacyActionExecutionMessageSchema>;\nexport type LegacyResultMessage = z.infer<typeof LegacyResultMessageSchema>;\nexport type LegacyMessage = LegacyTextMessage | LegacyActionExecutionMessage | LegacyResultMessage;\n", "import { mergeMap } from \"rxjs/operators\";\nimport jsonpatch from \"fast-json-patch\";\n\nimport {\n BaseEvent,\n EventType,\n TextMessageStartEvent,\n TextMessageContentEvent,\n TextMessageEndEvent,\n ToolCallStartEvent,\n ToolCallArgsEvent,\n ToolCallEndEvent,\n ToolCallResultEvent,\n CustomEvent,\n StateSnapshotEvent,\n StepStartedEvent,\n Message,\n StateDeltaEvent,\n MessagesSnapshotEvent,\n ToolCall,\n RunErrorEvent,\n} from \"@ag-ui/core\";\nimport { Observable } from \"rxjs\";\nimport {\n LegacyTextMessageStart,\n LegacyTextMessageContent,\n LegacyTextMessageEnd,\n LegacyActionExecutionStart,\n LegacyActionExecutionArgs,\n LegacyActionExecutionEnd,\n LegacyRuntimeEventTypes,\n LegacyRuntimeProtocolEvent,\n LegacyMetaEvent,\n LegacyAgentStateMessage,\n LegacyMessage,\n LegacyTextMessage,\n LegacyActionExecutionMessage,\n LegacyResultMessage,\n LegacyActionExecutionResult,\n LegacyRunError\n} from \"./types\";\nimport untruncateJson from \"untruncate-json\";\n\nconst flattenMessageContentToText = (content: Message[\"content\"]) => {\n if (typeof content === \"string\") {\n return content;\n }\n\n if (!Array.isArray(content)) {\n return undefined;\n }\n\n const textParts = content\n .filter((part): part is { type: \"text\"; text: string } => part.type === \"text\")\n .map((part) => part.text)\n .filter((text) => text.length > 0);\n\n if (textParts.length === 0) {\n return undefined;\n }\n\n return textParts.join(\"\\n\");\n};\n\ninterface PredictStateValue {\n state_key: string;\n tool: string;\n tool_argument: string;\n}\n\nexport const convertToLegacyEvents =\n (threadId: string, runId: string, agentName: string) =>\n (events$: Observable<BaseEvent>): Observable<LegacyRuntimeProtocolEvent> => {\n let currentState: any = {};\n let running = true;\n let active = true;\n let nodeName = \"\";\n let syncedMessages: Message[] | null = null;\n let predictState: PredictStateValue[] | null = null;\n let currentToolCalls: ToolCall[] = [];\n let toolCallNames: Record<string, string> = {};\n\n const updateCurrentState = (newState: any) => {\n // the legacy protocol will only support object state\n if (typeof newState === \"object\" && newState !== null) {\n if (\"messages\" in newState) {\n delete newState.messages;\n }\n currentState = newState;\n }\n };\n\n return events$.pipe(\n mergeMap((event) => {\n switch (event.type) {\n case EventType.TEXT_MESSAGE_START: {\n const startEvent = event as TextMessageStartEvent;\n return [\n {\n type: LegacyRuntimeEventTypes.enum.TextMessageStart,\n messageId: startEvent.messageId,\n role: startEvent.role,\n } as LegacyTextMessageStart,\n ];\n }\n case EventType.TEXT_MESSAGE_CONTENT: {\n const contentEvent = event as TextMessageContentEvent;\n return [\n {\n type: LegacyRuntimeEventTypes.enum.TextMessageContent,\n messageId: contentEvent.messageId,\n content: contentEvent.delta,\n } as LegacyTextMessageContent,\n ];\n }\n case EventType.TEXT_MESSAGE_END: {\n const endEvent = event as TextMessageEndEvent;\n return [\n {\n type: LegacyRuntimeEventTypes.enum.TextMessageEnd,\n messageId: endEvent.messageId,\n } as LegacyTextMessageEnd,\n ];\n }\n case EventType.TOOL_CALL_START: {\n const startEvent = event as ToolCallStartEvent;\n\n currentToolCalls.push({\n id: startEvent.toolCallId,\n type: \"function\",\n function: {\n name: startEvent.toolCallName,\n arguments: \"\",\n },\n });\n\n active = true;\n toolCallNames[startEvent.toolCallId] = startEvent.toolCallName;\n\n return [\n {\n type: LegacyRuntimeEventTypes.enum.ActionExecutionStart,\n actionExecutionId: startEvent.toolCallId,\n actionName: startEvent.toolCallName,\n parentMessageId: startEvent.parentMessageId,\n } as LegacyActionExecutionStart,\n ];\n }\n case EventType.TOOL_CALL_ARGS: {\n const argsEvent = event as ToolCallArgsEvent;\n\n // Find the tool call by ID instead of using the last one\n const currentToolCall = currentToolCalls.find((tc) => tc.id === argsEvent.toolCallId);\n if (!currentToolCall) {\n console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${argsEvent.toolCallId}'`);\n return [];\n }\n\n currentToolCall.function.arguments += argsEvent.delta;\n let didUpdateState = false;\n\n if (predictState) {\n let currentPredictState = predictState.find(\n (s) => s.tool == currentToolCall.function.name,\n );\n\n if (currentPredictState) {\n try {\n const currentArgs = JSON.parse(\n untruncateJson(currentToolCall.function.arguments),\n );\n if (\n currentPredictState.tool_argument &&\n currentPredictState.tool_argument in currentArgs\n ) {\n updateCurrentState({\n ...currentState,\n [currentPredictState.state_key]:\n currentArgs[currentPredictState.tool_argument],\n });\n didUpdateState = true;\n } else if (!currentPredictState.tool_argument) {\n updateCurrentState({\n ...currentState,\n [currentPredictState.state_key]: currentArgs,\n });\n didUpdateState = true;\n }\n } catch (e) {}\n }\n }\n\n return [\n {\n type: LegacyRuntimeEventTypes.enum.ActionExecutionArgs,\n actionExecutionId: argsEvent.toolCallId,\n args: argsEvent.delta,\n } as LegacyActionExecutionArgs,\n ...(didUpdateState\n ? [\n {\n type: LegacyRuntimeEventTypes.enum.AgentStateMessage,\n threadId,\n agentName,\n nodeName,\n runId,\n running,\n role: \"assistant\",\n state: JSON.stringify(currentState),\n active,\n },\n ]\n : []),\n ];\n }\n case EventType.TOOL_CALL_END: {\n const endEvent = event as ToolCallEndEvent;\n return [\n {\n type: LegacyRuntimeEventTypes.enum.ActionExecutionEnd,\n actionExecutionId: endEvent.toolCallId,\n } as LegacyActionExecutionEnd,\n ];\n }\n case EventType.TOOL_CALL_RESULT: {\n const resultEvent = event as ToolCallResultEvent;\n return [\n {\n type: LegacyRuntimeEventTypes.enum.ActionExecutionResult,\n actionExecutionId: resultEvent.toolCallId,\n result: resultEvent.content,\n actionName: toolCallNames[resultEvent.toolCallId] || \"unknown\",\n } as LegacyActionExecutionResult,\n ];\n }\n case EventType.RAW: {\n // The legacy protocol doesn't support raw events\n return [];\n }\n case EventType.CUSTOM: {\n const customEvent = event as CustomEvent;\n switch (customEvent.name) {\n case \"Exit\":\n running = false;\n break;\n case \"PredictState\":\n predictState = customEvent.value as PredictStateValue[];\n break;\n }\n\n return [\n {\n type: LegacyRuntimeEventTypes.enum.MetaEvent,\n name: customEvent.name,\n value: customEvent.value,\n } as LegacyMetaEvent,\n ];\n }\n case EventType.STATE_SNAPSHOT: {\n const stateEvent = event as StateSnapshotEvent;\n updateCurrentState(stateEvent.snapshot);\n\n return [\n {\n type: LegacyRuntimeEventTypes.enum.AgentStateMessage,\n threadId,\n agentName,\n nodeName,\n runId,\n running,\n role: \"assistant\",\n state: JSON.stringify(currentState),\n active,\n } as LegacyAgentStateMessage,\n ];\n }\n case EventType.STATE_DELTA: {\n const deltaEvent = event as StateDeltaEvent;\n const result = jsonpatch.applyPatch(currentState, deltaEvent.delta, true, false);\n if (!result) {\n return [];\n }\n updateCurrentState(result.newDocument);\n\n return [\n {\n type: LegacyRuntimeEventTypes.enum.AgentStateMessage,\n threadId,\n agentName,\n nodeName,\n runId,\n running,\n role: \"assistant\",\n state: JSON.stringify(currentState),\n active,\n } as LegacyAgentStateMessage,\n ];\n }\n case EventType.MESSAGES_SNAPSHOT: {\n const messagesSnapshot = event as MessagesSnapshotEvent;\n syncedMessages = messagesSnapshot.messages;\n return [\n {\n type: LegacyRuntimeEventTypes.enum.AgentStateMessage,\n threadId,\n agentName,\n nodeName,\n runId,\n running,\n role: \"assistant\",\n state: JSON.stringify({\n ...currentState,\n ...(syncedMessages ? { messages: syncedMessages } : {}),\n }),\n active: true,\n } as LegacyAgentStateMessage,\n ];\n }\n case EventType.RUN_STARTED: {\n // There is nothing to do in the legacy protocol\n return [];\n }\n case EventType.RUN_FINISHED: {\n if (syncedMessages) {\n currentState.messages = syncedMessages;\n }\n\n // Only do an update if state is not empty\n if (Object.keys(currentState).length === 0) {\n return [];\n }\n\n return [\n {\n type: LegacyRuntimeEventTypes.enum.AgentStateMessage,\n threadId,\n agentName,\n nodeName,\n runId,\n running,\n role: \"assistant\",\n state: JSON.stringify({\n ...currentState,\n ...(syncedMessages\n ? {\n messages: convertMessagesToLegacyFormat(syncedMessages),\n }\n : {}),\n }),\n active: false,\n } as LegacyAgentStateMessage,\n ];\n }\n case EventType.RUN_ERROR: {\n const errorEvent = event as RunErrorEvent;\n return [\n {\n type: LegacyRuntimeEventTypes.enum.RunError,\n message: errorEvent.message,\n code: errorEvent.code,\n } as LegacyRunError,\n ];\n }\n case EventType.STEP_STARTED: {\n const stepStarted = event as StepStartedEvent;\n nodeName = stepStarted.stepName;\n\n currentToolCalls = [];\n predictState = null;\n\n return [\n {\n type: LegacyRuntimeEventTypes.enum.AgentStateMessage,\n threadId,\n agentName,\n nodeName,\n runId,\n running,\n role: \"assistant\",\n state: JSON.stringify(currentState),\n active: true,\n } as LegacyAgentStateMessage,\n ];\n }\n case EventType.STEP_FINISHED: {\n currentToolCalls = [];\n predictState = null;\n\n return [\n {\n type: LegacyRuntimeEventTypes.enum.AgentStateMessage,\n threadId,\n agentName,\n nodeName,\n runId,\n running,\n role: \"assistant\",\n state: JSON.stringify(currentState),\n active: false,\n } as LegacyAgentStateMessage,\n ];\n }\n default: {\n return [];\n }\n }\n }),\n );\n };\n\nexport function convertMessagesToLegacyFormat(messages: Message[]): LegacyMessage[] {\n const result: LegacyMessage[] = [];\n\n for (const message of messages) {\n if (message.role === \"assistant\" || message.role === \"user\" || message.role === \"system\") {\n const textContent = flattenMessageContentToText(message.content);\n if (textContent) {\n const textMessage: LegacyTextMessage = {\n id: message.id,\n role: message.role,\n content: textContent,\n };\n result.push(textMessage);\n }\n if (message.role === \"assistant\" && message.toolCalls && message.toolCalls.length > 0) {\n for (const toolCall of message.toolCalls) {\n const actionExecutionMessage: LegacyActionExecutionMessage = {\n id: toolCall.id,\n name: toolCall.function.name,\n arguments: JSON.parse(toolCall.function.arguments),\n parentMessageId: message.id,\n };\n result.push(actionExecutionMessage);\n }\n }\n } else if (message.role === \"tool\") {\n let actionName = \"unknown\";\n for (const m of messages) {\n if (m.role === \"assistant\" && m.toolCalls?.length) {\n for (const toolCall of m.toolCalls) {\n if (toolCall.id === message.toolCallId) {\n actionName = toolCall.function.name;\n break;\n }\n }\n }\n }\n const toolMessage: LegacyResultMessage = {\n id: message.id,\n result: message.content,\n actionExecutionId: message.toolCallId,\n actionName,\n };\n result.push(toolMessage);\n }\n }\n\n return result;\n}\n", "import { mergeMap, Observable, finalize } from \"rxjs\";\nimport {\n BaseEvent,\n TextMessageChunkEvent,\n TextMessageContentEvent,\n TextMessageEndEvent,\n TextMessageStartEvent,\n ToolCallArgsEvent,\n ToolCallChunkEvent,\n ToolCallEndEvent,\n ToolCallStartEvent,\n ReasoningMessageChunkEvent,\n ReasoningMessageContentEvent,\n ReasoningMessageEndEvent,\n ReasoningMessageStartEvent,\n} from \"@ag-ui/core\";\nimport { EventType } from \"@ag-ui/core\";\nimport { type DebugLoggerInput, resolveDebugLogger } from \"@/debug-logger\";\n\ninterface TextMessageFields {\n messageId: string;\n name?: string;\n}\n\ninterface ToolCallFields {\n toolCallId: string;\n toolCallName: string;\n parentMessageId?: string;\n}\n\ninterface ReasoningMessageFields {\n messageId: string;\n}\n\nexport const transformChunks =\n (debugLogger?: DebugLoggerInput) =>\n (events$: Observable<BaseEvent>): Observable<BaseEvent> => {\n const log = resolveDebugLogger(debugLogger);\n let textMessageFields: TextMessageFields | undefined;\n let toolCallFields: ToolCallFields | undefined;\n let reasoningMessageFields: ReasoningMessageFields | undefined;\n let mode: \"text\" | \"tool\" | \"reasoning\" | undefined;\n\n const closeTextMessage = () => {\n if (!textMessageFields || mode !== \"text\") {\n throw new Error(\"No text message to close\");\n }\n const event = {\n type: EventType.TEXT_MESSAGE_END,\n messageId: textMessageFields.messageId,\n } as TextMessageEndEvent;\n mode = undefined;\n textMessageFields = undefined;\n\n log?.event(\"TRANSFORM\", \"TEXT_MESSAGE_END\", event, {\n messageId: event.messageId,\n });\n\n return event;\n };\n\n const closeToolCall = () => {\n if (!toolCallFields || mode !== \"tool\") {\n throw new Error(\"No tool call to close\");\n }\n const event = {\n type: EventType.TOOL_CALL_END,\n toolCallId: toolCallFields.toolCallId,\n } as ToolCallEndEvent;\n mode = undefined;\n toolCallFields = undefined;\n\n log?.event(\"TRANSFORM\", \"TOOL_CALL_END\", event, {\n toolCallId: event.toolCallId,\n });\n\n return event;\n };\n\n const closeReasoningMessage = () => {\n if (!reasoningMessageFields || mode !== \"reasoning\") {\n throw new Error(\"No reasoning message to close\");\n }\n const event = {\n type: EventType.REASONING_MESSAGE_END,\n messageId: reasoningMessageFields.messageId,\n } as ReasoningMessageEndEvent;\n mode = undefined;\n reasoningMessageFields = undefined;\n\n log?.event(\"TRANSFORM\", \"REASONING_MESSAGE_END\", event, {\n messageId: event.messageId,\n });\n\n return event;\n };\n\n const closePendingEvent = () => {\n if (mode === \"text\") {\n return [closeTextMessage()];\n }\n if (mode === \"tool\") {\n return [closeToolCall()];\n }\n if (mode === \"reasoning\") {\n return [closeReasoningMessage()];\n }\n return [];\n };\n\n return events$.pipe(\n mergeMap((event) => {\n switch (event.type) {\n case EventType.TEXT_MESSAGE_START:\n case EventType.TEXT_MESSAGE_CONTENT:\n case EventType.TEXT_MESSAGE_END:\n case EventType.TOOL_CALL_START:\n case EventType.TOOL_CALL_ARGS:\n case EventType.TOOL_CALL_END:\n case EventType.TOOL_CALL_RESULT:\n case EventType.STATE_SNAPSHOT:\n case EventType.STATE_DELTA:\n case EventType.MESSAGES_SNAPSHOT:\n case EventType.CUSTOM:\n case EventType.RUN_STARTED:\n case EventType.RUN_FINISHED:\n case EventType.RUN_ERROR:\n case EventType.STEP_STARTED:\n case EventType.STEP_FINISHED:\n case EventType.THINKING_START:\n case EventType.THINKING_END:\n case EventType.THINKING_TEXT_MESSAGE_START:\n case EventType.THINKING_TEXT_MESSAGE_CONTENT:\n case EventType.THINKING_TEXT_MESSAGE_END:\n case EventType.REASONING_START:\n case EventType.REASONING_MESSAGE_START:\n case EventType.REASONING_MESSAGE_CONTENT:\n case EventType.REASONING_MESSAGE_END:\n case EventType.REASONING_END:\n return [...closePendingEvent(), event];\n case EventType.RAW:\n case EventType.ACTIVITY_SNAPSHOT:\n case EventType.ACTIVITY_DELTA:\n case EventType.REASONING_ENCRYPTED_VALUE:\n return [event];\n case EventType.TEXT_MESSAGE_CHUNK:\n const messageChunkEvent = event as TextMessageChunkEvent;\n const textMessageResult = [];\n if (\n // we are not in a text message\n mode !== \"text\" ||\n // or the message id is different\n (messageChunkEvent.messageId !== undefined &&\n messageChunkEvent.messageId !== textMessageFields?.messageId)\n ) {\n // close the current message if any\n textMessageResult.push(...closePendingEvent());\n }\n\n // we are not in a text message, start a new one\n if (mode !== \"text\") {\n if (messageChunkEvent.messageId === undefined) {\n throw new Error(\"First TEXT_MESSAGE_CHUNK must have a messageId\");\n }\n\n textMessageFields = {\n messageId: messageChunkEvent.messageId,\n name: messageChunkEvent.name,\n };\n mode = \"text\";\n\n const textMessageStartEvent = {\n type: EventType.TEXT_MESSAGE_START,\n messageId: messageChunkEvent.messageId,\n role: messageChunkEvent.role || \"assistant\",\n ...(messageChunkEvent.name !== undefined && { name: messageChunkEvent.name }),\n } as TextMessageStartEvent;\n\n textMessageResult.push(textMessageStartEvent);\n\n log?.event(\"TRANSFORM\", \"TEXT_MESSAGE_START\", textMessageStartEvent, {\n messageId: messageChunkEvent.messageId,\n });\n }\n\n if (messageChunkEvent.delta !== undefined) {\n const textMessageContentEvent = {\n type: EventType.TEXT_MESSAGE_CONTENT,\n messageId: textMessageFields!.messageId,\n delta: messageChunkEvent.delta,\n } as TextMessageContentEvent;\n\n textMessageResult.push(textMessageContentEvent);\n\n log?.event(\"TRANSFORM\", \"TEXT_MESSAGE_CONTENT\", textMessageContentEvent, {\n messageId: textMessageFields!.messageId,\n });\n }\n\n return textMessageResult;\n case EventType.TOOL_CALL_CHUNK:\n const toolCallChunkEvent = event as ToolCallChunkEvent;\n const toolMessageResult = [];\n if (\n // we are not in a text message\n mode !== \"tool\" ||\n // or the tool call id is different\n (toolCallChunkEvent.toolCallId !== undefined &&\n toolCallChunkEvent.toolCallId !== toolCallFields?.toolCallId)\n ) {\n // close the current message if any\n toolMessageResult.push(...closePendingEvent());\n }\n\n if (mode !== \"tool\") {\n if (toolCallChunkEvent.toolCallId === undefined) {\n throw new Error(\"First TOOL_CALL_CHUNK must have a toolCallId\");\n }\n if (toolCallChunkEvent.toolCallName === undefined) {\n throw new Error(\"First TOOL_CALL_CHUNK must have a toolCallName\");\n }\n toolCallFields = {\n toolCallId: toolCallChunkEvent.toolCallId,\n toolCallName: toolCallChunkEvent.toolCallName,\n parentMessageId: toolCallChunkEvent.parentMessageId,\n };\n mode = \"tool\";\n\n const toolCallStartEvent = {\n type: EventType.TOOL_CALL_START,\n toolCallId: toolCallChunkEvent.toolCallId,\n toolCallName: toolCallChunkEvent.toolCallName,\n parentMessageId: toolCallChunkEvent.parentMessageId,\n } as ToolCallStartEvent;\n\n toolMessageResult.push(toolCallStartEvent);\n\n log?.event(\"TRANSFORM\", \"TOOL_CALL_START\", toolCallStartEvent, {\n toolCallId: toolCallChunkEvent.toolCallId,\n toolCallName: toolCallChunkEvent.toolCallName,\n });\n }\n\n if (toolCallChunkEvent.delta !== undefined) {\n const toolCallArgsEvent = {\n type: EventType.TOOL_CALL_ARGS,\n toolCallId: toolCallFields!.toolCallId,\n delta: toolCallChunkEvent.delta,\n } as ToolCallArgsEvent;\n\n toolMessageResult.push(toolCallArgsEvent);\n\n log?.event(\"TRANSFORM\", \"TOOL_CALL_ARGS\", toolCallArgsEvent, {\n toolCallId: toolCallFields!.toolCallId,\n });\n }\n\n return toolMessageResult;\n case EventType.REASONING_MESSAGE_CHUNK:\n const reasoningChunkEvent = event as ReasoningMessageChunkEvent;\n const reasoningMessageResult = [];\n if (\n // we are not in a reasoning message\n mode !== \"reasoning\" ||\n // or the message id is different\n (reasoningChunkEvent.messageId &&\n reasoningChunkEvent.messageId !== reasoningMessageFields?.messageId)\n ) {\n // close the current message if any\n reasoningMessageResult.push(...closePendingEvent());\n }\n\n // we are not in a reasoning message, start a new one\n if (mode !== \"reasoning\") {\n if (reasoningChunkEvent.messageId === undefined) {\n throw new Error(\"First REASONING_MESSAGE_CHUNK must have a messageId\");\n }\n\n reasoningMessageFields = {\n messageId: reasoningChunkEvent.messageId,\n };\n mode = \"reasoning\";\n\n const reasoningMessageStartEvent = {\n type: EventType.REASONING_MESSAGE_START,\n messageId: reasoningChunkEvent.messageId,\n } as ReasoningMessageStartEvent;\n reasoningMessageResult.push(reasoningMessageStartEvent);\n\n log?.event(\"TRANSFORM\", \"REASONING_MESSAGE_START\", reasoningMessageStartEvent, {\n messageId: reasoningChunkEvent.messageId,\n });\n }\n\n if (reasoningChunkEvent.delta !== undefined) {\n const reasoningMessageContentEvent = {\n type: EventType.REASONING_MESSAGE_CONTENT,\n messageId: reasoningMessageFields!.messageId,\n delta: reasoningChunkEvent.delta,\n } as ReasoningMessageContentEvent;\n\n reasoningMessageResult.push(reasoningMessageContentEvent);\n\n log?.event(\"TRANSFORM\", \"REASONING_MESSAGE_CONTENT\", reasoningMessageContentEvent, {\n messageId: reasoningMessageFields!.messageId,\n });\n }\n\n return reasoningMessageResult;\n }\n const _exhaustiveCheck: never = event.type;\n return [];\n }),\n finalize(() => {\n // This ensures that we close any pending events when the source observable completes\n closePendingEvent();\n }),\n );\n };\n", "import { AbstractAgent } from \"@/agent\";\nimport { RunAgentInput, BaseEvent, Message } from \"@ag-ui/core\";\nimport { Observable, ReplaySubject } from \"rxjs\";\nimport { concatMap } from \"rxjs/operators\";\nimport { transformChunks } from \"@/chunks\";\nimport { defaultApplyEvents } from \"@/apply\";\nimport { structuredClone_ } from \"@/utils\";\n\nexport type MiddlewareFunction = (\n input: RunAgentInput,\n next: AbstractAgent,\n) => Observable<BaseEvent>;\n\nexport interface EventWithState {\n event: BaseEvent;\n messages: Message[];\n state: any;\n}\n\nexport abstract class Middleware {\n abstract run(input: RunAgentInput, next: AbstractAgent): Observable<BaseEvent>;\n\n /**\n * Runs the next agent in the chain with automatic chunk transformation.\n */\n protected runNext(input: RunAgentInput, next: AbstractAgent): Observable<BaseEvent> {\n return next.run(input).pipe(\n transformChunks(false), // Always transform chunks to full events\n );\n }\n\n /**\n * Runs the next agent and tracks state, providing current messages and state with each event.\n * The messages and state represent the state AFTER the event has been applied.\n */\n protected runNextWithState(\n input: RunAgentInput,\n next: AbstractAgent,\n ): Observable<EventWithState> {\n let currentMessages = structuredClone_(input.messages || []);\n let currentState = structuredClone_(input.state || {});\n\n // Use a ReplaySubject to feed events one by one\n const eventSubject = new ReplaySubject<BaseEvent>();\n\n // Set up defaultApplyEvents to process events\n const mutations$ = defaultApplyEvents(input, eventSubject, next, []);\n\n // Subscribe to track state changes\n mutations$.subscribe((mutation) => {\n if (mutation.messages !== undefined) {\n currentMessages = mutation.messages;\n }\n if (mutation.state !== undefined) {\n currentState = mutation.state;\n }\n });\n\n return this.runNext(input, next).pipe(\n concatMap(async (event) => {\n // Feed the event to defaultApplyEvents and wait for it to process\n eventSubject.next(event);\n\n // Give defaultApplyEvents a chance to process\n await new Promise((resolve) => setTimeout(resolve, 0));\n\n // Return event with current state\n return {\n event,\n messages: structuredClone_(currentMessages),\n state: structuredClone_(currentState),\n };\n }),\n );\n }\n}\n\n// Wrapper class to convert a function into a Middleware instance\nexport class FunctionMiddleware extends Middleware {\n constructor(private fn: MiddlewareFunction) {\n super();\n }\n\n run(input: RunAgentInput, next: AbstractAgent): Observable<BaseEvent> {\n return this.fn(input, next);\n }\n}\n", "import { Middleware } from \"./middleware\";\nimport { AbstractAgent } from \"@/agent\";\nimport {\n RunAgentInput,\n BaseEvent,\n EventType,\n ToolCallStartEvent,\n ToolCallArgsEvent,\n ToolCallEndEvent,\n ToolCallResultEvent,\n} from \"@ag-ui/core\";\nimport { Observable } from \"rxjs\";\nimport { filter } from \"rxjs/operators\";\n\ntype FilterToolCallsConfig =\n | { allowedToolCalls: string[]; disallowedToolCalls?: never }\n | { disallowedToolCalls: string[]; allowedToolCalls?: never };\n\nexport class FilterToolCallsMiddleware extends Middleware {\n private blockedToolCallIds = new Set<string>();\n private readonly allowedTools?: Set<string>;\n private readonly disallowedTools?: Set<string>;\n\n constructor(config: FilterToolCallsConfig) {\n super();\n\n // Runtime validation (belt and suspenders approach)\n if (config.allowedToolCalls && config.disallowedToolCalls) {\n throw new Error(\"Cannot specify both allowedToolCalls and disallowedToolCalls\");\n }\n\n if (!config.allowedToolCalls && !config.disallowedToolCalls) {\n throw new Error(\"Must specify either allowedToolCalls or disallowedToolCalls\");\n }\n\n if (config.allowedToolCalls) {\n this.allowedTools = new Set(config.allowedToolCalls);\n } else if (config.disallowedToolCalls) {\n this.disallowedTools = new Set(config.disallowedToolCalls);\n }\n }\n\n run(input: RunAgentInput, next: AbstractAgent): Observable<BaseEvent> {\n // Use runNext which already includes transformChunks\n return this.runNext(input, next).pipe(\n filter((event) => {\n // Handle TOOL_CALL_START events\n if (event.type === EventType.TOOL_CALL_START) {\n const toolCallStartEvent = event as ToolCallStartEvent;\n const shouldFilter = this.shouldFilterTool(toolCallStartEvent.toolCallName);\n\n if (shouldFilter) {\n // Track this tool call ID as blocked\n this.blockedToolCallIds.add(toolCallStartEvent.toolCallId);\n return false; // Filter out this event\n }\n\n return true; // Allow this event\n }\n\n // Handle TOOL_CALL_ARGS events\n if (event.type === EventType.TOOL_CALL_ARGS) {\n const toolCallArgsEvent = event as ToolCallArgsEvent;\n return !this.blockedToolCallIds.has(toolCallArgsEvent.toolCallId);\n }\n\n // Handle TOOL_CALL_END events\n if (event.type === EventType.TOOL_CALL_END) {\n const toolCallEndEvent = event as ToolCallEndEvent;\n return !this.blockedToolCallIds.has(toolCallEndEvent.toolCallId);\n }\n\n // Handle TOOL_CALL_RESULT events\n if (event.type === EventType.TOOL_CALL_RESULT) {\n const toolCallResultEvent = event as ToolCallResultEvent;\n const isBlocked = this.blockedToolCallIds.has(toolCallResultEvent.toolCallId);\n\n if (isBlocked) {\n // Clean up the blocked ID after the last event\n this.blockedToolCallIds.delete(toolCallResultEvent.toolCallId);\n return false;\n }\n\n return true;\n }\n\n // Allow all other events through\n return true;\n }),\n );\n }\n\n private shouldFilterTool(toolName: string): boolean {\n if (this.allowedTools) {\n // If using allowed list, filter out tools NOT in the list\n return !this.allowedTools.has(toolName);\n } else if (this.disallowedTools) {\n // If using disallowed list, filter out tools IN the list\n return this.disallowedTools.has(toolName);\n }\n\n return false;\n }\n}\n", "import { Middleware } from \"./middleware\";\nimport { AbstractAgent } from \"@/agent\";\nimport type { RunAgentInput, BaseEvent } from \"@ag-ui/core\";\nimport type { Observable } from \"rxjs\";\n\ntype InputMessage = RunAgentInput[\"messages\"][number];\n\nfunction sanitizeMessageContent(message: InputMessage): InputMessage {\n const rawContent = (message as { content?: unknown }).content;\n\n if (Array.isArray(rawContent)) {\n const concatenatedContent = rawContent\n .filter(\n (part): part is { type: \"text\"; text: string } =>\n typeof part === \"object\" &&\n part !== null &&\n \"type\" in part &&\n (part as { type: unknown }).type === \"text\" &&\n typeof (part as { text?: unknown }).text === \"string\",\n )\n .map((part) => part.text)\n .join(\"\");\n\n return {\n ...message,\n content: concatenatedContent,\n } as InputMessage;\n }\n\n if (typeof rawContent === \"string\") {\n return message;\n }\n\n return {\n ...message,\n content: \"\",\n } as InputMessage;\n}\n\n/**\n * Middleware placeholder that maintains compatibility with AG-UI 0.0.39 flows.\n * Currently it simply forwards all events to the next middleware/agent.\n */\nexport class BackwardCompatibility_0_0_39 extends Middleware {\n override run(input: RunAgentInput, next: AbstractAgent): Observable<BaseEvent> {\n const { parentRunId: _parentRunId, ...rest } = input;\n const sanitizedInput: RunAgentInput = {\n ...rest,\n messages: rest.messages.map(sanitizeMessageContent),\n } as RunAgentInput;\n\n return this.runNext(sanitizedInput, next);\n }\n}\n", "import { Middleware } from \"./middleware\";\nimport { AbstractAgent } from \"@/agent\";\nimport type { RunAgentInput, BaseEvent } from \"@ag-ui/core\";\nimport { EventType } from \"@ag-ui/core\";\nimport type { Observable } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\nimport { randomUUID } from \"@/utils\";\n\n// Event type strings for THINKING events (deprecated)\nconst THINKING_START = \"THINKING_START\";\nconst THINKING_END = \"THINKING_END\";\nconst THINKING_TEXT_MESSAGE_START = \"THINKING_TEXT_MESSAGE_START\";\nconst THINKING_TEXT_MESSAGE_CONTENT = \"THINKING_TEXT_MESSAGE_CONTENT\";\nconst THINKING_TEXT_MESSAGE_END = \"THINKING_TEXT_MESSAGE_END\";\n\n/**\n * Middleware that maps deprecated THINKING events to the new REASONING events.\n *\n * This ensures backward compatibility for agents that still emit legacy THINKING\n * events (THINKING_START, THINKING_END, THINKING_TEXT_MESSAGE_START, etc.)\n * by transforming them into the corresponding REASONING events.\n *\n * Event mapping:\n * - THINKING_START → REASONING_START\n * - THINKING_TEXT_MESSAGE_START → REASONING_MESSAGE_START\n * - THINKING_TEXT_MESSAGE_CONTENT → REASONING_MESSAGE_CONTENT\n * - THINKING_TEXT_MESSAGE_END → REASONING_MESSAGE_END\n * - THINKING_END → REASONING_END\n *\n */\nexport class BackwardCompatibility_0_0_45 extends Middleware {\n private currentReasoningId: string | null = null;\n private currentMessageId: string | null = null;\n\n private warnAboutTransformation(from: string, to: string) {\n if (\n typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\" &&\n process.env.SUPPRESS_TRANSFORMATION_WARNINGS\n )\n return;\n console.warn(\n `AG-UI is converting ${from} to ${to}. To remove this warning, upgrade your AG-UI integration package (e.g. @ag-ui/langgraph). To surpress it, set SUPPRESS_TRANSFORMATION_WARNINGS=true in your .env file.`,\n );\n }\n override run(input: RunAgentInput, next: AbstractAgent): Observable<BaseEvent> {\n // Reset state for each run\n this.currentReasoningId = null;\n this.currentMessageId = null;\n\n return this.runNext(input, next).pipe(map((event) => this.transformEvent(event)));\n }\n\n private transformEvent(event: BaseEvent): BaseEvent {\n const eventType = event.type as string;\n\n switch (eventType) {\n case THINKING_START: {\n this.currentReasoningId = randomUUID();\n const { title, ...rest } = event as BaseEvent & { title?: string };\n this.warnAboutTransformation(THINKING_START, EventType.REASONING_START);\n return {\n ...rest,\n type: EventType.REASONING_START,\n messageId: this.currentReasoningId,\n };\n }\n\n case THINKING_TEXT_MESSAGE_START: {\n this.currentMessageId = randomUUID();\n this.warnAboutTransformation(\n THINKING_TEXT_MESSAGE_START,\n EventType.REASONING_MESSAGE_START,\n );\n return {\n ...event,\n type: EventType.REASONING_MESSAGE_START,\n messageId: this.currentMessageId,\n role: \"assistant\" as const,\n };\n }\n\n case THINKING_TEXT_MESSAGE_CONTENT: {\n const { delta, ...rest } = event as BaseEvent & { delta: string };\n this.warnAboutTransformation(\n THINKING_TEXT_MESSAGE_CONTENT,\n EventType.REASONING_MESSAGE_CONTENT,\n );\n return {\n ...rest,\n type: EventType.REASONING_MESSAGE_CONTENT,\n messageId: this.currentMessageId ?? randomUUID(),\n delta,\n };\n }\n\n case THINKING_TEXT_MESSAGE_END: {\n const messageId = this.currentMessageId ?? randomUUID();\n this.warnAboutTransformation(THINKING_TEXT_MESSAGE_END, EventType.REASONING_MESSAGE_END);\n return {\n ...event,\n type: EventType.REASONING_MESSAGE_END,\n messageId,\n };\n }\n\n case THINKING_END: {\n const reasoningId = this.currentReasoningId ?? randomUUID();\n this.warnAboutTransformation(THINKING_END, EventType.REASONING_END);\n return {\n ...event,\n type: EventType.REASONING_END,\n messageId: reasoningId,\n };\n }\n\n default:\n return event;\n }\n }\n}\n", "import { Middleware } from \"./middleware\";\nimport { AbstractAgent } from \"@/agent\";\nimport type { RunAgentInput, BaseEvent } from \"@ag-ui/core\";\nimport type { Observable } from \"rxjs\";\n\ntype InputMessage = RunAgentInput[\"messages\"][number];\n\ninterface LegacyBinaryContent {\n type: \"binary\";\n mimeType: string;\n id?: string;\n url?: string;\n data?: string;\n filename?: string;\n}\n\ninterface NewContentPart {\n type: \"image\" | \"audio\" | \"video\" | \"document\";\n source: { type: \"data\"; value: string; mimeType: string } | { type: \"url\"; value: string; mimeType: string };\n metadata?: unknown;\n}\n\nfunction mimeTypeToContentType(mimeType: string): \"image\" | \"audio\" | \"video\" | \"document\" {\n if (mimeType.startsWith(\"image/\")) return \"image\";\n if (mimeType.startsWith(\"audio/\")) return \"audio\";\n if (mimeType.startsWith(\"video/\")) return \"video\";\n return \"document\";\n}\n\nfunction isLegacyBinaryContent(part: unknown): part is LegacyBinaryContent {\n return (\n typeof part === \"object\" &&\n part !== null &&\n \"type\" in part &&\n (part as { type: unknown }).type === \"binary\" &&\n \"mimeType\" in part &&\n typeof (part as { mimeType: unknown }).mimeType === \"string\"\n );\n}\n\nfunction convertBinaryToNewFormat(binary: LegacyBinaryContent): NewContentPart | LegacyBinaryContent {\n const contentType = mimeTypeToContentType(binary.mimeType);\n\n if (binary.data) {\n return {\n type: contentType,\n source: { type: \"data\", value: binary.data, mimeType: binary.mimeType },\n ...(binary.filename ? { metadata: { filename: binary.filename } } : {}),\n };\n }\n\n if (binary.url) {\n return {\n type: contentType,\n source: { type: \"url\", value: binary.url, mimeType: binary.mimeType },\n ...(binary.filename ? { metadata: { filename: binary.filename } } : {}),\n };\n }\n\n // If only `id` is present, we can't map to the new source format.\n // Return as-is — the schema still accepts BinaryInputContent.\n return binary;\n}\n\nfunction upgradeMessageContent(message: InputMessage): InputMessage {\n const rawContent = (message as { content?: unknown }).content;\n\n if (!Array.isArray(rawContent)) {\n return message;\n }\n\n const upgraded = rawContent.map((part: unknown) => {\n if (isLegacyBinaryContent(part)) {\n return convertBinaryToNewFormat(part);\n }\n return part;\n });\n\n return { ...message, content: upgraded } as InputMessage;\n}\n\n/**\n * Middleware that converts legacy BinaryInputContent entries (type: \"binary\")\n * to the new dedicated content types (image, audio, video, document) with\n * source discriminator.\n *\n * Old format (v0.0.47 and below):\n * { type: \"binary\", mimeType: \"image/png\", data: \"base64...\" }\n *\n * New format (v0.0.48+):\n * { type: \"image\", source: { type: \"data\", value: \"base64...\", mimeType: \"image/png\" } }\n *\n * Plain string content and TextInputContent pass through unchanged.\n * BinaryInputContent entries that only have `id` (no data/url) are left as-is\n * since they can't be mapped to the new source format.\n */\nexport class BackwardCompatibility_0_0_47 extends Middleware {\n override run(input: RunAgentInput, next: AbstractAgent): Observable<BaseEvent> {\n const upgradedInput: RunAgentInput = {\n ...input,\n messages: input.messages.map(upgradeMessageContent),\n };\n\n return this.runNext(upgradedInput, next);\n }\n}\n", "", "import { defaultApplyEvents } from \"@/apply/default\";\nimport {\n Message,\n State,\n RunAgentInput,\n BaseEvent,\n ToolCall,\n AssistantMessage,\n AgentCapabilities,\n} from \"@ag-ui/core\";\n\nimport {\n AgentConfig,\n AgentDebugConfig,\n RunAgentParameters,\n ResolvedAgentDebugConfig,\n resolveAgentDebugConfig,\n} from \"./types\";\nimport { DebugLogger, createDebugLogger } from \"@/debug-logger\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { structuredClone_ } from \"@/utils\";\nimport { compareVersions } from \"compare-versions\";\nimport { catchError, map, tap } from \"rxjs/operators\";\nimport { finalize } from \"rxjs/operators\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { pipe, Observable, from, of, EMPTY, Subject, defer } from \"rxjs\";\nimport { verifyEvents } from \"@/verify\";\nimport { convertToLegacyEvents } from \"@/legacy/convert\";\nimport { LegacyRuntimeProtocolEvent } from \"@/legacy/types\";\nimport { lastValueFrom } from \"rxjs\";\nimport { transformChunks } from \"@/chunks\";\nimport { AgentStateMutation, AgentSubscriber, runSubscribersWithMutation } from \"./subscriber\";\nimport { AGUIConnectNotImplementedError } from \"@ag-ui/core\";\nimport {\n Middleware,\n MiddlewareFunction,\n FunctionMiddleware,\n BackwardCompatibility_0_0_39,\n BackwardCompatibility_0_0_45,\n BackwardCompatibility_0_0_47,\n} from \"@/middleware\";\nimport packageJson from \"../../package.json\";\n\nexport interface RunAgentResult {\n result: any;\n newMessages: Message[];\n}\n\nexport abstract class AbstractAgent {\n public agentId?: string;\n public description: string;\n public threadId: string;\n public messages: Message[];\n public state: State;\n private _debug: ResolvedAgentDebugConfig;\n private _debugLogger: DebugLogger | undefined;\n public subscribers: AgentSubscriber[] = [];\n public isRunning: boolean = false;\n private middlewares: Middleware[] = [];\n // Emits to immediately detach from the active run (stop processing its stream)\n private activeRunDetach$?: Subject<void>;\n private activeRunCompletionPromise?: Promise<void>;\n\n get maxVersion() {\n return packageJson.version;\n }\n\n get debug(): ResolvedAgentDebugConfig {\n return this._debug;\n }\n\n set debug(value: AgentDebugConfig | ResolvedAgentDebugConfig) {\n this._debug = resolveAgentDebugConfig(value as AgentDebugConfig);\n this._debugLogger = createDebugLogger(this._debug);\n }\n\n get debugLogger(): DebugLogger | undefined {\n return this._debugLogger;\n }\n\n set debugLogger(value: DebugLogger | boolean | undefined) {\n if (typeof value === \"boolean\") {\n this._debugLogger = value\n ? createDebugLogger(resolveAgentDebugConfig(true))\n : undefined;\n } else {\n this._debugLogger = value;\n }\n }\n\n constructor({\n agentId,\n description,\n threadId,\n initialMessages,\n initialState,\n debug,\n }: AgentConfig = {}) {\n this.agentId = agentId;\n this.description = description ?? \"\";\n this.threadId = threadId ?? uuidv4();\n this.messages = structuredClone_(initialMessages ?? []);\n this.state = structuredClone_(initialState ?? {});\n this._debug = resolveAgentDebugConfig(debug);\n this._debugLogger = createDebugLogger(this._debug);\n\n if (compareVersions(this.maxVersion, \"0.0.39\") <= 0) {\n this.middlewares.unshift(new BackwardCompatibility_0_0_39());\n }\n\n // Auto-insert BackwardCompatibility_0_0_45 for backward compatibility\n // with legacy THINKING events (deprecated, will be removed in 1.0.0)\n if (compareVersions(this.maxVersion, \"0.0.45\") <= 0) {\n this.middlewares.unshift(new BackwardCompatibility_0_0_45());\n }\n\n // Auto-insert BackwardCompatibility_0_0_47 for backward compatibility\n // with legacy BinaryInputContent (maps to dedicated image/audio/video/document types)\n if (compareVersions(this.maxVersion, \"0.0.47\") <= 0) {\n this.middlewares.unshift(new BackwardCompatibility_0_0_47());\n }\n }\n\n public subscribe(subscriber: AgentSubscriber) {\n this.subscribers.push(subscriber);\n return {\n unsubscribe: () => {\n this.subscribers = this.subscribers.filter((s) => s !== subscriber);\n },\n };\n }\n\n abstract run(input: RunAgentInput): Observable<BaseEvent>;\n\n /**\n * Returns the agent's current capabilities.\n * Optional — subclasses implement this to advertise what they support.\n */\n getCapabilities?(): Promise<AgentCapabilities>;\n\n public use(...middlewares: (Middleware | MiddlewareFunction)[]): this {\n const normalizedMiddlewares = middlewares.map((middleware) =>\n typeof middleware === \"function\" ? new FunctionMiddleware(middleware) : middleware,\n );\n this.middlewares.push(...normalizedMiddlewares);\n return this;\n }\n\n public async runAgent(\n parameters?: RunAgentParameters,\n subscriber?: AgentSubscriber,\n ): Promise<RunAgentResult> {\n try {\n this.isRunning = true;\n this.agentId = this.agentId ?? uuidv4();\n const input = this.prepareRunAgentInput(parameters);\n\n this.debugLogger?.lifecycle(\"LIFECYCLE\", \"Run started:\", {\n agentId: this.agentId,\n threadId: this.threadId,\n });\n\n let result: any = undefined;\n const currentMessageIds = new Set(this.messages.map((message) => message.id));\n\n const subscribers: AgentSubscriber[] = [\n {\n onRunFinishedEvent: (params) => {\n result = params.result;\n },\n },\n ...this.subscribers,\n subscriber ?? {},\n ];\n\n await this.onInitialize(input, subscribers);\n\n // Per-run detachment signal + completion promise\n this.activeRunDetach$ = new Subject<void>();\n let resolveActiveRunCompletion: (() => void) | undefined;\n this.activeRunCompletionPromise = new Promise<void>((resolve) => {\n resolveActiveRunCompletion = resolve;\n });\n\n const pipeline = pipe(\n () => {\n // Build middleware chain using reduceRight so middlewares can intercept runs.\n if (this.middlewares.length === 0) {\n return this.run(input);\n }\n\n const chainedAgent = this.middlewares.reduceRight(\n (nextAgent: AbstractAgent, middleware) =>\n ({\n run: (i: RunAgentInput) => middleware.run(i, nextAgent),\n get messages() {\n return nextAgent.messages;\n },\n get state() {\n return nextAgent.state;\n },\n }) as AbstractAgent,\n this, // Original agent is the final 'next'\n );\n\n return chainedAgent.run(input);\n },\n transformChunks(this.debugLogger),\n verifyEvents(this.debugLogger),\n // Stop processing immediately when this run is detached\n (source$) => source$.pipe(takeUntil(this.activeRunDetach$!)),\n (source$) => this.apply(input, source$, subscribers),\n (source$) => this.processApplyEvents(input, source$, subscribers),\n catchError((error) => {\n this.debugLogger?.lifecycle(\"LIFECYCLE\", \"Run errored:\", {\n agentId: this.agentId,\n error: error instanceof Error ? error.message : String(error),\n });\n this.isRunning = false;\n return this.onError(input, error, subscribers);\n }),\n finalize(() => {\n this.debugLogger?.lifecycle(\"LIFECYCLE\", \"Run finished:\", {\n agentId: this.agentId,\n threadId: this.threadId,\n });\n this.isRunning = false;\n void this.onFinalize(input, subscribers);\n resolveActiveRunCompletion?.();\n resolveActiveRunCompletion = undefined;\n this.activeRunCompletionPromise = undefined;\n this.activeRunDetach$ = undefined;\n }),\n );\n\n await lastValueFrom(pipeline(of(null)));\n const newMessages = structuredClone_(this.messages).filter(\n (message: Message) => !currentMessageIds.has(message.id),\n );\n return { result, newMessages };\n } finally {\n this.isRunning = false;\n }\n }\n\n protected connect(input: RunAgentInput): Observable<BaseEvent> {\n throw new AGUIConnectNotImplementedError();\n }\n public async connectAgent(\n parameters?: RunAgentParameters,\n subscriber?: AgentSubscriber,\n ): Promise<RunAgentResult> {\n try {\n this.isRunning = true;\n this.agentId = this.agentId ?? uuidv4();\n const input = this.prepareRunAgentInput(parameters);\n let result: any = undefined;\n const currentMessageIds = new Set(this.messages.map((message) => message.id));\n\n const subscribers: AgentSubscriber[] = [\n {\n onRunFinishedEvent: (params) => {\n result = params.result;\n },\n },\n ...this.subscribers,\n subscriber ?? {},\n ];\n\n await this.onInitialize(input, subscribers);\n\n // Per-run detachment signal + completion promise\n this.activeRunDetach$ = new Subject<void>();\n let resolveActiveRunCompletion: (() => void) | undefined;\n this.activeRunCompletionPromise = new Promise<void>((resolve) => {\n resolveActiveRunCompletion = resolve;\n });\n\n const pipeline = pipe(\n () => defer(() => this.connect(input)),\n transformChunks(this.debugLogger),\n verifyEvents(this.debugLogger),\n // Stop processing immediately when this run is detached\n (source$) => source$.pipe(takeUntil(this.activeRunDetach$!)),\n (source$) => this.apply(input, source$, subscribers),\n (source$) => this.processApplyEvents(input, source$, subscribers),\n catchError((error) => {\n this.isRunning = false;\n if (!(error instanceof AGUIConnectNotImplementedError)) {\n return this.onError(input, error, subscribers);\n }\n return EMPTY;\n }),\n finalize(() => {\n this.isRunning = false;\n void this.onFinalize(input, subscribers);\n resolveActiveRunCompletion?.();\n resolveActiveRunCompletion = undefined;\n this.activeRunCompletionPromise = undefined;\n this.activeRunDetach$ = undefined;\n }),\n );\n\n // defaultValue prevents EmptyError when catchError returns EMPTY\n // (e.g. ConnectNotImplementedError path)\n await lastValueFrom(pipeline(of(null)), { defaultValue: undefined });\n const newMessages = structuredClone_(this.messages).filter(\n (message: Message) => !currentMessageIds.has(message.id),\n );\n return { result, newMessages };\n } finally {\n this.isRunning = false;\n }\n }\n\n public abortRun() {}\n\n public async detachActiveRun(): Promise<void> {\n if (!this.activeRunDetach$) {\n return;\n }\n const completion = this.activeRunCompletionPromise ?? Promise.resolve();\n this.activeRunDetach$.next();\n this.activeRunDetach$?.complete();\n await completion;\n }\n\n protected apply(\n input: RunAgentInput,\n events$: Observable<BaseEvent>,\n subscribers: AgentSubscriber[],\n ): Observable<AgentStateMutation> {\n return defaultApplyEvents(input, events$, this, subscribers, this.debugLogger);\n }\n\n protected processApplyEvents(\n input: RunAgentInput,\n events$: Observable<AgentStateMutation>,\n subscribers: AgentSubscriber[],\n ): Observable<AgentStateMutation> {\n return events$.pipe(\n tap((event) => {\n if (event.messages) {\n this.messages = event.messages;\n subscribers.forEach((subscriber) => {\n subscriber.onMessagesChanged?.({\n messages: this.messages,\n state: this.state,\n agent: this,\n input,\n });\n });\n }\n if (event.state) {\n this.state = event.state;\n subscribers.forEach((subscriber) => {\n subscriber.onStateChanged?.({\n state: this.state,\n messages: this.messages,\n agent: this,\n input,\n });\n });\n }\n }),\n );\n }\n\n protected prepareRunAgentInput(parameters?: RunAgentParameters): RunAgentInput {\n const clonedMessages = structuredClone_(this.messages) as Message[];\n const messagesWithoutActivity = clonedMessages.filter((message) => message.role !== \"activity\");\n\n return {\n threadId: this.threadId,\n runId: parameters?.runId || uuidv4(),\n tools: structuredClone_(parameters?.tools ?? []),\n context: structuredClone_(parameters?.context ?? []),\n forwardedProps: structuredClone_(parameters?.forwardedProps ?? {}),\n state: structuredClone_(this.state),\n messages: messagesWithoutActivity,\n };\n }\n\n protected async onInitialize(input: RunAgentInput, subscribers: AgentSubscriber[]) {\n const onRunInitializedMutation = await runSubscribersWithMutation(\n subscribers,\n this.messages,\n this.state,\n (subscriber, messages, state) =>\n subscriber.onRunInitialized?.({ messages, state, agent: this, input }),\n );\n if (\n onRunInitializedMutation.messages !== undefined ||\n onRunInitializedMutation.state !== undefined\n ) {\n if (onRunInitializedMutation.messages) {\n this.messages = onRunInitializedMutation.messages;\n input.messages = onRunInitializedMutation.messages;\n subscribers.forEach((subscriber) => {\n subscriber.onMessagesChanged?.({\n messages: this.messages,\n state: this.state,\n agent: this,\n input,\n });\n });\n }\n if (onRunInitializedMutation.state) {\n this.state = onRunInitializedMutation.state;\n input.state = onRunInitializedMutation.state;\n subscribers.forEach((subscriber) => {\n subscriber.onStateChanged?.({\n state: this.state,\n messages: this.messages,\n agent: this,\n input,\n });\n });\n }\n }\n }\n\n protected onError(input: RunAgentInput, error: Error, subscribers: AgentSubscriber[]) {\n return from(\n runSubscribersWithMutation(\n subscribers,\n this.messages,\n this.state,\n (subscriber, messages, state) =>\n subscriber.onRunFailed?.({ error, messages, state, agent: this, input }),\n ),\n ).pipe(\n map((onRunFailedMutation) => {\n const mutation = onRunFailedMutation as AgentStateMutation;\n if (mutation.messages !== undefined || mutation.state !== undefined) {\n if (mutation.messages !== undefined) {\n this.messages = mutation.messages;\n subscribers.forEach((subscriber) => {\n subscriber.onMessagesChanged?.({\n messages: this.messages,\n state: this.state,\n agent: this,\n input,\n });\n });\n }\n if (mutation.state !== undefined) {\n this.state = mutation.state;\n subscribers.forEach((subscriber) => {\n subscriber.onStateChanged?.({\n state: this.state,\n messages: this.messages,\n agent: this,\n input,\n });\n });\n }\n }\n\n if (mutation.stopPropagation !== true) {\n // Silently ignore abort errors (e.g. from navigation during active requests).\n // AbortController.abort(reason) can produce:\n // - A DOMException with name \"AbortError\"\n // - The reason value itself as a plain string (e.g. \"component unmounted\")\n const errStr = String(error);\n const isAbort =\n error.name === \"AbortError\" ||\n error.message === \"Fetch is aborted\" ||\n error.message === \"signal is aborted without reason\" ||\n error.message === \"component unmounted\" ||\n errStr === \"component unmounted\";\n if (!isAbort) {\n console.error(\"Agent execution failed:\", error);\n throw error;\n }\n }\n\n // Return an empty mutation instead of null to prevent EmptyError\n return {} as AgentStateMutation;\n }),\n );\n }\n\n protected async onFinalize(input: RunAgentInput, subscribers: AgentSubscriber[]) {\n const onRunFinalizedMutation = await runSubscribersWithMutation(\n subscribers,\n this.messages,\n this.state,\n (subscriber, messages, state) =>\n subscriber.onRunFinalized?.({ messages, state, agent: this, input }),\n );\n\n if (\n onRunFinalizedMutation.messages !== undefined ||\n onRunFinalizedMutation.state !== undefined\n ) {\n if (onRunFinalizedMutation.messages !== undefined) {\n this.messages = onRunFinalizedMutation.messages;\n subscribers.forEach((subscriber) => {\n subscriber.onMessagesChanged?.({\n messages: this.messages,\n state: this.state,\n agent: this,\n input,\n });\n });\n }\n if (onRunFinalizedMutation.state !== undefined) {\n this.state = onRunFinalizedMutation.state;\n subscribers.forEach((subscriber) => {\n subscriber.onStateChanged?.({\n state: this.state,\n messages: this.messages,\n agent: this,\n input,\n });\n });\n }\n }\n }\n\n public clone() {\n const cloned = Object.create(Object.getPrototypeOf(this));\n\n cloned.agentId = this.agentId;\n cloned.description = this.description;\n cloned.threadId = this.threadId;\n cloned.messages = structuredClone_(this.messages);\n cloned.state = structuredClone_(this.state);\n cloned._debug = this._debug;\n cloned._debugLogger = this._debugLogger;\n cloned.isRunning = this.isRunning;\n cloned.subscribers = [...this.subscribers];\n cloned.middlewares = [...this.middlewares];\n\n return cloned;\n }\n\n public addMessage(message: Message) {\n // Add message to the messages array\n this.messages.push(message);\n\n // Notify subscribers sequentially in the background\n (async () => {\n // Fire onNewMessage sequentially\n for (const subscriber of this.subscribers) {\n await subscriber.onNewMessage?.({\n message,\n messages: this.messages,\n state: this.state,\n agent: this,\n });\n }\n\n // Fire onNewToolCall if the message is from assistant and contains tool calls\n if (message.role === \"assistant\" && message.toolCalls) {\n for (const toolCall of message.toolCalls) {\n for (const subscriber of this.subscribers) {\n await subscriber.onNewToolCall?.({\n toolCall,\n messages: this.messages,\n state: this.state,\n agent: this,\n });\n }\n }\n }\n\n // Fire onMessagesChanged sequentially\n for (const subscriber of this.subscribers) {\n await subscriber.onMessagesChanged?.({\n messages: this.messages,\n state: this.state,\n agent: this,\n });\n }\n })();\n }\n\n public addMessages(messages: Message[]) {\n // Add all messages to the messages array\n this.messages.push(...messages);\n\n // Notify subscribers sequentially in the background\n (async () => {\n // Fire onNewMessage and onNewToolCall for each message sequentially\n for (const message of messages) {\n // Fire onNewMessage sequentially\n for (const subscriber of this.subscribers) {\n await subscriber.onNewMessage?.({\n message,\n messages: this.messages,\n state: this.state,\n agent: this,\n });\n }\n\n // Fire onNewToolCall if the message is from assistant and contains tool calls\n if (message.role === \"assistant\" && message.toolCalls) {\n for (const toolCall of message.toolCalls) {\n for (const subscriber of this.subscribers) {\n await subscriber.onNewToolCall?.({\n toolCall,\n messages: this.messages,\n state: this.state,\n agent: this,\n });\n }\n }\n }\n }\n\n // Fire onMessagesChanged once at the end sequentially\n for (const subscriber of this.subscribers) {\n await subscriber.onMessagesChanged?.({\n messages: this.messages,\n state: this.state,\n agent: this,\n });\n }\n })();\n }\n\n public setMessages(messages: Message[]) {\n // Replace the entire messages array\n this.messages = structuredClone_(messages);\n\n // Notify subscribers sequentially in the background\n (async () => {\n // Fire onMessagesChanged sequentially\n for (const subscriber of this.subscribers) {\n await subscriber.onMessagesChanged?.({\n messages: this.messages,\n state: this.state,\n agent: this,\n });\n }\n })();\n }\n\n public setState(state: State) {\n // Replace the entire state\n this.state = structuredClone_(state);\n\n // Notify subscribers sequentially in the background\n (async () => {\n // Fire onStateChanged sequentially\n for (const subscriber of this.subscribers) {\n await subscriber.onStateChanged?.({\n messages: this.messages,\n state: this.state,\n agent: this,\n });\n }\n })();\n }\n\n public legacy_to_be_removed_runAgentBridged(\n config?: RunAgentParameters,\n ): Observable<LegacyRuntimeProtocolEvent> {\n this.agentId = this.agentId ?? uuidv4();\n const input = this.prepareRunAgentInput(config);\n\n // Build middleware chain for legacy bridge\n const runObservable = (() => {\n if (this.middlewares.length === 0) {\n return this.run(input);\n }\n\n const chainedAgent = this.middlewares.reduceRight(\n (nextAgent: AbstractAgent, middleware) =>\n ({\n run: (i: RunAgentInput) => middleware.run(i, nextAgent),\n get messages() {\n return nextAgent.messages;\n },\n get state() {\n return nextAgent.state;\n },\n }) as AbstractAgent,\n this,\n );\n\n return chainedAgent.run(input);\n })();\n\n return runObservable.pipe(\n transformChunks(this.debugLogger),\n verifyEvents(this.debugLogger),\n convertToLegacyEvents(this.threadId, input.runId, this.agentId),\n (events$: Observable<LegacyRuntimeProtocolEvent>) => {\n return events$.pipe(\n map((event) => {\n this.debugLogger?.event(\"LEGACY\", \"Event:\", event, { type: event.type });\n return event;\n }),\n );\n },\n );\n }\n}\n", "import { AbstractAgent, RunAgentResult } from \"./agent\";\nimport { runHttpRequest } from \"@/run/http-request\";\nimport { HttpAgentConfig, RunAgentParameters } from \"./types\";\nimport { RunAgentInput, BaseEvent } from \"@ag-ui/core\";\nimport { structuredClone_ } from \"@/utils\";\nimport { transformHttpEventStream } from \"@/transform/http\";\nimport { Observable } from \"rxjs\";\nimport { AgentSubscriber } from \"./subscriber\";\n\ninterface RunHttpAgentConfig extends RunAgentParameters {\n abortController?: AbortController;\n}\n\nexport class HttpAgent extends AbstractAgent {\n public url: string;\n public headers: Record<string, string>;\n public abortController: AbortController = new AbortController();\n\n /**\n * Returns the fetch config for the http request.\n * Override this to customize the request.\n *\n * @returns The fetch config for the http request.\n */\n protected requestInit(input: RunAgentInput): RequestInit {\n return {\n method: \"POST\",\n headers: {\n ...this.headers,\n \"Content-Type\": \"application/json\",\n Accept: \"text/event-stream\",\n },\n body: JSON.stringify(input),\n signal: this.abortController.signal,\n };\n }\n\n public runAgent(\n parameters?: RunHttpAgentConfig,\n subscriber?: AgentSubscriber,\n ): Promise<RunAgentResult> {\n this.abortController = parameters?.abortController ?? new AbortController();\n return super.runAgent(parameters, subscriber);\n }\n\n abortRun() {\n this.abortController.abort();\n super.abortRun();\n }\n\n constructor(config: HttpAgentConfig) {\n super(config);\n this.url = config.url;\n this.headers = structuredClone_(config.headers ?? {});\n }\n\n run(input: RunAgentInput): Observable<BaseEvent> {\n const httpEvents = runHttpRequest(this.url, this.requestInit(input));\n return transformHttpEventStream(httpEvents, this.debugLogger);\n }\n\n public clone(): HttpAgent {\n const cloned = super.clone() as HttpAgent;\n cloned.url = this.url;\n cloned.headers = structuredClone_(this.headers ?? {});\n\n const newController = new AbortController();\n const originalSignal = this.abortController.signal as AbortSignal & { reason?: unknown };\n if (originalSignal.aborted) {\n newController.abort(originalSignal.reason);\n }\n cloned.abortController = newController;\n\n return cloned;\n }\n}\n", "import {\n BaseEvent,\n EventType,\n TextMessageStartEvent,\n TextMessageContentEvent,\n TextMessageEndEvent,\n ToolCallStartEvent,\n ToolCallArgsEvent,\n ToolCallEndEvent,\n StateSnapshotEvent,\n StateDeltaEvent,\n} from \"@ag-ui/core\";\nimport jsonpatch from \"fast-json-patch\";\nimport { structuredClone_ } from \"../utils\";\n\n/**\n * Compacts streaming events by consolidating multiple deltas into single events.\n * For text messages: multiple content deltas become one concatenated delta.\n * For tool calls: multiple args deltas become one concatenated delta.\n * For state: all STATE_SNAPSHOT and STATE_DELTA events within a run are compacted\n * into a single STATE_SNAPSHOT representing the final state.\n * Events between related streaming events are reordered to keep streaming events together.\n *\n * @param events - Array of events to compact\n * @returns Compacted array of events\n */\nexport function compactEvents(events: BaseEvent[]): BaseEvent[] {\n const compacted: BaseEvent[] = [];\n const pendingTextMessages = new Map<\n string,\n {\n start?: TextMessageStartEvent;\n contents: TextMessageContentEvent[];\n end?: TextMessageEndEvent;\n otherEvents: BaseEvent[];\n }\n >();\n const pendingToolCalls = new Map<\n string,\n {\n start?: ToolCallStartEvent;\n args: ToolCallArgsEvent[];\n end?: ToolCallEndEvent;\n otherEvents: BaseEvent[];\n }\n >();\n\n // State compaction: collects state events, flushed at RUN_STARTED (pre-run/inter-run), RUN_FINISHED/RUN_ERROR (in-run), and at end (trailing)\n let stateEvents: (StateSnapshotEvent | StateDeltaEvent)[] = [];\n\n for (const event of events) {\n // Handle text message streaming events\n if (event.type === EventType.TEXT_MESSAGE_START) {\n const startEvent = event as TextMessageStartEvent;\n const messageId = startEvent.messageId;\n\n if (!pendingTextMessages.has(messageId)) {\n pendingTextMessages.set(messageId, {\n contents: [],\n otherEvents: [],\n });\n }\n\n const pending = pendingTextMessages.get(messageId)!;\n pending.start = startEvent;\n } else if (event.type === EventType.TEXT_MESSAGE_CONTENT) {\n const contentEvent = event as TextMessageContentEvent;\n const messageId = contentEvent.messageId;\n\n if (!pendingTextMessages.has(messageId)) {\n pendingTextMessages.set(messageId, {\n contents: [],\n otherEvents: [],\n });\n }\n\n const pending = pendingTextMessages.get(messageId)!;\n pending.contents.push(contentEvent);\n } else if (event.type === EventType.TEXT_MESSAGE_END) {\n const endEvent = event as TextMessageEndEvent;\n const messageId = endEvent.messageId;\n\n if (!pendingTextMessages.has(messageId)) {\n pendingTextMessages.set(messageId, {\n contents: [],\n otherEvents: [],\n });\n }\n\n const pending = pendingTextMessages.get(messageId)!;\n pending.end = endEvent;\n\n // Flush this message's events\n flushTextMessage(messageId, pending, compacted);\n pendingTextMessages.delete(messageId);\n } else if (event.type === EventType.TOOL_CALL_START) {\n const startEvent = event as ToolCallStartEvent;\n const toolCallId = startEvent.toolCallId;\n\n if (!pendingToolCalls.has(toolCallId)) {\n pendingToolCalls.set(toolCallId, {\n args: [],\n otherEvents: [],\n });\n }\n\n const pending = pendingToolCalls.get(toolCallId)!;\n pending.start = startEvent;\n } else if (event.type === EventType.TOOL_CALL_ARGS) {\n const argsEvent = event as ToolCallArgsEvent;\n const toolCallId = argsEvent.toolCallId;\n\n if (!pendingToolCalls.has(toolCallId)) {\n pendingToolCalls.set(toolCallId, {\n args: [],\n otherEvents: [],\n });\n }\n\n const pending = pendingToolCalls.get(toolCallId)!;\n pending.args.push(argsEvent);\n } else if (event.type === EventType.TOOL_CALL_END) {\n const endEvent = event as ToolCallEndEvent;\n const toolCallId = endEvent.toolCallId;\n\n if (!pendingToolCalls.has(toolCallId)) {\n pendingToolCalls.set(toolCallId, {\n args: [],\n otherEvents: [],\n });\n }\n\n const pending = pendingToolCalls.get(toolCallId)!;\n pending.end = endEvent;\n\n // Flush this tool call's events\n flushToolCall(toolCallId, pending, compacted);\n pendingToolCalls.delete(toolCallId);\n } else if (event.type === EventType.RUN_STARTED) {\n // Flush any pre-run state events before starting a new run\n flushState(stateEvents, compacted);\n stateEvents = [];\n compacted.push(event);\n } else if (\n event.type === EventType.RUN_FINISHED ||\n event.type === EventType.RUN_ERROR\n ) {\n // Flush compacted state into output before the run boundary event\n flushState(stateEvents, compacted);\n stateEvents = [];\n compacted.push(event);\n } else if (\n event.type === EventType.STATE_SNAPSHOT ||\n event.type === EventType.STATE_DELTA\n ) {\n // Collect state events for compaction\n stateEvents.push(event as StateSnapshotEvent | StateDeltaEvent);\n } else {\n // For non-streaming events, check if we're in the middle of any streaming sequences\n let addedToBuffer = false;\n\n // Check text messages\n for (const [messageId, pending] of pendingTextMessages) {\n // If we have a start but no end yet, this event is \"in between\"\n if (pending.start && !pending.end) {\n pending.otherEvents.push(event);\n addedToBuffer = true;\n break;\n }\n }\n\n // Check tool calls if not already buffered\n if (!addedToBuffer) {\n for (const [toolCallId, pending] of pendingToolCalls) {\n // If we have a start but no end yet, this event is \"in between\"\n if (pending.start && !pending.end) {\n pending.otherEvents.push(event);\n addedToBuffer = true;\n break;\n }\n }\n }\n\n // If not in the middle of any streaming sequence, add directly to compacted\n if (!addedToBuffer) {\n compacted.push(event);\n }\n }\n }\n\n // Flush any remaining incomplete messages\n for (const [messageId, pending] of pendingTextMessages) {\n flushTextMessage(messageId, pending, compacted);\n }\n\n // Flush any remaining incomplete tool calls\n for (const [toolCallId, pending] of pendingToolCalls) {\n flushToolCall(toolCallId, pending, compacted);\n }\n\n // Flush any remaining state events (incomplete run or events outside runs)\n flushState(stateEvents, compacted);\n\n return compacted;\n}\n\nfunction flushTextMessage(\n messageId: string,\n pending: {\n start?: TextMessageStartEvent;\n contents: TextMessageContentEvent[];\n end?: TextMessageEndEvent;\n otherEvents: BaseEvent[];\n },\n compacted: BaseEvent[],\n): void {\n // Add start event if present\n if (pending.start) {\n compacted.push(pending.start);\n }\n\n // Compact all content events into one\n if (pending.contents.length > 0) {\n const concatenatedDelta = pending.contents.map((c) => c.delta).join(\"\");\n\n const compactedContent: TextMessageContentEvent = {\n type: EventType.TEXT_MESSAGE_CONTENT,\n messageId: messageId,\n delta: concatenatedDelta,\n };\n\n compacted.push(compactedContent);\n }\n\n // Add end event if present\n if (pending.end) {\n compacted.push(pending.end);\n }\n\n // Add any events that were in between\n for (const otherEvent of pending.otherEvents) {\n compacted.push(otherEvent);\n }\n}\n\nfunction flushToolCall(\n toolCallId: string,\n pending: {\n start?: ToolCallStartEvent;\n args: ToolCallArgsEvent[];\n end?: ToolCallEndEvent;\n otherEvents: BaseEvent[];\n },\n compacted: BaseEvent[],\n): void {\n // Add start event if present\n if (pending.start) {\n compacted.push(pending.start);\n }\n\n // Compact all args events into one\n if (pending.args.length > 0) {\n const concatenatedArgs = pending.args.map((a) => a.delta).join(\"\");\n\n const compactedArgs: ToolCallArgsEvent = {\n type: EventType.TOOL_CALL_ARGS,\n toolCallId: toolCallId,\n delta: concatenatedArgs,\n };\n\n compacted.push(compactedArgs);\n }\n\n // Add end event if present\n if (pending.end) {\n compacted.push(pending.end);\n }\n\n // Add any events that were in between\n for (const otherEvent of pending.otherEvents) {\n compacted.push(otherEvent);\n }\n}\n\nfunction flushState(\n stateEvents: (StateSnapshotEvent | StateDeltaEvent)[],\n compacted: BaseEvent[],\n): void {\n if (stateEvents.length === 0) {\n return;\n }\n\n let state: any = {};\n\n for (const event of stateEvents) {\n if (event.type === EventType.STATE_SNAPSHOT) {\n state = structuredClone_(event.snapshot);\n } else {\n const result = jsonpatch.applyPatch(state, structuredClone_(event.delta), true, false);\n state = result.newDocument;\n }\n }\n\n const compactedSnapshot: StateSnapshotEvent = {\n type: EventType.STATE_SNAPSHOT,\n snapshot: state,\n };\n\n compacted.push(compactedSnapshot);\n}\n", "import type { RunAgentInput } from '@ag-ui/client';\nimport { HttpAgent } from '@ag-ui/client';\n\nimport type { ChatMessage } from '../types.js';\nimport type { ClientAction, ServerEvent, SessionTransport } from './types.js';\n\n/**\n * HttpAgent subclass that lets callers pick the fetch `credentials` mode.\n *\n * The adaptive runtime SDK ships on customer domains and POSTs cross-origin\n * to `syntrologie.com`. The visitor's `syntro_chat_session` cookie is the\n * binding between the chat turn that mounted an LLM-authored element and\n * the subsequent `GET /api/adaptive/mounted_elements` boot fetch \u2014 it MUST\n * use `credentials: 'include'`. Without it the browser:\n *\n * 1. Refuses to send the cookie on subsequent same-name fetches\n * 2. Silently drops `Set-Cookie` headers in the POST response\n *\n * Other chat surfaces (editor chat, action-plan chat, \u2026) authenticate via\n * a `?token=` query param and have no cookie requirement. Sending those\n * cross-origin POSTs as credentialed is actively harmful: per the WHATWG\n * Fetch spec, `Access-Control-Allow-Headers: *` is interpreted LITERALLY\n * when the request is credentialed (instead of as a wildcard), which\n * silently breaks every custom request header (`x-editor-context`, etc.)\n * unless the server enumerates every one. So this class defaults to\n * `same-origin` (browser default) and only opts into `include` when the\n * caller explicitly requests it.\n *\n * The base `HttpAgent.requestInit()` returns a vanilla `RequestInit`\n * without credentials. Overriding it is the documented extension point\n * (see `@ag-ui/client/dist/index.d.ts`: \"Override this to customize the\n * request\").\n */\nclass ConfigurableCredentialsHttpAgent extends HttpAgent {\n private readonly _credentials: RequestCredentials | undefined;\n\n constructor(\n config: ConstructorParameters<typeof HttpAgent>[0],\n credentials: RequestCredentials | undefined\n ) {\n super(config);\n this._credentials = credentials;\n }\n\n protected override requestInit(input: RunAgentInput): RequestInit {\n const base = super.requestInit(input);\n if (this._credentials === undefined) {\n return base;\n }\n return { ...base, credentials: this._credentials };\n }\n}\n\nexport interface AgUiTransportOptions {\n url: string;\n headers?: Record<string, string> | (() => Record<string, string>);\n threadId?: string;\n clientTools?: Set<string>;\n onA2UIEvent?: (payload: Record<string, unknown>) => void;\n /**\n * Fetch `credentials` mode for the underlying POST to the agent endpoint.\n *\n * Pass `'include'` ONLY when the transport needs cross-origin cookies\n * (adaptive runtime SDK \u2014 `syntro_chat_session`). Surfaces that auth\n * via `?token=` query param (editor chat, action-plan chat) must leave\n * this `undefined` so the browser uses its default (`same-origin`) and\n * the cross-origin preflight stays non-credentialed. Credentialed\n * preflights collapse `Allow-Headers: *` into a literal `*` per the\n * Fetch spec, which silently rejects every custom request header.\n */\n credentials?: RequestCredentials;\n /**\n * Arbitrary JSON object attached to every AG-UI `RunAgentInput` as\n * `forwardedProps`. Treated opaquely on the wire \u2014 the backend reads\n * whatever shape it expects. Used by the adaptive chat surface to ship\n * `uiTemplates` + `elementsEnabled` per request so the LLM-authored UI\n * element pipeline can use SDK-side template declarations without a\n * workspace-settings store.\n *\n * Callable form is re-evaluated on every run so the source can be\n * mutated between turns (e.g. workspace theme edit changing templates).\n */\n forwardedProps?: Record<string, unknown> | (() => Record<string, unknown> | undefined);\n}\n\nlet _idCounter = 0;\nfunction generateId(): string {\n return `agui-${Date.now()}-${++_idCounter}`;\n}\n\nexport class AgUiTransport implements SessionTransport {\n private _url: string;\n private _headers: Record<string, string> | (() => Record<string, string>);\n private _threadId: string | undefined;\n private _clientTools: Set<string>;\n private _credentials: RequestCredentials | undefined;\n private _onA2UIEvent?: (payload: Record<string, unknown>) => void;\n\n private _agent: HttpAgent | null = null;\n private _connected = false;\n private _handlers = new Set<(event: ServerEvent) => void>();\n private _pendingResume = false;\n private _currentAssistantMessageId: string | null = null;\n private _forwardedProps:\n | Record<string, unknown>\n | (() => Record<string, unknown> | undefined)\n | undefined;\n\n constructor(options: AgUiTransportOptions) {\n this._url = options.url;\n this._headers = options.headers ?? {};\n this._threadId = options.threadId;\n this._clientTools = options.clientTools ?? new Set();\n this._credentials = options.credentials;\n this._onA2UIEvent = options.onA2UIEvent;\n this._forwardedProps = options.forwardedProps;\n }\n\n get connected(): boolean {\n return this._connected;\n }\n\n connect(sessionId?: string): void {\n const resolvedHeaders = typeof this._headers === 'function' ? this._headers() : this._headers;\n\n this._agent = new ConfigurableCredentialsHttpAgent(\n {\n url: this._url,\n headers: resolvedHeaders,\n threadId: this._threadId || undefined,\n },\n this._credentials\n );\n\n this._connected = true;\n\n const sid = sessionId || generateId();\n this._emit({ type: 'session-ready', sessionId: sid });\n this._emit({ type: 'messages-snapshot', messages: [] });\n }\n\n disconnect(): void {\n if (this._agent?.isRunning) {\n this._agent.abortRun();\n }\n this._agent = null;\n this._connected = false;\n this._pendingResume = false;\n }\n\n send(action: ClientAction): void {\n if (!this._agent) return;\n\n switch (action.type) {\n case 'user-message':\n this._sendUserMessage(action.text);\n break;\n case 'tool-result':\n this._sendToolResult(action.toolCallId, action.result, action.approved);\n break;\n case 'stop-generation':\n this._agent.abortRun();\n break;\n default:\n break;\n }\n }\n\n subscribe(handler: (event: ServerEvent) => void): () => void {\n this._handlers.add(handler);\n return () => this._handlers.delete(handler);\n }\n\n // ---------------------------------------------------------------------------\n // Private \u2014 user message flow\n // ---------------------------------------------------------------------------\n\n private _sendUserMessage(text: string): void {\n const agent = this._agent!;\n\n agent.addMessage({\n id: generateId(),\n role: 'user' as const,\n content: text,\n });\n\n this._runAgent();\n }\n\n // ---------------------------------------------------------------------------\n // Private \u2014 tool result flow\n // ---------------------------------------------------------------------------\n\n private _sendToolResult(toolCallId: string, result: unknown, approved: boolean): void {\n const agent = this._agent!;\n\n const toolMsg = {\n id: generateId(),\n role: 'tool' as const,\n toolCallId,\n content: JSON.stringify({\n ...((result as Record<string, unknown>) ?? {}),\n confirmed: approved,\n }),\n };\n agent.addMessage(toolMsg);\n\n if (agent.isRunning) {\n this._pendingResume = true;\n return;\n }\n\n this._runAgent();\n }\n\n // ---------------------------------------------------------------------------\n // Private \u2014 run agent with subscriber\n // ---------------------------------------------------------------------------\n\n private _runAgent(): void {\n const agent = this._agent;\n if (!agent) return;\n\n this._currentAssistantMessageId = null;\n this._emit({ type: 'typing', isTyping: true });\n\n if (typeof this._headers === 'function') {\n agent.headers = this._headers();\n }\n\n const fwd =\n typeof this._forwardedProps === 'function' ? this._forwardedProps() : this._forwardedProps;\n const runParams = fwd ? { forwardedProps: fwd } : undefined;\n agent.runAgent(runParams, this._buildSubscriber()).catch((err: unknown) => {\n const message = err instanceof Error ? err.message : 'Agent run failed';\n const errorName = err instanceof Error ? err.name : null;\n // pydantic-ai / @ag-ui/client errors carry the upstream Response on\n // a couple of common property names; probe each so the downstream\n // diagnostic event has the HTTP status + body it needs without\n // re-fetching.\n const e = err as {\n status?: number;\n statusCode?: number;\n response?: { status?: number; body?: unknown };\n body?: unknown;\n };\n const status =\n typeof e.status === 'number'\n ? e.status\n : typeof e.statusCode === 'number'\n ? e.statusCode\n : typeof e.response?.status === 'number'\n ? e.response.status\n : null;\n const rawBody = e.body ?? e.response?.body ?? null;\n const body =\n typeof rawBody === 'string'\n ? rawBody.slice(0, 500)\n : rawBody != null\n ? JSON.stringify(rawBody).slice(0, 500)\n : null;\n this._emit({ type: 'error', message, status, body, errorName });\n this._emit({ type: 'typing', isTyping: false });\n });\n }\n\n private _buildSubscriber(): Record<string, (params: any) => void> {\n return {\n onTextMessageStartEvent: (params: any) => {\n const { event } = params;\n this._currentAssistantMessageId = event.messageId;\n\n const message: ChatMessage = {\n id: event.messageId,\n role: 'assistant',\n content: '',\n timestamp: Date.now(),\n status: 'streaming',\n };\n this._emit({ type: 'message-append', message });\n },\n\n onTextMessageContentEvent: (params: any) => {\n const { event } = params;\n this._emit({\n type: 'message-delta',\n messageId: event.messageId,\n delta: event.delta,\n });\n },\n\n onTextMessageEndEvent: (params: any) => {\n const { event } = params;\n this._emit({ type: 'message-complete', messageId: event.messageId });\n },\n\n onToolCallStartEvent: (params: any) => {\n const { event } = params;\n const messageId =\n event.parentMessageId ?? this._currentAssistantMessageId ?? event.toolCallId;\n\n this._emit({\n type: 'tool-call',\n messageId,\n toolCall: {\n id: event.toolCallId,\n name: event.toolCallName,\n args: undefined,\n argsBuffer: '',\n status: 'args-streaming',\n },\n });\n },\n\n onToolCallArgsEvent: (params: any) => {\n const { event } = params;\n this._emit({\n type: 'tool-call-args-delta',\n toolCallId: event.toolCallId,\n delta: event.delta,\n });\n },\n\n onToolCallEndEvent: (params: any) => {\n const { event, toolCallName, toolCallArgs } = params;\n\n if (this._clientTools.has(toolCallName)) {\n const messageId = this._currentAssistantMessageId ?? event.toolCallId;\n this._emit({\n type: 'tool-call',\n messageId,\n toolCall: {\n id: event.toolCallId,\n name: toolCallName,\n args: toolCallArgs,\n argsBuffer: JSON.stringify(toolCallArgs),\n status: 'pending',\n },\n });\n } else {\n this._emit({\n type: 'tool-call-done',\n toolCallId: event.toolCallId,\n });\n }\n },\n\n onRunFinishedEvent: (_params: any) => {\n this._emit({ type: 'typing', isTyping: false });\n\n if (this._pendingResume) {\n this._pendingResume = false;\n this._runAgent();\n }\n },\n\n onRunErrorEvent: (params: any) => {\n const { event } = params;\n this._emit({ type: 'error', message: event.message });\n this._emit({ type: 'typing', isTyping: false });\n },\n\n onCustomEvent: (params: any) => {\n const { event } = params;\n const payload = event.value as Record<string, unknown>;\n this._onA2UIEvent?.(payload);\n this._emit({ type: 'a2ui', payload });\n },\n };\n }\n\n // ---------------------------------------------------------------------------\n // Private \u2014 emit to subscribers\n // ---------------------------------------------------------------------------\n\n private _emit(event: ServerEvent): void {\n for (const handler of this._handlers) {\n handler(event);\n }\n }\n}\n", "/**\n * Action element handler \u2014 dispatches an ActionStep through\n * `ActionEngine.applyBatch`.\n *\n * The `content` field of an action `MountedElement` carries the action's\n * params; the executor `kind` comes from the template (which the SDK\n * doesn't have locally yet \u2014 for v1 the template's `kind` is encoded\n * into `content.__kind`, set by the backend tool). When proper\n * template loading lands on the SDK side, this handler resolves the\n * kind from the loaded template instead.\n *\n * **Imperative actions never re-fire on boot.** The `lifecycle` field\n * here is `imperative` \u2014 `ElementInstanceStore` skips boot rehydrate\n * for imperative instances with `state === 'applied'`. The backend\n * record exists for audit; replaying a scroll/navigate on every page\n * load would be visibly wrong.\n *\n * Stateful actions (e.g. `content:insertHtml`, `content:setText`,\n * `content:addClass` once Phase 7's renderer lands) ARE re-applied on\n * boot. v1 supports the imperative shape; stateful action handling\n * waits on the Portable Text renderer.\n */\n\nimport type { ActionStep } from '../types';\nimport type {\n ElementHandlerContext,\n ElementTypeHandler,\n ValidateResult,\n} from './ElementTypeHandler';\nimport type { MountedElement } from './types';\n\nexport class ActionHandler implements ElementTypeHandler {\n readonly typeName = 'action' as const;\n // v1: only imperative actions are wired. Stateful content-mutation\n // actions arrive with Phase 7 (Portable Text renderer).\n readonly lifecycle = 'imperative' as const;\n\n validate(instance: MountedElement, _ctx: ElementHandlerContext): ValidateResult {\n if (instance.element_type !== 'action') {\n return { accepted: false, reason: 'wrong_element_type' };\n }\n const kind = (instance.content as { __kind?: unknown }).__kind;\n if (typeof kind !== 'string' || kind.length === 0) {\n return { accepted: false, reason: 'missing_action_kind' };\n }\n return { accepted: true };\n }\n\n async mount(instance: MountedElement, ctx: ElementHandlerContext): Promise<void> {\n const action = this._actionFromInstance(instance);\n await ctx.actions.applyBatch([action]);\n }\n\n async patch(instance: MountedElement, ctx: ElementHandlerContext): Promise<void> {\n // Stateful actions re-apply on patch. Imperative actions don't\n // support patch (the backend rejects), but if one slips through\n // we treat it as a no-op rather than crash.\n const action = this._actionFromInstance(instance);\n await ctx.actions.applyBatch([action]);\n }\n\n async unmount(_instance: MountedElement, _ctx: ElementHandlerContext): Promise<void> {\n // Imperative actions can't be unmounted \u2014 the scroll/navigate\n // already happened. The store calls this for completeness; no-op is\n // correct. Stateful actions (Phase 7) will need real reverter logic.\n }\n\n private _actionFromInstance(instance: MountedElement): ActionStep {\n const { __kind, ...params } = instance.content as { __kind: string } & Record<string, unknown>;\n // Selector-targeted templates (e.g. `content:setText`) declare their\n // anchor via the template's `allowed_targets`, which lands on the\n // mounted instance as `placement: {type: \"selector\", selector, position}`.\n // The runtime executors expect a full `AnchorId` object on the\n // action params, so translate placement \u2192 anchorId here. Imperative\n // navigation actions use `placement: {type: \"none\"}` and skip this.\n const placement = instance.placement;\n const anchorOverride: Partial<Record<string, unknown>> =\n placement.type === 'selector'\n ? { anchorId: { selector: placement.selector, route: '**' } }\n : {};\n // Imperative templates (e.g. `navigation:scrollTo`) declare the\n // anchor as a string `EnumField` named `anchorId` in the template\n // fields \u2014 that's the only field shape the agent can author, since\n // EnumField is string-only. The runtime executor still wants an\n // `AnchorId` object (`{selector, route}`), so wrap any string we\n // receive on `anchorId` here. Without this wrap the executor's\n // `resolveAnchor` returns null on a non-object and silently\n // refuses to scroll. `route: '**'` matches every page \u2014 the\n // agent's enum already enumerates the legal selectors, so the\n // route check would be redundant.\n if (typeof params.anchorId === 'string') {\n params.anchorId = { selector: params.anchorId, route: '**' };\n }\n return {\n kind: __kind,\n ...params,\n ...anchorOverride,\n label: `action:${instance.template_id}:${instance.instance_id}`,\n } as unknown as ActionStep;\n }\n}\n", "/**\n * Type-neutral store for LLM-authored UI element instances \u2014 Phase 6.\n *\n * On SDK boot:\n * 1. Caller fetches `/api/adaptive/mounted_elements` (see `fetcher.ts`).\n * 2. Calls `store.hydrate(response.mounted_elements)`.\n * 3. The store iterates each instance, looks up its handler, and\n * either mounts (stateful) or skips (imperative already-applied).\n *\n * During chat turns:\n * - AGUI `syntro.element.mutation` envelopes arrive via\n * `AgUiTransport.onA2UIEvent`. The transport caller decodes the\n * envelope and invokes `store.apply(envelope.mutations)`.\n *\n * Concurrency / dedup:\n * - Per-instance `version` is the dedup key. A mutation whose version\n * is `<= currentVersion` is treated as already-applied and silently\n * dropped \u2014 handles the SSE-during-boot-fetch race per the design\n * doc (the live mutation might arrive before the boot snapshot does,\n * and the snapshot is then a no-op).\n * - The store is single-threaded by Node/browser convention; no\n * cross-tab sync in v1.\n *\n * The store delegates all DOM work to per-type handlers\n * (`ElementTypeHandler`). It owns the registry, the in-memory state,\n * and the dispatch logic.\n */\n\nimport {\n TILE_MOUNTED_EVENT,\n TILE_REPLAY_REQUEST_EVENT,\n type TileLifecycleMountProps,\n} from '@syntrologie/sdk-contracts';\n\nimport type { ActionEngine } from '../types';\nimport type { ElementHandlerContext, ElementTypeHandler } from './ElementTypeHandler';\nimport type { ElementMutation, MountedElement } from './types';\n\nconst COMPOSITIONAL_REPLAY_REQUEST_EVENT = 'element.compositional_replay_request';\nconst COMPOSITIONAL_APPEND_EVENT = 'element.compositional_append';\n\nexport interface ElementInstanceStoreOptions {\n actions: ActionEngine;\n /** Runtime's event bus. ItemHandler publishes\n * `element.compositional_append` events here so container widgets\n * (chips strip, FAQ accordion, nav tips) can subscribe and inject\n * LLM-authored items into their compositional-actions lists.\n *\n * When `subscribe` is also provided, the store listens for\n * `element.compositional_replay_request` events. A container widget\n * publishes this event with its `tile_id` whenever it subscribes\n * (e.g. on first mount AND on SPA-navigation remount); the store\n * responds by re-publishing `element.compositional_append` for every\n * matching item still in its in-memory map. This is what makes\n * LLM-authored items persist across navigations within the page\n * session \u2014 the store survives chat-bar unmount/remount, container\n * widgets re-pull on each fresh mount.\n */\n events?: {\n publish: (name: string, props?: Record<string, unknown>) => void;\n /**\n * Overloaded to match the runtime SDK's `EventBus.subscribe`:\n * pass `{names:[...]}` to filter, or a callback to receive every\n * event. The store uses the filtered form so it doesn't fan\n * unrelated traffic (PostHog autocapture, every action lifecycle\n * event) into a string-compare on each delivery.\n */\n subscribe?: {\n (\n filter: { names?: string[] },\n handler: (event: { name: string; props?: Record<string, unknown> }) => void\n ): () => void;\n (handler: (event: { name: string; props?: Record<string, unknown> }) => void): () => void;\n };\n };\n handlers?: ElementTypeHandler[];\n /** Override the logger \u2014 used by tests to capture log output. */\n logger?: Pick<Console, 'info' | 'warn' | 'error'>;\n /**\n * Optional template\u2192widget resolver used by the rehydrate replay.\n * Without this, replayed tile mounts emit ``widget: template_id``,\n * which only works when the admin's template ids match the widget\n * registry (e.g. ``adaptive-faq:accordion``). When an admin uses a\n * friendly id like ``product-card`` mapping to widget\n * ``adaptive-product:card``, the rehydrate path needs the resolver\n * to match the live mount path.\n *\n * Same shape as ``TileHandler``'s resolver \u2014 pass the same function\n * to both so live mounts and replays agree on the widget id.\n */\n resolveTileWidget?: (templateId: string) => string | undefined;\n}\n\nexport class ElementInstanceStore {\n private readonly _actions: ActionEngine;\n private readonly _events: ElementInstanceStoreOptions['events'];\n private readonly _handlers: Map<string, ElementTypeHandler>;\n private readonly _instances: Map<string, MountedElement> = new Map();\n private readonly _logger: Pick<Console, 'info' | 'warn' | 'error'>;\n private readonly _resolveTileWidget?: (templateId: string) => string | undefined;\n /** Active TTL timeout \u2014 replaced on each call to `scheduleClientTtl`. */\n private _ttlTimer: ReturnType<typeof setTimeout> | null = null;\n\n constructor(options: ElementInstanceStoreOptions) {\n this._actions = options.actions;\n this._events = options.events;\n this._resolveTileWidget = options.resolveTileWidget;\n this._handlers = new Map();\n for (const handler of options.handlers ?? []) {\n this._handlers.set(handler.typeName, handler);\n }\n this._logger = options.logger ?? console;\n this._subscribeReplayRequests();\n }\n\n /**\n * Listen for `element.compositional_replay_request` from container\n * widgets and re-publish `element.compositional_append` for every\n * matching item still tracked in `_instances`. This keeps LLM-authored\n * items visible across SPA navigations: the store is a module-level\n * singleton that survives chat-bar unmount/remount, so when a fresh\n * chips-strip mounts and subscribes, asking for a replay re-populates\n * its chip array.\n */\n private _subscribeReplayRequests(): void {\n const subscribe = this._events?.subscribe;\n const publish = this._events?.publish;\n if (!subscribe || !publish) return;\n subscribe(\n { names: [COMPOSITIONAL_REPLAY_REQUEST_EVENT, TILE_REPLAY_REQUEST_EVENT] },\n (event) => {\n if (event.name === COMPOSITIONAL_REPLAY_REQUEST_EVENT) {\n const tileId = String(event.props?.tile_id ?? '');\n if (!tileId) return;\n this._replayItems(tileId, publish);\n return;\n }\n if (event.name === TILE_REPLAY_REQUEST_EVENT) {\n // SmartCanvasElementLit asks for every active LLM-authored tile\n // so it can merge them into its `_tiles` array on (re)mount.\n this._replayTiles(publish);\n return;\n }\n }\n );\n }\n\n private _replayItems(\n tileId: string,\n publish: (name: string, props?: Record<string, unknown>) => void\n ): void {\n for (const instance of this._instances.values()) {\n if (instance.element_type !== 'item') continue;\n if (instance.placement.type !== 'parent_tile') continue;\n if (instance.placement.tile_id !== tileId) continue;\n if (instance.state !== 'active') continue;\n publish(COMPOSITIONAL_APPEND_EVENT, {\n tile_id: tileId,\n instance_id: instance.instance_id,\n item: instance.content,\n position: instance.placement.position,\n });\n }\n }\n\n private _replayTiles(publish: (name: string, props?: Record<string, unknown>) => void): void {\n for (const instance of this._instances.values()) {\n if (instance.element_type !== 'tile') continue;\n if (instance.placement.type !== 'slot') continue;\n if (instance.state !== 'active') continue;\n const props: TileLifecycleMountProps = {\n slot: instance.placement.slot,\n instance_id: instance.instance_id,\n widget: this._resolveTileWidget?.(instance.template_id) ?? instance.template_id,\n props: (instance.content ?? {}) as Record<string, unknown>,\n };\n publish(TILE_MOUNTED_EVENT, props as unknown as Record<string, unknown>);\n }\n }\n\n registerHandler(handler: ElementTypeHandler): void {\n this._handlers.set(handler.typeName, handler);\n }\n\n /**\n * Apply the server-provided boot snapshot. For each instance:\n * - stateful: validated + mounted via the type handler;\n * - imperative + already-applied: recorded only (no DOM action);\n * - any: tracked in the in-memory map for future patches.\n *\n * Safe to call once on SDK init. Calling again would re-mount\n * stateful instances; callers should not.\n */\n async hydrate(snapshot: MountedElement[]): Promise<void> {\n for (const instance of snapshot) {\n // Version-dedup against newer live state. Mirrors _applyOne's\n // guard so the apply-before-hydrate race (live mutation lands\n // first, slow boot snapshot resolves after) is genuinely a\n // no-op as the class header promises \u2014 without this, a stale\n // snapshot would clobber the in-memory version and re-render\n // older content. See test\n // \"hydrate honors version dedup when newer state already applied\".\n const existing = this._instances.get(instance.instance_id);\n if (existing && existing.version >= instance.version) {\n continue;\n }\n const handler = this._handlers.get(instance.element_type);\n if (!handler) {\n this._logger.warn('elements: hydrate skipped \u2014 unknown element_type', {\n element_type: instance.element_type,\n instance_id: instance.instance_id,\n });\n continue;\n }\n this._instances.set(instance.instance_id, instance);\n if (handler.lifecycle === 'imperative' && instance.state === 'applied') {\n // Don't re-fire scroll/navigate on page reload.\n continue;\n }\n if (instance.state !== 'active') {\n // Reverted / expired / applied stateful \u2014 record only.\n continue;\n }\n await this._mount(handler, instance);\n }\n // Belt-and-suspenders: after every per-instance handler.mount() has\n // run, publish one more pass for each active LLM-authored tile/item\n // so any subscriber that was wired between the per-handler publishes\n // (or any handler that skipped publish for any reason) still ends\n // up with the right state. Receivers dedup by `instance_id` so the\n // double-emit is idempotent.\n //\n // Items also rely on a per-tile_id replay request (the container\n // widget publishes the request on its own mount), so the explicit\n // replay sweep is the boot-time backstop and the request-driven\n // replay is the SPA-nav backstop.\n this._broadcastActive();\n }\n\n /**\n * Re-publish `element.tile_mounted` / `element.compositional_append`\n * for every active LLM-authored instance in the store. Idempotent \u2014\n * receivers key by `instance_id` (tiles) or by widget identity\n * (items via tile_id filter).\n */\n private _broadcastActive(): void {\n const publish = this._events?.publish;\n if (!publish) return;\n this._replayTiles(publish);\n // Items: group by tile_id so each receiver's filter still matches.\n const itemTileIds = new Set<string>();\n for (const instance of this._instances.values()) {\n if (instance.element_type !== 'item') continue;\n if (instance.placement.type !== 'parent_tile') continue;\n if (instance.state !== 'active') continue;\n itemTileIds.add(instance.placement.tile_id);\n }\n for (const tileId of itemTileIds) {\n this._replayItems(tileId, publish);\n }\n }\n\n /**\n * Apply a batch of mutations, atomically per-batch. Each mutation is\n * version-checked (mount: must not conflict with existing instance;\n * patch: resulting_version must be > current; unmount: idempotent).\n */\n async apply(mutations: ElementMutation[]): Promise<void> {\n for (const mutation of mutations) {\n try {\n await this._applyOne(mutation);\n } catch (err) {\n // Mutations are independent \u2014 one failing should not abort the\n // rest. Log loudly so the failure surfaces.\n this._logger.error('elements: mutation failed', { mutation, err });\n }\n }\n }\n\n /** Read-only snapshot of currently-known instances. */\n getInstances(): MountedElement[] {\n return Array.from(this._instances.values());\n }\n\n getInstance(instance_id: string): MountedElement | undefined {\n return this._instances.get(instance_id);\n }\n\n /**\n * Schedule a client-side TTL that unmounts every active stateful\n * instance when the server-side session expires. Replaces any\n * previously-scheduled TTL.\n *\n * Avoids the orphan-window where session-expired tiles linger on the\n * page until manual refresh \u2014 the server forgets at the 4h mark and\n * the SDK tears down concurrently. Re-schedule on each boot fetch /\n * mutation event that carries a refreshed `session_expires_at`.\n *\n * Pass `null` to clear the existing timer without scheduling a new one.\n * Pass a past timestamp to trigger cleanup immediately.\n */\n scheduleClientTtl(session_expires_at: string | null): void {\n if (this._ttlTimer !== null) {\n clearTimeout(this._ttlTimer);\n this._ttlTimer = null;\n }\n if (session_expires_at === null) return;\n\n const expiryMs = Date.parse(session_expires_at);\n if (Number.isNaN(expiryMs)) {\n this._logger.warn('elements: invalid session_expires_at', { session_expires_at });\n return;\n }\n const delay = Math.max(0, expiryMs - Date.now());\n this._ttlTimer = setTimeout(() => {\n this._ttlTimer = null;\n void this._handleSessionExpiry();\n }, delay);\n }\n\n // -------------------------------------------------------------------\n // Internals\n // -------------------------------------------------------------------\n\n private async _handleSessionExpiry(): Promise<void> {\n // Tear down every active stateful instance \u2014 server has already\n // forgotten this session so no further mutations can arrive.\n const unmounts: ElementMutation[] = [];\n for (const instance of this._instances.values()) {\n if (instance.state !== 'active') continue;\n const handler = this._handlers.get(instance.element_type);\n if (!handler || handler.lifecycle === 'imperative') continue;\n unmounts.push({ op: 'unmount', instance_id: instance.instance_id });\n }\n if (unmounts.length > 0) {\n this._logger.info('elements: client TTL fired \u2014 unmounting active instances', {\n count: unmounts.length,\n });\n await this.apply(unmounts);\n }\n }\n\n private async _applyOne(mutation: ElementMutation): Promise<void> {\n if (mutation.op === 'mount') {\n const existing = this._instances.get(mutation.instance.instance_id);\n if (existing && existing.version >= mutation.instance.version) {\n // Already applied (likely the boot snapshot beat the SSE event).\n return;\n }\n const handler = this._handlers.get(mutation.instance.element_type);\n if (!handler) {\n this._logger.warn('elements: mount dropped \u2014 unknown element_type', {\n element_type: mutation.instance.element_type,\n });\n return;\n }\n // Active stateful mounts and applied imperative mounts both fire\n // the handler; everything else is a record-only entry (matches\n // hydrate()'s rules). Critically, _mount() validates and applies\n // BEFORE we touch this._instances \u2014 a rejected/throwing mount must\n // not leave the map advanced because the dedup guard above would\n // then drop the corrective re-send.\n const isActiveStateful =\n mutation.instance.state === 'active' && handler.lifecycle !== 'imperative';\n const isAppliedImperative =\n mutation.instance.state === 'applied' && handler.lifecycle === 'imperative';\n if (isActiveStateful || isAppliedImperative) {\n const applied = await this._mount(handler, mutation.instance);\n if (!applied) return;\n }\n this._instances.set(mutation.instance.instance_id, mutation.instance);\n return;\n }\n\n if (mutation.op === 'patch') {\n const existing = this._instances.get(mutation.instance_id);\n if (!existing) {\n this._logger.warn('elements: patch dropped \u2014 unknown instance', {\n instance_id: mutation.instance_id,\n });\n return;\n }\n if (mutation.resulting_version <= existing.version) {\n // Stale patch \u2014 already applied or older than current.\n return;\n }\n const patched: MountedElement = {\n ...existing,\n content: mutation.resulting_content,\n version: mutation.resulting_version,\n };\n const handler = this._handlers.get(patched.element_type);\n if (handler) {\n const validation = handler.validate(patched, this._ctx());\n if (!validation.accepted) {\n // Critical: do NOT commit to _instances here. The version-dedup\n // guard above would otherwise drop a corrective re-send at the\n // same version, leaving the map permanently divergent from the\n // DOM.\n this._logger.warn('elements: patch validation failed', {\n instance_id: mutation.instance_id,\n reason: validation.reason,\n });\n return;\n }\n try {\n await handler.patch(patched, this._ctx());\n } catch (err) {\n // Same reasoning as validation failure \u2014 a throwing handler\n // must not leave _instances advanced ahead of the DOM.\n this._logger.warn('elements: handler.patch threw', {\n instance_id: mutation.instance_id,\n err,\n });\n return;\n }\n }\n this._instances.set(mutation.instance_id, patched);\n return;\n }\n\n if (mutation.op === 'unmount') {\n const existing = this._instances.get(mutation.instance_id);\n if (!existing) {\n // Idempotent \u2014 never-knew-it or already unmounted is fine.\n return;\n }\n const reverted: MountedElement = { ...existing, state: 'reverted' };\n this._instances.set(mutation.instance_id, reverted);\n const handler = this._handlers.get(existing.element_type);\n if (handler) {\n try {\n await handler.unmount(reverted, this._ctx());\n } catch (err) {\n this._logger.warn('elements: handler.unmount threw', {\n instance_id: mutation.instance_id,\n err,\n });\n }\n }\n return;\n }\n }\n\n private async _mount(handler: ElementTypeHandler, instance: MountedElement): Promise<boolean> {\n const validation = handler.validate(instance, this._ctx());\n if (!validation.accepted) {\n this._logger.warn('elements: mount validation failed', {\n instance_id: instance.instance_id,\n reason: validation.reason,\n detail: validation.detail,\n });\n return false;\n }\n try {\n await handler.mount(instance, this._ctx());\n } catch (err) {\n // Mirror the patch branch \u2014 a throwing handler must not leave the\n // map advanced ahead of the DOM, otherwise the dedup guard drops\n // corrective re-sends.\n this._logger.warn('elements: handler.mount threw', {\n instance_id: instance.instance_id,\n err,\n });\n return false;\n }\n return true;\n }\n\n private _ctx(): ElementHandlerContext {\n return { actions: this._actions, events: this._events };\n }\n}\n", "/**\n * Helpers for decoding AG-UI custom event payloads \u2014 Phase 6b.\n *\n * `AgUiTransport.onA2UIEvent` historically forwarded the raw `event.value`\n * payload as an `ActionStep` directly to `runtime.actions.applyBatch`.\n * Phase 5's backend now also emits `syntro.element.mutation` envelopes\n * (mounts/patches/unmounts authored by the LLM via `mount_element` &c.),\n * which the SDK routes to `ElementInstanceStore.apply` instead.\n *\n * Discrimination is by the envelope's `type` field. Non-element payloads\n * (raw ActionStep, A2UI `createSurface` / `updateDataModel` envelopes\n * from any A2UI integration) fall through to the legacy path.\n */\n\nimport type { ElementMutation, MutationEnvelope } from './types';\n\n/**\n * Returns the mutations array if `payload` is a well-formed\n * `syntro.element.mutation` envelope, otherwise `null`.\n *\n * Validates only the discriminator + the structural shape needed to\n * route to the store. Per-mutation validation lives in the store / its\n * type handlers (defense in depth), so this stays small.\n */\nexport function decodeMutationEnvelope(payload: unknown): ElementMutation[] | null {\n if (!payload || typeof payload !== 'object') return null;\n const obj = payload as Partial<MutationEnvelope>;\n if (obj.type !== 'syntro.element.mutation') return null;\n if (obj.schema_version !== 'v0') return null;\n if (!Array.isArray(obj.mutations)) return null;\n return obj.mutations;\n}\n", "/**\n * Boot-time fetcher for `GET /api/adaptive/mounted_elements`.\n *\n * Follows the SDK's vanilla-fetch convention (see\n * `packages/runtime-sdk/src/overlays/fetcher.ts` for the sibling pattern\n * \u2014 no shared HTTP client, no axios, no fetch wrapper).\n *\n * Auth: forwards the SDK token from `window.__SYNTRO_CONFIG__.token`\n * as a Bearer header. Cookies (`syntro_chat_session`) are sent via\n * `credentials: 'include'` so the backend can scope to the same Redis\n * session the chat uses.\n *\n * 404 contract: the backend returns 404 only when the workspace's SDK\n * token doesn't resolve to a workspace. The SDK treats 404 as\n * \"feature unavailable\" \u2014 no error UI, no retries \u2014 per the design doc.\n * Network errors are logged + swallowed so the SDK boot path stays\n * resilient to backend hiccups.\n */\n\nimport type { MountedElementsResponse } from './types';\n\nconst DEFAULT_ENDPOINT = '/api/adaptive/mounted_elements';\n\nexport interface FetchMountedElementsOptions {\n /** Override the endpoint URL (defaults to same-origin\n * `/api/adaptive/mounted_elements`). Tests + multi-environment\n * deploys use this. */\n endpoint?: string;\n /** SDK token. Defaults to `window.__SYNTRO_CONFIG__.token`. */\n token?: string;\n /** Custom fetch implementation \u2014 used by tests to mock the network. */\n fetchImpl?: typeof fetch;\n /** Logger \u2014 used by tests to capture log output. */\n logger?: Pick<Console, 'warn'>;\n}\n\n/**\n * Fetch the visitor's currently-mounted elements + session expiry.\n *\n * Returns `null` on any failure (404, network error, malformed JSON,\n * etc.). The caller treats `null` as \"feature unavailable, no\n * rehydrate\" \u2014 boot continues normally with an empty element store.\n */\nexport async function fetchMountedElements(\n options: FetchMountedElementsOptions = {}\n): Promise<MountedElementsResponse | null> {\n const endpoint = options.endpoint ?? DEFAULT_ENDPOINT;\n const fetchImpl = options.fetchImpl ?? globalThis.fetch;\n const logger = options.logger ?? console;\n\n if (typeof fetchImpl !== 'function') {\n // SSR / non-browser env \u2014 no boot fetch possible.\n return null;\n }\n\n const token = options.token ?? _tokenFromGlobalConfig();\n const headers: Record<string, string> = {};\n if (token) {\n headers.Authorization = `Bearer ${token}`;\n }\n\n let response: Response;\n try {\n response = await fetchImpl(endpoint, {\n method: 'GET',\n headers,\n credentials: 'include',\n });\n } catch (err) {\n logger.warn('elements.fetcher: network error', { endpoint, err });\n return null;\n }\n\n if (response.status === 404) {\n // Endpoint not deployed yet OR workspace SDK token doesn't resolve.\n // Either way: no rehydrate, no error UI.\n return null;\n }\n if (!response.ok) {\n logger.warn('elements.fetcher: non-2xx response', {\n endpoint,\n status: response.status,\n });\n return null;\n }\n\n try {\n return (await response.json()) as MountedElementsResponse;\n } catch (err) {\n logger.warn('elements.fetcher: malformed JSON', { endpoint, err });\n return null;\n }\n}\n\nfunction _tokenFromGlobalConfig(): string | undefined {\n if (typeof globalThis === 'undefined') return undefined;\n const cfg = (globalThis as { __SYNTRO_CONFIG__?: { token?: string } }).__SYNTRO_CONFIG__;\n return cfg?.token;\n}\n", "/**\n * Item element handler \u2014 translates `parent_tile`-placed mount/patch/\n * unmount mutations into pub/sub events that container widgets subscribe\n * to.\n *\n * Container widgets (chips strip, FAQ accordion, nav tips) declare\n * themselves participants by implementing the `CompositionalContainer`\n * contract and subscribing to `runtime.events` with\n * `element.compositional_append` / `element.compositional_patch` /\n * `element.compositional_remove`. Each container filters by\n * `props.tile_id === this.tileId`.\n *\n * Why pub/sub rather than DOM lookup? The runtime's event bus is\n * domain-agnostic and already exists. Container widgets that aren't\n * mounted yet (slow inline-slot wrapper hydration) miss the event,\n * but the next subscribe-then-replay pass at container mount time picks\n * up the durable session state from the LLM's `mounted_elements`. No\n * DOM crawling, no MutationObserver wiring, no ordering assumption.\n *\n * The handler is dumb: it forwards the wire `content` as the `item`\n * payload. The backend wrote that content as a fully-formed\n * compositional-item envelope (`{kind, config: {id, title, payload}}`)\n * so the receiving container can append it verbatim.\n */\n\nimport type {\n ElementHandlerContext,\n ElementTypeHandler,\n ValidateResult,\n} from './ElementTypeHandler';\nimport type { MountedElement, ParentTilePlacement } from './types';\n\n/** Event names. Kept as module constants so subscribers can import them\n * instead of memorizing strings. */\nexport const COMPOSITIONAL_APPEND_EVENT = 'element.compositional_append';\nexport const COMPOSITIONAL_PATCH_EVENT = 'element.compositional_patch';\nexport const COMPOSITIONAL_REMOVE_EVENT = 'element.compositional_remove';\n\nexport interface CompositionalAppendEvent {\n /** Parent tile id from the mount's placement. Receivers filter on this. */\n tile_id: string;\n /** Unique id of the mounted item \u2014 the receiving container should also\n * set this on the item's DOM as `data-syntro-element-id`. */\n instance_id: string;\n /** Wire shape constructed by the backend \u2014 `{kind, config: {\u2026}}`. */\n item: Record<string, unknown>;\n /** Insertion position \u2014 receivers honor this when appending. */\n position: 'append' | 'prepend';\n}\n\nexport interface CompositionalPatchEvent {\n tile_id: string;\n instance_id: string;\n item: Record<string, unknown>;\n}\n\nexport interface CompositionalRemoveEvent {\n tile_id: string;\n instance_id: string;\n}\n\nexport class ItemHandler implements ElementTypeHandler {\n readonly typeName = 'item' as const;\n readonly lifecycle = 'stateful' as const;\n\n validate(instance: MountedElement, _ctx: ElementHandlerContext): ValidateResult {\n if (instance.element_type !== 'item') {\n return {\n accepted: false,\n reason: 'wrong_element_type',\n detail: instance.element_type,\n };\n }\n if (instance.placement.type !== 'parent_tile') {\n return {\n accepted: false,\n reason: 'item_requires_parent_tile_placement',\n detail: `got placement.type=${instance.placement.type}`,\n };\n }\n if (typeof instance.template_id !== 'string' || instance.template_id.length === 0) {\n return { accepted: false, reason: 'missing_template_id' };\n }\n return { accepted: true };\n }\n\n async mount(instance: MountedElement, ctx: ElementHandlerContext): Promise<void> {\n if (!ctx.events) return; // no bus \u2192 no-op, validate already passed\n const placement = instance.placement as ParentTilePlacement;\n ctx.events.publish(COMPOSITIONAL_APPEND_EVENT, {\n tile_id: placement.tile_id,\n instance_id: instance.instance_id,\n item: instance.content,\n position: placement.position,\n } satisfies CompositionalAppendEvent as unknown as Record<string, unknown>);\n }\n\n async patch(instance: MountedElement, ctx: ElementHandlerContext): Promise<void> {\n if (!ctx.events) return;\n const placement = instance.placement as ParentTilePlacement;\n ctx.events.publish(COMPOSITIONAL_PATCH_EVENT, {\n tile_id: placement.tile_id,\n instance_id: instance.instance_id,\n item: instance.content,\n } satisfies CompositionalPatchEvent as unknown as Record<string, unknown>);\n }\n\n async unmount(instance: MountedElement, ctx: ElementHandlerContext): Promise<void> {\n if (!ctx.events) return;\n const placement = instance.placement as ParentTilePlacement;\n ctx.events.publish(COMPOSITIONAL_REMOVE_EVENT, {\n tile_id: placement.tile_id,\n instance_id: instance.instance_id,\n } satisfies CompositionalRemoveEvent as unknown as Record<string, unknown>);\n }\n}\n", "/**\n * Tile element handler \u2014 translates `slot`-placed mount/patch/unmount\n * mutations into pub/sub events that the runtime SDK subscribes to.\n *\n * The runtime SDK's `SmartCanvasElementLit` already routes config-driven\n * tiles to inline slots via `tile.slot === slotName`. LLM-authored tiles\n * use the same path: we publish a TileConfig-shaped envelope and the\n * runtime merges it into its tile array, then existing routing renders\n * it inside the slot's `<syntro-tile-stack>` alongside any config tiles.\n *\n * Why pub/sub instead of `core:mountWidget` via ActionEngine?\n *\n * - `Surfaces.mount` is exclusive per slot \u2014 a second LLM tile to the\n * same slot would displace the first.\n * - `Surfaces` only knows built-in slot names; inline slots resolve\n * anchors via SyntroInlineSlot, not via Surfaces.\n * - Tiles need the SyntroTileCard chrome (chromeless handling, theme\n * overrides, dismiss control) that `core:mountWidget` skips.\n *\n * Container widgets stay dumb: the runtime owns one tile array per slot\n * and renders it the same way regardless of provenance. Subscribers\n * filter on `slot === this.name`.\n *\n * Event names + payload types live in `@syntrologie/sdk-contracts` so\n * both packages share the contract. Renaming a field there is a TS\n * error here and in the runtime subscriber \u2014 no silent drift.\n */\n\nimport {\n TILE_MOUNTED_EVENT,\n TILE_PATCHED_EVENT,\n TILE_UNMOUNTED_EVENT,\n type TileLifecycleMountProps,\n type TileLifecycleUnmountProps,\n} from '@syntrologie/sdk-contracts';\n\nimport type {\n ElementHandlerContext,\n ElementTypeHandler,\n ValidateResult,\n} from './ElementTypeHandler';\nimport type { MountedElement, SlotPlacement } from './types';\n\nexport {\n TILE_MOUNTED_EVENT,\n TILE_PATCHED_EVENT,\n TILE_UNMOUNTED_EVENT,\n} from '@syntrologie/sdk-contracts';\n\n/**\n * Optional template\u2192widget resolver. ``uiTemplates`` declares both\n * the LLM-facing ``id`` (e.g. ``\"product-card\"``) and the runtime\n * widget the chrome should render (e.g. ``\"adaptive-product:card\"``).\n * Without this resolver, the handler falls back to ``template_id`` as\n * the widget id \u2014 which only works when the admin chose ids matching\n * the widget registry, and silently mounts to \"Widget not available\"\n * when they don't.\n */\nexport type TileTemplateWidgetResolver = (templateId: string) => string | undefined;\n\nexport class TileHandler implements ElementTypeHandler {\n readonly typeName = 'tile' as const;\n readonly lifecycle = 'stateful' as const;\n\n constructor(private readonly resolveWidget?: TileTemplateWidgetResolver) {}\n\n private _widgetFor(instance: MountedElement): string {\n return this.resolveWidget?.(instance.template_id) ?? instance.template_id;\n }\n\n validate(instance: MountedElement, _ctx: ElementHandlerContext): ValidateResult {\n if (instance.element_type !== 'tile') {\n return { accepted: false, reason: 'wrong_element_type', detail: instance.element_type };\n }\n if (instance.placement.type !== 'slot') {\n return {\n accepted: false,\n reason: 'tile_requires_slot_placement',\n detail: `got placement.type=${instance.placement.type}`,\n };\n }\n if (typeof instance.template_id !== 'string' || instance.template_id.length === 0) {\n return { accepted: false, reason: 'missing_template_id' };\n }\n return { accepted: true };\n }\n\n async mount(instance: MountedElement, ctx: ElementHandlerContext): Promise<void> {\n if (!ctx.events) return;\n const placement = instance.placement as SlotPlacement;\n const props: TileLifecycleMountProps = {\n slot: placement.slot,\n instance_id: instance.instance_id,\n widget: this._widgetFor(instance),\n props: (instance.content ?? {}) as Record<string, unknown>,\n };\n ctx.events.publish(TILE_MOUNTED_EVENT, props as unknown as Record<string, unknown>);\n }\n\n async patch(instance: MountedElement, ctx: ElementHandlerContext): Promise<void> {\n if (!ctx.events) return;\n const placement = instance.placement as SlotPlacement;\n const props: TileLifecycleMountProps = {\n slot: placement.slot,\n instance_id: instance.instance_id,\n widget: this._widgetFor(instance),\n props: (instance.content ?? {}) as Record<string, unknown>,\n };\n ctx.events.publish(TILE_PATCHED_EVENT, props as unknown as Record<string, unknown>);\n }\n\n async unmount(instance: MountedElement, ctx: ElementHandlerContext): Promise<void> {\n if (!ctx.events) return;\n const placement = instance.placement as SlotPlacement;\n const props: TileLifecycleUnmountProps = {\n slot: placement.slot,\n instance_id: instance.instance_id,\n };\n ctx.events.publish(TILE_UNMOUNTED_EVENT, props as unknown as Record<string, unknown>);\n }\n}\n", "/**\n * Turnstile \u2014 shared Cloudflare bot-check helpers.\n *\n * Originally lived inline in ChatAssistantLit. Extracted so the new\n * ChatTransport adapter can use the same managed-challenge flow\n * without duplicating the panel-portal logic.\n *\n * Verify-panel is mounted to `document.body` (NOT into the calling\n * widget's shadow-rooted container). Cloudflare Turnstile crashes\n * with `Cannot read properties of undefined (reading 'toLowerCase')`\n * when its host element lives inside a shadow root (verified on\n * healthmaxxer 2026-05-22 \u2014 chat tile inside `<smart-canvas>`'s open\n * shadow root). So we portal the host out and position it as a fixed\n * overlay at the bottom-center of the viewport.\n *\n * The panel is ALWAYS mounted (CF needs a DOM target in case it\n * decides to challenge) but is off-screen by default. For clean\n * traffic, CF passive-grades silently with\n * `appearance: 'interaction-only'` \u2014 nothing is ever visible. For\n * flagged sessions, CF's `before-interactive-callback` fires and the\n * orchestration helper reveals the panel.\n *\n * Copy is intentionally generic \u2014 customer end-users see this when CF\n * flags their session, regardless of customer.\n */\n\n// =====================================================================\n// Cloudflare Turnstile sitekey (build-time hardcoded)\n// =====================================================================\n//\n// Per the design decision: the sitekey ships as a hardcoded constant in\n// the SDK CDN bundle. ONE sitekey for all customers \u2014 Cloudflare's\n// allowed-domains list (configured on the widget in syntro-infra) is\n// what isolates per-customer demos. See cloudflare/turnstile/main.tf.\n//\n// To enable Turnstile enforcement:\n// 1. Operator runs `terraform apply` on cloudflare/turnstile (syntro-infra).\n// 2. Operator gets the value: `terraform output -raw turnstile_sitekey`.\n// 3. Operator updates this constant to the real value.\n// 4. Cut a new SDK Release. Customers' next page-load loads the new bundle.\n// 5. Operator populates TURNSTILE_SECRET in AWS Secrets Manager \u2192 next\n// backend pod restart, the gate is hot.\n//\n// Empty string = Turnstile disabled. The widget skips token acquisition;\n// the backend's `_enforcement_mode()` resolves to `off` when its env var\n// is unset. When the secret IS set, the backend defaults to SOFT mode\n// (verify + log, never block). Hard-fail requires the operator to set\n// `TURNSTILE_ENFORCE_MODE=hard` explicitly. See platform/backend/app/api/_turnstile.py.\nexport const TURNSTILE_SITEKEY = '0x4AAAAAADSzPbGWxeguF4YJ';\n\n// How long we wait for Turnstile to (a) load its JS, (b) render the\n// invisible widget, and (c) fire its success callback. Beyond this, we\n// proceed WITHOUT a token. If enforcement is on, the backend will 403\n// and the existing fallback card path catches it.\nconst TURNSTILE_ACQUIRE_TIMEOUT_MS = 5_000;\n\nconst TURNSTILE_SCRIPT_URL =\n 'https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit';\n\ninterface TurnstileGlobal {\n render: (\n container: HTMLElement | string,\n options: {\n sitekey: string;\n callback: (token: string) => void;\n 'error-callback'?: () => void;\n 'timeout-callback'?: () => void;\n 'expired-callback'?: () => void;\n 'before-interactive-callback'?: () => void;\n 'after-interactive-callback'?: () => void;\n size?: 'normal' | 'compact' | 'invisible' | 'flexible';\n appearance?: 'always' | 'execute' | 'interaction-only';\n }\n ) => string;\n remove?: (widgetId: string) => void;\n reset?: (widgetId?: string) => void;\n execute?: (widgetId: string) => void;\n}\n\n/**\n * Idempotent script loader. Multiple chatbot tiles on the same page\n * would otherwise each inject the script tag.\n */\nfunction loadTurnstileScript(): Promise<TurnstileGlobal> {\n if (typeof window === 'undefined') {\n return Promise.reject(new Error('no window'));\n }\n const w = window as unknown as { turnstile?: TurnstileGlobal };\n if (w.turnstile) return Promise.resolve(w.turnstile);\n\n return new Promise<TurnstileGlobal>((resolve, reject) => {\n const existing = document.querySelector<HTMLScriptElement>(\n 'script[src^=\"https://challenges.cloudflare.com/turnstile/v0/api.js\"]'\n );\n const onLoad = (): void => {\n const t = (window as unknown as { turnstile?: TurnstileGlobal }).turnstile;\n if (t) resolve(t);\n else reject(new Error('turnstile global not present after load'));\n };\n const onError = (): void => reject(new Error('turnstile script failed to load'));\n if (existing) {\n existing.addEventListener('load', onLoad);\n existing.addEventListener('error', onError);\n return;\n }\n const script = document.createElement('script');\n script.src = TURNSTILE_SCRIPT_URL;\n script.async = true;\n script.defer = true;\n script.addEventListener('load', onLoad);\n script.addEventListener('error', onError);\n document.head.appendChild(script);\n });\n}\n\nexport interface AcquireTurnstileOptions {\n /** Widget size. `flexible` (default for managed-mode sitekeys). */\n size?: 'flexible' | 'normal' | 'compact' | 'invisible';\n /** `interaction-only` keeps the widget invisible during passive grading. */\n appearance?: 'always' | 'execute' | 'interaction-only';\n /** Where to mount the widget. Off-screen host created when omitted. */\n host?: HTMLElement;\n /** Fires when CF decides a challenge is needed \u2014 surface \"verifying\" copy. */\n onBeforeInteractive?: () => void;\n /** Cancels an in-flight acquisition. Required for clean unmount-during-challenge. */\n signal?: AbortSignal;\n}\n\n/**\n * Acquire a Cloudflare Turnstile token. Returns null when:\n * \u2022 TURNSTILE_SITEKEY is empty (Turnstile disabled at build time)\n * \u2022 the script fails to load (customer CSP blocks Cloudflare, etc.)\n * \u2022 the render callback doesn't fire within TURNSTILE_ACQUIRE_TIMEOUT_MS\n * \u2022 Cloudflare returns an error-callback (e.g., rate-limited, bad sitekey)\n *\n * Calls `turnstile.remove(widgetId)` on settle so CF's internal widget\n * registry doesn't leak across re-mounts.\n *\n * Exported for tests and for the higher-level acquireTokenWithChallenge\n * helper below.\n */\nexport async function acquireTurnstileToken(\n opts: AcquireTurnstileOptions = {}\n): Promise<string | null> {\n const size = opts.size ?? 'flexible';\n const appearance = opts.appearance ?? 'interaction-only';\n if (!TURNSTILE_SITEKEY) return null;\n if (typeof window === 'undefined' || typeof document === 'undefined') return null;\n\n let turnstile: TurnstileGlobal;\n try {\n turnstile = await Promise.race([\n loadTurnstileScript(),\n new Promise<TurnstileGlobal>((_, reject) =>\n setTimeout(() => reject(new Error('turnstile load timeout')), TURNSTILE_ACQUIRE_TIMEOUT_MS)\n ),\n ]);\n } catch {\n return null;\n }\n\n const ownsHost = !opts.host;\n const host =\n opts.host ??\n (() => {\n const h = document.createElement('div');\n h.style.cssText =\n 'position:absolute;top:-9999px;left:-9999px;width:0;height:0;overflow:hidden;';\n h.setAttribute('data-adaptive-chatbot-turnstile-host', 'true');\n document.body.appendChild(h);\n return h;\n })();\n\n return new Promise<string | null>((resolve) => {\n let settled = false;\n let widgetId: string | null = null;\n\n const settle = (value: string | null): void => {\n if (settled) return;\n settled = true;\n cancelSilentTimeout();\n if (typeof widgetId === 'string') {\n try {\n turnstile.remove?.(widgetId);\n } catch {\n // Already removed / unknown id \u2014 non-fatal.\n }\n }\n if (ownsHost) {\n setTimeout(() => host.remove(), 0);\n }\n resolve(value);\n };\n\n let timer: ReturnType<typeof setTimeout> | null = setTimeout(\n () => settle(null),\n TURNSTILE_ACQUIRE_TIMEOUT_MS\n );\n const cancelSilentTimeout = (): void => {\n if (timer !== null) {\n clearTimeout(timer);\n timer = null;\n }\n };\n\n if (opts.signal) {\n if (opts.signal.aborted) {\n settle(null);\n return;\n }\n opts.signal.addEventListener('abort', () => settle(null), { once: true });\n }\n\n try {\n widgetId = turnstile.render(host, {\n sitekey: TURNSTILE_SITEKEY,\n size,\n appearance,\n callback: (token) => settle(token),\n 'error-callback': () => settle(null),\n 'timeout-callback': () => settle(null),\n 'expired-callback': () => settle(null),\n 'before-interactive-callback': () => {\n cancelSilentTimeout();\n opts.onBeforeInteractive?.();\n },\n });\n } catch {\n settle(null);\n }\n });\n}\n\n/**\n * Mount the off-screen verify-panel that hosts the managed Turnstile\n * widget. Returns the panel element; callers MUST call panel.remove()\n * when done (the panel is mounted on document.body and won't be\n * garbage-collected with their widget).\n */\nexport function renderVerifyPanel(): HTMLElement {\n const panel = document.createElement('div');\n panel.setAttribute('data-adaptive-chatbot-turnstile-visible', 'true');\n panel.style.cssText = [\n 'position:fixed',\n 'left:-9999px',\n 'top:-9999px',\n 'z-index:2147483647',\n 'display:flex',\n 'flex-direction:column',\n 'align-items:center',\n 'gap:12px',\n 'padding:16px 20px',\n 'background:#ffffff',\n 'color:#1a1a1a',\n \"font-family:'system-ui',sans-serif\",\n 'border-radius:12px',\n 'box-shadow:0 8px 24px rgba(0,0,0,0.18)',\n 'max-width:340px',\n 'text-align:center',\n ].join(';');\n\n const heading = document.createElement('div');\n heading.setAttribute('data-adaptive-chatbot-turnstile-heading', 'true');\n heading.style.cssText = 'font-size:14px;font-weight:500;line-height:1.4;';\n heading.textContent = 'Quick check before we start chatting';\n\n const widgetHost = document.createElement('div');\n widgetHost.setAttribute('data-adaptive-chatbot-turnstile-host', 'true');\n\n panel.appendChild(heading);\n panel.appendChild(widgetHost);\n document.body.appendChild(panel);\n return panel;\n}\n\n/**\n * Move the verify panel on-screen when CF signals via\n * `before-interactive-callback` that the checkbox is about to appear.\n * No-op if the panel was already torn down (race with token resolution).\n */\nexport function revealVerifyPanel(panel: HTMLElement | null): void {\n if (!panel) return;\n panel.style.left = '50%';\n panel.style.top = '';\n panel.style.bottom = '24px';\n panel.style.transform = 'translateX(-50%)';\n}\n\nexport interface AcquireWithChallengeResult {\n token: string | null;\n outcome: 'disabled' | 'silent_succeeded' | 'interactive_succeeded' | 'acquisition_failed';\n}\n\n/**\n * Orchestrated acquire: mount the verify panel, ask CF for a token,\n * reveal the panel if CF decides to challenge interactively, then\n * clean up regardless of outcome.\n *\n * `outcome` is set so callers can distinguish silent-pass from\n * interactive-pass from failure \u2014 useful telemetry for \"how many\n * sessions actually saw the checkbox?\". `disabled` means\n * TURNSTILE_SITEKEY was empty at build time.\n */\nexport async function acquireTokenWithChallenge(\n options: { signal?: AbortSignal } = {}\n): Promise<AcquireWithChallengeResult> {\n const panel = renderVerifyPanel();\n const widgetHost = panel.querySelector<HTMLElement>(\n '[data-adaptive-chatbot-turnstile-host=\"true\"]'\n );\n if (!widgetHost) {\n panel.remove();\n return { token: null, outcome: 'acquisition_failed' };\n }\n\n // Subscribe to abort INDEPENDENTLY of acquireTurnstileToken's own\n // abort handling so panel cleanup happens synchronously in the same\n // tick as the caller's cleanup() \u2014 callers' tests + UX both expect\n // the panel gone immediately, not after a microtask drain.\n let removed = false;\n const removePanel = (): void => {\n if (removed) return;\n removed = true;\n panel.remove();\n };\n if (options.signal) {\n if (options.signal.aborted) {\n removePanel();\n return { token: null, outcome: 'acquisition_failed' };\n }\n options.signal.addEventListener('abort', removePanel, { once: true });\n }\n\n let interactive = false;\n try {\n const token = await acquireTurnstileToken({\n host: widgetHost,\n signal: options.signal,\n onBeforeInteractive: () => {\n interactive = true;\n revealVerifyPanel(panel);\n },\n });\n if (token === null) {\n return { token: null, outcome: 'acquisition_failed' };\n }\n return {\n token,\n outcome: interactive ? 'interactive_succeeded' : 'silent_succeeded',\n };\n } finally {\n removePanel();\n }\n}\n", "/**\n * Adaptive Chatbot \u2014 Lit Mountable\n *\n * Thin wrapper that mounts <syntro-chat> from @syntrologie/chat with an\n * AgUiTransport pointed at the adaptive AG-UI streaming endpoint.\n *\n * Four pieces this mountable owns:\n *\n * 1. SDK token plumbing. The chat backend (`/api/adaptive/*`) is identified\n * by the workspace's `syn_*` SDK token. The token lives on\n * `window.__SYNTRO_CONFIG__.token` (set by runtime-config.js) \u2014 we read\n * it at mount time and forward it via `Authorization: Bearer` header.\n *\n * 2. Cloudflare Turnstile bot-check token. When `TURNSTILE_SITEKEY` is\n * set, render a single `size: 'flexible'` widget with\n * `appearance: 'interaction-only'` against a `managed`-mode sitekey:\n * \u2022 Clean traffic: CF passive-grades silently, token resolves in\n * ~100ms, no UI is ever shown.\n * \u2022 Flagged traffic (datacenter IP, automation, strict-privacy):\n * CF renders an \"I am human\" checkbox inside the in-chat verify\n * panel; on solve, swap to the chat UI.\n * \u2022 Total failure (CSP blocks CF, network error, user dismisses):\n * fall through with no token; backend enforcement 403s and the\n * existing fallback card renders.\n * The widget mode MUST be `managed` on the CF side \u2014 see\n * cloudflare/turnstile/main.tf in syntro-infra. (`mode = 'invisible'`\n * rejects any `size` other than `invisible`, and `size: 'invisible'`\n * against `mode = 'managed'` fails with a synchronous TurnstileError \u2014\n * don't mix.)\n * If sitekey is empty, this step is skipped entirely.\n *\n * 3. Fallback card. If the first agent run fails (Cloudflare Turnstile\n * bot-check failure, CORS / network error, or a server-side rejection),\n * swap the chat UI for a per-customer fallback card built from\n * `props.fallback`. The end-user is redirected to the customer's normal\n * support path instead of seeing a raw error.\n *\n * 4. A2UI passthrough. AG-UI CUSTOM events carrying A2UI payloads\n * (createSurface, updateDataModel, \u2026) get forwarded to\n * `runtime.actions.applyBatch` so tiles can render server-driven UI\n * inside the chat surface.\n */\n\n// Side-effect import: registers <syntro-chat> custom element\nimport '@syntrologie/chat';\nimport type { SyntroChat } from '@syntrologie/chat';\nimport { AgUiTransport } from '@syntrologie/chat/transport/agui';\nimport { type MountPlumbing, stripMountPlumbing } from '@syntrologie/sdk-contracts';\n\nimport {\n ActionHandler,\n decodeMutationEnvelope,\n ElementInstanceStore,\n fetchMountedElements,\n TileHandler,\n} from './elements';\nimport { acquireTokenWithChallenge, TURNSTILE_SITEKEY } from './Turnstile';\nimport type { ChatbotConfig, ChatbotFallback, ChatbotWidgetRuntime } from './types.js';\n\nexport interface ChatAssistantLitProps {\n config: ChatbotConfig;\n runtime: ChatbotWidgetRuntime;\n tileId?: string;\n}\n\n// The runtime SDK (SyntroTileCard + WidgetRegistry) delivers tile.props spread\n// flat into mountConfig, alongside `instanceId` and `runtime`. Mountables must\n// destructure flat. `config` is accepted as a legacy nested escape hatch for\n// direct callers that prefer the wrapped shape.\ntype FlatMountConfig = ChatbotConfig & {\n runtime?: ChatbotWidgetRuntime;\n instanceId?: string;\n tileId?: string;\n /** Legacy nested-config escape hatch for direct callers. */\n config?: ChatbotConfig;\n};\n\nconst ERROR_DEBOUNCE_MS = 1_500;\n\n// Turnstile constants + helpers (renderVerifyPanel, acquireTurnstileToken,\n// acquireTokenWithChallenge) now live in ./Turnstile so ChatTransport\n// can share them. TURNSTILE_SITEKEY is imported at the top.\n\ninterface SyntroGlobalConfig {\n token?: string;\n}\n\n/**\n * Read the workspace's syn_* token from runtime-config.js. We intentionally\n * touch `window.__SYNTRO_CONFIG__` directly rather than threading the token\n * through the runtime context \u2014 the SDK already establishes this global as\n * its source of truth for workspace identity, and adaptives that ship via\n * CDN have no other reliable channel. If the global is missing we return\n * undefined and the mount falls back to the unauthenticated path (which\n * will then fail at the backend and trigger the fallback card).\n */\nfunction readSyntroToken(): string | undefined {\n if (typeof window === 'undefined') return undefined;\n const cfg = (window as unknown as { __SYNTRO_CONFIG__?: SyntroGlobalConfig }).__SYNTRO_CONFIG__;\n const token = cfg?.token;\n return typeof token === 'string' && token.startsWith('syn_') ? token : undefined;\n}\n\nconst FALLBACK_DEFAULTS = {\n title: 'Live chat is unavailable right now',\n message: \"We couldn't verify your browser. Reach our team another way and we'll get back to you.\",\n ctaLabel: 'Contact support',\n} as const;\n\n/**\n * Build the inline HTML for the fallback card. Customer-supplied copy wins;\n * everything else falls back to generic copy. The card avoids any reference\n * to Cloudflare or Turnstile so the end-user is never confronted with our\n * implementation details.\n */\nexport function renderFallbackHtml(fallback: ChatbotFallback | undefined): string {\n const title = fallback?.title ?? FALLBACK_DEFAULTS.title;\n const message = fallback?.message ?? FALLBACK_DEFAULTS.message;\n const ctaLabel = fallback?.ctaLabel ?? FALLBACK_DEFAULTS.ctaLabel;\n const ctaHref = fallback?.ctaHref;\n\n // Use the same CSS vars the rest of the chat skin reads so the card visually\n // belongs to the chat surface, not the customer's site chrome.\n const wrapperStyle = [\n 'display:flex',\n 'flex-direction:column',\n 'gap:12px',\n 'padding:20px',\n 'height:100%',\n \"background:var(--sc-content-background,'transparent')\",\n \"color:var(--sc-content-text-color,'#1a1a1a')\",\n \"font-family:var(--sc-font-family,'system-ui')\",\n ].join(';');\n\n const titleStyle = 'font-size:15px;font-weight:600;line-height:1.3;';\n const messageStyle =\n 'font-size:14px;line-height:1.5;color:var(--sc-content-text-secondary-color,#6b7280);';\n const ctaStyle = [\n 'display:inline-block',\n 'margin-top:4px',\n 'padding:10px 16px',\n \"background:var(--sc-color-primary,'#111')\",\n \"color:var(--sc-color-primary-foreground,'#fff')\",\n 'text-decoration:none',\n 'border-radius:8px',\n 'font-size:14px',\n 'font-weight:500',\n 'align-self:flex-start',\n ].join(';');\n\n const escapeHtml = (s: string): string =>\n s.replace(/[&<>\"']/g, (ch) => {\n switch (ch) {\n case '&':\n return '&amp;';\n case '<':\n return '&lt;';\n case '>':\n return '&gt;';\n case '\"':\n return '&quot;';\n case \"'\":\n return '&#39;';\n default:\n // Regex above only matches the five chars above, but be\n // explicit so a future regex edit can't silently break.\n return ch;\n }\n });\n\n // Defense-in-depth: the schema's URL guard rejects bad ctaHrefs at apply\n // time, but the widget revalidates at render so a config that slips past\n // (manual DB write, schema-vendor drift) can never inject a `javascript:`\n // or other non-http(s) scheme. Pattern matches the schema's exact regex.\n const ctaHtml =\n ctaHref && /^https?:\\/\\//.test(ctaHref)\n ? `<a href=\"${escapeHtml(ctaHref)}\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"${ctaStyle}\">${escapeHtml(ctaLabel)}</a>`\n : '';\n\n return `<div style=\"${wrapperStyle}\" data-adaptive-chatbot-fallback=\"true\"><div style=\"${titleStyle}\">${escapeHtml(title)}</div><div style=\"${messageStyle}\">${escapeHtml(message)}</div>${ctaHtml}</div>`;\n}\n\nexport const ChatAssistantLitMountable = {\n mount(container: HTMLElement, mountConfig?: Record<string, unknown>) {\n const incoming = (mountConfig ?? null) as\n | (Partial<FlatMountConfig> & MountPlumbing & Record<string, unknown>)\n | null;\n const runtime = incoming?.runtime as ChatbotWidgetRuntime | undefined;\n const instanceId = incoming?.instanceId;\n const tileId = incoming?.tileId;\n const nestedConfig = incoming?.config;\n\n // Strip the canonical plumbing keys, then peel off the legacy nested\n // `config` escape hatch to recover the flat ChatbotConfig shape.\n const flat = stripMountPlumbing<Record<string, unknown>>(incoming);\n if ('config' in flat) {\n delete (flat as { config?: unknown }).config;\n }\n\n const flatLooksLikeChatbotConfig =\n typeof (flat as Partial<ChatbotConfig>).backendUrl === 'string';\n const chatbotConfig: ChatbotConfig | undefined =\n nestedConfig ?? (flatLooksLikeChatbotConfig ? (flat as unknown as ChatbotConfig) : undefined);\n const resolvedTileId = tileId ?? instanceId ?? 'chatbot-widget';\n\n if (!chatbotConfig?.backendUrl || !runtime) {\n container.innerHTML =\n '<div style=\"padding:16px;color:var(--sc-content-text-secondary-color,#87919f)\">Chat widget requires config and runtime.</div>';\n return () => {\n container.innerHTML = '';\n };\n }\n\n const baseUrl = chatbotConfig.backendUrl.replace(/\\/$/, '');\n const token = readSyntroToken();\n const streamUrl = `${baseUrl}/api/adaptive/stream`;\n\n const buildHeaders = (cft: string | null): Record<string, string> => {\n const h: Record<string, string> = {};\n if (token) h.Authorization = `Bearer ${token}`;\n if (cft) h['CF-Turnstile-Token'] = cft;\n // Forward PostHog distinct_id so the backend can resolve historical context.\n // Reads from window.posthog directly (not via runtime-sdk telemetry) because\n // the chatbot is alpha-status and not in builtinAdaptiveManifests \u2014 the\n // runtime-sdk wiring isn't always available. Defensive: missing/blocked\n // PostHog returns null, header is omitted, backend falls back to cold-start.\n try {\n const ph = (window as unknown as { posthog?: { get_distinct_id?: () => string } }).posthog;\n const did = ph?.get_distinct_id?.();\n if (typeof did === 'string' && did.length > 0) {\n h['X-Distinct-Id'] = did;\n }\n } catch {\n // PostHog throw on get_distinct_id is extremely rare but cheap to guard.\n }\n return h;\n };\n\n // Per-mount UUID + start timestamp for diagnostic logging. Lets us\n // distinguish a single mount's lifecycle from a remount loop in the\n // console history (the runtime SDK may call mount() multiple times\n // for the same tile across re-render cycles). Short ID \u2014 only meant\n // for visual grep, not durable correlation.\n const mountId = `m_${Math.random().toString(36).slice(2, 8)}`;\n const mountStartedAt = Date.now();\n const mountAgeMs = (): number => Date.now() - mountStartedAt;\n /**\n * Debug-logger. Flippable via `window.__SYNTRO_CHAT_DEBUG__ = true`\n * in the customer's DevTools to enable verbose event tracing\n * without rebuilding the SDK. Normal users see only the warn-level\n * lines we already emit (turnstile acquisition failure, fallback\n * rendered, A2UI apply failed).\n */\n const debug = (...args: unknown[]): void => {\n if ((window as unknown as { __SYNTRO_CHAT_DEBUG__?: boolean }).__SYNTRO_CHAT_DEBUG__) {\n console.debug(`[adaptive-chatbot ${mountId}]`, ...args);\n }\n };\n debug('mount', { tileId: resolvedTileId, instanceId, baseUrl });\n\n // ElementInstanceStore \u2014 receives `syntro.element.mutation` envelopes\n // from the LLM via the AG-UI transport (Phase 6 of the LLM-authored\n // UI element work). The store owns its lifetime within this mount;\n // boot-fetch hydration runs in parallel with the Turnstile handshake\n // below so it never blocks first-paint.\n const elementStore = new ElementInstanceStore({\n actions: runtime.actions,\n handlers: [new TileHandler(), new ActionHandler()],\n });\n\n // Boot fetch \u2014 best-effort; failures land silently per the\n // \"feature unavailable, no error UI\" contract. Fires immediately so\n // mounted tiles from a prior session reappear before chat opens.\n // The endpoint is workspace-scoped via the syn_* token forwarded on\n // headers + cookie; ./fetcher.ts owns the auth wiring.\n void fetchMountedElements({\n endpoint: `${baseUrl}/api/adaptive/mounted_elements`,\n token,\n }).then((response) => {\n if (isUnmounted || response === null) return;\n void elementStore.hydrate(response.mounted_elements);\n elementStore.scheduleClientTtl(response.session_expires_at);\n });\n\n // Pre-instantiate the chat element so closures that reference it\n // (swapToFallback, cleanup) have a valid binding from the start.\n // Importing @syntrologie/chat registers <syntro-chat> as a side effect.\n const el = document.createElement('syntro-chat') as SyntroChat;\n el.greeting = chatbotConfig.greeting;\n if (chatbotConfig.suggestions) {\n el.suggestions = chatbotConfig.suggestions;\n }\n el.style.cssText = 'display:flex;flex-direction:column;height:100%;width:100%;';\n\n // The transport is built AFTER Turnstile acquisition resolves. Until\n // then, `transport` is null and cleanup is a no-op for the transport\n // (the chat element + Turnstile host get torn down separately).\n let transport: AgUiTransport | null = null;\n\n let hasSucceeded = false;\n let isUnmounted = false;\n let unsubscribe: (() => void) | null = null;\n let failureTimer: ReturnType<typeof setTimeout> | null = null;\n let errorDebounceTimer: ReturnType<typeof setTimeout> | null = null;\n let fallbackRendered = false;\n // Counter for diagnostic telemetry \u2014 lets us tell \"fallback after N\n // successful messages\" from \"fallback on first send\".\n let messagesSent = 0;\n // Captures the most recent transport error so swapToFallback can\n // attach it to the telemetry payload even when the actual fallback\n // fires from the debounce timer (after the error event itself is gone).\n let lastErrorPayload: {\n message?: string;\n status?: number | null;\n body?: string | null;\n errorName?: string | null;\n } | null = null;\n\n const clearTimers = (): void => {\n if (failureTimer) {\n clearTimeout(failureTimer);\n failureTimer = null;\n }\n if (errorDebounceTimer) {\n clearTimeout(errorDebounceTimer);\n errorDebounceTimer = null;\n }\n };\n\n // Captured from the Turnstile acquisition path (null when sitekey is\n // empty, i.e. Turnstile disabled). Surfaced on telemetry + console so we\n // can distinguish \"SDK never acquired a token\" from \"backend rejected\n // the token we sent\" \u2014 those have very different root causes (Cloudflare\n // / CSP / network on the SDK side vs. siteverify on the backend side).\n let hadTurnstileToken: boolean | null = null;\n // Discriminator for the bot-check outcome that produced the final state.\n // \u2022 disabled \u2014 TURNSTILE_SITEKEY empty at build time.\n // \u2022 silent_succeeded \u2014 CF passive-graded and granted a token with\n // no user interaction (the clean-traffic path).\n // \u2022 interactive_succeeded \u2014 CF presented the checkbox, the user solved.\n // \u2022 acquisition_failed \u2014 CF errored, timed out, or the user dismissed\n // mid-challenge \u2014 connecting without a token.\n // Lets us tell \"user successfully solved a CF checkbox\" from \"CF flagged\n // the session and the user couldn't / wouldn't pass\" from \"CF granted\n // silently\".\n type BotCheckOutcome =\n | 'disabled'\n | 'silent_succeeded'\n | 'interactive_succeeded'\n | 'acquisition_failed';\n let botCheckOutcome: BotCheckOutcome = 'disabled';\n\n const swapToFallback = (reason: 'connect_failed' | 'connect_timeout'): void => {\n if (isUnmounted || hasSucceeded || fallbackRendered) return;\n fallbackRendered = true;\n clearTimers();\n const payload = {\n tileId: resolvedTileId,\n reason,\n hadTurnstileToken,\n botCheckOutcome,\n // Diagnostic fields \u2014 let us tell \"fallback on first send because\n // backend 403'd the bot-check\" from \"fallback after 3 successful\n // messages because token expired mid-session\" from \"fallback\n // before any send because Turnstile failed\". All bounded so the\n // PostHog payload stays under their per-event size cap.\n mountId,\n mountAgeMs: mountAgeMs(),\n messagesSentBeforeFallback: messagesSent,\n errorStatus: lastErrorPayload?.status ?? null,\n errorBody: lastErrorPayload?.body ?? null,\n errorMessage: lastErrorPayload?.message ?? null,\n errorName: lastErrorPayload?.errorName ?? null,\n // Snapshot of the agent backend URL so PostHog queries can group\n // fallback events by customer environment (demo-api vs\n // dev-api). Cheap to attach; the SDK already has it in scope.\n backendUrl: streamUrl,\n };\n runtime.events.publish('chatbot.fallback_rendered', payload);\n // Critical fields baked into the message string so they're visible\n // at a glance even when the console viewer flattens the structured\n // payload to \"Object\" (rrweb-plugin-console-record does this).\n const statusLabel = lastErrorPayload?.status ?? 'no-status';\n console.warn(\n `[adaptive-chatbot] fallback rendered mountId=${mountId} reason=${reason} botCheck=${botCheckOutcome} errorStatus=${statusLabel} messagesSent=${messagesSent}`,\n payload\n );\n transport?.disconnect();\n el.remove();\n container.innerHTML = renderFallbackHtml(chatbotConfig.fallback);\n };\n\n const setupTransport = (cftToken: string | null): void => {\n if (isUnmounted) return;\n\n transport = new AgUiTransport({\n url: streamUrl,\n headers: buildHeaders(cftToken),\n // Adaptive runtime SDK needs the `syntro_chat_session` cookie to\n // round-trip cross-origin so subsequent boot fetches can rehydrate\n // LLM-authored UI elements. Editor / action-plan chat surfaces\n // auth via `?token=` and intentionally leave this unset (see\n // AgUiTransportOptions.credentials docstring).\n credentials: 'include',\n onA2UIEvent: (payload) => {\n // Discriminate `syntro.element.mutation` envelopes (LLM-\n // authored UI element mounts/patches/unmounts) from legacy\n // A2UI / raw ActionStep payloads. Element envelopes route to\n // the local ElementInstanceStore; everything else falls\n // through to the legacy applyBatch path.\n const mutations = decodeMutationEnvelope(payload);\n if (mutations !== null) {\n Promise.resolve(elementStore.apply(mutations))\n .then(() => {\n runtime.events.publish('chatbot.element_mutation_applied', {\n tileId: resolvedTileId,\n count: mutations.length,\n });\n })\n .catch((err: unknown) => {\n const message = err instanceof Error ? err.message : String(err);\n console.error('[adaptive-chatbot] element mutation apply failed:', message);\n });\n return;\n }\n runtime.actions\n .applyBatch([payload as unknown as Record<string, unknown>])\n .then(() => {\n runtime.events.publish('chatbot.a2ui_applied', {\n tileId: resolvedTileId,\n });\n })\n .catch((err: unknown) => {\n const message = err instanceof Error ? err.message : String(err);\n console.error('[adaptive-chatbot] A2UI apply failed:', message);\n });\n },\n });\n\n el.transport = transport;\n\n unsubscribe = transport.subscribe((event) => {\n if (isUnmounted) return;\n // Every event from the transport \u2014 useful for diagnosing flaky\n // mid-stream errors and \"first message worked then fallback\"\n // patterns. Gated on __SYNTRO_CHAT_DEBUG__ so it's silent by\n // default for end-users.\n debug('transport event', { type: event.type, hasSucceeded, fallbackRendered });\n\n if (event.type === 'error') {\n const errEvent = event as {\n type: 'error';\n message?: string;\n status?: number | null;\n body?: string | null;\n errorName?: string | null;\n };\n lastErrorPayload = {\n message: errEvent.message,\n status: errEvent.status ?? null,\n body: errEvent.body ?? null,\n errorName: errEvent.errorName ?? null,\n };\n // ALWAYS publish the transport_error telemetry, even if we're\n // going to swallow it (hasSucceeded || debounce). Debounced-\n // away errors are the most diagnostic kind \u2014 \"transport\n // emitted 3 errors in 200ms but recovered\" tells a different\n // story than \"single 403 then fallback\". Cheap to emit; we\n // don't want to discard the only signal we have.\n runtime.events.publish('chatbot.transport_error', {\n tileId: resolvedTileId,\n mountId,\n mountAgeMs: mountAgeMs(),\n messagesSentBeforeError: messagesSent,\n hasSucceeded,\n wouldFallback: !hasSucceeded && !errorDebounceTimer,\n errorMessage: errEvent.message ?? null,\n errorStatus: errEvent.status ?? null,\n errorBody: errEvent.body ?? null,\n errorName: errEvent.errorName ?? null,\n });\n // Console warn for non-test environments so customer DevTools\n // shows it without enabling debug. Critical fields baked into\n // the message string so they're visible at a glance even when\n // the console viewer (e.g. rrweb-plugin-console-record) flattens\n // the structured payload to \"Object\". The full object is the\n // second arg so it's still expandable for everything else.\n const statusLabel = errEvent.status ?? 'no-status';\n const bodySnippet = errEvent.body ? errEvent.body.slice(0, 120) : '<no-body>';\n console.warn(\n `[adaptive-chatbot] transport error mountId=${mountId} status=${statusLabel} hasSucceeded=${hasSucceeded} body=${JSON.stringify(bodySnippet)}`,\n {\n mountId,\n status: errEvent.status,\n body: errEvent.body,\n errorName: errEvent.errorName,\n errorMessage: errEvent.message,\n hasSucceeded,\n messagesSent,\n mountAgeMs: mountAgeMs(),\n }\n );\n\n if (hasSucceeded || errorDebounceTimer) return;\n errorDebounceTimer = setTimeout(() => {\n errorDebounceTimer = null;\n if (!hasSucceeded) swapToFallback('connect_failed');\n }, ERROR_DEBOUNCE_MS);\n return;\n }\n // AgUiTransport.connect() emits session-ready + messages-snapshot\n // locally (no network request) and typing before runAgent starts.\n // Only count events from a real backend response as \"success\".\n if (event.type === 'session-ready' || event.type === 'messages-snapshot') return;\n if (event.type === 'typing') return;\n // Track message-* events for the messagesSentBeforeFallback\n // metric. A round-trip is \"user typed \u2192 backend replied\" \u2014 we\n // can't directly observe the user's send, but every assistant\n // response starts with message-append; counting those is a\n // good proxy.\n if (event.type === 'message-append') {\n messagesSent += 1;\n debug('successful message', { messagesSent });\n }\n if (!hasSucceeded) {\n hasSucceeded = true;\n debug('hasSucceeded transitioned to true via', event.type);\n }\n clearTimers();\n // NOTE: previously we unsubscribed here. Removed so we keep\n // receiving (and logging) errors that happen AFTER a successful\n // first response \u2014 those are exactly the \"first message worked,\n // second errored\" cases that prompted this instrumentation. The\n // hasSucceeded guard above still prevents post-success errors\n // from triggering the fallback debounce.\n });\n\n container.appendChild(el);\n };\n\n // Aborts any in-flight acquireTurnstileToken call \u2014 fires on unmount\n // so the widget's CF registration gets removed even when the user\n // dismisses mid-challenge.\n const acquireAbort = new AbortController();\n\n const acquireWithManagedChallenge = async (): Promise<string | null> => {\n // Shared helper owns the verify-panel lifecycle (mount,\n // reveal-on-challenge, cleanup on settle). Returns both the token\n // and the outcome we surface as botCheckOutcome for telemetry.\n const { token, outcome } = await acquireTokenWithChallenge({\n signal: acquireAbort.signal,\n });\n if (isUnmounted) return null;\n botCheckOutcome = outcome;\n if (token === null) {\n console.warn(\n '[adaptive-chatbot] turnstile token acquisition failed \u2014 connecting without a bot-check token; backend may 403'\n );\n }\n return token;\n };\n\n if (TURNSTILE_SITEKEY) {\n void acquireWithManagedChallenge().then((cft) => {\n if (isUnmounted) return;\n hadTurnstileToken = cft !== null;\n if (cft === null) {\n // Acquisition failed end-to-end (CF declined, user dismissed\n // the challenge, CSP blocked the script, etc.). Don't bother\n // connecting with no token \u2014 backend enforcement will 403 in\n // ~hundreds of ms and we'd render the same fallback via the\n // transport-error debounce path. Going straight to fallback\n // is the honest UX: no spinner, no chat surface that fails\n // on the first send.\n swapToFallback('connect_failed');\n return;\n }\n setupTransport(cft);\n });\n } else {\n // Sync path: no Turnstile in this build.\n setupTransport(null);\n }\n\n return () => {\n debug('unmount', {\n ageMs: mountAgeMs(),\n hasSucceeded,\n fallbackRendered,\n messagesSent,\n });\n isUnmounted = true;\n clearTimers();\n // Drop the element-store's TTL timer. scheduleClientTtl arms a\n // setTimeout up to ~4h out (matching the server's Redis session\n // TTL); without this clear it leaks the store + runtime.actions\n // closure across remount cycles and, when it eventually fires,\n // runs _handleSessionExpiry \u2192 applyBatch against a torn-down\n // runtime.\n elementStore.scheduleClientTtl(null);\n // Abort any in-flight Turnstile acquisition first so its settle()\n // calls turnstile.remove(widgetId) before we tear down the DOM.\n // Verify-panel cleanup happens inside the shared helper's finally\n // block \u2014 no longer tracked here.\n acquireAbort.abort();\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = null;\n }\n if (!fallbackRendered) {\n transport?.disconnect();\n el.remove();\n }\n };\n },\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["EventType", "extendStatics", "d", "b", "k", "PatchError", "document", "Mirror", "ObserverInfo", "d", "b", "__extends", "P", "from", "q", "v", "Subscription", "__extends", "Subscriber", "ConsumerObserver", "__extends", "SafeSubscriber", "Observable", "observable", "__extends", "OperatorSubscriber", "err", "__extends", "Subject", "observable", "__extends", "AnonymousSubject", "__extends", "ReplaySubject", "last", "process", "iterator", "iterator", "config", "_a", "context", "char", "WireType", "NullValue", "JsonPatchOperationType", "EventType", "BaseEvent", "protoEvents.EventType", "protoPatch.JsonPatchOperationType", "uuidv4", "t", "e", "r", "i", "n", "o", "s", "a", "c", "l", "d", "mergeMap", "z", "u", "e", "packageJson.version", "uuidv4", "t", "n", "finalize", "z", "config", "COMPOSITIONAL_APPEND_EVENT", "token"]
7
+ }