@draht/web-ui 2026.3.2-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (372) hide show
  1. package/CHANGELOG.md +276 -0
  2. package/README.md +601 -0
  3. package/dist/ChatPanel.d.ts +28 -0
  4. package/dist/ChatPanel.d.ts.map +1 -0
  5. package/dist/ChatPanel.js +193 -0
  6. package/dist/ChatPanel.js.map +1 -0
  7. package/dist/app.css +2 -0
  8. package/dist/components/AgentInterface.d.ts +39 -0
  9. package/dist/components/AgentInterface.d.ts.map +1 -0
  10. package/dist/components/AgentInterface.js +384 -0
  11. package/dist/components/AgentInterface.js.map +1 -0
  12. package/dist/components/AttachmentTile.d.ts +12 -0
  13. package/dist/components/AttachmentTile.d.ts.map +1 -0
  14. package/dist/components/AttachmentTile.js +110 -0
  15. package/dist/components/AttachmentTile.js.map +1 -0
  16. package/dist/components/ConsoleBlock.d.ts +12 -0
  17. package/dist/components/ConsoleBlock.d.ts.map +1 -0
  18. package/dist/components/ConsoleBlock.js +81 -0
  19. package/dist/components/ConsoleBlock.js.map +1 -0
  20. package/dist/components/CustomProviderCard.d.ts +17 -0
  21. package/dist/components/CustomProviderCard.d.ts.map +1 -0
  22. package/dist/components/CustomProviderCard.js +112 -0
  23. package/dist/components/CustomProviderCard.js.map +1 -0
  24. package/dist/components/ExpandableSection.d.ts +15 -0
  25. package/dist/components/ExpandableSection.d.ts.map +1 -0
  26. package/dist/components/ExpandableSection.js +61 -0
  27. package/dist/components/ExpandableSection.js.map +1 -0
  28. package/dist/components/Input.d.ts +26 -0
  29. package/dist/components/Input.d.ts.map +1 -0
  30. package/dist/components/Input.js +57 -0
  31. package/dist/components/Input.js.map +1 -0
  32. package/dist/components/MessageEditor.d.ts +44 -0
  33. package/dist/components/MessageEditor.d.ts.map +1 -0
  34. package/dist/components/MessageEditor.js +418 -0
  35. package/dist/components/MessageEditor.js.map +1 -0
  36. package/dist/components/MessageList.d.ts +14 -0
  37. package/dist/components/MessageList.d.ts.map +1 -0
  38. package/dist/components/MessageList.js +104 -0
  39. package/dist/components/MessageList.js.map +1 -0
  40. package/dist/components/Messages.d.ts +95 -0
  41. package/dist/components/Messages.d.ts.map +1 -0
  42. package/dist/components/Messages.js +363 -0
  43. package/dist/components/Messages.js.map +1 -0
  44. package/dist/components/ProviderKeyInput.d.ts +16 -0
  45. package/dist/components/ProviderKeyInput.d.ts.map +1 -0
  46. package/dist/components/ProviderKeyInput.js +168 -0
  47. package/dist/components/ProviderKeyInput.js.map +1 -0
  48. package/dist/components/SandboxedIframe.d.ts +85 -0
  49. package/dist/components/SandboxedIframe.d.ts.map +1 -0
  50. package/dist/components/SandboxedIframe.js +518 -0
  51. package/dist/components/SandboxedIframe.js.map +1 -0
  52. package/dist/components/StreamingMessageContainer.d.ts +19 -0
  53. package/dist/components/StreamingMessageContainer.d.ts.map +1 -0
  54. package/dist/components/StreamingMessageContainer.js +117 -0
  55. package/dist/components/StreamingMessageContainer.js.map +1 -0
  56. package/dist/components/ThinkingBlock.d.ts +11 -0
  57. package/dist/components/ThinkingBlock.d.ts.map +1 -0
  58. package/dist/components/ThinkingBlock.js +56 -0
  59. package/dist/components/ThinkingBlock.js.map +1 -0
  60. package/dist/components/message-renderer-registry.d.ts +12 -0
  61. package/dist/components/message-renderer-registry.d.ts.map +1 -0
  62. package/dist/components/message-renderer-registry.js +12 -0
  63. package/dist/components/message-renderer-registry.js.map +1 -0
  64. package/dist/components/sandbox/ArtifactsRuntimeProvider.d.ts +35 -0
  65. package/dist/components/sandbox/ArtifactsRuntimeProvider.d.ts.map +1 -0
  66. package/dist/components/sandbox/ArtifactsRuntimeProvider.js +192 -0
  67. package/dist/components/sandbox/ArtifactsRuntimeProvider.js.map +1 -0
  68. package/dist/components/sandbox/AttachmentsRuntimeProvider.d.ts +17 -0
  69. package/dist/components/sandbox/AttachmentsRuntimeProvider.d.ts.map +1 -0
  70. package/dist/components/sandbox/AttachmentsRuntimeProvider.js +65 -0
  71. package/dist/components/sandbox/AttachmentsRuntimeProvider.js.map +1 -0
  72. package/dist/components/sandbox/ConsoleRuntimeProvider.d.ts +42 -0
  73. package/dist/components/sandbox/ConsoleRuntimeProvider.d.ts.map +1 -0
  74. package/dist/components/sandbox/ConsoleRuntimeProvider.js +159 -0
  75. package/dist/components/sandbox/ConsoleRuntimeProvider.js.map +1 -0
  76. package/dist/components/sandbox/FileDownloadRuntimeProvider.d.ts +30 -0
  77. package/dist/components/sandbox/FileDownloadRuntimeProvider.d.ts.map +1 -0
  78. package/dist/components/sandbox/FileDownloadRuntimeProvider.js +95 -0
  79. package/dist/components/sandbox/FileDownloadRuntimeProvider.js.map +1 -0
  80. package/dist/components/sandbox/RuntimeMessageBridge.d.ts +19 -0
  81. package/dist/components/sandbox/RuntimeMessageBridge.d.ts.map +1 -0
  82. package/dist/components/sandbox/RuntimeMessageBridge.js +74 -0
  83. package/dist/components/sandbox/RuntimeMessageBridge.js.map +1 -0
  84. package/dist/components/sandbox/RuntimeMessageRouter.d.ts +65 -0
  85. package/dist/components/sandbox/RuntimeMessageRouter.d.ts.map +1 -0
  86. package/dist/components/sandbox/RuntimeMessageRouter.js +166 -0
  87. package/dist/components/sandbox/RuntimeMessageRouter.js.map +1 -0
  88. package/dist/components/sandbox/SandboxRuntimeProvider.d.ts +48 -0
  89. package/dist/components/sandbox/SandboxRuntimeProvider.d.ts.map +1 -0
  90. package/dist/components/sandbox/SandboxRuntimeProvider.js +2 -0
  91. package/dist/components/sandbox/SandboxRuntimeProvider.js.map +1 -0
  92. package/dist/dialogs/ApiKeyPromptDialog.d.ts +15 -0
  93. package/dist/dialogs/ApiKeyPromptDialog.d.ts.map +1 -0
  94. package/dist/dialogs/ApiKeyPromptDialog.js +77 -0
  95. package/dist/dialogs/ApiKeyPromptDialog.js.map +1 -0
  96. package/dist/dialogs/AttachmentOverlay.d.ts +32 -0
  97. package/dist/dialogs/AttachmentOverlay.d.ts.map +1 -0
  98. package/dist/dialogs/AttachmentOverlay.js +576 -0
  99. package/dist/dialogs/AttachmentOverlay.js.map +1 -0
  100. package/dist/dialogs/CustomProviderDialog.d.ts +25 -0
  101. package/dist/dialogs/CustomProviderDialog.d.ts.map +1 -0
  102. package/dist/dialogs/CustomProviderDialog.js +270 -0
  103. package/dist/dialogs/CustomProviderDialog.js.map +1 -0
  104. package/dist/dialogs/ModelSelector.d.ts +27 -0
  105. package/dist/dialogs/ModelSelector.d.ts.map +1 -0
  106. package/dist/dialogs/ModelSelector.js +320 -0
  107. package/dist/dialogs/ModelSelector.js.map +1 -0
  108. package/dist/dialogs/PersistentStorageDialog.d.ts +17 -0
  109. package/dist/dialogs/PersistentStorageDialog.d.ts.map +1 -0
  110. package/dist/dialogs/PersistentStorageDialog.js +144 -0
  111. package/dist/dialogs/PersistentStorageDialog.js.map +1 -0
  112. package/dist/dialogs/ProvidersModelsTab.d.ts +20 -0
  113. package/dist/dialogs/ProvidersModelsTab.d.ts.map +1 -0
  114. package/dist/dialogs/ProvidersModelsTab.js +188 -0
  115. package/dist/dialogs/ProvidersModelsTab.js.map +1 -0
  116. package/dist/dialogs/SessionListDialog.d.ts +19 -0
  117. package/dist/dialogs/SessionListDialog.d.ts.map +1 -0
  118. package/dist/dialogs/SessionListDialog.js +152 -0
  119. package/dist/dialogs/SessionListDialog.js.map +1 -0
  120. package/dist/dialogs/SettingsDialog.d.ts +30 -0
  121. package/dist/dialogs/SettingsDialog.d.ts.map +1 -0
  122. package/dist/dialogs/SettingsDialog.js +222 -0
  123. package/dist/dialogs/SettingsDialog.js.map +1 -0
  124. package/dist/index.d.ts +67 -0
  125. package/dist/index.d.ts.map +1 -0
  126. package/dist/index.js +70 -0
  127. package/dist/index.js.map +1 -0
  128. package/dist/prompts/prompts.d.ts +11 -0
  129. package/dist/prompts/prompts.d.ts.map +1 -0
  130. package/dist/prompts/prompts.js +272 -0
  131. package/dist/prompts/prompts.js.map +1 -0
  132. package/dist/storage/app-storage.d.ts +33 -0
  133. package/dist/storage/app-storage.d.ts.map +1 -0
  134. package/dist/storage/app-storage.js +43 -0
  135. package/dist/storage/app-storage.js.map +1 -0
  136. package/dist/storage/backends/indexeddb-storage-backend.d.ts +27 -0
  137. package/dist/storage/backends/indexeddb-storage-backend.d.ts.map +1 -0
  138. package/dist/storage/backends/indexeddb-storage-backend.js +167 -0
  139. package/dist/storage/backends/indexeddb-storage-backend.js.map +1 -0
  140. package/dist/storage/store.d.ts +23 -0
  141. package/dist/storage/store.d.ts.map +1 -0
  142. package/dist/storage/store.js +24 -0
  143. package/dist/storage/store.js.map +1 -0
  144. package/dist/storage/stores/custom-providers-store.d.ts +25 -0
  145. package/dist/storage/stores/custom-providers-store.d.ts.map +1 -0
  146. package/dist/storage/stores/custom-providers-store.js +35 -0
  147. package/dist/storage/stores/custom-providers-store.js.map +1 -0
  148. package/dist/storage/stores/provider-keys-store.d.ts +14 -0
  149. package/dist/storage/stores/provider-keys-store.d.ts.map +1 -0
  150. package/dist/storage/stores/provider-keys-store.js +27 -0
  151. package/dist/storage/stores/provider-keys-store.js.map +1 -0
  152. package/dist/storage/stores/sessions-store.d.ts +32 -0
  153. package/dist/storage/stores/sessions-store.d.ts.map +1 -0
  154. package/dist/storage/stores/sessions-store.js +113 -0
  155. package/dist/storage/stores/sessions-store.js.map +1 -0
  156. package/dist/storage/stores/settings-store.d.ts +14 -0
  157. package/dist/storage/stores/settings-store.d.ts.map +1 -0
  158. package/dist/storage/stores/settings-store.js +28 -0
  159. package/dist/storage/stores/settings-store.js.map +1 -0
  160. package/dist/storage/types.d.ts +176 -0
  161. package/dist/storage/types.d.ts.map +1 -0
  162. package/dist/storage/types.js +2 -0
  163. package/dist/storage/types.js.map +1 -0
  164. package/dist/tools/artifacts/ArtifactElement.d.ts +9 -0
  165. package/dist/tools/artifacts/ArtifactElement.d.ts.map +1 -0
  166. package/dist/tools/artifacts/ArtifactElement.js +8 -0
  167. package/dist/tools/artifacts/ArtifactElement.js.map +1 -0
  168. package/dist/tools/artifacts/ArtifactPill.d.ts +4 -0
  169. package/dist/tools/artifacts/ArtifactPill.d.ts.map +1 -0
  170. package/dist/tools/artifacts/ArtifactPill.js +23 -0
  171. package/dist/tools/artifacts/ArtifactPill.js.map +1 -0
  172. package/dist/tools/artifacts/Console.d.ts +18 -0
  173. package/dist/tools/artifacts/Console.d.ts.map +1 -0
  174. package/dist/tools/artifacts/Console.js +92 -0
  175. package/dist/tools/artifacts/Console.js.map +1 -0
  176. package/dist/tools/artifacts/DocxArtifact.d.ts +22 -0
  177. package/dist/tools/artifacts/DocxArtifact.d.ts.map +1 -0
  178. package/dist/tools/artifacts/DocxArtifact.js +205 -0
  179. package/dist/tools/artifacts/DocxArtifact.js.map +1 -0
  180. package/dist/tools/artifacts/ExcelArtifact.d.ts +24 -0
  181. package/dist/tools/artifacts/ExcelArtifact.d.ts.map +1 -0
  182. package/dist/tools/artifacts/ExcelArtifact.js +213 -0
  183. package/dist/tools/artifacts/ExcelArtifact.js.map +1 -0
  184. package/dist/tools/artifacts/GenericArtifact.d.ts +19 -0
  185. package/dist/tools/artifacts/GenericArtifact.d.ts.map +1 -0
  186. package/dist/tools/artifacts/GenericArtifact.js +114 -0
  187. package/dist/tools/artifacts/GenericArtifact.js.map +1 -0
  188. package/dist/tools/artifacts/HtmlArtifact.d.ts +27 -0
  189. package/dist/tools/artifacts/HtmlArtifact.d.ts.map +1 -0
  190. package/dist/tools/artifacts/HtmlArtifact.js +187 -0
  191. package/dist/tools/artifacts/HtmlArtifact.js.map +1 -0
  192. package/dist/tools/artifacts/ImageArtifact.d.ts +20 -0
  193. package/dist/tools/artifacts/ImageArtifact.d.ts.map +1 -0
  194. package/dist/tools/artifacts/ImageArtifact.js +117 -0
  195. package/dist/tools/artifacts/ImageArtifact.js.map +1 -0
  196. package/dist/tools/artifacts/MarkdownArtifact.d.ts +19 -0
  197. package/dist/tools/artifacts/MarkdownArtifact.d.ts.map +1 -0
  198. package/dist/tools/artifacts/MarkdownArtifact.js +79 -0
  199. package/dist/tools/artifacts/MarkdownArtifact.js.map +1 -0
  200. package/dist/tools/artifacts/PdfArtifact.d.ts +25 -0
  201. package/dist/tools/artifacts/PdfArtifact.d.ts.map +1 -0
  202. package/dist/tools/artifacts/PdfArtifact.js +181 -0
  203. package/dist/tools/artifacts/PdfArtifact.js.map +1 -0
  204. package/dist/tools/artifacts/SvgArtifact.d.ts +18 -0
  205. package/dist/tools/artifacts/SvgArtifact.d.ts.map +1 -0
  206. package/dist/tools/artifacts/SvgArtifact.js +75 -0
  207. package/dist/tools/artifacts/SvgArtifact.js.map +1 -0
  208. package/dist/tools/artifacts/TextArtifact.d.ts +19 -0
  209. package/dist/tools/artifacts/TextArtifact.d.ts.map +1 -0
  210. package/dist/tools/artifacts/TextArtifact.js +141 -0
  211. package/dist/tools/artifacts/TextArtifact.js.map +1 -0
  212. package/dist/tools/artifacts/artifacts-tool-renderer.d.ts +11 -0
  213. package/dist/tools/artifacts/artifacts-tool-renderer.d.ts.map +1 -0
  214. package/dist/tools/artifacts/artifacts-tool-renderer.js +273 -0
  215. package/dist/tools/artifacts/artifacts-tool-renderer.js.map +1 -0
  216. package/dist/tools/artifacts/artifacts.d.ts +63 -0
  217. package/dist/tools/artifacts/artifacts.d.ts.map +1 -0
  218. package/dist/tools/artifacts/artifacts.js +664 -0
  219. package/dist/tools/artifacts/artifacts.js.map +1 -0
  220. package/dist/tools/artifacts/index.d.ts +8 -0
  221. package/dist/tools/artifacts/index.d.ts.map +1 -0
  222. package/dist/tools/artifacts/index.js +8 -0
  223. package/dist/tools/artifacts/index.js.map +1 -0
  224. package/dist/tools/extract-document.d.ts +24 -0
  225. package/dist/tools/extract-document.d.ts.map +1 -0
  226. package/dist/tools/extract-document.js +216 -0
  227. package/dist/tools/extract-document.js.map +1 -0
  228. package/dist/tools/index.d.ts +16 -0
  229. package/dist/tools/index.d.ts.map +1 -0
  230. package/dist/tools/index.js +33 -0
  231. package/dist/tools/index.js.map +1 -0
  232. package/dist/tools/javascript-repl.d.ts +44 -0
  233. package/dist/tools/javascript-repl.d.ts.map +1 -0
  234. package/dist/tools/javascript-repl.js +224 -0
  235. package/dist/tools/javascript-repl.js.map +1 -0
  236. package/dist/tools/renderer-registry.d.ts +23 -0
  237. package/dist/tools/renderer-registry.d.ts.map +1 -0
  238. package/dist/tools/renderer-registry.js +107 -0
  239. package/dist/tools/renderer-registry.js.map +1 -0
  240. package/dist/tools/renderers/BashRenderer.d.ts +10 -0
  241. package/dist/tools/renderers/BashRenderer.d.ts.map +1 -0
  242. package/dist/tools/renderers/BashRenderer.js +42 -0
  243. package/dist/tools/renderers/BashRenderer.js.map +1 -0
  244. package/dist/tools/renderers/CalculateRenderer.d.ts +10 -0
  245. package/dist/tools/renderers/CalculateRenderer.d.ts.map +1 -0
  246. package/dist/tools/renderers/CalculateRenderer.js +45 -0
  247. package/dist/tools/renderers/CalculateRenderer.js.map +1 -0
  248. package/dist/tools/renderers/DefaultRenderer.d.ts +6 -0
  249. package/dist/tools/renderers/DefaultRenderer.d.ts.map +1 -0
  250. package/dist/tools/renderers/DefaultRenderer.js +94 -0
  251. package/dist/tools/renderers/DefaultRenderer.js.map +1 -0
  252. package/dist/tools/renderers/GetCurrentTimeRenderer.d.ts +10 -0
  253. package/dist/tools/renderers/GetCurrentTimeRenderer.d.ts.map +1 -0
  254. package/dist/tools/renderers/GetCurrentTimeRenderer.js +72 -0
  255. package/dist/tools/renderers/GetCurrentTimeRenderer.js.map +1 -0
  256. package/dist/tools/types.d.ts +10 -0
  257. package/dist/tools/types.d.ts.map +1 -0
  258. package/dist/tools/types.js +2 -0
  259. package/dist/tools/types.js.map +1 -0
  260. package/dist/utils/attachment-utils.d.ts +19 -0
  261. package/dist/utils/attachment-utils.d.ts.map +1 -0
  262. package/dist/utils/attachment-utils.js +415 -0
  263. package/dist/utils/attachment-utils.js.map +1 -0
  264. package/dist/utils/auth-token.d.ts +3 -0
  265. package/dist/utils/auth-token.d.ts.map +1 -0
  266. package/dist/utils/auth-token.js +19 -0
  267. package/dist/utils/auth-token.js.map +1 -0
  268. package/dist/utils/format.d.ts +6 -0
  269. package/dist/utils/format.d.ts.map +1 -0
  270. package/dist/utils/format.js +47 -0
  271. package/dist/utils/format.js.map +1 -0
  272. package/dist/utils/i18n.d.ts +636 -0
  273. package/dist/utils/i18n.d.ts.map +1 -0
  274. package/dist/utils/i18n.js +418 -0
  275. package/dist/utils/i18n.js.map +1 -0
  276. package/dist/utils/model-discovery.d.ts +38 -0
  277. package/dist/utils/model-discovery.d.ts.map +1 -0
  278. package/dist/utils/model-discovery.js +243 -0
  279. package/dist/utils/model-discovery.js.map +1 -0
  280. package/dist/utils/proxy-utils.d.ts +45 -0
  281. package/dist/utils/proxy-utils.d.ts.map +1 -0
  282. package/dist/utils/proxy-utils.js +116 -0
  283. package/dist/utils/proxy-utils.js.map +1 -0
  284. package/dist/utils/test-sessions.d.ts +359 -0
  285. package/dist/utils/test-sessions.d.ts.map +1 -0
  286. package/dist/utils/test-sessions.js +2325 -0
  287. package/dist/utils/test-sessions.js.map +1 -0
  288. package/example/README.md +61 -0
  289. package/example/index.html +13 -0
  290. package/example/package.json +25 -0
  291. package/example/src/app.css +1 -0
  292. package/example/src/custom-messages.ts +99 -0
  293. package/example/src/env.d.ts +1 -0
  294. package/example/src/main.ts +421 -0
  295. package/example/tsconfig.json +23 -0
  296. package/example/vite.config.ts +6 -0
  297. package/package.json +53 -0
  298. package/scripts/count-prompt-tokens.ts +88 -0
  299. package/src/ChatPanel.ts +207 -0
  300. package/src/app.css +68 -0
  301. package/src/components/AgentInterface.ts +388 -0
  302. package/src/components/AttachmentTile.ts +107 -0
  303. package/src/components/ConsoleBlock.ts +72 -0
  304. package/src/components/CustomProviderCard.ts +100 -0
  305. package/src/components/ExpandableSection.ts +46 -0
  306. package/src/components/Input.ts +113 -0
  307. package/src/components/MessageEditor.ts +400 -0
  308. package/src/components/MessageList.ts +95 -0
  309. package/src/components/Messages.ts +383 -0
  310. package/src/components/ProviderKeyInput.ts +153 -0
  311. package/src/components/SandboxedIframe.ts +626 -0
  312. package/src/components/StreamingMessageContainer.ts +103 -0
  313. package/src/components/ThinkingBlock.ts +43 -0
  314. package/src/components/message-renderer-registry.ts +28 -0
  315. package/src/components/sandbox/ArtifactsRuntimeProvider.ts +219 -0
  316. package/src/components/sandbox/AttachmentsRuntimeProvider.ts +66 -0
  317. package/src/components/sandbox/ConsoleRuntimeProvider.ts +186 -0
  318. package/src/components/sandbox/FileDownloadRuntimeProvider.ts +110 -0
  319. package/src/components/sandbox/RuntimeMessageBridge.ts +82 -0
  320. package/src/components/sandbox/RuntimeMessageRouter.ts +216 -0
  321. package/src/components/sandbox/SandboxRuntimeProvider.ts +52 -0
  322. package/src/dialogs/ApiKeyPromptDialog.ts +75 -0
  323. package/src/dialogs/AttachmentOverlay.ts +636 -0
  324. package/src/dialogs/CustomProviderDialog.ts +274 -0
  325. package/src/dialogs/ModelSelector.ts +313 -0
  326. package/src/dialogs/PersistentStorageDialog.ts +144 -0
  327. package/src/dialogs/ProvidersModelsTab.ts +212 -0
  328. package/src/dialogs/SessionListDialog.ts +150 -0
  329. package/src/dialogs/SettingsDialog.ts +214 -0
  330. package/src/index.ts +119 -0
  331. package/src/prompts/prompts.ts +282 -0
  332. package/src/storage/app-storage.ts +60 -0
  333. package/src/storage/backends/indexeddb-storage-backend.ts +193 -0
  334. package/src/storage/store.ts +33 -0
  335. package/src/storage/stores/custom-providers-store.ts +62 -0
  336. package/src/storage/stores/provider-keys-store.ts +33 -0
  337. package/src/storage/stores/sessions-store.ts +136 -0
  338. package/src/storage/stores/settings-store.ts +34 -0
  339. package/src/storage/types.ts +206 -0
  340. package/src/tools/artifacts/ArtifactElement.ts +14 -0
  341. package/src/tools/artifacts/ArtifactPill.ts +26 -0
  342. package/src/tools/artifacts/Console.ts +93 -0
  343. package/src/tools/artifacts/DocxArtifact.ts +213 -0
  344. package/src/tools/artifacts/ExcelArtifact.ts +231 -0
  345. package/src/tools/artifacts/GenericArtifact.ts +117 -0
  346. package/src/tools/artifacts/HtmlArtifact.ts +195 -0
  347. package/src/tools/artifacts/ImageArtifact.ts +116 -0
  348. package/src/tools/artifacts/MarkdownArtifact.ts +82 -0
  349. package/src/tools/artifacts/PdfArtifact.ts +201 -0
  350. package/src/tools/artifacts/SvgArtifact.ts +78 -0
  351. package/src/tools/artifacts/TextArtifact.ts +148 -0
  352. package/src/tools/artifacts/artifacts-tool-renderer.ts +310 -0
  353. package/src/tools/artifacts/artifacts.ts +713 -0
  354. package/src/tools/artifacts/index.ts +7 -0
  355. package/src/tools/extract-document.ts +275 -0
  356. package/src/tools/index.ts +46 -0
  357. package/src/tools/javascript-repl.ts +293 -0
  358. package/src/tools/renderer-registry.ts +130 -0
  359. package/src/tools/renderers/BashRenderer.ts +52 -0
  360. package/src/tools/renderers/CalculateRenderer.ts +58 -0
  361. package/src/tools/renderers/DefaultRenderer.ts +103 -0
  362. package/src/tools/renderers/GetCurrentTimeRenderer.ts +92 -0
  363. package/src/tools/types.ts +15 -0
  364. package/src/utils/attachment-utils.ts +472 -0
  365. package/src/utils/auth-token.ts +22 -0
  366. package/src/utils/format.ts +42 -0
  367. package/src/utils/i18n.ts +653 -0
  368. package/src/utils/model-discovery.ts +277 -0
  369. package/src/utils/proxy-utils.ts +134 -0
  370. package/src/utils/test-sessions.ts +2357 -0
  371. package/tsconfig.build.json +20 -0
  372. package/tsconfig.json +7 -0
