@ouhuang/pi-web-ui 0.65.1

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 (371) hide show
  1. package/CHANGELOG.md +349 -0
  2. package/README.md +601 -0
  3. package/dist/ChatPanel.d.ts +29 -0
  4. package/dist/ChatPanel.d.ts.map +1 -0
  5. package/dist/ChatPanel.js +194 -0
  6. package/dist/ChatPanel.js.map +1 -0
  7. package/dist/app.css +2 -0
  8. package/dist/components/AgentInterface.d.ts +40 -0
  9. package/dist/components/AgentInterface.d.ts.map +1 -0
  10. package/dist/components/AgentInterface.js +388 -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 +111 -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 +84 -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 +110 -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 +63 -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 +416 -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 +105 -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 +362 -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 +171 -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 +511 -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 +58 -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 +38 -0
  65. package/dist/components/sandbox/ArtifactsRuntimeProvider.d.ts.map +1 -0
  66. package/dist/components/sandbox/ArtifactsRuntimeProvider.js +189 -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 +64 -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 +161 -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 +97 -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 +168 -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 +79 -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 +28 -0
  105. package/dist/dialogs/ModelSelector.d.ts.map +1 -0
  106. package/dist/dialogs/ModelSelector.js +368 -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 +147 -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 +191 -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 +154 -0
  119. package/dist/dialogs/SessionListDialog.js.map +1 -0
  120. package/dist/dialogs/SettingsDialog.d.ts +31 -0
  121. package/dist/dialogs/SettingsDialog.d.ts.map +1 -0
  122. package/dist/dialogs/SettingsDialog.js +231 -0
  123. package/dist/dialogs/SettingsDialog.js.map +1 -0
  124. package/dist/index.d.ts +68 -0
  125. package/dist/index.d.ts.map +1 -0
  126. package/dist/index.js +71 -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 +38 -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 +166 -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 +26 -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 +11 -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 +95 -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 +208 -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 +216 -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 +117 -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 +189 -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 +120 -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 +82 -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 +184 -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 +78 -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 +144 -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 +272 -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 +659 -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 +120 -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/main.ts +421 -0
  294. package/example/tsconfig.json +23 -0
  295. package/example/vite.config.ts +6 -0
  296. package/package.json +51 -0
  297. package/scripts/count-prompt-tokens.ts +88 -0
  298. package/src/ChatPanel.ts +209 -0
  299. package/src/app.css +68 -0
  300. package/src/components/AgentInterface.ts +403 -0
  301. package/src/components/AttachmentTile.ts +107 -0
  302. package/src/components/ConsoleBlock.ts +72 -0
  303. package/src/components/CustomProviderCard.ts +100 -0
  304. package/src/components/ExpandableSection.ts +46 -0
  305. package/src/components/Input.ts +113 -0
  306. package/src/components/MessageEditor.ts +402 -0
  307. package/src/components/MessageList.ts +98 -0
  308. package/src/components/Messages.ts +384 -0
  309. package/src/components/ProviderKeyInput.ts +153 -0
  310. package/src/components/SandboxedIframe.ts +626 -0
  311. package/src/components/StreamingMessageContainer.ts +103 -0
  312. package/src/components/ThinkingBlock.ts +43 -0
  313. package/src/components/message-renderer-registry.ts +28 -0
  314. package/src/components/sandbox/ArtifactsRuntimeProvider.ts +220 -0
  315. package/src/components/sandbox/AttachmentsRuntimeProvider.ts +66 -0
  316. package/src/components/sandbox/ConsoleRuntimeProvider.ts +186 -0
  317. package/src/components/sandbox/FileDownloadRuntimeProvider.ts +110 -0
  318. package/src/components/sandbox/RuntimeMessageBridge.ts +82 -0
  319. package/src/components/sandbox/RuntimeMessageRouter.ts +216 -0
  320. package/src/components/sandbox/SandboxRuntimeProvider.ts +52 -0
  321. package/src/dialogs/ApiKeyPromptDialog.ts +75 -0
  322. package/src/dialogs/AttachmentOverlay.ts +636 -0
  323. package/src/dialogs/CustomProviderDialog.ts +274 -0
  324. package/src/dialogs/ModelSelector.ts +367 -0
  325. package/src/dialogs/PersistentStorageDialog.ts +144 -0
  326. package/src/dialogs/ProvidersModelsTab.ts +212 -0
  327. package/src/dialogs/SessionListDialog.ts +150 -0
  328. package/src/dialogs/SettingsDialog.ts +218 -0
  329. package/src/index.ts +120 -0
  330. package/src/prompts/prompts.ts +282 -0
  331. package/src/storage/app-storage.ts +60 -0
  332. package/src/storage/backends/indexeddb-storage-backend.ts +193 -0
  333. package/src/storage/store.ts +33 -0
  334. package/src/storage/stores/custom-providers-store.ts +62 -0
  335. package/src/storage/stores/provider-keys-store.ts +33 -0
  336. package/src/storage/stores/sessions-store.ts +136 -0
  337. package/src/storage/stores/settings-store.ts +34 -0
  338. package/src/storage/types.ts +206 -0
  339. package/src/tools/artifacts/ArtifactElement.ts +14 -0
  340. package/src/tools/artifacts/ArtifactPill.ts +26 -0
  341. package/src/tools/artifacts/Console.ts +93 -0
  342. package/src/tools/artifacts/DocxArtifact.ts +213 -0
  343. package/src/tools/artifacts/ExcelArtifact.ts +231 -0
  344. package/src/tools/artifacts/GenericArtifact.ts +117 -0
  345. package/src/tools/artifacts/HtmlArtifact.ts +195 -0
  346. package/src/tools/artifacts/ImageArtifact.ts +116 -0
  347. package/src/tools/artifacts/MarkdownArtifact.ts +82 -0
  348. package/src/tools/artifacts/PdfArtifact.ts +201 -0
  349. package/src/tools/artifacts/SvgArtifact.ts +78 -0
  350. package/src/tools/artifacts/TextArtifact.ts +148 -0
  351. package/src/tools/artifacts/artifacts-tool-renderer.ts +310 -0
  352. package/src/tools/artifacts/artifacts.ts +713 -0
  353. package/src/tools/artifacts/index.ts +7 -0
  354. package/src/tools/extract-document.ts +275 -0
  355. package/src/tools/index.ts +46 -0
  356. package/src/tools/javascript-repl.ts +293 -0
  357. package/src/tools/renderer-registry.ts +130 -0
  358. package/src/tools/renderers/BashRenderer.ts +52 -0
  359. package/src/tools/renderers/CalculateRenderer.ts +58 -0
  360. package/src/tools/renderers/DefaultRenderer.ts +103 -0
  361. package/src/tools/renderers/GetCurrentTimeRenderer.ts +92 -0
  362. package/src/tools/types.ts +15 -0
  363. package/src/utils/attachment-utils.ts +472 -0
  364. package/src/utils/auth-token.ts +22 -0
  365. package/src/utils/format.ts +42 -0
  366. package/src/utils/i18n.ts +653 -0
  367. package/src/utils/model-discovery.ts +277 -0
  368. package/src/utils/proxy-utils.ts +139 -0
  369. package/src/utils/test-sessions.ts +2357 -0
  370. package/tsconfig.build.json +26 -0
  371. package/tsconfig.json +13 -0
