@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.
- package/README.md +178 -99
- package/dist/ChatPanel.d.ts +15 -10
- package/dist/ChatPanel.d.ts.map +1 -1
- package/dist/ChatPanel.js +68 -100
- package/dist/ChatPanel.js.map +1 -1
- package/dist/{state/agent-session.d.ts → agent/agent.d.ts} +23 -19
- package/dist/agent/agent.d.ts.map +1 -0
- package/dist/{state/agent-session.js → agent/agent.js} +50 -32
- package/dist/agent/agent.js.map +1 -0
- package/dist/{state → agent}/transports/AppTransport.d.ts +1 -3
- package/dist/agent/transports/AppTransport.d.ts.map +1 -0
- package/dist/{state → agent}/transports/AppTransport.js +5 -4
- package/dist/{state → agent}/transports/AppTransport.js.map +1 -1
- package/dist/{state → agent}/transports/ProviderTransport.d.ts +1 -3
- package/dist/agent/transports/ProviderTransport.d.ts.map +1 -0
- package/dist/{state → agent}/transports/ProviderTransport.js +6 -7
- package/dist/agent/transports/ProviderTransport.js.map +1 -0
- package/dist/{state → agent}/transports/index.d.ts.map +1 -1
- package/dist/agent/transports/index.js.map +1 -0
- package/dist/{state → agent}/transports/proxy-types.d.ts.map +1 -1
- package/dist/agent/transports/proxy-types.js.map +1 -0
- package/dist/agent/transports/types.d.ts +12 -0
- package/dist/agent/transports/types.d.ts.map +1 -0
- package/dist/{state → agent}/transports/types.js.map +1 -1
- package/dist/{state → agent}/types.d.ts.map +1 -1
- package/dist/{state → agent}/types.js.map +1 -1
- package/dist/app.css +1 -1
- package/dist/components/AgentInterface.d.ts +7 -4
- package/dist/components/AgentInterface.d.ts.map +1 -1
- package/dist/components/AgentInterface.js +29 -17
- package/dist/components/AgentInterface.js.map +1 -1
- package/dist/components/ConsoleBlock.d.ts +1 -0
- package/dist/components/ConsoleBlock.d.ts.map +1 -1
- package/dist/components/ConsoleBlock.js +7 -1
- package/dist/components/ConsoleBlock.js.map +1 -1
- package/dist/components/ExpandableSection.d.ts +15 -0
- package/dist/components/ExpandableSection.d.ts.map +1 -0
- package/dist/components/ExpandableSection.js +63 -0
- package/dist/components/ExpandableSection.js.map +1 -0
- package/dist/components/MessageEditor.d.ts +8 -1
- package/dist/components/MessageEditor.d.ts.map +1 -1
- package/dist/components/MessageEditor.js +149 -6
- package/dist/components/MessageEditor.js.map +1 -1
- package/dist/components/MessageList.d.ts +3 -2
- package/dist/components/MessageList.d.ts.map +1 -1
- package/dist/components/MessageList.js +14 -1
- package/dist/components/MessageList.js.map +1 -1
- package/dist/components/Messages.d.ts +15 -6
- package/dist/components/Messages.d.ts.map +1 -1
- package/dist/components/Messages.js +17 -83
- package/dist/components/Messages.js.map +1 -1
- package/dist/components/ProviderKeyInput.d.ts.map +1 -1
- package/dist/components/ProviderKeyInput.js +6 -5
- package/dist/components/ProviderKeyInput.js.map +1 -1
- package/dist/components/SandboxedIframe.d.ts +29 -7
- package/dist/components/SandboxedIframe.d.ts.map +1 -1
- package/dist/components/SandboxedIframe.js +350 -282
- package/dist/components/SandboxedIframe.js.map +1 -1
- package/dist/components/message-renderer-registry.d.ts +12 -0
- package/dist/components/message-renderer-registry.d.ts.map +1 -0
- package/dist/components/message-renderer-registry.js +12 -0
- package/dist/components/message-renderer-registry.js.map +1 -0
- package/dist/components/sandbox/ArtifactsRuntimeProvider.d.ts +35 -0
- package/dist/components/sandbox/ArtifactsRuntimeProvider.d.ts.map +1 -0
- package/dist/components/sandbox/ArtifactsRuntimeProvider.js +189 -0
- package/dist/components/sandbox/ArtifactsRuntimeProvider.js.map +1 -0
- package/dist/components/sandbox/AttachmentsRuntimeProvider.d.ts +17 -0
- package/dist/components/sandbox/AttachmentsRuntimeProvider.d.ts.map +1 -0
- package/dist/components/sandbox/AttachmentsRuntimeProvider.js +64 -0
- package/dist/components/sandbox/AttachmentsRuntimeProvider.js.map +1 -0
- package/dist/components/sandbox/ConsoleRuntimeProvider.d.ts +42 -0
- package/dist/components/sandbox/ConsoleRuntimeProvider.d.ts.map +1 -0
- package/dist/components/sandbox/ConsoleRuntimeProvider.js +161 -0
- package/dist/components/sandbox/ConsoleRuntimeProvider.js.map +1 -0
- package/dist/components/sandbox/FileDownloadRuntimeProvider.d.ts +30 -0
- package/dist/components/sandbox/FileDownloadRuntimeProvider.d.ts.map +1 -0
- package/dist/components/sandbox/FileDownloadRuntimeProvider.js +97 -0
- package/dist/components/sandbox/FileDownloadRuntimeProvider.js.map +1 -0
- package/dist/components/sandbox/RuntimeMessageBridge.d.ts +19 -0
- package/dist/components/sandbox/RuntimeMessageBridge.d.ts.map +1 -0
- package/dist/components/sandbox/RuntimeMessageBridge.js +74 -0
- package/dist/components/sandbox/RuntimeMessageBridge.js.map +1 -0
- package/dist/components/sandbox/RuntimeMessageRouter.d.ts +65 -0
- package/dist/components/sandbox/RuntimeMessageRouter.d.ts.map +1 -0
- package/dist/components/sandbox/RuntimeMessageRouter.js +168 -0
- package/dist/components/sandbox/RuntimeMessageRouter.js.map +1 -0
- package/dist/components/sandbox/SandboxRuntimeProvider.d.ts +33 -0
- package/dist/components/sandbox/SandboxRuntimeProvider.d.ts.map +1 -0
- package/dist/components/sandbox/SandboxRuntimeProvider.js +2 -0
- package/dist/components/sandbox/SandboxRuntimeProvider.js.map +1 -0
- package/dist/dialogs/ApiKeyPromptDialog.d.ts.map +1 -1
- package/dist/dialogs/ApiKeyPromptDialog.js +2 -5
- package/dist/dialogs/ApiKeyPromptDialog.js.map +1 -1
- package/dist/dialogs/ModelSelector.js.map +1 -1
- package/dist/dialogs/PersistentStorageDialog.d.ts +17 -0
- package/dist/dialogs/PersistentStorageDialog.d.ts.map +1 -0
- package/dist/dialogs/PersistentStorageDialog.js +144 -0
- package/dist/dialogs/PersistentStorageDialog.js.map +1 -0
- package/dist/dialogs/SessionListDialog.d.ts +19 -0
- package/dist/dialogs/SessionListDialog.d.ts.map +1 -0
- package/dist/dialogs/SessionListDialog.js +152 -0
- package/dist/dialogs/SessionListDialog.js.map +1 -0
- package/dist/dialogs/SettingsDialog.d.ts.map +1 -1
- package/dist/dialogs/SettingsDialog.js +1 -0
- package/dist/dialogs/SettingsDialog.js.map +1 -1
- package/dist/index.d.ts +34 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -14
- package/dist/index.js.map +1 -1
- package/dist/prompts/prompts.d.ts +11 -0
- package/dist/prompts/prompts.d.ts.map +1 -0
- package/dist/prompts/prompts.js +272 -0
- package/dist/prompts/prompts.js.map +1 -0
- package/dist/storage/app-storage.d.ts +17 -12
- package/dist/storage/app-storage.d.ts.map +1 -1
- package/dist/storage/app-storage.js +13 -20
- package/dist/storage/app-storage.js.map +1 -1
- package/dist/storage/backends/indexeddb-storage-backend.d.ts +27 -0
- package/dist/storage/backends/indexeddb-storage-backend.d.ts.map +1 -0
- package/dist/storage/backends/indexeddb-storage-backend.js +166 -0
- package/dist/storage/backends/indexeddb-storage-backend.js.map +1 -0
- package/dist/storage/store.d.ts +23 -0
- package/dist/storage/store.d.ts.map +1 -0
- package/dist/storage/store.js +26 -0
- package/dist/storage/store.js.map +1 -0
- package/dist/storage/stores/provider-keys-store.d.ts +14 -0
- package/dist/storage/stores/provider-keys-store.d.ts.map +1 -0
- package/dist/storage/stores/provider-keys-store.js +27 -0
- package/dist/storage/stores/provider-keys-store.js.map +1 -0
- package/dist/storage/stores/sessions-store.d.ts +31 -0
- package/dist/storage/stores/sessions-store.d.ts.map +1 -0
- package/dist/storage/stores/sessions-store.js +113 -0
- package/dist/storage/stores/sessions-store.js.map +1 -0
- package/dist/storage/stores/settings-store.d.ts +14 -0
- package/dist/storage/stores/settings-store.d.ts.map +1 -0
- package/dist/storage/stores/settings-store.js +28 -0
- package/dist/storage/stores/settings-store.js.map +1 -0
- package/dist/storage/types.d.ts +156 -22
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/tools/artifacts/ArtifactElement.d.ts +0 -1
- package/dist/tools/artifacts/ArtifactElement.d.ts.map +1 -1
- package/dist/tools/artifacts/ArtifactElement.js +0 -1
- package/dist/tools/artifacts/ArtifactElement.js.map +1 -1
- package/dist/tools/artifacts/ArtifactPill.d.ts +4 -0
- package/dist/tools/artifacts/ArtifactPill.d.ts.map +1 -0
- package/dist/tools/artifacts/ArtifactPill.js +22 -0
- package/dist/tools/artifacts/ArtifactPill.js.map +1 -0
- package/dist/tools/artifacts/Console.d.ts +18 -0
- package/dist/tools/artifacts/Console.d.ts.map +1 -0
- package/dist/tools/artifacts/Console.js +95 -0
- package/dist/tools/artifacts/Console.js.map +1 -0
- package/dist/tools/artifacts/DocxArtifact.d.ts +22 -0
- package/dist/tools/artifacts/DocxArtifact.d.ts.map +1 -0
- package/dist/tools/artifacts/DocxArtifact.js +208 -0
- package/dist/tools/artifacts/DocxArtifact.js.map +1 -0
- package/dist/tools/artifacts/ExcelArtifact.d.ts +24 -0
- package/dist/tools/artifacts/ExcelArtifact.d.ts.map +1 -0
- package/dist/tools/artifacts/ExcelArtifact.js +216 -0
- package/dist/tools/artifacts/ExcelArtifact.js.map +1 -0
- package/dist/tools/artifacts/GenericArtifact.d.ts +19 -0
- package/dist/tools/artifacts/GenericArtifact.d.ts.map +1 -0
- package/dist/tools/artifacts/GenericArtifact.js +117 -0
- package/dist/tools/artifacts/GenericArtifact.js.map +1 -0
- package/dist/tools/artifacts/HtmlArtifact.d.ts +8 -11
- package/dist/tools/artifacts/HtmlArtifact.d.ts.map +1 -1
- package/dist/tools/artifacts/HtmlArtifact.js +56 -88
- package/dist/tools/artifacts/HtmlArtifact.js.map +1 -1
- package/dist/tools/artifacts/ImageArtifact.d.ts +20 -0
- package/dist/tools/artifacts/ImageArtifact.d.ts.map +1 -0
- package/dist/tools/artifacts/ImageArtifact.js +120 -0
- package/dist/tools/artifacts/ImageArtifact.js.map +1 -0
- package/dist/tools/artifacts/MarkdownArtifact.d.ts +0 -1
- package/dist/tools/artifacts/MarkdownArtifact.d.ts.map +1 -1
- package/dist/tools/artifacts/MarkdownArtifact.js +0 -4
- package/dist/tools/artifacts/MarkdownArtifact.js.map +1 -1
- package/dist/tools/artifacts/PdfArtifact.d.ts +25 -0
- package/dist/tools/artifacts/PdfArtifact.d.ts.map +1 -0
- package/dist/tools/artifacts/PdfArtifact.js +184 -0
- package/dist/tools/artifacts/PdfArtifact.js.map +1 -0
- package/dist/tools/artifacts/SvgArtifact.d.ts +0 -1
- package/dist/tools/artifacts/SvgArtifact.d.ts.map +1 -1
- package/dist/tools/artifacts/SvgArtifact.js +0 -4
- package/dist/tools/artifacts/SvgArtifact.js.map +1 -1
- package/dist/tools/artifacts/TextArtifact.d.ts +0 -1
- package/dist/tools/artifacts/TextArtifact.d.ts.map +1 -1
- package/dist/tools/artifacts/TextArtifact.js +0 -4
- package/dist/tools/artifacts/TextArtifact.js.map +1 -1
- package/dist/tools/artifacts/artifacts-tool-renderer.d.ts +11 -0
- package/dist/tools/artifacts/artifacts-tool-renderer.d.ts.map +1 -0
- package/dist/tools/artifacts/artifacts-tool-renderer.js +262 -0
- package/dist/tools/artifacts/artifacts-tool-renderer.js.map +1 -0
- package/dist/tools/artifacts/artifacts.d.ts +10 -13
- package/dist/tools/artifacts/artifacts.d.ts.map +1 -1
- package/dist/tools/artifacts/artifacts.js +166 -344
- package/dist/tools/artifacts/artifacts.js.map +1 -1
- package/dist/tools/artifacts/index.d.ts +1 -0
- package/dist/tools/artifacts/index.d.ts.map +1 -1
- package/dist/tools/artifacts/index.js +1 -0
- package/dist/tools/artifacts/index.js.map +1 -1
- package/dist/tools/extract-document.d.ts +24 -0
- package/dist/tools/extract-document.d.ts.map +1 -0
- package/dist/tools/extract-document.js +193 -0
- package/dist/tools/extract-document.js.map +1 -0
- package/dist/tools/index.d.ts +9 -7
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +17 -13
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/javascript-repl.d.ts +16 -15
- package/dist/tools/javascript-repl.d.ts.map +1 -1
- package/dist/tools/javascript-repl.js +101 -133
- package/dist/tools/javascript-repl.js.map +1 -1
- package/dist/tools/renderer-registry.d.ts +12 -0
- package/dist/tools/renderer-registry.d.ts.map +1 -1
- package/dist/tools/renderer-registry.js +78 -0
- package/dist/tools/renderer-registry.js.map +1 -1
- package/dist/tools/renderers/BashRenderer.d.ts +2 -4
- package/dist/tools/renderers/BashRenderer.d.ts.map +1 -1
- package/dist/tools/renderers/BashRenderer.js +30 -26
- package/dist/tools/renderers/BashRenderer.js.map +1 -1
- package/dist/tools/renderers/CalculateRenderer.d.ts +2 -4
- package/dist/tools/renderers/CalculateRenderer.d.ts.map +1 -1
- package/dist/tools/renderers/CalculateRenderer.js +32 -28
- package/dist/tools/renderers/CalculateRenderer.js.map +1 -1
- package/dist/tools/renderers/DefaultRenderer.d.ts +2 -4
- package/dist/tools/renderers/DefaultRenderer.d.ts.map +1 -1
- package/dist/tools/renderers/DefaultRenderer.js +78 -18
- package/dist/tools/renderers/DefaultRenderer.js.map +1 -1
- package/dist/tools/renderers/GetCurrentTimeRenderer.d.ts +2 -4
- package/dist/tools/renderers/GetCurrentTimeRenderer.d.ts.map +1 -1
- package/dist/tools/renderers/GetCurrentTimeRenderer.js +57 -21
- package/dist/tools/renderers/GetCurrentTimeRenderer.js.map +1 -1
- package/dist/tools/types.d.ts +5 -2
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/utils/i18n.d.ts +424 -1
- package/dist/utils/i18n.d.ts.map +1 -1
- package/dist/utils/i18n.js +131 -7
- package/dist/utils/i18n.js.map +1 -1
- package/example/package.json +2 -1
- package/example/src/custom-messages.ts +112 -0
- package/example/src/main.ts +391 -38
- package/package.json +48 -43
- package/scripts/count-prompt-tokens.ts +88 -0
- package/src/ChatPanel.ts +93 -101
- package/src/{state/agent-session.ts → agent/agent.ts} +80 -55
- package/src/{state → agent}/transports/AppTransport.ts +6 -6
- package/src/{state → agent}/transports/ProviderTransport.ts +13 -7
- package/src/{state → agent}/transports/types.ts +8 -2
- package/src/components/AgentInterface.ts +32 -16
- package/src/components/ConsoleBlock.ts +5 -1
- package/src/components/ExpandableSection.ts +46 -0
- package/src/components/MessageEditor.ts +159 -5
- package/src/components/MessageList.ts +18 -3
- package/src/components/Messages.ts +48 -89
- package/src/components/ProviderKeyInput.ts +6 -5
- package/src/components/SandboxedIframe.ts +412 -321
- package/src/components/message-renderer-registry.ts +28 -0
- package/src/components/sandbox/ArtifactsRuntimeProvider.ts +219 -0
- package/src/components/sandbox/AttachmentsRuntimeProvider.ts +66 -0
- package/src/components/sandbox/ConsoleRuntimeProvider.ts +187 -0
- package/src/components/sandbox/FileDownloadRuntimeProvider.ts +110 -0
- package/src/components/sandbox/RuntimeMessageBridge.ts +82 -0
- package/src/components/sandbox/RuntimeMessageRouter.ts +216 -0
- package/src/components/sandbox/SandboxRuntimeProvider.ts +35 -0
- package/src/dialogs/ApiKeyPromptDialog.ts +2 -5
- package/src/dialogs/ModelSelector.ts +2 -2
- package/src/dialogs/PersistentStorageDialog.ts +141 -0
- package/src/dialogs/SessionListDialog.ts +148 -0
- package/src/dialogs/SettingsDialog.ts +1 -0
- package/src/index.ts +61 -20
- package/src/prompts/prompts.ts +282 -0
- package/src/storage/app-storage.ts +27 -24
- package/src/storage/backends/indexeddb-storage-backend.ts +193 -0
- package/src/storage/store.ts +33 -0
- package/src/storage/stores/provider-keys-store.ts +33 -0
- package/src/storage/stores/sessions-store.ts +130 -0
- package/src/storage/stores/settings-store.ts +34 -0
- package/src/storage/types.ts +182 -22
- package/src/tools/artifacts/ArtifactElement.ts +0 -1
- package/src/tools/artifacts/ArtifactPill.ts +25 -0
- package/src/tools/artifacts/Console.ts +93 -0
- package/src/tools/artifacts/DocxArtifact.ts +213 -0
- package/src/tools/artifacts/ExcelArtifact.ts +231 -0
- package/src/tools/artifacts/GenericArtifact.ts +117 -0
- package/src/tools/artifacts/HtmlArtifact.ts +64 -94
- package/src/tools/artifacts/ImageArtifact.ts +116 -0
- package/src/tools/artifacts/MarkdownArtifact.ts +0 -1
- package/src/tools/artifacts/PdfArtifact.ts +201 -0
- package/src/tools/artifacts/SvgArtifact.ts +0 -1
- package/src/tools/artifacts/TextArtifact.ts +0 -1
- package/src/tools/artifacts/artifacts-tool-renderer.ts +298 -0
- package/src/tools/artifacts/artifacts.ts +190 -366
- package/src/tools/artifacts/index.ts +1 -0
- package/src/tools/extract-document.ts +250 -0
- package/src/tools/index.ts +25 -14
- package/src/tools/javascript-repl.ts +138 -160
- package/src/tools/renderer-registry.ts +98 -0
- package/src/tools/renderers/BashRenderer.ts +33 -30
- package/src/tools/renderers/CalculateRenderer.ts +36 -31
- package/src/tools/renderers/DefaultRenderer.ts +84 -21
- package/src/tools/renderers/GetCurrentTimeRenderer.ts +68 -23
- package/src/tools/types.ts +10 -2
- package/src/utils/i18n.ts +203 -8
- package/dist/state/agent-session.d.ts.map +0 -1
- package/dist/state/agent-session.js.map +0 -1
- package/dist/state/transports/AppTransport.d.ts.map +0 -1
- package/dist/state/transports/ProviderTransport.d.ts.map +0 -1
- package/dist/state/transports/ProviderTransport.js.map +0 -1
- package/dist/state/transports/index.js.map +0 -1
- package/dist/state/transports/proxy-types.js.map +0 -1
- package/dist/state/transports/types.d.ts +0 -11
- package/dist/state/transports/types.d.ts.map +0 -1
- package/dist/storage/backends/chrome-storage-backend.d.ts +0 -18
- package/dist/storage/backends/chrome-storage-backend.d.ts.map +0 -1
- package/dist/storage/backends/chrome-storage-backend.js +0 -67
- package/dist/storage/backends/chrome-storage-backend.js.map +0 -1
- package/dist/storage/backends/indexeddb-backend.d.ts +0 -20
- package/dist/storage/backends/indexeddb-backend.d.ts.map +0 -1
- package/dist/storage/backends/indexeddb-backend.js +0 -89
- package/dist/storage/backends/indexeddb-backend.js.map +0 -1
- package/dist/storage/backends/local-storage-backend.d.ts +0 -18
- package/dist/storage/backends/local-storage-backend.d.ts.map +0 -1
- package/dist/storage/backends/local-storage-backend.js +0 -69
- package/dist/storage/backends/local-storage-backend.js.map +0 -1
- package/dist/storage/repositories/provider-keys-repository.d.ts +0 -34
- package/dist/storage/repositories/provider-keys-repository.d.ts.map +0 -1
- package/dist/storage/repositories/provider-keys-repository.js +0 -50
- package/dist/storage/repositories/provider-keys-repository.js.map +0 -1
- package/dist/storage/repositories/settings-repository.d.ts +0 -34
- package/dist/storage/repositories/settings-repository.d.ts.map +0 -1
- package/dist/storage/repositories/settings-repository.js +0 -46
- package/dist/storage/repositories/settings-repository.js.map +0 -1
- package/src/storage/backends/chrome-storage-backend.ts +0 -82
- package/src/storage/backends/indexeddb-backend.ts +0 -107
- package/src/storage/backends/local-storage-backend.ts +0 -74
- package/src/storage/repositories/provider-keys-repository.ts +0 -55
- package/src/storage/repositories/settings-repository.ts +0 -51
- /package/dist/{state → agent}/transports/index.d.ts +0 -0
- /package/dist/{state → agent}/transports/index.js +0 -0
- /package/dist/{state → agent}/transports/proxy-types.d.ts +0 -0
- /package/dist/{state → agent}/transports/proxy-types.js +0 -0
- /package/dist/{state → agent}/transports/types.js +0 -0
- /package/dist/{state → agent}/types.d.ts +0 -0
- /package/dist/{state → agent}/types.js +0 -0
- /package/src/{state → agent}/transports/index.ts +0 -0
- /package/src/{state → agent}/transports/proxy-types.ts +0 -0
- /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
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
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
|
|
29
|
-
|
|
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
|
-
//
|
|
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.
|
|
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.
|
|
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
|
|
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
|
-
|
|
69
|
-
|
|
80
|
+
// Optional: Handle API key prompts
|
|
81
|
+
chatPanel.onApiKeyRequired = async (provider: string) => {
|
|
82
|
+
return await ApiKeyPromptDialog.prompt(provider);
|
|
83
|
+
};
|
|
70
84
|
|
|
71
|
-
|
|
72
|
-
|
|
85
|
+
// Attach an agent
|
|
86
|
+
await chatPanel.setAgent(agent);
|
|
73
87
|
```
|
|
74
88
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
### AgentSession
|
|
89
|
+
### Agent
|
|
78
90
|
|
|
79
|
-
|
|
91
|
+
Core state manager that handles conversation state, tool execution, and streaming.
|
|
80
92
|
|
|
81
93
|
```typescript
|
|
82
|
-
import {
|
|
83
|
-
import { getModel
|
|
94
|
+
import { Agent, ProviderTransport } from '@mariozechner/pi-web-ui';
|
|
95
|
+
import { getModel } from '@mariozechner/pi-ai';
|
|
84
96
|
|
|
85
|
-
const
|
|
97
|
+
const agent = new Agent({
|
|
86
98
|
initialState: {
|
|
87
|
-
model: getModel('anthropic', 'claude-
|
|
99
|
+
model: getModel('anthropic', 'claude-sonnet-4-5-20250929'),
|
|
88
100
|
systemPrompt: 'You are a helpful assistant.',
|
|
89
|
-
|
|
101
|
+
thinkingLevel: 'off',
|
|
90
102
|
messages: [],
|
|
103
|
+
tools: [],
|
|
91
104
|
},
|
|
92
|
-
|
|
105
|
+
transport: new ProviderTransport(),
|
|
93
106
|
});
|
|
94
107
|
|
|
95
|
-
// Subscribe to
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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
|
|
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
|
-
|
|
130
|
+
## Transports
|
|
106
131
|
|
|
107
132
|
Transport layers handle communication with AI providers.
|
|
108
133
|
|
|
109
|
-
|
|
134
|
+
### ProviderTransport
|
|
110
135
|
|
|
111
|
-
|
|
136
|
+
The main transport that calls AI provider APIs using stored API keys.
|
|
112
137
|
|
|
113
138
|
```typescript
|
|
114
|
-
import {
|
|
139
|
+
import { ProviderTransport } from '@mariozechner/pi-web-ui';
|
|
115
140
|
|
|
116
|
-
|
|
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
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
// ...
|
|
143
|
+
const agent = new Agent({
|
|
144
|
+
initialState: { /* ... */ },
|
|
145
|
+
transport,
|
|
125
146
|
});
|
|
126
147
|
```
|
|
127
148
|
|
|
128
|
-
|
|
149
|
+
### AppTransport
|
|
129
150
|
|
|
130
|
-
|
|
151
|
+
Alternative transport for proxying requests through a custom server.
|
|
131
152
|
|
|
132
153
|
```typescript
|
|
133
|
-
import {
|
|
154
|
+
import { AppTransport } from '@mariozechner/pi-web-ui';
|
|
134
155
|
|
|
135
|
-
|
|
136
|
-
setAuthToken('your-auth-token');
|
|
156
|
+
const transport = new AppTransport();
|
|
137
157
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
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
|
-
##
|
|
185
|
+
## Storage
|
|
186
|
+
|
|
187
|
+
The package provides flexible storage backends for API keys, settings, and session persistence.
|
|
188
|
+
|
|
189
|
+
### AppStorage
|
|
167
190
|
|
|
168
|
-
|
|
191
|
+
Central storage configuration for the application.
|
|
169
192
|
|
|
170
193
|
```typescript
|
|
171
|
-
import {
|
|
172
|
-
import { getModel } from '@mariozechner/pi-ai';
|
|
194
|
+
import { AppStorage, setAppStorage, SessionIndexedDBBackend } from '@mariozechner/pi-web-ui';
|
|
173
195
|
|
|
174
|
-
const
|
|
175
|
-
|
|
176
|
-
tools: [...artifactTools],
|
|
177
|
-
// ...
|
|
178
|
-
}
|
|
196
|
+
const storage = new AppStorage({
|
|
197
|
+
sessions: new SessionIndexedDBBackend('my-app-sessions'),
|
|
179
198
|
});
|
|
180
199
|
|
|
181
|
-
|
|
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
|
-
##
|
|
244
|
+
## Dialogs
|
|
202
245
|
|
|
203
|
-
|
|
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 {
|
|
253
|
+
import { SettingsDialog, ApiKeysTab, ProxyTab } from '@mariozechner/pi-web-ui';
|
|
207
254
|
|
|
208
|
-
//
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
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
|
-
###
|
|
271
|
+
### ApiKeyPromptDialog
|
|
272
|
+
|
|
273
|
+
Prompt user for API key when needed.
|
|
221
274
|
|
|
222
275
|
```typescript
|
|
223
|
-
import {
|
|
276
|
+
import { ApiKeyPromptDialog } from '@mariozechner/pi-web-ui';
|
|
224
277
|
|
|
225
|
-
|
|
226
|
-
const panel = new ChatPanel();
|
|
227
|
-
document.querySelector('#app').appendChild(panel);
|
|
278
|
+
const apiKey = await ApiKeyPromptDialog.prompt('anthropic');
|
|
228
279
|
```
|
|
229
280
|
|
|
230
|
-
###
|
|
281
|
+
### PersistentStorageDialog
|
|
282
|
+
|
|
283
|
+
Request persistent storage permission.
|
|
231
284
|
|
|
232
285
|
```typescript
|
|
233
|
-
import {
|
|
286
|
+
import { PersistentStorageDialog } from '@mariozechner/pi-web-ui';
|
|
234
287
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
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
|
-
|
|
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
|
package/dist/ChatPanel.d.ts
CHANGED
|
@@ -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
|
-
|
|
6
|
-
|
|
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():
|
|
18
|
+
connectedCallback(): void;
|
|
18
19
|
disconnectedCallback(): void;
|
|
19
|
-
|
|
20
|
-
|
|
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
|
package/dist/ChatPanel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../src/ChatPanel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,
|
|
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"}
|