@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.
Files changed (265) hide show
  1. package/README.md +252 -0
  2. package/dist/ChatPanel.d.ts +23 -0
  3. package/dist/ChatPanel.d.ts.map +1 -0
  4. package/dist/ChatPanel.js +224 -0
  5. package/dist/ChatPanel.js.map +1 -0
  6. package/dist/app.css +2 -0
  7. package/dist/components/AgentInterface.d.ts +35 -0
  8. package/dist/components/AgentInterface.d.ts.map +1 -0
  9. package/dist/components/AgentInterface.js +308 -0
  10. package/dist/components/AgentInterface.js.map +1 -0
  11. package/dist/components/AttachmentTile.d.ts +12 -0
  12. package/dist/components/AttachmentTile.d.ts.map +1 -0
  13. package/dist/components/AttachmentTile.js +114 -0
  14. package/dist/components/AttachmentTile.js.map +1 -0
  15. package/dist/components/ConsoleBlock.d.ts +11 -0
  16. package/dist/components/ConsoleBlock.d.ts.map +1 -0
  17. package/dist/components/ConsoleBlock.js +77 -0
  18. package/dist/components/ConsoleBlock.js.map +1 -0
  19. package/dist/components/Input.d.ts +26 -0
  20. package/dist/components/Input.d.ts.map +1 -0
  21. package/dist/components/Input.js +56 -0
  22. package/dist/components/Input.js.map +1 -0
  23. package/dist/components/MessageEditor.d.ts +38 -0
  24. package/dist/components/MessageEditor.d.ts.map +1 -0
  25. package/dist/components/MessageEditor.js +296 -0
  26. package/dist/components/MessageEditor.js.map +1 -0
  27. package/dist/components/MessageList.d.ts +13 -0
  28. package/dist/components/MessageList.d.ts.map +1 -0
  29. package/dist/components/MessageList.js +88 -0
  30. package/dist/components/MessageList.js.map +1 -0
  31. package/dist/components/Messages.d.ts +53 -0
  32. package/dist/components/Messages.d.ts.map +1 -0
  33. package/dist/components/Messages.js +323 -0
  34. package/dist/components/Messages.js.map +1 -0
  35. package/dist/components/ProviderKeyInput.d.ts +16 -0
  36. package/dist/components/ProviderKeyInput.d.ts.map +1 -0
  37. package/dist/components/ProviderKeyInput.js +183 -0
  38. package/dist/components/ProviderKeyInput.js.map +1 -0
  39. package/dist/components/SandboxedIframe.d.ts +63 -0
  40. package/dist/components/SandboxedIframe.d.ts.map +1 -0
  41. package/dist/components/SandboxedIframe.js +435 -0
  42. package/dist/components/SandboxedIframe.js.map +1 -0
  43. package/dist/components/StreamingMessageContainer.d.ts +17 -0
  44. package/dist/components/StreamingMessageContainer.d.ts.map +1 -0
  45. package/dist/components/StreamingMessageContainer.js +114 -0
  46. package/dist/components/StreamingMessageContainer.js.map +1 -0
  47. package/dist/dialogs/ApiKeyPromptDialog.d.ts +15 -0
  48. package/dist/dialogs/ApiKeyPromptDialog.d.ts.map +1 -0
  49. package/dist/dialogs/ApiKeyPromptDialog.js +80 -0
  50. package/dist/dialogs/ApiKeyPromptDialog.js.map +1 -0
  51. package/dist/dialogs/AttachmentOverlay.d.ts +32 -0
  52. package/dist/dialogs/AttachmentOverlay.d.ts.map +1 -0
  53. package/dist/dialogs/AttachmentOverlay.js +575 -0
  54. package/dist/dialogs/AttachmentOverlay.js.map +1 -0
  55. package/dist/dialogs/ModelSelector.d.ts +27 -0
  56. package/dist/dialogs/ModelSelector.d.ts.map +1 -0
  57. package/dist/dialogs/ModelSelector.js +334 -0
  58. package/dist/dialogs/ModelSelector.js.map +1 -0
  59. package/dist/dialogs/SettingsDialog.d.ts +31 -0
  60. package/dist/dialogs/SettingsDialog.d.ts.map +1 -0
  61. package/dist/dialogs/SettingsDialog.js +228 -0
  62. package/dist/dialogs/SettingsDialog.js.map +1 -0
  63. package/dist/index.d.ts +46 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +51 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/state/agent-session.d.ts +58 -0
  68. package/dist/state/agent-session.d.ts.map +1 -0
  69. package/dist/state/agent-session.js +252 -0
  70. package/dist/state/agent-session.js.map +1 -0
  71. package/dist/state/transports/AppTransport.d.ts +13 -0
  72. package/dist/state/transports/AppTransport.d.ts.map +1 -0
  73. package/dist/state/transports/AppTransport.js +316 -0
  74. package/dist/state/transports/AppTransport.js.map +1 -0
  75. package/dist/state/transports/ProviderTransport.d.ts +12 -0
  76. package/dist/state/transports/ProviderTransport.d.ts.map +1 -0
  77. package/dist/state/transports/ProviderTransport.js +44 -0
  78. package/dist/state/transports/ProviderTransport.js.map +1 -0
  79. package/dist/state/transports/index.d.ts +4 -0
  80. package/dist/state/transports/index.d.ts.map +1 -0
  81. package/dist/state/transports/index.js +4 -0
  82. package/dist/state/transports/index.js.map +1 -0
  83. package/dist/state/transports/proxy-types.d.ts +48 -0
  84. package/dist/state/transports/proxy-types.d.ts.map +1 -0
  85. package/dist/state/transports/proxy-types.js +2 -0
  86. package/dist/state/transports/proxy-types.js.map +1 -0
  87. package/dist/state/transports/types.d.ts +11 -0
  88. package/dist/state/transports/types.d.ts.map +1 -0
  89. package/dist/state/transports/types.js +2 -0
  90. package/dist/state/transports/types.js.map +1 -0
  91. package/dist/state/types.d.ts +15 -0
  92. package/dist/state/types.d.ts.map +1 -0
  93. package/dist/state/types.js +2 -0
  94. package/dist/state/types.js.map +1 -0
  95. package/dist/storage/app-storage.d.ts +26 -0
  96. package/dist/storage/app-storage.d.ts.map +1 -0
  97. package/dist/storage/app-storage.js +44 -0
  98. package/dist/storage/app-storage.js.map +1 -0
  99. package/dist/storage/backends/chrome-storage-backend.d.ts +18 -0
  100. package/dist/storage/backends/chrome-storage-backend.d.ts.map +1 -0
  101. package/dist/storage/backends/chrome-storage-backend.js +67 -0
  102. package/dist/storage/backends/chrome-storage-backend.js.map +1 -0
  103. package/dist/storage/backends/indexeddb-backend.d.ts +20 -0
  104. package/dist/storage/backends/indexeddb-backend.d.ts.map +1 -0
  105. package/dist/storage/backends/indexeddb-backend.js +89 -0
  106. package/dist/storage/backends/indexeddb-backend.js.map +1 -0
  107. package/dist/storage/backends/local-storage-backend.d.ts +18 -0
  108. package/dist/storage/backends/local-storage-backend.d.ts.map +1 -0
  109. package/dist/storage/backends/local-storage-backend.js +69 -0
  110. package/dist/storage/backends/local-storage-backend.js.map +1 -0
  111. package/dist/storage/repositories/provider-keys-repository.d.ts +34 -0
  112. package/dist/storage/repositories/provider-keys-repository.d.ts.map +1 -0
  113. package/dist/storage/repositories/provider-keys-repository.js +50 -0
  114. package/dist/storage/repositories/provider-keys-repository.js.map +1 -0
  115. package/dist/storage/repositories/settings-repository.d.ts +34 -0
  116. package/dist/storage/repositories/settings-repository.d.ts.map +1 -0
  117. package/dist/storage/repositories/settings-repository.js +46 -0
  118. package/dist/storage/repositories/settings-repository.js.map +1 -0
  119. package/dist/storage/types.d.ts +43 -0
  120. package/dist/storage/types.d.ts.map +1 -0
  121. package/dist/storage/types.js +2 -0
  122. package/dist/storage/types.js.map +1 -0
  123. package/dist/tools/artifacts/ArtifactElement.d.ts +10 -0
  124. package/dist/tools/artifacts/ArtifactElement.d.ts.map +1 -0
  125. package/dist/tools/artifacts/ArtifactElement.js +12 -0
  126. package/dist/tools/artifacts/ArtifactElement.js.map +1 -0
  127. package/dist/tools/artifacts/HtmlArtifact.d.ts +30 -0
  128. package/dist/tools/artifacts/HtmlArtifact.d.ts.map +1 -0
  129. package/dist/tools/artifacts/HtmlArtifact.js +217 -0
  130. package/dist/tools/artifacts/HtmlArtifact.js.map +1 -0
  131. package/dist/tools/artifacts/MarkdownArtifact.d.ts +20 -0
  132. package/dist/tools/artifacts/MarkdownArtifact.d.ts.map +1 -0
  133. package/dist/tools/artifacts/MarkdownArtifact.js +84 -0
  134. package/dist/tools/artifacts/MarkdownArtifact.js.map +1 -0
  135. package/dist/tools/artifacts/SvgArtifact.d.ts +19 -0
  136. package/dist/tools/artifacts/SvgArtifact.d.ts.map +1 -0
  137. package/dist/tools/artifacts/SvgArtifact.js +80 -0
  138. package/dist/tools/artifacts/SvgArtifact.js.map +1 -0
  139. package/dist/tools/artifacts/TextArtifact.d.ts +20 -0
  140. package/dist/tools/artifacts/TextArtifact.d.ts.map +1 -0
  141. package/dist/tools/artifacts/TextArtifact.js +147 -0
  142. package/dist/tools/artifacts/TextArtifact.js.map +1 -0
  143. package/dist/tools/artifacts/artifacts.d.ts +67 -0
  144. package/dist/tools/artifacts/artifacts.d.ts.map +1 -0
  145. package/dist/tools/artifacts/artifacts.js +836 -0
  146. package/dist/tools/artifacts/artifacts.js.map +1 -0
  147. package/dist/tools/artifacts/index.d.ts +7 -0
  148. package/dist/tools/artifacts/index.d.ts.map +1 -0
  149. package/dist/tools/artifacts/index.js +7 -0
  150. package/dist/tools/artifacts/index.js.map +1 -0
  151. package/dist/tools/index.d.ts +14 -0
  152. package/dist/tools/index.d.ts.map +1 -0
  153. package/dist/tools/index.js +29 -0
  154. package/dist/tools/index.js.map +1 -0
  155. package/dist/tools/javascript-repl.d.ts +43 -0
  156. package/dist/tools/javascript-repl.d.ts.map +1 -0
  157. package/dist/tools/javascript-repl.js +252 -0
  158. package/dist/tools/javascript-repl.js.map +1 -0
  159. package/dist/tools/renderer-registry.d.ts +11 -0
  160. package/dist/tools/renderer-registry.d.ts.map +1 -0
  161. package/dist/tools/renderer-registry.js +15 -0
  162. package/dist/tools/renderer-registry.js.map +1 -0
  163. package/dist/tools/renderers/BashRenderer.d.ts +12 -0
  164. package/dist/tools/renderers/BashRenderer.d.ts.map +1 -0
  165. package/dist/tools/renderers/BashRenderer.js +35 -0
  166. package/dist/tools/renderers/BashRenderer.js.map +1 -0
  167. package/dist/tools/renderers/CalculateRenderer.d.ts +12 -0
  168. package/dist/tools/renderers/CalculateRenderer.d.ts.map +1 -0
  169. package/dist/tools/renderers/CalculateRenderer.js +38 -0
  170. package/dist/tools/renderers/CalculateRenderer.js.map +1 -0
  171. package/dist/tools/renderers/DefaultRenderer.d.ts +8 -0
  172. package/dist/tools/renderers/DefaultRenderer.d.ts.map +1 -0
  173. package/dist/tools/renderers/DefaultRenderer.js +31 -0
  174. package/dist/tools/renderers/DefaultRenderer.js.map +1 -0
  175. package/dist/tools/renderers/GetCurrentTimeRenderer.d.ts +12 -0
  176. package/dist/tools/renderers/GetCurrentTimeRenderer.d.ts.map +1 -0
  177. package/dist/tools/renderers/GetCurrentTimeRenderer.js +30 -0
  178. package/dist/tools/renderers/GetCurrentTimeRenderer.js.map +1 -0
  179. package/dist/tools/types.d.ts +7 -0
  180. package/dist/tools/types.d.ts.map +1 -0
  181. package/dist/tools/types.js +2 -0
  182. package/dist/tools/types.js.map +1 -0
  183. package/dist/utils/attachment-utils.d.ts +19 -0
  184. package/dist/utils/attachment-utils.d.ts.map +1 -0
  185. package/dist/utils/attachment-utils.js +415 -0
  186. package/dist/utils/attachment-utils.js.map +1 -0
  187. package/dist/utils/auth-token.d.ts +3 -0
  188. package/dist/utils/auth-token.d.ts.map +1 -0
  189. package/dist/utils/auth-token.js +19 -0
  190. package/dist/utils/auth-token.js.map +1 -0
  191. package/dist/utils/format.d.ts +6 -0
  192. package/dist/utils/format.d.ts.map +1 -0
  193. package/dist/utils/format.js +47 -0
  194. package/dist/utils/format.js.map +1 -0
  195. package/dist/utils/i18n.d.ts +111 -0
  196. package/dist/utils/i18n.d.ts.map +1 -0
  197. package/dist/utils/i18n.js +224 -0
  198. package/dist/utils/i18n.js.map +1 -0
  199. package/dist/utils/test-sessions.d.ts +347 -0
  200. package/dist/utils/test-sessions.d.ts.map +1 -0
  201. package/dist/utils/test-sessions.js +2215 -0
  202. package/dist/utils/test-sessions.js.map +1 -0
  203. package/example/README.md +61 -0
  204. package/example/index.html +13 -0
  205. package/example/package-lock.json +1965 -0
  206. package/example/package.json +22 -0
  207. package/example/src/app.css +1 -0
  208. package/example/src/main.ts +57 -0
  209. package/example/src/test-sessions.ts +104 -0
  210. package/example/tsconfig.json +15 -0
  211. package/example/vite.config.ts +6 -0
  212. package/package.json +45 -0
  213. package/src/ChatPanel.ts +214 -0
  214. package/src/app.css +44 -0
  215. package/src/components/AgentInterface.ts +316 -0
  216. package/src/components/AttachmentTile.ts +112 -0
  217. package/src/components/ConsoleBlock.ts +67 -0
  218. package/src/components/Input.ts +112 -0
  219. package/src/components/MessageEditor.ts +272 -0
  220. package/src/components/MessageList.ts +82 -0
  221. package/src/components/Messages.ts +310 -0
  222. package/src/components/ProviderKeyInput.ts +170 -0
  223. package/src/components/SandboxedIframe.ts +525 -0
  224. package/src/components/StreamingMessageContainer.ts +101 -0
  225. package/src/dialogs/ApiKeyPromptDialog.ts +76 -0
  226. package/src/dialogs/AttachmentOverlay.ts +635 -0
  227. package/src/dialogs/ModelSelector.ts +324 -0
  228. package/src/dialogs/SettingsDialog.ts +223 -0
  229. package/src/index.ts +63 -0
  230. package/src/state/agent-session.ts +311 -0
  231. package/src/state/transports/AppTransport.ts +363 -0
  232. package/src/state/transports/ProviderTransport.ts +49 -0
  233. package/src/state/transports/index.ts +3 -0
  234. package/src/state/transports/proxy-types.ts +15 -0
  235. package/src/state/transports/types.ts +16 -0
  236. package/src/state/types.ts +11 -0
  237. package/src/storage/app-storage.ts +53 -0
  238. package/src/storage/backends/chrome-storage-backend.ts +82 -0
  239. package/src/storage/backends/indexeddb-backend.ts +107 -0
  240. package/src/storage/backends/local-storage-backend.ts +74 -0
  241. package/src/storage/repositories/provider-keys-repository.ts +55 -0
  242. package/src/storage/repositories/settings-repository.ts +51 -0
  243. package/src/storage/types.ts +48 -0
  244. package/src/tools/artifacts/ArtifactElement.ts +15 -0
  245. package/src/tools/artifacts/HtmlArtifact.ts +221 -0
  246. package/src/tools/artifacts/MarkdownArtifact.ts +81 -0
  247. package/src/tools/artifacts/SvgArtifact.ts +77 -0
  248. package/src/tools/artifacts/TextArtifact.ts +148 -0
  249. package/src/tools/artifacts/artifacts.ts +888 -0
  250. package/src/tools/artifacts/index.ts +6 -0
  251. package/src/tools/index.ts +35 -0
  252. package/src/tools/javascript-repl.ts +309 -0
  253. package/src/tools/renderer-registry.ts +18 -0
  254. package/src/tools/renderers/BashRenderer.ts +45 -0
  255. package/src/tools/renderers/CalculateRenderer.ts +49 -0
  256. package/src/tools/renderers/DefaultRenderer.ts +36 -0
  257. package/src/tools/renderers/GetCurrentTimeRenderer.ts +39 -0
  258. package/src/tools/types.ts +7 -0
  259. package/src/utils/attachment-utils.ts +472 -0
  260. package/src/utils/auth-token.ts +22 -0
  261. package/src/utils/format.ts +42 -0
  262. package/src/utils/i18n.ts +343 -0
  263. package/src/utils/test-sessions.ts +2247 -0
  264. package/tsconfig.build.json +20 -0
  265. package/tsconfig.json +7 -0
