@aintela/chat 0.2.25 → 0.2.27
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.
- package/dist/{auth-DbmLacBc.js → auth-GFZAFz7L.js} +2 -2
- package/dist/{auth-DbmLacBc.js.map → auth-GFZAFz7L.js.map} +1 -1
- package/dist/components.js +2626 -2589
- package/dist/components.js.map +1 -1
- package/dist/{environmentUtils-BaKw5_VD.js → environmentUtils-CUVZ6Dq1.js} +44 -28
- package/dist/environmentUtils-CUVZ6Dq1.js.map +1 -0
- package/dist/hooks.js +1 -1
- package/dist/{httpArtifactService-Dh9LGQ9a.js → httpArtifactService-B668XBHO.js} +465 -436
- package/dist/httpArtifactService-B668XBHO.js.map +1 -0
- package/dist/{httpSessionService-5Kr__oQL.js → httpSessionService-BuT5FlDc.js} +3 -3
- package/dist/{httpSessionService-5Kr__oQL.js.map → httpSessionService-BuT5FlDc.js.map} +1 -1
- package/dist/index.js +6 -6
- package/dist/models.js +2 -2
- package/dist/serializer-BPina6fX.js +1337 -0
- package/dist/serializer-BPina6fX.js.map +1 -0
- package/dist/services.js +2 -2
- package/dist/src/components/AiChat/ChatPane/parts/AskUserDispatcher.d.ts +22 -0
- package/dist/src/components/AiChat/ChatPane/parts/types.d.ts +17 -0
- package/dist/src/components/AiChat/ChatPane/parts/uiToolRegistry.d.ts +47 -2
- package/dist/src/models/InteractionPart.test.d.ts +1 -0
- package/dist/src/models/ServerEvent.d.ts +11 -0
- package/dist/src/models/semanticKernelModel/models.d.ts +14 -4
- package/dist/{useChatSessions-DttlifVk.js → useChatSessions-DsHPo0GV.js} +2 -2
- package/dist/{useChatSessions-DttlifVk.js.map → useChatSessions-DsHPo0GV.js.map} +1 -1
- package/dist/utils.js +2 -2
- package/package.json +1 -1
- package/dist/environmentUtils-BaKw5_VD.js.map +0 -1
- package/dist/httpArtifactService-Dh9LGQ9a.js.map +0 -1
- package/dist/serializer-DyHZxlAG.js +0 -1276
- package/dist/serializer-DyHZxlAG.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serializer-DyHZxlAG.js","sources":["../src/models/InteractionPart.ts","../src/models/semanticKernelModel/models.ts","../src/models/ServerEvent.ts","../src/models/semanticKernelModel/serializer.ts"],"sourcesContent":["import { getRandomUUID } from '@lib/utils/envUtils';\nimport type { FunctionDetails, CodeExecutionResultDetails, ExecutableCodeDetails, ThoughtDetails, ErrorDetails, TextDetails, ToolEventDetails } from \"./ServerEvent\";\nimport { EventType } from \"./enums\";\n\nexport interface InteractionPart {\n id: string;\n eventType: EventType;\n author: string,\n functionDetails?: FunctionDetails;\n codeExecutionResultDetails?: CodeExecutionResultDetails;\n executableCodeDetails?: ExecutableCodeDetails;\n thoughtDetails?: ThoughtDetails;\n toolDetails?: ToolEventDetails,\n textDetails?: TextDetails;\n errorDetails?: ErrorDetails;\n visible?: boolean;\n created: Date;\n ended?: Date;\n text?: string;\n hasTask?: boolean;\n rawDetails?: any;\n\n //Chuck event properties\n textLastChunk?: string;\n thoughtLastChunk?: string;\n partial: boolean;\n\n //Helper properties\n isStillWriting: boolean;\n mustPush: boolean;\n textAppendable: boolean;\n waitingDetails?: {\n stopPoint?: Date;\n addTimer: boolean;\n isTimerRunning: boolean;\n status: string;\n startingPoint: Date\n loadDots?: boolean\n }\n}\n\n\nexport class InteractionPartUtils {\n static replaceFirstTwoTabsPerLine(value?: any): string {\n const regex = /^\\s{15}/gm;\n return typeof (value) === \"string\" ? value.replaceAll(regex, (match) => match.substring(15)) : value ?? \"\";\n }\n\n static jsonToString(json: any): string {\n if (json == null) return \"\";\n if (typeof json !== \"object\") return String(json);\n\n const charCollapsed = Array.isArray(json)\n ? (InteractionPartUtils.isCharArray(json) ? json.join(\"\") : null)\n : InteractionPartUtils.tryCollapseCharIndexedObject(json);\n if (charCollapsed != null) return charCollapsed;\n\n if (Array.isArray(json)) {\n try { return JSON.stringify(json, null, 2); }\n catch { return String(json); }\n }\n\n const objectProps = Object.keys(json);\n const textReponseLines: string[] = [];\n objectProps.forEach((prop: string) => {\n let value = json[prop];\n if (typeof value === 'object') {\n value = JSON.stringify(json[prop], null, 2);\n }\n const startChart = value?.toString().indexOf(\"\\n\") > -1 ? \"\\n\" : \"\";\n textReponseLines.push(`${prop}:${startChart}${value}`);\n });\n return textReponseLines.join(\"\\n\");\n }\n\n static functionDetailsToString(obj: any | undefined): string {\n if (obj == null) return \"\";\n if (typeof obj == \"string\") {\n obj = obj.replaceAll(\"\\\"{\", \"{\").replaceAll(\"}\\\"\", \"}\").replaceAll(\"'{\", \"{\").replaceAll(\"}'\", \"}\")\n obj = obj.replaceAll(\"\\\\\\\"\", \"\\\"\");\n try {\n obj = JSON.parse(obj)\n }\n catch {\n return obj;\n }\n if (typeof obj !== \"object\" || obj == null) return String(obj);\n }\n if (Array.isArray(obj)) {\n try { return JSON.stringify(obj, null, 2); }\n catch { return String(obj); }\n }\n\n const objectProps = Object.keys(obj);\n const textReponseLines: string[] = [];\n objectProps.forEach((prop: string) => {\n let value = obj?.[prop];\n if (typeof value === 'object') {\n value = JSON.stringify(value, null, 2);\n }\n const startChar = value?.toString().indexOf(\"\\n\") > -1 ? \"\\n\" : \"\";\n textReponseLines.push(`${prop}:${startChar}${value}`);\n });\n return textReponseLines.join(\"\\n\");\n }\n\n /**\n * Reads the server-generated SlotId from a UI render tool's result. The\n * result reaches the client as a plain object on the live path, but as a\n * JSON string — sometimes double-encoded (a JSON string of a JSON string) —\n * on the persisted / session-replay path. Unwrap up to two string layers\n * before reading the field. Returns undefined when absent or unparseable.\n */\n static uiSlotId(part?: InteractionPart): string | undefined {\n let r: unknown = part?.functionDetails?.response;\n for (let i = 0; i < 2 && typeof r === \"string\"; i++) {\n try { r = JSON.parse(r); } catch { return undefined; }\n }\n if (!r || typeof r !== \"object\") return undefined;\n const o = r as Record<string, unknown>;\n const v = o.SlotId ?? o.slotId;\n return typeof v === \"string\" ? v : undefined;\n }\n\n static fromError(errorMsg: string) {\n const errorPart: InteractionPart = {\n errorDetails: { errorMessage: errorMsg },\n eventType: EventType.ServerError,\n id: '',\n author: 'main',\n created: new Date(),\n partial: false,\n isStillWriting: false,\n mustPush: false,\n textAppendable: false\n }\n return errorPart;\n }\n\n static fromText(text: string, author?: string, id?: string): InteractionPart {\n const textPart: InteractionPart = {\n text: text,\n eventType: EventType.Text,\n id: id ?? getRandomUUID(),\n created: new Date(),\n author: author ?? \"main\",\n partial: false,\n isStillWriting: false,\n mustPush: false,\n textAppendable: false\n }\n return textPart;\n }\n\n /**\n * Builds the user-authored UI part for a `sendMessage(text, { ui })` turn. Mirrors the\n * shape `ServerEvent` produces from a persisted `UserUiContent` on reload, so the live\n * and replayed parts are identical: an `EventType.UserAnswer` carrying functionDetails\n * {name, args, isUi, status:'Done'} that routes through the uiTool dispatcher/registry.\n */\n static fromUserUi(name: string, args?: string, id?: string): InteractionPart {\n return {\n id: id ?? getRandomUUID(),\n eventType: EventType.UserAnswer,\n author: 'user',\n created: new Date(),\n partial: false,\n isStillWriting: false,\n mustPush: false,\n textAppendable: false,\n functionDetails: {\n id: '',\n name: name,\n args: args,\n status: 'Done',\n isUi: true,\n },\n };\n }\n\n static createWaiting(addTimer: boolean = false, isTimerRunning: boolean = true, status: string, startingPoint: Date, stopPoint?: Date): InteractionPart {\n if (!status)\n status = \"Waiting\";\n const partData = InteractionPartUtils.fromText(\"...\", undefined, \"waitingpart\");\n partData.eventType = EventType.Waiting;\n partData.waitingDetails = {\n startingPoint: startingPoint,\n addTimer: addTimer,\n isTimerRunning: isTimerRunning,\n status: status,\n stopPoint: stopPoint\n }\n return partData;\n }\n\n static createSuspended(): InteractionPart {\n const partData = InteractionPartUtils.fromText(\"SUSPEND\")\n partData.eventType = EventType.Suspended;\n return partData;\n }\n\n static getPartTextContent(part: InteractionPart): string {\n return part.text ?? \"\";\n }\n\n static FlatParts(parts: InteractionPart[]): InteractionPart | undefined {\n if (parts.length === 0)\n return undefined;\n\n const textParts = parts.filter((p) => p.eventType == EventType.Text);\n const onlyPart = textParts.length > 0 ? textParts[0] : parts[0];\n const unique_event_types: EventType[] = [... new Set(parts.map((p) => p.eventType))];\n\n if (unique_event_types.length == 1) {\n onlyPart.eventType = unique_event_types[0]\n }\n else {\n if (textParts.length > 0) {\n onlyPart.eventType = EventType.Text\n }\n }\n\n onlyPart.mustPush = !(onlyPart.eventType == EventType.Text || onlyPart.eventType == EventType.Thought || onlyPart.eventType == EventType.NotDefined || onlyPart.eventType == EventType.PartialFunctionCall);\n onlyPart.textAppendable = onlyPart.eventType == EventType.Text || onlyPart.eventType == EventType.Thought || onlyPart.eventType == EventType.PartialFunctionCall;\n\n for (const part of parts) {\n if (!onlyPart.codeExecutionResultDetails && part.codeExecutionResultDetails)\n onlyPart.codeExecutionResultDetails = part.codeExecutionResultDetails;\n if (!onlyPart.errorDetails && part.errorDetails)\n onlyPart.errorDetails = part.errorDetails;\n if (!onlyPart.executableCodeDetails && part.executableCodeDetails)\n onlyPart.executableCodeDetails = part.executableCodeDetails;\n if (!onlyPart.functionDetails && part.functionDetails)\n onlyPart.functionDetails = part.functionDetails;\n if (!onlyPart.rawDetails && part.rawDetails)\n onlyPart.rawDetails = part.rawDetails;\n if (!onlyPart.thoughtDetails && part.thoughtDetails)\n onlyPart.thoughtDetails = part.thoughtDetails;\n if (!onlyPart.errorDetails && part.errorDetails)\n onlyPart.errorDetails = part.errorDetails;\n }\n\n return onlyPart;\n }\n\n static isCharArray(value: any): value is string[] {\n return Array.isArray(value)\n && value.length > 0\n && value.every((item: any) => typeof item === \"string\" && item.length === 1);\n }\n\n /**\n * Detects objects like `{0: \"a\", 1: \"b\", 2: \"c\", ...}` — a string that was\n * spread/indexed into an object (e.g. `{...someString}` or the server\n * serializing a string as a char-indexed dict). Returns the reassembled\n * string, or `null` if the value doesn't match this pattern.\n */\n static tryCollapseCharIndexedObject(value: any): string | null {\n if (value == null || typeof value !== \"object\" || Array.isArray(value)) return null;\n const keys = Object.keys(value);\n if (keys.length === 0) return null;\n\n for (let i = 0; i < keys.length; i++) {\n if (keys[i] !== String(i)) return null;\n const v = value[keys[i]];\n if (typeof v !== \"string\" || v.length !== 1) return null;\n }\n\n return keys.map(k => value[k]).join(\"\");\n }\n\n static isCodeExecution(part: InteractionPart): boolean {\n return part.eventType === EventType.CodeExecutionResult ||\n part.eventType === EventType.ExecutableCode;\n }\n}","import './init'; // MUST be first - loads reflect-metadata\nimport { jsonObject, jsonMember, jsonArrayMember, AnyT } from 'typedjson';\nimport { type Artifact } from '../../models/Artifact'\n\n// // Enums\nexport type PartType = 'ToolEventContent' | 'StreamingToolEventContent' | 'TextContent' | 'StreamingFinalFunctionCallContent' | 'StreamingFinalFunctionResultContent' | 'StreamingReasoningContent' | 'ImageContent' | 'FunctionCallContent' | 'FunctionResultContent' | 'FunctionClientOutputContent' | 'UserUiContent' | 'ChatMessageContent' | 'StreamingTextContent' | 'StreamingFunctionCallUpdateContent' | 'Unknown';\nexport const PartType = {\n // KernelContent derived types\n TextContent: \"TextContent\",\n ToolEventContent: \"ToolEventContent\",\n StreamingToolEventContent: \"StreamingToolEventContent\",\n StreamingReasoningContent: \"StreamingReasoningContent\",\n ImageContent: \"ImageContent\",\n FunctionCallContent: \"FunctionCallContent\",\n FunctionResultContent: \"FunctionResultContent\",\n FunctionClientOutputContent: \"FunctionClientOutputContent\",\n UserUiContent: \"UserUiContent\",\n ChatMessageContent: \"ChatMessageContent\",\n // StreamingKernelContent derived types\n StreamingTextContent: \"StreamingTextContent\",\n StreamingFunctionCallUpdateContent: \"StreamingFunctionCallUpdateContent\",\n StreamingFinalFunctionCallContent: \"StreamingFinalFunctionCallContent\",\n StreamingFinalFunctionResultContent: \"StreamingFinalFunctionResultContent\"\n\n} as const;\n\n@jsonObject({ name: 'AuthorRole' })\nexport class AuthorRole {\n\n @jsonMember(String)\n label?: string;\n}\n\nexport enum Commands {\n OpenStream = 'OpenStream',\n CloseStream = 'CloseStream',\n Ignore = 'Ignore',\n}\n\n// Supporting Classes\n@jsonObject({ name: 'EventTypeInformation' })\nexport class EventTypeInformation {\n @jsonMember(String)\n type?: string;\n\n @jsonMember(String)\n fullName?: string;\n}\n\n@jsonObject({ name: 'LlmArtifact' })\nexport class LlmArtifact {\n @jsonMember(String)\n id!: string;\n\n @jsonMember(String)\n name?: string;\n\n @jsonMember(String)\n mimeType?: string;\n\n @jsonMember(String)\n description?: string;\n\n toArtifact(): Artifact {\n return {\n created: new Date(),\n updatedAt: new Date(),\n name: this.name ?? 'Not Defined',\n description: this.description,\n mimeType: this.mimeType,\n id: this.id\n }\n }\n}\n\n@jsonObject({ name: 'KernelContent' })\nexport abstract class KernelContent {\n @jsonMember(String)\n mimeType?: string;\n\n // InnerContent is ignored (JsonIgnore in C#)\n // Not decorated with @jsonMember\n innerContent?: any;\n\n @jsonMember(String)\n modelId?: string;\n\n // Decorated so subtypes deserialize it (mirrors StreamingKernelContent.metadata). A tool's\n // client-only payload rides here when the runtime collapses StreamingFinalFunctionResultContent →\n // the sealed FunctionResultContent (see ToKernelContent); the decoder reads `metadata.clientOutput`.\n @jsonMember(AnyT)\n metadata?: Record<string, any> | null;\n}\n\n\n// StreamingKernelContent Base Class (Abstract)\n@jsonObject({ name: 'StreamingKernelContent' })\nexport abstract class StreamingKernelContent {\n @jsonMember(Number)\n choiceIndex: number = 0;\n\n // InnerContent is ignored (JsonIgnore in C#)\n // Not decorated with @jsonMember\n innerContent?: any;\n\n @jsonMember(String)\n modelId?: string;\n\n @jsonMember(Object)\n metadata?: Record<string, any>;\n}\n\n\n// TextContent\n@jsonObject({ name: 'TextContent' })\nexport class TextContent extends KernelContent {\n\n @jsonMember(String)\n text?: string;\n\n // Encoding is ignored (JsonIgnore in C#)\n // Not decorated with @jsonMember\n encoding?: string;\n\n constructor() {\n super();\n this.encoding = 'UTF8';\n }\n\n toString(): string {\n return this.text ?? '';\n }\n}\n\n@jsonObject({ name: 'StreamingToolEventContent' })\nexport class StreamingToolEventContent extends StreamingKernelContent {\n\n @jsonMember(String)\n eventName?: string;\n\n @jsonMember(String)\n eventData?: string;\n\n @jsonMember(String)\n sessionId?: string;\n\n constructor() {\n super();\n }\n}\n\n// TextContent\n@jsonObject({ name: 'ToolEventContent' })\nexport class ToolEventContent extends KernelContent {\n\n @jsonMember(String)\n eventName?: string;\n\n @jsonMember(String)\n eventData?: string;\n\n @jsonMember(String)\n sessionId?: string;\n\n constructor() {\n super();\n }\n}\n\n// ImageContent (referenced but not fully defined in original)\n@jsonObject({ name: 'ImageContent' })\nexport class ImageContent extends KernelContent {\n @jsonMember(String)\n url?: string;\n\n @jsonMember(String)\n dataUri?: string;\n}\n\n// FunctionCallContent\n@jsonObject({ name: 'FunctionCallContent' })\nexport class FunctionCallContent extends KernelContent {\n @jsonMember(String)\n id?: string;\n\n @jsonMember(String)\n pluginName?: string;\n\n @jsonMember(String)\n functionName!: string;\n\n @jsonMember(AnyT)\n arguments?: any;\n\n // Exception is not serializable - omit jsonMember decorator\n exception?: Error;\n}\n\n// MUST extend StreamingKernelContent (NOT FunctionCallContent): on the server this is a\n// StreamingKernelContent (StreamingFunctionCallUpdateContent), and it arrives in `streamingParts`\n// (StreamingKernelContent[]). TypedJSON only resolves a polymorphic $type to a subtype of the\n// declared element type — extending FunctionCallContent made it unresolvable there, so it fell\n// back to base StreamingKernelContent and `isUi` (the whole subtype payload) was dropped. Wire\n// fields mirror StreamingFunctionCallUpdateContent (callId / name / arguments) plus isUi.\n@jsonObject({ name: 'StreamingFinalFunctionCallContent' })\nexport class StreamingFinalFunctionCallContent extends StreamingKernelContent {\n @jsonMember(String, { name: \"callId\" })\n id?: string;\n\n @jsonMember(String, { name: \"name\" })\n functionName?: string;\n\n @jsonMember(String)\n arguments?: string;\n\n @jsonMember(Boolean)\n isUi?: boolean;\n\n @jsonMember(String)\n friendlyArgsDescription?: string;\n}\n\n// FunctionResultContent\n@jsonObject({ name: 'FunctionResultContent' })\nexport class FunctionResultContent extends KernelContent {\n @jsonMember(String, { name: \"callId\" })\n id?: string;\n\n @jsonMember(String)\n pluginName?: string;\n\n @jsonMember(String)\n functionName?: string;\n\n @jsonMember(AnyT)\n result?: any;\n}\n\n// See StreamingFinalFunctionCallContent: must extend StreamingKernelContent so it resolves\n// inside `streamingParts` and keeps `isUi`. Wire fields per the server-side\n// StreamingFinalFunctionResultContent (callId / pluginName / functionName / result / isUi).\n@jsonObject({ name: 'StreamingFinalFunctionResultContent' })\nexport class StreamingFinalFunctionResultContent extends StreamingKernelContent {\n @jsonMember(String, { name: \"callId\" })\n id?: string;\n\n @jsonMember(String)\n pluginName?: string;\n\n @jsonMember(String)\n functionName?: string;\n\n @jsonMember(AnyT)\n result?: any;\n\n @jsonMember(Boolean)\n isUi?: boolean;\n\n // Client-only payload the tool wrote to its ToolClientOutput sink (a serialized JSON string),\n // correlated to this result by callId. Rides this result event live — never the model-facing\n // `result`; the durable replay form is FunctionClientOutputContent.\n @jsonMember(String)\n clientOutput?: string;\n}\n\n// Persisted, client-only sibling carrying a tool's ToolClientOutput payload on the Tool message\n// (server-side FunctionClientOutputContent : IClientOnlyContent — stripped from the model request,\n// kept for replay). Correlated to its result by callId; folded into the call part on session reload.\n@jsonObject({ name: 'FunctionClientOutputContent' })\nexport class FunctionClientOutputContent extends KernelContent {\n @jsonMember(String, { name: \"callId\" })\n id?: string;\n\n @jsonMember(String)\n data?: string;\n}\n\n// Persisted, client-only sibling carrying a host UI representation for a USER turn\n// (server-side UserUiContent : IClientOnlyContent — stripped from the model request, kept for\n// replay). `name` selects a client-registered uiTool renderer; `args` is its serialized props\n// (JSON string). The live turn injects the same {name,args} as a UserAnswer part client-side;\n// this is the durable form that re-hydrates the component on session reload.\n@jsonObject({ name: 'UserUiContent' })\nexport class UserUiContent extends KernelContent {\n @jsonMember(String)\n name?: string;\n\n @jsonMember(String)\n args?: string;\n}\n\n// ChatMessageContent - defined before LlmEvent to avoid forward reference\n@jsonObject({ name: 'ChatMessageContent' })\nexport class ChatMessageContent extends KernelContent {\n @jsonMember(AuthorRole)\n role?: AuthorRole;\n\n @jsonArrayMember(() => KernelContent)\n items?: KernelContent[];\n}\n\n// StreamingFunctionCallUpdateContent\n@jsonObject({ name: 'StreamingFunctionCallUpdateContent' })\nexport class StreamingFunctionCallUpdateContent extends StreamingKernelContent {\n @jsonMember(String)\n callId?: string;\n\n @jsonMember(String)\n name?: string;\n\n @jsonMember(String)\n arguments?: string;\n\n @jsonMember(Number)\n functionCallIndex: number = 0;\n}\n\n// StreamingTextContent\n@jsonObject({ name: 'StreamingTextContent' })\nexport class StreamingTextContent extends StreamingKernelContent {\n @jsonMember(String)\n text?: string;\n\n // Encoding is not explicitly serialized in C#\n // Not decorated with @jsonMember\n encoding?: string;\n}\n\n@jsonObject({ name: 'StreamingReasoningContent' })\nexport class StreamingReasoningContent extends StreamingKernelContent {\n @jsonMember(String)\n text?: string;\n\n // Encoding is not explicitly serialized in C#\n // Not decorated with @jsonMember\n encoding?: string;\n}\n\n// InstructionSummary - defined before SessionInformation\n@jsonObject({ name: 'InstructionSummary' })\nexport class InstructionSummary {\n @jsonMember(String)\n instructionCategory: string = \"\"\n\n @jsonMember(String)\n description: string = \"\"\n\n @jsonMember(String)\n interactionId: string = \"\"\n}\n\n// SessionInformation - defined before LlmEvent to avoid forward reference\n@jsonObject({ name: 'SessionInformation' })\nexport class SessionInformation {\n @jsonMember(Number)\n size: number = 0\n\n @jsonMember(Number)\n originalSize: number = 0\n\n @jsonMember(Number)\n ratio: number = 0\n\n @jsonMember(Number)\n previousRatio: number = 0\n\n @jsonMember(Number)\n threshold: number = 0\n\n @jsonMember(Number)\n maxSize: number = 0\n\n @jsonMember(String)\n id?: string\n\n @jsonArrayMember(InstructionSummary)\n instructionSummaries?: InstructionSummary[] = []\n}\n\n// Main Event Class\n@jsonObject({ name: 'LlmEvent' })\nexport class LlmEvent {\n\n @jsonMember(Number)\n timestamp!: number;\n\n @jsonMember(String)\n mimeType!: string;\n\n @jsonMember(Boolean)\n partial!: boolean;\n\n @jsonMember(Boolean)\n turnComplete!: boolean;\n\n @jsonMember(Boolean)\n visible!: boolean;\n\n @jsonMember(String)\n serverError?: string;\n\n @jsonMember(String)\n interactionId!: string;\n\n @jsonMember(SessionInformation)\n sessionInformation?: SessionInformation;\n\n @jsonMember(EventTypeInformation)\n eventType?: EventTypeInformation;\n\n @jsonArrayMember(LlmArtifact)\n artifactsGenerated: LlmArtifact[] = [];\n\n @jsonMember(String)\n author?: string;\n\n @jsonMember(AuthorRole)\n role?: AuthorRole;\n\n @jsonMember(String)\n command?: Commands;\n\n @jsonMember(ChatMessageContent)\n content?: ChatMessageContent;\n\n @jsonArrayMember(() => StreamingKernelContent)\n streamingParts?: StreamingKernelContent[];\n\n subAgentId?: string;\n subAgentName?: string;\n text?: string;\n}\n\n@jsonObject({ name: 'PartialLlmEvent' })\nexport class PartialLlmEvent {\n\n @jsonMember(Number, { name: \"ts\" })\n timeStamp?: number;\n\n @jsonMember(String, { name: \"pt\" })\n partialText?: string;\n\n @jsonMember(String, { name: \"pr\" })\n partialReasoning?: string;\n\n @jsonMember(String, { name: \"fn\" })\n functionName?: string;\n\n @jsonArrayMember(() => StreamingKernelContent)\n streamingParts?: StreamingKernelContent[];\n\n @jsonMember(String, { name: \"fid\" })\n functionCallId?: string;\n\n @jsonMember(String, { name: \"tp\" })\n type?: string;\n\n @jsonMember(String, { name: \"itid\" })\n iteractionId?: string;\n\n @jsonMember(EventTypeInformation)\n partialEventType?: EventTypeInformation;\n\n @jsonMember(String, { name: \"said\" })\n subAgentId?: string;\n}\n\n\n@jsonObject({ name: 'StreamingResponse' })\nexport class StreamingResponse {\n\n @jsonMember(String)\n type!: string;\n\n @jsonMember(LlmEvent)\n event?: LlmEvent;\n\n @jsonMember(String)\n sessionId?: string;\n\n /**\n * Optional. Server piggybacks a freshly minted JWT on the next few Pong frames\n * after a WS upgrade where it auto-refreshed the token (inbound was expired or\n * near expiry). The client mirrors this into the stored user record so the\n * global fetch interceptor stops sending the stale token.\n */\n @jsonMember(String)\n accessToken?: string;\n\n @jsonMember(PartialLlmEvent, { name: \"pe\" })\n partialEvent?: PartialLlmEvent;\n\n @jsonMember(String)\n subAgentId?: string;\n\n @jsonMember(String)\n subAgentName?: string;\n\n /**\n * Server-assigned monotonic sequence number for events emitted by an InteractionRun.\n * Tracked client-side as `lastSeq` so reconnects can resume mid-stream via\n * `?lastSeq=N` on the WebSocket URL. Absent on control messages (Pong / Suspended)\n * and on RewindLost notices that carry the new starting seq directly.\n */\n @jsonMember(Number)\n seq?: number;\n}\n\n@jsonObject({ name: 'Payload' })\nexport class Payload {\n\n @jsonArrayMember(LlmEvent)\n events!: LlmEvent[];\n}\n\nexport interface InteractionStatistics {\n eventCount: number,\n unknonwCount: number,\n unparsedCount: number,\n totalTransfered: number,\n buffer: string[],\n startTime: Date,\n elapsed: number,\n tokensPerSecond: number,\n sessionInformation?: SessionInformation\n}\n\n","import { EventType, GetEventTypeFromPythonName, SkillLevel, GetEventTypeFromDotNetName } from './enums';\nimport { findAllNonNullNonEmptyProperties } from '../utils/objectUtils';\nimport { InteractionPartUtils, type InteractionPart } from './InteractionPart';\nimport { type EndMessageData } from './EndMessageData';\nimport { type ArtifactJson } from '@lib/utils/jsonDetector';\nimport { ANALYTICS_AGENT_NAME } from '@lib/utils/environmentUtils';\nimport { FunctionCallContent, FunctionClientOutputContent, FunctionResultContent, KernelContent, LlmArtifact, LlmEvent, PartType, SessionInformation, StreamingFinalFunctionCallContent, StreamingFinalFunctionResultContent, StreamingFunctionCallUpdateContent, StreamingKernelContent, StreamingReasoningContent, StreamingTextContent, StreamingToolEventContent, TextContent, ToolEventContent, UserUiContent } from './semanticKernelModel/models';\nimport { getRandomUUID } from '@lib/utils';\n\nexport interface FunctionDetails {\n id: string;\n args?: any;\n text?: string;\n name: string;\n start?: Date,\n end?: Date,\n response?: any;\n status: 'Composing' | 'Executing' | 'Done';\n silent?: boolean\n /** True when this targets a [KernelUiFunction] render tool — classified as `uiTool`. */\n isUi?: boolean\n /** Server-provided human one-liner describing the call args, for the tool-call chip. */\n argsDescription?: string\n /**\n * Client-only payload the tool produced via its ToolClientOutput sink, correlated to this call\n * by id. A (possibly JSON) string off the wire — render data the LLM never saw. Arrives WITH the\n * result on the live path (StreamingFinalFunctionResultContent.clientOutput) and is folded from\n * the persisted FunctionClientOutputContent sibling on replay. Prefer this over `args` in a\n * uiTool renderer; it is only present once the call has RESPONDED.\n */\n clientOutput?: any\n}\n\nexport interface ThoughtDetails {\n text: string;\n}\n\nexport interface ToolEventDetails {\n eventName: string;\n eventData: string;\n subAgentId?: string;\n /** Id of the session that generated the event (server-stamped). Lets consumers\n * persist event-derived state to the right session even for stale/trailing events. */\n sessionId?: string;\n}\n\nexport interface TextDetails {\n hasCodeBlock?: boolean\n version: number;\n}\n\nexport interface ErrorDetails {\n errorMessage: string;\n}\n\nexport interface ExecutableCodeDetails {\n code: string;\n language: string;\n}\n\nexport interface CodeExecutionResultDetails {\n outcome: string;\n output?: string;\n}\n\ninterface CodeExecutionResult {\n outcome: string | null\n output: string | null\n}\n\ninterface ExecutableCode {\n code: string | null\n language: string | null\n}\n\ninterface PythonPart {\n thought?: boolean | null\n code_execution_result?: CodeExecutionResult | null\n executable_code?: ExecutableCode | null\n function_call?: Partial<FunctionDetails> | null\n function_response?: Partial<FunctionDetails> | null\n text?: string | null\n}\n\nexport interface PythonEventMessage {\n mime_type: string\n autor: string\n turn_complete?: boolean\n usage_metadata?: any\n end_message_data?: EndMessageData | null\n invocation_id?: string\n serverError?: string | null\n interrupted?: boolean | string\n is_final_response?: boolean\n session_information?: SessionInformation | null\n part_data?: PythonPart | null\n all_parts_data?: PythonPart[] | null\n interaction_id: string | null\n partial?: boolean | string\n artifact_generated?: ArtifactJson[]\n async_final_response?: boolean\n}\n\nexport class ServerEvent {\n uniqueId!: string;\n mimeType!: string;\n created!: Date;\n author: 'tool' | 'main' | 'system';\n eventType!: EventType;\n allEventTypes: EventType[] = [];\n interactionId: string;\n artifactsDelta: string[] = [];\n llmArtifacts?: LlmArtifact[] = [];\n partial!: boolean;\n turn_complete?: boolean;\n isFinalResponse?: boolean;\n interrupted?: boolean;\n model_session_id!: string;\n functionDetails?: FunctionDetails\n executableCodeDetails?: ExecutableCodeDetails;\n codeExecutionResultDetails?: CodeExecutionResultDetails;\n thoughtDefails?: ThoughtDetails;\n rawDetails?: any;\n rendered?: boolean;\n serverError?: string;\n server_session_id?: string | null;\n asyncFinalResponse?: boolean;\n agentServerBaseUrl?: string;\n parts: InteractionPart[] = [];\n endMessageData?: EndMessageData;\n command?: string;\n session_information?: SessionInformation;\n subAgentId?: string;\n subAgentName?: string;\n visible: boolean = true;\n\n constructor(interactionId: string) {\n this.interactionId = interactionId;\n this.author = \"main\";\n }\n\n public static createErrorEvent(errorMessage: string, interactionId: string) {\n const serverErrorEvent = new ServerEvent(interactionId)\n serverErrorEvent.turn_complete = true;\n serverErrorEvent.partial = false;\n serverErrorEvent.parts = []\n const errorPart: InteractionPart = {\n eventType: EventType.ServerError,\n errorDetails: {\n errorMessage: errorMessage\n },\n id: '',\n author: 'main',\n created: new Date(),\n partial: false,\n isStillWriting: false,\n mustPush: false,\n textAppendable: false\n }\n serverErrorEvent.parts.push(errorPart);\n return serverErrorEvent;\n }\n\n static parseFlatPropertiesTypedEvent(event: LlmEvent) {\n const serverMessage: ServerEvent = new ServerEvent(event.interactionId);\n\n serverMessage.serverError = event.serverError;\n\n if (!event.interactionId) {\n\n throw new Error(\"Interaction ID is required\");\n }\n\n\n serverMessage.model_session_id = \"\";\n serverMessage.server_session_id = null;\n serverMessage.asyncFinalResponse = event.turnComplete;\n serverMessage.command = event.command?.toString();\n if (event.sessionInformation)\n serverMessage.session_information = event.sessionInformation as SessionInformation\n\n // The agent occasionally emits terminal events (notably the\n // `turnComplete: true` packet) without an `author` field. The\n // previous strict throw here got swallowed by the WS handler's\n // try/catch (WebSocketConnectionV2.handleEvent), which meant\n // `serverMessage.turn_complete` never propagated and the store\n // was stuck at `turnOpen: true` forever. Treat missing-author\n // events as `main` (same as the switch default below) so the\n // turn-complete signal reaches `setTurnOpen(false)`.\n if (!event.author || event.author == \"\") {\n console.warn('[ServerEvent] event with no author; defaulting to \"main\"', {\n interactionId: event.interactionId,\n turnComplete: event.turnComplete,\n });\n }\n\n switch (event?.author) {\n case ANALYTICS_AGENT_NAME:\n serverMessage.author = \"tool\";\n break;\n case \"system\":\n serverMessage.author = \"system\";\n break;\n default:\n serverMessage.author = \"main\";\n }\n serverMessage.mimeType = event.mimeType;\n serverMessage.created = new Date(event.timestamp);\n serverMessage.eventType = EventType.NotDefined;\n\n serverMessage.partial = event.partial?.toString()?.toLowerCase() === \"true\"\n\n serverMessage.turn_complete = event.turnComplete;\n serverMessage.visible = event.visible;\n serverMessage.isFinalResponse = event.turnComplete ?? false;\n\n serverMessage.artifactsDelta = []\n if (event.artifactsGenerated && event.artifactsGenerated.length > 0) {\n serverMessage.created = new Date(event.timestamp);\n serverMessage.llmArtifacts = event.artifactsGenerated;\n }\n\n serverMessage.subAgentId = event.subAgentId;\n serverMessage.subAgentName = event.subAgentName;\n\n return serverMessage;\n }\n\n static getPartType(part: KernelContent | StreamingKernelContent): PartType {\n if (part instanceof TextContent) {\n return \"TextContent\"\n }\n else if (part instanceof FunctionCallContent) {\n return \"FunctionCallContent\"\n }\n else if (part instanceof FunctionResultContent) {\n return \"FunctionResultContent\"\n }\n else if (part instanceof StreamingFunctionCallUpdateContent) {\n return \"StreamingFunctionCallUpdateContent\"\n }\n else if (part instanceof StreamingFinalFunctionCallContent) {\n return \"StreamingFinalFunctionCallContent\"\n }\n else if (part instanceof StreamingFinalFunctionResultContent) {\n return \"StreamingFinalFunctionResultContent\"\n }\n else if (part instanceof FunctionClientOutputContent) {\n return \"FunctionClientOutputContent\"\n }\n else if (part instanceof UserUiContent) {\n return \"UserUiContent\"\n }\n else if (part instanceof StreamingTextContent) {\n return \"StreamingTextContent\"\n }\n else if (part instanceof StreamingReasoningContent) {\n return \"StreamingReasoningContent\"\n }\n else if (part instanceof ToolEventContent) {\n return \"ToolEventContent\"\n }\n else if (part instanceof StreamingToolEventContent) {\n return \"StreamingToolEventContent\"\n }\n else {\n return \"Unknown\";\n }\n }\n\n static parseFromTypedEvent(event: LlmEvent) {\n const serverMessage = ServerEvent.parseFlatPropertiesTypedEvent(event);\n\n if (serverMessage.serverError) {\n serverMessage.parts.push(InteractionPartUtils.fromError(serverMessage.serverError));\n return serverMessage;\n }\n\n //For turncomplete msgs for instance\n if (!event.content && !event.streamingParts)\n return serverMessage;\n\n serverMessage.parts = [];\n\n const mergedParts: KernelContent[] | StreamingKernelContent[] = [...event.content?.items ?? [], ...event.streamingParts ?? []];\n\n serverMessage.eventType = GetEventTypeFromDotNetName(event.eventType?.type ?? '');\n\n let index = 0;\n for (const serverPart of mergedParts) {\n let part: InteractionPart = {\n id: \"\",\n author: serverMessage.author,\n eventType: serverMessage.eventType,\n created: new Date(),\n visible: serverMessage.visible,\n partial: serverMessage.partial,\n isStillWriting: false,\n mustPush: false,\n textAppendable: false\n }\n index++;\n\n const partType: PartType = ServerEvent.getPartType(serverPart);\n\n\n type functionType = FunctionCallContent & FunctionResultContent & StreamingFinalFunctionCallContent & StreamingFinalFunctionResultContent;\n\n if (partType == PartType.FunctionCallContent || partType == PartType.FunctionResultContent || partType == PartType.StreamingFinalFunctionCallContent || partType == PartType.StreamingFinalFunctionResultContent) {\n var serverCall = serverPart as functionType;\n\n if (serverCall.id == \"Server Error\") {\n part.eventType = EventType.ServerError\n part.errorDetails = {\n errorMessage: JSON.stringify(serverCall.arguments)\n }\n part.functionDetails = undefined;\n }\n else {\n part.eventType = partType == PartType.FunctionCallContent || partType == PartType.StreamingFinalFunctionCallContent ? EventType.FunctionCall : EventType.FunctionResponse;\n let result: any = undefined;\n try {\n if (serverCall?.result) {\n if (typeof serverCall.result === \"object\") {\n result = serverCall.result;\n } else if (typeof serverCall.result === \"string\") {\n const parsed = JSON.parse(serverCall.result);\n result = (typeof parsed === \"object\" && parsed !== null)\n ? parsed\n : serverCall.result;\n } else {\n result = serverCall.result;\n }\n }\n }\n catch (error) {\n console.warn(\"Parse function error\", error)\n result = serverCall?.result;\n }\n part.thoughtDetails = {\n text: ''\n }\n part.functionDetails = {\n id: serverCall?.id ?? '',\n args: serverCall?.arguments,\n start: partType == PartType.FunctionCallContent ? serverMessage.created : undefined,\n end: partType == PartType.FunctionResultContent ? serverMessage.created : undefined,\n text: JSON.stringify(serverCall?.arguments) ?? '',\n name: (serverCall?.functionName ?? \"\"),\n status: part.eventType == EventType.FunctionCall ? 'Executing' : 'Done',\n response: result,\n isUi: serverCall?.isUi === true\n // FunctionCall/Result is sealed server-side, so UI render tools carry\n // the flag in the call args as `__isUi` (see StreamingFinalFunctionCallContent.\n // ToKernelContent). The top-level isUi covers the transient streaming part;\n // this covers the persisted FunctionCallContent the client actually keeps.\n || (typeof serverCall?.arguments === 'object'\n && serverCall?.arguments !== null\n && (serverCall.arguments as Record<string, unknown>).__isUi === true),\n // Friendly args summary for the chip — mirrors __isUi: the live streaming part\n // carries `friendlyArgsDescription`; the persisted FunctionCall carries\n // `__argsDescription` in its args (see StreamingFinalFunctionCallContent.ToKernelContent).\n argsDescription: serverCall?.friendlyArgsDescription\n ?? (typeof serverCall?.arguments === 'object' && serverCall?.arguments !== null\n ? (serverCall.arguments as Record<string, unknown>).__argsDescription as string | undefined\n : undefined),\n // Client-only payload riding the RESULT event. The streaming form carries it\n // top-level (clientOutput); when the runtime collapses that to a sealed\n // FunctionResultContent (ToKernelContent) the payload rides in metadata, and\n // the client's part flattener keeps THAT collapsed part — so read both. Calls\n // leave it undefined. The persisted-replay form folds in via FunctionClientOutputContent.\n clientOutput: serverCall?.clientOutput\n ?? (serverCall?.metadata as Record<string, unknown> | undefined)?.clientOutput,\n }\n\n event.text = serverCall?.arguments;\n }\n }\n else if (partType == PartType.StreamingTextContent) {\n part.eventType = EventType.Text;\n part.text = (serverPart as StreamingTextContent)?.text?.replaceAll(\"\\\\n\", \"\\n\");;\n part.textLastChunk = (serverPart as StreamingTextContent).text;\n event.text = part.text;\n }\n else if (partType == PartType.TextContent) {\n part.eventType = EventType.Text;\n part.text = (serverPart as TextContent)?.text?.replaceAll(\"\\\\n\", \"\\n\");;\n part.textLastChunk = (serverPart as TextContent).text;\n event.text = part.text;\n }\n else if (partType == PartType.StreamingReasoningContent) {\n part.eventType = EventType.Thought;\n part.thoughtDetails = {\n text: (serverPart as StreamingReasoningContent)?.text?.replaceAll(\"\\\\n\", \"\\n\") ?? \"\"\n }\n part.text = (serverPart as StreamingReasoningContent)?.text?.replaceAll(\"\\\\n\", \"\\n\")\n part.textLastChunk = (serverPart as StreamingReasoningContent).text;\n event.text = part.text;\n }\n else if (partType == PartType.StreamingFunctionCallUpdateContent) {\n const partialFunctionCall = (serverPart as StreamingFunctionCallUpdateContent);\n part.eventType = EventType.PartialFunctionCall;\n part.text = partialFunctionCall.arguments;\n part.thoughtDetails = {\n text: ''\n }\n part.functionDetails = {\n id: partialFunctionCall.callId ?? '',\n text: part.text,\n status: 'Composing',\n name: partialFunctionCall?.name ?? 'Unknown',\n }\n event.text = part.text;\n }\n else if (partType == PartType.ToolEventContent || partType == PartType.StreamingToolEventContent) {\n part.eventType = EventType.ToolEvent;\n const toolEvent = (serverPart as ToolEventContent);\n part.toolDetails = {\n eventName: toolEvent.eventName ?? \"\",\n eventData: toolEvent.eventData ?? \"\",\n sessionId: toolEvent.sessionId ?? undefined,\n }\n }\n else if (partType == PartType.FunctionClientOutputContent) {\n // Persisted, client-only sibling of a function result (replay path). Carries the\n // tool's ToolClientOutput payload keyed by callId; it is folded into the matching\n // call part (functionDetails.clientOutput) by the session decoder and never renders\n // on its own. The live path delivers the same payload on the result event instead.\n const clientOutput = (serverPart as FunctionClientOutputContent);\n part.eventType = EventType.FunctionClientOutput;\n part.functionDetails = {\n id: clientOutput.id ?? '',\n name: '',\n status: 'Done',\n clientOutput: clientOutput.data,\n }\n }\n else if (partType == PartType.UserUiContent) {\n // Client-only UI representation for this user turn (replay path). Routes through the\n // uiTool dispatcher via functionDetails (name → registry key, args → props), but is\n // authored by the user: rendered on the user side (MessageUser) and excluded from the\n // agent side (MessageAgent). The live turn injects this same shape client-side; this\n // branch re-hydrates it on session reload.\n const userUi = (serverPart as UserUiContent);\n part.eventType = EventType.UserAnswer;\n part.author = 'user';\n part.functionDetails = {\n id: '',\n name: userUi.name ?? '',\n args: userUi.args,\n status: 'Done',\n isUi: true,\n }\n }\n else {\n part.eventType = EventType.NotDefined;\n console.warn(`Got a unmapped event_type:${serverMessage.eventType}, data:`, partType, serverPart)\n continue;\n }\n\n serverMessage.parts.push(part);\n }\n\n return serverMessage;\n }\n\n static createFromThought(interactionId: string, thinkingText: string): ServerEvent {\n const thinkingEvent: ServerEvent = {\n author: \"main\",\n visible: true,\n eventType: EventType.Thought,\n uniqueId: new Date().getTime().toString(),\n interactionId: interactionId,\n allEventTypes: [EventType.Thought],\n artifactsDelta: [''],\n model_session_id: \"\",\n created: new Date(),\n turn_complete: false,\n partial: true,\n asyncFinalResponse: false,\n mimeType: \"text/plain\",\n parts: [\n {\n thoughtDetails: {\n text: thinkingText,\n },\n id: getRandomUUID(),\n created: new Date(),\n eventType: EventType.Thought,\n author: \"main\",\n isStillWriting: false,\n textAppendable: true,\n partial: true,\n mustPush: true\n }\n ]\n }\n return thinkingEvent\n }\n\n static createFromFunctionName(functionName: string, interactionId: string, callData?: any): ServerEvent {\n const callEvent = ServerEvent.createFromText(\"\",interactionId);\n callEvent.parts[0].text = undefined;\n callEvent.parts[0].thoughtDetails = undefined;\n callEvent.parts[0].textAppendable = false;\n callEvent.parts[0].mustPush = true;\n \n callEvent.parts[0].functionDetails = {\n name: functionName,\n id:'callId',\n status: 'Executing',\n start: new Date(),\n end:undefined,\n text:'dfsdfdf',\n args:callData\n }\n return callEvent;\n }\n\n static createFromText(message: string, interactionId: string, thinkingData?: string): ServerEvent {\n\n const textEvent: ServerEvent = {\n author: \"main\",\n visible: true,\n eventType: EventType.Text,\n uniqueId: new Date().getTime().toString(),\n interactionId: interactionId,\n allEventTypes: [EventType.Text],\n artifactsDelta: [''],\n model_session_id: \"\",\n created: new Date(),\n turn_complete: false,\n partial: true,\n asyncFinalResponse: false,\n mimeType: \"text/plain\",\n parts: [\n {\n // Optional reasoning trace shown next to the message. Parts\n // with `eventType: Text` AND a populated `thoughtDetails`\n // render the text in the body and the trace in the\n // thinking strip.\n thoughtDetails: thinkingData ? {\n text: thinkingData\n } : undefined,\n id: getRandomUUID(),\n created: new Date(),\n // Part eventType MUST match the outer event's eventType.\n // Was previously `Thought` here, which made the merger\n // classify a streamed Text part as a Thought (rendered\n // in the trace strip instead of the message body) —\n // the chat would show the message during streaming and\n // then \"disappear\" once the part was reclassified.\n eventType: EventType.Text,\n author: \"main\",\n isStillWriting: false,\n textAppendable: true,\n partial: true,\n mustPush: true,\n text: message\n }\n ]\n }\n return textEvent;\n }\n\n} ","import './init'; // MUST be first - loads reflect-metadata\n\nimport { TypedJSON, type IndexedObject, JsonObjectMetadata } from 'typedjson';\nimport {\n LlmEvent,\n KernelContent,\n TextContent,\n ImageContent,\n FunctionCallContent,\n FunctionResultContent,\n ChatMessageContent,\n StreamingKernelContent,\n StreamingTextContent,\n StreamingFunctionCallUpdateContent,\n StreamingResponse,\n Payload,\n InstructionSummary,\n StreamingReasoningContent,\n ToolEventContent,\n StreamingFinalFunctionCallContent,\n StreamingFinalFunctionResultContent,\n FunctionClientOutputContent,\n UserUiContent\n} from './models';\n\n// All known content types for polymorphic deserialization\nconst KNOWN_CONTENT_TYPES = [\n // KernelContent derived types\n TextContent,\n ImageContent,\n FunctionCallContent,\n ToolEventContent,\n FunctionResultContent,\n FunctionClientOutputContent,\n UserUiContent,\n ChatMessageContent,\n // StreamingKernelContent derived types\n StreamingTextContent,\n StreamingFunctionCallUpdateContent,\n StreamingReasoningContent,\n StreamingFinalFunctionCallContent,\n StreamingFinalFunctionResultContent,\n InstructionSummary\n];\n\n/**\n * Helper function to get constructor name (replaces typedjson internal nameof)\n */\nfunction getConstructorName(constructor: Function): string {\n return constructor.name;\n}\n\n/**\n * Custom type emitter for .NET compatibility\n * Emits \"$type\" property for polymorphic types to match .NET serialization\n */\nexport function dotNetTypeEmitter(\n targetObject: IndexedObject,\n sourceObject: IndexedObject,\n expectedSourceType: Function,\n sourceTypeMetadata?: JsonObjectMetadata,\n) {\n // Add \"$type\" property for polymorphic deserialization (matches .NET's JsonPolymorphic)\n if (sourceObject.constructor !== expectedSourceType) {\n targetObject[\"$type\"] = sourceTypeMetadata?.name ?? getConstructorName(sourceObject.constructor);\n }\n}\n\nexport function dotnetTypeResolver(\n sourceObject: IndexedObject,\n knownTypes: Map<string, Function>,\n): Function | undefined {\n if (sourceObject[\"$type\"] != null) {\n return knownTypes.get(sourceObject[\"$type\"]);\n }\n}\n\n/**\n * Creates a configured TypedJSON serializer for Event objects\n * Includes all known types for polymorphic serialization\n */\nexport function createEventSerializer(): TypedJSON<LlmEvent> {\n const serializer = new TypedJSON(LlmEvent);\n\n serializer.config({\n knownTypes: KNOWN_CONTENT_TYPES,\n typeHintEmitter: dotNetTypeEmitter,\n typeResolver: dotnetTypeResolver\n });\n\n return serializer;\n}\n\nexport function createPayloadSerializer(): TypedJSON<Payload> {\n const serializer = new TypedJSON<Payload>(Payload);\n\n serializer.config({\n knownTypes: KNOWN_CONTENT_TYPES,\n typeHintEmitter: dotNetTypeEmitter,\n typeResolver: dotnetTypeResolver\n });\n\n return serializer;\n}\n\nexport function createStreamingResponseSerializer(): TypedJSON<StreamingResponse> {\n const serializer = new TypedJSON<StreamingResponse>(StreamingResponse);\n\n serializer.config({\n knownTypes: KNOWN_CONTENT_TYPES,\n typeHintEmitter: dotNetTypeEmitter,\n typeResolver: dotnetTypeResolver\n });\n\n return serializer;\n}\n\n/**\n * Sanitizes JSON string by fixing control characters that may come from .NET serialization\n * This handles cases where newlines, tabs, and other control characters are not properly escaped\n */\nexport function sanitizeJsonString(jsonStr: string): string {\n try {\n // First, try to parse as-is (in case it's already valid)\n JSON.parse(jsonStr);\n return jsonStr;\n } catch (e) {\n // If parsing fails, we need to escape unescaped control characters within string values\n // We'll do this by processing character by character, tracking when we're inside a string\n\n let result = '';\n let inString = false;\n\n for (let i = 0; i < jsonStr.length; i++) {\n const char = jsonStr[i];\n const code = char.charCodeAt(0);\n\n // Handle backslash - check if it's starting an escape sequence\n if (char === '\\\\' && inString && i + 1 < jsonStr.length) {\n const nextChar = jsonStr[i + 1];\n // Valid escape sequences in JSON: \\\" \\\\ \\/ \\b \\f \\n \\r \\t \\uXXXX\n if (nextChar === '\"' || nextChar === '\\\\' || nextChar === '/' ||\n nextChar === 'b' || nextChar === 'f' || nextChar === 'n' ||\n nextChar === 'r' || nextChar === 't') {\n // Valid single-char escape - copy both characters\n result += char + nextChar;\n i++; // Skip the next character\n continue;\n } else if (nextChar === 'u' && i + 5 < jsonStr.length) {\n // Unicode escape sequence \\uXXXX - copy all 6 characters\n result += jsonStr.substring(i, i + 6);\n i += 5; // Skip the next 5 characters (u and 4 hex digits)\n continue;\n } else {\n // Invalid escape sequence - just add the backslash\n result += char;\n continue;\n }\n }\n\n // Track string boundaries (but not if it's escaped)\n if (char === '\"') {\n // Check if this quote is escaped by looking back\n let numBackslashes = 0;\n for (let j = i - 1; j >= 0 && jsonStr[j] === '\\\\'; j--) {\n numBackslashes++;\n }\n // If there's an even number of backslashes (including 0), the quote is not escaped\n if (numBackslashes % 2 === 0) {\n inString = !inString;\n }\n result += char;\n continue;\n }\n\n // If we're inside a string and encounter an unescaped control character, escape it\n if (inString && code < 32) {\n switch (char) {\n case '\\n':\n result += '\\\\n';\n break;\n case '\\r':\n result += '\\\\r';\n break;\n case '\\t':\n result += '\\\\t';\n break;\n case '\\f':\n result += '\\\\f';\n break;\n case '\\b':\n result += '\\\\b';\n break;\n default:\n // For other control characters, use unicode escape\n const hex = code.toString(16).padStart(4, '0');\n result += `\\\\u${hex}`;\n break;\n }\n } else {\n result += char;\n }\n }\n\n return result;\n }\n}\n\n/**\n * Deserializes a JSON string into a Payload, with automatic sanitization of control characters\n */\nexport function deserializePayload(json: string): StreamingResponse | undefined {\n const sanitized = sanitizeJsonString(json);\n const serializer = createStreamingResponseSerializer();\n return serializer.parse(sanitized);\n}\n\n/**\n * Deserializes a JSON string into an Event object, with automatic sanitization of control characters\n */\nexport function deserializeEvent(json: string): LlmEvent | undefined {\n const sanitized = sanitizeJsonString(json);\n const serializer = createEventSerializer();\n return serializer.parse(sanitized);\n}\n\n/**\n * Serializes an Event object into a JSON string\n */\nexport function serializeEvent(event: LlmEvent): string {\n const serializer = createEventSerializer();\n return serializer.stringify(event);\n}\n\n/**\n * Creates a configured TypedJSON serializer for KernelContent objects\n */\nexport function createKernelContentSerializer(): TypedJSON<KernelContent> {\n const serializer = new TypedJSON(KernelContent);\n\n serializer.config({\n knownTypes: KNOWN_CONTENT_TYPES,\n typeHintEmitter: dotNetTypeEmitter,\n typeResolver: dotnetTypeResolver\n });\n\n return serializer;\n}\n\n/**\n * Creates a configured TypedJSON serializer for StreamingKernelContent objects\n */\nexport function createStreamingKernelContentSerializer(): TypedJSON<StreamingKernelContent> {\n const serializer = new TypedJSON(StreamingKernelContent);\n\n serializer.config({\n knownTypes: [\n StreamingTextContent,\n StreamingFunctionCallUpdateContent\n ],\n typeHintEmitter: dotNetTypeEmitter\n });\n\n return serializer;\n}\n"],"names":["_InteractionPartUtils","value","regex","match","json","charCollapsed","objectProps","textReponseLines","prop","startChart","obj","startChar","part","r","_a","i","o","v","errorMsg","EventType","text","author","id","getRandomUUID","name","args","addTimer","isTimerRunning","status","startingPoint","stopPoint","partData","parts","textParts","p","onlyPart","unique_event_types","item","keys","k","__name","InteractionPartUtils","PartType","AuthorRole","__publicField","__decorateClass","jsonMember","jsonObject","EventTypeInformation","LlmArtifact","KernelContent","AnyT","StreamingKernelContent","TextContent","StreamingToolEventContent","ToolEventContent","ImageContent","FunctionCallContent","StreamingFinalFunctionCallContent","FunctionResultContent","StreamingFinalFunctionResultContent","FunctionClientOutputContent","UserUiContent","ChatMessageContent","jsonArrayMember","StreamingFunctionCallUpdateContent","StreamingTextContent","StreamingReasoningContent","InstructionSummary","SessionInformation","LlmEvent","PartialLlmEvent","StreamingResponse","Payload","_ServerEvent","interactionId","errorMessage","serverErrorEvent","errorPart","event","serverMessage","ANALYTICS_AGENT_NAME","_c","_b","mergedParts","GetEventTypeFromDotNetName","serverPart","partType","serverCall","result","parsed","error","_d","_e","_f","_g","partialFunctionCall","toolEvent","clientOutput","userUi","thinkingText","functionName","callData","callEvent","message","thinkingData","ServerEvent","KNOWN_CONTENT_TYPES","getConstructorName","constructor","dotNetTypeEmitter","targetObject","sourceObject","expectedSourceType","sourceTypeMetadata","dotnetTypeResolver","knownTypes","createEventSerializer","serializer","TypedJSON","createStreamingResponseSerializer","sanitizeJsonString","jsonStr","inString","char","code","nextChar","numBackslashes","j","hex","deserializePayload","sanitized","deserializeEvent","serializeEvent"],"mappings":"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"}
|