@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,176 @@
1
+ import type { AgentMessage, ThinkingLevel } from "@ouhuang/pi-agent-core";
2
+ import type { Model } from "@ouhuang/pi-ai";
3
+ /**
4
+ * Transaction interface for atomic operations across stores.
5
+ */
6
+ export interface StorageTransaction {
7
+ /**
8
+ * Get a value by key from a specific store.
9
+ */
10
+ get<T = unknown>(storeName: string, key: string): Promise<T | null>;
11
+ /**
12
+ * Set a value for a key in a specific store.
13
+ */
14
+ set<T = unknown>(storeName: string, key: string, value: T): Promise<void>;
15
+ /**
16
+ * Delete a key from a specific store.
17
+ */
18
+ delete(storeName: string, key: string): Promise<void>;
19
+ }
20
+ /**
21
+ * Base interface for all storage backends.
22
+ * Multi-store key-value storage abstraction that can be implemented
23
+ * by IndexedDB, remote APIs, or any other multi-collection storage system.
24
+ */
25
+ export interface StorageBackend {
26
+ /**
27
+ * Get a value by key from a specific store. Returns null if key doesn't exist.
28
+ */
29
+ get<T = unknown>(storeName: string, key: string): Promise<T | null>;
30
+ /**
31
+ * Set a value for a key in a specific store.
32
+ */
33
+ set<T = unknown>(storeName: string, key: string, value: T): Promise<void>;
34
+ /**
35
+ * Delete a key from a specific store.
36
+ */
37
+ delete(storeName: string, key: string): Promise<void>;
38
+ /**
39
+ * Get all keys from a specific store, optionally filtered by prefix.
40
+ */
41
+ keys(storeName: string, prefix?: string): Promise<string[]>;
42
+ /**
43
+ * Get all values from a specific store, ordered by an index.
44
+ * @param storeName - The store to query
45
+ * @param indexName - The index to use for ordering
46
+ * @param direction - Sort direction ("asc" or "desc")
47
+ */
48
+ getAllFromIndex<T = unknown>(storeName: string, indexName: string, direction?: "asc" | "desc"): Promise<T[]>;
49
+ /**
50
+ * Clear all data from a specific store.
51
+ */
52
+ clear(storeName: string): Promise<void>;
53
+ /**
54
+ * Check if a key exists in a specific store.
55
+ */
56
+ has(storeName: string, key: string): Promise<boolean>;
57
+ /**
58
+ * Execute atomic operations across multiple stores.
59
+ */
60
+ transaction<T>(storeNames: string[], mode: "readonly" | "readwrite", operation: (tx: StorageTransaction) => Promise<T>): Promise<T>;
61
+ /**
62
+ * Get storage quota information.
63
+ * Used for warning users when approaching limits.
64
+ */
65
+ getQuotaInfo(): Promise<{
66
+ usage: number;
67
+ quota: number;
68
+ percent: number;
69
+ }>;
70
+ /**
71
+ * Request persistent storage (prevents eviction).
72
+ * Returns true if granted, false otherwise.
73
+ */
74
+ requestPersistence(): Promise<boolean>;
75
+ }
76
+ /**
77
+ * Lightweight session metadata for listing and searching.
78
+ * Stored separately from full session data for performance.
79
+ */
80
+ export interface SessionMetadata {
81
+ /** Unique session identifier (UUID v4) */
82
+ id: string;
83
+ /** User-defined title or auto-generated from first message */
84
+ title: string;
85
+ /** ISO 8601 UTC timestamp of creation */
86
+ createdAt: string;
87
+ /** ISO 8601 UTC timestamp of last modification */
88
+ lastModified: string;
89
+ /** Total number of messages (user + assistant + tool results) */
90
+ messageCount: number;
91
+ /** Cumulative usage statistics */
92
+ usage: {
93
+ /** Total input tokens */
94
+ input: number;
95
+ /** Total output tokens */
96
+ output: number;
97
+ /** Total cache read tokens */
98
+ cacheRead: number;
99
+ /** Total cache write tokens */
100
+ cacheWrite: number;
101
+ /** Total tokens processed */
102
+ totalTokens: number;
103
+ /** Total cost breakdown */
104
+ cost: {
105
+ input: number;
106
+ output: number;
107
+ cacheRead: number;
108
+ cacheWrite: number;
109
+ total: number;
110
+ };
111
+ };
112
+ /** Last used thinking level */
113
+ thinkingLevel: ThinkingLevel;
114
+ /**
115
+ * Preview text for search and display.
116
+ * First 2KB of conversation text (user + assistant messages in sequence).
117
+ * Tool calls and tool results are excluded.
118
+ */
119
+ preview: string;
120
+ }
121
+ /**
122
+ * Full session data including all messages.
123
+ * Only loaded when user opens a specific session.
124
+ */
125
+ export interface SessionData {
126
+ /** Unique session identifier (UUID v4) */
127
+ id: string;
128
+ /** User-defined title or auto-generated from first message */
129
+ title: string;
130
+ /** Last selected model */
131
+ model: Model<any>;
132
+ /** Last selected thinking level */
133
+ thinkingLevel: ThinkingLevel;
134
+ /** Full conversation history (with attachments inline) */
135
+ messages: AgentMessage[];
136
+ /** ISO 8601 UTC timestamp of creation */
137
+ createdAt: string;
138
+ /** ISO 8601 UTC timestamp of last modification */
139
+ lastModified: string;
140
+ }
141
+ /**
142
+ * Configuration for IndexedDB backend.
143
+ */
144
+ export interface IndexedDBConfig {
145
+ /** Database name */
146
+ dbName: string;
147
+ /** Database version */
148
+ version: number;
149
+ /** Object stores to create */
150
+ stores: StoreConfig[];
151
+ }
152
+ /**
153
+ * Configuration for an IndexedDB object store.
154
+ */
155
+ export interface StoreConfig {
156
+ /** Store name */
157
+ name: string;
158
+ /** Key path (optional, for auto-extracting keys from objects) */
159
+ keyPath?: string;
160
+ /** Auto-increment keys (optional) */
161
+ autoIncrement?: boolean;
162
+ /** Indices to create on this store */
163
+ indices?: IndexConfig[];
164
+ }
165
+ /**
166
+ * Configuration for an IndexedDB index.
167
+ */
168
+ export interface IndexConfig {
169
+ /** Index name */
170
+ name: string;
171
+ /** Key path to index on */
172
+ keyPath: string;
173
+ /** Unique constraint (optional) */
174
+ unique?: boolean;
175
+ }
176
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC;;OAEG;IACH,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAEpE;;OAEG;IACH,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1E;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC9B;;OAEG;IACH,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAEpE;;OAEG;IACH,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1E;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtD;;OAEG;IACH,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE5D;;;;;OAKG;IACH,eAAe,CAAC,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAE7G;;OAEG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;OAEG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtD;;OAEG;IACH,WAAW,CAAC,CAAC,EACZ,UAAU,EAAE,MAAM,EAAE,EACpB,IAAI,EAAE,UAAU,GAAG,WAAW,EAC9B,SAAS,EAAE,CAAC,EAAE,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,GAC/C,OAAO,CAAC,CAAC,CAAC,CAAC;IAEd;;;OAGG;IACH,YAAY,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE3E;;;OAGG;IACH,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACvC;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC/B,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IAEX,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IAEd,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAElB,kDAAkD;IAClD,YAAY,EAAE,MAAM,CAAC;IAErB,iEAAiE;IACjE,YAAY,EAAE,MAAM,CAAC;IAErB,kCAAkC;IAClC,KAAK,EAAE;QACN,yBAAyB;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,0BAA0B;QAC1B,MAAM,EAAE,MAAM,CAAC;QACf,8BAA8B;QAC9B,SAAS,EAAE,MAAM,CAAC;QAClB,+BAA+B;QAC/B,UAAU,EAAE,MAAM,CAAC;QACnB,6BAA6B;QAC7B,WAAW,EAAE,MAAM,CAAC;QACpB,2BAA2B;QAC3B,IAAI,EAAE;YACL,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,MAAM,CAAC;YACf,SAAS,EAAE,MAAM,CAAC;YAClB,UAAU,EAAE,MAAM,CAAC;YACnB,KAAK,EAAE,MAAM,CAAC;SACd,CAAC;KACF,CAAC;IAEF,+BAA+B;IAC/B,aAAa,EAAE,aAAa,CAAC;IAE7B;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC3B,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IAEX,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IAEd,0BAA0B;IAC1B,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAElB,mCAAmC;IACnC,aAAa,EAAE,aAAa,CAAC;IAE7B,0DAA0D;IAC1D,QAAQ,EAAE,YAAY,EAAE,CAAC;IAEzB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAElB,kDAAkD;IAClD,YAAY,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,oBAAoB;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,MAAM,EAAE,WAAW,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC3B,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,sCAAsC;IACtC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC3B,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { LitElement, type TemplateResult } from "lit";
2
+ export declare abstract class ArtifactElement extends LitElement {
3
+ filename: string;
4
+ protected createRenderRoot(): HTMLElement | DocumentFragment;
5
+ abstract get content(): string;
6
+ abstract set content(value: string);
7
+ abstract getHeaderButtons(): TemplateResult | HTMLElement;
8
+ }
9
+ //# sourceMappingURL=ArtifactElement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArtifactElement.d.ts","sourceRoot":"","sources":["../../../src/tools/artifacts/ArtifactElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAEtD,8BAAsB,eAAgB,SAAQ,UAAU;IAChD,QAAQ,SAAM;cAEF,gBAAgB,IAAI,WAAW,GAAG,gBAAgB;IAIrE,aAAoB,OAAO,IAAI,MAAM,CAAC;IACtC,aAAoB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE;IAE3C,QAAQ,CAAC,gBAAgB,IAAI,cAAc,GAAG,WAAW;CACzD"}
@@ -0,0 +1,11 @@
1
+ import { LitElement } from "lit";
2
+ export class ArtifactElement extends LitElement {
3
+ constructor() {
4
+ super(...arguments);
5
+ this.filename = "";
6
+ }
7
+ createRenderRoot() {
8
+ return this; // light DOM for shared styles
9
+ }
10
+ }
11
+ //# sourceMappingURL=ArtifactElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArtifactElement.js","sourceRoot":"","sources":["../../../src/tools/artifacts/ArtifactElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAuB,MAAM,KAAK,CAAC;AAEtD,MAAM,OAAgB,eAAgB,SAAQ,UAAU;IAAxD;;QACQ,aAAQ,GAAG,EAAE,CAAC;IAUtB,CAAC;IARmB,gBAAgB;QAClC,OAAO,IAAI,CAAC,CAAC,8BAA8B;IAC5C,CAAC;CAMD"}
@@ -0,0 +1,4 @@
1
+ import { type TemplateResult } from "lit";
2
+ import type { ArtifactsPanel } from "./artifacts.js";
3
+ export declare function ArtifactPill(filename: string, artifactsPanel?: ArtifactsPanel): TemplateResult;
4
+ //# sourceMappingURL=ArtifactPill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArtifactPill.d.ts","sourceRoot":"","sources":["../../../src/tools/artifacts/ArtifactPill.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAEhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,cAAc,GAAG,cAAc,CAoB9F"}
@@ -0,0 +1,23 @@
1
+ import { icon } from "@mariozechner/mini-lit";
2
+ import { html } from "lit";
3
+ import { FileCode2 } from "lucide";
4
+ export function ArtifactPill(filename, artifactsPanel) {
5
+ const handleClick = (e) => {
6
+ if (!artifactsPanel)
7
+ return;
8
+ e.preventDefault();
9
+ e.stopPropagation();
10
+ // openArtifact will show the artifact and call onOpen() to open the panel if needed
11
+ artifactsPanel.openArtifact(filename);
12
+ };
13
+ return html `
14
+ <span
15
+ class="inline-flex items-center gap-1 px-2 py-0.5 text-xs bg-muted/50 border border-border rounded ${artifactsPanel ? "cursor-pointer hover:bg-muted transition-colors" : ""}"
16
+ @click=${artifactsPanel ? handleClick : null}
17
+ >
18
+ ${icon(FileCode2, "sm")}
19
+ <span class="text-foreground">${filename}</span>
20
+ </span>
21
+ `;
22
+ }
23
+ //# sourceMappingURL=ArtifactPill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArtifactPill.js","sourceRoot":"","sources":["../../../src/tools/artifacts/ArtifactPill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAuB,MAAM,KAAK,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAGnC,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,cAA+B;IAC7E,MAAM,WAAW,GAAG,CAAC,CAAQ,EAAE,EAAE;QAChC,IAAI,CAAC,cAAc;YAAE,OAAO;QAC5B,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,oFAAoF;QACpF,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,OAAO,IAAI,CAAA;;wGAGR,cAAc,CAAC,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAC,EACtE;YACS,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;;KAE1C,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;mCACS,QAAQ;;EAEzC,CAAC;AACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ import "@mariozechner/mini-lit/dist/CopyButton.js";
2
+ import { LitElement, type TemplateResult } from "lit";
3
+ interface LogEntry {
4
+ type: "log" | "error";
5
+ text: string;
6
+ }
7
+ export declare class Console extends LitElement {
8
+ logs: LogEntry[];
9
+ private expanded;
10
+ private autoscroll;
11
+ private logsContainerRef;
12
+ protected createRenderRoot(): this;
13
+ updated(): void;
14
+ private getLogsText;
15
+ render(): TemplateResult;
16
+ }
17
+ export {};
18
+ //# sourceMappingURL=Console.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Console.d.ts","sourceRoot":"","sources":["../../../src/tools/artifacts/Console.ts"],"names":[],"mappings":"AACA,OAAO,2CAA2C,CAAC;AACnD,OAAO,EAAQ,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAO5D,UAAU,QAAQ;IACjB,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACb;AAED,qBACa,OAAQ,SAAQ,UAAU;IACN,IAAI,EAAE,QAAQ,EAAE,CAAM;IAC7C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,gBAAgB,CAAoC;IAE5D,SAAS,CAAC,gBAAgB;IAIjB,OAAO;IAOhB,OAAO,CAAC,WAAW;IAIV,MAAM,IAAI,cAAc;CAwDjC"}
@@ -0,0 +1,95 @@
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 { icon } from "@mariozechner/mini-lit";
8
+ import "@mariozechner/mini-lit/dist/CopyButton.js";
9
+ import { html, LitElement } from "lit";
10
+ import { customElement, property, state } from "lit/decorators.js";
11
+ import { createRef, ref } from "lit/directives/ref.js";
12
+ import { repeat } from "lit/directives/repeat.js";
13
+ import { ChevronDown, ChevronRight, ChevronsDown, Lock } from "lucide";
14
+ import { i18n } from "../../utils/i18n.js";
15
+ let Console = class Console extends LitElement {
16
+ constructor() {
17
+ super(...arguments);
18
+ this.logs = [];
19
+ this.expanded = false;
20
+ this.autoscroll = true;
21
+ this.logsContainerRef = createRef();
22
+ }
23
+ createRenderRoot() {
24
+ return this; // light DOM
25
+ }
26
+ updated() {
27
+ // Autoscroll to bottom when new logs arrive
28
+ if (this.autoscroll && this.expanded && this.logsContainerRef.value) {
29
+ this.logsContainerRef.value.scrollTop = this.logsContainerRef.value.scrollHeight;
30
+ }
31
+ }
32
+ getLogsText() {
33
+ return this.logs.map((l) => `[${l.type}] ${l.text}`).join("\n");
34
+ }
35
+ render() {
36
+ const errorCount = this.logs.filter((l) => l.type === "error").length;
37
+ const summary = errorCount > 0
38
+ ? `${i18n("console")} (${errorCount} ${errorCount === 1 ? "error" : "errors"})`
39
+ : `${i18n("console")} (${this.logs.length})`;
40
+ return html `
41
+ <div class="border-t border-border p-2">
42
+ <div class="flex items-center gap-2 w-full">
43
+ <button
44
+ @click=${() => {
45
+ this.expanded = !this.expanded;
46
+ }}
47
+ class="flex items-center gap-2 text-sm text-muted-foreground hover:text-foreground transition-colors flex-1 text-left"
48
+ >
49
+ ${icon(this.expanded ? ChevronDown : ChevronRight, "sm")}
50
+ <span>${summary}</span>
51
+ </button>
52
+ ${this.expanded
53
+ ? html `
54
+ <button
55
+ @click=${() => {
56
+ this.autoscroll = !this.autoscroll;
57
+ }}
58
+ class="p-1 rounded transition-colors ${this.autoscroll ? "bg-accent text-accent-foreground" : "hover:bg-muted"}"
59
+ title=${this.autoscroll ? i18n("Autoscroll enabled") : i18n("Autoscroll disabled")}
60
+ >
61
+ ${icon(this.autoscroll ? ChevronsDown : Lock, "sm")}
62
+ </button>
63
+ <copy-button .text=${this.getLogsText()} title=${i18n("Copy logs")} .showText=${false} class="!bg-transparent hover:!bg-accent"></copy-button>
64
+ `
65
+ : ""}
66
+ </div>
67
+ ${this.expanded
68
+ ? html `
69
+ <div class="max-h-48 overflow-y-auto space-y-1 mt-2" ${ref(this.logsContainerRef)}>
70
+ ${repeat(this.logs, (_log, index) => index, (log) => html `
71
+ <div class="text-xs font-mono ${log.type === "error" ? "text-destructive" : "text-muted-foreground"}">
72
+ [${log.type}] ${log.text}
73
+ </div>
74
+ `)}
75
+ </div>
76
+ `
77
+ : ""}
78
+ </div>
79
+ `;
80
+ }
81
+ };
82
+ __decorate([
83
+ property({ attribute: false })
84
+ ], Console.prototype, "logs", void 0);
85
+ __decorate([
86
+ state()
87
+ ], Console.prototype, "expanded", void 0);
88
+ __decorate([
89
+ state()
90
+ ], Console.prototype, "autoscroll", void 0);
91
+ Console = __decorate([
92
+ customElement("artifact-console")
93
+ ], Console);
94
+ export { Console };
95
+ //# sourceMappingURL=Console.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Console.js","sourceRoot":"","sources":["../../../src/tools/artifacts/Console.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { type TemplateResult } from "lit";
2
+ import { ArtifactElement } from "./ArtifactElement.js";
3
+ export declare class DocxArtifact extends ArtifactElement {
4
+ private _content;
5
+ private error;
6
+ get content(): string;
7
+ set content(value: string);
8
+ protected createRenderRoot(): HTMLElement | DocumentFragment;
9
+ connectedCallback(): void;
10
+ private base64ToArrayBuffer;
11
+ private decodeBase64;
12
+ getHeaderButtons(): TemplateResult<1>;
13
+ updated(changedProperties: Map<string, any>): Promise<void>;
14
+ private renderDocx;
15
+ render(): TemplateResult;
16
+ }
17
+ declare global {
18
+ interface HTMLElementTagNameMap {
19
+ "docx-artifact": DocxArtifact;
20
+ }
21
+ }
22
+ //# sourceMappingURL=DocxArtifact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocxArtifact.d.ts","sourceRoot":"","sources":["../../../src/tools/artifacts/DocxArtifact.ts"],"names":[],"mappings":"AAEA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAGhD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,qBACa,YAAa,SAAQ,eAAe;IACpB,OAAO,CAAC,QAAQ,CAAM;IACzC,OAAO,CAAC,KAAK,CAAuB;IAE7C,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAIxB;cAEkB,gBAAgB,IAAI,WAAW,GAAG,gBAAgB;IAI5D,iBAAiB,IAAI,IAAI;IAMlC,OAAO,CAAC,mBAAmB;IAkB3B,OAAO,CAAC,YAAY;IAiBb,gBAAgB;IAaR,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;YAQ5C,UAAU;IAoGf,MAAM,IAAI,cAAc;CAkBjC;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,eAAe,EAAE,YAAY,CAAC;KAC9B;CACD"}
@@ -0,0 +1,208 @@
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 { DownloadButton } from "@mariozechner/mini-lit/dist/DownloadButton.js";
8
+ import { renderAsync } from "docx-preview";
9
+ import { html } from "lit";
10
+ import { customElement, property, state } from "lit/decorators.js";
11
+ import { i18n } from "../../utils/i18n.js";
12
+ import { ArtifactElement } from "./ArtifactElement.js";
13
+ let DocxArtifact = class DocxArtifact extends ArtifactElement {
14
+ constructor() {
15
+ super(...arguments);
16
+ this._content = "";
17
+ this.error = null;
18
+ }
19
+ get content() {
20
+ return this._content;
21
+ }
22
+ set content(value) {
23
+ this._content = value;
24
+ this.error = null;
25
+ this.requestUpdate();
26
+ }
27
+ createRenderRoot() {
28
+ return this;
29
+ }
30
+ connectedCallback() {
31
+ super.connectedCallback();
32
+ this.style.display = "block";
33
+ this.style.height = "100%";
34
+ }
35
+ base64ToArrayBuffer(base64) {
36
+ // Remove data URL prefix if present
37
+ let base64Data = base64;
38
+ if (base64.startsWith("data:")) {
39
+ const base64Match = base64.match(/base64,(.+)/);
40
+ if (base64Match) {
41
+ base64Data = base64Match[1];
42
+ }
43
+ }
44
+ const binaryString = atob(base64Data);
45
+ const bytes = new Uint8Array(binaryString.length);
46
+ for (let i = 0; i < binaryString.length; i++) {
47
+ bytes[i] = binaryString.charCodeAt(i);
48
+ }
49
+ return bytes.buffer;
50
+ }
51
+ decodeBase64() {
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
+ const binaryString = atob(base64Data);
60
+ const bytes = new Uint8Array(binaryString.length);
61
+ for (let i = 0; i < binaryString.length; i++) {
62
+ bytes[i] = binaryString.charCodeAt(i);
63
+ }
64
+ return bytes;
65
+ }
66
+ getHeaderButtons() {
67
+ return html `
68
+ <div class="flex items-center gap-1">
69
+ ${DownloadButton({
70
+ content: this.decodeBase64(),
71
+ filename: this.filename,
72
+ mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
73
+ title: i18n("Download"),
74
+ })}
75
+ </div>
76
+ `;
77
+ }
78
+ async updated(changedProperties) {
79
+ super.updated(changedProperties);
80
+ if (changedProperties.has("_content") && this._content && !this.error) {
81
+ await this.renderDocx();
82
+ }
83
+ }
84
+ async renderDocx() {
85
+ const container = this.querySelector("#docx-container");
86
+ if (!container || !this._content)
87
+ return;
88
+ try {
89
+ const arrayBuffer = this.base64ToArrayBuffer(this._content);
90
+ // Clear container first
91
+ container.innerHTML = "";
92
+ // Create a wrapper div for the document
93
+ const wrapper = document.createElement("div");
94
+ wrapper.className = "docx-wrapper-custom";
95
+ container.appendChild(wrapper);
96
+ // Render the DOCX file into the wrapper
97
+ await renderAsync(arrayBuffer, wrapper, undefined, {
98
+ className: "docx",
99
+ inWrapper: true,
100
+ ignoreWidth: true,
101
+ ignoreHeight: false,
102
+ ignoreFonts: false,
103
+ breakPages: true,
104
+ ignoreLastRenderedPageBreak: true,
105
+ experimental: false,
106
+ trimXmlDeclaration: true,
107
+ useBase64URL: false,
108
+ renderHeaders: true,
109
+ renderFooters: true,
110
+ renderFootnotes: true,
111
+ renderEndnotes: true,
112
+ });
113
+ // Apply custom styles to match theme and fix sizing
114
+ const style = document.createElement("style");
115
+ style.textContent = `
116
+ #docx-container {
117
+ padding: 0;
118
+ }
119
+
120
+ #docx-container .docx-wrapper-custom {
121
+ max-width: 100%;
122
+ overflow-x: auto;
123
+ }
124
+
125
+ #docx-container .docx-wrapper {
126
+ max-width: 100% !important;
127
+ margin: 0 !important;
128
+ background: transparent !important;
129
+ padding: 0em !important;
130
+ }
131
+
132
+ #docx-container .docx-wrapper > section.docx {
133
+ box-shadow: none !important;
134
+ border: none !important;
135
+ border-radius: 0 !important;
136
+ margin: 0 !important;
137
+ padding: 2em !important;
138
+ background: white !important;
139
+ color: black !important;
140
+ max-width: 100% !important;
141
+ width: 100% !important;
142
+ min-width: 0 !important;
143
+ overflow-x: auto !important;
144
+ }
145
+
146
+ /* Fix tables and wide content */
147
+ #docx-container table {
148
+ max-width: 100% !important;
149
+ width: auto !important;
150
+ overflow-x: auto !important;
151
+ display: block !important;
152
+ }
153
+
154
+ #docx-container img {
155
+ max-width: 100% !important;
156
+ height: auto !important;
157
+ }
158
+
159
+ /* Fix paragraphs and text */
160
+ #docx-container p,
161
+ #docx-container span,
162
+ #docx-container div {
163
+ max-width: 100% !important;
164
+ word-wrap: break-word !important;
165
+ overflow-wrap: break-word !important;
166
+ }
167
+
168
+ /* Hide page breaks in web view */
169
+ #docx-container .docx-page-break {
170
+ display: none !important;
171
+ }
172
+ `;
173
+ container.appendChild(style);
174
+ }
175
+ catch (error) {
176
+ console.error("Error rendering DOCX:", error);
177
+ this.error = error?.message || i18n("Failed to load document");
178
+ }
179
+ }
180
+ render() {
181
+ if (this.error) {
182
+ return html `
183
+ <div class="h-full flex items-center justify-center bg-background p-4">
184
+ <div class="bg-destructive/10 border border-destructive text-destructive p-4 rounded-lg max-w-2xl">
185
+ <div class="font-medium mb-1">${i18n("Error loading document")}</div>
186
+ <div class="text-sm opacity-90">${this.error}</div>
187
+ </div>
188
+ </div>
189
+ `;
190
+ }
191
+ return html `
192
+ <div class="h-full flex flex-col bg-background overflow-auto">
193
+ <div id="docx-container" class="flex-1 overflow-auto"></div>
194
+ </div>
195
+ `;
196
+ }
197
+ };
198
+ __decorate([
199
+ property({ type: String })
200
+ ], DocxArtifact.prototype, "_content", void 0);
201
+ __decorate([
202
+ state()
203
+ ], DocxArtifact.prototype, "error", void 0);
204
+ DocxArtifact = __decorate([
205
+ customElement("docx-artifact")
206
+ ], DocxArtifact);
207
+ export { DocxArtifact };
208
+ //# sourceMappingURL=DocxArtifact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocxArtifact.js","sourceRoot":"","sources":["../../../src/tools/artifacts/DocxArtifact.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { type TemplateResult } from "lit";
2
+ import { ArtifactElement } from "./ArtifactElement.js";
3
+ export declare class ExcelArtifact extends ArtifactElement {
4
+ private _content;
5
+ private error;
6
+ get content(): string;
7
+ set content(value: string);
8
+ protected createRenderRoot(): HTMLElement | DocumentFragment;
9
+ connectedCallback(): void;
10
+ private base64ToArrayBuffer;
11
+ private decodeBase64;
12
+ private getMimeType;
13
+ getHeaderButtons(): TemplateResult<1>;
14
+ updated(changedProperties: Map<string, any>): Promise<void>;
15
+ private renderExcel;
16
+ private renderExcelSheet;
17
+ render(): TemplateResult;
18
+ }
19
+ declare global {
20
+ interface HTMLElementTagNameMap {
21
+ "excel-artifact": ExcelArtifact;
22
+ }
23
+ }
24
+ //# sourceMappingURL=ExcelArtifact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExcelArtifact.d.ts","sourceRoot":"","sources":["../../../src/tools/artifacts/ExcelArtifact.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAIhD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,qBACa,aAAc,SAAQ,eAAe;IACrB,OAAO,CAAC,QAAQ,CAAM;IACzC,OAAO,CAAC,KAAK,CAAuB;IAE7C,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAIxB;cAEkB,gBAAgB,IAAI,WAAW,GAAG,gBAAgB;IAI5D,iBAAiB,IAAI,IAAI;IAMlC,OAAO,CAAC,mBAAmB;IAkB3B,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,WAAW;IAMZ,gBAAgB;IAaR,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;YAQ5C,WAAW;IAuEzB,OAAO,CAAC,gBAAgB;IAyCf,MAAM,IAAI,cAAc;CAkBjC;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,gBAAgB,EAAE,aAAa,CAAC;KAChC;CACD"}