@@ -0,0 +1,316 @@
1
+ import { agentLoop } from "@mariozechner/pi-ai";
2
+ import { AssistantMessageEventStream } from "@mariozechner/pi-ai/dist/utils/event-stream.js";
3
+ import { parseStreamingJson } from "@mariozechner/pi-ai/dist/utils/json-parse.js";
4
+ import { clearAuthToken, getAuthToken } from "../../utils/auth-token.js";
5
+ import { i18n } from "../../utils/i18n.js";
6
+ /**
7
+ * Stream function that proxies through a server instead of calling providers directly.
8
+ * The server strips the partial field from delta events to reduce bandwidth.
9
+ * We reconstruct the partial message client-side.
10
+ */
11
+ function streamSimpleProxy(model, context, options, proxyUrl) {
12
+ const stream = new AssistantMessageEventStream();
13
+ (async () => {
14
+ // Initialize the partial message that we'll build up from events
15
+ const partial = {
16
+ role: "assistant",
17
+ stopReason: "stop",
18
+ content: [],
19
+ api: model.api,
20
+ provider: model.provider,
21
+ model: model.id,
22
+ usage: {
23
+ input: 0,
24
+ output: 0,
25
+ cacheRead: 0,
26
+ cacheWrite: 0,
27
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
28
+ },
29
+ };
30
+ let reader;
31
+ // Set up abort handler to cancel the reader
32
+ const abortHandler = () => {
33
+ if (reader) {
34
+ reader.cancel("Request aborted by user").catch(() => { });
35
+ }
36
+ };
37
+ if (options.signal) {
38
+ options.signal.addEventListener("abort", abortHandler);
39
+ }
40
+ try {
41
+ const response = await fetch(`${proxyUrl}/api/stream`, {
42
+ method: "POST",
43
+ headers: {
44
+ Authorization: `Bearer ${options.authToken}`,
45
+ "Content-Type": "application/json",
46
+ },
47
+ body: JSON.stringify({
48
+ model,
49
+ context,
50
+ options: {
51
+ temperature: options.temperature,
52
+ maxTokens: options.maxTokens,
53
+ reasoning: options.reasoning,
54
+ // Don't send apiKey or signal - those are added server-side
55
+ },
56
+ }),
57
+ signal: options.signal,
58
+ });
59
+ if (!response.ok) {
60
+ let errorMessage = `Proxy error: ${response.status} ${response.statusText}`;
61
+ try {
62
+ const errorData = await response.json();
63
+ if (errorData.error) {
64
+ errorMessage = `Proxy error: ${errorData.error}`;
65
+ }
66
+ }
67
+ catch {
68
+ // Couldn't parse error response, use default message
69
+ }
70
+ throw new Error(errorMessage);
71
+ }
72
+ // Parse SSE stream
73
+ reader = response.body.getReader();
74
+ const decoder = new TextDecoder();
75
+ let buffer = "";
76
+ while (true) {
77
+ const { done, value } = await reader.read();
78
+ if (done)
79
+ break;
80
+ // Check if aborted after reading
81
+ if (options.signal?.aborted) {
82
+ throw new Error("Request aborted by user");
83
+ }
84
+ buffer += decoder.decode(value, { stream: true });
85
+ const lines = buffer.split("\n");
86
+ buffer = lines.pop() || "";
87
+ for (const line of lines) {
88
+ if (line.startsWith("data: ")) {
89
+ const data = line.slice(6).trim();
90
+ if (data) {
91
+ const proxyEvent = JSON.parse(data);
92
+ let event;
93
+ // Handle different event types
94
+ // Server sends events with partial for non-delta events,
95
+ // and without partial for delta events
96
+ switch (proxyEvent.type) {
97
+ case "start":
98
+ event = { type: "start", partial };
99
+ break;
100
+ case "text_start":
101
+ partial.content[proxyEvent.contentIndex] = {
102
+ type: "text",
103
+ text: "",
104
+ };
105
+ event = { type: "text_start", contentIndex: proxyEvent.contentIndex, partial };
106
+ break;
107
+ case "text_delta": {
108
+ const content = partial.content[proxyEvent.contentIndex];
109
+ if (content?.type === "text") {
110
+ content.text += proxyEvent.delta;
111
+ event = {
112
+ type: "text_delta",
113
+ contentIndex: proxyEvent.contentIndex,
114
+ delta: proxyEvent.delta,
115
+ partial,
116
+ };
117
+ }
118
+ else {
119
+ throw new Error("Received text_delta for non-text content");
120
+ }
121
+ break;
122
+ }
123
+ case "text_end": {
124
+ const content = partial.content[proxyEvent.contentIndex];
125
+ if (content?.type === "text") {
126
+ content.textSignature = proxyEvent.contentSignature;
127
+ event = {
128
+ type: "text_end",
129
+ contentIndex: proxyEvent.contentIndex,
130
+ content: content.text,
131
+ partial,
132
+ };
133
+ }
134
+ else {
135
+ throw new Error("Received text_end for non-text content");
136
+ }
137
+ break;
138
+ }
139
+ case "thinking_start":
140
+ partial.content[proxyEvent.contentIndex] = {
141
+ type: "thinking",
142
+ thinking: "",
143
+ };
144
+ event = { type: "thinking_start", contentIndex: proxyEvent.contentIndex, partial };
145
+ break;
146
+ case "thinking_delta": {
147
+ const content = partial.content[proxyEvent.contentIndex];
148
+ if (content?.type === "thinking") {
149
+ content.thinking += proxyEvent.delta;
150
+ event = {
151
+ type: "thinking_delta",
152
+ contentIndex: proxyEvent.contentIndex,
153
+ delta: proxyEvent.delta,
154
+ partial,
155
+ };
156
+ }
157
+ else {
158
+ throw new Error("Received thinking_delta for non-thinking content");
159
+ }
160
+ break;
161
+ }
162
+ case "thinking_end": {
163
+ const content = partial.content[proxyEvent.contentIndex];
164
+ if (content?.type === "thinking") {
165
+ content.thinkingSignature = proxyEvent.contentSignature;
166
+ event = {
167
+ type: "thinking_end",
168
+ contentIndex: proxyEvent.contentIndex,
169
+ content: content.thinking,
170
+ partial,
171
+ };
172
+ }
173
+ else {
174
+ throw new Error("Received thinking_end for non-thinking content");
175
+ }
176
+ break;
177
+ }
178
+ case "toolcall_start":
179
+ partial.content[proxyEvent.contentIndex] = {
180
+ type: "toolCall",
181
+ id: proxyEvent.id,
182
+ name: proxyEvent.toolName,
183
+ arguments: {},
184
+ partialJson: "",
185
+ };
186
+ event = { type: "toolcall_start", contentIndex: proxyEvent.contentIndex, partial };
187
+ break;
188
+ case "toolcall_delta": {
189
+ const content = partial.content[proxyEvent.contentIndex];
190
+ if (content?.type === "toolCall") {
191
+ content.partialJson += proxyEvent.delta;
192
+ content.arguments = parseStreamingJson(content.partialJson) || {};
193
+ event = {
194
+ type: "toolcall_delta",
195
+ contentIndex: proxyEvent.contentIndex,
196
+ delta: proxyEvent.delta,
197
+ partial,
198
+ };
199
+ partial.content[proxyEvent.contentIndex] = { ...content }; // Trigger reactivity
200
+ }
201
+ else {
202
+ throw new Error("Received toolcall_delta for non-toolCall content");
203
+ }
204
+ break;
205
+ }
206
+ case "toolcall_end": {
207
+ const content = partial.content[proxyEvent.contentIndex];
208
+ if (content?.type === "toolCall") {
209
+ delete content.partialJson;
210
+ event = {
211
+ type: "toolcall_end",
212
+ contentIndex: proxyEvent.contentIndex,
213
+ toolCall: content,
214
+ partial,
215
+ };
216
+ }
217
+ break;
218
+ }
219
+ case "done":
220
+ partial.stopReason = proxyEvent.reason;
221
+ partial.usage = proxyEvent.usage;
222
+ event = { type: "done", reason: proxyEvent.reason, message: partial };
223
+ break;
224
+ case "error":
225
+ partial.stopReason = proxyEvent.reason;
226
+ partial.errorMessage = proxyEvent.errorMessage;
227
+ partial.usage = proxyEvent.usage;
228
+ event = { type: "error", reason: proxyEvent.reason, error: partial };
229
+ break;
230
+ default: {
231
+ // Exhaustive check
232
+ const _exhaustiveCheck = proxyEvent;
233
+ console.warn(`Unhandled event type: ${proxyEvent.type}`);
234
+ break;
235
+ }
236
+ }
237
+ // Push the event to stream
238
+ if (event) {
239
+ stream.push(event);
240
+ }
241
+ else {
242
+ throw new Error("Failed to create event from proxy event");
243
+ }
244
+ }
245
+ }
246
+ }
247
+ }
248
+ // Check if aborted after reading
249
+ if (options.signal?.aborted) {
250
+ throw new Error("Request aborted by user");
251
+ }
252
+ stream.end();
253
+ }
254
+ catch (error) {
255
+ const errorMessage = error instanceof Error ? error.message : String(error);
256
+ if (errorMessage.toLowerCase().includes("proxy") && errorMessage.includes("Unauthorized")) {
257
+ clearAuthToken();
258
+ }
259
+ partial.stopReason = options.signal?.aborted ? "aborted" : "error";
260
+ partial.errorMessage = errorMessage;
261
+ stream.push({
262
+ type: "error",
263
+ reason: partial.stopReason,
264
+ error: partial,
265
+ });
266
+ stream.end();
267
+ }
268
+ finally {
269
+ // Clean up abort handler
270
+ if (options.signal) {
271
+ options.signal.removeEventListener("abort", abortHandler);
272
+ }
273
+ }
274
+ })();
275
+ return stream;
276
+ }
277
+ // Proxy transport executes the turn using a remote proxy server
278
+ /**
279
+ * Transport that uses an app server with user authentication tokens.
280
+ * The server manages user accounts and proxies requests to LLM providers.
281
+ */
282
+ export class AppTransport {
283
+ constructor(getMessages) {
284
+ this.getMessages = getMessages;
285
+ // Hardcoded proxy URL for now - will be made configurable later
286
+ this.proxyUrl = "https://genai.mariozechner.at";
287
+ }
288
+ async *run(userMessage, cfg, signal) {
289
+ const authToken = await getAuthToken();
290
+ if (!authToken) {
291
+ throw new Error(i18n("Auth token is required for proxy transport"));
292
+ }
293
+ // Use proxy - no local API key needed
294
+ const streamFn = (model, context, options) => {
295
+ return streamSimpleProxy(model, context, {
296
+ ...options,
297
+ authToken,
298
+ }, this.proxyUrl);
299
+ };
300
+ const context = {
301
+ systemPrompt: cfg.systemPrompt,
302
+ messages: await this.getMessages(),
303
+ tools: cfg.tools,
304
+ };
305
+ const pc = {
306
+ model: cfg.model,
307
+ reasoning: cfg.reasoning,
308
+ };
309
+ // Yield events from the upstream agentLoop iterator
310
+ // Pass streamFn as the 5th parameter to use proxy
311
+ for await (const ev of agentLoop(userMessage, context, pc, signal, streamFn)) {
312
+ yield ev;
313
+ }
314
+ }
315
+ }
316
+ //# sourceMappingURL=AppTransport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppTransport.js","sourceRoot":"","sources":["../../../src/state/transports/AppTransport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { type Message } from "@mariozechner/pi-ai";
2
+ import type { AgentRunConfig, AgentTransport } from "./types.js";
3
+ /**
4
+ * Transport that calls LLM providers directly.
5
+ * Optionally routes calls through a CORS proxy if enabled in settings.
6
+ */
7
+ export declare class ProviderTransport implements AgentTransport {
8
+ private readonly getMessages;
9
+ constructor(getMessages: () => Promise<Message[]>);
10
+ run(userMessage: Message, cfg: AgentRunConfig, signal?: AbortSignal): AsyncGenerator<import("@mariozechner/pi-ai").AgentEvent, void, unknown>;
11
+ }
12
+ //# sourceMappingURL=ProviderTransport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderTransport.d.ts","sourceRoot":"","sources":["../../../src/state/transports/ProviderTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,OAAO,EAAuC,MAAM,qBAAqB,CAAC;AAEtH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjE;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,cAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IAE3D,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,WAAW;CAqC1E"}
@@ -0,0 +1,44 @@
1
+ import { agentLoop } from "@mariozechner/pi-ai";
2
+ import { getAppStorage } from "../../storage/app-storage.js";
3
+ /**
4
+ * Transport that calls LLM providers directly.
5
+ * Optionally routes calls through a CORS proxy if enabled in settings.
6
+ */
7
+ export class ProviderTransport {
8
+ constructor(getMessages) {
9
+ this.getMessages = getMessages;
10
+ }
11
+ async *run(userMessage, cfg, signal) {
12
+ // Get API key from storage
13
+ const apiKey = await getAppStorage().providerKeys.getKey(cfg.model.provider);
14
+ if (!apiKey) {
15
+ throw new Error("no-api-key");
16
+ }
17
+ // Check if CORS proxy is enabled
18
+ const proxyEnabled = await getAppStorage().settings.get("proxy.enabled");
19
+ const proxyUrl = await getAppStorage().settings.get("proxy.url");
20
+ // Clone model and modify baseUrl if proxy is enabled
21
+ let model = cfg.model;
22
+ if (proxyEnabled && proxyUrl && cfg.model.baseUrl) {
23
+ model = {
24
+ ...cfg.model,
25
+ baseUrl: `${proxyUrl}/?url=${encodeURIComponent(cfg.model.baseUrl)}`,
26
+ };
27
+ }
28
+ const context = {
29
+ systemPrompt: cfg.systemPrompt,
30
+ messages: await this.getMessages(),
31
+ tools: cfg.tools,
32
+ };
33
+ const pc = {
34
+ model,
35
+ reasoning: cfg.reasoning,
36
+ apiKey,
37
+ };
38
+ // Yield events from agentLoop
39
+ for await (const ev of agentLoop(userMessage, context, pc, signal)) {
40
+ yield ev;
41
+ }
42
+ }
43
+ }
44
+ //# sourceMappingURL=ProviderTransport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderTransport.js","sourceRoot":"","sources":["../../../src/state/transports/ProviderTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,SAAS,EAAqD,MAAM,qBAAqB,CAAC;AACtH,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAG7D;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IAC7B,YAA6B,WAAqC;QAArC,gBAAW,GAAX,WAAW,CAA0B;IAAG,CAAC;IAEtE,KAAK,CAAC,CAAC,GAAG,CAAC,WAAoB,EAAE,GAAmB,EAAE,MAAoB;QACzE,2BAA2B;QAC3B,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7E,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;QAC/B,CAAC;QAED,iCAAiC;QACjC,MAAM,YAAY,GAAG,MAAM,aAAa,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAU,eAAe,CAAC,CAAC;QAClF,MAAM,QAAQ,GAAG,MAAM,aAAa,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAS,WAAW,CAAC,CAAC;QAEzE,qDAAqD;QACrD,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QACtB,IAAI,YAAY,IAAI,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACnD,KAAK,GAAG;gBACP,GAAG,GAAG,CAAC,KAAK;gBACZ,OAAO,EAAE,GAAG,QAAQ,SAAS,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;aACpE,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAiB;YAC7B,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,QAAQ,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE;YAClC,KAAK,EAAE,GAAG,CAAC,KAAK;SAChB,CAAC;QAEF,MAAM,EAAE,GAAiB;YACxB,KAAK;YACL,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,MAAM;SACN,CAAC;QAEF,8BAA8B;QAC9B,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,SAAS,CAAC,WAAqC,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;YAC9F,MAAM,EAAE,CAAC;QACV,CAAC;IACF,CAAC;CACD"}
@@ -0,0 +1,4 @@
1
+ export * from "./AppTransport.js";
2
+ export * from "./ProviderTransport.js";
3
+ export * from "./types.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/state/transports/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./AppTransport.js";
2
+ export * from "./ProviderTransport.js";
3
+ export * from "./types.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/state/transports/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,48 @@
1
+ import type { StopReason, Usage } from "@mariozechner/pi-ai";
2
+ export type ProxyAssistantMessageEvent = {
3
+ type: "start";
4
+ } | {
5
+ type: "text_start";
6
+ contentIndex: number;
7
+ } | {
8
+ type: "text_delta";
9
+ contentIndex: number;
10
+ delta: string;
11
+ } | {
12
+ type: "text_end";
13
+ contentIndex: number;
14
+ contentSignature?: string;
15
+ } | {
16
+ type: "thinking_start";
17
+ contentIndex: number;
18
+ } | {
19
+ type: "thinking_delta";
20
+ contentIndex: number;
21
+ delta: string;
22
+ } | {
23
+ type: "thinking_end";
24
+ contentIndex: number;
25
+ contentSignature?: string;
26
+ } | {
27
+ type: "toolcall_start";
28
+ contentIndex: number;
29
+ id: string;
30
+ toolName: string;
31
+ } | {
32
+ type: "toolcall_delta";
33
+ contentIndex: number;
34
+ delta: string;
35
+ } | {
36
+ type: "toolcall_end";
37
+ contentIndex: number;
38
+ } | {
39
+ type: "done";
40
+ reason: Extract<StopReason, "stop" | "length" | "toolUse">;
41
+ usage: Usage;
42
+ } | {
43
+ type: "error";
44
+ reason: Extract<StopReason, "aborted" | "error">;
45
+ errorMessage: string;
46
+ usage: Usage;
47
+ };
48
+ //# sourceMappingURL=proxy-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy-types.d.ts","sourceRoot":"","sources":["../../../src/state/transports/proxy-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,MAAM,0BAA0B,GACnC;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,GACzE;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC9E;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC1F;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=proxy-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy-types.js","sourceRoot":"","sources":["../../../src/state/transports/proxy-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import type { AgentEvent, AgentTool, Message, Model } from "@mariozechner/pi-ai";
2
+ export interface AgentRunConfig {
3
+ systemPrompt: string;
4
+ tools: AgentTool<any>[];
5
+ model: Model<any>;
6
+ reasoning?: "low" | "medium" | "high";
7
+ }
8
+ export interface AgentTransport {
9
+ run(userMessage: Message, config: AgentRunConfig, signal?: AbortSignal): AsyncIterable<AgentEvent>;
10
+ }
11
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/state/transports/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAGjF,MAAM,WAAW,cAAc;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;IACxB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,SAAS,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACtC;AAKD,MAAM,WAAW,cAAc;IAC9B,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;CACnG"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/state/transports/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ import type { AssistantMessage, Context } from "@mariozechner/pi-ai";
2
+ export interface DebugLogEntry {
3
+ timestamp: string;
4
+ request: {
5
+ provider: string;
6
+ model: string;
7
+ context: Context;
8
+ };
9
+ response?: AssistantMessage;
10
+ error?: unknown;
11
+ sseEvents: string[];
12
+ ttft?: number;
13
+ totalTime?: number;
14
+ }
15
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/state/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAErE,MAAM,WAAW,aAAa;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAC/D,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/state/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ import { ProviderKeysRepository } from "./repositories/provider-keys-repository.js";
2
+ import { SettingsRepository } from "./repositories/settings-repository.js";
3
+ import type { AppStorageConfig } from "./types.js";
4
+ /**
5
+ * High-level storage API aggregating all repositories.
6
+ * Apps configure backends and use repositories through this interface.
7
+ */
8
+ export declare class AppStorage {
9
+ readonly settings: SettingsRepository;
10
+ readonly providerKeys: ProviderKeysRepository;
11
+ constructor(config?: AppStorageConfig);
12
+ }
13
+ /**
14
+ * Get the global AppStorage instance.
15
+ * Throws if not initialized.
16
+ */
17
+ export declare function getAppStorage(): AppStorage;
18
+ /**
19
+ * Set the global AppStorage instance.
20
+ */
21
+ export declare function setAppStorage(storage: AppStorage): void;
22
+ /**
23
+ * Initialize AppStorage with default configuration if not already set.
24
+ */
25
+ export declare function initAppStorage(config?: AppStorageConfig): AppStorage;
26
+ //# sourceMappingURL=app-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-storage.d.ts","sourceRoot":"","sources":["../../src/storage/app-storage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;;GAGG;AACH,qBAAa,UAAU;IACtB,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAC;gBAElC,MAAM,GAAE,gBAAqB;CAQzC;AAKD;;;GAGG;AACH,wBAAgB,aAAa,IAAI,UAAU,CAK1C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAEvD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,GAAE,gBAAqB,GAAG,UAAU,CAKxE"}
@@ -0,0 +1,44 @@
1
+ import { LocalStorageBackend } from "./backends/local-storage-backend.js";
2
+ import { ProviderKeysRepository } from "./repositories/provider-keys-repository.js";
3
+ import { SettingsRepository } from "./repositories/settings-repository.js";
4
+ /**
5
+ * High-level storage API aggregating all repositories.
6
+ * Apps configure backends and use repositories through this interface.
7
+ */
8
+ export class AppStorage {
9
+ constructor(config = {}) {
10
+ // Use LocalStorage with prefixes as defaults
11
+ const settingsBackend = config.settings ?? new LocalStorageBackend("settings");
12
+ const providerKeysBackend = config.providerKeys ?? new LocalStorageBackend("providerKeys");
13
+ this.settings = new SettingsRepository(settingsBackend);
14
+ this.providerKeys = new ProviderKeysRepository(providerKeysBackend);
15
+ }
16
+ }
17
+ // Global instance management
18
+ let globalAppStorage = null;
19
+ /**
20
+ * Get the global AppStorage instance.
21
+ * Throws if not initialized.
22
+ */
23
+ export function getAppStorage() {
24
+ if (!globalAppStorage) {
25
+ throw new Error("AppStorage not initialized. Call setAppStorage() first.");
26
+ }
27
+ return globalAppStorage;
28
+ }
29
+ /**
30
+ * Set the global AppStorage instance.
31
+ */
32
+ export function setAppStorage(storage) {
33
+ globalAppStorage = storage;
34
+ }
35
+ /**
36
+ * Initialize AppStorage with default configuration if not already set.
37
+ */
38
+ export function initAppStorage(config = {}) {
39
+ if (!globalAppStorage) {
40
+ globalAppStorage = new AppStorage(config);
41
+ }
42
+ return globalAppStorage;
43
+ }
44
+ //# sourceMappingURL=app-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-storage.js","sourceRoot":"","sources":["../../src/storage/app-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAG3E;;;GAGG;AACH,MAAM,OAAO,UAAU;IAItB,YAAY,SAA2B,EAAE;QACxC,6CAA6C;QAC7C,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC/E,MAAM,mBAAmB,GAAG,MAAM,CAAC,YAAY,IAAI,IAAI,mBAAmB,CAAC,cAAc,CAAC,CAAC;QAE3F,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAkB,CAAC,eAAe,CAAC,CAAC;QACxD,IAAI,CAAC,YAAY,GAAG,IAAI,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;IACrE,CAAC;CACD;AAED,6BAA6B;AAC7B,IAAI,gBAAgB,GAAsB,IAAI,CAAC;AAE/C;;;GAGG;AACH,MAAM,UAAU,aAAa;IAC5B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,gBAAgB,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAmB;IAChD,gBAAgB,GAAG,OAAO,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,SAA2B,EAAE;IAC3D,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvB,gBAAgB,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,gBAAgB,CAAC;AACzB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { StorageBackend } from "../types.js";
2
+ /**
3
+ * Storage backend using chrome.storage.local.
4
+ * Good for: Browser extensions, syncing across devices (with chrome.storage.sync).
5
+ * Limits: ~10MB for local, ~100KB for sync, async API.
6
+ */
7
+ export declare class ChromeStorageBackend 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=chrome-storage-backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chrome-storage-backend.d.ts","sourceRoot":"","sources":["../../../src/storage/backends/chrome-storage-backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAKlD;;;;GAIG;AACH,qBAAa,oBAAqB,YAAW,cAAc;IAC9C,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;IAUhD,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAStD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASlC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAkBzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IActB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAIxC"}