@@ -0,0 +1,511 @@
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
+ createRenderRoot() {
22
+ return this;
23
+ }
24
+ connectedCallback() {
25
+ super.connectedCallback();
26
+ }
27
+ disconnectedCallback() {
28
+ super.disconnectedCallback();
29
+ // Note: We don't unregister the sandbox here for loadContent() mode
30
+ // because the caller (HtmlArtifact) owns the sandbox lifecycle.
31
+ // For execute() mode, the sandbox is unregistered in the cleanup function.
32
+ this.iframe?.remove();
33
+ }
34
+ /**
35
+ * Load HTML content into sandbox and keep it displayed (for HTML artifacts)
36
+ * @param sandboxId Unique ID
37
+ * @param htmlContent Full HTML content
38
+ * @param providers Runtime providers to inject
39
+ * @param consumers Message consumers to register (optional)
40
+ */
41
+ loadContent(sandboxId, htmlContent, providers = [], consumers = []) {
42
+ // Unregister previous sandbox if exists
43
+ try {
44
+ RUNTIME_MESSAGE_ROUTER.unregisterSandbox(sandboxId);
45
+ }
46
+ catch {
47
+ // Sandbox might not exist, that's ok
48
+ }
49
+ providers = [new ConsoleRuntimeProvider(), ...providers];
50
+ RUNTIME_MESSAGE_ROUTER.registerSandbox(sandboxId, providers, consumers);
51
+ // loadContent is always used for HTML artifacts (not standalone)
52
+ const completeHtml = this.prepareHtmlDocument(sandboxId, htmlContent, providers, {
53
+ isHtmlArtifact: true,
54
+ isStandalone: false,
55
+ });
56
+ // Validate HTML before loading
57
+ const validationError = this.validateHtml(completeHtml);
58
+ if (validationError) {
59
+ console.error("HTML validation failed:", validationError);
60
+ // Show error in iframe instead of crashing
61
+ this.iframe?.remove();
62
+ this.iframe = document.createElement("iframe");
63
+ this.iframe.style.cssText = "width: 100%; height: 100%; border: none;";
64
+ this.iframe.srcdoc = `
65
+ <html>
66
+ <body style="font-family: monospace; padding: 20px; background: #fff; color: #000;">
67
+ <h3 style="color: #c00;">HTML Validation Error</h3>
68
+ <pre style="background: #f5f5f5; padding: 10px; border-radius: 4px; overflow-x: auto; white-space: pre-wrap;">${validationError}</pre>
69
+ </body>
70
+ </html>
71
+ `;
72
+ this.appendChild(this.iframe);
73
+ return;
74
+ }
75
+ // Remove previous iframe if exists
76
+ this.iframe?.remove();
77
+ if (this.sandboxUrlProvider) {
78
+ // Browser extension mode: use sandbox.html with postMessage
79
+ this.loadViaSandboxUrl(sandboxId, completeHtml);
80
+ }
81
+ else {
82
+ // Web mode: use srcdoc
83
+ this.loadViaSrcdoc(sandboxId, completeHtml);
84
+ }
85
+ }
86
+ loadViaSandboxUrl(sandboxId, completeHtml) {
87
+ // Create iframe pointing to sandbox URL
88
+ this.iframe = document.createElement("iframe");
89
+ this.iframe.sandbox.add("allow-scripts");
90
+ this.iframe.sandbox.add("allow-modals");
91
+ this.iframe.style.width = "100%";
92
+ this.iframe.style.height = "100%";
93
+ this.iframe.style.border = "none";
94
+ this.iframe.src = this.sandboxUrlProvider();
95
+ // Update router with iframe reference BEFORE appending to DOM
96
+ RUNTIME_MESSAGE_ROUTER.setSandboxIframe(sandboxId, this.iframe);
97
+ // Listen for open-external-url messages from iframe
98
+ const externalUrlHandler = (e) => {
99
+ if (e.data.type === "open-external-url" && e.source === this.iframe?.contentWindow) {
100
+ // Use chrome.tabs API to open in new tab
101
+ const chromeAPI = globalThis.chrome;
102
+ if (chromeAPI?.tabs) {
103
+ chromeAPI.tabs.create({ url: e.data.url });
104
+ }
105
+ else {
106
+ // Fallback for non-extension context
107
+ window.open(e.data.url, "_blank");
108
+ }
109
+ }
110
+ };
111
+ window.addEventListener("message", externalUrlHandler);
112
+ // Listen for sandbox-ready and sandbox-error messages directly
113
+ const readyHandler = (e) => {
114
+ if (e.data.type === "sandbox-ready" && e.source === this.iframe?.contentWindow) {
115
+ window.removeEventListener("message", readyHandler);
116
+ window.removeEventListener("message", errorHandler);
117
+ // Send content to sandbox
118
+ this.iframe?.contentWindow?.postMessage({
119
+ type: "sandbox-load",
120
+ sandboxId,
121
+ code: completeHtml,
122
+ }, "*");
123
+ }
124
+ };
125
+ const errorHandler = (e) => {
126
+ if (e.data.type === "sandbox-error" && e.source === this.iframe?.contentWindow) {
127
+ window.removeEventListener("message", readyHandler);
128
+ window.removeEventListener("message", errorHandler);
129
+ // The sandbox.js already sent us the error via postMessage.
130
+ // We need to convert it to an execution-error message that the execute() consumer will handle.
131
+ // Simulate receiving an execution-error from the sandbox
132
+ window.postMessage({
133
+ sandboxId: sandboxId,
134
+ type: "execution-error",
135
+ error: { message: e.data.error, stack: e.data.stack },
136
+ }, "*");
137
+ }
138
+ };
139
+ window.addEventListener("message", readyHandler);
140
+ window.addEventListener("message", errorHandler);
141
+ this.appendChild(this.iframe);
142
+ }
143
+ loadViaSrcdoc(sandboxId, completeHtml) {
144
+ // Create iframe with srcdoc
145
+ this.iframe = document.createElement("iframe");
146
+ this.iframe.sandbox.add("allow-scripts");
147
+ this.iframe.sandbox.add("allow-modals");
148
+ this.iframe.style.width = "100%";
149
+ this.iframe.style.height = "100%";
150
+ this.iframe.style.border = "none";
151
+ this.iframe.srcdoc = completeHtml;
152
+ // Update router with iframe reference BEFORE appending to DOM
153
+ RUNTIME_MESSAGE_ROUTER.setSandboxIframe(sandboxId, this.iframe);
154
+ // Listen for open-external-url messages from iframe
155
+ const externalUrlHandler = (e) => {
156
+ if (e.data.type === "open-external-url" && e.source === this.iframe?.contentWindow) {
157
+ // Fallback for non-extension context
158
+ window.open(e.data.url, "_blank");
159
+ }
160
+ };
161
+ window.addEventListener("message", externalUrlHandler);
162
+ this.appendChild(this.iframe);
163
+ }
164
+ /**
165
+ * Execute code in sandbox
166
+ * @param sandboxId Unique ID for this execution
167
+ * @param code User code (plain JS for REPL, or full HTML for artifacts)
168
+ * @param providers Runtime providers to inject
169
+ * @param consumers Additional message consumers (optional, execute has its own internal consumer)
170
+ * @param signal Abort signal
171
+ * @returns Promise resolving to execution result
172
+ */
173
+ async execute(sandboxId, code, providers = [], consumers = [], signal, isHtmlArtifact = false) {
174
+ if (signal?.aborted) {
175
+ throw new Error("Execution aborted");
176
+ }
177
+ const consoleProvider = new ConsoleRuntimeProvider();
178
+ providers = [consoleProvider, ...providers];
179
+ RUNTIME_MESSAGE_ROUTER.registerSandbox(sandboxId, providers, consumers);
180
+ // Notify providers that execution is starting
181
+ for (const provider of providers) {
182
+ provider.onExecutionStart?.(sandboxId, signal);
183
+ }
184
+ const files = [];
185
+ let completed = false;
186
+ return new Promise((resolve, reject) => {
187
+ // 4. Create execution consumer for lifecycle messages
188
+ const executionConsumer = {
189
+ async handleMessage(message) {
190
+ if (message.type === "file-returned") {
191
+ files.push({
192
+ fileName: message.fileName,
193
+ content: message.content,
194
+ mimeType: message.mimeType,
195
+ });
196
+ }
197
+ else if (message.type === "execution-complete") {
198
+ completed = true;
199
+ cleanup();
200
+ resolve({
201
+ success: true,
202
+ console: consoleProvider.getLogs(),
203
+ files,
204
+ returnValue: message.returnValue,
205
+ });
206
+ }
207
+ else if (message.type === "execution-error") {
208
+ completed = true;
209
+ cleanup();
210
+ resolve({ success: false, console: consoleProvider.getLogs(), error: message.error, files });
211
+ }
212
+ },
213
+ };
214
+ RUNTIME_MESSAGE_ROUTER.addConsumer(sandboxId, executionConsumer);
215
+ const cleanup = () => {
216
+ // Notify providers that execution has ended
217
+ for (const provider of providers) {
218
+ provider.onExecutionEnd?.(sandboxId);
219
+ }
220
+ RUNTIME_MESSAGE_ROUTER.unregisterSandbox(sandboxId);
221
+ signal?.removeEventListener("abort", abortHandler);
222
+ clearTimeout(timeoutId);
223
+ this.iframe?.remove();
224
+ this.iframe = undefined;
225
+ };
226
+ // Abort handler
227
+ const abortHandler = () => {
228
+ if (!completed) {
229
+ completed = true;
230
+ cleanup();
231
+ reject(new Error("Execution aborted"));
232
+ }
233
+ };
234
+ if (signal) {
235
+ signal.addEventListener("abort", abortHandler);
236
+ }
237
+ // Timeout handler (30 seconds)
238
+ const timeoutId = setTimeout(() => {
239
+ if (!completed) {
240
+ completed = true;
241
+ cleanup();
242
+ resolve({
243
+ success: false,
244
+ console: consoleProvider.getLogs(),
245
+ error: { message: "Execution timeout (120s)", stack: "" },
246
+ files,
247
+ });
248
+ }
249
+ }, 120000);
250
+ // 4. Prepare HTML and create iframe
251
+ const completeHtml = this.prepareHtmlDocument(sandboxId, code, providers, {
252
+ isHtmlArtifact,
253
+ isStandalone: false,
254
+ });
255
+ // 5. Validate HTML before sending to sandbox
256
+ const validationError = this.validateHtml(completeHtml);
257
+ if (validationError) {
258
+ reject(new Error(`HTML validation failed: ${validationError}`));
259
+ return;
260
+ }
261
+ if (this.sandboxUrlProvider) {
262
+ // Browser extension mode: wait for sandbox-ready
263
+ this.iframe = document.createElement("iframe");
264
+ this.iframe.sandbox.add("allow-scripts", "allow-modals");
265
+ this.iframe.style.cssText = "width: 100%; height: 100%; border: none;";
266
+ this.iframe.src = this.sandboxUrlProvider();
267
+ // Update router with iframe reference BEFORE appending to DOM
268
+ RUNTIME_MESSAGE_ROUTER.setSandboxIframe(sandboxId, this.iframe);
269
+ // Listen for sandbox-ready and sandbox-error messages
270
+ const readyHandler = (e) => {
271
+ if (e.data.type === "sandbox-ready" && e.source === this.iframe?.contentWindow) {
272
+ window.removeEventListener("message", readyHandler);
273
+ window.removeEventListener("message", errorHandler);
274
+ // Send content to sandbox
275
+ this.iframe?.contentWindow?.postMessage({
276
+ type: "sandbox-load",
277
+ sandboxId,
278
+ code: completeHtml,
279
+ }, "*");
280
+ }
281
+ };
282
+ const errorHandler = (e) => {
283
+ if (e.data.type === "sandbox-error" && e.source === this.iframe?.contentWindow) {
284
+ window.removeEventListener("message", readyHandler);
285
+ window.removeEventListener("message", errorHandler);
286
+ // Convert sandbox-error to execution-error for the execution consumer
287
+ window.postMessage({
288
+ sandboxId: sandboxId,
289
+ type: "execution-error",
290
+ error: { message: e.data.error, stack: e.data.stack },
291
+ }, "*");
292
+ }
293
+ };
294
+ window.addEventListener("message", readyHandler);
295
+ window.addEventListener("message", errorHandler);
296
+ this.appendChild(this.iframe);
297
+ }
298
+ else {
299
+ // Web mode: use srcdoc
300
+ this.iframe = document.createElement("iframe");
301
+ this.iframe.sandbox.add("allow-scripts", "allow-modals");
302
+ this.iframe.style.cssText = "width: 100%; height: 100%; border: none; display: none;";
303
+ this.iframe.srcdoc = completeHtml;
304
+ // Update router with iframe reference BEFORE appending to DOM
305
+ RUNTIME_MESSAGE_ROUTER.setSandboxIframe(sandboxId, this.iframe);
306
+ this.appendChild(this.iframe);
307
+ }
308
+ });
309
+ }
310
+ /**
311
+ * Validate HTML using DOMParser - returns error message if invalid, null if valid
312
+ * Note: JavaScript syntax validation is done in sandbox.js to avoid CSP restrictions
313
+ */
314
+ validateHtml(html) {
315
+ try {
316
+ const parser = new DOMParser();
317
+ const doc = parser.parseFromString(html, "text/html");
318
+ // Check for parser errors
319
+ const parserError = doc.querySelector("parsererror");
320
+ if (parserError) {
321
+ return parserError.textContent || "Unknown parse error";
322
+ }
323
+ return null;
324
+ }
325
+ catch (error) {
326
+ return error.message || "Unknown validation error";
327
+ }
328
+ }
329
+ /**
330
+ * Prepare complete HTML document with runtime + user code
331
+ * PUBLIC so HtmlArtifact can use it for download button
332
+ */
333
+ prepareHtmlDocument(sandboxId, userCode, providers = [], options) {
334
+ // Default options
335
+ const opts = {
336
+ isHtmlArtifact: false,
337
+ isStandalone: false,
338
+ ...options,
339
+ };
340
+ // Runtime script that will be injected
341
+ const runtime = this.getRuntimeScript(sandboxId, providers, opts.isStandalone || false);
342
+ // Only check for HTML tags if explicitly marked as HTML artifact
343
+ // For javascript_repl, userCode is JavaScript that may contain HTML in string literals
344
+ if (opts.isHtmlArtifact) {
345
+ // HTML Artifact - inject runtime into existing HTML
346
+ const headMatch = userCode.match(/<head[^>]*>/i);
347
+ if (headMatch) {
348
+ const index = headMatch.index + headMatch[0].length;
349
+ return userCode.slice(0, index) + runtime + userCode.slice(index);
350
+ }
351
+ const htmlMatch = userCode.match(/<html[^>]*>/i);
352
+ if (htmlMatch) {
353
+ const index = htmlMatch.index + htmlMatch[0].length;
354
+ return userCode.slice(0, index) + runtime + userCode.slice(index);
355
+ }
356
+ // Fallback: prepend runtime
357
+ return runtime + userCode;
358
+ }
359
+ else {
360
+ // REPL - wrap code in HTML with runtime and call complete() when done
361
+ // Escape </script> in user code to prevent premature tag closure
362
+ const escapedUserCode = escapeScriptContent(userCode);
363
+ return `<!DOCTYPE html>
364
+ <html>
365
+ <head>
366
+ ${runtime}
367
+ </head>
368
+ <body>
369
+ <script type="module">
370
+ (async () => {
371
+ try {
372
+ // Wrap user code in async function to capture return value
373
+ const userCodeFunc = async () => {
374
+ ${escapedUserCode}
375
+ };
376
+
377
+ const returnValue = await userCodeFunc();
378
+
379
+ // Call completion callbacks before complete()
380
+ if (window.__completionCallbacks && window.__completionCallbacks.length > 0) {
381
+ try {
382
+ await Promise.all(window.__completionCallbacks.map(cb => cb(true)));
383
+ } catch (e) {
384
+ console.error('Completion callback error:', e);
385
+ }
386
+ }
387
+
388
+ await window.complete(null, returnValue);
389
+ } catch (error) {
390
+
391
+ // Call completion callbacks before complete() (error path)
392
+ if (window.__completionCallbacks && window.__completionCallbacks.length > 0) {
393
+ try {
394
+ await Promise.all(window.__completionCallbacks.map(cb => cb(false)));
395
+ } catch (e) {
396
+ console.error('Completion callback error:', e);
397
+ }
398
+ }
399
+
400
+ await window.complete({
401
+ message: error?.message || String(error),
402
+ stack: error?.stack || new Error().stack
403
+ });
404
+ }
405
+ })();
406
+ </script>
407
+ </body>
408
+ </html>`;
409
+ }
410
+ }
411
+ /**
412
+ * Generate runtime script from providers
413
+ * @param sandboxId Unique sandbox ID
414
+ * @param providers Runtime providers
415
+ * @param isStandalone If true, skip runtime bridge and navigation interceptor (for standalone downloads)
416
+ */
417
+ getRuntimeScript(sandboxId, providers = [], isStandalone = false) {
418
+ // Collect all data from providers
419
+ const allData = {};
420
+ for (const provider of providers) {
421
+ Object.assign(allData, provider.getData());
422
+ }
423
+ // Generate bridge code (skip if standalone)
424
+ const bridgeCode = isStandalone
425
+ ? ""
426
+ : RuntimeMessageBridge.generateBridgeCode({
427
+ context: "sandbox-iframe",
428
+ sandboxId,
429
+ });
430
+ // Collect all runtime functions - pass sandboxId as string literal
431
+ const runtimeFunctions = [];
432
+ for (const provider of providers) {
433
+ runtimeFunctions.push(`(${provider.getRuntime().toString()})(${JSON.stringify(sandboxId)});`);
434
+ }
435
+ // Build script with HTML escaping
436
+ // Escape </script> to prevent premature tag closure in HTML parser
437
+ const dataInjection = Object.entries(allData)
438
+ .map(([key, value]) => {
439
+ const jsonStr = JSON.stringify(value).replace(/<\/script/gi, "<\\/script");
440
+ return `window.${key} = ${jsonStr};`;
441
+ })
442
+ .join("\n");
443
+ // TODO the font-size is needed, as chrome seems to inject a stylesheet into iframes
444
+ // found in an extension context like sidepanel, setting body { font-size: 75% }. It's
445
+ // definitely not our code doing that.
446
+ // See https://stackoverflow.com/questions/71480433/chrome-is-injecting-some-stylesheet-in-popup-ui-which-reduces-the-font-size-to-7
447
+ // Navigation interceptor (only if NOT standalone)
448
+ const navigationInterceptor = isStandalone
449
+ ? ""
450
+ : `
451
+ // Navigation interceptor: prevent all navigation and open externally
452
+ (function() {
453
+ // Intercept link clicks
454
+ document.addEventListener('click', function(e) {
455
+ const link = e.target.closest('a');
456
+ if (link && link.href) {
457
+ // Check if it's an external link (not javascript: or #hash)
458
+ if (link.href.startsWith('http://') || link.href.startsWith('https://')) {
459
+ e.preventDefault();
460
+ e.stopPropagation();
461
+ window.parent.postMessage({ type: 'open-external-url', url: link.href }, '*');
462
+ }
463
+ }
464
+ }, true);
465
+
466
+ // Intercept form submissions
467
+ document.addEventListener('submit', function(e) {
468
+ const form = e.target;
469
+ if (form && form.action) {
470
+ e.preventDefault();
471
+ e.stopPropagation();
472
+ window.parent.postMessage({ type: 'open-external-url', url: form.action }, '*');
473
+ }
474
+ }, true);
475
+
476
+ // Prevent window.location changes (only if not already redefined)
477
+ try {
478
+ const originalLocation = window.location;
479
+ Object.defineProperty(window, 'location', {
480
+ get: function() { return originalLocation; },
481
+ set: function(url) {
482
+ window.parent.postMessage({ type: 'open-external-url', url: url.toString() }, '*');
483
+ }
484
+ });
485
+ } catch (e) {
486
+ // Already defined, skip
487
+ }
488
+ })();
489
+ `;
490
+ return `<style>
491
+ html, body {
492
+ font-size: initial;
493
+ }
494
+ </style>
495
+ <script>
496
+ window.sandboxId = ${JSON.stringify(sandboxId)};
497
+ ${dataInjection}
498
+ ${bridgeCode}
499
+ ${runtimeFunctions.join("\n")}
500
+ ${navigationInterceptor}
501
+ </script>`;
502
+ }
503
+ };
504
+ __decorate([
505
+ property({ attribute: false })
506
+ ], SandboxIframe.prototype, "sandboxUrlProvider", void 0);
507
+ SandboxIframe = __decorate([
508
+ customElement("sandbox-iframe")
509
+ ], SandboxIframe);
510
+ export { SandboxIframe };
511
+ //# sourceMappingURL=SandboxedIframe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SandboxedIframe.js","sourceRoot":"","sources":["../../src/components/SandboxedIframe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { AgentMessage, AgentTool } from "@ouhuang/pi-agent-core";
2
+ import type { ToolResultMessage } from "@ouhuang/pi-ai";
3
+ import { LitElement } from "lit";
4
+ export declare class StreamingMessageContainer extends LitElement {
5
+ tools: AgentTool[];
6
+ isStreaming: boolean;
7
+ pendingToolCalls?: ReadonlySet<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-html").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,wBAAwB,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,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,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,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;cAEd,gBAAgB,IAAI,WAAW,GAAG,gBAAgB;IAI5D,iBAAiB,IAAI,IAAI;IAM3B,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,EAAE,SAAS,UAAQ;IAmCxD,MAAM;CAmCf"}