@mariozechner/pi-web-ui 0.5.44 → 0.5.45

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
package/README.md CHANGED
@@ -6,13 +6,13 @@ Built with [mini-lit](https://github.com/mariozechner/mini-lit) web components a
6
6
 
7
7
  ## Features
8
8
 
9
- - 🎨 **Modern Chat Interface** - Complete chat UI with message history, streaming responses, and tool execution
10
- - 🔧 **Tool Support** - Built-in renderers for calculator, bash, time, and custom tools
11
- - 📎 **Attachments** - PDF, Office documents, images with preview and text extraction
12
- - 🎭 **Artifacts** - HTML, SVG, Markdown, and text artifact rendering with sandboxed execution
13
- - 🔌 **Pluggable Transports** - Direct API calls or proxy server support
14
- - 🌐 **Platform Agnostic** - Works in browser extensions, web apps, VS Code extensions, Electron apps
15
- - 🎯 **TypeScript** - Full type safety with TypeScript
9
+ - Modern Chat Interface - Complete chat UI with message history, streaming responses, and tool execution
10
+ - Tool Support - Built-in renderers for calculator, bash, time, and custom tools
11
+ - Attachments - PDF, Office documents, images with preview and text extraction
12
+ - Artifacts - HTML, SVG, Markdown, and text artifact rendering with sandboxed execution
13
+ - Pluggable Transports - Direct API calls or proxy server support
14
+ - Platform Agnostic - Works in browser extensions, web apps, VS Code extensions, Electron apps
15
+ - TypeScript - Full type safety with TypeScript
16
16
 
17
17
  ## Installation
18
18
 
@@ -25,14 +25,35 @@ npm install @mariozechner/pi-web-ui
25
25
  See the [example](./example) directory for a complete working application.
26
26
 
27
27
  ```typescript
28
- import { ChatPanel } from '@mariozechner/pi-web-ui';
29
- import { calculateTool, getCurrentTimeTool } from '@mariozechner/pi-ai';
28
+ import { Agent, ChatPanel, ProviderTransport, AppStorage,
29
+ SessionIndexedDBBackend, setAppStorage } from '@mariozechner/pi-web-ui';
30
+ import { getModel } from '@mariozechner/pi-ai';
30
31
  import '@mariozechner/pi-web-ui/app.css';
31
32
 
32
- // Create a chat panel
33
+ // Set up storage
34
+ const storage = new AppStorage({
35
+ sessions: new SessionIndexedDBBackend('my-app-sessions'),
36
+ });
37
+ setAppStorage(storage);
38
+
39
+ // Create transport
40
+ const transport = new ProviderTransport();
41
+
42
+ // Create agent
43
+ const agent = new Agent({
44
+ initialState: {
45
+ systemPrompt: 'You are a helpful assistant.',
46
+ model: getModel('anthropic', 'claude-sonnet-4-5-20250929'),
47
+ thinkingLevel: 'off',
48
+ messages: [],
49
+ tools: [],
50
+ },
51
+ transport,
52
+ });
53
+
54
+ // Create chat panel and attach agent
33
55
  const chatPanel = new ChatPanel();
34
- chatPanel.systemPrompt = 'You are a helpful assistant.';
35
- chatPanel.additionalTools = [calculateTool, getCurrentTimeTool];
56
+ await chatPanel.setAgent(agent);
36
57
 
37
58
  document.body.appendChild(chatPanel);
38
59
  ```
@@ -49,96 +70,94 @@ npm run dev
49
70
 
50
71
  ### ChatPanel
51
72
 
52
- The main chat interface component. Manages agent sessions, model selection, and conversation flow.
73
+ The main chat interface component. Displays messages, handles input, and coordinates with the Agent.
53
74
 
54
75
  ```typescript
55
- import { ChatPanel } from '@mariozechner/pi-web-ui';
76
+ import { ChatPanel, ApiKeyPromptDialog } from '@mariozechner/pi-web-ui';
56
77
 
57
- const panel = new ChatPanel({
58
- initialModel: 'anthropic/claude-sonnet-4-20250514',
59
- systemPrompt: 'You are a helpful assistant.',
60
- transportMode: 'direct', // or 'proxy'
61
- });
62
- ```
63
-
64
- ### AgentInterface
65
-
66
- Lower-level chat interface for custom implementations.
78
+ const chatPanel = new ChatPanel();
67
79
 
68
- ```typescript
69
- import { AgentInterface } from '@mariozechner/pi-web-ui';
80
+ // Optional: Handle API key prompts
81
+ chatPanel.onApiKeyRequired = async (provider: string) => {
82
+ return await ApiKeyPromptDialog.prompt(provider);
83
+ };
70
84
 
71
- const chat = new AgentInterface();
72
- chat.session = myAgentSession;
85
+ // Attach an agent
86
+ await chatPanel.setAgent(agent);
73
87
  ```
74
88
 
75
- ## State Management
76
-
77
- ### AgentSession
89
+ ### Agent
78
90
 
79
- Manages conversation state, tool execution, and streaming.
91
+ Core state manager that handles conversation state, tool execution, and streaming.
80
92
 
81
93
  ```typescript
82
- import { AgentSession, DirectTransport } from '@mariozechner/pi-web-ui';
83
- import { getModel, calculateTool, getCurrentTimeTool } from '@mariozechner/pi-ai';
94
+ import { Agent, ProviderTransport } from '@mariozechner/pi-web-ui';
95
+ import { getModel } from '@mariozechner/pi-ai';
84
96
 
85
- const session = new AgentSession({
97
+ const agent = new Agent({
86
98
  initialState: {
87
- model: getModel('anthropic', 'claude-3-5-haiku-20241022'),
99
+ model: getModel('anthropic', 'claude-sonnet-4-5-20250929'),
88
100
  systemPrompt: 'You are a helpful assistant.',
89
- tools: [calculateTool, getCurrentTimeTool],
101
+ thinkingLevel: 'off',
90
102
  messages: [],
103
+ tools: [],
91
104
  },
92
- transportMode: 'direct',
105
+ transport: new ProviderTransport(),
93
106
  });
94
107
 
95
- // Subscribe to state changes
96
- session.subscribe((state) => {
97
- console.log('Messages:', state.messages);
98
- console.log('Streaming:', state.streaming);
108
+ // Subscribe to events
109
+ agent.subscribe((event) => {
110
+ if (event.type === 'state-update') {
111
+ console.log('Messages:', event.state.messages);
112
+ }
99
113
  });
100
114
 
101
115
  // Send a message
102
- await session.send('What is 25 * 18?');
116
+ await agent.send('Hello!');
117
+ ```
118
+
119
+ ### AgentInterface
120
+
121
+ Lower-level chat interface for custom implementations. Used internally by ChatPanel.
122
+
123
+ ```typescript
124
+ import { AgentInterface } from '@mariozechner/pi-web-ui';
125
+
126
+ const chat = new AgentInterface();
127
+ await chat.setAgent(agent);
103
128
  ```
104
129
 
105
- ### Transports
130
+ ## Transports
106
131
 
107
132
  Transport layers handle communication with AI providers.
108
133
 
109
- #### DirectTransport
134
+ ### ProviderTransport
110
135
 
111
- Calls AI provider APIs directly from the browser using API keys stored locally.
136
+ The main transport that calls AI provider APIs using stored API keys.
112
137
 
113
138
  ```typescript
114
- import { DirectTransport, KeyStore } from '@mariozechner/pi-web-ui';
139
+ import { ProviderTransport } from '@mariozechner/pi-web-ui';
115
140
 
116
- // Set API keys
117
- const keyStore = new KeyStore();
118
- await keyStore.setKey('anthropic', 'sk-ant-...');
119
- await keyStore.setKey('openai', 'sk-...');
141
+ const transport = new ProviderTransport();
120
142
 
121
- // Use direct transport (default)
122
- const session = new AgentSession({
123
- transportMode: 'direct',
124
- // ...
143
+ const agent = new Agent({
144
+ initialState: { /* ... */ },
145
+ transport,
125
146
  });
126
147
  ```
127
148
 
128
- #### ProxyTransport
149
+ ### AppTransport
129
150
 
130
- Routes requests through a proxy server using auth tokens.
151
+ Alternative transport for proxying requests through a custom server.
131
152
 
132
153
  ```typescript
133
- import { ProxyTransport, setAuthToken } from '@mariozechner/pi-web-ui';
154
+ import { AppTransport } from '@mariozechner/pi-web-ui';
134
155
 
135
- // Set auth token
136
- setAuthToken('your-auth-token');
156
+ const transport = new AppTransport();
137
157
 
138
- // Use proxy transport
139
- const session = new AgentSession({
140
- transportMode: 'proxy',
141
- // ...
158
+ const agent = new Agent({
159
+ initialState: { /* ... */ },
160
+ transport,
142
161
  });
143
162
  ```
144
163
 
@@ -163,22 +182,46 @@ const myRenderer: ToolRenderer = {
163
182
  registerToolRenderer('my_tool', myRenderer);
164
183
  ```
165
184
 
166
- ## Artifacts
185
+ ## Storage
186
+
187
+ The package provides flexible storage backends for API keys, settings, and session persistence.
188
+
189
+ ### AppStorage
167
190
 
168
- Render rich content with sandboxed execution.
191
+ Central storage configuration for the application.
169
192
 
170
193
  ```typescript
171
- import { artifactTools } from '@mariozechner/pi-web-ui';
172
- import { getModel } from '@mariozechner/pi-ai';
194
+ import { AppStorage, setAppStorage, SessionIndexedDBBackend } from '@mariozechner/pi-web-ui';
173
195
 
174
- const session = new AgentSession({
175
- initialState: {
176
- tools: [...artifactTools],
177
- // ...
178
- }
196
+ const storage = new AppStorage({
197
+ sessions: new SessionIndexedDBBackend('my-app-sessions'),
179
198
  });
180
199
 
181
- // AI can now create HTML artifacts, SVG diagrams, etc.
200
+ setAppStorage(storage);
201
+ ```
202
+
203
+ ### Available Backends
204
+
205
+ - `LocalStorageBackend` - Uses browser localStorage
206
+ - `IndexedDBBackend` - Uses IndexedDB for larger data
207
+ - `SessionIndexedDBBackend` - Specialized for session storage
208
+ - `WebExtensionStorageBackend` - For browser extensions using chrome.storage API
209
+
210
+ ### Session Management
211
+
212
+ ```typescript
213
+ import { getAppStorage } from '@mariozechner/pi-web-ui';
214
+
215
+ const storage = getAppStorage();
216
+
217
+ // Save session
218
+ await storage.sessions?.saveSession(sessionId, agentState, undefined, title);
219
+
220
+ // Load session
221
+ const sessionData = await storage.sessions?.loadSession(sessionId);
222
+
223
+ // List sessions
224
+ const sessions = await storage.sessions?.listSessions();
182
225
  ```
183
226
 
184
227
  ## Styling
@@ -198,55 +241,91 @@ Or customize with your own Tailwind config:
198
241
  @tailwind utilities;
199
242
  ```
200
243
 
201
- ## Platform Integration
244
+ ## Dialogs
202
245
 
203
- ### Browser Extension
246
+ The package includes several dialog components for common interactions.
247
+
248
+ ### SettingsDialog
249
+
250
+ Settings dialog with tabbed interface for API keys, proxy configuration, etc.
204
251
 
205
252
  ```typescript
206
- import { ChatPanel, KeyStore } from '@mariozechner/pi-web-ui';
253
+ import { SettingsDialog, ApiKeysTab, ProxyTab } from '@mariozechner/pi-web-ui';
207
254
 
208
- // Use chrome.storage for persistence
209
- const keyStore = new KeyStore({
210
- get: async (key) => {
211
- const result = await chrome.storage.local.get(key);
212
- return result[key];
213
- },
214
- set: async (key, value) => {
215
- await chrome.storage.local.set({ [key]: value });
216
- }
255
+ // Open settings with tabs
256
+ SettingsDialog.open([new ApiKeysTab(), new ProxyTab()]);
257
+ ```
258
+
259
+ ### SessionListDialog
260
+
261
+ Display and load saved sessions.
262
+
263
+ ```typescript
264
+ import { SessionListDialog } from '@mariozechner/pi-web-ui';
265
+
266
+ SessionListDialog.open(async (sessionId) => {
267
+ await loadSession(sessionId);
217
268
  });
218
269
  ```
219
270
 
220
- ### Web Application
271
+ ### ApiKeyPromptDialog
272
+
273
+ Prompt user for API key when needed.
221
274
 
222
275
  ```typescript
223
- import { ChatPanel } from '@mariozechner/pi-web-ui';
276
+ import { ApiKeyPromptDialog } from '@mariozechner/pi-web-ui';
224
277
 
225
- // Uses localStorage by default
226
- const panel = new ChatPanel();
227
- document.querySelector('#app').appendChild(panel);
278
+ const apiKey = await ApiKeyPromptDialog.prompt('anthropic');
228
279
  ```
229
280
 
230
- ### VS Code Extension
281
+ ### PersistentStorageDialog
282
+
283
+ Request persistent storage permission.
231
284
 
232
285
  ```typescript
233
- import { AgentSession, DirectTransport } from '@mariozechner/pi-web-ui';
286
+ import { PersistentStorageDialog } from '@mariozechner/pi-web-ui';
234
287
 
235
- // Custom storage using VS Code's globalState
236
- const storage = {
237
- get: async (key) => context.globalState.get(key),
238
- set: async (key, value) => context.globalState.update(key, value)
239
- };
288
+ await PersistentStorageDialog.request();
289
+ ```
290
+
291
+ ## Platform Integration
292
+
293
+ ### Browser Extension
294
+
295
+ ```typescript
296
+ import { AppStorage, WebExtensionStorageBackend, Agent, ProviderTransport } from '@mariozechner/pi-web-ui';
297
+
298
+ const storage = new AppStorage({
299
+ providerKeys: new WebExtensionStorageBackend(),
300
+ settings: new WebExtensionStorageBackend(),
301
+ });
302
+ setAppStorage(storage);
303
+ ```
304
+
305
+ ### Web Application
306
+
307
+ ```typescript
308
+ import { AppStorage, SessionIndexedDBBackend, setAppStorage } from '@mariozechner/pi-web-ui';
309
+
310
+ const storage = new AppStorage({
311
+ sessions: new SessionIndexedDBBackend('my-app-sessions'),
312
+ });
313
+ setAppStorage(storage);
240
314
  ```
241
315
 
242
316
  ## Examples
243
317
 
244
- See the [browser-extension](../browser-extension) package for a complete implementation example.
318
+ - [example/](./example) - Complete web application with session management
319
+ - [sitegeist](https://github.com/badlogic/sitegeist) - Browser extension for AI-powered web navigation
245
320
 
246
321
  ## API Reference
247
322
 
248
323
  See [src/index.ts](src/index.ts) for the full public API.
249
324
 
325
+ ## Known Bugs
326
+
327
+ - **PersistentStorageDialog**: Currently broken and commented out in examples. The dialog for requesting persistent storage does not work correctly and needs to be fixed.
328
+
250
329
  ## License
251
330
 
252
331
  MIT
@@ -1,23 +1,28 @@
1
- import { type AgentTool } from "@mariozechner/pi-ai";
2
1
  import { LitElement } from "lit";
2
+ import type { Agent } from "./agent/agent.js";
3
3
  import "./components/AgentInterface.js";
4
+ import type { AgentTool } from "@mariozechner/pi-ai";
5
+ import type { AgentInterface } from "./components/AgentInterface.js";
6
+ import type { SandboxRuntimeProvider } from "./components/sandbox/SandboxRuntimeProvider.js";
7
+ import { ArtifactsPanel } from "./tools/artifacts/index.js";
4
8
  export declare class ChatPanel extends LitElement {
5
- private session;
6
- private artifactsPanel;
9
+ agent?: Agent;
10
+ agentInterface?: AgentInterface;
11
+ artifactsPanel?: ArtifactsPanel;
7
12
  private hasArtifacts;
8
13
  private artifactCount;
9
14
  private showArtifactsPanel;
10
15
  private windowWidth;
11
- systemPrompt: string;
12
- additionalTools: AgentTool<any, any>[];
13
- sandboxUrlProvider?: () => string;
14
- onApiKeyRequired?: (provider: string) => Promise<boolean>;
15
16
  private resizeHandler;
16
17
  createRenderRoot(): this;
17
- connectedCallback(): Promise<void>;
18
+ connectedCallback(): void;
18
19
  disconnectedCallback(): void;
19
- toggleArtifactsPanel(): void;
20
- get artifactsPanelVisible(): boolean;
20
+ setAgent(agent: Agent, config?: {
21
+ onApiKeyRequired?: (provider: string) => Promise<boolean>;
22
+ onBeforeSend?: () => void | Promise<void>;
23
+ sandboxUrlProvider?: () => string;
24
+ toolsFactory?: (agent: Agent, agentInterface: AgentInterface, artifactsPanel: ArtifactsPanel, runtimeProvidersFactory: () => SandboxRuntimeProvider[]) => AgentTool<any>[];
25
+ }): Promise<void>;
21
26
  render(): import("lit-html").TemplateResult<1>;
22
27
  }
23
28
  //# sourceMappingURL=ChatPanel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../src/ChatPanel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAY,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAEjC,OAAO,gCAAgC,CAAC;AAUxC,qBACa,SAAU,SAAQ,UAAU;IAC/B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,WAAW,CAAqB;IACrB,YAAY,SAAqC;IAClD,eAAe,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAM;IACvC,kBAAkB,CAAC,EAAE,MAAM,MAAM,CAAC;IAClC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1F,OAAO,CAAC,aAAa,CAGnB;IAEF,gBAAgB;IAID,iBAAiB;IAgGvB,oBAAoB;IAMtB,oBAAoB;IAM3B,IAAW,qBAAqB,IAAI,OAAO,CAE1C;IAED,MAAM;CAiEN"}
1
+ {"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../src/ChatPanel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAEjC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGrE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAyB,MAAM,4BAA4B,CAAC;AAOnF,qBACa,SAAU,SAAQ,UAAU;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,cAAc,CAAC,EAAE,cAAc,CAAC;IACvC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,WAAW,CAAK;IAEjC,OAAO,CAAC,aAAa,CAGnB;IAEF,gBAAgB;IAIP,iBAAiB;IAejB,oBAAoB;IAKvB,QAAQ,CACb,KAAK,EAAE,KAAK,EACZ,MAAM,CAAC,EAAE;QACR,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1D,YAAY,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1C,kBAAkB,CAAC,EAAE,MAAM,MAAM,CAAC;QAClC,YAAY,CAAC,EAAE,CACd,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,cAAc,EAC9B,uBAAuB,EAAE,MAAM,sBAAsB,EAAE,KACnD,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;KACtB;IAuFF,MAAM;CAkDN"}