@@ -0,0 +1,518 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { LitElement } from "lit";
8
+ import { customElement, property } from "lit/decorators.js";
9
+ import { ConsoleRuntimeProvider } from "./sandbox/ConsoleRuntimeProvider.js";
10
+ import { RuntimeMessageBridge } from "./sandbox/RuntimeMessageBridge.js";
11
+ import { RUNTIME_MESSAGE_ROUTER } from "./sandbox/RuntimeMessageRouter.js";
12
+ /**
13
+ * Escape HTML special sequences in code to prevent premature tag closure
14
+ * @param code Code that will be injected into <script> tags
15
+ * @returns Escaped code safe for injection
16
+ */
17
+ function escapeScriptContent(code) {
18
+ return code.replace(/<\/script/gi, "<\\/script");
19
+ }
20
+ let SandboxIframe = class SandboxIframe extends LitElement {
21
+ iframe;
22
+ /**
23
+ * Optional: Provide a function that returns the sandbox HTML URL.
24
+ * If provided, the iframe will use this URL instead of srcdoc.
25
+ * This is required for browser extensions with strict CSP.
26
+ */
27
+ sandboxUrlProvider;
28
+ createRenderRoot() {
29
+ return this;
30
+ }
31
+ connectedCallback() {
32
+ super.connectedCallback();
33
+ }
34
+ disconnectedCallback() {
35
+ super.disconnectedCallback();
36
+ // Note: We don't unregister the sandbox here for loadContent() mode
37
+ // because the caller (HtmlArtifact) owns the sandbox lifecycle.
38
+ // For execute() mode, the sandbox is unregistered in the cleanup function.
39
+ this.iframe?.remove();
40
+ }
41
+ /**
42
+ * Load HTML content into sandbox and keep it displayed (for HTML artifacts)
43
+ * @param sandboxId Unique ID
44
+ * @param htmlContent Full HTML content
45
+ * @param providers Runtime providers to inject
46
+ * @param consumers Message consumers to register (optional)
47
+ */
48
+ loadContent(sandboxId, htmlContent, providers = [], consumers = []) {
49
+ // Unregister previous sandbox if exists
50
+ try {
51
+ RUNTIME_MESSAGE_ROUTER.unregisterSandbox(sandboxId);
52
+ }
53
+ catch {
54
+ // Sandbox might not exist, that's ok
55
+ }
56
+ providers = [new ConsoleRuntimeProvider(), ...providers];
57
+ RUNTIME_MESSAGE_ROUTER.registerSandbox(sandboxId, providers, consumers);
58
+ // loadContent is always used for HTML artifacts (not standalone)
59
+ const completeHtml = this.prepareHtmlDocument(sandboxId, htmlContent, providers, {
60
+ isHtmlArtifact: true,
61
+ isStandalone: false,
62
+ });
63
+ // Validate HTML before loading
64
+ const validationError = this.validateHtml(completeHtml);
65
+ if (validationError) {
66
+ console.error("HTML validation failed:", validationError);
67
+ // Show error in iframe instead of crashing
68
+ this.iframe?.remove();
69
+ this.iframe = document.createElement("iframe");
70
+ this.iframe.style.cssText = "width: 100%; height: 100%; border: none;";
71
+ this.iframe.srcdoc = `
72
+ <html>
73
+ <body style="font-family: monospace; padding: 20px; background: #fff; color: #000;">
74
+ <h3 style="color: #c00;">HTML Validation Error</h3>
75
+ <pre style="background: #f5f5f5; padding: 10px; border-radius: 4px; overflow-x: auto; white-space: pre-wrap;">${validationError}</pre>
76
+ </body>
77
+ </html>
78
+ `;
79
+ this.appendChild(this.iframe);
80
+ return;
81
+ }
82
+ // Remove previous iframe if exists
83
+ this.iframe?.remove();
84
+ if (this.sandboxUrlProvider) {
85
+ // Browser extension mode: use sandbox.html with postMessage
86
+ this.loadViaSandboxUrl(sandboxId, completeHtml);
87
+ }
88
+ else {
89
+ // Web mode: use srcdoc
90
+ this.loadViaSrcdoc(sandboxId, completeHtml);
91
+ }
92
+ }
93
+ loadViaSandboxUrl(sandboxId, completeHtml) {
94
+ // Create iframe pointing to sandbox URL
95
+ this.iframe = document.createElement("iframe");
96
+ this.iframe.sandbox.add("allow-scripts");
97
+ this.iframe.sandbox.add("allow-modals");
98
+ this.iframe.style.width = "100%";
99
+ this.iframe.style.height = "100%";
100
+ this.iframe.style.border = "none";
101
+ this.iframe.src = this.sandboxUrlProvider();
102
+ // Update router with iframe reference BEFORE appending to DOM
103
+ RUNTIME_MESSAGE_ROUTER.setSandboxIframe(sandboxId, this.iframe);
104
+ // Listen for open-external-url messages from iframe
105
+ const externalUrlHandler = (e) => {
106
+ if (e.data.type === "open-external-url" && e.source === this.iframe?.contentWindow) {
107
+ // Use chrome.tabs API to open in new tab
108
+ const chromeAPI = globalThis.chrome;
109
+ if (chromeAPI?.tabs) {
110
+ chromeAPI.tabs.create({ url: e.data.url });
111
+ }
112
+ else {
113
+ // Fallback for non-extension context
114
+ window.open(e.data.url, "_blank");
115
+ }
116
+ }
117
+ };
118
+ window.addEventListener("message", externalUrlHandler);
119
+ // Listen for sandbox-ready and sandbox-error messages directly
120
+ const readyHandler = (e) => {
121
+ if (e.data.type === "sandbox-ready" && e.source === this.iframe?.contentWindow) {
122
+ window.removeEventListener("message", readyHandler);
123
+ window.removeEventListener("message", errorHandler);
124
+ // Send content to sandbox
125
+ this.iframe?.contentWindow?.postMessage({
126
+ type: "sandbox-load",
127
+ sandboxId,
128
+ code: completeHtml,
129
+ }, "*");
130
+ }
131
+ };
132
+ const errorHandler = (e) => {
133
+ if (e.data.type === "sandbox-error" && e.source === this.iframe?.contentWindow) {
134
+ window.removeEventListener("message", readyHandler);
135
+ window.removeEventListener("message", errorHandler);
136
+ // The sandbox.js already sent us the error via postMessage.
137
+ // We need to convert it to an execution-error message that the execute() consumer will handle.
138
+ // Simulate receiving an execution-error from the sandbox
139
+ window.postMessage({
140
+ sandboxId: sandboxId,
141
+ type: "execution-error",
142
+ error: { message: e.data.error, stack: e.data.stack },
143
+ }, "*");
144
+ }
145
+ };
146
+ window.addEventListener("message", readyHandler);
147
+ window.addEventListener("message", errorHandler);
148
+ this.appendChild(this.iframe);
149
+ }
150
+ loadViaSrcdoc(sandboxId, completeHtml) {
151
+ // Create iframe with srcdoc
152
+ this.iframe = document.createElement("iframe");
153
+ this.iframe.sandbox.add("allow-scripts");
154
+ this.iframe.sandbox.add("allow-modals");
155
+ this.iframe.style.width = "100%";
156
+ this.iframe.style.height = "100%";
157
+ this.iframe.style.border = "none";
158
+ this.iframe.srcdoc = completeHtml;
159
+ // Update router with iframe reference BEFORE appending to DOM
160
+ RUNTIME_MESSAGE_ROUTER.setSandboxIframe(sandboxId, this.iframe);
161
+ // Listen for open-external-url messages from iframe
162
+ const externalUrlHandler = (e) => {
163
+ if (e.data.type === "open-external-url" && e.source === this.iframe?.contentWindow) {
164
+ // Fallback for non-extension context
165
+ window.open(e.data.url, "_blank");
166
+ }
167
+ };
168
+ window.addEventListener("message", externalUrlHandler);
169
+ this.appendChild(this.iframe);
170
+ }
171
+ /**
172
+ * Execute code in sandbox
173
+ * @param sandboxId Unique ID for this execution
174
+ * @param code User code (plain JS for REPL, or full HTML for artifacts)
175
+ * @param providers Runtime providers to inject
176
+ * @param consumers Additional message consumers (optional, execute has its own internal consumer)
177
+ * @param signal Abort signal
178
+ * @returns Promise resolving to execution result
179
+ */
180
+ async execute(sandboxId, code, providers = [], consumers = [], signal, isHtmlArtifact = false) {
181
+ if (signal?.aborted) {
182
+ throw new Error("Execution aborted");
183
+ }
184
+ const consoleProvider = new ConsoleRuntimeProvider();
185
+ providers = [consoleProvider, ...providers];
186
+ RUNTIME_MESSAGE_ROUTER.registerSandbox(sandboxId, providers, consumers);
187
+ // Notify providers that execution is starting
188
+ for (const provider of providers) {
189
+ provider.onExecutionStart?.(sandboxId, signal);
190
+ }
191
+ const files = [];
192
+ let completed = false;
193
+ return new Promise((resolve, reject) => {
194
+ // 4. Create execution consumer for lifecycle messages
195
+ const executionConsumer = {
196
+ async handleMessage(message) {
197
+ if (message.type === "file-returned") {
198
+ files.push({
199
+ fileName: message.fileName,
200
+ content: message.content,
201
+ mimeType: message.mimeType,
202
+ });
203
+ }
204
+ else if (message.type === "execution-complete") {
205
+ completed = true;
206
+ cleanup();
207
+ resolve({
208
+ success: true,
209
+ console: consoleProvider.getLogs(),
210
+ files,
211
+ returnValue: message.returnValue,
212
+ });
213
+ }
214
+ else if (message.type === "execution-error") {
215
+ completed = true;
216
+ cleanup();
217
+ resolve({ success: false, console: consoleProvider.getLogs(), error: message.error, files });
218
+ }
219
+ },
220
+ };
221
+ RUNTIME_MESSAGE_ROUTER.addConsumer(sandboxId, executionConsumer);
222
+ const cleanup = () => {
223
+ // Notify providers that execution has ended
224
+ for (const provider of providers) {
225
+ provider.onExecutionEnd?.(sandboxId);
226
+ }
227
+ RUNTIME_MESSAGE_ROUTER.unregisterSandbox(sandboxId);
228
+ signal?.removeEventListener("abort", abortHandler);
229
+ clearTimeout(timeoutId);
230
+ this.iframe?.remove();
231
+ this.iframe = undefined;
232
+ };
233
+ // Abort handler
234
+ const abortHandler = () => {
235
+ if (!completed) {
236
+ completed = true;
237
+ cleanup();
238
+ reject(new Error("Execution aborted"));
239
+ }
240
+ };
241
+ if (signal) {
242
+ signal.addEventListener("abort", abortHandler);
243
+ }
244
+ // Timeout handler (30 seconds)
245
+ const timeoutId = setTimeout(() => {
246
+ if (!completed) {
247
+ completed = true;
248
+ cleanup();
249
+ resolve({
250
+ success: false,
251
+ console: consoleProvider.getLogs(),
252
+ error: { message: "Execution timeout (120s)", stack: "" },
253
+ files,
254
+ });
255
+ }
256
+ }, 120000);
257
+ // 4. Prepare HTML and create iframe
258
+ const completeHtml = this.prepareHtmlDocument(sandboxId, code, providers, {
259
+ isHtmlArtifact,
260
+ isStandalone: false,
261
+ });
262
+ // 5. Validate HTML before sending to sandbox
263
+ const validationError = this.validateHtml(completeHtml);
264
+ if (validationError) {
265
+ reject(new Error(`HTML validation failed: ${validationError}`));
266
+ return;
267
+ }
268
+ if (this.sandboxUrlProvider) {
269
+ // Browser extension mode: wait for sandbox-ready
270
+ this.iframe = document.createElement("iframe");
271
+ this.iframe.sandbox.add("allow-scripts", "allow-modals");
272
+ this.iframe.style.cssText = "width: 100%; height: 100%; border: none;";
273
+ this.iframe.src = this.sandboxUrlProvider();
274
+ // Update router with iframe reference BEFORE appending to DOM
275
+ RUNTIME_MESSAGE_ROUTER.setSandboxIframe(sandboxId, this.iframe);
276
+ // Listen for sandbox-ready and sandbox-error messages
277
+ const readyHandler = (e) => {
278
+ if (e.data.type === "sandbox-ready" && e.source === this.iframe?.contentWindow) {
279
+ window.removeEventListener("message", readyHandler);
280
+ window.removeEventListener("message", errorHandler);
281
+ // Send content to sandbox
282
+ this.iframe?.contentWindow?.postMessage({
283
+ type: "sandbox-load",
284
+ sandboxId,
285
+ code: completeHtml,
286
+ }, "*");
287
+ }
288
+ };
289
+ const errorHandler = (e) => {
290
+ if (e.data.type === "sandbox-error" && e.source === this.iframe?.contentWindow) {
291
+ window.removeEventListener("message", readyHandler);
292
+ window.removeEventListener("message", errorHandler);
293
+ // Convert sandbox-error to execution-error for the execution consumer
294
+ window.postMessage({
295
+ sandboxId: sandboxId,
296
+ type: "execution-error",
297
+ error: { message: e.data.error, stack: e.data.stack },
298
+ }, "*");
299
+ }
300
+ };
301
+ window.addEventListener("message", readyHandler);
302
+ window.addEventListener("message", errorHandler);
303
+ this.appendChild(this.iframe);
304
+ }
305
+ else {
306
+ // Web mode: use srcdoc
307
+ this.iframe = document.createElement("iframe");
308
+ this.iframe.sandbox.add("allow-scripts", "allow-modals");
309
+ this.iframe.style.cssText = "width: 100%; height: 100%; border: none; display: none;";
310
+ this.iframe.srcdoc = completeHtml;
311
+ // Update router with iframe reference BEFORE appending to DOM
312
+ RUNTIME_MESSAGE_ROUTER.setSandboxIframe(sandboxId, this.iframe);
313
+ this.appendChild(this.iframe);
314
+ }
315
+ });
316
+ }
317
+ /**
318
+ * Validate HTML using DOMParser - returns error message if invalid, null if valid
319
+ * Note: JavaScript syntax validation is done in sandbox.js to avoid CSP restrictions
320
+ */
321
+ validateHtml(html) {
322
+ try {
323
+ const parser = new DOMParser();
324
+ const doc = parser.parseFromString(html, "text/html");
325
+ // Check for parser errors
326
+ const parserError = doc.querySelector("parsererror");
327
+ if (parserError) {
328
+ return parserError.textContent || "Unknown parse error";
329
+ }
330
+ return null;
331
+ }
332
+ catch (error) {
333
+ return error.message || "Unknown validation error";
334
+ }
335
+ }
336
+ /**
337
+ * Prepare complete HTML document with runtime + user code
338
+ * PUBLIC so HtmlArtifact can use it for download button
339
+ */
340
+ prepareHtmlDocument(sandboxId, userCode, providers = [], options) {
341
+ // Default options
342
+ const opts = {
343
+ isHtmlArtifact: false,
344
+ isStandalone: false,
345
+ ...options,
346
+ };
347
+ // Runtime script that will be injected
348
+ const runtime = this.getRuntimeScript(sandboxId, providers, opts.isStandalone || false);
349
+ // Only check for HTML tags if explicitly marked as HTML artifact
350
+ // For javascript_repl, userCode is JavaScript that may contain HTML in string literals
351
+ if (opts.isHtmlArtifact) {
352
+ // HTML Artifact - inject runtime into existing HTML
353
+ const headMatch = userCode.match(/<head[^>]*>/i);
354
+ if (headMatch) {
355
+ const index = headMatch.index + headMatch[0].length;
356
+ return userCode.slice(0, index) + runtime + userCode.slice(index);
357
+ }
358
+ const htmlMatch = userCode.match(/<html[^>]*>/i);
359
+ if (htmlMatch) {
360
+ const index = htmlMatch.index + htmlMatch[0].length;
361
+ return userCode.slice(0, index) + runtime + userCode.slice(index);
362
+ }
363
+ // Fallback: prepend runtime
364
+ return runtime + userCode;
365
+ }
366
+ else {
367
+ // REPL - wrap code in HTML with runtime and call complete() when done
368
+ // Escape </script> in user code to prevent premature tag closure
369
+ const escapedUserCode = escapeScriptContent(userCode);
370
+ return `<!DOCTYPE html>
371
+ <html>
372
+ <head>
373
+ ${runtime}
374
+ </head>
375
+ <body>
376
+ <script type="module">
377
+ (async () => {
378
+ try {
379
+ // Wrap user code in async function to capture return value
380
+ const userCodeFunc = async () => {
381
+ ${escapedUserCode}
382
+ };
383
+
384
+ const returnValue = await userCodeFunc();
385
+
386
+ // Call completion callbacks before complete()
387
+ if (window.__completionCallbacks && window.__completionCallbacks.length > 0) {
388
+ try {
389
+ await Promise.all(window.__completionCallbacks.map(cb => cb(true)));
390
+ } catch (e) {
391
+ console.error('Completion callback error:', e);
392
+ }
393
+ }
394
+
395
+ await window.complete(null, returnValue);
396
+ } catch (error) {
397
+
398
+ // Call completion callbacks before complete() (error path)
399
+ if (window.__completionCallbacks && window.__completionCallbacks.length > 0) {
400
+ try {
401
+ await Promise.all(window.__completionCallbacks.map(cb => cb(false)));
402
+ } catch (e) {
403
+ console.error('Completion callback error:', e);
404
+ }
405
+ }
406
+
407
+ await window.complete({
408
+ message: error?.message || String(error),
409
+ stack: error?.stack || new Error().stack
410
+ });
411
+ }
412
+ })();
413
+ </script>
414
+ </body>
415
+ </html>`;
416
+ }
417
+ }
418
+ /**
419
+ * Generate runtime script from providers
420
+ * @param sandboxId Unique sandbox ID
421
+ * @param providers Runtime providers
422
+ * @param isStandalone If true, skip runtime bridge and navigation interceptor (for standalone downloads)
423
+ */
424
+ getRuntimeScript(sandboxId, providers = [], isStandalone = false) {
425
+ // Collect all data from providers
426
+ const allData = {};
427
+ for (const provider of providers) {
428
+ Object.assign(allData, provider.getData());
429
+ }
430
+ // Generate bridge code (skip if standalone)
431
+ const bridgeCode = isStandalone
432
+ ? ""
433
+ : RuntimeMessageBridge.generateBridgeCode({
434
+ context: "sandbox-iframe",
435
+ sandboxId,
436
+ });
437
+ // Collect all runtime functions - pass sandboxId as string literal
438
+ const runtimeFunctions = [];
439
+ for (const provider of providers) {
440
+ runtimeFunctions.push(`(${provider.getRuntime().toString()})(${JSON.stringify(sandboxId)});`);
441
+ }
442
+ // Build script with HTML escaping
443
+ // Escape </script> to prevent premature tag closure in HTML parser
444
+ const dataInjection = Object.entries(allData)
445
+ .map(([key, value]) => {
446
+ const jsonStr = JSON.stringify(value).replace(/<\/script/gi, "<\\/script");
447
+ return `window.${key} = ${jsonStr};`;
448
+ })
449
+ .join("\n");
450
+ // TODO the font-size is needed, as chrome seems to inject a stylesheet into iframes
451
+ // found in an extension context like sidepanel, setting body { font-size: 75% }. It's
452
+ // definitely not our code doing that.
453
+ // See https://stackoverflow.com/questions/71480433/chrome-is-injecting-some-stylesheet-in-popup-ui-which-reduces-the-font-size-to-7
454
+ // Navigation interceptor (only if NOT standalone)
455
+ const navigationInterceptor = isStandalone
456
+ ? ""
457
+ : `
458
+ // Navigation interceptor: prevent all navigation and open externally
459
+ (function() {
460
+ // Intercept link clicks
461
+ document.addEventListener('click', function(e) {
462
+ const link = e.target.closest('a');
463
+ if (link && link.href) {
464
+ // Check if it's an external link (not javascript: or #hash)
465
+ if (link.href.startsWith('http://') || link.href.startsWith('https://')) {
466
+ e.preventDefault();
467
+ e.stopPropagation();
468
+ window.parent.postMessage({ type: 'open-external-url', url: link.href }, '*');
469
+ }
470
+ }
471
+ }, true);
472
+
473
+ // Intercept form submissions
474
+ document.addEventListener('submit', function(e) {
475
+ const form = e.target;
476
+ if (form && form.action) {
477
+ e.preventDefault();
478
+ e.stopPropagation();
479
+ window.parent.postMessage({ type: 'open-external-url', url: form.action }, '*');
480
+ }
481
+ }, true);
482
+
483
+ // Prevent window.location changes (only if not already redefined)
484
+ try {
485
+ const originalLocation = window.location;
486
+ Object.defineProperty(window, 'location', {
487
+ get: function() { return originalLocation; },
488
+ set: function(url) {
489
+ window.parent.postMessage({ type: 'open-external-url', url: url.toString() }, '*');
490
+ }
491
+ });
492
+ } catch (e) {
493
+ // Already defined, skip
494
+ }
495
+ })();
496
+ `;
497
+ return `<style>
498
+ html, body {
499
+ font-size: initial;
500
+ }
501
+ </style>
502
+ <script>
503
+ window.sandboxId = ${JSON.stringify(sandboxId)};
504
+ ${dataInjection}
505
+ ${bridgeCode}
506
+ ${runtimeFunctions.join("\n")}
507
+ ${navigationInterceptor}
508
+ </script>`;
509
+ }
510
+ };
511
+ __decorate([
512
+ property({ attribute: false })
513
+ ], SandboxIframe.prototype, "sandboxUrlProvider", void 0);
514
+ SandboxIframe = __decorate([
515
+ customElement("sandbox-iframe")
516
+ ], SandboxIframe);
517
+ export { SandboxIframe };
518
+ //# sourceMappingURL=SandboxedIframe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SandboxedIframe.js","sourceRoot":"","sources":["../../src/components/SandboxedIframe.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAwB,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAiCjG;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,IAAY,EAAU;IAClD,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;AAAA,CACjD;AAGM,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,UAAU;IACpC,MAAM,CAAqB;IAEnC;;;;OAIG;IAC6B,kBAAkB,CAAsB;IAExE,gBAAgB,GAAG;QAClB,OAAO,IAAI,CAAC;IAAA,CACZ;IAEQ,iBAAiB,GAAG;QAC5B,KAAK,CAAC,iBAAiB,EAAE,CAAC;IAAA,CAC1B;IAEQ,oBAAoB,GAAG;QAC/B,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,oEAAoE;QACpE,gEAAgE;QAChE,2EAA2E;QAC3E,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAA,CACtB;IAED;;;;;;OAMG;IACI,WAAW,CACjB,SAAiB,EACjB,WAAmB,EACnB,SAAS,GAA6B,EAAE,EACxC,SAAS,GAAsB,EAAE,EAC1B;QACP,wCAAwC;QACxC,IAAI,CAAC;YACJ,sBAAsB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACR,qCAAqC;QACtC,CAAC;QAED,SAAS,GAAG,CAAC,IAAI,sBAAsB,EAAE,EAAE,GAAG,SAAS,CAAC,CAAC;QAEzD,sBAAsB,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAExE,iEAAiE;QACjE,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE;YAChF,cAAc,EAAE,IAAI;YACpB,YAAY,EAAE,KAAK;SACnB,CAAC,CAAC;QAEH,+BAA+B;QAC/B,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QACxD,IAAI,eAAe,EAAE,CAAC;YACrB,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,eAAe,CAAC,CAAC;YAC1D,2CAA2C;YAC3C,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,0CAA0C,CAAC;YACvE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG;;;;qHAI6F,eAAe;;;IAGhI,CAAC;YACF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9B,OAAO;QACR,CAAC;QAED,mCAAmC;QACnC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAEtB,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC7B,4DAA4D;YAC5D,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACP,uBAAuB;YACvB,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAC7C,CAAC;IAAA,CACD;IAEO,iBAAiB,CAAC,SAAiB,EAAE,YAAoB,EAAQ;QACxE,wCAAwC;QACxC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,kBAAmB,EAAE,CAAC;QAE7C,8DAA8D;QAC9D,sBAAsB,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhE,oDAAoD;QACpD,MAAM,kBAAkB,GAAG,CAAC,CAAe,EAAE,EAAE,CAAC;YAC/C,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,mBAAmB,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC;gBACpF,yCAAyC;gBACzC,MAAM,SAAS,GAAI,UAAkB,CAAC,MAAM,CAAC;gBAC7C,IAAI,SAAS,EAAE,IAAI,EAAE,CAAC;oBACrB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC5C,CAAC;qBAAM,CAAC;oBACP,qCAAqC;oBACrC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBACnC,CAAC;YACF,CAAC;QAAA,CACD,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QAEvD,+DAA+D;QAC/D,MAAM,YAAY,GAAG,CAAC,CAAe,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC;gBAChF,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;gBACpD,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;gBAEpD,0BAA0B;gBAC1B,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,CACtC;oBACC,IAAI,EAAE,cAAc;oBACpB,SAAS;oBACT,IAAI,EAAE,YAAY;iBAClB,EACD,GAAG,CACH,CAAC;YACH,CAAC;QAAA,CACD,CAAC;QAEF,MAAM,YAAY,GAAG,CAAC,CAAe,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC;gBAChF,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;gBACpD,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;gBAEpD,4DAA4D;gBAC5D,+FAA+F;gBAC/F,yDAAyD;gBACzD,MAAM,CAAC,WAAW,CACjB;oBACC,SAAS,EAAE,SAAS;oBACpB,IAAI,EAAE,iBAAiB;oBACvB,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE;iBACrD,EACD,GAAG,CACH,CAAC;YACH,CAAC;QAAA,CACD,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACjD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAEjD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAAA,CAC9B;IAEO,aAAa,CAAC,SAAiB,EAAE,YAAoB,EAAQ;QACpE,4BAA4B;QAC5B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC;QAElC,8DAA8D;QAC9D,sBAAsB,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhE,oDAAoD;QACpD,MAAM,kBAAkB,GAAG,CAAC,CAAe,EAAE,EAAE,CAAC;YAC/C,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,mBAAmB,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC;gBACpF,qCAAqC;gBACrC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACnC,CAAC;QAAA,CACD,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QAEvD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAAA,CAC9B;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,OAAO,CACnB,SAAiB,EACjB,IAAY,EACZ,SAAS,GAA6B,EAAE,EACxC,SAAS,GAAsB,EAAE,EACjC,MAAoB,EACpB,cAAc,GAAY,KAAK,EACN;QACzB,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,sBAAsB,EAAE,CAAC;QACrD,SAAS,GAAG,CAAC,eAAe,EAAE,GAAG,SAAS,CAAC,CAAC;QAC5C,sBAAsB,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAExE,8CAA8C;QAC9C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAClC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,KAAK,GAAkB,EAAE,CAAC;QAChC,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;YACvC,sDAAsD;YACtD,MAAM,iBAAiB,GAAoB;gBAC1C,KAAK,CAAC,aAAa,CAAC,OAAY,EAAiB;oBAChD,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;wBACtC,KAAK,CAAC,IAAI,CAAC;4BACV,QAAQ,EAAE,OAAO,CAAC,QAAQ;4BAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;4BACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;yBAC1B,CAAC,CAAC;oBACJ,CAAC;yBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;wBAClD,SAAS,GAAG,IAAI,CAAC;wBACjB,OAAO,EAAE,CAAC;wBACV,OAAO,CAAC;4BACP,OAAO,EAAE,IAAI;4BACb,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE;4BAClC,KAAK;4BACL,WAAW,EAAE,OAAO,CAAC,WAAW;yBAChC,CAAC,CAAC;oBACJ,CAAC;yBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;wBAC/C,SAAS,GAAG,IAAI,CAAC;wBACjB,OAAO,EAAE,CAAC;wBACV,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;oBAC9F,CAAC;gBAAA,CACD;aACD,CAAC;YAEF,sBAAsB,CAAC,WAAW,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;YAEjE,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;gBACrB,4CAA4C;gBAC5C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;oBAClC,QAAQ,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,CAAC;gBACtC,CAAC;gBAED,sBAAsB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBACpD,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;gBACnD,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBACtB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;YAAA,CACxB,CAAC;YAEF,gBAAgB;YAChB,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC;gBAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;oBAChB,SAAS,GAAG,IAAI,CAAC;oBACjB,OAAO,EAAE,CAAC;oBACV,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBACxC,CAAC;YAAA,CACD,CAAC;YAEF,IAAI,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAChD,CAAC;YAED,+BAA+B;YAC/B,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;gBAClC,IAAI,CAAC,SAAS,EAAE,CAAC;oBAChB,SAAS,GAAG,IAAI,CAAC;oBACjB,OAAO,EAAE,CAAC;oBACV,OAAO,CAAC;wBACP,OAAO,EAAE,KAAK;wBACd,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE;wBAClC,KAAK,EAAE,EAAE,OAAO,EAAE,0BAA0B,EAAE,KAAK,EAAE,EAAE,EAAE;wBACzD,KAAK;qBACL,CAAC,CAAC;gBACJ,CAAC;YAAA,CACD,EAAE,MAAM,CAAC,CAAC;YAEX,oCAAoC;YACpC,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;gBACzE,cAAc;gBACd,YAAY,EAAE,KAAK;aACnB,CAAC,CAAC;YAEH,6CAA6C;YAC7C,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YACxD,IAAI,eAAe,EAAE,CAAC;gBACrB,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,eAAe,EAAE,CAAC,CAAC,CAAC;gBAChE,OAAO;YACR,CAAC;YAED,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC7B,iDAAiD;gBACjD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;gBACzD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,0CAA0C,CAAC;gBACvE,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAE5C,8DAA8D;gBAC9D,sBAAsB,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAEhE,sDAAsD;gBACtD,MAAM,YAAY,GAAG,CAAC,CAAe,EAAE,EAAE,CAAC;oBACzC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC;wBAChF,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;wBACpD,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;wBAEpD,0BAA0B;wBAC1B,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,CACtC;4BACC,IAAI,EAAE,cAAc;4BACpB,SAAS;4BACT,IAAI,EAAE,YAAY;yBAClB,EACD,GAAG,CACH,CAAC;oBACH,CAAC;gBAAA,CACD,CAAC;gBAEF,MAAM,YAAY,GAAG,CAAC,CAAe,EAAE,EAAE,CAAC;oBACzC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC;wBAChF,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;wBACpD,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;wBAEpD,sEAAsE;wBACtE,MAAM,CAAC,WAAW,CACjB;4BACC,SAAS,EAAE,SAAS;4BACpB,IAAI,EAAE,iBAAiB;4BACvB,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE;yBACrD,EACD,GAAG,CACH,CAAC;oBACH,CAAC;gBAAA,CACD,CAAC;gBAEF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;gBACjD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;gBAEjD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACP,uBAAuB;gBACvB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;gBACzD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,yDAAyD,CAAC;gBACtF,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC;gBAElC,8DAA8D;gBAC9D,sBAAsB,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAEhE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/B,CAAC;QAAA,CACD,CAAC,CAAC;IAAA,CACH;IAED;;;OAGG;IACK,YAAY,CAAC,IAAY,EAAiB;QACjD,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAEtD,0BAA0B;YAC1B,MAAM,WAAW,GAAG,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;YACrD,IAAI,WAAW,EAAE,CAAC;gBACjB,OAAO,WAAW,CAAC,WAAW,IAAI,qBAAqB,CAAC;YACzD,CAAC;YAED,OAAO,IAAI,CAAC;QACb,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC,OAAO,IAAI,0BAA0B,CAAC;QACpD,CAAC;IAAA,CACD;IAED;;;OAGG;IACI,mBAAmB,CACzB,SAAiB,EACjB,QAAgB,EAChB,SAAS,GAA6B,EAAE,EACxC,OAA4B,EACnB;QACT,kBAAkB;QAClB,MAAM,IAAI,GAAuB;YAChC,cAAc,EAAE,KAAK;YACrB,YAAY,EAAE,KAAK;YACnB,GAAG,OAAO;SACV,CAAC;QAEF,uCAAuC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,CAAC;QAExF,iEAAiE;QACjE,uFAAuF;QACvF,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,oDAAoD;YACpD,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACjD,IAAI,SAAS,EAAE,CAAC;gBACf,MAAM,KAAK,GAAG,SAAS,CAAC,KAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACrD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACnE,CAAC;YAED,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACjD,IAAI,SAAS,EAAE,CAAC;gBACf,MAAM,KAAK,GAAG,SAAS,CAAC,KAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACrD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACnE,CAAC;YAED,4BAA4B;YAC5B,OAAO,OAAO,GAAG,QAAQ,CAAC;QAC3B,CAAC;aAAM,CAAC;YACP,sEAAsE;YACtE,iEAAiE;YACjE,MAAM,eAAe,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAEtD,OAAO;;;GAGP,OAAO;;;;;;;;OAQH,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAkCd,CAAC;QACP,CAAC;IAAA,CACD;IAED;;;;;OAKG;IACK,gBAAgB,CACvB,SAAiB,EACjB,SAAS,GAA6B,EAAE,EACxC,YAAY,GAAY,KAAK,EACpB;QACT,kCAAkC;QAClC,MAAM,OAAO,GAAwB,EAAE,CAAC;QACxC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,4CAA4C;QAC5C,MAAM,UAAU,GAAG,YAAY;YAC9B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,oBAAoB,CAAC,kBAAkB,CAAC;gBACxC,OAAO,EAAE,gBAAgB;gBACzB,SAAS;aACT,CAAC,CAAC;QAEL,mEAAmE;QACnE,MAAM,gBAAgB,GAAa,EAAE,CAAC;QACtC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAClC,gBAAgB,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/F,CAAC;QAED,kCAAkC;QAClC,mEAAmE;QACnE,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;aAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;YAC3E,OAAO,UAAU,GAAG,MAAM,OAAO,GAAG,CAAC;QAAA,CACrC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,oFAAoF;QACpF,sFAAsF;QACtF,sCAAsC;QACtC,qIAAqI;QAErI,kDAAkD;QAClD,MAAM,qBAAqB,GAAG,YAAY;YACzC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCJ,CAAC;QAEA,OAAO;;;;;;qBAMY,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;EAC5C,aAAa;EACb,UAAU;EACV,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;EAC3B,qBAAqB;UACb,CAAC;IAAA,CACT;CACD,CAAA;AA1jBgC;IAA/B,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;yDAAyC;AAR5D,aAAa;IADzB,aAAa,CAAC,gBAAgB,CAAC;GACnB,aAAa,CAkkBzB"}
@@ -0,0 +1,19 @@
1
+ import type { AgentMessage, AgentTool } from "@draht/agent-core";
2
+ import type { ToolResultMessage } from "@draht/ai";
3
+ import { LitElement } from "lit";
4
+ export declare class StreamingMessageContainer extends LitElement {
5
+ tools: AgentTool[];
6
+ isStreaming: boolean;
7
+ pendingToolCalls?: Set<string>;
8
+ toolResultsById?: Map<string, ToolResultMessage>;
9
+ onCostClick?: () => void;
10
+ private _message;
11
+ private _pendingMessage;
12
+ private _updateScheduled;
13
+ private _immediateUpdate;
14
+ protected createRenderRoot(): HTMLElement | DocumentFragment;
15
+ connectedCallback(): void;
16
+ setMessage(message: AgentMessage | null, immediate?: boolean): void;
17
+ render(): import("lit").TemplateResult<1> | undefined;
18
+ }
19
+ //# sourceMappingURL=StreamingMessageContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamingMessageContainer.d.ts","sourceRoot":"","sources":["../../src/components/StreamingMessageContainer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAGvC,qBAAa,yBAA0B,SAAQ,UAAU;IAC7B,KAAK,EAAE,SAAS,EAAE,CAAM;IACtB,WAAW,UAAS;IACrB,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAEhD,OAAO,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,gBAAgB,CAAS;IAEjC,UAAmB,gBAAgB,IAAI,WAAW,GAAG,gBAAgB,CAEpE;IAEQ,iBAAiB,IAAI,IAAI,CAGjC;IAGM,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,EAAE,SAAS,UAAQ,QAiChE;IAEQ,MAAM,gDAkCd;CACD"}