@mariozechner/pi-web-ui 0.5.44 → 0.5.46

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 (346) hide show
  1. package/README.md +178 -99
  2. package/dist/ChatPanel.d.ts +15 -10
  3. package/dist/ChatPanel.d.ts.map +1 -1
  4. package/dist/ChatPanel.js +68 -100
  5. package/dist/ChatPanel.js.map +1 -1
  6. package/dist/{state/agent-session.d.ts → agent/agent.d.ts} +23 -19
  7. package/dist/agent/agent.d.ts.map +1 -0
  8. package/dist/{state/agent-session.js → agent/agent.js} +50 -32
  9. package/dist/agent/agent.js.map +1 -0
  10. package/dist/{state → agent}/transports/AppTransport.d.ts +1 -3
  11. package/dist/agent/transports/AppTransport.d.ts.map +1 -0
  12. package/dist/{state → agent}/transports/AppTransport.js +5 -4
  13. package/dist/{state → agent}/transports/AppTransport.js.map +1 -1
  14. package/dist/{state → agent}/transports/ProviderTransport.d.ts +1 -3
  15. package/dist/agent/transports/ProviderTransport.d.ts.map +1 -0
  16. package/dist/{state → agent}/transports/ProviderTransport.js +6 -7
  17. package/dist/agent/transports/ProviderTransport.js.map +1 -0
  18. package/dist/{state → agent}/transports/index.d.ts.map +1 -1
  19. package/dist/agent/transports/index.js.map +1 -0
  20. package/dist/{state → agent}/transports/proxy-types.d.ts.map +1 -1
  21. package/dist/agent/transports/proxy-types.js.map +1 -0
  22. package/dist/agent/transports/types.d.ts +12 -0
  23. package/dist/agent/transports/types.d.ts.map +1 -0
  24. package/dist/{state → agent}/transports/types.js.map +1 -1
  25. package/dist/{state → agent}/types.d.ts.map +1 -1
  26. package/dist/{state → agent}/types.js.map +1 -1
  27. package/dist/app.css +1 -1
  28. package/dist/components/AgentInterface.d.ts +7 -4
  29. package/dist/components/AgentInterface.d.ts.map +1 -1
  30. package/dist/components/AgentInterface.js +29 -17
  31. package/dist/components/AgentInterface.js.map +1 -1
  32. package/dist/components/ConsoleBlock.d.ts +1 -0
  33. package/dist/components/ConsoleBlock.d.ts.map +1 -1
  34. package/dist/components/ConsoleBlock.js +7 -1
  35. package/dist/components/ConsoleBlock.js.map +1 -1
  36. package/dist/components/ExpandableSection.d.ts +15 -0
  37. package/dist/components/ExpandableSection.d.ts.map +1 -0
  38. package/dist/components/ExpandableSection.js +63 -0
  39. package/dist/components/ExpandableSection.js.map +1 -0
  40. package/dist/components/MessageEditor.d.ts +8 -1
  41. package/dist/components/MessageEditor.d.ts.map +1 -1
  42. package/dist/components/MessageEditor.js +149 -6
  43. package/dist/components/MessageEditor.js.map +1 -1
  44. package/dist/components/MessageList.d.ts +3 -2
  45. package/dist/components/MessageList.d.ts.map +1 -1
  46. package/dist/components/MessageList.js +14 -1
  47. package/dist/components/MessageList.js.map +1 -1
  48. package/dist/components/Messages.d.ts +15 -6
  49. package/dist/components/Messages.d.ts.map +1 -1
  50. package/dist/components/Messages.js +17 -83
  51. package/dist/components/Messages.js.map +1 -1
  52. package/dist/components/ProviderKeyInput.d.ts.map +1 -1
  53. package/dist/components/ProviderKeyInput.js +6 -5
  54. package/dist/components/ProviderKeyInput.js.map +1 -1
  55. package/dist/components/SandboxedIframe.d.ts +29 -7
  56. package/dist/components/SandboxedIframe.d.ts.map +1 -1
  57. package/dist/components/SandboxedIframe.js +350 -282
  58. package/dist/components/SandboxedIframe.js.map +1 -1
  59. package/dist/components/message-renderer-registry.d.ts +12 -0
  60. package/dist/components/message-renderer-registry.d.ts.map +1 -0
  61. package/dist/components/message-renderer-registry.js +12 -0
  62. package/dist/components/message-renderer-registry.js.map +1 -0
  63. package/dist/components/sandbox/ArtifactsRuntimeProvider.d.ts +35 -0
  64. package/dist/components/sandbox/ArtifactsRuntimeProvider.d.ts.map +1 -0
  65. package/dist/components/sandbox/ArtifactsRuntimeProvider.js +189 -0
  66. package/dist/components/sandbox/ArtifactsRuntimeProvider.js.map +1 -0
  67. package/dist/components/sandbox/AttachmentsRuntimeProvider.d.ts +17 -0
  68. package/dist/components/sandbox/AttachmentsRuntimeProvider.d.ts.map +1 -0
  69. package/dist/components/sandbox/AttachmentsRuntimeProvider.js +64 -0
  70. package/dist/components/sandbox/AttachmentsRuntimeProvider.js.map +1 -0
  71. package/dist/components/sandbox/ConsoleRuntimeProvider.d.ts +42 -0
  72. package/dist/components/sandbox/ConsoleRuntimeProvider.d.ts.map +1 -0
  73. package/dist/components/sandbox/ConsoleRuntimeProvider.js +161 -0
  74. package/dist/components/sandbox/ConsoleRuntimeProvider.js.map +1 -0
  75. package/dist/components/sandbox/FileDownloadRuntimeProvider.d.ts +30 -0
  76. package/dist/components/sandbox/FileDownloadRuntimeProvider.d.ts.map +1 -0
  77. package/dist/components/sandbox/FileDownloadRuntimeProvider.js +97 -0
  78. package/dist/components/sandbox/FileDownloadRuntimeProvider.js.map +1 -0
  79. package/dist/components/sandbox/RuntimeMessageBridge.d.ts +19 -0
  80. package/dist/components/sandbox/RuntimeMessageBridge.d.ts.map +1 -0
  81. package/dist/components/sandbox/RuntimeMessageBridge.js +74 -0
  82. package/dist/components/sandbox/RuntimeMessageBridge.js.map +1 -0
  83. package/dist/components/sandbox/RuntimeMessageRouter.d.ts +65 -0
  84. package/dist/components/sandbox/RuntimeMessageRouter.d.ts.map +1 -0
  85. package/dist/components/sandbox/RuntimeMessageRouter.js +168 -0
  86. package/dist/components/sandbox/RuntimeMessageRouter.js.map +1 -0
  87. package/dist/components/sandbox/SandboxRuntimeProvider.d.ts +33 -0
  88. package/dist/components/sandbox/SandboxRuntimeProvider.d.ts.map +1 -0
  89. package/dist/components/sandbox/SandboxRuntimeProvider.js +2 -0
  90. package/dist/components/sandbox/SandboxRuntimeProvider.js.map +1 -0
  91. package/dist/dialogs/ApiKeyPromptDialog.d.ts.map +1 -1
  92. package/dist/dialogs/ApiKeyPromptDialog.js +2 -5
  93. package/dist/dialogs/ApiKeyPromptDialog.js.map +1 -1
  94. package/dist/dialogs/ModelSelector.js.map +1 -1
  95. package/dist/dialogs/PersistentStorageDialog.d.ts +17 -0
  96. package/dist/dialogs/PersistentStorageDialog.d.ts.map +1 -0
  97. package/dist/dialogs/PersistentStorageDialog.js +144 -0
  98. package/dist/dialogs/PersistentStorageDialog.js.map +1 -0
  99. package/dist/dialogs/SessionListDialog.d.ts +19 -0
  100. package/dist/dialogs/SessionListDialog.d.ts.map +1 -0
  101. package/dist/dialogs/SessionListDialog.js +152 -0
  102. package/dist/dialogs/SessionListDialog.js.map +1 -0
  103. package/dist/dialogs/SettingsDialog.d.ts.map +1 -1
  104. package/dist/dialogs/SettingsDialog.js +1 -0
  105. package/dist/dialogs/SettingsDialog.js.map +1 -1
  106. package/dist/index.d.ts +34 -16
  107. package/dist/index.d.ts.map +1 -1
  108. package/dist/index.js +32 -14
  109. package/dist/index.js.map +1 -1
  110. package/dist/prompts/prompts.d.ts +11 -0
  111. package/dist/prompts/prompts.d.ts.map +1 -0
  112. package/dist/prompts/prompts.js +272 -0
  113. package/dist/prompts/prompts.js.map +1 -0
  114. package/dist/storage/app-storage.d.ts +17 -12
  115. package/dist/storage/app-storage.d.ts.map +1 -1
  116. package/dist/storage/app-storage.js +13 -20
  117. package/dist/storage/app-storage.js.map +1 -1
  118. package/dist/storage/backends/indexeddb-storage-backend.d.ts +27 -0
  119. package/dist/storage/backends/indexeddb-storage-backend.d.ts.map +1 -0
  120. package/dist/storage/backends/indexeddb-storage-backend.js +166 -0
  121. package/dist/storage/backends/indexeddb-storage-backend.js.map +1 -0
  122. package/dist/storage/store.d.ts +23 -0
  123. package/dist/storage/store.d.ts.map +1 -0
  124. package/dist/storage/store.js +26 -0
  125. package/dist/storage/store.js.map +1 -0
  126. package/dist/storage/stores/provider-keys-store.d.ts +14 -0
  127. package/dist/storage/stores/provider-keys-store.d.ts.map +1 -0
  128. package/dist/storage/stores/provider-keys-store.js +27 -0
  129. package/dist/storage/stores/provider-keys-store.js.map +1 -0
  130. package/dist/storage/stores/sessions-store.d.ts +31 -0
  131. package/dist/storage/stores/sessions-store.d.ts.map +1 -0
  132. package/dist/storage/stores/sessions-store.js +113 -0
  133. package/dist/storage/stores/sessions-store.js.map +1 -0
  134. package/dist/storage/stores/settings-store.d.ts +14 -0
  135. package/dist/storage/stores/settings-store.d.ts.map +1 -0
  136. package/dist/storage/stores/settings-store.js +28 -0
  137. package/dist/storage/stores/settings-store.js.map +1 -0
  138. package/dist/storage/types.d.ts +156 -22
  139. package/dist/storage/types.d.ts.map +1 -1
  140. package/dist/tools/artifacts/ArtifactElement.d.ts +0 -1
  141. package/dist/tools/artifacts/ArtifactElement.d.ts.map +1 -1
  142. package/dist/tools/artifacts/ArtifactElement.js +0 -1
  143. package/dist/tools/artifacts/ArtifactElement.js.map +1 -1
  144. package/dist/tools/artifacts/ArtifactPill.d.ts +4 -0
  145. package/dist/tools/artifacts/ArtifactPill.d.ts.map +1 -0
  146. package/dist/tools/artifacts/ArtifactPill.js +22 -0
  147. package/dist/tools/artifacts/ArtifactPill.js.map +1 -0
  148. package/dist/tools/artifacts/Console.d.ts +18 -0
  149. package/dist/tools/artifacts/Console.d.ts.map +1 -0
  150. package/dist/tools/artifacts/Console.js +95 -0
  151. package/dist/tools/artifacts/Console.js.map +1 -0
  152. package/dist/tools/artifacts/DocxArtifact.d.ts +22 -0
  153. package/dist/tools/artifacts/DocxArtifact.d.ts.map +1 -0
  154. package/dist/tools/artifacts/DocxArtifact.js +208 -0
  155. package/dist/tools/artifacts/DocxArtifact.js.map +1 -0
  156. package/dist/tools/artifacts/ExcelArtifact.d.ts +24 -0
  157. package/dist/tools/artifacts/ExcelArtifact.d.ts.map +1 -0
  158. package/dist/tools/artifacts/ExcelArtifact.js +216 -0
  159. package/dist/tools/artifacts/ExcelArtifact.js.map +1 -0
  160. package/dist/tools/artifacts/GenericArtifact.d.ts +19 -0
  161. package/dist/tools/artifacts/GenericArtifact.d.ts.map +1 -0
  162. package/dist/tools/artifacts/GenericArtifact.js +117 -0
  163. package/dist/tools/artifacts/GenericArtifact.js.map +1 -0
  164. package/dist/tools/artifacts/HtmlArtifact.d.ts +8 -11
  165. package/dist/tools/artifacts/HtmlArtifact.d.ts.map +1 -1
  166. package/dist/tools/artifacts/HtmlArtifact.js +56 -88
  167. package/dist/tools/artifacts/HtmlArtifact.js.map +1 -1
  168. package/dist/tools/artifacts/ImageArtifact.d.ts +20 -0
  169. package/dist/tools/artifacts/ImageArtifact.d.ts.map +1 -0
  170. package/dist/tools/artifacts/ImageArtifact.js +120 -0
  171. package/dist/tools/artifacts/ImageArtifact.js.map +1 -0
  172. package/dist/tools/artifacts/MarkdownArtifact.d.ts +0 -1
  173. package/dist/tools/artifacts/MarkdownArtifact.d.ts.map +1 -1
  174. package/dist/tools/artifacts/MarkdownArtifact.js +0 -4
  175. package/dist/tools/artifacts/MarkdownArtifact.js.map +1 -1
  176. package/dist/tools/artifacts/PdfArtifact.d.ts +25 -0
  177. package/dist/tools/artifacts/PdfArtifact.d.ts.map +1 -0
  178. package/dist/tools/artifacts/PdfArtifact.js +184 -0
  179. package/dist/tools/artifacts/PdfArtifact.js.map +1 -0
  180. package/dist/tools/artifacts/SvgArtifact.d.ts +0 -1
  181. package/dist/tools/artifacts/SvgArtifact.d.ts.map +1 -1
  182. package/dist/tools/artifacts/SvgArtifact.js +0 -4
  183. package/dist/tools/artifacts/SvgArtifact.js.map +1 -1
  184. package/dist/tools/artifacts/TextArtifact.d.ts +0 -1
  185. package/dist/tools/artifacts/TextArtifact.d.ts.map +1 -1
  186. package/dist/tools/artifacts/TextArtifact.js +0 -4
  187. package/dist/tools/artifacts/TextArtifact.js.map +1 -1
  188. package/dist/tools/artifacts/artifacts-tool-renderer.d.ts +11 -0
  189. package/dist/tools/artifacts/artifacts-tool-renderer.d.ts.map +1 -0
  190. package/dist/tools/artifacts/artifacts-tool-renderer.js +262 -0
  191. package/dist/tools/artifacts/artifacts-tool-renderer.js.map +1 -0
  192. package/dist/tools/artifacts/artifacts.d.ts +10 -13
  193. package/dist/tools/artifacts/artifacts.d.ts.map +1 -1
  194. package/dist/tools/artifacts/artifacts.js +166 -344
  195. package/dist/tools/artifacts/artifacts.js.map +1 -1
  196. package/dist/tools/artifacts/index.d.ts +1 -0
  197. package/dist/tools/artifacts/index.d.ts.map +1 -1
  198. package/dist/tools/artifacts/index.js +1 -0
  199. package/dist/tools/artifacts/index.js.map +1 -1
  200. package/dist/tools/extract-document.d.ts +24 -0
  201. package/dist/tools/extract-document.d.ts.map +1 -0
  202. package/dist/tools/extract-document.js +193 -0
  203. package/dist/tools/extract-document.js.map +1 -0
  204. package/dist/tools/index.d.ts +9 -7
  205. package/dist/tools/index.d.ts.map +1 -1
  206. package/dist/tools/index.js +17 -13
  207. package/dist/tools/index.js.map +1 -1
  208. package/dist/tools/javascript-repl.d.ts +16 -15
  209. package/dist/tools/javascript-repl.d.ts.map +1 -1
  210. package/dist/tools/javascript-repl.js +101 -133
  211. package/dist/tools/javascript-repl.js.map +1 -1
  212. package/dist/tools/renderer-registry.d.ts +12 -0
  213. package/dist/tools/renderer-registry.d.ts.map +1 -1
  214. package/dist/tools/renderer-registry.js +78 -0
  215. package/dist/tools/renderer-registry.js.map +1 -1
  216. package/dist/tools/renderers/BashRenderer.d.ts +2 -4
  217. package/dist/tools/renderers/BashRenderer.d.ts.map +1 -1
  218. package/dist/tools/renderers/BashRenderer.js +30 -26
  219. package/dist/tools/renderers/BashRenderer.js.map +1 -1
  220. package/dist/tools/renderers/CalculateRenderer.d.ts +2 -4
  221. package/dist/tools/renderers/CalculateRenderer.d.ts.map +1 -1
  222. package/dist/tools/renderers/CalculateRenderer.js +32 -28
  223. package/dist/tools/renderers/CalculateRenderer.js.map +1 -1
  224. package/dist/tools/renderers/DefaultRenderer.d.ts +2 -4
  225. package/dist/tools/renderers/DefaultRenderer.d.ts.map +1 -1
  226. package/dist/tools/renderers/DefaultRenderer.js +78 -18
  227. package/dist/tools/renderers/DefaultRenderer.js.map +1 -1
  228. package/dist/tools/renderers/GetCurrentTimeRenderer.d.ts +2 -4
  229. package/dist/tools/renderers/GetCurrentTimeRenderer.d.ts.map +1 -1
  230. package/dist/tools/renderers/GetCurrentTimeRenderer.js +57 -21
  231. package/dist/tools/renderers/GetCurrentTimeRenderer.js.map +1 -1
  232. package/dist/tools/types.d.ts +5 -2
  233. package/dist/tools/types.d.ts.map +1 -1
  234. package/dist/utils/i18n.d.ts +424 -1
  235. package/dist/utils/i18n.d.ts.map +1 -1
  236. package/dist/utils/i18n.js +131 -7
  237. package/dist/utils/i18n.js.map +1 -1
  238. package/example/package.json +2 -1
  239. package/example/src/custom-messages.ts +112 -0
  240. package/example/src/main.ts +391 -38
  241. package/package.json +48 -43
  242. package/scripts/count-prompt-tokens.ts +88 -0
  243. package/src/ChatPanel.ts +93 -101
  244. package/src/{state/agent-session.ts → agent/agent.ts} +80 -55
  245. package/src/{state → agent}/transports/AppTransport.ts +6 -6
  246. package/src/{state → agent}/transports/ProviderTransport.ts +13 -7
  247. package/src/{state → agent}/transports/types.ts +8 -2
  248. package/src/components/AgentInterface.ts +32 -16
  249. package/src/components/ConsoleBlock.ts +5 -1
  250. package/src/components/ExpandableSection.ts +46 -0
  251. package/src/components/MessageEditor.ts +159 -5
  252. package/src/components/MessageList.ts +18 -3
  253. package/src/components/Messages.ts +48 -89
  254. package/src/components/ProviderKeyInput.ts +6 -5
  255. package/src/components/SandboxedIframe.ts +412 -321
  256. package/src/components/message-renderer-registry.ts +28 -0
  257. package/src/components/sandbox/ArtifactsRuntimeProvider.ts +219 -0
  258. package/src/components/sandbox/AttachmentsRuntimeProvider.ts +66 -0
  259. package/src/components/sandbox/ConsoleRuntimeProvider.ts +187 -0
  260. package/src/components/sandbox/FileDownloadRuntimeProvider.ts +110 -0
  261. package/src/components/sandbox/RuntimeMessageBridge.ts +82 -0
  262. package/src/components/sandbox/RuntimeMessageRouter.ts +216 -0
  263. package/src/components/sandbox/SandboxRuntimeProvider.ts +35 -0
  264. package/src/dialogs/ApiKeyPromptDialog.ts +2 -5
  265. package/src/dialogs/ModelSelector.ts +2 -2
  266. package/src/dialogs/PersistentStorageDialog.ts +141 -0
  267. package/src/dialogs/SessionListDialog.ts +148 -0
  268. package/src/dialogs/SettingsDialog.ts +1 -0
  269. package/src/index.ts +61 -20
  270. package/src/prompts/prompts.ts +282 -0
  271. package/src/storage/app-storage.ts +27 -24
  272. package/src/storage/backends/indexeddb-storage-backend.ts +193 -0
  273. package/src/storage/store.ts +33 -0
  274. package/src/storage/stores/provider-keys-store.ts +33 -0
  275. package/src/storage/stores/sessions-store.ts +130 -0
  276. package/src/storage/stores/settings-store.ts +34 -0
  277. package/src/storage/types.ts +182 -22
  278. package/src/tools/artifacts/ArtifactElement.ts +0 -1
  279. package/src/tools/artifacts/ArtifactPill.ts +25 -0
  280. package/src/tools/artifacts/Console.ts +93 -0
  281. package/src/tools/artifacts/DocxArtifact.ts +213 -0
  282. package/src/tools/artifacts/ExcelArtifact.ts +231 -0
  283. package/src/tools/artifacts/GenericArtifact.ts +117 -0
  284. package/src/tools/artifacts/HtmlArtifact.ts +64 -94
  285. package/src/tools/artifacts/ImageArtifact.ts +116 -0
  286. package/src/tools/artifacts/MarkdownArtifact.ts +0 -1
  287. package/src/tools/artifacts/PdfArtifact.ts +201 -0
  288. package/src/tools/artifacts/SvgArtifact.ts +0 -1
  289. package/src/tools/artifacts/TextArtifact.ts +0 -1
  290. package/src/tools/artifacts/artifacts-tool-renderer.ts +298 -0
  291. package/src/tools/artifacts/artifacts.ts +190 -366
  292. package/src/tools/artifacts/index.ts +1 -0
  293. package/src/tools/extract-document.ts +250 -0
  294. package/src/tools/index.ts +25 -14
  295. package/src/tools/javascript-repl.ts +138 -160
  296. package/src/tools/renderer-registry.ts +98 -0
  297. package/src/tools/renderers/BashRenderer.ts +33 -30
  298. package/src/tools/renderers/CalculateRenderer.ts +36 -31
  299. package/src/tools/renderers/DefaultRenderer.ts +84 -21
  300. package/src/tools/renderers/GetCurrentTimeRenderer.ts +68 -23
  301. package/src/tools/types.ts +10 -2
  302. package/src/utils/i18n.ts +203 -8
  303. package/dist/state/agent-session.d.ts.map +0 -1
  304. package/dist/state/agent-session.js.map +0 -1
  305. package/dist/state/transports/AppTransport.d.ts.map +0 -1
  306. package/dist/state/transports/ProviderTransport.d.ts.map +0 -1
  307. package/dist/state/transports/ProviderTransport.js.map +0 -1
  308. package/dist/state/transports/index.js.map +0 -1
  309. package/dist/state/transports/proxy-types.js.map +0 -1
  310. package/dist/state/transports/types.d.ts +0 -11
  311. package/dist/state/transports/types.d.ts.map +0 -1
  312. package/dist/storage/backends/chrome-storage-backend.d.ts +0 -18
  313. package/dist/storage/backends/chrome-storage-backend.d.ts.map +0 -1
  314. package/dist/storage/backends/chrome-storage-backend.js +0 -67
  315. package/dist/storage/backends/chrome-storage-backend.js.map +0 -1
  316. package/dist/storage/backends/indexeddb-backend.d.ts +0 -20
  317. package/dist/storage/backends/indexeddb-backend.d.ts.map +0 -1
  318. package/dist/storage/backends/indexeddb-backend.js +0 -89
  319. package/dist/storage/backends/indexeddb-backend.js.map +0 -1
  320. package/dist/storage/backends/local-storage-backend.d.ts +0 -18
  321. package/dist/storage/backends/local-storage-backend.d.ts.map +0 -1
  322. package/dist/storage/backends/local-storage-backend.js +0 -69
  323. package/dist/storage/backends/local-storage-backend.js.map +0 -1
  324. package/dist/storage/repositories/provider-keys-repository.d.ts +0 -34
  325. package/dist/storage/repositories/provider-keys-repository.d.ts.map +0 -1
  326. package/dist/storage/repositories/provider-keys-repository.js +0 -50
  327. package/dist/storage/repositories/provider-keys-repository.js.map +0 -1
  328. package/dist/storage/repositories/settings-repository.d.ts +0 -34
  329. package/dist/storage/repositories/settings-repository.d.ts.map +0 -1
  330. package/dist/storage/repositories/settings-repository.js +0 -46
  331. package/dist/storage/repositories/settings-repository.js.map +0 -1
  332. package/src/storage/backends/chrome-storage-backend.ts +0 -82
  333. package/src/storage/backends/indexeddb-backend.ts +0 -107
  334. package/src/storage/backends/local-storage-backend.ts +0 -74
  335. package/src/storage/repositories/provider-keys-repository.ts +0 -55
  336. package/src/storage/repositories/settings-repository.ts +0 -51
  337. /package/dist/{state → agent}/transports/index.d.ts +0 -0
  338. /package/dist/{state → agent}/transports/index.js +0 -0
  339. /package/dist/{state → agent}/transports/proxy-types.d.ts +0 -0
  340. /package/dist/{state → agent}/transports/proxy-types.js +0 -0
  341. /package/dist/{state → agent}/transports/types.js +0 -0
  342. /package/dist/{state → agent}/types.d.ts +0 -0
  343. /package/dist/{state → agent}/types.js +0 -0
  344. /package/src/{state → agent}/transports/index.ts +0 -0
  345. /package/src/{state → agent}/transports/proxy-types.ts +0 -0
  346. /package/src/{state → agent}/types.ts +0 -0
