@mariozechner/pi-web-ui 0.5.44
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 +252 -0
- package/dist/ChatPanel.d.ts +23 -0
- package/dist/ChatPanel.d.ts.map +1 -0
- package/dist/ChatPanel.js +224 -0
- package/dist/ChatPanel.js.map +1 -0
- package/dist/app.css +2 -0
- package/dist/components/AgentInterface.d.ts +35 -0
- package/dist/components/AgentInterface.d.ts.map +1 -0
- package/dist/components/AgentInterface.js +308 -0
- package/dist/components/AgentInterface.js.map +1 -0
- package/dist/components/AttachmentTile.d.ts +12 -0
- package/dist/components/AttachmentTile.d.ts.map +1 -0
- package/dist/components/AttachmentTile.js +114 -0
- package/dist/components/AttachmentTile.js.map +1 -0
- package/dist/components/ConsoleBlock.d.ts +11 -0
- package/dist/components/ConsoleBlock.d.ts.map +1 -0
- package/dist/components/ConsoleBlock.js +77 -0
- package/dist/components/ConsoleBlock.js.map +1 -0
- package/dist/components/Input.d.ts +26 -0
- package/dist/components/Input.d.ts.map +1 -0
- package/dist/components/Input.js +56 -0
- package/dist/components/Input.js.map +1 -0
- package/dist/components/MessageEditor.d.ts +38 -0
- package/dist/components/MessageEditor.d.ts.map +1 -0
- package/dist/components/MessageEditor.js +296 -0
- package/dist/components/MessageEditor.js.map +1 -0
- package/dist/components/MessageList.d.ts +13 -0
- package/dist/components/MessageList.d.ts.map +1 -0
- package/dist/components/MessageList.js +88 -0
- package/dist/components/MessageList.js.map +1 -0
- package/dist/components/Messages.d.ts +53 -0
- package/dist/components/Messages.d.ts.map +1 -0
- package/dist/components/Messages.js +323 -0
- package/dist/components/Messages.js.map +1 -0
- package/dist/components/ProviderKeyInput.d.ts +16 -0
- package/dist/components/ProviderKeyInput.d.ts.map +1 -0
- package/dist/components/ProviderKeyInput.js +183 -0
- package/dist/components/ProviderKeyInput.js.map +1 -0
- package/dist/components/SandboxedIframe.d.ts +63 -0
- package/dist/components/SandboxedIframe.d.ts.map +1 -0
- package/dist/components/SandboxedIframe.js +435 -0
- package/dist/components/SandboxedIframe.js.map +1 -0
- package/dist/components/StreamingMessageContainer.d.ts +17 -0
- package/dist/components/StreamingMessageContainer.d.ts.map +1 -0
- package/dist/components/StreamingMessageContainer.js +114 -0
- package/dist/components/StreamingMessageContainer.js.map +1 -0
- package/dist/dialogs/ApiKeyPromptDialog.d.ts +15 -0
- package/dist/dialogs/ApiKeyPromptDialog.d.ts.map +1 -0
- package/dist/dialogs/ApiKeyPromptDialog.js +80 -0
- package/dist/dialogs/ApiKeyPromptDialog.js.map +1 -0
- package/dist/dialogs/AttachmentOverlay.d.ts +32 -0
- package/dist/dialogs/AttachmentOverlay.d.ts.map +1 -0
- package/dist/dialogs/AttachmentOverlay.js +575 -0
- package/dist/dialogs/AttachmentOverlay.js.map +1 -0
- package/dist/dialogs/ModelSelector.d.ts +27 -0
- package/dist/dialogs/ModelSelector.d.ts.map +1 -0
- package/dist/dialogs/ModelSelector.js +334 -0
- package/dist/dialogs/ModelSelector.js.map +1 -0
- package/dist/dialogs/SettingsDialog.d.ts +31 -0
- package/dist/dialogs/SettingsDialog.d.ts.map +1 -0
- package/dist/dialogs/SettingsDialog.js +228 -0
- package/dist/dialogs/SettingsDialog.js.map +1 -0
- package/dist/index.d.ts +46 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -0
- package/dist/state/agent-session.d.ts +58 -0
- package/dist/state/agent-session.d.ts.map +1 -0
- package/dist/state/agent-session.js +252 -0
- package/dist/state/agent-session.js.map +1 -0
- package/dist/state/transports/AppTransport.d.ts +13 -0
- package/dist/state/transports/AppTransport.d.ts.map +1 -0
- package/dist/state/transports/AppTransport.js +316 -0
- package/dist/state/transports/AppTransport.js.map +1 -0
- package/dist/state/transports/ProviderTransport.d.ts +12 -0
- package/dist/state/transports/ProviderTransport.d.ts.map +1 -0
- package/dist/state/transports/ProviderTransport.js +44 -0
- package/dist/state/transports/ProviderTransport.js.map +1 -0
- package/dist/state/transports/index.d.ts +4 -0
- package/dist/state/transports/index.d.ts.map +1 -0
- package/dist/state/transports/index.js +4 -0
- package/dist/state/transports/index.js.map +1 -0
- package/dist/state/transports/proxy-types.d.ts +48 -0
- package/dist/state/transports/proxy-types.d.ts.map +1 -0
- package/dist/state/transports/proxy-types.js +2 -0
- package/dist/state/transports/proxy-types.js.map +1 -0
- package/dist/state/transports/types.d.ts +11 -0
- package/dist/state/transports/types.d.ts.map +1 -0
- package/dist/state/transports/types.js +2 -0
- package/dist/state/transports/types.js.map +1 -0
- package/dist/state/types.d.ts +15 -0
- package/dist/state/types.d.ts.map +1 -0
- package/dist/state/types.js +2 -0
- package/dist/state/types.js.map +1 -0
- package/dist/storage/app-storage.d.ts +26 -0
- package/dist/storage/app-storage.d.ts.map +1 -0
- package/dist/storage/app-storage.js +44 -0
- package/dist/storage/app-storage.js.map +1 -0
- package/dist/storage/backends/chrome-storage-backend.d.ts +18 -0
- package/dist/storage/backends/chrome-storage-backend.d.ts.map +1 -0
- package/dist/storage/backends/chrome-storage-backend.js +67 -0
- package/dist/storage/backends/chrome-storage-backend.js.map +1 -0
- package/dist/storage/backends/indexeddb-backend.d.ts +20 -0
- package/dist/storage/backends/indexeddb-backend.d.ts.map +1 -0
- package/dist/storage/backends/indexeddb-backend.js +89 -0
- package/dist/storage/backends/indexeddb-backend.js.map +1 -0
- package/dist/storage/backends/local-storage-backend.d.ts +18 -0
- package/dist/storage/backends/local-storage-backend.d.ts.map +1 -0
- package/dist/storage/backends/local-storage-backend.js +69 -0
- package/dist/storage/backends/local-storage-backend.js.map +1 -0
- package/dist/storage/repositories/provider-keys-repository.d.ts +34 -0
- package/dist/storage/repositories/provider-keys-repository.d.ts.map +1 -0
- package/dist/storage/repositories/provider-keys-repository.js +50 -0
- package/dist/storage/repositories/provider-keys-repository.js.map +1 -0
- package/dist/storage/repositories/settings-repository.d.ts +34 -0
- package/dist/storage/repositories/settings-repository.d.ts.map +1 -0
- package/dist/storage/repositories/settings-repository.js +46 -0
- package/dist/storage/repositories/settings-repository.js.map +1 -0
- package/dist/storage/types.d.ts +43 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +2 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/tools/artifacts/ArtifactElement.d.ts +10 -0
- package/dist/tools/artifacts/ArtifactElement.d.ts.map +1 -0
- package/dist/tools/artifacts/ArtifactElement.js +12 -0
- package/dist/tools/artifacts/ArtifactElement.js.map +1 -0
- package/dist/tools/artifacts/HtmlArtifact.d.ts +30 -0
- package/dist/tools/artifacts/HtmlArtifact.d.ts.map +1 -0
- package/dist/tools/artifacts/HtmlArtifact.js +217 -0
- package/dist/tools/artifacts/HtmlArtifact.js.map +1 -0
- package/dist/tools/artifacts/MarkdownArtifact.d.ts +20 -0
- package/dist/tools/artifacts/MarkdownArtifact.d.ts.map +1 -0
- package/dist/tools/artifacts/MarkdownArtifact.js +84 -0
- package/dist/tools/artifacts/MarkdownArtifact.js.map +1 -0
- package/dist/tools/artifacts/SvgArtifact.d.ts +19 -0
- package/dist/tools/artifacts/SvgArtifact.d.ts.map +1 -0
- package/dist/tools/artifacts/SvgArtifact.js +80 -0
- package/dist/tools/artifacts/SvgArtifact.js.map +1 -0
- package/dist/tools/artifacts/TextArtifact.d.ts +20 -0
- package/dist/tools/artifacts/TextArtifact.d.ts.map +1 -0
- package/dist/tools/artifacts/TextArtifact.js +147 -0
- package/dist/tools/artifacts/TextArtifact.js.map +1 -0
- package/dist/tools/artifacts/artifacts.d.ts +67 -0
- package/dist/tools/artifacts/artifacts.d.ts.map +1 -0
- package/dist/tools/artifacts/artifacts.js +836 -0
- package/dist/tools/artifacts/artifacts.js.map +1 -0
- package/dist/tools/artifacts/index.d.ts +7 -0
- package/dist/tools/artifacts/index.d.ts.map +1 -0
- package/dist/tools/artifacts/index.js +7 -0
- package/dist/tools/artifacts/index.js.map +1 -0
- package/dist/tools/index.d.ts +14 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +29 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/javascript-repl.d.ts +43 -0
- package/dist/tools/javascript-repl.d.ts.map +1 -0
- package/dist/tools/javascript-repl.js +252 -0
- package/dist/tools/javascript-repl.js.map +1 -0
- package/dist/tools/renderer-registry.d.ts +11 -0
- package/dist/tools/renderer-registry.d.ts.map +1 -0
- package/dist/tools/renderer-registry.js +15 -0
- package/dist/tools/renderer-registry.js.map +1 -0
- package/dist/tools/renderers/BashRenderer.d.ts +12 -0
- package/dist/tools/renderers/BashRenderer.d.ts.map +1 -0
- package/dist/tools/renderers/BashRenderer.js +35 -0
- package/dist/tools/renderers/BashRenderer.js.map +1 -0
- package/dist/tools/renderers/CalculateRenderer.d.ts +12 -0
- package/dist/tools/renderers/CalculateRenderer.d.ts.map +1 -0
- package/dist/tools/renderers/CalculateRenderer.js +38 -0
- package/dist/tools/renderers/CalculateRenderer.js.map +1 -0
- package/dist/tools/renderers/DefaultRenderer.d.ts +8 -0
- package/dist/tools/renderers/DefaultRenderer.d.ts.map +1 -0
- package/dist/tools/renderers/DefaultRenderer.js +31 -0
- package/dist/tools/renderers/DefaultRenderer.js.map +1 -0
- package/dist/tools/renderers/GetCurrentTimeRenderer.d.ts +12 -0
- package/dist/tools/renderers/GetCurrentTimeRenderer.d.ts.map +1 -0
- package/dist/tools/renderers/GetCurrentTimeRenderer.js +30 -0
- package/dist/tools/renderers/GetCurrentTimeRenderer.js.map +1 -0
- package/dist/tools/types.d.ts +7 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +2 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/utils/attachment-utils.d.ts +19 -0
- package/dist/utils/attachment-utils.d.ts.map +1 -0
- package/dist/utils/attachment-utils.js +415 -0
- package/dist/utils/attachment-utils.js.map +1 -0
- package/dist/utils/auth-token.d.ts +3 -0
- package/dist/utils/auth-token.d.ts.map +1 -0
- package/dist/utils/auth-token.js +19 -0
- package/dist/utils/auth-token.js.map +1 -0
- package/dist/utils/format.d.ts +6 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +47 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/i18n.d.ts +111 -0
- package/dist/utils/i18n.d.ts.map +1 -0
- package/dist/utils/i18n.js +224 -0
- package/dist/utils/i18n.js.map +1 -0
- package/dist/utils/test-sessions.d.ts +347 -0
- package/dist/utils/test-sessions.d.ts.map +1 -0
- package/dist/utils/test-sessions.js +2215 -0
- package/dist/utils/test-sessions.js.map +1 -0
- package/example/README.md +61 -0
- package/example/index.html +13 -0
- package/example/package-lock.json +1965 -0
- package/example/package.json +22 -0
- package/example/src/app.css +1 -0
- package/example/src/main.ts +57 -0
- package/example/src/test-sessions.ts +104 -0
- package/example/tsconfig.json +15 -0
- package/example/vite.config.ts +6 -0
- package/package.json +45 -0
- package/src/ChatPanel.ts +214 -0
- package/src/app.css +44 -0
- package/src/components/AgentInterface.ts +316 -0
- package/src/components/AttachmentTile.ts +112 -0
- package/src/components/ConsoleBlock.ts +67 -0
- package/src/components/Input.ts +112 -0
- package/src/components/MessageEditor.ts +272 -0
- package/src/components/MessageList.ts +82 -0
- package/src/components/Messages.ts +310 -0
- package/src/components/ProviderKeyInput.ts +170 -0
- package/src/components/SandboxedIframe.ts +525 -0
- package/src/components/StreamingMessageContainer.ts +101 -0
- package/src/dialogs/ApiKeyPromptDialog.ts +76 -0
- package/src/dialogs/AttachmentOverlay.ts +635 -0
- package/src/dialogs/ModelSelector.ts +324 -0
- package/src/dialogs/SettingsDialog.ts +223 -0
- package/src/index.ts +63 -0
- package/src/state/agent-session.ts +311 -0
- package/src/state/transports/AppTransport.ts +363 -0
- package/src/state/transports/ProviderTransport.ts +49 -0
- package/src/state/transports/index.ts +3 -0
- package/src/state/transports/proxy-types.ts +15 -0
- package/src/state/transports/types.ts +16 -0
- package/src/state/types.ts +11 -0
- package/src/storage/app-storage.ts +53 -0
- package/src/storage/backends/chrome-storage-backend.ts +82 -0
- package/src/storage/backends/indexeddb-backend.ts +107 -0
- package/src/storage/backends/local-storage-backend.ts +74 -0
- package/src/storage/repositories/provider-keys-repository.ts +55 -0
- package/src/storage/repositories/settings-repository.ts +51 -0
- package/src/storage/types.ts +48 -0
- package/src/tools/artifacts/ArtifactElement.ts +15 -0
- package/src/tools/artifacts/HtmlArtifact.ts +221 -0
- package/src/tools/artifacts/MarkdownArtifact.ts +81 -0
- package/src/tools/artifacts/SvgArtifact.ts +77 -0
- package/src/tools/artifacts/TextArtifact.ts +148 -0
- package/src/tools/artifacts/artifacts.ts +888 -0
- package/src/tools/artifacts/index.ts +6 -0
- package/src/tools/index.ts +35 -0
- package/src/tools/javascript-repl.ts +309 -0
- package/src/tools/renderer-registry.ts +18 -0
- package/src/tools/renderers/BashRenderer.ts +45 -0
- package/src/tools/renderers/CalculateRenderer.ts +49 -0
- package/src/tools/renderers/DefaultRenderer.ts +36 -0
- package/src/tools/renderers/GetCurrentTimeRenderer.ts +39 -0
- package/src/tools/types.ts +7 -0
- package/src/utils/attachment-utils.ts +472 -0
- package/src/utils/auth-token.ts +22 -0
- package/src/utils/format.ts +42 -0
- package/src/utils/i18n.ts +343 -0
- package/src/utils/test-sessions.ts +2247 -0
- package/tsconfig.build.json +20 -0
- package/tsconfig.json +7 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage backend using chrome.storage.local.
|
|
3
|
+
* Good for: Browser extensions, syncing across devices (with chrome.storage.sync).
|
|
4
|
+
* Limits: ~10MB for local, ~100KB for sync, async API.
|
|
5
|
+
*/
|
|
6
|
+
export class ChromeStorageBackend {
|
|
7
|
+
constructor(prefix = "") {
|
|
8
|
+
this.prefix = prefix;
|
|
9
|
+
}
|
|
10
|
+
getKey(key) {
|
|
11
|
+
return this.prefix ? `${this.prefix}:${key}` : key;
|
|
12
|
+
}
|
|
13
|
+
async get(key) {
|
|
14
|
+
if (!chrome?.storage?.local) {
|
|
15
|
+
throw new Error("chrome.storage.local is not available");
|
|
16
|
+
}
|
|
17
|
+
const fullKey = this.getKey(key);
|
|
18
|
+
const result = await chrome.storage.local.get([fullKey]);
|
|
19
|
+
return result[fullKey] !== undefined ? result[fullKey] : null;
|
|
20
|
+
}
|
|
21
|
+
async set(key, value) {
|
|
22
|
+
if (!chrome?.storage?.local) {
|
|
23
|
+
throw new Error("chrome.storage.local is not available");
|
|
24
|
+
}
|
|
25
|
+
const fullKey = this.getKey(key);
|
|
26
|
+
await chrome.storage.local.set({ [fullKey]: value });
|
|
27
|
+
}
|
|
28
|
+
async delete(key) {
|
|
29
|
+
if (!chrome?.storage?.local) {
|
|
30
|
+
throw new Error("chrome.storage.local is not available");
|
|
31
|
+
}
|
|
32
|
+
const fullKey = this.getKey(key);
|
|
33
|
+
await chrome.storage.local.remove(fullKey);
|
|
34
|
+
}
|
|
35
|
+
async keys() {
|
|
36
|
+
if (!chrome?.storage?.local) {
|
|
37
|
+
throw new Error("chrome.storage.local is not available");
|
|
38
|
+
}
|
|
39
|
+
const allData = await chrome.storage.local.get(null);
|
|
40
|
+
const allKeys = Object.keys(allData);
|
|
41
|
+
const prefixWithColon = this.prefix ? `${this.prefix}:` : "";
|
|
42
|
+
if (this.prefix) {
|
|
43
|
+
return allKeys
|
|
44
|
+
.filter((key) => key.startsWith(prefixWithColon))
|
|
45
|
+
.map((key) => key.substring(prefixWithColon.length));
|
|
46
|
+
}
|
|
47
|
+
return allKeys;
|
|
48
|
+
}
|
|
49
|
+
async clear() {
|
|
50
|
+
if (!chrome?.storage?.local) {
|
|
51
|
+
throw new Error("chrome.storage.local is not available");
|
|
52
|
+
}
|
|
53
|
+
if (this.prefix) {
|
|
54
|
+
const keysToRemove = await this.keys();
|
|
55
|
+
const fullKeys = keysToRemove.map((key) => this.getKey(key));
|
|
56
|
+
await chrome.storage.local.remove(fullKeys);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
await chrome.storage.local.clear();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async has(key) {
|
|
63
|
+
const value = await this.get(key);
|
|
64
|
+
return value !== null;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=chrome-storage-backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chrome-storage-backend.js","sourceRoot":"","sources":["../../../src/storage/backends/chrome-storage-backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { StorageBackend } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Storage backend using IndexedDB.
|
|
4
|
+
* Good for: Large data, binary blobs, complex queries.
|
|
5
|
+
* Limits: ~50MB-unlimited (browser dependent), async API, more complex.
|
|
6
|
+
*/
|
|
7
|
+
export declare class IndexedDBBackend implements StorageBackend {
|
|
8
|
+
private dbName;
|
|
9
|
+
private storeName;
|
|
10
|
+
private dbPromise;
|
|
11
|
+
constructor(dbName: string, storeName?: string);
|
|
12
|
+
private getDB;
|
|
13
|
+
get<T = unknown>(key: string): Promise<T | null>;
|
|
14
|
+
set<T = unknown>(key: string, value: T): Promise<void>;
|
|
15
|
+
delete(key: string): Promise<void>;
|
|
16
|
+
keys(): Promise<string[]>;
|
|
17
|
+
clear(): Promise<void>;
|
|
18
|
+
has(key: string): Promise<boolean>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=indexeddb-backend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexeddb-backend.d.ts","sourceRoot":"","sources":["../../../src/storage/backends/indexeddb-backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,cAAc;IAIrD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;IAJlB,OAAO,CAAC,SAAS,CAAqC;gBAG7C,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,MAAmB;YAGzB,KAAK;IAsBb,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAehD,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAYtD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYlC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAczB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAYtB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAIxC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage backend using IndexedDB.
|
|
3
|
+
* Good for: Large data, binary blobs, complex queries.
|
|
4
|
+
* Limits: ~50MB-unlimited (browser dependent), async API, more complex.
|
|
5
|
+
*/
|
|
6
|
+
export class IndexedDBBackend {
|
|
7
|
+
constructor(dbName, storeName = "keyvalue") {
|
|
8
|
+
this.dbName = dbName;
|
|
9
|
+
this.storeName = storeName;
|
|
10
|
+
this.dbPromise = null;
|
|
11
|
+
}
|
|
12
|
+
async getDB() {
|
|
13
|
+
if (this.dbPromise) {
|
|
14
|
+
return this.dbPromise;
|
|
15
|
+
}
|
|
16
|
+
this.dbPromise = new Promise((resolve, reject) => {
|
|
17
|
+
const request = indexedDB.open(this.dbName, 1);
|
|
18
|
+
request.onerror = () => reject(request.error);
|
|
19
|
+
request.onsuccess = () => resolve(request.result);
|
|
20
|
+
request.onupgradeneeded = (event) => {
|
|
21
|
+
const db = event.target.result;
|
|
22
|
+
if (!db.objectStoreNames.contains(this.storeName)) {
|
|
23
|
+
db.createObjectStore(this.storeName);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
});
|
|
27
|
+
return this.dbPromise;
|
|
28
|
+
}
|
|
29
|
+
async get(key) {
|
|
30
|
+
const db = await this.getDB();
|
|
31
|
+
return new Promise((resolve, reject) => {
|
|
32
|
+
const transaction = db.transaction(this.storeName, "readonly");
|
|
33
|
+
const store = transaction.objectStore(this.storeName);
|
|
34
|
+
const request = store.get(key);
|
|
35
|
+
request.onerror = () => reject(request.error);
|
|
36
|
+
request.onsuccess = () => {
|
|
37
|
+
const value = request.result;
|
|
38
|
+
resolve(value !== undefined ? value : null);
|
|
39
|
+
};
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
async set(key, value) {
|
|
43
|
+
const db = await this.getDB();
|
|
44
|
+
return new Promise((resolve, reject) => {
|
|
45
|
+
const transaction = db.transaction(this.storeName, "readwrite");
|
|
46
|
+
const store = transaction.objectStore(this.storeName);
|
|
47
|
+
const request = store.put(value, key);
|
|
48
|
+
request.onerror = () => reject(request.error);
|
|
49
|
+
request.onsuccess = () => resolve();
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
async delete(key) {
|
|
53
|
+
const db = await this.getDB();
|
|
54
|
+
return new Promise((resolve, reject) => {
|
|
55
|
+
const transaction = db.transaction(this.storeName, "readwrite");
|
|
56
|
+
const store = transaction.objectStore(this.storeName);
|
|
57
|
+
const request = store.delete(key);
|
|
58
|
+
request.onerror = () => reject(request.error);
|
|
59
|
+
request.onsuccess = () => resolve();
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
async keys() {
|
|
63
|
+
const db = await this.getDB();
|
|
64
|
+
return new Promise((resolve, reject) => {
|
|
65
|
+
const transaction = db.transaction(this.storeName, "readonly");
|
|
66
|
+
const store = transaction.objectStore(this.storeName);
|
|
67
|
+
const request = store.getAllKeys();
|
|
68
|
+
request.onerror = () => reject(request.error);
|
|
69
|
+
request.onsuccess = () => {
|
|
70
|
+
resolve(request.result.map((key) => String(key)));
|
|
71
|
+
};
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
async clear() {
|
|
75
|
+
const db = await this.getDB();
|
|
76
|
+
return new Promise((resolve, reject) => {
|
|
77
|
+
const transaction = db.transaction(this.storeName, "readwrite");
|
|
78
|
+
const store = transaction.objectStore(this.storeName);
|
|
79
|
+
const request = store.clear();
|
|
80
|
+
request.onerror = () => reject(request.error);
|
|
81
|
+
request.onsuccess = () => resolve();
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
async has(key) {
|
|
85
|
+
const value = await this.get(key);
|
|
86
|
+
return value !== null;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=indexeddb-backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexeddb-backend.js","sourceRoot":"","sources":["../../../src/storage/backends/indexeddb-backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { StorageBackend } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Storage backend using browser localStorage.
|
|
4
|
+
* Good for: Simple settings, small data.
|
|
5
|
+
* Limits: ~5MB, synchronous API (wrapped in promises), string-only (JSON serialization).
|
|
6
|
+
*/
|
|
7
|
+
export declare class LocalStorageBackend implements StorageBackend {
|
|
8
|
+
private prefix;
|
|
9
|
+
constructor(prefix?: string);
|
|
10
|
+
private getKey;
|
|
11
|
+
get<T = unknown>(key: string): Promise<T | null>;
|
|
12
|
+
set<T = unknown>(key: string, value: T): Promise<void>;
|
|
13
|
+
delete(key: string): Promise<void>;
|
|
14
|
+
keys(): Promise<string[]>;
|
|
15
|
+
clear(): Promise<void>;
|
|
16
|
+
has(key: string): Promise<boolean>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=local-storage-backend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-storage-backend.d.ts","sourceRoot":"","sources":["../../../src/storage/backends/local-storage-backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,cAAc;IAC7C,OAAO,CAAC,MAAM;gBAAN,MAAM,GAAE,MAAW;IAEvC,OAAO,CAAC,MAAM;IAIR,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAahD,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAoBzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAWtB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAIxC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage backend using browser localStorage.
|
|
3
|
+
* Good for: Simple settings, small data.
|
|
4
|
+
* Limits: ~5MB, synchronous API (wrapped in promises), string-only (JSON serialization).
|
|
5
|
+
*/
|
|
6
|
+
export class LocalStorageBackend {
|
|
7
|
+
constructor(prefix = "") {
|
|
8
|
+
this.prefix = prefix;
|
|
9
|
+
}
|
|
10
|
+
getKey(key) {
|
|
11
|
+
return this.prefix ? `${this.prefix}:${key}` : key;
|
|
12
|
+
}
|
|
13
|
+
async get(key) {
|
|
14
|
+
const fullKey = this.getKey(key);
|
|
15
|
+
const value = localStorage.getItem(fullKey);
|
|
16
|
+
if (value === null)
|
|
17
|
+
return null;
|
|
18
|
+
try {
|
|
19
|
+
return JSON.parse(value);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
// If JSON parse fails, return as string
|
|
23
|
+
return value;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
async set(key, value) {
|
|
27
|
+
const fullKey = this.getKey(key);
|
|
28
|
+
const serialized = JSON.stringify(value);
|
|
29
|
+
localStorage.setItem(fullKey, serialized);
|
|
30
|
+
}
|
|
31
|
+
async delete(key) {
|
|
32
|
+
const fullKey = this.getKey(key);
|
|
33
|
+
localStorage.removeItem(fullKey);
|
|
34
|
+
}
|
|
35
|
+
async keys() {
|
|
36
|
+
const allKeys = [];
|
|
37
|
+
const prefixWithColon = this.prefix ? `${this.prefix}:` : "";
|
|
38
|
+
for (let i = 0; i < localStorage.length; i++) {
|
|
39
|
+
const key = localStorage.key(i);
|
|
40
|
+
if (key) {
|
|
41
|
+
if (this.prefix) {
|
|
42
|
+
if (key.startsWith(prefixWithColon)) {
|
|
43
|
+
allKeys.push(key.substring(prefixWithColon.length));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
allKeys.push(key);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return allKeys;
|
|
52
|
+
}
|
|
53
|
+
async clear() {
|
|
54
|
+
if (this.prefix) {
|
|
55
|
+
const keysToRemove = await this.keys();
|
|
56
|
+
for (const key of keysToRemove) {
|
|
57
|
+
await this.delete(key);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
localStorage.clear();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async has(key) {
|
|
65
|
+
const fullKey = this.getKey(key);
|
|
66
|
+
return localStorage.getItem(fullKey) !== null;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=local-storage-backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-storage-backend.js","sourceRoot":"","sources":["../../../src/storage/backends/local-storage-backend.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,OAAO,mBAAmB;IAC/B,YAAoB,SAAiB,EAAE;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEnC,MAAM,CAAC,GAAW;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,GAAG,CAAc,GAAW;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAEhC,IAAI,CAAC;YACJ,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAM,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACR,wCAAwC;YACxC,OAAO,KAAU,CAAC;QACnB,CAAC;IACF,CAAC;IAED,KAAK,CAAC,GAAG,CAAc,GAAW,EAAE,KAAQ;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACzC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,IAAI;QACT,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAE7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,GAAG,EAAE,CAAC;gBACT,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBACjB,IAAI,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;wBACrC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;oBACrD,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACnB,CAAC;YACF,CAAC;QACF,CAAC;QAED,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,KAAK;QACV,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YACvC,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;QACF,CAAC;aAAM,CAAC;YACP,YAAY,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;IACF,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAC/C,CAAC;CACD"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { StorageBackend } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Repository for managing provider API keys.
|
|
4
|
+
* Provides domain-specific methods for key management.
|
|
5
|
+
*/
|
|
6
|
+
export declare class ProviderKeysRepository {
|
|
7
|
+
private backend;
|
|
8
|
+
constructor(backend: StorageBackend);
|
|
9
|
+
/**
|
|
10
|
+
* Get the API key for a provider.
|
|
11
|
+
*/
|
|
12
|
+
getKey(provider: string): Promise<string | null>;
|
|
13
|
+
/**
|
|
14
|
+
* Set the API key for a provider.
|
|
15
|
+
*/
|
|
16
|
+
setKey(provider: string, key: string): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Remove the API key for a provider.
|
|
19
|
+
*/
|
|
20
|
+
removeKey(provider: string): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Get all providers that have keys stored.
|
|
23
|
+
*/
|
|
24
|
+
getProviders(): Promise<string[]>;
|
|
25
|
+
/**
|
|
26
|
+
* Check if a provider has a key stored.
|
|
27
|
+
*/
|
|
28
|
+
hasKey(provider: string): Promise<boolean>;
|
|
29
|
+
/**
|
|
30
|
+
* Clear all stored API keys.
|
|
31
|
+
*/
|
|
32
|
+
clearAll(): Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=provider-keys-repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-keys-repository.d.ts","sourceRoot":"","sources":["../../../src/storage/repositories/provider-keys-repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;GAGG;AACH,qBAAa,sBAAsB;IACtB,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,cAAc;IAE3C;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAItD;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAKvC;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIhD;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAM/B"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repository for managing provider API keys.
|
|
3
|
+
* Provides domain-specific methods for key management.
|
|
4
|
+
*/
|
|
5
|
+
export class ProviderKeysRepository {
|
|
6
|
+
constructor(backend) {
|
|
7
|
+
this.backend = backend;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Get the API key for a provider.
|
|
11
|
+
*/
|
|
12
|
+
async getKey(provider) {
|
|
13
|
+
return this.backend.get(`key:${provider}`);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Set the API key for a provider.
|
|
17
|
+
*/
|
|
18
|
+
async setKey(provider, key) {
|
|
19
|
+
await this.backend.set(`key:${provider}`, key);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Remove the API key for a provider.
|
|
23
|
+
*/
|
|
24
|
+
async removeKey(provider) {
|
|
25
|
+
await this.backend.delete(`key:${provider}`);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get all providers that have keys stored.
|
|
29
|
+
*/
|
|
30
|
+
async getProviders() {
|
|
31
|
+
const allKeys = await this.backend.keys();
|
|
32
|
+
return allKeys.filter((key) => key.startsWith("key:")).map((key) => key.substring(4));
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Check if a provider has a key stored.
|
|
36
|
+
*/
|
|
37
|
+
async hasKey(provider) {
|
|
38
|
+
return this.backend.has(`key:${provider}`);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Clear all stored API keys.
|
|
42
|
+
*/
|
|
43
|
+
async clearAll() {
|
|
44
|
+
const providers = await this.getProviders();
|
|
45
|
+
for (const provider of providers) {
|
|
46
|
+
await this.removeKey(provider);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=provider-keys-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-keys-repository.js","sourceRoot":"","sources":["../../../src/storage/repositories/provider-keys-repository.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,sBAAsB;IAClC,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAE/C;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,QAAgB;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAS,OAAO,QAAQ,EAAE,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,GAAW;QACzC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,QAAgB;QAC/B,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,QAAQ,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QACjB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC1C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,QAAgB;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,QAAQ,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACb,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAClC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;IACF,CAAC;CACD"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { StorageBackend } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Repository for simple application settings (proxy, theme, etc.).
|
|
4
|
+
* Uses a single backend for all settings.
|
|
5
|
+
*/
|
|
6
|
+
export declare class SettingsRepository {
|
|
7
|
+
private backend;
|
|
8
|
+
constructor(backend: StorageBackend);
|
|
9
|
+
/**
|
|
10
|
+
* Get a setting value by key.
|
|
11
|
+
*/
|
|
12
|
+
get<T = unknown>(key: string): Promise<T | null>;
|
|
13
|
+
/**
|
|
14
|
+
* Set a setting value.
|
|
15
|
+
*/
|
|
16
|
+
set<T = unknown>(key: string, value: T): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Delete a setting.
|
|
19
|
+
*/
|
|
20
|
+
delete(key: string): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Get all setting keys.
|
|
23
|
+
*/
|
|
24
|
+
keys(): Promise<string[]>;
|
|
25
|
+
/**
|
|
26
|
+
* Check if a setting exists.
|
|
27
|
+
*/
|
|
28
|
+
has(key: string): Promise<boolean>;
|
|
29
|
+
/**
|
|
30
|
+
* Clear all settings.
|
|
31
|
+
*/
|
|
32
|
+
clear(): Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=settings-repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-repository.d.ts","sourceRoot":"","sources":["../../../src/storage/repositories/settings-repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;GAGG;AACH,qBAAa,kBAAkB;IAClB,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,cAAc;IAE3C;;OAEG;IACG,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAItD;;OAEG;IACG,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5D;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI/B;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIxC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repository for simple application settings (proxy, theme, etc.).
|
|
3
|
+
* Uses a single backend for all settings.
|
|
4
|
+
*/
|
|
5
|
+
export class SettingsRepository {
|
|
6
|
+
constructor(backend) {
|
|
7
|
+
this.backend = backend;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Get a setting value by key.
|
|
11
|
+
*/
|
|
12
|
+
async get(key) {
|
|
13
|
+
return this.backend.get(key);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Set a setting value.
|
|
17
|
+
*/
|
|
18
|
+
async set(key, value) {
|
|
19
|
+
await this.backend.set(key, value);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Delete a setting.
|
|
23
|
+
*/
|
|
24
|
+
async delete(key) {
|
|
25
|
+
await this.backend.delete(key);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get all setting keys.
|
|
29
|
+
*/
|
|
30
|
+
async keys() {
|
|
31
|
+
return this.backend.keys();
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Check if a setting exists.
|
|
35
|
+
*/
|
|
36
|
+
async has(key) {
|
|
37
|
+
return this.backend.has(key);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Clear all settings.
|
|
41
|
+
*/
|
|
42
|
+
async clear() {
|
|
43
|
+
await this.backend.clear();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=settings-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-repository.js","sourceRoot":"","sources":["../../../src/storage/repositories/settings-repository.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAC9B,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAE/C;;OAEG;IACH,KAAK,CAAC,GAAG,CAAc,GAAW;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAc,GAAW,EAAE,KAAQ;QAC3C,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,GAAW;QACvB,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACV,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;CACD"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base interface for all storage backends.
|
|
3
|
+
* Provides a simple key-value storage abstraction that can be implemented
|
|
4
|
+
* by localStorage, IndexedDB, chrome.storage, or remote APIs.
|
|
5
|
+
*/
|
|
6
|
+
export interface StorageBackend {
|
|
7
|
+
/**
|
|
8
|
+
* Get a value by key. Returns null if key doesn't exist.
|
|
9
|
+
*/
|
|
10
|
+
get<T = unknown>(key: string): Promise<T | null>;
|
|
11
|
+
/**
|
|
12
|
+
* Set a value for a key.
|
|
13
|
+
*/
|
|
14
|
+
set<T = unknown>(key: string, value: T): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Delete a key.
|
|
17
|
+
*/
|
|
18
|
+
delete(key: string): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Get all keys.
|
|
21
|
+
*/
|
|
22
|
+
keys(): Promise<string[]>;
|
|
23
|
+
/**
|
|
24
|
+
* Clear all data.
|
|
25
|
+
*/
|
|
26
|
+
clear(): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Check if a key exists.
|
|
29
|
+
*/
|
|
30
|
+
has(key: string): Promise<boolean>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Options for configuring AppStorage.
|
|
34
|
+
*/
|
|
35
|
+
export interface AppStorageConfig {
|
|
36
|
+
/** Backend for simple settings (proxy, theme, etc.) */
|
|
37
|
+
settings?: StorageBackend;
|
|
38
|
+
/** Backend for provider API keys */
|
|
39
|
+
providerKeys?: StorageBackend;
|
|
40
|
+
/** Backend for sessions (chat history, attachments) */
|
|
41
|
+
sessions?: StorageBackend;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC9B;;OAEG;IACH,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAEjD;;OAEG;IACH,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvD;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnC;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE1B;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,uDAAuD;IACvD,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,oCAAoC;IACpC,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,uDAAuD;IACvD,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { LitElement, type TemplateResult } from "lit";
|
|
2
|
+
export declare abstract class ArtifactElement extends LitElement {
|
|
3
|
+
filename: string;
|
|
4
|
+
displayTitle: string;
|
|
5
|
+
protected createRenderRoot(): HTMLElement | DocumentFragment;
|
|
6
|
+
abstract get content(): string;
|
|
7
|
+
abstract set content(value: string);
|
|
8
|
+
abstract getHeaderButtons(): TemplateResult | HTMLElement;
|
|
9
|
+
}
|
|
10
|
+
//# 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;IACd,YAAY,SAAM;cAEN,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,12 @@
|
|
|
1
|
+
import { LitElement } from "lit";
|
|
2
|
+
export class ArtifactElement extends LitElement {
|
|
3
|
+
constructor() {
|
|
4
|
+
super(...arguments);
|
|
5
|
+
this.filename = "";
|
|
6
|
+
this.displayTitle = "";
|
|
7
|
+
}
|
|
8
|
+
createRenderRoot() {
|
|
9
|
+
return this; // light DOM for shared styles
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# 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;QACd,iBAAY,GAAG,EAAE,CAAC;IAU1B,CAAC;IARmB,gBAAgB;QAClC,OAAO,IAAI,CAAC,CAAC,8BAA8B;IAC5C,CAAC;CAMD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Attachment } from "../../utils/attachment-utils.js";
|
|
2
|
+
import "../../components/SandboxedIframe.js";
|
|
3
|
+
import { ArtifactElement } from "./ArtifactElement.js";
|
|
4
|
+
export declare class HtmlArtifact extends ArtifactElement {
|
|
5
|
+
filename: string;
|
|
6
|
+
displayTitle: string;
|
|
7
|
+
attachments: Attachment[];
|
|
8
|
+
sandboxUrlProvider?: () => string;
|
|
9
|
+
private _content;
|
|
10
|
+
private logs;
|
|
11
|
+
private sandboxIframeRef;
|
|
12
|
+
private consoleLogsRef;
|
|
13
|
+
private consoleButtonRef;
|
|
14
|
+
private messageHandler?;
|
|
15
|
+
private viewMode;
|
|
16
|
+
private consoleOpen;
|
|
17
|
+
private setViewMode;
|
|
18
|
+
getHeaderButtons(): import("lit-html").TemplateResult<1>;
|
|
19
|
+
set content(value: string);
|
|
20
|
+
private executeContent;
|
|
21
|
+
get content(): string;
|
|
22
|
+
disconnectedCallback(): void;
|
|
23
|
+
firstUpdated(): void;
|
|
24
|
+
updated(changedProperties: Map<string | number | symbol, unknown>): void;
|
|
25
|
+
private updateConsoleButton;
|
|
26
|
+
private toggleConsole;
|
|
27
|
+
getLogs(): string;
|
|
28
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=HtmlArtifact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HtmlArtifact.d.ts","sourceRoot":"","sources":["../../../src/tools/artifacts/HtmlArtifact.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,qCAAqC,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,qBACa,YAAa,SAAQ,eAAe;IAC3B,QAAQ,SAAM;IACM,YAAY,SAAM;IAC3B,WAAW,EAAE,UAAU,EAAE,CAAM;IAC/B,kBAAkB,CAAC,EAAE,MAAM,MAAM,CAAC;IAElE,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,IAAI,CAAsD;IAGlE,OAAO,CAAC,gBAAgB,CAAmC;IAC3D,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,gBAAgB,CAAuC;IAG/D,OAAO,CAAC,cAAc,CAAC,CAA4B;IAE1C,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,WAAW,CAAS;IAErC,OAAO,CAAC,WAAW;IAIZ,gBAAgB;IAqBvB,IAAa,OAAO,CAAC,KAAK,EAAE,MAAM,EAgBjC;IAED,OAAO,CAAC,cAAc;IAkCtB,IAAa,OAAO,IAAI,MAAM,CAE7B;IAEQ,oBAAoB;IASpB,YAAY;IAOZ,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC;IAS1E,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,aAAa;IAqBd,OAAO,IAAI,MAAM;IAKf,MAAM;CA2Cf"}
|