@aigentyc/chat-sdk 0.3.0 → 0.4.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.
- package/AGENTS.md +24 -1
- package/claude-skill/aigentyc-chat-sdk/SKILL.md +1 -1
- package/context7.json +1 -1
- package/dist/{ChatInterface-f8ftS56n.d.ts → ChatInterface--yaDB5yp.d.ts} +1 -1
- package/dist/{ChatInterface-B0zbA3Lm.d.cts → ChatInterface-0rq8D5-8.d.cts} +1 -1
- package/dist/{JsonRenderResult-Ftw4AKwb.d.cts → JsonRenderResult-D6ogds0_.d.cts} +8 -1
- package/dist/{JsonRenderResult-Ftw4AKwb.d.ts → JsonRenderResult-D6ogds0_.d.ts} +8 -1
- package/dist/JsonRenderResult-GCNFMZYP.js +6 -0
- package/dist/{JsonRenderResult-ZFJ6VWMS.js.map → JsonRenderResult-GCNFMZYP.js.map} +1 -1
- package/dist/JsonRenderResult-II3IBENS.cjs +15 -0
- package/dist/{JsonRenderResult-GQOYPLVH.cjs.map → JsonRenderResult-II3IBENS.cjs.map} +1 -1
- package/dist/{SlotsContext-BjiX1mRx.d.ts → SlotsContext-CWTjP0mA.d.ts} +1 -1
- package/dist/{SlotsContext-CEOBjzfh.d.cts → SlotsContext-u5CFB7MS.d.cts} +1 -1
- package/dist/{chunk-FPQ3UCCJ.js → chunk-3EN3DMUL.js} +24 -5
- package/dist/chunk-3EN3DMUL.js.map +1 -0
- package/dist/{chunk-BPV66QNM.cjs → chunk-46MUOYPR.cjs} +24 -5
- package/dist/chunk-46MUOYPR.cjs.map +1 -0
- package/dist/{chunk-PQCGQ32Q.js → chunk-6ZZTTD5E.js} +12 -5
- package/dist/chunk-6ZZTTD5E.js.map +1 -0
- package/dist/{chunk-3HGOLNGG.cjs → chunk-AWRQSM42.cjs} +23 -3
- package/dist/chunk-AWRQSM42.cjs.map +1 -0
- package/dist/{chunk-J2H6MLQF.cjs → chunk-H7C3AGA2.cjs} +17 -6
- package/dist/chunk-H7C3AGA2.cjs.map +1 -0
- package/dist/{chunk-M4YRNNGB.js → chunk-LSKOJ7SH.js} +23 -3
- package/dist/chunk-LSKOJ7SH.js.map +1 -0
- package/dist/{chunk-PPCGZ5MP.cjs → chunk-LVWSWTI3.cjs} +22 -22
- package/dist/chunk-LVWSWTI3.cjs.map +1 -0
- package/dist/{chunk-TLGZSXTU.cjs → chunk-OEEDYJTV.cjs} +14 -7
- package/dist/chunk-OEEDYJTV.cjs.map +1 -0
- package/dist/{chunk-SWKWHBBN.js → chunk-RAQVW2D7.js} +7 -7
- package/dist/chunk-RAQVW2D7.js.map +1 -0
- package/dist/{chunk-RPDJXB3U.js → chunk-ZXP7IYRC.js} +17 -6
- package/dist/chunk-ZXP7IYRC.js.map +1 -0
- package/dist/components.cjs +15 -15
- package/dist/components.d.cts +2 -2
- package/dist/components.d.ts +2 -2
- package/dist/components.js +4 -4
- package/dist/core.d.cts +2 -2
- package/dist/core.d.ts +2 -2
- package/dist/hooks.cjs +6 -6
- package/dist/hooks.d.cts +2 -2
- package/dist/hooks.d.ts +2 -2
- package/dist/hooks.js +2 -2
- package/dist/i18n.d.cts +1 -1
- package/dist/i18n.d.ts +1 -1
- package/dist/index.cjs +33 -22
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +18 -7
- package/dist/index.js.map +1 -1
- package/dist/json-render.cjs +4 -4
- package/dist/json-render.d.cts +1 -1
- package/dist/json-render.d.ts +1 -1
- package/dist/json-render.js +1 -1
- package/dist/llms-full.txt +35 -12
- package/dist/theme.d.cts +1 -1
- package/dist/theme.d.ts +1 -1
- package/dist/tools.cjs +7 -7
- package/dist/tools.d.cts +3 -3
- package/dist/tools.d.ts +3 -3
- package/dist/tools.js +3 -3
- package/dist/{types-DlNwk-bG.d.cts → types-DQCjs81O.d.cts} +19 -1
- package/dist/{types-DlNwk-bG.d.ts → types-DQCjs81O.d.ts} +19 -1
- package/llms.txt +1 -1
- package/package.json +1 -1
- package/dist/JsonRenderResult-GQOYPLVH.cjs +0 -15
- package/dist/JsonRenderResult-ZFJ6VWMS.js +0 -6
- package/dist/chunk-3HGOLNGG.cjs.map +0 -1
- package/dist/chunk-BPV66QNM.cjs.map +0 -1
- package/dist/chunk-FPQ3UCCJ.js.map +0 -1
- package/dist/chunk-J2H6MLQF.cjs.map +0 -1
- package/dist/chunk-M4YRNNGB.js.map +0 -1
- package/dist/chunk-PPCGZ5MP.cjs.map +0 -1
- package/dist/chunk-PQCGQ32Q.js.map +0 -1
- package/dist/chunk-RPDJXB3U.js.map +0 -1
- package/dist/chunk-SWKWHBBN.js.map +0 -1
- package/dist/chunk-TLGZSXTU.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/use-aigentyc-chat.ts"],"names":["useRef","useState","useMemo","DefaultChatTransport","useChat","useEffect","useCallback","transport","LiveChatTransport"],"mappings":"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","file":"chunk-AWRQSM42.cjs","sourcesContent":["\"use client\";\n\nimport {\n useState,\n useCallback,\n useRef,\n useMemo,\n useEffect,\n type RefObject,\n} from \"react\";\nimport type {\n ChatProviderProps,\n ChatMessage,\n ChatEventCallbacks,\n LiveChatState,\n LiveChatMessage,\n} from \"../core/types\";\n\ntype ChatStatus = \"idle\" | \"streaming\" | \"error\";\n\ninterface ActiveTool {\n toolName: string;\n state: \"partial-call\" | \"call\" | \"output-available\";\n args: Record<string, unknown>;\n result?: unknown;\n renderMode: string;\n}\n// NOTE: @ai-sdk/react and ai are optional peer dependencies.\nimport { useChat } from \"@ai-sdk/react\";\nimport { DefaultChatTransport } from \"ai\";\nimport { LiveChatTransport } from \"../core/live-chat-transport\";\n\nconst SESSION_KEY_PREFIX = \"aigentyc-session-\";\nconst MESSAGE_KEY_PREFIX = \"aigentyc-messages-\";\n\nfunction getOrCreateSessionId(projectId: string): string {\n if (typeof window === \"undefined\") return crypto.randomUUID();\n const key = SESSION_KEY_PREFIX + projectId;\n try {\n const stored = sessionStorage.getItem(key);\n if (stored) return stored;\n const id = crypto.randomUUID();\n sessionStorage.setItem(key, id);\n return id;\n } catch {\n return crypto.randomUUID();\n }\n}\n\nfunction loadPersistedMessages(projectId: string): ChatMessage[] {\n if (typeof window === \"undefined\") return [];\n try {\n const raw = localStorage.getItem(MESSAGE_KEY_PREFIX + projectId);\n return raw ? JSON.parse(raw) : [];\n } catch {\n return [];\n }\n}\n\nfunction persistMessages(projectId: string, messages: unknown[]): void {\n if (typeof window === \"undefined\") return;\n try {\n localStorage.setItem(MESSAGE_KEY_PREFIX + projectId, JSON.stringify(messages));\n } catch {\n // Ignore.\n }\n}\n\nfunction clearPersistedMessages(projectId: string): void {\n if (typeof window === \"undefined\") return;\n try {\n localStorage.removeItem(MESSAGE_KEY_PREFIX + projectId);\n } catch {\n // Ignore.\n }\n}\n\n/** Options for the headless `useAigentycChat` hook (same shape as ChatProviderProps). */\nexport type UseAigentycChatOptions = Omit<ChatProviderProps, \"children\" | \"slots\" | \"theme\">;\n\n/** Live chat sub-object returned by the hook. */\nexport interface LiveChatReturn {\n state: LiveChatState;\n messages: LiveChatMessage[];\n operatorName: string;\n queuePosition: number;\n showIdentityForm: boolean;\n initiate: (visitorName?: string, visitorEmail?: string) => Promise<void>;\n send: (content: string) => void;\n end: () => void;\n cancel: () => void;\n submitRating: (rating: \"positive\" | \"negative\", comment?: string) => void;\n returnToAI: () => void;\n requestManualHandoff: () => void;\n setShowIdentityForm: (show: boolean) => void;\n}\n\n/** Return value of `useAigentycChat`. */\nexport interface UseAigentycChatReturn {\n messages: ChatMessage[];\n status: ChatStatus;\n error: Error | undefined;\n sessionId: string;\n sendMessage: (content: string) => void;\n stopGeneration: () => void;\n newConversation: () => void;\n clearMessages: () => void;\n activeTools: ActiveTool[];\n liveChat: LiveChatReturn;\n chatRef: RefObject<HTMLDivElement | null>;\n}\n\nconst CALLBACK_KEYS: (keyof ChatEventCallbacks)[] = [\n \"onReady\",\n \"onSessionStart\",\n \"onSessionRestore\",\n \"onMessageSent\",\n \"onMessageReceived\",\n \"onStreamStart\",\n \"onStreamEnd\",\n \"onToolCall\",\n \"onToolResult\",\n \"onToolAction\",\n \"onLiveChatRequested\",\n \"onLiveChatConnected\",\n \"onLiveChatEnded\",\n \"onError\",\n \"onNewConversation\",\n \"onStopGeneration\",\n \"onClearMessages\",\n \"onInteraction\",\n];\n\nfunction pickCallbacks(opts: Record<string, unknown>): ChatEventCallbacks {\n const out: Record<string, unknown> = {};\n for (const key of CALLBACK_KEYS) {\n if (opts[key] !== undefined) out[key] = opts[key];\n }\n return out as ChatEventCallbacks;\n}\n\n/**\n * Standalone headless hook for Aigentyc Chat. No provider needed.\n *\n * Creates its own transport, session, and persistence internally. Use this\n * when you want full control over the UI but still want all SDK features\n * (chat, tools, live chat, persistence).\n */\nexport function useAigentycChat(options: UseAigentycChatOptions): UseAigentycChatReturn {\n const {\n projectId,\n apiEndpoint,\n apiKey,\n enableLiveChat = false,\n chatServiceUrl,\n persistMessages: shouldPersist = true,\n } = options;\n\n const callbacks = pickCallbacks(options as unknown as Record<string, unknown>);\n const callbacksRef = useRef(callbacks);\n callbacksRef.current = callbacks;\n\n const safeProjectId = projectId || \"default\";\n const [sessionId, setSessionId] = useState(() => getOrCreateSessionId(safeProjectId));\n const chatRef = useRef<HTMLDivElement | null>(null);\n\n const initialMessages = useMemo(\n () => (shouldPersist ? loadPersistedMessages(safeProjectId) : []),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n // Read through a ref so a host that navigates (SPA route change) updates the\n // context it sends without rebuilding the transport — see ChatContext.tsx.\n const pageRef = useRef({\n pageUrl: options.pageUrl,\n pageTitle: options.pageTitle,\n pageContext: options.pageContext,\n });\n pageRef.current = {\n pageUrl: options.pageUrl,\n pageTitle: options.pageTitle,\n pageContext: options.pageContext,\n };\n\n const transport = useMemo(\n () =>\n new DefaultChatTransport({\n api: `${apiEndpoint || \"\"}/api/kb/chat`,\n headers: apiKey ? { Authorization: `Bearer ${apiKey}` } : undefined,\n // A function body is resolved per request by the AI SDK transport.\n body: () => {\n const { pageUrl, pageTitle, pageContext } = pageRef.current;\n return {\n projectId: safeProjectId,\n sessionId,\n ...(pageUrl ? { pageUrl } : {}),\n ...(pageTitle ? { pageTitle } : {}),\n ...(pageContext !== undefined ? { pageContext } : {}),\n };\n },\n }),\n [apiEndpoint, apiKey, safeProjectId, sessionId]\n );\n\n const {\n messages,\n sendMessage: sdkSendMessage,\n status: sdkStatus,\n error,\n stop,\n setMessages,\n } = useChat({\n id: sessionId,\n messages: initialMessages as never,\n transport,\n onFinish: (message) => {\n callbacksRef.current?.onMessageReceived?.(message as unknown as ChatMessage);\n },\n onError: (err) => {\n callbacksRef.current?.onError?.(err);\n },\n });\n\n const status: ChatStatus = error\n ? \"error\"\n : sdkStatus === \"streaming\" || sdkStatus === \"submitted\"\n ? \"streaming\"\n : \"idle\";\n\n // Persist messages\n useEffect(() => {\n if (shouldPersist) persistMessages(safeProjectId, messages);\n }, [messages, safeProjectId, shouldPersist]);\n\n // Derive active tools from the latest assistant message\n const activeTools = useMemo<ActiveTool[]>(() => {\n if (messages.length === 0) return [];\n const last = messages[messages.length - 1] as { role: string; parts?: unknown[] };\n if (last.role !== \"assistant\" || !Array.isArray(last.parts)) return [];\n return (last.parts as Array<Record<string, unknown>>)\n .filter((p) => typeof p.type === \"string\" && (p.type as string).startsWith(\"tool-\"))\n .map((p) => ({\n toolName: (p.toolName as string) || (p.type as string).replace(\"tool-\", \"\"),\n state: (p.state as ActiveTool[\"state\"]) || \"output-available\",\n args: (p.args as Record<string, unknown>) || {},\n result: p.result,\n renderMode: (p.renderMode as string) || \"inline\",\n }));\n }, [messages]);\n\n const sendMessage = useCallback(\n (content: string) => {\n if (!content.trim()) return;\n callbacksRef.current?.onMessageSent?.({\n id: crypto.randomUUID(),\n role: \"user\",\n content,\n } as ChatMessage);\n sdkSendMessage({ text: content });\n },\n [sdkSendMessage]\n );\n\n const stopGeneration = useCallback(() => {\n stop();\n callbacksRef.current?.onStopGeneration?.();\n }, [stop]);\n\n const newConversation = useCallback(() => {\n setMessages([]);\n clearPersistedMessages(safeProjectId);\n if (typeof window !== \"undefined\") {\n try {\n sessionStorage.removeItem(SESSION_KEY_PREFIX + safeProjectId);\n } catch {\n // Ignore.\n }\n }\n const nextSessionId = getOrCreateSessionId(safeProjectId);\n setSessionId(nextSessionId);\n callbacksRef.current?.onNewConversation?.(nextSessionId);\n }, [safeProjectId, setMessages]);\n\n const clearMessages = useCallback(() => {\n setMessages([]);\n clearPersistedMessages(safeProjectId);\n callbacksRef.current?.onClearMessages?.();\n }, [safeProjectId, setMessages]);\n\n // --- Live Chat (self-contained) ---\n const [lcState, setLcState] = useState<LiveChatState>(\"ai\");\n const [lcMessages, setLcMessages] = useState<LiveChatMessage[]>([]);\n const [lcOperator, setLcOperator] = useState(\"\");\n const [lcQueue, setLcQueue] = useState(0);\n const [lcShowIdentity, setLcShowIdentity] = useState(false);\n const lcTransportRef = useRef<LiveChatTransport | null>(null);\n\n const lcResetState = useCallback(() => {\n lcTransportRef.current?.disconnect?.();\n lcTransportRef.current = null;\n setLcState(\"ai\");\n setLcMessages([]);\n setLcOperator(\"\");\n setLcQueue(0);\n setLcShowIdentity(false);\n }, []);\n\n const lcInitiate = useCallback(\n async (visitorName?: string, visitorEmail?: string) => {\n if (!enableLiveChat || lcTransportRef.current) return;\n const url = chatServiceUrl ?? apiEndpoint;\n if (!url || !apiKey) return;\n try {\n const transport = new LiveChatTransport({\n chatServiceUrl: url,\n apiKey,\n projectId: safeProjectId,\n visitorSessionId: sessionId,\n });\n transport.on(\"state-change\", (s: LiveChatState) => setLcState(s));\n transport.on(\"queued\", (data: { position: number }) => setLcQueue(data.position));\n transport.on(\"queue-update\", (data: { position: number }) => setLcQueue(data.position));\n transport.on(\"accepted\", (data: { operatorName: string }) => setLcOperator(data.operatorName));\n transport.on(\"message\", (data: LiveChatMessage) =>\n setLcMessages((prev) => [...prev, data])\n );\n transport.on(\"ended\", () => setLcState(\"ended\"));\n lcTransportRef.current = transport;\n await transport.connect();\n await transport.requestHandoff({\n visitorName,\n visitorEmail,\n aiChatHistory: [],\n });\n callbacksRef.current?.onLiveChatRequested?.();\n } catch (err) {\n callbacksRef.current?.onError?.(err as Error);\n setLcState(\"ai\");\n }\n },\n [enableLiveChat, chatServiceUrl, apiEndpoint, apiKey, safeProjectId, sessionId]\n );\n\n const liveChat = useMemo<LiveChatReturn>(\n () => ({\n state: lcState,\n messages: lcMessages,\n operatorName: lcOperator,\n queuePosition: lcQueue,\n showIdentityForm: lcShowIdentity,\n initiate: lcInitiate,\n send: (content: string) => {\n if (!content.trim()) return;\n lcTransportRef.current?.sendMessage?.(content);\n setLcMessages((prev) => [\n ...prev,\n {\n id: Date.now(),\n content,\n senderType: \"visitor\",\n timestamp: new Date().toISOString(),\n },\n ]);\n },\n end: () => lcTransportRef.current?.endChat?.(),\n cancel: () => lcResetState(),\n submitRating: (rating, comment) =>\n lcTransportRef.current?.submitRating?.(rating, comment),\n returnToAI: () => lcResetState(),\n requestManualHandoff: () => setLcShowIdentity(true),\n setShowIdentityForm: setLcShowIdentity,\n }),\n [lcState, lcMessages, lcOperator, lcQueue, lcShowIdentity, lcInitiate, lcResetState]\n );\n\n return {\n messages: messages as unknown as ChatMessage[],\n status,\n error: error as Error | undefined,\n sessionId,\n sendMessage,\n stopGeneration,\n newConversation,\n clearMessages,\n activeTools,\n liveChat,\n chatRef,\n };\n}\n"]}
|
|
@@ -525,7 +525,8 @@ function JsonRenderResult({
|
|
|
525
525
|
onSendMessage,
|
|
526
526
|
className,
|
|
527
527
|
conversationMessages,
|
|
528
|
-
apiKey
|
|
528
|
+
apiKey,
|
|
529
|
+
apiEndpoint
|
|
529
530
|
}) {
|
|
530
531
|
const rawSpecObj = rawSpec;
|
|
531
532
|
const spec = react$1.useMemo(() => normalizeSpec(rawSpecObj), [rawSpecObj]);
|
|
@@ -585,8 +586,18 @@ function JsonRenderResult({
|
|
|
585
586
|
const headers = {
|
|
586
587
|
"Content-Type": "application/json"
|
|
587
588
|
};
|
|
588
|
-
if (
|
|
589
|
-
|
|
589
|
+
if (resolved?.headers && typeof resolved.headers === "object") {
|
|
590
|
+
for (const [k, v] of Object.entries(
|
|
591
|
+
resolved.headers
|
|
592
|
+
)) {
|
|
593
|
+
if (typeof v === "string") headers[k] = v;
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
if (apiKey && !headers.Authorization) {
|
|
597
|
+
const sameOrigin = !apiEndpoint || url.startsWith(apiEndpoint);
|
|
598
|
+
if (sameOrigin) {
|
|
599
|
+
headers.Authorization = `Bearer ${apiKey}`;
|
|
600
|
+
}
|
|
590
601
|
}
|
|
591
602
|
const res = await fetch(url, {
|
|
592
603
|
method,
|
|
@@ -604,7 +615,7 @@ function JsonRenderResult({
|
|
|
604
615
|
return responseData;
|
|
605
616
|
}
|
|
606
617
|
}),
|
|
607
|
-
[onSendMessage, apiKey]
|
|
618
|
+
[onSendMessage, apiKey, apiEndpoint]
|
|
608
619
|
);
|
|
609
620
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
610
621
|
react.JSONUIProvider,
|
|
@@ -676,5 +687,5 @@ function ValidationBridge({
|
|
|
676
687
|
exports.JsonRenderResult = JsonRenderResult;
|
|
677
688
|
exports.catalog = catalog;
|
|
678
689
|
exports.registry = registry;
|
|
679
|
-
//# sourceMappingURL=chunk-
|
|
680
|
-
//# sourceMappingURL=chunk-
|
|
690
|
+
//# sourceMappingURL=chunk-H7C3AGA2.cjs.map
|
|
691
|
+
//# sourceMappingURL=chunk-H7C3AGA2.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/json-render/catalog.ts","../src/json-render/registry.tsx","../src/json-render/JsonRenderResult.tsx"],"names":["z","defineCatalog","schema","shadcnComponentDefinitions","defineRegistry","jsx","shadcnComponents","VisualizationRenderer","useMemo","useRef","useCallback","jsxs","JSONUIProvider","Renderer","useStateValue","Fragment","useValidation","useEffect"],"mappings":";;;;;;;;;;;;AAWA,IAAM,YAAA,GAAeA,MAAE,MAAA,CAAO;AAAA,EAC5B,OAAA,EAASA,MAAE,MAAA,EAAO;AAAA,EAClB,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,EAChB,OAAOA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,EACtC,IAAA,EAAMA,KAAA,CAAE,IAAA,CAAK,CAAC,MAAA,EAAQ,KAAA,EAAO,MAAM,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA;AACnD,CAAC,CAAA;AAED,IAAM,iBAAA,GAAoBA,MAAE,MAAA,CAAO;AAAA,EACjC,OAAOA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,EACtC,MAAA,EAAQA,KAAA,CAAE,KAAA,CAAM,YAAY,CAAA;AAAA,EAC5B,UAAUA,KAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,EAC1C,YAAYA,KAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,EAC5C,SAASA,KAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,EACzC,cAAA,EAAgBA,KAAA,CACb,IAAA,CAAK,CAAC,UAAA,EAAY,SAAA,EAAW,QAAA,EAAU,SAAS,CAAC,CAAA,CACjD,QAAA,EAAS,CACT,QAAA;AACL,CAAC,CAAA;AAED,IAAM,cAAA,GAAiB;AAAA,EACrB,OAAOA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,EACtC,aAAaA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,EAC5C,IAAA,EAAMA,KAAA,CAAE,KAAA,CAAMA,KAAA,CAAE,MAAA,CAAOA,KAAA,CAAE,MAAA,EAAO,EAAGA,KAAA,CAAE,OAAA,EAAS,CAAC,CAAA;AAAA,EAC/C,MAAA,EAAQ,iBAAA;AAAA,EACR,QAAQA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,QAAA;AAChC,CAAA;AAEO,IAAM,OAAA,GAAUC,mBAAcC,aAAA,EAAQ;AAAA,EAC3C,UAAA,EAAY;AAAA;AAAA,IAEV,MAAMC,oCAAA,CAA2B,IAAA;AAAA,IACjC,OAAOA,oCAAA,CAA2B,KAAA;AAAA,IAClC,MAAMA,oCAAA,CAA2B,IAAA;AAAA,IACjC,WAAWA,oCAAA,CAA2B,SAAA;AAAA,IACtC,MAAMA,oCAAA,CAA2B,IAAA;AAAA,IACjC,WAAWA,oCAAA,CAA2B,SAAA;AAAA,IACtC,aAAaA,oCAAA,CAA2B,WAAA;AAAA,IACxC,QAAQA,oCAAA,CAA2B,MAAA;AAAA,IACnC,QAAQA,oCAAA,CAA2B,MAAA;AAAA,IACnC,UAAUA,oCAAA,CAA2B,QAAA;AAAA;AAAA,IAGrC,SAASA,oCAAA,CAA2B,OAAA;AAAA,IACpC,MAAMA,oCAAA,CAA2B,IAAA;AAAA,IACjC,OAAOA,oCAAA,CAA2B,KAAA;AAAA,IAClC,MAAMA,oCAAA,CAA2B,IAAA;AAAA,IACjC,OAAOA,oCAAA,CAA2B,KAAA;AAAA;AAAA,IAGlC,OAAOA,oCAAA,CAA2B,KAAA;AAAA,IAClC,QAAQA,oCAAA,CAA2B,MAAA;AAAA;AAAA,IAGnC,OAAOA,oCAAA,CAA2B,KAAA;AAAA;AAAA,IAGlC,SAAA,EAAW;AAAA,MACT,KAAA,EAAOH,KAAA,CAAE,MAAA,CAAO,cAAc,CAAA;AAAA,MAC9B,WAAA,EAAa,qFAAA;AAAA,MACb,OAAA,EAAS;AAAA,QACP,KAAA,EAAO,eAAA;AAAA,QACP,IAAA,EAAM,CAAC,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,GAAA,EAAI,EAAG,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAK,CAAA;AAAA,QACjE,MAAA,EAAQ,EAAE,KAAA,EAAO,OAAA,EAAS,MAAA,EAAQ,CAAC,EAAE,OAAA,EAAS,OAAA,EAAS,KAAA,EAAO,OAAA,EAAS,CAAA;AAAE;AAC3E,KACF;AAAA,IACA,QAAA,EAAU;AAAA,MACR,KAAA,EAAOA,KAAA,CAAE,MAAA,CAAO,cAAc,CAAA;AAAA,MAC9B,WAAA,EAAa,wFAAA;AAAA,MACb,OAAA,EAAS;AAAA,QACP,KAAA,EAAO,oBAAA;AAAA,QACP,IAAA,EAAM,CAAC,EAAE,OAAA,EAAS,GAAA,EAAK,OAAA,EAAS,GAAA,EAAI,EAAG,EAAE,OAAA,EAAS,GAAA,EAAK,OAAA,EAAS,KAAK,CAAA;AAAA,QACrE,MAAA,EAAQ,EAAE,KAAA,EAAO,SAAA,EAAW,MAAA,EAAQ,CAAC,EAAE,OAAA,EAAS,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,CAAA;AAAE;AACjF,KACF;AAAA,IACA,QAAA,EAAU;AAAA,MACR,KAAA,EAAOA,MAAE,MAAA,CAAO;AAAA,QACd,OAAOA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,QACtC,aAAaA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,QAC5C,IAAA,EAAMA,KAAA,CAAE,KAAA,CAAMA,KAAA,CAAE,MAAA,CAAOA,KAAA,CAAE,MAAA,EAAO,EAAGA,KAAA,CAAE,OAAA,EAAS,CAAC,CAAA;AAAA,QAC/C,OAAA,EAASA,MAAE,MAAA,EAAO;AAAA,QAClB,SAASA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,QACxC,QAAQA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,QAAA;AAAS,OACxC,CAAA;AAAA,MACD,WAAA,EAAa,sFAAA;AAAA,MACb,OAAA,EAAS;AAAA,QACP,KAAA,EAAO,cAAA;AAAA,QACP,IAAA,EAAM,CAAC,EAAE,IAAA,EAAM,WAAA,EAAa,KAAA,EAAO,EAAA,EAAG,EAAG,EAAE,IAAA,EAAM,WAAA,EAAa,KAAA,EAAO,IAAI,CAAA;AAAA,QACzE,OAAA,EAAS,OAAA;AAAA,QACT,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,SAAA,EAAW;AAAA,MACT,KAAA,EAAOA,KAAA,CAAE,MAAA,CAAO,cAAc,CAAA;AAAA,MAC9B,WAAA,EAAa,iEAAA;AAAA,MACb,OAAA,EAAS;AAAA,QACP,KAAA,EAAO,gBAAA;AAAA,QACP,IAAA,EAAM,CAAC,EAAE,GAAA,EAAK,KAAA,EAAO,MAAA,EAAQ,GAAA,EAAI,EAAG,EAAE,GAAA,EAAK,KAAA,EAAO,MAAA,EAAQ,KAAK,CAAA;AAAA,QAC/D,MAAA,EAAQ,EAAE,KAAA,EAAO,KAAA,EAAO,MAAA,EAAQ,CAAC,EAAE,OAAA,EAAS,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,CAAA;AAAE;AAC3E,KACF;AAAA,IACA,WAAA,EAAa;AAAA,MACX,KAAA,EAAOA,MAAE,MAAA,CAAO;AAAA,QACd,OAAOA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,QACtC,SAASA,KAAA,CAAE,KAAA;AAAA,UACTA,MAAE,MAAA,CAAO;AAAA,YACP,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,YAChB,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,YAChB,MAAMA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,YACrC,OAAOA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,YACtC,cAAA,EAAgBA,KAAA,CAAE,IAAA,CAAK,CAAC,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,EAAS;AAAA,YACtE,aAAaA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,QAAA;AAAS,WAC7C;AAAA;AACH,OACD,CAAA;AAAA,MACD,WAAA,EAAa,uEAAA;AAAA,MACb,OAAA,EAAS;AAAA,QACP,OAAA,EAAS;AAAA,UACP,EAAE,OAAO,SAAA,EAAW,KAAA,EAAO,SAAS,KAAA,EAAO,MAAA,EAAQ,gBAAgB,IAAA,EAAK;AAAA,UACxE,EAAE,OAAO,OAAA,EAAS,KAAA,EAAO,OAAO,KAAA,EAAO,KAAA,EAAO,gBAAgB,MAAA;AAAO;AACvE;AACF,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAOA,MAAE,MAAA,CAAO;AAAA,QACd,OAAOA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,QACtC,OAAOA,KAAA,CAAE,KAAA;AAAA,UACPA,MAAE,MAAA,CAAO;AAAA,YACP,IAAA,EAAMA,MAAE,MAAA,EAAO;AAAA,YACf,WAAWA,KAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,YAC3C,UAAUA,KAAA,CAAE,MAAA,CAAOA,MAAE,MAAA,EAAO,EAAGA,MAAE,KAAA,CAAM,CAACA,MAAE,MAAA,EAAO,EAAGA,MAAE,OAAA,EAAQ,EAAGA,MAAE,MAAA,EAAQ,CAAC,CAAC;AAAA,WAC9E;AAAA,SACH;AAAA,QACA,QAAQA,KAAA,CAAE,KAAA;AAAA,UACRA,MAAE,MAAA,CAAO;AAAA,YACP,GAAA,EAAKA,MAAE,MAAA,EAAO;AAAA,YACd,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,YAChB,IAAA,EAAMA,KAAA,CAAE,IAAA,CAAK,CAAC,MAAA,EAAQ,SAAA,EAAW,QAAQ,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA;AAAS,WACjE;AAAA;AACH,OACD,CAAA;AAAA,MACD,WAAA,EAAa,oEAAA;AAAA,MACb,OAAA,EAAS;AAAA,QACP,KAAA,EAAO,iBAAA;AAAA,QACP,KAAA,EAAO;AAAA,UACL,EAAE,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,EAAE,KAAA,EAAO,OAAA,EAAS,OAAA,EAAS,MAAA,EAAQ,OAAA,EAAS,IAAA,EAAK,EAAE;AAAA,UAC9E,EAAE,IAAA,EAAM,KAAA,EAAO,SAAA,EAAW,IAAA,EAAM,QAAA,EAAU,EAAE,KAAA,EAAO,QAAA,EAAU,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,MAAK;AAAE,SACjG;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,EAAE,GAAA,EAAK,OAAA,EAAS,KAAA,EAAO,OAAA,EAAS,MAAM,MAAA,EAAO;AAAA,UAC7C,EAAE,GAAA,EAAK,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,MAAM,MAAA,EAAO;AAAA,UACjD,EAAE,GAAA,EAAK,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,MAAM,SAAA;AAAU;AACtD;AACF,KACF;AAAA,IACA,QAAA,EAAU;AAAA,MACR,KAAA,EAAOA,MAAE,MAAA,CAAO;AAAA,QACd,OAAOA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,QACtC,QAAQA,KAAA,CAAE,KAAA;AAAA,UACRA,MAAE,MAAA,CAAO;AAAA,YACP,MAAMA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,YACrC,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,YAChB,aAAaA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,YAC5C,MAAA,EAAQA,KAAA,CAAE,IAAA,CAAK,CAAC,WAAA,EAAa,SAAA,EAAW,UAAU,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA;AAAS,WAC1E;AAAA;AACH,OACD,CAAA;AAAA,MACD,WAAA,EAAa,8DAAA;AAAA,MACb,OAAA,EAAS;AAAA,QACP,MAAA,EAAQ;AAAA,UACN,EAAE,KAAA,EAAO,cAAA,EAAgB,IAAA,EAAM,OAAA,EAAS,QAAQ,WAAA,EAAY;AAAA,UAC5D,EAAE,KAAA,EAAO,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,QAAQ,SAAA,EAAU;AAAA,UACrD,EAAE,KAAA,EAAO,WAAA,EAAa,MAAA,EAAQ,UAAA;AAAW;AAC3C;AACF,KACF;AAAA,IACA,YAAA,EAAc;AAAA,MACZ,KAAA,EAAOA,MAAE,MAAA,CAAO;AAAA,QACd,OAAOA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,QACtC,OAAOA,KAAA,CAAE,KAAA;AAAA,UACPA,MAAE,MAAA,CAAO;AAAA,YACP,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,YAChB,OAAA,EAASA,MAAE,MAAA,EAAO;AAAA,YAClB,MAAA,EAAQA,MAAE,MAAA,EAAO;AAAA,YACjB,MAAMA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,QAAA;AAAS,WACtC;AAAA;AACH,OACD,CAAA;AAAA,MACD,WAAA,EAAa,6DAAA;AAAA,MACb,OAAA,EAAS;AAAA,QACP,KAAA,EAAO;AAAA,UACL,EAAE,OAAO,SAAA,EAAW,OAAA,EAAS,MAAO,MAAA,EAAQ,GAAA,EAAQ,MAAM,GAAA,EAAI;AAAA,UAC9D,EAAE,KAAA,EAAO,OAAA,EAAS,OAAA,EAAS,GAAA,EAAK,QAAQ,GAAA;AAAK;AAC/C;AACF,KACF;AAAA;AAAA,IAGA,OAAOG,oCAAA,CAA2B,KAAA;AAAA,IAClC,UAAUA,oCAAA,CAA2B,QAAA;AAAA,IACrC,QAAQA,oCAAA,CAA2B,MAAA;AAAA,IACnC,UAAUA,oCAAA,CAA2B,QAAA;AAAA,IACrC,OAAOA,oCAAA,CAA2B,KAAA;AAAA,IAClC,QAAQA,oCAAA,CAA2B,MAAA;AAAA,IACnC,QAAQA,oCAAA,CAA2B,MAAA;AAAA,IACnC,QAAQA,oCAAA,CAA2B,MAAA;AAAA,IACnC,aAAaA,oCAAA,CAA2B,WAAA;AAAA,IACxC,QAAQA,oCAAA,CAA2B,MAAA;AAAA,IACnC,aAAaA,oCAAA,CAA2B,WAAA;AAAA,IACxC,cAAcA,oCAAA,CAA2B,YAAA;AAAA;AAAA,IAGzC,UAAUA,oCAAA,CAA2B,QAAA;AAAA,IACrC,SAASA,oCAAA,CAA2B,OAAA;AAAA,IACpC,UAAUA,oCAAA,CAA2B,QAAA;AAAA,IACrC,SAASA,oCAAA,CAA2B,OAAA;AAAA,IACpC,SAASA,oCAAA,CAA2B,OAAA;AAAA;AAAA,IAGpC,YAAYA,oCAAA,CAA2B;AAAA,GACzC;AAAA,EAEA,OAAA,EAAS;AAAA,IACP,YAAA,EAAc;AAAA,MACZ,MAAA,EAAQH,MAAE,MAAA,CAAO;AAAA,QACf,GAAA,EAAKA,MAAE,MAAA,EAAO;AAAA,QACd,MAAA,EAAQA,MAAE,IAAA,CAAK,CAAC,SAAS,QAAQ,CAAC,CAAA,CAAE,OAAA,CAAQ,QAAQ;AAAA,OACrD,CAAA;AAAA,MACD,WAAA,EAAa;AAAA,KACf;AAAA,IACA,YAAA,EAAc;AAAA,MACZ,MAAA,EAAQA,MAAE,MAAA,CAAO;AAAA,QACf,OAAA,EAASA,MAAE,MAAA;AAAO,OACnB,CAAA;AAAA,MACD,WAAA,EAAa;AAAA,KACf;AAAA,IACA,QAAA,EAAU;AAAA,MACR,MAAA,EAAQA,MAAE,MAAA,CAAO;AAAA,QACf,QAAA,EAAUA,MAAE,MAAA,EAAO;AAAA,QACnB,MAAA,EAAQA,KAAA,CAAE,IAAA,CAAK,CAAC,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,QAAQ,CAAC,CAAA,CAAE,OAAA,CAAQ,MAAM,CAAA;AAAA,QAC/D,IAAA,EAAMA,KAAA,CAAE,MAAA,CAAOA,KAAA,CAAE,MAAA,IAAUA,KAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA;AAAS,OAClD,CAAA;AAAA,MACD,WAAA,EAAa;AAAA;AACf;AAEJ,CAAC;ACjPM,IAAM,EAAE,QAAA,EAAU,QAAA,EAAU,oBAAA,EAAqB,GAAII,oBAAA;AAAA,EAC1D,OAAA;AAAA,EACA;AAAA,IACE,UAAA,EAAY;AAAA;AAAA,MAEV,IAAA,EAAM,CAAC,CAAA,qBAAMC,cAAA,CAAC,KAAA,EAAA,EAAI,WAAU,6CAAA,EAA+C,QAAA,EAAAC,uBAAA,CAAiB,IAAA,CAAK,CAAC,CAAA,EAAE,CAAA;AAAA,MACpG,OAAOA,uBAAA,CAAiB,KAAA;AAAA,MACxB,MAAMA,uBAAA,CAAiB,IAAA;AAAA,MACvB,WAAWA,uBAAA,CAAiB,SAAA;AAAA,MAC5B,MAAMA,uBAAA,CAAiB,IAAA;AAAA,MACvB,WAAWA,uBAAA,CAAiB,SAAA;AAAA,MAC5B,aAAaA,uBAAA,CAAiB,WAAA;AAAA,MAC9B,QAAQA,uBAAA,CAAiB,MAAA;AAAA,MACzB,QAAQA,uBAAA,CAAiB,MAAA;AAAA,MACzB,UAAUA,uBAAA,CAAiB,QAAA;AAAA;AAAA,MAG3B,SAASA,uBAAA,CAAiB,OAAA;AAAA,MAC1B,MAAMA,uBAAA,CAAiB,IAAA;AAAA,MACvB,OAAOA,uBAAA,CAAiB,KAAA;AAAA,MACxB,MAAMA,uBAAA,CAAiB,IAAA;AAAA,MACvB,OAAOA,uBAAA,CAAiB,KAAA;AAAA;AAAA,MAGxB,OAAOA,uBAAA,CAAiB,KAAA;AAAA,MACxB,QAAQA,uBAAA,CAAiB,MAAA;AAAA;AAAA,MAGzB,OAAOA,uBAAA,CAAiB,KAAA;AAAA;AAAA,MAGxB,SAAA,EAAW,CAAC,EAAE,KAAA,EAAM,qBAClBD,cAAA;AAAA,QAACE,uCAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM;AAAA,YACJ,IAAA,EAAM,YAAA;AAAA,YACN,KAAA,EAAO,MAAM,KAAA,IAAS,MAAA;AAAA,YACtB,WAAA,EAAa,MAAM,WAAA,IAAe,MAAA;AAAA,YAClC,MAAM,KAAA,CAAM,IAAA;AAAA,YACZ,MAAA,EAAQ;AAAA,cACN,KAAA,EAAO,KAAA,CAAM,MAAA,EAAQ,KAAA,IAAS,MAAA;AAAA,cAC9B,QAAQ,KAAA,CAAM,MAAA,EAAQ,MAAA,EAAQ,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,gBACxC,SAAS,CAAA,CAAE,OAAA;AAAA,gBACX,OAAO,CAAA,CAAE,KAAA;AAAA,gBACT,KAAA,EAAO,EAAE,KAAA,IAAS;AAAA,eACpB,CAAE,CAAA;AAAA,cACF,QAAA,EAAU,KAAA,CAAM,MAAA,EAAQ,QAAA,IAAY,MAAA;AAAA,cACpC,UAAA,EAAY,KAAA,CAAM,MAAA,EAAQ,UAAA,IAAc,MAAA;AAAA,cACxC,OAAA,EAAS,KAAA,CAAM,MAAA,EAAQ,OAAA,IAAW,MAAA;AAAA,cAClC,cAAA,EAAgB,KAAA,CAAM,MAAA,EAAQ,cAAA,IAAkB;AAAA;AAClD;AACF;AAAA,OACF;AAAA,MAEF,QAAA,EAAU,CAAC,EAAE,KAAA,EAAM,qBACjBF,cAAA;AAAA,QAACE,uCAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM;AAAA,YACJ,IAAA,EAAM,WAAA;AAAA,YACN,KAAA,EAAO,MAAM,KAAA,IAAS,MAAA;AAAA,YACtB,WAAA,EAAa,MAAM,WAAA,IAAe,MAAA;AAAA,YAClC,MAAM,KAAA,CAAM,IAAA;AAAA,YACZ,MAAA,EAAQ;AAAA,cACN,KAAA,EAAO,KAAA,CAAM,MAAA,EAAQ,KAAA,IAAS,MAAA;AAAA,cAC9B,QAAQ,KAAA,CAAM,MAAA,EAAQ,MAAA,EAAQ,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,gBACxC,SAAS,CAAA,CAAE,OAAA;AAAA,gBACX,OAAO,CAAA,CAAE,KAAA;AAAA,gBACT,KAAA,EAAO,EAAE,KAAA,IAAS;AAAA,eACpB,CAAE,CAAA;AAAA,cACF,QAAA,EAAU,KAAA,CAAM,MAAA,EAAQ,QAAA,IAAY,MAAA;AAAA,cACpC,UAAA,EAAY,KAAA,CAAM,MAAA,EAAQ,UAAA,IAAc,MAAA;AAAA,cACxC,OAAA,EAAS,KAAA,CAAM,MAAA,EAAQ,OAAA,IAAW,MAAA;AAAA,cAClC,cAAA,EAAgB,KAAA,CAAM,MAAA,EAAQ,cAAA,IAAkB;AAAA;AAClD;AACF;AAAA,OACF;AAAA,MAEF,QAAA,EAAU,CAAC,EAAE,KAAA,EAAM,qBACjBF,cAAA;AAAA,QAACE,uCAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM;AAAA,YACJ,IAAA,EAAM,WAAA;AAAA,YACN,KAAA,EAAO,MAAM,KAAA,IAAS,MAAA;AAAA,YACtB,WAAA,EAAa,MAAM,WAAA,IAAe,MAAA;AAAA,YAClC,MAAM,KAAA,CAAM,IAAA;AAAA,YACZ,MAAA,EAAQ;AAAA,cACN,MAAA,EAAQ,CAAC,EAAE,OAAA,EAAS,MAAM,OAAA,EAAS,KAAA,EAAO,KAAA,CAAM,OAAA,EAAS;AAAA;AAC3D;AACF;AAAA,OACF;AAAA,MAEF,SAAA,EAAW,CAAC,EAAE,KAAA,EAAM,qBAClBF,cAAA;AAAA,QAACE,uCAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM;AAAA,YACJ,IAAA,EAAM,YAAA;AAAA,YACN,KAAA,EAAO,MAAM,KAAA,IAAS,MAAA;AAAA,YACtB,WAAA,EAAa,MAAM,WAAA,IAAe,MAAA;AAAA,YAClC,MAAM,KAAA,CAAM,IAAA;AAAA,YACZ,MAAA,EAAQ;AAAA,cACN,KAAA,EAAO,KAAA,CAAM,MAAA,EAAQ,KAAA,IAAS,MAAA;AAAA,cAC9B,QAAQ,KAAA,CAAM,MAAA,EAAQ,MAAA,EAAQ,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,gBACxC,SAAS,CAAA,CAAE,OAAA;AAAA,gBACX,OAAO,CAAA,CAAE,KAAA;AAAA,gBACT,KAAA,EAAO,EAAE,KAAA,IAAS;AAAA,eACpB,CAAE,CAAA;AAAA,cACF,QAAA,EAAU,KAAA,CAAM,MAAA,EAAQ,QAAA,IAAY,MAAA;AAAA,cACpC,UAAA,EAAY,KAAA,CAAM,MAAA,EAAQ,UAAA,IAAc,MAAA;AAAA,cACxC,OAAA,EAAS,KAAA,CAAM,MAAA,EAAQ,OAAA,IAAW,MAAA;AAAA,cAClC,cAAA,EAAgB,KAAA,CAAM,MAAA,EAAQ,cAAA,IAAkB;AAAA;AAClD;AACF;AAAA,OACF;AAAA,MAEF,WAAA,EAAa,CAAC,EAAE,KAAA,EAAM,qBACpBF,cAAA;AAAA,QAACE,uCAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM;AAAA,YACJ,IAAA,EAAM,cAAA;AAAA,YACN,KAAA,EAAO,MAAM,KAAA,IAAS,MAAA;AAAA,YACtB,OAAA,EAAS,KAAA,CAAM,OAAA,EAAS,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,cAClC,OAAO,CAAA,CAAE,KAAA;AAAA,cACT,OAAO,CAAA,CAAE,KAAA;AAAA,cACT,IAAA,EAAM,EAAE,IAAA,IAAQ,MAAA;AAAA,cAChB,KAAA,EAAO,EAAE,KAAA,IAAS,MAAA;AAAA,cAClB,cAAA,EAAgB,EAAE,cAAA,IAAkB,MAAA;AAAA,cACpC,WAAA,EAAa,EAAE,WAAA,IAAe;AAAA,aAChC,CAAE;AAAA;AACJ;AAAA,OACF;AAAA,MAEF,eAAA,EAAiB,CAAC,EAAE,KAAA,EAAM,qBACxBF,cAAA;AAAA,QAACE,uCAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM;AAAA,YACJ,IAAA,EAAM,YAAA;AAAA,YACN,KAAA,EAAO,MAAM,KAAA,IAAS,MAAA;AAAA,YACtB,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,cACjC,MAAM,IAAA,CAAK,IAAA;AAAA,cACX,SAAA,EAAW,KAAK,SAAA,IAAa,MAAA;AAAA,cAC7B,UAAU,IAAA,CAAK;AAAA,aACjB,CAAE,CAAA;AAAA,YACF,gBAAA,EAAkB,KAAA,CAAM,MAAA,EAAQ,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,cAC1C,KAAK,CAAA,CAAE,GAAA;AAAA,cACP,OAAO,CAAA,CAAE,KAAA;AAAA,cACT,IAAA,EAAM,EAAE,IAAA,IAAQ;AAAA,aAClB,CAAE;AAAA;AACJ;AAAA,OACF;AAAA,MAEF,QAAA,EAAU,CAAC,EAAE,KAAA,EAAM,qBACjBF,cAAA;AAAA,QAACE,uCAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM;AAAA,YACJ,IAAA,EAAM,UAAA;AAAA,YACN,KAAA,EAAO,MAAM,KAAA,IAAS,MAAA;AAAA,YACtB,MAAA,EAAQ,KAAA,CAAM,MAAA,EAAQ,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,cAChC,IAAA,EAAM,EAAE,IAAA,IAAQ,MAAA;AAAA,cAChB,OAAO,CAAA,CAAE,KAAA;AAAA,cACT,WAAA,EAAa,EAAE,WAAA,IAAe,MAAA;AAAA,cAC9B,MAAA,EAAQ,EAAE,MAAA,IAAU;AAAA,aACtB,CAAE;AAAA;AACJ;AAAA,OACF;AAAA,MAEF,YAAA,EAAc,CAAC,EAAE,KAAA,EAAM,qBACrBF,cAAA;AAAA,QAACE,uCAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM;AAAA,YACJ,IAAA,EAAM,UAAA;AAAA,YACN,KAAA,EAAO,MAAM,KAAA,IAAS,MAAA;AAAA,YACtB,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,cAC9B,OAAO,CAAA,CAAE,KAAA;AAAA,cACT,SAAS,CAAA,CAAE,OAAA;AAAA,cACX,QAAQ,CAAA,CAAE,MAAA;AAAA,cACV,IAAA,EAAM,EAAE,IAAA,IAAQ;AAAA,aAClB,CAAE;AAAA;AACJ;AAAA,OACF;AAAA;AAAA,MAIF,KAAA,EAAO,CAAC,CAAA,qBAAMF,cAAA,CAAC,KAAA,EAAA,EAAI,WAAU,QAAA,EAAU,QAAA,EAAAC,uBAAA,CAAiB,KAAA,CAAM,CAAC,CAAA,EAAE,CAAA;AAAA,MACjE,QAAA,EAAU,CAAC,CAAA,qBAAMD,cAAA,CAAC,KAAA,EAAA,EAAI,WAAU,QAAA,EAAU,QAAA,EAAAC,uBAAA,CAAiB,QAAA,CAAS,CAAC,CAAA,EAAE,CAAA;AAAA,MACvE,MAAA,EAAQ,CAAC,CAAA,qBAAMD,cAAA,CAAC,KAAA,EAAA,EAAI,WAAU,QAAA,EAAU,QAAA,EAAAC,uBAAA,CAAiB,MAAA,CAAO,CAAC,CAAA,EAAE,CAAA;AAAA,MACnE,UAAUA,uBAAA,CAAiB,QAAA;AAAA,MAC3B,OAAOA,uBAAA,CAAiB,KAAA;AAAA,MACxB,QAAQA,uBAAA,CAAiB,MAAA;AAAA,MACzB,QAAQA,uBAAA,CAAiB,MAAA;AAAA,MACzB,QAAQA,uBAAA,CAAiB,MAAA;AAAA,MACzB,aAAaA,uBAAA,CAAiB,WAAA;AAAA,MAC9B,QAAQA,uBAAA,CAAiB,MAAA;AAAA,MACzB,aAAaA,uBAAA,CAAiB,WAAA;AAAA,MAC9B,cAAcA,uBAAA,CAAiB,YAAA;AAAA;AAAA,MAG/B,UAAUA,uBAAA,CAAiB,QAAA;AAAA,MAC3B,SAASA,uBAAA,CAAiB,OAAA;AAAA,MAC1B,UAAUA,uBAAA,CAAiB,QAAA;AAAA,MAC3B,SAASA,uBAAA,CAAiB,OAAA;AAAA,MAC1B,SAASA,uBAAA,CAAiB,OAAA;AAAA;AAAA,MAG1B,YAAYA,uBAAA,CAAiB;AAAA,KAC/B;AAAA,IAEA,OAAA,EAAS;AAAA,MACP,YAAA,EAAc,OAAO,MAAA,KAAW;AAC9B,QAAA,IAAI,QAAQ,GAAA,EAAK;AACf,UAAA,MAAA,CAAO,IAAA,CAAK,MAAA,CAAO,GAAA,EAAK,MAAA,CAAO,UAAU,QAAQ,CAAA;AAAA,QACnD;AAAA,MACF,CAAA;AAAA,MACA,YAAA,EAAc,OAAO,MAAA,KAAW;AAC9B,QAAA,OAAA,CAAQ,GAAA,CAAI,oCAAA,EAAsC,MAAA,EAAQ,OAAO,CAAA;AAAA,MACnE,CAAA;AAAA,MACA,QAAA,EAAU,OAAO,MAAA,KAAW;AAC1B,QAAA,MAAM,CAAA,GAAI,MAAA;AACV,QAAA,MAAM,GAAA,GAAO,CAAA,EAAG,QAAA,IAAY,CAAA,EAAG,GAAA;AAC/B,QAAA,IAAI,CAAC,GAAA,EAAK;AACR,UAAA,OAAA,CAAQ,KAAK,8CAA8C,CAAA;AAC3D,UAAA;AAAA,QACF;AACA,QAAA,MAAM,MAAA,GAAA,CAAW,MAAA,EAAQ,MAAA,IAAqB,MAAA,EAAQ,WAAA,EAAY;AAClE,QAAA,IAAI;AACF,UAAA,MAAM,GAAA,GAAM,MAAM,KAAA,CAAM,GAAA,EAAK;AAAA,YAC3B,MAAA;AAAA,YACA,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAA,EAAmB;AAAA,YAC9C,GAAI,MAAA,KAAW,KAAA,IAAS,MAAA,EAAQ,IAAA,GAC5B,EAAE,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,IAAI,CAAA,KAClC;AAAC,WACN,CAAA;AACD,UAAA,MAAM,OAAO,MAAM,GAAA,CAAI,MAAK,CAAE,KAAA,CAAM,MAAM,IAAI,CAAA;AAC9C,UAAA,OAAA,CAAQ,GAAA,CAAI,kCAAA,EAAoC,GAAA,CAAI,MAAA,EAAQ,IAAI,CAAA;AAChE,UAAA,OAAO,IAAA;AAAA,QACT,SAAS,GAAA,EAAK;AACZ,UAAA,OAAA,CAAQ,KAAA,CAAM,iCAAiC,GAAG,CAAA;AAAA,QACpD;AAAA,MACF;AAAA;AACF;AAEJ;ACpOA,SAAS,cAAc,GAAA,EAAoC;AACzD,EAAA,IAAI,OAAO,GAAA,CAAI,IAAA,KAAS,QAAA,IAAY,IAAI,QAAA,EAAU;AAChD,IAAA,OAAO,GAAA;AAAA,EACT;AACA,EAAA,MAAM,WAAoC,EAAC;AAC3C,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA,EAAG;AAC9C,IAAA,IACE,KAAA,IACA,OAAO,KAAA,KAAU,QAAA,IACjB,UAAW,KAAA,EACX;AACA,MAAA,QAAA,CAAS,GAAG,CAAA,GAAI,KAAA;AAAA,IAClB;AAAA,EACF;AACA,EAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAS;AAClC;AAGA,SAAS,iBACP,GAAA,EACyB;AACzB,EAAA,MAAM,QAAQ,GAAA,CAAI,KAAA;AAClB,EAAA,IAAI,CAAC,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,SAAiB,EAAC;AAEjD,EAAA,MAAM,SAAkC,EAAC;AACzC,EAAA,SAAS,IAAA,CAAK,KAA8B,MAAA,EAAgB;AAC1D,IAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA,EAAG;AAC9C,MAAA,MAAM,IAAA,GAAO,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA;AAC7B,MAAA,MAAA,CAAO,IAAI,CAAA,GAAI,KAAA;AACf,MAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,IAAY,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AAC/D,QAAA,IAAA,CAAK,OAAkC,IAAI,CAAA;AAAA,MAC7C;AAAA,IACF;AAAA,EACF;AACA,EAAA,IAAA,CAAK,OAAO,EAAE,CAAA;AACd,EAAA,OAAO,MAAA;AACT;AAGA,SAAS,WAAA,CACP,OACA,QAAA,EACS;AACT,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,EAAW,OAAO,KAAA;AAClD,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACtD,IAAA,MAAM,GAAA,GAAM,KAAA;AACZ,IAAA,IAAI,MAAA,CAAO,KAAK,GAAG,CAAA,CAAE,WAAW,CAAA,IAAK,OAAO,GAAA,CAAI,MAAA,KAAW,QAAA,EAAU;AACnE,MAAA,OAAO,QAAA,CAAS,IAAI,MAAM,CAAA;AAAA,IAC5B;AACA,IAAA,MAAM,WAAoC,EAAC;AAC3C,IAAA,KAAA,MAAW,CAAC,GAAA,EAAK,GAAG,KAAK,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA,EAAG;AAC5C,MAAA,QAAA,CAAS,GAAG,CAAA,GAAI,WAAA,CAAY,GAAA,EAAK,QAAQ,CAAA;AAAA,IAC3C;AACA,IAAA,OAAO,QAAA;AAAA,EACT;AACA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,IAAA,OAAO,MAAM,GAAA,CAAI,CAAC,SAAS,WAAA,CAAY,IAAA,EAAM,QAAQ,CAAC,CAAA;AAAA,EACxD;AACA,EAAA,OAAO,KAAA;AACT;AAyBO,SAAS,gBAAA,CAAiB;AAAA,EAC/B,IAAA,EAAM,OAAA;AAAA,EACN,IAAA;AAAA,EACA,aAAA;AAAA,EACA,SAAA;AAAA,EACA,oBAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,UAAA,GAAa,OAAA;AACnB,EAAA,MAAM,IAAA,GAAOE,gBAAQ,MAAM,aAAA,CAAc,UAAU,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAGlE,EAAA,MAAM,UAAA,GAAaA,eAAA;AAAA,IACjB,MAAO,WAAW,WAAA,IAA8B,IAAA;AAAA,IAChD,CAAC,UAAU;AAAA,GACb;AAEA,EAAA,MAAM,YAAA,GAAeA,gBAAQ,MAAM;AACjC,IAAA,MAAM,SAAA,GAAY,iBAAiB,UAAU,CAAA;AAC7C,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,IAAA;AAAA,MACT,GAAI,oBAAA,GACA,EAAE,uBAAA,EAAyB,oBAAA,KAC3B,EAAC;AAAA,MACL,GAAG;AAAA,KACL;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,UAAA,EAAY,oBAAoB,CAAC,CAAA;AAG3C,EAAA,MAAM,QAAA,GAAWC,eAAgC,YAAY,CAAA;AAC7D,EAAA,MAAM,WAAA,GAAcA,eAA+B,IAAI,CAAA;AAEvD,EAAA,MAAM,iBAAA,GAAoBC,mBAAA;AAAA,IACxB,CAAC,OAAA,KAAqD;AACpD,MAAA,KAAA,MAAW,EAAE,IAAA,EAAM,KAAA,EAAM,IAAK,OAAA,EAAS;AACrC,QAAA,QAAA,CAAS,OAAA,CAAQ,IAAI,CAAA,GAAI,KAAA;AAAA,MAC3B;AAAA,IACF,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,MAAM,QAAA,GAAWF,eAAA;AAAA,IACf,OAAO;AAAA,MACL,YAAA,EAAc,OAAO,MAAA,KAAoC;AACvD,QAAA,IAAI,QAAQ,GAAA,EAAK;AACf,UAAA,MAAA,CAAO,IAAA;AAAA,YACL,MAAA,CAAO,GAAA;AAAA,YACN,OAAO,MAAA,IAAqB;AAAA,WAC/B;AAAA,QACF;AAAA,MACF,CAAA;AAAA,MAEA,YAAA,EAAc,OAAO,MAAA,KAAoC;AACvD,QAAA,IACE,iBACA,MAAA,EAAQ,OAAA,IACR,OAAO,MAAA,CAAO,YAAY,QAAA,EAC1B;AACA,UAAA,aAAA,CAAc,OAAO,OAAO,CAAA;AAAA,QAC9B;AAAA,MACF,CAAA;AAAA,MAEA,QAAA,EAAU,OAAO,MAAA,KAAoC;AACnD,QAAA,IAAI,YAAY,OAAA,EAAS;AACvB,UAAA,MAAM,OAAA,GAAU,YAAY,OAAA,EAAQ;AACpC,UAAA,IAAI,CAAC,OAAA,EAAS;AACZ,YAAA,MAAM,IAAI,MAAM,mBAAmB,CAAA;AAAA,UACrC;AAAA,QACF;AAEA,QAAA,MAAM,QAAA,GAAW,WAAA;AAAA,UACf,MAAA;AAAA,UACA,QAAA,CAAS;AAAA,SACX;AAEA,QAAA,MAAM,GAAA,GAAO,QAAA,EAAU,QAAA,IAAY,QAAA,EAAU,GAAA;AAG7C,QAAA,IAAI,CAAC,GAAA,EAAK;AACR,UAAA,MAAM,IAAI,MAAM,yCAAyC,CAAA;AAAA,QAC3D;AACA,QAAA,MAAM,MAAA,GAAA,CACH,QAAA,EAAU,MAAA,IAAqB,MAAA,EAChC,WAAA,EAAY;AAEd,QAAA,MAAM,OAAA,GAAkC;AAAA,UACtC,cAAA,EAAgB;AAAA,SAClB;AAEA,QAAA,IAAI,QAAA,EAAU,OAAA,IAAW,OAAO,QAAA,CAAS,YAAY,QAAA,EAAU;AAC7D,UAAA,KAAA,MAAW,CAAC,CAAA,EAAG,CAAC,CAAA,IAAK,MAAA,CAAO,OAAA;AAAA,YAC1B,QAAA,CAAS;AAAA,WACX,EAAG;AACD,YAAA,IAAI,OAAO,CAAA,KAAM,QAAA,EAAU,OAAA,CAAQ,CAAC,CAAA,GAAI,CAAA;AAAA,UAC1C;AAAA,QACF;AAMA,QAAA,IAAI,MAAA,IAAU,CAAC,OAAA,CAAQ,aAAA,EAAe;AACpC,UAAA,MAAM,UAAA,GACJ,CAAC,WAAA,IAAe,GAAA,CAAI,WAAW,WAAW,CAAA;AAC5C,UAAA,IAAI,UAAA,EAAY;AACd,YAAA,OAAA,CAAQ,aAAA,GAAgB,UAAU,MAAM,CAAA,CAAA;AAAA,UAC1C;AAAA,QACF;AAEA,QAAA,MAAM,GAAA,GAAM,MAAM,KAAA,CAAM,GAAA,EAAK;AAAA,UAC3B,MAAA;AAAA,UACA,OAAA;AAAA,UACA,WAAA,EAAa,SAAA;AAAA,UACb,GAAI,MAAA,KAAW,KAAA,IAAS,QAAA,EAAU,IAAA,GAC9B,EAAE,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,IAAI,CAAA,KACpC;AAAC,SACN,CAAA;AAED,QAAA,IAAI,CAAC,IAAI,EAAA,EAAI;AACX,UAAA,MAAM,UAAU,MAAM,GAAA,CAAI,MAAK,CAAE,KAAA,CAAM,MAAM,EAAE,CAAA;AAC/C,UAAA,MAAM,IAAI,KAAA;AAAA,YACR,OAAA,IAAW,CAAA,2BAAA,EAA8B,GAAA,CAAI,MAAM,CAAA;AAAA,WACrD;AAAA,QACF;AAEA,QAAA,MAAM,eAAe,MAAM,GAAA,CAAI,MAAK,CAAE,KAAA,CAAM,MAAM,IAAI,CAAA;AACtD,QAAA,OAAO,YAAA;AAAA,MACT;AAAA,KACF,CAAA;AAAA,IACA,CAAC,aAAA,EAAe,MAAA,EAAQ,WAAW;AAAA,GACrC;AAEA,EAAA,uBACEH,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EACH,QAAA,kBAAAM,eAAA;AAAA,IAACC,oBAAA;AAAA,IAAA;AAAA,MACC,QAAA;AAAA,MACA,YAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA,EAAe,iBAAA;AAAA,MAEf,QAAA,EAAA;AAAA,wBAAAP,cAAAA,CAAC,oBAAiB,WAAA,EAA0B,CAAA;AAAA,QAC3C,6BACCA,cAAAA,CAAC,mBAAA,EAAA,EAAoB,UAAA,EACnB,0BAAAA,cAAAA,CAACQ,cAAA,EAAA,EAAS,IAAA,EAAY,QAAA,EAAoB,GAC5C,CAAA,mBAEAR,cAAAA,CAACQ,cAAA,EAAA,EAAS,MAAY,QAAA,EAAoB;AAAA;AAAA;AAAA,GAE9C,EACF,CAAA;AAEJ;AAIA,SAAS,mBAAA,CAAoB;AAAA,EAC3B,UAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,MAAM,aAAA,GAAgBC,oBAAc,gBAAgB,CAAA;AACpD,EAAA,MAAM,SAAA,GAAYA,oBAAc,YAAY,CAAA;AAG5C,EAAA,MAAM,cAAc,aAAA,KAAkB,IAAA;AACtC,EAAA,MAAM,WAAW,CAAC,CAAC,SAAA,IAAa,SAAA,KAAc,MAAM,SAAA,KAAc,KAAA;AAElE,EAAA,IAAI,WAAA,IAAe,WAAW,aAAA,EAAe;AAC3C,IAAA,uBACET,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,+FAAA;AAAA,QACV,IAAA,EAAK,OAAA;AAAA,QAEL,0BAAAA,cAAAA,CAAC,GAAA,EAAA,EAAE,WAAU,wDAAA,EACV,QAAA,EAAA,UAAA,CAAW,kBAAkB,yBAAA,EAChC;AAAA;AAAA,KACF;AAAA,EAEJ;AAEA,EAAA,uBACEM,eAAA,CAAAI,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,WAAA,IAAe,UAAA,CAAW,kCACzBV,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,oGAAA;AAAA,QACV,IAAA,EAAK,OAAA;AAAA,QAEL,0BAAAA,cAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,wDAAA,EACV,qBAAW,cAAA,EACd;AAAA;AAAA,KACF;AAAA,IAED,QAAA,IAAY,UAAA,CAAW,YAAA,oBACtBA,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,4FAAA;AAAA,QACV,IAAA,EAAK,OAAA;AAAA,QAEL,0BAAAA,cAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,oDAAA,EACV,qBAAW,YAAA,EACd;AAAA;AAAA,KACF;AAAA,IAED;AAAA,GAAA,EACH,CAAA;AAEJ;AAGA,SAAS,gBAAA,CAAiB;AAAA,EACxB;AACF,CAAA,EAEG;AACD,EAAA,MAAM,aAAaW,mBAAA,EAAc;AAEjC,EAAAC,iBAAA,CAAU,MAAM;AACd,IAAA,IAAI,YAAY,WAAA,EAAa;AAC3B,MAAA,WAAA,CAAY,OAAA,GAAU,MAAM,UAAA,CAAW,WAAA,EAAY;AAAA,IACrD;AACA,IAAA,OAAO,MAAM;AACX,MAAA,WAAA,CAAY,OAAA,GAAU,IAAA;AAAA,IACxB,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,UAAA,EAAY,WAAW,CAAC,CAAA;AAE5B,EAAA,OAAO,IAAA;AACT","file":"chunk-H7C3AGA2.cjs","sourcesContent":["/**\n * json-render catalog for the widget.\n * Uses @json-render/shadcn standard component definitions.\n */\n\nimport { defineCatalog } from \"@json-render/core\";\nimport { schema } from \"@json-render/react/schema\";\nimport { shadcnComponentDefinitions } from \"@json-render/shadcn/catalog\";\nimport { z } from \"zod\";\n\n// ── Chart prop schemas ──────────────────────────────────────\nconst seriesSchema = z.object({\n dataKey: z.string(),\n label: z.string(),\n color: z.string().nullable().optional(),\n type: z.enum([\"line\", \"bar\", \"area\"]).nullable().optional(),\n});\n\nconst chartConfigSchema = z.object({\n xAxis: z.string().nullable().optional(),\n series: z.array(seriesSchema),\n showGrid: z.boolean().nullable().optional(),\n showLegend: z.boolean().nullable().optional(),\n stacked: z.boolean().nullable().optional(),\n valueFormatter: z\n .enum([\"currency\", \"percent\", \"number\", \"compact\"])\n .nullable()\n .optional(),\n});\n\nconst chartBaseProps = {\n title: z.string().nullable().optional(),\n description: z.string().nullable().optional(),\n data: z.array(z.record(z.string(), z.unknown())),\n config: chartConfigSchema,\n height: z.number().nullable().optional(),\n};\n\nexport const catalog = defineCatalog(schema, {\n components: {\n // ── Layout ──────────────────────────────────────────────\n Card: shadcnComponentDefinitions.Card,\n Stack: shadcnComponentDefinitions.Stack,\n Grid: shadcnComponentDefinitions.Grid,\n Separator: shadcnComponentDefinitions.Separator,\n Tabs: shadcnComponentDefinitions.Tabs,\n Accordion: shadcnComponentDefinitions.Accordion,\n Collapsible: shadcnComponentDefinitions.Collapsible,\n Dialog: shadcnComponentDefinitions.Dialog,\n Drawer: shadcnComponentDefinitions.Drawer,\n Carousel: shadcnComponentDefinitions.Carousel,\n\n // ── Typography ──────────────────────────────────────────\n Heading: shadcnComponentDefinitions.Heading,\n Text: shadcnComponentDefinitions.Text,\n Badge: shadcnComponentDefinitions.Badge,\n Link: shadcnComponentDefinitions.Link,\n Alert: shadcnComponentDefinitions.Alert,\n\n // ── Media ───────────────────────────────────────────────\n Image: shadcnComponentDefinitions.Image,\n Avatar: shadcnComponentDefinitions.Avatar,\n\n // ── Data ────────────────────────────────────────────────\n Table: shadcnComponentDefinitions.Table,\n\n // ── Charts & Visualization ────────────────────────────\n LineChart: {\n props: z.object(chartBaseProps),\n description: \"Line chart for trends over time. Provide data array + config.xAxis + config.series.\",\n example: {\n title: \"Monthly Sales\",\n data: [{ month: \"Jan\", sales: 100 }, { month: \"Feb\", sales: 150 }],\n config: { xAxis: \"month\", series: [{ dataKey: \"sales\", label: \"Sales\" }] },\n },\n },\n BarChart: {\n props: z.object(chartBaseProps),\n description: \"Bar chart for comparing categories. Provide data array + config.xAxis + config.series.\",\n example: {\n title: \"Product Comparison\",\n data: [{ product: \"A\", revenue: 500 }, { product: \"B\", revenue: 300 }],\n config: { xAxis: \"product\", series: [{ dataKey: \"revenue\", label: \"Revenue\" }] },\n },\n },\n PieChart: {\n props: z.object({\n title: z.string().nullable().optional(),\n description: z.string().nullable().optional(),\n data: z.array(z.record(z.string(), z.unknown())),\n dataKey: z.string(),\n nameKey: z.string().nullable().optional(),\n height: z.number().nullable().optional(),\n }),\n description: \"Pie chart for proportional breakdown. Each data item needs a name and a value field.\",\n example: {\n title: \"Market Share\",\n data: [{ name: \"Product A\", value: 60 }, { name: \"Product B\", value: 40 }],\n dataKey: \"value\",\n nameKey: \"name\",\n },\n },\n AreaChart: {\n props: z.object(chartBaseProps),\n description: \"Area chart for cumulative values over time with gradient fills.\",\n example: {\n title: \"Traffic Volume\",\n data: [{ day: \"Mon\", visits: 200 }, { day: \"Tue\", visits: 350 }],\n config: { xAxis: \"day\", series: [{ dataKey: \"visits\", label: \"Visits\" }] },\n },\n },\n MetricCards: {\n props: z.object({\n title: z.string().nullable().optional(),\n metrics: z.array(\n z.object({\n label: z.string(),\n value: z.string(),\n unit: z.string().nullable().optional(),\n trend: z.string().nullable().optional(),\n trendDirection: z.enum([\"up\", \"down\", \"neutral\"]).nullable().optional(),\n description: z.string().nullable().optional(),\n }),\n ),\n }),\n description: \"KPI metric cards grid with big numbers and optional trend indicators.\",\n example: {\n metrics: [\n { label: \"Revenue\", value: \"$1.2M\", trend: \"+12%\", trendDirection: \"up\" },\n { label: \"Users\", value: \"45K\", trend: \"-3%\", trendDirection: \"down\" },\n ],\n },\n },\n ComparisonTable: {\n props: z.object({\n title: z.string().nullable().optional(),\n items: z.array(\n z.object({\n name: z.string(),\n highlight: z.boolean().nullable().optional(),\n features: z.record(z.string(), z.union([z.string(), z.boolean(), z.number()])),\n }),\n ),\n fields: z.array(\n z.object({\n key: z.string(),\n label: z.string(),\n type: z.enum([\"text\", \"boolean\", \"rating\"]).nullable().optional(),\n }),\n ),\n }),\n description: \"Side-by-side comparison table. Items are columns, fields are rows.\",\n example: {\n title: \"Plan Comparison\",\n items: [\n { name: \"Basic\", features: { price: \"$9/mo\", storage: \"10GB\", support: true } },\n { name: \"Pro\", highlight: true, features: { price: \"$29/mo\", storage: \"100GB\", support: true } },\n ],\n fields: [\n { key: \"price\", label: \"Price\", type: \"text\" },\n { key: \"storage\", label: \"Storage\", type: \"text\" },\n { key: \"support\", label: \"Support\", type: \"boolean\" },\n ],\n },\n },\n Timeline: {\n props: z.object({\n title: z.string().nullable().optional(),\n events: z.array(\n z.object({\n date: z.string().nullable().optional(),\n title: z.string(),\n description: z.string().nullable().optional(),\n status: z.enum([\"completed\", \"current\", \"upcoming\"]).nullable().optional(),\n }),\n ),\n }),\n description: \"Vertical timeline for chronological events or process steps.\",\n example: {\n events: [\n { title: \"Order Placed\", date: \"Jan 1\", status: \"completed\" },\n { title: \"Shipped\", date: \"Jan 3\", status: \"current\" },\n { title: \"Delivered\", status: \"upcoming\" },\n ],\n },\n },\n ProgressBars: {\n props: z.object({\n title: z.string().nullable().optional(),\n goals: z.array(\n z.object({\n label: z.string(),\n current: z.number(),\n target: z.number(),\n unit: z.string().nullable().optional(),\n }),\n ),\n }),\n description: \"Progress bars for goal tracking with current/target values.\",\n example: {\n goals: [\n { label: \"Revenue\", current: 75000, target: 100000, unit: \"$\" },\n { label: \"Users\", current: 800, target: 1000 },\n ],\n },\n },\n\n // ── Form ────────────────────────────────────────────────\n Input: shadcnComponentDefinitions.Input,\n Textarea: shadcnComponentDefinitions.Textarea,\n Select: shadcnComponentDefinitions.Select,\n Checkbox: shadcnComponentDefinitions.Checkbox,\n Radio: shadcnComponentDefinitions.Radio,\n Switch: shadcnComponentDefinitions.Switch,\n Slider: shadcnComponentDefinitions.Slider,\n Button: shadcnComponentDefinitions.Button,\n ButtonGroup: shadcnComponentDefinitions.ButtonGroup,\n Toggle: shadcnComponentDefinitions.Toggle,\n ToggleGroup: shadcnComponentDefinitions.ToggleGroup,\n DropdownMenu: shadcnComponentDefinitions.DropdownMenu,\n\n // ── Feedback ────────────────────────────────────────────\n Progress: shadcnComponentDefinitions.Progress,\n Spinner: shadcnComponentDefinitions.Spinner,\n Skeleton: shadcnComponentDefinitions.Skeleton,\n Tooltip: shadcnComponentDefinitions.Tooltip,\n Popover: shadcnComponentDefinitions.Popover,\n\n // ── Navigation ──────────────────────────────────────────\n Pagination: shadcnComponentDefinitions.Pagination,\n },\n\n actions: {\n navigate_url: {\n params: z.object({\n url: z.string(),\n target: z.enum([\"_self\", \"_blank\"]).default(\"_blank\"),\n }),\n description: \"Open a URL in a new tab or the current tab.\",\n },\n send_message: {\n params: z.object({\n message: z.string(),\n }),\n description: \"Send a follow-up chat message on behalf of the user.\",\n },\n call_api: {\n params: z.object({\n endpoint: z.string(),\n method: z.enum([\"GET\", \"POST\", \"PUT\", \"DELETE\"]).default(\"POST\"),\n body: z.record(z.string(), z.unknown()).optional(),\n }),\n description: \"Make a proxied API call through the platform backend.\",\n },\n },\n});\n\nexport type PlatformCatalog = typeof catalog;\nexport type PlatformSpec = typeof catalog._specType;\n","\"use client\";\n\n/**\n * json-render registry for the widget.\n * Uses @json-render/shadcn standard component implementations.\n * Includes custom chart & visualization components.\n */\n\nimport { defineRegistry } from \"@json-render/react\";\nimport { shadcnComponents } from \"@json-render/shadcn\";\nimport { VisualizationRenderer } from \"../tools/VisualizationRenderer\";\nimport type { VisualizationSpec } from \"../tools/VisualizationRenderer\";\nimport { catalog } from \"./catalog\";\n\nexport const { registry, handlers: createActionHandlers } = defineRegistry(\n catalog,\n {\n components: {\n // ── Layout ──────────────────────────────────────────────\n Card: (p) => <div className=\"w-full [&>div]:border-0 [&>div]:shadow-none\">{shadcnComponents.Card(p)}</div>,\n Stack: shadcnComponents.Stack,\n Grid: shadcnComponents.Grid,\n Separator: shadcnComponents.Separator,\n Tabs: shadcnComponents.Tabs,\n Accordion: shadcnComponents.Accordion,\n Collapsible: shadcnComponents.Collapsible,\n Dialog: shadcnComponents.Dialog,\n Drawer: shadcnComponents.Drawer,\n Carousel: shadcnComponents.Carousel,\n\n // ── Typography ──────────────────────────────────────────\n Heading: shadcnComponents.Heading,\n Text: shadcnComponents.Text,\n Badge: shadcnComponents.Badge,\n Link: shadcnComponents.Link,\n Alert: shadcnComponents.Alert,\n\n // ── Media ───────────────────────────────────────────────\n Image: shadcnComponents.Image,\n Avatar: shadcnComponents.Avatar,\n\n // ── Data ────────────────────────────────────────────────\n Table: shadcnComponents.Table,\n\n // ── Charts & Visualization ────────────────────────────\n LineChart: ({ props }) => (\n <VisualizationRenderer\n spec={{\n type: \"line_chart\",\n title: props.title ?? undefined,\n description: props.description ?? undefined,\n data: props.data as VisualizationSpec[\"data\"],\n config: {\n xAxis: props.config?.xAxis ?? undefined,\n series: props.config?.series?.map((s) => ({\n dataKey: s.dataKey,\n label: s.label,\n color: s.color ?? undefined,\n })),\n showGrid: props.config?.showGrid ?? undefined,\n showLegend: props.config?.showLegend ?? undefined,\n stacked: props.config?.stacked ?? undefined,\n valueFormatter: props.config?.valueFormatter ?? undefined,\n },\n }}\n />\n ),\n BarChart: ({ props }) => (\n <VisualizationRenderer\n spec={{\n type: \"bar_chart\",\n title: props.title ?? undefined,\n description: props.description ?? undefined,\n data: props.data as VisualizationSpec[\"data\"],\n config: {\n xAxis: props.config?.xAxis ?? undefined,\n series: props.config?.series?.map((s) => ({\n dataKey: s.dataKey,\n label: s.label,\n color: s.color ?? undefined,\n })),\n showGrid: props.config?.showGrid ?? undefined,\n showLegend: props.config?.showLegend ?? undefined,\n stacked: props.config?.stacked ?? undefined,\n valueFormatter: props.config?.valueFormatter ?? undefined,\n },\n }}\n />\n ),\n PieChart: ({ props }) => (\n <VisualizationRenderer\n spec={{\n type: \"pie_chart\",\n title: props.title ?? undefined,\n description: props.description ?? undefined,\n data: props.data as VisualizationSpec[\"data\"],\n config: {\n series: [{ dataKey: props.dataKey, label: props.dataKey }],\n },\n }}\n />\n ),\n AreaChart: ({ props }) => (\n <VisualizationRenderer\n spec={{\n type: \"area_chart\",\n title: props.title ?? undefined,\n description: props.description ?? undefined,\n data: props.data as VisualizationSpec[\"data\"],\n config: {\n xAxis: props.config?.xAxis ?? undefined,\n series: props.config?.series?.map((s) => ({\n dataKey: s.dataKey,\n label: s.label,\n color: s.color ?? undefined,\n })),\n showGrid: props.config?.showGrid ?? undefined,\n showLegend: props.config?.showLegend ?? undefined,\n stacked: props.config?.stacked ?? undefined,\n valueFormatter: props.config?.valueFormatter ?? undefined,\n },\n }}\n />\n ),\n MetricCards: ({ props }) => (\n <VisualizationRenderer\n spec={{\n type: \"metric_cards\",\n title: props.title ?? undefined,\n metrics: props.metrics?.map((m) => ({\n label: m.label,\n value: m.value,\n unit: m.unit ?? undefined,\n trend: m.trend ?? undefined,\n trendDirection: m.trendDirection ?? undefined,\n description: m.description ?? undefined,\n })),\n }}\n />\n ),\n ComparisonTable: ({ props }) => (\n <VisualizationRenderer\n spec={{\n type: \"comparison\",\n title: props.title ?? undefined,\n items: props.items?.map((item) => ({\n name: item.name,\n highlight: item.highlight ?? undefined,\n features: item.features as Record<string, string | boolean | number>,\n })),\n comparisonFields: props.fields?.map((f) => ({\n key: f.key,\n label: f.label,\n type: f.type ?? undefined,\n })),\n }}\n />\n ),\n Timeline: ({ props }) => (\n <VisualizationRenderer\n spec={{\n type: \"timeline\",\n title: props.title ?? undefined,\n events: props.events?.map((e) => ({\n date: e.date ?? undefined,\n title: e.title,\n description: e.description ?? undefined,\n status: e.status ?? undefined,\n })),\n }}\n />\n ),\n ProgressBars: ({ props }) => (\n <VisualizationRenderer\n spec={{\n type: \"progress\",\n title: props.title ?? undefined,\n goals: props.goals?.map((g) => ({\n label: g.label,\n current: g.current,\n target: g.target,\n unit: g.unit ?? undefined,\n })),\n }}\n />\n ),\n\n // ── Form (wrapped with w-full for proper layout) ────────\n Input: (p) => <div className=\"w-full\">{shadcnComponents.Input(p)}</div>,\n Textarea: (p) => <div className=\"w-full\">{shadcnComponents.Textarea(p)}</div>,\n Select: (p) => <div className=\"w-full\">{shadcnComponents.Select(p)}</div>,\n Checkbox: shadcnComponents.Checkbox,\n Radio: shadcnComponents.Radio,\n Switch: shadcnComponents.Switch,\n Slider: shadcnComponents.Slider,\n Button: shadcnComponents.Button,\n ButtonGroup: shadcnComponents.ButtonGroup,\n Toggle: shadcnComponents.Toggle,\n ToggleGroup: shadcnComponents.ToggleGroup,\n DropdownMenu: shadcnComponents.DropdownMenu,\n\n // ── Feedback ────────────────────────────────────────────\n Progress: shadcnComponents.Progress,\n Spinner: shadcnComponents.Spinner,\n Skeleton: shadcnComponents.Skeleton,\n Tooltip: shadcnComponents.Tooltip,\n Popover: shadcnComponents.Popover,\n\n // ── Navigation ──────────────────────────────────────────\n Pagination: shadcnComponents.Pagination,\n },\n\n actions: {\n navigate_url: async (params) => {\n if (params?.url) {\n window.open(params.url, params.target ?? \"_blank\");\n }\n },\n send_message: async (params) => {\n console.log(\"[json-render] send_message action:\", params?.message);\n },\n call_api: async (params) => {\n const p = params as Record<string, unknown>;\n const url = (p?.endpoint || p?.url) as string | undefined;\n if (!url) {\n console.warn(\"[json-render] call_api: missing endpoint/url\");\n return;\n }\n const method = ((params?.method as string) || \"POST\").toUpperCase();\n try {\n const res = await fetch(url, {\n method,\n headers: { \"Content-Type\": \"application/json\" },\n ...(method !== \"GET\" && params?.body\n ? { body: JSON.stringify(params.body) }\n : {}),\n });\n const data = await res.json().catch(() => null);\n console.log(\"[json-render] call_api response:\", res.status, data);\n return data;\n } catch (err) {\n console.error(\"[json-render] call_api error:\", err);\n }\n },\n },\n },\n);\n","\"use client\";\n\n/**\n * JsonRenderResult — wrapper component for rendering json-render specs\n * inside tool results (both frontend dashboard and widget).\n */\n\nimport type { Spec } from \"@json-render/core\";\nimport {\n JSONUIProvider,\n Renderer,\n useStateValue,\n useValidation,\n} from \"@json-render/react\";\nimport { useMemo, useRef, useCallback, useEffect } from \"react\";\nimport { registry } from \"./registry\";\n\n/** Normalize a spec to the { root: string, elements: {...} } format. */\nfunction normalizeSpec(raw: Record<string, unknown>): Spec {\n if (typeof raw.root === \"string\" && raw.elements) {\n return raw as unknown as Spec;\n }\n const elements: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(raw)) {\n if (\n value &&\n typeof value === \"object\" &&\n \"type\" in (value as Record<string, unknown>)\n ) {\n elements[key] = value;\n }\n }\n return { root: \"root\", elements } as unknown as Spec;\n}\n\n/** Extract the `state` field from a spec and flatten into state paths. */\nfunction extractSpecState(\n raw: Record<string, unknown>,\n): Record<string, unknown> {\n const state = raw.state as Record<string, unknown> | undefined;\n if (!state || typeof state !== \"object\") return {};\n\n const result: Record<string, unknown> = {};\n function walk(obj: Record<string, unknown>, prefix: string) {\n for (const [key, value] of Object.entries(obj)) {\n const path = `${prefix}/${key}`;\n result[path] = value;\n if (value && typeof value === \"object\" && !Array.isArray(value)) {\n walk(value as Record<string, unknown>, path);\n }\n }\n }\n walk(state, \"\");\n return result;\n}\n\n/** Deeply resolve $state expressions in a value tree. */\nfunction deepResolve(\n value: unknown,\n stateMap: Record<string, unknown>,\n): unknown {\n if (value === null || value === undefined) return value;\n if (typeof value === \"object\" && !Array.isArray(value)) {\n const obj = value as Record<string, unknown>;\n if (Object.keys(obj).length === 1 && typeof obj.$state === \"string\") {\n return stateMap[obj.$state];\n }\n const resolved: Record<string, unknown> = {};\n for (const [key, val] of Object.entries(obj)) {\n resolved[key] = deepResolve(val, stateMap);\n }\n return resolved;\n }\n if (Array.isArray(value)) {\n return value.map((item) => deepResolve(item, stateMap));\n }\n return value;\n}\n\ninterface FormConfig {\n successMessage?: string;\n errorMessage?: string;\n hideFormAfter?: boolean;\n}\n\ninterface JsonRenderResultProps {\n spec: Spec;\n data: unknown;\n onSendMessage?: (message: string) => void;\n className?: string;\n conversationMessages?: Array<{ role: string; content: string }>;\n /** API key for authenticated requests (form submissions etc.) */\n apiKey?: string;\n /**\n * Same-origin guard for apiKey injection. `call_api` actions only\n * attach the Bearer token when the target URL starts with this\n * endpoint — prevents the key leaking to third-party URLs referenced\n * in a tool spec (e.g. user-generated specs in data_store tools).\n */\n apiEndpoint?: string;\n}\n\nexport function JsonRenderResult({\n spec: rawSpec,\n data,\n onSendMessage,\n className,\n conversationMessages,\n apiKey,\n apiEndpoint,\n}: JsonRenderResultProps) {\n const rawSpecObj = rawSpec as unknown as Record<string, unknown>;\n const spec = useMemo(() => normalizeSpec(rawSpecObj), [rawSpecObj]);\n\n // Extract _formConfig from spec (set by the Form Settings panel)\n const formConfig = useMemo(\n () => (rawSpecObj._formConfig as FormConfig) || null,\n [rawSpecObj],\n );\n\n const initialState = useMemo(() => {\n const specState = extractSpecState(rawSpecObj);\n return {\n \"/data\": data,\n ...(conversationMessages\n ? { \"/conversationMessages\": conversationMessages }\n : {}),\n ...specState,\n };\n }, [data, rawSpecObj, conversationMessages]);\n\n // Ref for state tracking (updated via onStateChange)\n const stateRef = useRef<Record<string, unknown>>(initialState);\n const validateRef = useRef<(() => boolean) | null>(null);\n\n const handleStateChange = useCallback(\n (changes: Array<{ path: string; value: unknown }>) => {\n for (const { path, value } of changes) {\n stateRef.current[path] = value;\n }\n },\n [],\n );\n\n const handlers = useMemo(\n () => ({\n navigate_url: async (params: Record<string, unknown>) => {\n if (params?.url) {\n window.open(\n params.url as string,\n (params.target as string) ?? \"_blank\",\n );\n }\n },\n\n send_message: async (params: Record<string, unknown>) => {\n if (\n onSendMessage &&\n params?.message &&\n typeof params.message === \"string\"\n ) {\n onSendMessage(params.message);\n }\n },\n\n call_api: async (params: Record<string, unknown>) => {\n if (validateRef.current) {\n const isValid = validateRef.current();\n if (!isValid) {\n throw new Error(\"Validation failed\");\n }\n }\n\n const resolved = deepResolve(\n params,\n stateRef.current,\n ) as Record<string, unknown>;\n\n const url = (resolved?.endpoint || resolved?.url) as\n | string\n | undefined;\n if (!url) {\n throw new Error(\"Missing endpoint/url in call_api params\");\n }\n const method = (\n (resolved?.method as string) || \"POST\"\n ).toUpperCase();\n\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n };\n // Merge user-supplied headers (from spec's params.headers).\n if (resolved?.headers && typeof resolved.headers === \"object\") {\n for (const [k, v] of Object.entries(\n resolved.headers as Record<string, unknown>,\n )) {\n if (typeof v === \"string\") headers[k] = v;\n }\n }\n // Auto-inject Bearer apiKey, but only for same-origin calls against\n // the project's apiEndpoint. Keeps tokens out of third-party URLs\n // referenced in user-supplied specs. If apiEndpoint isn't configured\n // (standalone previews), fall back to attaching — matches previous\n // behaviour so current flows don't break.\n if (apiKey && !headers.Authorization) {\n const sameOrigin =\n !apiEndpoint || url.startsWith(apiEndpoint);\n if (sameOrigin) {\n headers.Authorization = `Bearer ${apiKey}`;\n }\n }\n\n const res = await fetch(url, {\n method,\n headers,\n credentials: \"include\",\n ...(method !== \"GET\" && resolved?.body\n ? { body: JSON.stringify(resolved.body) }\n : {}),\n });\n\n if (!res.ok) {\n const errBody = await res.text().catch(() => \"\");\n throw new Error(\n errBody || `Request failed with status ${res.status}`,\n );\n }\n\n const responseData = await res.json().catch(() => null);\n return responseData;\n },\n }),\n [onSendMessage, apiKey, apiEndpoint],\n );\n\n return (\n <div className={className}>\n <JSONUIProvider\n registry={registry}\n initialState={initialState}\n handlers={handlers}\n onStateChange={handleStateChange}\n >\n <ValidationBridge validateRef={validateRef} />\n {formConfig ? (\n <FormFeedbackWrapper formConfig={formConfig}>\n <Renderer spec={spec} registry={registry} />\n </FormFeedbackWrapper>\n ) : (\n <Renderer spec={spec} registry={registry} />\n )}\n </JSONUIProvider>\n </div>\n );\n}\n\n/** Reads /formSubmitted and /formError from state and shows feedback UI.\n * Optionally hides form children after success. */\nfunction FormFeedbackWrapper({\n formConfig,\n children,\n}: {\n formConfig: FormConfig;\n children: React.ReactNode;\n}) {\n const formSubmitted = useStateValue(\"/formSubmitted\");\n const formError = useStateValue(\"/formError\");\n\n // Only show feedback when state has been explicitly set to truthy values\n const isSubmitted = formSubmitted === true;\n const hasError = !!formError && formError !== \"\" && formError !== false;\n\n if (isSubmitted && formConfig.hideFormAfter) {\n return (\n <div\n className=\"rounded-lg border border-green-200 bg-green-50 p-4 dark:border-green-800 dark:bg-green-950/30\"\n role=\"alert\"\n >\n <p className=\"text-sm font-medium text-green-800 dark:text-green-200\">\n {formConfig.successMessage || \"Submitted successfully!\"}\n </p>\n </div>\n );\n }\n\n return (\n <>\n {isSubmitted && formConfig.successMessage && (\n <div\n className=\"rounded-lg border border-green-200 bg-green-50 p-3 mb-3 dark:border-green-800 dark:bg-green-950/30\"\n role=\"alert\"\n >\n <p className=\"text-sm font-medium text-green-800 dark:text-green-200\">\n {formConfig.successMessage}\n </p>\n </div>\n )}\n {hasError && formConfig.errorMessage && (\n <div\n className=\"rounded-lg border border-red-200 bg-red-50 p-3 mb-3 dark:border-red-800 dark:bg-red-950/30\"\n role=\"alert\"\n >\n <p className=\"text-sm font-medium text-red-800 dark:text-red-200\">\n {formConfig.errorMessage}\n </p>\n </div>\n )}\n {children}\n </>\n );\n}\n\n/** Bridges the validation context to the parent's ref. */\nfunction ValidationBridge({\n validateRef,\n}: {\n validateRef: React.RefObject<(() => boolean) | null>;\n}) {\n const validation = useValidation();\n\n useEffect(() => {\n if (validation?.validateAll) {\n validateRef.current = () => validation.validateAll();\n }\n return () => {\n validateRef.current = null;\n };\n }, [validation, validateRef]);\n\n return null;\n}\n"]}
|
|
@@ -89,11 +89,31 @@ function useAigentycChat(options) {
|
|
|
89
89
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
90
90
|
[]
|
|
91
91
|
);
|
|
92
|
+
const pageRef = useRef({
|
|
93
|
+
pageUrl: options.pageUrl,
|
|
94
|
+
pageTitle: options.pageTitle,
|
|
95
|
+
pageContext: options.pageContext
|
|
96
|
+
});
|
|
97
|
+
pageRef.current = {
|
|
98
|
+
pageUrl: options.pageUrl,
|
|
99
|
+
pageTitle: options.pageTitle,
|
|
100
|
+
pageContext: options.pageContext
|
|
101
|
+
};
|
|
92
102
|
const transport = useMemo(
|
|
93
103
|
() => new DefaultChatTransport({
|
|
94
104
|
api: `${apiEndpoint || ""}/api/kb/chat`,
|
|
95
105
|
headers: apiKey ? { Authorization: `Bearer ${apiKey}` } : void 0,
|
|
96
|
-
body
|
|
106
|
+
// A function body is resolved per request by the AI SDK transport.
|
|
107
|
+
body: () => {
|
|
108
|
+
const { pageUrl, pageTitle, pageContext } = pageRef.current;
|
|
109
|
+
return {
|
|
110
|
+
projectId: safeProjectId,
|
|
111
|
+
sessionId,
|
|
112
|
+
...pageUrl ? { pageUrl } : {},
|
|
113
|
+
...pageTitle ? { pageTitle } : {},
|
|
114
|
+
...pageContext !== void 0 ? { pageContext } : {}
|
|
115
|
+
};
|
|
116
|
+
}
|
|
97
117
|
}),
|
|
98
118
|
[apiEndpoint, apiKey, safeProjectId, sessionId]
|
|
99
119
|
);
|
|
@@ -262,5 +282,5 @@ function useAigentycChat(options) {
|
|
|
262
282
|
}
|
|
263
283
|
|
|
264
284
|
export { useAigentycChat };
|
|
265
|
-
//# sourceMappingURL=chunk-
|
|
266
|
-
//# sourceMappingURL=chunk-
|
|
285
|
+
//# sourceMappingURL=chunk-LSKOJ7SH.js.map
|
|
286
|
+
//# sourceMappingURL=chunk-LSKOJ7SH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/use-aigentyc-chat.ts"],"names":["transport"],"mappings":"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","file":"chunk-LSKOJ7SH.js","sourcesContent":["\"use client\";\n\nimport {\n useState,\n useCallback,\n useRef,\n useMemo,\n useEffect,\n type RefObject,\n} from \"react\";\nimport type {\n ChatProviderProps,\n ChatMessage,\n ChatEventCallbacks,\n LiveChatState,\n LiveChatMessage,\n} from \"../core/types\";\n\ntype ChatStatus = \"idle\" | \"streaming\" | \"error\";\n\ninterface ActiveTool {\n toolName: string;\n state: \"partial-call\" | \"call\" | \"output-available\";\n args: Record<string, unknown>;\n result?: unknown;\n renderMode: string;\n}\n// NOTE: @ai-sdk/react and ai are optional peer dependencies.\nimport { useChat } from \"@ai-sdk/react\";\nimport { DefaultChatTransport } from \"ai\";\nimport { LiveChatTransport } from \"../core/live-chat-transport\";\n\nconst SESSION_KEY_PREFIX = \"aigentyc-session-\";\nconst MESSAGE_KEY_PREFIX = \"aigentyc-messages-\";\n\nfunction getOrCreateSessionId(projectId: string): string {\n if (typeof window === \"undefined\") return crypto.randomUUID();\n const key = SESSION_KEY_PREFIX + projectId;\n try {\n const stored = sessionStorage.getItem(key);\n if (stored) return stored;\n const id = crypto.randomUUID();\n sessionStorage.setItem(key, id);\n return id;\n } catch {\n return crypto.randomUUID();\n }\n}\n\nfunction loadPersistedMessages(projectId: string): ChatMessage[] {\n if (typeof window === \"undefined\") return [];\n try {\n const raw = localStorage.getItem(MESSAGE_KEY_PREFIX + projectId);\n return raw ? JSON.parse(raw) : [];\n } catch {\n return [];\n }\n}\n\nfunction persistMessages(projectId: string, messages: unknown[]): void {\n if (typeof window === \"undefined\") return;\n try {\n localStorage.setItem(MESSAGE_KEY_PREFIX + projectId, JSON.stringify(messages));\n } catch {\n // Ignore.\n }\n}\n\nfunction clearPersistedMessages(projectId: string): void {\n if (typeof window === \"undefined\") return;\n try {\n localStorage.removeItem(MESSAGE_KEY_PREFIX + projectId);\n } catch {\n // Ignore.\n }\n}\n\n/** Options for the headless `useAigentycChat` hook (same shape as ChatProviderProps). */\nexport type UseAigentycChatOptions = Omit<ChatProviderProps, \"children\" | \"slots\" | \"theme\">;\n\n/** Live chat sub-object returned by the hook. */\nexport interface LiveChatReturn {\n state: LiveChatState;\n messages: LiveChatMessage[];\n operatorName: string;\n queuePosition: number;\n showIdentityForm: boolean;\n initiate: (visitorName?: string, visitorEmail?: string) => Promise<void>;\n send: (content: string) => void;\n end: () => void;\n cancel: () => void;\n submitRating: (rating: \"positive\" | \"negative\", comment?: string) => void;\n returnToAI: () => void;\n requestManualHandoff: () => void;\n setShowIdentityForm: (show: boolean) => void;\n}\n\n/** Return value of `useAigentycChat`. */\nexport interface UseAigentycChatReturn {\n messages: ChatMessage[];\n status: ChatStatus;\n error: Error | undefined;\n sessionId: string;\n sendMessage: (content: string) => void;\n stopGeneration: () => void;\n newConversation: () => void;\n clearMessages: () => void;\n activeTools: ActiveTool[];\n liveChat: LiveChatReturn;\n chatRef: RefObject<HTMLDivElement | null>;\n}\n\nconst CALLBACK_KEYS: (keyof ChatEventCallbacks)[] = [\n \"onReady\",\n \"onSessionStart\",\n \"onSessionRestore\",\n \"onMessageSent\",\n \"onMessageReceived\",\n \"onStreamStart\",\n \"onStreamEnd\",\n \"onToolCall\",\n \"onToolResult\",\n \"onToolAction\",\n \"onLiveChatRequested\",\n \"onLiveChatConnected\",\n \"onLiveChatEnded\",\n \"onError\",\n \"onNewConversation\",\n \"onStopGeneration\",\n \"onClearMessages\",\n \"onInteraction\",\n];\n\nfunction pickCallbacks(opts: Record<string, unknown>): ChatEventCallbacks {\n const out: Record<string, unknown> = {};\n for (const key of CALLBACK_KEYS) {\n if (opts[key] !== undefined) out[key] = opts[key];\n }\n return out as ChatEventCallbacks;\n}\n\n/**\n * Standalone headless hook for Aigentyc Chat. No provider needed.\n *\n * Creates its own transport, session, and persistence internally. Use this\n * when you want full control over the UI but still want all SDK features\n * (chat, tools, live chat, persistence).\n */\nexport function useAigentycChat(options: UseAigentycChatOptions): UseAigentycChatReturn {\n const {\n projectId,\n apiEndpoint,\n apiKey,\n enableLiveChat = false,\n chatServiceUrl,\n persistMessages: shouldPersist = true,\n } = options;\n\n const callbacks = pickCallbacks(options as unknown as Record<string, unknown>);\n const callbacksRef = useRef(callbacks);\n callbacksRef.current = callbacks;\n\n const safeProjectId = projectId || \"default\";\n const [sessionId, setSessionId] = useState(() => getOrCreateSessionId(safeProjectId));\n const chatRef = useRef<HTMLDivElement | null>(null);\n\n const initialMessages = useMemo(\n () => (shouldPersist ? loadPersistedMessages(safeProjectId) : []),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n // Read through a ref so a host that navigates (SPA route change) updates the\n // context it sends without rebuilding the transport — see ChatContext.tsx.\n const pageRef = useRef({\n pageUrl: options.pageUrl,\n pageTitle: options.pageTitle,\n pageContext: options.pageContext,\n });\n pageRef.current = {\n pageUrl: options.pageUrl,\n pageTitle: options.pageTitle,\n pageContext: options.pageContext,\n };\n\n const transport = useMemo(\n () =>\n new DefaultChatTransport({\n api: `${apiEndpoint || \"\"}/api/kb/chat`,\n headers: apiKey ? { Authorization: `Bearer ${apiKey}` } : undefined,\n // A function body is resolved per request by the AI SDK transport.\n body: () => {\n const { pageUrl, pageTitle, pageContext } = pageRef.current;\n return {\n projectId: safeProjectId,\n sessionId,\n ...(pageUrl ? { pageUrl } : {}),\n ...(pageTitle ? { pageTitle } : {}),\n ...(pageContext !== undefined ? { pageContext } : {}),\n };\n },\n }),\n [apiEndpoint, apiKey, safeProjectId, sessionId]\n );\n\n const {\n messages,\n sendMessage: sdkSendMessage,\n status: sdkStatus,\n error,\n stop,\n setMessages,\n } = useChat({\n id: sessionId,\n messages: initialMessages as never,\n transport,\n onFinish: (message) => {\n callbacksRef.current?.onMessageReceived?.(message as unknown as ChatMessage);\n },\n onError: (err) => {\n callbacksRef.current?.onError?.(err);\n },\n });\n\n const status: ChatStatus = error\n ? \"error\"\n : sdkStatus === \"streaming\" || sdkStatus === \"submitted\"\n ? \"streaming\"\n : \"idle\";\n\n // Persist messages\n useEffect(() => {\n if (shouldPersist) persistMessages(safeProjectId, messages);\n }, [messages, safeProjectId, shouldPersist]);\n\n // Derive active tools from the latest assistant message\n const activeTools = useMemo<ActiveTool[]>(() => {\n if (messages.length === 0) return [];\n const last = messages[messages.length - 1] as { role: string; parts?: unknown[] };\n if (last.role !== \"assistant\" || !Array.isArray(last.parts)) return [];\n return (last.parts as Array<Record<string, unknown>>)\n .filter((p) => typeof p.type === \"string\" && (p.type as string).startsWith(\"tool-\"))\n .map((p) => ({\n toolName: (p.toolName as string) || (p.type as string).replace(\"tool-\", \"\"),\n state: (p.state as ActiveTool[\"state\"]) || \"output-available\",\n args: (p.args as Record<string, unknown>) || {},\n result: p.result,\n renderMode: (p.renderMode as string) || \"inline\",\n }));\n }, [messages]);\n\n const sendMessage = useCallback(\n (content: string) => {\n if (!content.trim()) return;\n callbacksRef.current?.onMessageSent?.({\n id: crypto.randomUUID(),\n role: \"user\",\n content,\n } as ChatMessage);\n sdkSendMessage({ text: content });\n },\n [sdkSendMessage]\n );\n\n const stopGeneration = useCallback(() => {\n stop();\n callbacksRef.current?.onStopGeneration?.();\n }, [stop]);\n\n const newConversation = useCallback(() => {\n setMessages([]);\n clearPersistedMessages(safeProjectId);\n if (typeof window !== \"undefined\") {\n try {\n sessionStorage.removeItem(SESSION_KEY_PREFIX + safeProjectId);\n } catch {\n // Ignore.\n }\n }\n const nextSessionId = getOrCreateSessionId(safeProjectId);\n setSessionId(nextSessionId);\n callbacksRef.current?.onNewConversation?.(nextSessionId);\n }, [safeProjectId, setMessages]);\n\n const clearMessages = useCallback(() => {\n setMessages([]);\n clearPersistedMessages(safeProjectId);\n callbacksRef.current?.onClearMessages?.();\n }, [safeProjectId, setMessages]);\n\n // --- Live Chat (self-contained) ---\n const [lcState, setLcState] = useState<LiveChatState>(\"ai\");\n const [lcMessages, setLcMessages] = useState<LiveChatMessage[]>([]);\n const [lcOperator, setLcOperator] = useState(\"\");\n const [lcQueue, setLcQueue] = useState(0);\n const [lcShowIdentity, setLcShowIdentity] = useState(false);\n const lcTransportRef = useRef<LiveChatTransport | null>(null);\n\n const lcResetState = useCallback(() => {\n lcTransportRef.current?.disconnect?.();\n lcTransportRef.current = null;\n setLcState(\"ai\");\n setLcMessages([]);\n setLcOperator(\"\");\n setLcQueue(0);\n setLcShowIdentity(false);\n }, []);\n\n const lcInitiate = useCallback(\n async (visitorName?: string, visitorEmail?: string) => {\n if (!enableLiveChat || lcTransportRef.current) return;\n const url = chatServiceUrl ?? apiEndpoint;\n if (!url || !apiKey) return;\n try {\n const transport = new LiveChatTransport({\n chatServiceUrl: url,\n apiKey,\n projectId: safeProjectId,\n visitorSessionId: sessionId,\n });\n transport.on(\"state-change\", (s: LiveChatState) => setLcState(s));\n transport.on(\"queued\", (data: { position: number }) => setLcQueue(data.position));\n transport.on(\"queue-update\", (data: { position: number }) => setLcQueue(data.position));\n transport.on(\"accepted\", (data: { operatorName: string }) => setLcOperator(data.operatorName));\n transport.on(\"message\", (data: LiveChatMessage) =>\n setLcMessages((prev) => [...prev, data])\n );\n transport.on(\"ended\", () => setLcState(\"ended\"));\n lcTransportRef.current = transport;\n await transport.connect();\n await transport.requestHandoff({\n visitorName,\n visitorEmail,\n aiChatHistory: [],\n });\n callbacksRef.current?.onLiveChatRequested?.();\n } catch (err) {\n callbacksRef.current?.onError?.(err as Error);\n setLcState(\"ai\");\n }\n },\n [enableLiveChat, chatServiceUrl, apiEndpoint, apiKey, safeProjectId, sessionId]\n );\n\n const liveChat = useMemo<LiveChatReturn>(\n () => ({\n state: lcState,\n messages: lcMessages,\n operatorName: lcOperator,\n queuePosition: lcQueue,\n showIdentityForm: lcShowIdentity,\n initiate: lcInitiate,\n send: (content: string) => {\n if (!content.trim()) return;\n lcTransportRef.current?.sendMessage?.(content);\n setLcMessages((prev) => [\n ...prev,\n {\n id: Date.now(),\n content,\n senderType: \"visitor\",\n timestamp: new Date().toISOString(),\n },\n ]);\n },\n end: () => lcTransportRef.current?.endChat?.(),\n cancel: () => lcResetState(),\n submitRating: (rating, comment) =>\n lcTransportRef.current?.submitRating?.(rating, comment),\n returnToAI: () => lcResetState(),\n requestManualHandoff: () => setLcShowIdentity(true),\n setShowIdentityForm: setLcShowIdentity,\n }),\n [lcState, lcMessages, lcOperator, lcQueue, lcShowIdentity, lcInitiate, lcResetState]\n );\n\n return {\n messages: messages as unknown as ChatMessage[],\n status,\n error: error as Error | undefined,\n sessionId,\n sendMessage,\n stopGeneration,\n newConversation,\n clearMessages,\n activeTools,\n liveChat,\n chatRef,\n };\n}\n"]}
|
|
@@ -5,8 +5,8 @@ var chunkNYQSM3EB_cjs = require('./chunk-NYQSM3EB.cjs');
|
|
|
5
5
|
var chunkP3RPAI4F_cjs = require('./chunk-P3RPAI4F.cjs');
|
|
6
6
|
var chunk4WOBNRRB_cjs = require('./chunk-4WOBNRRB.cjs');
|
|
7
7
|
var chunk3MP2EGEJ_cjs = require('./chunk-3MP2EGEJ.cjs');
|
|
8
|
-
var
|
|
9
|
-
var
|
|
8
|
+
var chunkOEEDYJTV_cjs = require('./chunk-OEEDYJTV.cjs');
|
|
9
|
+
var chunk46MUOYPR_cjs = require('./chunk-46MUOYPR.cjs');
|
|
10
10
|
var chunk525KS5HM_cjs = require('./chunk-525KS5HM.cjs');
|
|
11
11
|
var react = require('react');
|
|
12
12
|
var lucideReact = require('lucide-react');
|
|
@@ -31,7 +31,7 @@ var ChatHeader = react.memo(function ChatHeader2({
|
|
|
31
31
|
onCartClick
|
|
32
32
|
}) {
|
|
33
33
|
const { t, direction } = chunk3MP2EGEJ_cjs.useI18n();
|
|
34
|
-
const ctx =
|
|
34
|
+
const ctx = chunk46MUOYPR_cjs.useChatContext();
|
|
35
35
|
const displayName = clientName || ctx.config.clientName || "AI Assistant";
|
|
36
36
|
const LogoOrIcon = () => {
|
|
37
37
|
if (logoUrl) {
|
|
@@ -895,10 +895,10 @@ function DefaultUserMessage({ text }) {
|
|
|
895
895
|
}
|
|
896
896
|
function ChatInterface(props) {
|
|
897
897
|
const { showSources = false } = props;
|
|
898
|
-
const { messages, status, sendMessage, sessionId, config,
|
|
898
|
+
const { messages, status, sendMessage, sessionId, config, newConversation: ctxNewConversation } = chunk46MUOYPR_cjs.useChatContext();
|
|
899
899
|
const { t, direction } = chunk3MP2EGEJ_cjs.useI18n();
|
|
900
900
|
chunkP3RPAI4F_cjs.useTheme();
|
|
901
|
-
const slots =
|
|
901
|
+
const slots = chunk46MUOYPR_cjs.useSlots();
|
|
902
902
|
let liveChat = null;
|
|
903
903
|
try {
|
|
904
904
|
liveChat = chunkNYQSM3EB_cjs.useLiveChat();
|
|
@@ -934,12 +934,12 @@ function ChatInterface(props) {
|
|
|
934
934
|
[handleSubmit, props.showFirstMessage]
|
|
935
935
|
);
|
|
936
936
|
const handleNewConversation = react.useCallback(() => {
|
|
937
|
-
|
|
937
|
+
ctxNewConversation();
|
|
938
938
|
setShowWelcome(true);
|
|
939
939
|
setInput("");
|
|
940
940
|
setHideFirstUserMessage(false);
|
|
941
941
|
props.onNewConversation?.();
|
|
942
|
-
}, [
|
|
942
|
+
}, [ctxNewConversation, props]);
|
|
943
943
|
react.useEffect(() => {
|
|
944
944
|
if (props.pendingMessage && props.isOpen) {
|
|
945
945
|
const timer = setTimeout(() => {
|
|
@@ -972,8 +972,8 @@ function ChatInterface(props) {
|
|
|
972
972
|
);
|
|
973
973
|
if (showWelcome && messages.length === 0) {
|
|
974
974
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full flex-col", dir: direction, style: { backgroundColor: "var(--ac-background)" }, children: [
|
|
975
|
-
!props.hideHeader &&
|
|
976
|
-
|
|
975
|
+
!props.hideHeader && chunk46MUOYPR_cjs.renderSlot("header", headerProps, ChatHeader, slots),
|
|
976
|
+
chunk46MUOYPR_cjs.renderSlot(
|
|
977
977
|
"welcomePage",
|
|
978
978
|
{
|
|
979
979
|
onSelectCategory: handleSelectCategory,
|
|
@@ -992,18 +992,18 @@ function ChatInterface(props) {
|
|
|
992
992
|
slots
|
|
993
993
|
),
|
|
994
994
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "shrink-0 px-[15px] md:px-[40px]", style: { backgroundColor: "var(--ac-background)" }, children: [
|
|
995
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-auto z-40 w-full", children:
|
|
995
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-auto z-40 w-full", children: chunk46MUOYPR_cjs.renderSlot(
|
|
996
996
|
"input",
|
|
997
997
|
{ value: input, onChange: setInput, onSubmit: handleSubmit, isProcessing },
|
|
998
998
|
ChatInput,
|
|
999
999
|
slots
|
|
1000
1000
|
) }),
|
|
1001
|
-
|
|
1001
|
+
chunk46MUOYPR_cjs.renderSlot("footer", { footerText: props.footerText }, ChatFooter, slots)
|
|
1002
1002
|
] })
|
|
1003
1003
|
] });
|
|
1004
1004
|
}
|
|
1005
1005
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full flex-col", dir: direction, style: { backgroundColor: "var(--ac-background)" }, children: [
|
|
1006
|
-
!props.hideHeader &&
|
|
1006
|
+
!props.hideHeader && chunk46MUOYPR_cjs.renderSlot("header", headerProps, ChatHeader, slots),
|
|
1007
1007
|
storeOrigin && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1008
1008
|
CartDrawer,
|
|
1009
1009
|
{
|
|
@@ -1014,11 +1014,11 @@ function ChatInterface(props) {
|
|
|
1014
1014
|
}
|
|
1015
1015
|
),
|
|
1016
1016
|
/* @__PURE__ */ jsxRuntime.jsx(chunk4WOBNRRB_cjs.Conversation, { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsxs(chunk4WOBNRRB_cjs.ConversationContent, { className: "px-[15px] md:px-[40px] py-6 sm:py-8 w-full space-y-6", children: [
|
|
1017
|
-
messages.length === 0 &&
|
|
1017
|
+
messages.length === 0 && chunk46MUOYPR_cjs.renderSlot("emptyState", {}, chunk4WOBNRRB_cjs.ConversationEmptyState, slots),
|
|
1018
1018
|
messages.map((message, messageIndex) => {
|
|
1019
1019
|
if (hideFirstUserMessage && messageIndex === 0 && message.role === "user") return null;
|
|
1020
1020
|
if (message.role === "system") {
|
|
1021
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { children:
|
|
1021
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { children: chunk46MUOYPR_cjs.renderSlot("systemMessage", { message: message.content }, SystemMessage, slots) }, message.id);
|
|
1022
1022
|
}
|
|
1023
1023
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1024
1024
|
"div",
|
|
@@ -1033,9 +1033,9 @@ function ChatInterface(props) {
|
|
|
1033
1033
|
})).map((part, i) => {
|
|
1034
1034
|
if (part.type === "text") {
|
|
1035
1035
|
if (message.role === "assistant") {
|
|
1036
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { children:
|
|
1036
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { children: chunk46MUOYPR_cjs.renderSlot("assistantMessage", { message, partIndex: i, text: part.text || "" }, DefaultAssistantMessage, slots) }, `${message.id}-${i}`);
|
|
1037
1037
|
}
|
|
1038
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { children:
|
|
1038
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { children: chunk46MUOYPR_cjs.renderSlot("userMessage", { message, partIndex: i, text: part.text || "" }, DefaultUserMessage, slots) }, `${message.id}-${i}`);
|
|
1039
1039
|
}
|
|
1040
1040
|
if (part.type.startsWith("tool-")) {
|
|
1041
1041
|
const toolName = part.type.replace("tool-", "");
|
|
@@ -1053,7 +1053,7 @@ function ChatInterface(props) {
|
|
|
1053
1053
|
{
|
|
1054
1054
|
label: `tool "${toolName}"`,
|
|
1055
1055
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1056
|
-
|
|
1056
|
+
chunkOEEDYJTV_cjs.ToolRenderer,
|
|
1057
1057
|
{
|
|
1058
1058
|
toolName,
|
|
1059
1059
|
state: part.state ?? "output-available",
|
|
@@ -1084,7 +1084,7 @@ function ChatInterface(props) {
|
|
|
1084
1084
|
)) })
|
|
1085
1085
|
] });
|
|
1086
1086
|
})(),
|
|
1087
|
-
message.role === "assistant" &&
|
|
1087
|
+
message.role === "assistant" && chunk46MUOYPR_cjs.renderSlot("feedback", {
|
|
1088
1088
|
messageId: message.id,
|
|
1089
1089
|
projectId: config.projectId,
|
|
1090
1090
|
sessionId,
|
|
@@ -1118,7 +1118,7 @@ function ChatInterface(props) {
|
|
|
1118
1118
|
}
|
|
1119
1119
|
),
|
|
1120
1120
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-auto z-40 w-full flex items-end gap-2", children: [
|
|
1121
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children:
|
|
1121
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: chunk46MUOYPR_cjs.renderSlot(
|
|
1122
1122
|
"input",
|
|
1123
1123
|
{ value: input, onChange: setInput, onSubmit: () => handleSubmit(input), isProcessing },
|
|
1124
1124
|
ChatInput,
|
|
@@ -1135,7 +1135,7 @@ function ChatInterface(props) {
|
|
|
1135
1135
|
}
|
|
1136
1136
|
)
|
|
1137
1137
|
] }),
|
|
1138
|
-
|
|
1138
|
+
chunk46MUOYPR_cjs.renderSlot("footer", { footerText: props.footerText }, ChatFooter, slots)
|
|
1139
1139
|
] }),
|
|
1140
1140
|
/* @__PURE__ */ jsxRuntime.jsx("span", { "data-session-id": sessionId, className: "hidden" })
|
|
1141
1141
|
] });
|
|
@@ -1786,5 +1786,5 @@ exports.PreviewEmbedPanel = PreviewEmbedPanel;
|
|
|
1786
1786
|
exports.QuickQuestions = QuickQuestions;
|
|
1787
1787
|
exports.SystemMessage = SystemMessage;
|
|
1788
1788
|
exports.WelcomePage = WelcomePage;
|
|
1789
|
-
//# sourceMappingURL=chunk-
|
|
1790
|
-
//# sourceMappingURL=chunk-
|
|
1789
|
+
//# sourceMappingURL=chunk-LVWSWTI3.cjs.map
|
|
1790
|
+
//# sourceMappingURL=chunk-LVWSWTI3.cjs.map
|