@@ -0,0 +1,213 @@
1
+ import { DownloadButton } from "@mariozechner/mini-lit";
2
+ import { renderAsync } from "docx-preview";
3
+ import { html, type TemplateResult } from "lit";
4
+ import { customElement, property, state } from "lit/decorators.js";
5
+ import { i18n } from "../../utils/i18n.js";
6
+ import { ArtifactElement } from "./ArtifactElement.js";
7
+
8
+ @customElement("docx-artifact")
9
+ export class DocxArtifact extends ArtifactElement {
10
+ @property({ type: String }) private _content = "";
11
+ @state() private error: string | null = null;
12
+
13
+ get content(): string {
14
+ return this._content;
15
+ }
16
+
17
+ set content(value: string) {
18
+ this._content = value;
19
+ this.error = null;
20
+ this.requestUpdate();
21
+ }
22
+
23
+ protected override createRenderRoot(): HTMLElement | DocumentFragment {
24
+ return this;
25
+ }
26
+
27
+ override connectedCallback(): void {
28
+ super.connectedCallback();
29
+ this.style.display = "block";
30
+ this.style.height = "100%";
31
+ }
32
+
33
+ private base64ToArrayBuffer(base64: string): ArrayBuffer {
34
+ // Remove data URL prefix if present
35
+ let base64Data = base64;
36
+ if (base64.startsWith("data:")) {
37
+ const base64Match = base64.match(/base64,(.+)/);
38
+ if (base64Match) {
39
+ base64Data = base64Match[1];
40
+ }
41
+ }
42
+
43
+ const binaryString = atob(base64Data);
44
+ const bytes = new Uint8Array(binaryString.length);
45
+ for (let i = 0; i < binaryString.length; i++) {
46
+ bytes[i] = binaryString.charCodeAt(i);
47
+ }
48
+ return bytes.buffer;
49
+ }
50
+
51
+ private decodeBase64(): Uint8Array {
52
+ let base64Data = this._content;
53
+ if (this._content.startsWith("data:")) {
54
+ const base64Match = this._content.match(/base64,(.+)/);
55
+ if (base64Match) {
56
+ base64Data = base64Match[1];
57
+ }
58
+ }
59
+
60
+ const binaryString = atob(base64Data);
61
+ const bytes = new Uint8Array(binaryString.length);
62
+ for (let i = 0; i < binaryString.length; i++) {
63
+ bytes[i] = binaryString.charCodeAt(i);
64
+ }
65
+ return bytes;
66
+ }
67
+
68
+ public getHeaderButtons() {
69
+ return html`
70
+ <div class="flex items-center gap-1">
71
+ ${DownloadButton({
72
+ content: this.decodeBase64(),
73
+ filename: this.filename,
74
+ mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
75
+ title: i18n("Download"),
76
+ })}
77
+ </div>
78
+ `;
79
+ }
80
+
81
+ override async updated(changedProperties: Map<string, any>) {
82
+ super.updated(changedProperties);
83
+
84
+ if (changedProperties.has("_content") && this._content && !this.error) {
85
+ await this.renderDocx();
86
+ }
87
+ }
88
+
89
+ private async renderDocx() {
90
+ const container = this.querySelector("#docx-container");
91
+ if (!container || !this._content) return;
92
+
93
+ try {
94
+ const arrayBuffer = this.base64ToArrayBuffer(this._content);
95
+
96
+ // Clear container first
97
+ container.innerHTML = "";
98
+
99
+ // Create a wrapper div for the document
100
+ const wrapper = document.createElement("div");
101
+ wrapper.className = "docx-wrapper-custom";
102
+ container.appendChild(wrapper);
103
+
104
+ // Render the DOCX file into the wrapper
105
+ await renderAsync(arrayBuffer, wrapper as HTMLElement, undefined, {
106
+ className: "docx",
107
+ inWrapper: true,
108
+ ignoreWidth: true,
109
+ ignoreHeight: false,
110
+ ignoreFonts: false,
111
+ breakPages: true,
112
+ ignoreLastRenderedPageBreak: true,
113
+ experimental: false,
114
+ trimXmlDeclaration: true,
115
+ useBase64URL: false,
116
+ renderHeaders: true,
117
+ renderFooters: true,
118
+ renderFootnotes: true,
119
+ renderEndnotes: true,
120
+ });
121
+
122
+ // Apply custom styles to match theme and fix sizing
123
+ const style = document.createElement("style");
124
+ style.textContent = `
125
+ #docx-container {
126
+ padding: 0;
127
+ }
128
+
129
+ #docx-container .docx-wrapper-custom {
130
+ max-width: 100%;
131
+ overflow-x: auto;
132
+ }
133
+
134
+ #docx-container .docx-wrapper {
135
+ max-width: 100% !important;
136
+ margin: 0 !important;
137
+ background: transparent !important;
138
+ padding: 0em !important;
139
+ }
140
+
141
+ #docx-container .docx-wrapper > section.docx {
142
+ box-shadow: none !important;
143
+ border: none !important;
144
+ border-radius: 0 !important;
145
+ margin: 0 !important;
146
+ padding: 2em !important;
147
+ background: white !important;
148
+ color: black !important;
149
+ max-width: 100% !important;
150
+ width: 100% !important;
151
+ min-width: 0 !important;
152
+ overflow-x: auto !important;
153
+ }
154
+
155
+ /* Fix tables and wide content */
156
+ #docx-container table {
157
+ max-width: 100% !important;
158
+ width: auto !important;
159
+ overflow-x: auto !important;
160
+ display: block !important;
161
+ }
162
+
163
+ #docx-container img {
164
+ max-width: 100% !important;
165
+ height: auto !important;
166
+ }
167
+
168
+ /* Fix paragraphs and text */
169
+ #docx-container p,
170
+ #docx-container span,
171
+ #docx-container div {
172
+ max-width: 100% !important;
173
+ word-wrap: break-word !important;
174
+ overflow-wrap: break-word !important;
175
+ }
176
+
177
+ /* Hide page breaks in web view */
178
+ #docx-container .docx-page-break {
179
+ display: none !important;
180
+ }
181
+ `;
182
+ container.appendChild(style);
183
+ } catch (error: any) {
184
+ console.error("Error rendering DOCX:", error);
185
+ this.error = error?.message || i18n("Failed to load document");
186
+ }
187
+ }
188
+
189
+ override render(): TemplateResult {
190
+ if (this.error) {
191
+ return html`
192
+ <div class="h-full flex items-center justify-center bg-background p-4">
193
+ <div class="bg-destructive/10 border border-destructive text-destructive p-4 rounded-lg max-w-2xl">
194
+ <div class="font-medium mb-1">${i18n("Error loading document")}</div>
195
+ <div class="text-sm opacity-90">${this.error}</div>
196
+ </div>
197
+ </div>
198
+ `;
199
+ }
200
+
201
+ return html`
202
+ <div class="h-full flex flex-col bg-background overflow-auto">
203
+ <div id="docx-container" class="flex-1 overflow-auto"></div>
204
+ </div>
205
+ `;
206
+ }
207
+ }
208
+
209
+ declare global {
210
+ interface HTMLElementTagNameMap {
211
+ "docx-artifact": DocxArtifact;
212
+ }
213
+ }
@@ -0,0 +1,231 @@
1
+ import { DownloadButton } from "@mariozechner/mini-lit";
2
+ import { html, type TemplateResult } from "lit";
3
+ import { customElement, property, state } from "lit/decorators.js";
4
+ import * as XLSX from "xlsx";
5
+ import { i18n } from "../../utils/i18n.js";
6
+ import { ArtifactElement } from "./ArtifactElement.js";
7
+
8
+ @customElement("excel-artifact")
9
+ export class ExcelArtifact extends ArtifactElement {
10
+ @property({ type: String }) private _content = "";
11
+ @state() private error: string | null = null;
12
+
13
+ get content(): string {
14
+ return this._content;
15
+ }
16
+
17
+ set content(value: string) {
18
+ this._content = value;
19
+ this.error = null;
20
+ this.requestUpdate();
21
+ }
22
+
23
+ protected override createRenderRoot(): HTMLElement | DocumentFragment {
24
+ return this;
25
+ }
26
+
27
+ override connectedCallback(): void {
28
+ super.connectedCallback();
29
+ this.style.display = "block";
30
+ this.style.height = "100%";
31
+ }
32
+
33
+ private base64ToArrayBuffer(base64: string): ArrayBuffer {
34
+ // Remove data URL prefix if present
35
+ let base64Data = base64;
36
+ if (base64.startsWith("data:")) {
37
+ const base64Match = base64.match(/base64,(.+)/);
38
+ if (base64Match) {
39
+ base64Data = base64Match[1];
40
+ }
41
+ }
42
+
43
+ const binaryString = atob(base64Data);
44
+ const bytes = new Uint8Array(binaryString.length);
45
+ for (let i = 0; i < binaryString.length; i++) {
46
+ bytes[i] = binaryString.charCodeAt(i);
47
+ }
48
+ return bytes.buffer;
49
+ }
50
+
51
+ private decodeBase64(): Uint8Array {
52
+ let base64Data = this._content;
53
+ if (this._content.startsWith("data:")) {
54
+ const base64Match = this._content.match(/base64,(.+)/);
55
+ if (base64Match) {
56
+ base64Data = base64Match[1];
57
+ }
58
+ }
59
+
60
+ const binaryString = atob(base64Data);
61
+ const bytes = new Uint8Array(binaryString.length);
62
+ for (let i = 0; i < binaryString.length; i++) {
63
+ bytes[i] = binaryString.charCodeAt(i);
64
+ }
65
+ return bytes;
66
+ }
67
+
68
+ private getMimeType(): string {
69
+ const ext = this.filename.split(".").pop()?.toLowerCase();
70
+ if (ext === "xls") return "application/vnd.ms-excel";
71
+ return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
72
+ }
73
+
74
+ public getHeaderButtons() {
75
+ return html`
76
+ <div class="flex items-center gap-1">
77
+ ${DownloadButton({
78
+ content: this.decodeBase64(),
79
+ filename: this.filename,
80
+ mimeType: this.getMimeType(),
81
+ title: i18n("Download"),
82
+ })}
83
+ </div>
84
+ `;
85
+ }
86
+
87
+ override async updated(changedProperties: Map<string, any>) {
88
+ super.updated(changedProperties);
89
+
90
+ if (changedProperties.has("_content") && this._content && !this.error) {
91
+ await this.renderExcel();
92
+ }
93
+ }
94
+
95
+ private async renderExcel() {
96
+ const container = this.querySelector("#excel-container");
97
+ if (!container || !this._content) return;
98
+
99
+ try {
100
+ const arrayBuffer = this.base64ToArrayBuffer(this._content);
101
+ const workbook = XLSX.read(arrayBuffer, { type: "array" });
102
+
103
+ container.innerHTML = "";
104
+ const wrapper = document.createElement("div");
105
+ wrapper.className = "overflow-auto h-full flex flex-col";
106
+ container.appendChild(wrapper);
107
+
108
+ // Create tabs for multiple sheets
109
+ if (workbook.SheetNames.length > 1) {
110
+ const tabContainer = document.createElement("div");
111
+ tabContainer.className = "flex gap-2 mb-4 border-b border-border sticky top-0 bg-background z-10";
112
+
113
+ const sheetContents: HTMLElement[] = [];
114
+
115
+ workbook.SheetNames.forEach((sheetName, index) => {
116
+ // Create tab button
117
+ const tab = document.createElement("button");
118
+ tab.textContent = sheetName;
119
+ tab.className =
120
+ index === 0
121
+ ? "px-4 py-2 text-sm font-medium border-b-2 border-primary text-primary"
122
+ : "px-4 py-2 text-sm font-medium text-muted-foreground hover:text-foreground hover:border-b-2 hover:border-border transition-colors";
123
+
124
+ // Create sheet content
125
+ const sheetDiv = document.createElement("div");
126
+ sheetDiv.style.display = index === 0 ? "flex" : "none";
127
+ sheetDiv.className = "flex-1 overflow-auto";
128
+ sheetDiv.appendChild(this.renderExcelSheet(workbook.Sheets[sheetName], sheetName));
129
+ sheetContents.push(sheetDiv);
130
+
131
+ // Tab click handler
132
+ tab.onclick = () => {
133
+ // Update tab styles
134
+ tabContainer.querySelectorAll("button").forEach((btn, btnIndex) => {
135
+ if (btnIndex === index) {
136
+ btn.className = "px-4 py-2 text-sm font-medium border-b-2 border-primary text-primary";
137
+ } else {
138
+ btn.className =
139
+ "px-4 py-2 text-sm font-medium text-muted-foreground hover:text-foreground hover:border-b-2 hover:border-border transition-colors";
140
+ }
141
+ });
142
+ // Show/hide sheets
143
+ sheetContents.forEach((content, contentIndex) => {
144
+ content.style.display = contentIndex === index ? "flex" : "none";
145
+ });
146
+ };
147
+
148
+ tabContainer.appendChild(tab);
149
+ });
150
+
151
+ wrapper.appendChild(tabContainer);
152
+ sheetContents.forEach((content) => {
153
+ wrapper.appendChild(content);
154
+ });
155
+ } else {
156
+ // Single sheet
157
+ const sheetName = workbook.SheetNames[0];
158
+ wrapper.appendChild(this.renderExcelSheet(workbook.Sheets[sheetName], sheetName));
159
+ }
160
+ } catch (error: any) {
161
+ console.error("Error rendering Excel:", error);
162
+ this.error = error?.message || i18n("Failed to load spreadsheet");
163
+ }
164
+ }
165
+
166
+ private renderExcelSheet(worksheet: any, sheetName: string): HTMLElement {
167
+ const sheetDiv = document.createElement("div");
168
+
169
+ // Generate HTML table
170
+ const htmlTable = XLSX.utils.sheet_to_html(worksheet, { id: `sheet-${sheetName}` });
171
+ const tempDiv = document.createElement("div");
172
+ tempDiv.innerHTML = htmlTable;
173
+
174
+ // Find and style the table
175
+ const table = tempDiv.querySelector("table");
176
+ if (table) {
177
+ table.className = "w-full border-collapse text-foreground";
178
+
179
+ // Style all cells
180
+ table.querySelectorAll("td, th").forEach((cell) => {
181
+ const cellEl = cell as HTMLElement;
182
+ cellEl.className = "border border-border px-3 py-2 text-sm text-left";
183
+ });
184
+
185
+ // Style header row
186
+ const headerCells = table.querySelectorAll("thead th, tr:first-child td");
187
+ if (headerCells.length > 0) {
188
+ headerCells.forEach((th) => {
189
+ const thEl = th as HTMLElement;
190
+ thEl.className =
191
+ "border border-border px-3 py-2 text-sm font-semibold bg-muted text-foreground sticky top-0";
192
+ });
193
+ }
194
+
195
+ // Alternate row colors
196
+ table.querySelectorAll("tbody tr:nth-child(even)").forEach((row) => {
197
+ const rowEl = row as HTMLElement;
198
+ rowEl.className = "bg-muted/30";
199
+ });
200
+
201
+ sheetDiv.appendChild(table);
202
+ }
203
+
204
+ return sheetDiv;
205
+ }
206
+
207
+ override render(): TemplateResult {
208
+ if (this.error) {
209
+ return html`
210
+ <div class="h-full flex items-center justify-center bg-background p-4">
211
+ <div class="bg-destructive/10 border border-destructive text-destructive p-4 rounded-lg max-w-2xl">
212
+ <div class="font-medium mb-1">${i18n("Error loading spreadsheet")}</div>
213
+ <div class="text-sm opacity-90">${this.error}</div>
214
+ </div>
215
+ </div>
216
+ `;
217
+ }
218
+
219
+ return html`
220
+ <div class="h-full flex flex-col bg-background overflow-auto">
221
+ <div id="excel-container" class="flex-1 overflow-auto"></div>
222
+ </div>
223
+ `;
224
+ }
225
+ }
226
+
227
+ declare global {
228
+ interface HTMLElementTagNameMap {
229
+ "excel-artifact": ExcelArtifact;
230
+ }
231
+ }
@@ -0,0 +1,117 @@
1
+ import { DownloadButton } from "@mariozechner/mini-lit";
2
+ import { html, type TemplateResult } from "lit";
3
+ import { customElement, property } from "lit/decorators.js";
4
+ import { i18n } from "../../utils/i18n.js";
5
+ import { ArtifactElement } from "./ArtifactElement.js";
6
+
7
+ @customElement("generic-artifact")
8
+ export class GenericArtifact extends ArtifactElement {
9
+ @property({ type: String }) private _content = "";
10
+
11
+ get content(): string {
12
+ return this._content;
13
+ }
14
+
15
+ set content(value: string) {
16
+ this._content = value;
17
+ this.requestUpdate();
18
+ }
19
+
20
+ protected override createRenderRoot(): HTMLElement | DocumentFragment {
21
+ return this;
22
+ }
23
+
24
+ override connectedCallback(): void {
25
+ super.connectedCallback();
26
+ this.style.display = "block";
27
+ this.style.height = "100%";
28
+ }
29
+
30
+ private decodeBase64(): Uint8Array {
31
+ let base64Data = this._content;
32
+ if (this._content.startsWith("data:")) {
33
+ const base64Match = this._content.match(/base64,(.+)/);
34
+ if (base64Match) {
35
+ base64Data = base64Match[1];
36
+ }
37
+ }
38
+
39
+ const binaryString = atob(base64Data);
40
+ const bytes = new Uint8Array(binaryString.length);
41
+ for (let i = 0; i < binaryString.length; i++) {
42
+ bytes[i] = binaryString.charCodeAt(i);
43
+ }
44
+ return bytes;
45
+ }
46
+
47
+ private getMimeType(): string {
48
+ const ext = this.filename.split(".").pop()?.toLowerCase();
49
+ // Add common MIME types
50
+ const mimeTypes: Record<string, string> = {
51
+ pdf: "application/pdf",
52
+ zip: "application/zip",
53
+ tar: "application/x-tar",
54
+ gz: "application/gzip",
55
+ rar: "application/vnd.rar",
56
+ "7z": "application/x-7z-compressed",
57
+ mp3: "audio/mpeg",
58
+ mp4: "video/mp4",
59
+ avi: "video/x-msvideo",
60
+ mov: "video/quicktime",
61
+ wav: "audio/wav",
62
+ ogg: "audio/ogg",
63
+ json: "application/json",
64
+ xml: "application/xml",
65
+ bin: "application/octet-stream",
66
+ };
67
+ return mimeTypes[ext || ""] || "application/octet-stream";
68
+ }
69
+
70
+ public getHeaderButtons() {
71
+ return html`
72
+ <div class="flex items-center gap-1">
73
+ ${DownloadButton({
74
+ content: this.decodeBase64(),
75
+ filename: this.filename,
76
+ mimeType: this.getMimeType(),
77
+ title: i18n("Download"),
78
+ })}
79
+ </div>
80
+ `;
81
+ }
82
+
83
+ override render(): TemplateResult {
84
+ return html`
85
+ <div class="h-full flex items-center justify-center bg-background p-8">
86
+ <div class="text-center max-w-md">
87
+ <div class="text-muted-foreground text-lg mb-4">
88
+ <svg
89
+ xmlns="http://www.w3.org/2000/svg"
90
+ class="h-16 w-16 mx-auto mb-4 text-muted-foreground/50"
91
+ fill="none"
92
+ viewBox="0 0 24 24"
93
+ stroke="currentColor"
94
+ >
95
+ <path
96
+ stroke-linecap="round"
97
+ stroke-linejoin="round"
98
+ stroke-width="1.5"
99
+ d="M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z"
100
+ />
101
+ </svg>
102
+ <div class="font-medium text-foreground mb-2">${this.filename}</div>
103
+ <p class="text-sm">
104
+ ${i18n("Preview not available for this file type.")} ${i18n("Click the download button above to view it on your computer.")}
105
+ </p>
106
+ </div>
107
+ </div>
108
+ </div>
109
+ `;
110
+ }
111
+ }
112
+
113
+ declare global {
114
+ interface HTMLElementTagNameMap {
115
+ "generic-artifact": GenericArtifact;
116
+ }
117
+ }