indusagi 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (422) hide show
  1. package/README.md +27 -0
  2. package/dist/agent/agent-loop.d.ts +21 -0
  3. package/dist/agent/agent-loop.d.ts.map +1 -0
  4. package/dist/agent/agent-loop.js +307 -0
  5. package/dist/agent/agent.d.ts +122 -0
  6. package/dist/agent/agent.d.ts.map +1 -0
  7. package/dist/agent/agent.js +347 -0
  8. package/dist/agent/index.d.ts +5 -0
  9. package/dist/agent/index.d.ts.map +1 -0
  10. package/dist/agent/index.js +8 -0
  11. package/dist/agent/proxy.d.ts +85 -0
  12. package/dist/agent/proxy.d.ts.map +1 -0
  13. package/dist/agent/proxy.js +267 -0
  14. package/dist/agent/types.d.ts +178 -0
  15. package/dist/agent/types.d.ts.map +1 -0
  16. package/dist/agent/types.js +1 -0
  17. package/dist/agent.d.ts +2 -0
  18. package/dist/agent.d.ts.map +1 -0
  19. package/dist/agent.js +1 -0
  20. package/dist/ai/api-registry.d.ts +20 -0
  21. package/dist/ai/api-registry.d.ts.map +1 -0
  22. package/dist/ai/api-registry.js +43 -0
  23. package/dist/ai/cli.d.ts +3 -0
  24. package/dist/ai/cli.d.ts.map +1 -0
  25. package/dist/ai/cli.js +115 -0
  26. package/dist/ai/env-api-keys.d.ts +9 -0
  27. package/dist/ai/env-api-keys.d.ts.map +1 -0
  28. package/dist/ai/env-api-keys.js +90 -0
  29. package/dist/ai/index.d.ts +20 -0
  30. package/dist/ai/index.d.ts.map +1 -0
  31. package/dist/ai/index.js +19 -0
  32. package/dist/ai/models.d.ts +21 -0
  33. package/dist/ai/models.d.ts.map +1 -0
  34. package/dist/ai/models.generated.d.ts +11500 -0
  35. package/dist/ai/models.generated.d.ts.map +1 -0
  36. package/dist/ai/models.generated.js +11350 -0
  37. package/dist/ai/models.js +47 -0
  38. package/dist/ai/providers/amazon-bedrock.d.ts +15 -0
  39. package/dist/ai/providers/amazon-bedrock.d.ts.map +1 -0
  40. package/dist/ai/providers/amazon-bedrock.js +510 -0
  41. package/dist/ai/providers/anthropic.d.ts +13 -0
  42. package/dist/ai/providers/anthropic.d.ts.map +1 -0
  43. package/dist/ai/providers/anthropic.js +584 -0
  44. package/dist/ai/providers/azure-openai-responses.d.ts +15 -0
  45. package/dist/ai/providers/azure-openai-responses.d.ts.map +1 -0
  46. package/dist/ai/providers/azure-openai-responses.js +183 -0
  47. package/dist/ai/providers/google-gemini-cli.d.ts +74 -0
  48. package/dist/ai/providers/google-gemini-cli.d.ts.map +1 -0
  49. package/dist/ai/providers/google-gemini-cli.js +807 -0
  50. package/dist/ai/providers/google-shared.d.ts +64 -0
  51. package/dist/ai/providers/google-shared.d.ts.map +1 -0
  52. package/dist/ai/providers/google-shared.js +300 -0
  53. package/dist/ai/providers/google-vertex.d.ts +15 -0
  54. package/dist/ai/providers/google-vertex.d.ts.map +1 -0
  55. package/dist/ai/providers/google-vertex.js +370 -0
  56. package/dist/ai/providers/google.d.ts +13 -0
  57. package/dist/ai/providers/google.d.ts.map +1 -0
  58. package/dist/ai/providers/google.js +351 -0
  59. package/dist/ai/providers/openai-codex-responses.d.ts +9 -0
  60. package/dist/ai/providers/openai-codex-responses.d.ts.map +1 -0
  61. package/dist/ai/providers/openai-codex-responses.js +341 -0
  62. package/dist/ai/providers/openai-completions.d.ts +15 -0
  63. package/dist/ai/providers/openai-completions.d.ts.map +1 -0
  64. package/dist/ai/providers/openai-completions.js +701 -0
  65. package/dist/ai/providers/openai-responses-shared.d.ts +17 -0
  66. package/dist/ai/providers/openai-responses-shared.d.ts.map +1 -0
  67. package/dist/ai/providers/openai-responses-shared.js +423 -0
  68. package/dist/ai/providers/openai-responses.d.ts +13 -0
  69. package/dist/ai/providers/openai-responses.d.ts.map +1 -0
  70. package/dist/ai/providers/openai-responses.js +182 -0
  71. package/dist/ai/providers/register-builtins.d.ts +3 -0
  72. package/dist/ai/providers/register-builtins.d.ts.map +1 -0
  73. package/dist/ai/providers/register-builtins.js +62 -0
  74. package/dist/ai/providers/simple-options.d.ts +8 -0
  75. package/dist/ai/providers/simple-options.d.ts.map +1 -0
  76. package/dist/ai/providers/simple-options.js +31 -0
  77. package/dist/ai/providers/transform-messages.d.ts +8 -0
  78. package/dist/ai/providers/transform-messages.d.ts.map +1 -0
  79. package/dist/ai/providers/transform-messages.js +149 -0
  80. package/dist/ai/stream.d.ts +8 -0
  81. package/dist/ai/stream.d.ts.map +1 -0
  82. package/dist/ai/stream.js +34 -0
  83. package/dist/ai/types.d.ts +234 -0
  84. package/dist/ai/types.d.ts.map +1 -0
  85. package/dist/ai/types.js +1 -0
  86. package/dist/ai/utils/event-stream.d.ts +21 -0
  87. package/dist/ai/utils/event-stream.d.ts.map +1 -0
  88. package/dist/ai/utils/event-stream.js +76 -0
  89. package/dist/ai/utils/json-parse.d.ts +9 -0
  90. package/dist/ai/utils/json-parse.d.ts.map +1 -0
  91. package/dist/ai/utils/json-parse.js +28 -0
  92. package/dist/ai/utils/oauth/anthropic.d.ts +17 -0
  93. package/dist/ai/utils/oauth/anthropic.d.ts.map +1 -0
  94. package/dist/ai/utils/oauth/anthropic.js +103 -0
  95. package/dist/ai/utils/oauth/github-copilot.d.ts +30 -0
  96. package/dist/ai/utils/oauth/github-copilot.d.ts.map +1 -0
  97. package/dist/ai/utils/oauth/github-copilot.js +280 -0
  98. package/dist/ai/utils/oauth/google-antigravity.d.ts +26 -0
  99. package/dist/ai/utils/oauth/google-antigravity.d.ts.map +1 -0
  100. package/dist/ai/utils/oauth/google-antigravity.js +355 -0
  101. package/dist/ai/utils/oauth/google-gemini-cli.d.ts +26 -0
  102. package/dist/ai/utils/oauth/google-gemini-cli.d.ts.map +1 -0
  103. package/dist/ai/utils/oauth/google-gemini-cli.js +461 -0
  104. package/dist/ai/utils/oauth/index.d.ts +50 -0
  105. package/dist/ai/utils/oauth/index.d.ts.map +1 -0
  106. package/dist/ai/utils/oauth/index.js +106 -0
  107. package/dist/ai/utils/oauth/openai-codex.d.ts +34 -0
  108. package/dist/ai/utils/oauth/openai-codex.d.ts.map +1 -0
  109. package/dist/ai/utils/oauth/openai-codex.js +379 -0
  110. package/dist/ai/utils/oauth/pkce.d.ts +13 -0
  111. package/dist/ai/utils/oauth/pkce.d.ts.map +1 -0
  112. package/dist/ai/utils/oauth/pkce.js +30 -0
  113. package/dist/ai/utils/oauth/types.d.ts +47 -0
  114. package/dist/ai/utils/oauth/types.d.ts.map +1 -0
  115. package/dist/ai/utils/oauth/types.js +1 -0
  116. package/dist/ai/utils/overflow.d.ts +51 -0
  117. package/dist/ai/utils/overflow.d.ts.map +1 -0
  118. package/dist/ai/utils/overflow.js +111 -0
  119. package/dist/ai/utils/sanitize-unicode.d.ts +22 -0
  120. package/dist/ai/utils/sanitize-unicode.d.ts.map +1 -0
  121. package/dist/ai/utils/sanitize-unicode.js +25 -0
  122. package/dist/ai/utils/typebox-helpers.d.ts +17 -0
  123. package/dist/ai/utils/typebox-helpers.d.ts.map +1 -0
  124. package/dist/ai/utils/typebox-helpers.js +20 -0
  125. package/dist/ai/utils/validation.d.ts +18 -0
  126. package/dist/ai/utils/validation.d.ts.map +1 -0
  127. package/dist/ai/utils/validation.js +71 -0
  128. package/dist/ai.d.ts +2 -0
  129. package/dist/ai.d.ts.map +1 -0
  130. package/dist/ai.js +1 -0
  131. package/dist/index.d.ts +5 -0
  132. package/dist/index.d.ts.map +1 -0
  133. package/dist/index.js +4 -0
  134. package/dist/tui/autocomplete.d.ts +47 -0
  135. package/dist/tui/autocomplete.d.ts.map +1 -0
  136. package/dist/tui/autocomplete.js +474 -0
  137. package/dist/tui/components/box.d.ts +24 -0
  138. package/dist/tui/components/box.d.ts.map +1 -0
  139. package/dist/tui/components/box.js +100 -0
  140. package/dist/tui/components/cancellable-loader.d.ts +22 -0
  141. package/dist/tui/components/cancellable-loader.d.ts.map +1 -0
  142. package/dist/tui/components/cancellable-loader.js +35 -0
  143. package/dist/tui/components/editor.d.ts +171 -0
  144. package/dist/tui/components/editor.d.ts.map +1 -0
  145. package/dist/tui/components/editor.js +1540 -0
  146. package/dist/tui/components/image.d.ts +28 -0
  147. package/dist/tui/components/image.d.ts.map +1 -0
  148. package/dist/tui/components/image.js +60 -0
  149. package/dist/tui/components/input.d.ts +25 -0
  150. package/dist/tui/components/input.d.ts.map +1 -0
  151. package/dist/tui/components/input.js +297 -0
  152. package/dist/tui/components/loader.d.ts +21 -0
  153. package/dist/tui/components/loader.d.ts.map +1 -0
  154. package/dist/tui/components/loader.js +45 -0
  155. package/dist/tui/components/markdown.d.ts +89 -0
  156. package/dist/tui/components/markdown.d.ts.map +1 -0
  157. package/dist/tui/components/markdown.js +525 -0
  158. package/dist/tui/components/select-list.d.ts +32 -0
  159. package/dist/tui/components/select-list.d.ts.map +1 -0
  160. package/dist/tui/components/select-list.js +147 -0
  161. package/dist/tui/components/settings-list.d.ts +50 -0
  162. package/dist/tui/components/settings-list.d.ts.map +1 -0
  163. package/dist/tui/components/settings-list.js +176 -0
  164. package/dist/tui/components/spacer.d.ts +12 -0
  165. package/dist/tui/components/spacer.d.ts.map +1 -0
  166. package/dist/tui/components/spacer.js +21 -0
  167. package/dist/tui/components/text.d.ts +19 -0
  168. package/dist/tui/components/text.d.ts.map +1 -0
  169. package/dist/tui/components/text.js +80 -0
  170. package/dist/tui/components/truncated-text.d.ts +13 -0
  171. package/dist/tui/components/truncated-text.d.ts.map +1 -0
  172. package/dist/tui/components/truncated-text.js +47 -0
  173. package/dist/tui/editor-component.d.ts +35 -0
  174. package/dist/tui/editor-component.d.ts.map +1 -0
  175. package/dist/tui/editor-component.js +1 -0
  176. package/dist/tui/fuzzy.d.ts +16 -0
  177. package/dist/tui/fuzzy.d.ts.map +1 -0
  178. package/dist/tui/fuzzy.js +106 -0
  179. package/dist/tui/index.d.ts +23 -0
  180. package/dist/tui/index.d.ts.map +1 -0
  181. package/dist/tui/index.js +31 -0
  182. package/dist/tui/keybindings.d.ts +39 -0
  183. package/dist/tui/keybindings.d.ts.map +1 -0
  184. package/dist/tui/keybindings.js +110 -0
  185. package/dist/tui/keys.d.ts +160 -0
  186. package/dist/tui/keys.d.ts.map +1 -0
  187. package/dist/tui/keys.js +939 -0
  188. package/dist/tui/stdin-buffer.d.ts +48 -0
  189. package/dist/tui/stdin-buffer.d.ts.map +1 -0
  190. package/dist/tui/stdin-buffer.js +315 -0
  191. package/dist/tui/terminal-image.d.ts +67 -0
  192. package/dist/tui/terminal-image.d.ts.map +1 -0
  193. package/dist/tui/terminal-image.js +277 -0
  194. package/dist/tui/terminal.d.ts +63 -0
  195. package/dist/tui/terminal.d.ts.map +1 -0
  196. package/dist/tui/terminal.js +174 -0
  197. package/dist/tui/tui.d.ts +191 -0
  198. package/dist/tui/tui.d.ts.map +1 -0
  199. package/dist/tui/tui.js +881 -0
  200. package/dist/tui/utils.d.ts +78 -0
  201. package/dist/tui/utils.d.ts.map +1 -0
  202. package/dist/tui/utils.js +801 -0
  203. package/dist/tui.d.ts +2 -0
  204. package/dist/tui.d.ts.map +1 -0
  205. package/dist/tui.js +1 -0
  206. package/dist/webui/ChatPanel.d.ts +28 -0
  207. package/dist/webui/ChatPanel.d.ts.map +1 -0
  208. package/dist/webui/ChatPanel.js +192 -0
  209. package/dist/webui/components/AgentInterface.d.ts +39 -0
  210. package/dist/webui/components/AgentInterface.d.ts.map +1 -0
  211. package/dist/webui/components/AgentInterface.js +370 -0
  212. package/dist/webui/components/AttachmentTile.d.ts +12 -0
  213. package/dist/webui/components/AttachmentTile.d.ts.map +1 -0
  214. package/dist/webui/components/AttachmentTile.js +110 -0
  215. package/dist/webui/components/ConsoleBlock.d.ts +12 -0
  216. package/dist/webui/components/ConsoleBlock.d.ts.map +1 -0
  217. package/dist/webui/components/ConsoleBlock.js +83 -0
  218. package/dist/webui/components/CustomProviderCard.d.ts +17 -0
  219. package/dist/webui/components/CustomProviderCard.d.ts.map +1 -0
  220. package/dist/webui/components/CustomProviderCard.js +109 -0
  221. package/dist/webui/components/ExpandableSection.d.ts +15 -0
  222. package/dist/webui/components/ExpandableSection.d.ts.map +1 -0
  223. package/dist/webui/components/ExpandableSection.js +62 -0
  224. package/dist/webui/components/Input.d.ts +26 -0
  225. package/dist/webui/components/Input.d.ts.map +1 -0
  226. package/dist/webui/components/Input.js +56 -0
  227. package/dist/webui/components/MessageEditor.d.ts +44 -0
  228. package/dist/webui/components/MessageEditor.d.ts.map +1 -0
  229. package/dist/webui/components/MessageEditor.js +413 -0
  230. package/dist/webui/components/MessageList.d.ts +14 -0
  231. package/dist/webui/components/MessageList.d.ts.map +1 -0
  232. package/dist/webui/components/MessageList.js +103 -0
  233. package/dist/webui/components/Messages.d.ts +94 -0
  234. package/dist/webui/components/Messages.d.ts.map +1 -0
  235. package/dist/webui/components/Messages.js +351 -0
  236. package/dist/webui/components/ProviderKeyInput.d.ts +16 -0
  237. package/dist/webui/components/ProviderKeyInput.d.ts.map +1 -0
  238. package/dist/webui/components/ProviderKeyInput.js +170 -0
  239. package/dist/webui/components/SandboxedIframe.d.ts +85 -0
  240. package/dist/webui/components/SandboxedIframe.d.ts.map +1 -0
  241. package/dist/webui/components/SandboxedIframe.js +510 -0
  242. package/dist/webui/components/StreamingMessageContainer.d.ts +19 -0
  243. package/dist/webui/components/StreamingMessageContainer.d.ts.map +1 -0
  244. package/dist/webui/components/StreamingMessageContainer.js +116 -0
  245. package/dist/webui/components/ThinkingBlock.d.ts +11 -0
  246. package/dist/webui/components/ThinkingBlock.d.ts.map +1 -0
  247. package/dist/webui/components/ThinkingBlock.js +57 -0
  248. package/dist/webui/components/message-renderer-registry.d.ts +12 -0
  249. package/dist/webui/components/message-renderer-registry.d.ts.map +1 -0
  250. package/dist/webui/components/message-renderer-registry.js +11 -0
  251. package/dist/webui/components/sandbox/ArtifactsRuntimeProvider.d.ts +35 -0
  252. package/dist/webui/components/sandbox/ArtifactsRuntimeProvider.d.ts.map +1 -0
  253. package/dist/webui/components/sandbox/ArtifactsRuntimeProvider.js +188 -0
  254. package/dist/webui/components/sandbox/AttachmentsRuntimeProvider.d.ts +17 -0
  255. package/dist/webui/components/sandbox/AttachmentsRuntimeProvider.d.ts.map +1 -0
  256. package/dist/webui/components/sandbox/AttachmentsRuntimeProvider.js +63 -0
  257. package/dist/webui/components/sandbox/ConsoleRuntimeProvider.d.ts +42 -0
  258. package/dist/webui/components/sandbox/ConsoleRuntimeProvider.d.ts.map +1 -0
  259. package/dist/webui/components/sandbox/ConsoleRuntimeProvider.js +160 -0
  260. package/dist/webui/components/sandbox/FileDownloadRuntimeProvider.d.ts +30 -0
  261. package/dist/webui/components/sandbox/FileDownloadRuntimeProvider.d.ts.map +1 -0
  262. package/dist/webui/components/sandbox/FileDownloadRuntimeProvider.js +96 -0
  263. package/dist/webui/components/sandbox/RuntimeMessageBridge.d.ts +19 -0
  264. package/dist/webui/components/sandbox/RuntimeMessageBridge.d.ts.map +1 -0
  265. package/dist/webui/components/sandbox/RuntimeMessageBridge.js +73 -0
  266. package/dist/webui/components/sandbox/RuntimeMessageRouter.d.ts +65 -0
  267. package/dist/webui/components/sandbox/RuntimeMessageRouter.d.ts.map +1 -0
  268. package/dist/webui/components/sandbox/RuntimeMessageRouter.js +167 -0
  269. package/dist/webui/components/sandbox/SandboxRuntimeProvider.d.ts +48 -0
  270. package/dist/webui/components/sandbox/SandboxRuntimeProvider.d.ts.map +1 -0
  271. package/dist/webui/components/sandbox/SandboxRuntimeProvider.js +1 -0
  272. package/dist/webui/dialogs/ApiKeyPromptDialog.d.ts +15 -0
  273. package/dist/webui/dialogs/ApiKeyPromptDialog.d.ts.map +1 -0
  274. package/dist/webui/dialogs/ApiKeyPromptDialog.js +78 -0
  275. package/dist/webui/dialogs/AttachmentOverlay.d.ts +32 -0
  276. package/dist/webui/dialogs/AttachmentOverlay.d.ts.map +1 -0
  277. package/dist/webui/dialogs/AttachmentOverlay.js +575 -0
  278. package/dist/webui/dialogs/CustomProviderDialog.d.ts +25 -0
  279. package/dist/webui/dialogs/CustomProviderDialog.d.ts.map +1 -0
  280. package/dist/webui/dialogs/CustomProviderDialog.js +269 -0
  281. package/dist/webui/dialogs/ModelSelector.d.ts +27 -0
  282. package/dist/webui/dialogs/ModelSelector.d.ts.map +1 -0
  283. package/dist/webui/dialogs/ModelSelector.js +319 -0
  284. package/dist/webui/dialogs/PersistentStorageDialog.d.ts +17 -0
  285. package/dist/webui/dialogs/PersistentStorageDialog.d.ts.map +1 -0
  286. package/dist/webui/dialogs/PersistentStorageDialog.js +146 -0
  287. package/dist/webui/dialogs/ProvidersModelsTab.d.ts +20 -0
  288. package/dist/webui/dialogs/ProvidersModelsTab.d.ts.map +1 -0
  289. package/dist/webui/dialogs/ProvidersModelsTab.js +190 -0
  290. package/dist/webui/dialogs/SessionListDialog.d.ts +19 -0
  291. package/dist/webui/dialogs/SessionListDialog.d.ts.map +1 -0
  292. package/dist/webui/dialogs/SessionListDialog.js +153 -0
  293. package/dist/webui/dialogs/SettingsDialog.d.ts +30 -0
  294. package/dist/webui/dialogs/SettingsDialog.d.ts.map +1 -0
  295. package/dist/webui/dialogs/SettingsDialog.js +228 -0
  296. package/dist/webui/index.d.ts +65 -0
  297. package/dist/webui/index.d.ts.map +1 -0
  298. package/dist/webui/index.js +67 -0
  299. package/dist/webui/prompts/prompts.d.ts +11 -0
  300. package/dist/webui/prompts/prompts.d.ts.map +1 -0
  301. package/dist/webui/prompts/prompts.js +271 -0
  302. package/dist/webui/storage/app-storage.d.ts +33 -0
  303. package/dist/webui/storage/app-storage.d.ts.map +1 -0
  304. package/dist/webui/storage/app-storage.js +37 -0
  305. package/dist/webui/storage/backends/indexeddb-storage-backend.d.ts +27 -0
  306. package/dist/webui/storage/backends/indexeddb-storage-backend.d.ts.map +1 -0
  307. package/dist/webui/storage/backends/indexeddb-storage-backend.js +165 -0
  308. package/dist/webui/storage/store.d.ts +23 -0
  309. package/dist/webui/storage/store.d.ts.map +1 -0
  310. package/dist/webui/storage/store.js +25 -0
  311. package/dist/webui/storage/stores/custom-providers-store.d.ts +25 -0
  312. package/dist/webui/storage/stores/custom-providers-store.d.ts.map +1 -0
  313. package/dist/webui/storage/stores/custom-providers-store.js +34 -0
  314. package/dist/webui/storage/stores/provider-keys-store.d.ts +14 -0
  315. package/dist/webui/storage/stores/provider-keys-store.d.ts.map +1 -0
  316. package/dist/webui/storage/stores/provider-keys-store.js +26 -0
  317. package/dist/webui/storage/stores/sessions-store.d.ts +32 -0
  318. package/dist/webui/storage/stores/sessions-store.d.ts.map +1 -0
  319. package/dist/webui/storage/stores/sessions-store.js +112 -0
  320. package/dist/webui/storage/stores/settings-store.d.ts +14 -0
  321. package/dist/webui/storage/stores/settings-store.d.ts.map +1 -0
  322. package/dist/webui/storage/stores/settings-store.js +27 -0
  323. package/dist/webui/storage/types.d.ts +176 -0
  324. package/dist/webui/storage/types.d.ts.map +1 -0
  325. package/dist/webui/storage/types.js +1 -0
  326. package/dist/webui/tools/artifacts/ArtifactElement.d.ts +9 -0
  327. package/dist/webui/tools/artifacts/ArtifactElement.d.ts.map +1 -0
  328. package/dist/webui/tools/artifacts/ArtifactElement.js +10 -0
  329. package/dist/webui/tools/artifacts/ArtifactPill.d.ts +4 -0
  330. package/dist/webui/tools/artifacts/ArtifactPill.d.ts.map +1 -0
  331. package/dist/webui/tools/artifacts/ArtifactPill.js +22 -0
  332. package/dist/webui/tools/artifacts/Console.d.ts +18 -0
  333. package/dist/webui/tools/artifacts/Console.d.ts.map +1 -0
  334. package/dist/webui/tools/artifacts/Console.js +94 -0
  335. package/dist/webui/tools/artifacts/DocxArtifact.d.ts +22 -0
  336. package/dist/webui/tools/artifacts/DocxArtifact.d.ts.map +1 -0
  337. package/dist/webui/tools/artifacts/DocxArtifact.js +207 -0
  338. package/dist/webui/tools/artifacts/ExcelArtifact.d.ts +24 -0
  339. package/dist/webui/tools/artifacts/ExcelArtifact.d.ts.map +1 -0
  340. package/dist/webui/tools/artifacts/ExcelArtifact.js +215 -0
  341. package/dist/webui/tools/artifacts/GenericArtifact.d.ts +19 -0
  342. package/dist/webui/tools/artifacts/GenericArtifact.d.ts.map +1 -0
  343. package/dist/webui/tools/artifacts/GenericArtifact.js +116 -0
  344. package/dist/webui/tools/artifacts/HtmlArtifact.d.ts +27 -0
  345. package/dist/webui/tools/artifacts/HtmlArtifact.d.ts.map +1 -0
  346. package/dist/webui/tools/artifacts/HtmlArtifact.js +188 -0
  347. package/dist/webui/tools/artifacts/ImageArtifact.d.ts +20 -0
  348. package/dist/webui/tools/artifacts/ImageArtifact.d.ts.map +1 -0
  349. package/dist/webui/tools/artifacts/ImageArtifact.js +119 -0
  350. package/dist/webui/tools/artifacts/MarkdownArtifact.d.ts +19 -0
  351. package/dist/webui/tools/artifacts/MarkdownArtifact.d.ts.map +1 -0
  352. package/dist/webui/tools/artifacts/MarkdownArtifact.js +81 -0
  353. package/dist/webui/tools/artifacts/PdfArtifact.d.ts +25 -0
  354. package/dist/webui/tools/artifacts/PdfArtifact.d.ts.map +1 -0
  355. package/dist/webui/tools/artifacts/PdfArtifact.js +183 -0
  356. package/dist/webui/tools/artifacts/SvgArtifact.d.ts +18 -0
  357. package/dist/webui/tools/artifacts/SvgArtifact.d.ts.map +1 -0
  358. package/dist/webui/tools/artifacts/SvgArtifact.js +77 -0
  359. package/dist/webui/tools/artifacts/TextArtifact.d.ts +19 -0
  360. package/dist/webui/tools/artifacts/TextArtifact.d.ts.map +1 -0
  361. package/dist/webui/tools/artifacts/TextArtifact.js +143 -0
  362. package/dist/webui/tools/artifacts/artifacts-tool-renderer.d.ts +11 -0
  363. package/dist/webui/tools/artifacts/artifacts-tool-renderer.d.ts.map +1 -0
  364. package/dist/webui/tools/artifacts/artifacts-tool-renderer.js +271 -0
  365. package/dist/webui/tools/artifacts/artifacts.d.ts +63 -0
  366. package/dist/webui/tools/artifacts/artifacts.d.ts.map +1 -0
  367. package/dist/webui/tools/artifacts/artifacts.js +658 -0
  368. package/dist/webui/tools/artifacts/index.d.ts +8 -0
  369. package/dist/webui/tools/artifacts/index.d.ts.map +1 -0
  370. package/dist/webui/tools/artifacts/index.js +7 -0
  371. package/dist/webui/tools/extract-document.d.ts +24 -0
  372. package/dist/webui/tools/extract-document.d.ts.map +1 -0
  373. package/dist/webui/tools/extract-document.js +215 -0
  374. package/dist/webui/tools/index.d.ts +16 -0
  375. package/dist/webui/tools/index.d.ts.map +1 -0
  376. package/dist/webui/tools/index.js +32 -0
  377. package/dist/webui/tools/javascript-repl.d.ts +44 -0
  378. package/dist/webui/tools/javascript-repl.d.ts.map +1 -0
  379. package/dist/webui/tools/javascript-repl.js +223 -0
  380. package/dist/webui/tools/renderer-registry.d.ts +23 -0
  381. package/dist/webui/tools/renderer-registry.d.ts.map +1 -0
  382. package/dist/webui/tools/renderer-registry.js +106 -0
  383. package/dist/webui/tools/renderers/BashRenderer.d.ts +10 -0
  384. package/dist/webui/tools/renderers/BashRenderer.d.ts.map +1 -0
  385. package/dist/webui/tools/renderers/BashRenderer.js +41 -0
  386. package/dist/webui/tools/renderers/CalculateRenderer.d.ts +10 -0
  387. package/dist/webui/tools/renderers/CalculateRenderer.d.ts.map +1 -0
  388. package/dist/webui/tools/renderers/CalculateRenderer.js +44 -0
  389. package/dist/webui/tools/renderers/DefaultRenderer.d.ts +6 -0
  390. package/dist/webui/tools/renderers/DefaultRenderer.d.ts.map +1 -0
  391. package/dist/webui/tools/renderers/DefaultRenderer.js +93 -0
  392. package/dist/webui/tools/renderers/GetCurrentTimeRenderer.d.ts +10 -0
  393. package/dist/webui/tools/renderers/GetCurrentTimeRenderer.d.ts.map +1 -0
  394. package/dist/webui/tools/renderers/GetCurrentTimeRenderer.js +71 -0
  395. package/dist/webui/tools/types.d.ts +10 -0
  396. package/dist/webui/tools/types.d.ts.map +1 -0
  397. package/dist/webui/tools/types.js +1 -0
  398. package/dist/webui/utils/attachment-utils.d.ts +19 -0
  399. package/dist/webui/utils/attachment-utils.d.ts.map +1 -0
  400. package/dist/webui/utils/attachment-utils.js +414 -0
  401. package/dist/webui/utils/auth-token.d.ts +3 -0
  402. package/dist/webui/utils/auth-token.d.ts.map +1 -0
  403. package/dist/webui/utils/auth-token.js +18 -0
  404. package/dist/webui/utils/format.d.ts +6 -0
  405. package/dist/webui/utils/format.d.ts.map +1 -0
  406. package/dist/webui/utils/format.js +46 -0
  407. package/dist/webui/utils/i18n.d.ts +636 -0
  408. package/dist/webui/utils/i18n.d.ts.map +1 -0
  409. package/dist/webui/utils/i18n.js +417 -0
  410. package/dist/webui/utils/model-discovery.d.ts +38 -0
  411. package/dist/webui/utils/model-discovery.d.ts.map +1 -0
  412. package/dist/webui/utils/model-discovery.js +242 -0
  413. package/dist/webui/utils/proxy-utils.d.ts +45 -0
  414. package/dist/webui/utils/proxy-utils.d.ts.map +1 -0
  415. package/dist/webui/utils/proxy-utils.js +115 -0
  416. package/dist/webui/utils/test-sessions.d.ts +359 -0
  417. package/dist/webui/utils/test-sessions.d.ts.map +1 -0
  418. package/dist/webui/utils/test-sessions.js +2324 -0
  419. package/dist/webui.d.ts +2 -0
  420. package/dist/webui.d.ts.map +1 -0
  421. package/dist/webui.js +1 -0
  422. package/package.json +105 -0
@@ -0,0 +1,33 @@
1
+ import type { CustomProvidersStore } from "./stores/custom-providers-store.js";
2
+ import type { ProviderKeysStore } from "./stores/provider-keys-store.js";
3
+ import type { SessionsStore } from "./stores/sessions-store.js";
4
+ import type { SettingsStore } from "./stores/settings-store.js";
5
+ import type { StorageBackend } from "./types.js";
6
+ /**
7
+ * High-level storage API providing access to all storage operations.
8
+ * Subclasses can extend this to add domain-specific stores.
9
+ */
10
+ export declare class AppStorage {
11
+ readonly backend: StorageBackend;
12
+ readonly settings: SettingsStore;
13
+ readonly providerKeys: ProviderKeysStore;
14
+ readonly sessions: SessionsStore;
15
+ readonly customProviders: CustomProvidersStore;
16
+ constructor(settings: SettingsStore, providerKeys: ProviderKeysStore, sessions: SessionsStore, customProviders: CustomProvidersStore, backend: StorageBackend);
17
+ getQuotaInfo(): Promise<{
18
+ usage: number;
19
+ quota: number;
20
+ percent: number;
21
+ }>;
22
+ requestPersistence(): Promise<boolean>;
23
+ }
24
+ /**
25
+ * Get the global AppStorage instance.
26
+ * Throws if not initialized.
27
+ */
28
+ export declare function getAppStorage(): AppStorage;
29
+ /**
30
+ * Set the global AppStorage instance.
31
+ */
32
+ export declare function setAppStorage(storage: AppStorage): void;
33
+ //# sourceMappingURL=app-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-storage.d.ts","sourceRoot":"","sources":["../../../src/webui/storage/app-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;GAGG;AACH,qBAAa,UAAU;IACtB,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,oBAAoB,CAAC;gBAG9C,QAAQ,EAAE,aAAa,EACvB,YAAY,EAAE,iBAAiB,EAC/B,QAAQ,EAAE,aAAa,EACvB,eAAe,EAAE,oBAAoB,EACrC,OAAO,EAAE,cAAc;IASlB,YAAY,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAI1E,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;CAG5C;AAKD;;;GAGG;AACH,wBAAgB,aAAa,IAAI,UAAU,CAK1C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAEvD"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * High-level storage API providing access to all storage operations.
3
+ * Subclasses can extend this to add domain-specific stores.
4
+ */
5
+ export class AppStorage {
6
+ constructor(settings, providerKeys, sessions, customProviders, backend) {
7
+ this.settings = settings;
8
+ this.providerKeys = providerKeys;
9
+ this.sessions = sessions;
10
+ this.customProviders = customProviders;
11
+ this.backend = backend;
12
+ }
13
+ async getQuotaInfo() {
14
+ return this.backend.getQuotaInfo();
15
+ }
16
+ async requestPersistence() {
17
+ return this.backend.requestPersistence();
18
+ }
19
+ }
20
+ // Global instance management
21
+ let globalAppStorage = null;
22
+ /**
23
+ * Get the global AppStorage instance.
24
+ * Throws if not initialized.
25
+ */
26
+ export function getAppStorage() {
27
+ if (!globalAppStorage) {
28
+ throw new Error("AppStorage not initialized. Call setAppStorage() first.");
29
+ }
30
+ return globalAppStorage;
31
+ }
32
+ /**
33
+ * Set the global AppStorage instance.
34
+ */
35
+ export function setAppStorage(storage) {
36
+ globalAppStorage = storage;
37
+ }
@@ -0,0 +1,27 @@
1
+ import type { IndexedDBConfig, StorageBackend, StorageTransaction } from "../types.js";
2
+ /**
3
+ * IndexedDB implementation of StorageBackend.
4
+ * Provides multi-store key-value storage with transactions and quota management.
5
+ */
6
+ export declare class IndexedDBStorageBackend implements StorageBackend {
7
+ private config;
8
+ private dbPromise;
9
+ constructor(config: IndexedDBConfig);
10
+ private getDB;
11
+ private promisifyRequest;
12
+ get<T = unknown>(storeName: string, key: string): Promise<T | null>;
13
+ set<T = unknown>(storeName: string, key: string, value: T): Promise<void>;
14
+ delete(storeName: string, key: string): Promise<void>;
15
+ keys(storeName: string, prefix?: string): Promise<string[]>;
16
+ getAllFromIndex<T = unknown>(storeName: string, indexName: string, direction?: "asc" | "desc"): Promise<T[]>;
17
+ clear(storeName: string): Promise<void>;
18
+ has(storeName: string, key: string): Promise<boolean>;
19
+ transaction<T>(storeNames: string[], mode: "readonly" | "readwrite", operation: (tx: StorageTransaction) => Promise<T>): Promise<T>;
20
+ getQuotaInfo(): Promise<{
21
+ usage: number;
22
+ quota: number;
23
+ percent: number;
24
+ }>;
25
+ requestPersistence(): Promise<boolean>;
26
+ }
27
+ //# sourceMappingURL=indexeddb-storage-backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexeddb-storage-backend.d.ts","sourceRoot":"","sources":["../../../../src/webui/storage/backends/indexeddb-storage-backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEvF;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,cAAc;IAGjD,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,SAAS,CAAqC;gBAElC,MAAM,EAAE,eAAe;YAE7B,KAAK;IAoCnB,OAAO,CAAC,gBAAgB;IAOlB,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAQnE,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAazE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAgB3D,eAAe,CAAC,CAAC,GAAG,OAAO,EAChC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,GAAE,KAAK,GAAG,MAAc,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC;IAwBT,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvC,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQrD,WAAW,CAAC,CAAC,EAClB,UAAU,EAAE,MAAM,EAAE,EACpB,IAAI,EAAE,UAAU,GAAG,WAAW,EAC9B,SAAS,EAAE,CAAC,EAAE,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,GAC/C,OAAO,CAAC,CAAC,CAAC;IA6BP,YAAY,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAY1E,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;CAM5C"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * IndexedDB implementation of StorageBackend.
3
+ * Provides multi-store key-value storage with transactions and quota management.
4
+ */
5
+ export class IndexedDBStorageBackend {
6
+ constructor(config) {
7
+ this.config = config;
8
+ this.dbPromise = null;
9
+ }
10
+ async getDB() {
11
+ if (!this.dbPromise) {
12
+ this.dbPromise = new Promise((resolve, reject) => {
13
+ const request = indexedDB.open(this.config.dbName, this.config.version);
14
+ request.onerror = () => reject(request.error);
15
+ request.onsuccess = () => resolve(request.result);
16
+ request.onupgradeneeded = (_event) => {
17
+ const db = request.result;
18
+ // Create object stores from config
19
+ for (const storeConfig of this.config.stores) {
20
+ if (!db.objectStoreNames.contains(storeConfig.name)) {
21
+ const store = db.createObjectStore(storeConfig.name, {
22
+ keyPath: storeConfig.keyPath,
23
+ autoIncrement: storeConfig.autoIncrement,
24
+ });
25
+ // Create indices
26
+ if (storeConfig.indices) {
27
+ for (const indexConfig of storeConfig.indices) {
28
+ store.createIndex(indexConfig.name, indexConfig.keyPath, {
29
+ unique: indexConfig.unique,
30
+ });
31
+ }
32
+ }
33
+ }
34
+ }
35
+ };
36
+ });
37
+ }
38
+ return this.dbPromise;
39
+ }
40
+ promisifyRequest(request) {
41
+ return new Promise((resolve, reject) => {
42
+ request.onsuccess = () => resolve(request.result);
43
+ request.onerror = () => reject(request.error);
44
+ });
45
+ }
46
+ async get(storeName, key) {
47
+ const db = await this.getDB();
48
+ const tx = db.transaction(storeName, "readonly");
49
+ const store = tx.objectStore(storeName);
50
+ const result = await this.promisifyRequest(store.get(key));
51
+ return result ?? null;
52
+ }
53
+ async set(storeName, key, value) {
54
+ const db = await this.getDB();
55
+ const tx = db.transaction(storeName, "readwrite");
56
+ const store = tx.objectStore(storeName);
57
+ // If store has keyPath, only pass value (in-line key)
58
+ // Otherwise pass both value and key (out-of-line key)
59
+ if (store.keyPath) {
60
+ await this.promisifyRequest(store.put(value));
61
+ }
62
+ else {
63
+ await this.promisifyRequest(store.put(value, key));
64
+ }
65
+ }
66
+ async delete(storeName, key) {
67
+ const db = await this.getDB();
68
+ const tx = db.transaction(storeName, "readwrite");
69
+ const store = tx.objectStore(storeName);
70
+ await this.promisifyRequest(store.delete(key));
71
+ }
72
+ async keys(storeName, prefix) {
73
+ const db = await this.getDB();
74
+ const tx = db.transaction(storeName, "readonly");
75
+ const store = tx.objectStore(storeName);
76
+ if (prefix) {
77
+ // Use IDBKeyRange for efficient prefix filtering
78
+ const range = IDBKeyRange.bound(prefix, `${prefix}\uffff`, false, false);
79
+ const keys = await this.promisifyRequest(store.getAllKeys(range));
80
+ return keys.map((k) => String(k));
81
+ }
82
+ else {
83
+ const keys = await this.promisifyRequest(store.getAllKeys());
84
+ return keys.map((k) => String(k));
85
+ }
86
+ }
87
+ async getAllFromIndex(storeName, indexName, direction = "asc") {
88
+ const db = await this.getDB();
89
+ const tx = db.transaction(storeName, "readonly");
90
+ const store = tx.objectStore(storeName);
91
+ const index = store.index(indexName);
92
+ return new Promise((resolve, reject) => {
93
+ const results = [];
94
+ const request = index.openCursor(null, direction === "desc" ? "prev" : "next");
95
+ request.onsuccess = () => {
96
+ const cursor = request.result;
97
+ if (cursor) {
98
+ results.push(cursor.value);
99
+ cursor.continue();
100
+ }
101
+ else {
102
+ resolve(results);
103
+ }
104
+ };
105
+ request.onerror = () => reject(request.error);
106
+ });
107
+ }
108
+ async clear(storeName) {
109
+ const db = await this.getDB();
110
+ const tx = db.transaction(storeName, "readwrite");
111
+ const store = tx.objectStore(storeName);
112
+ await this.promisifyRequest(store.clear());
113
+ }
114
+ async has(storeName, key) {
115
+ const db = await this.getDB();
116
+ const tx = db.transaction(storeName, "readonly");
117
+ const store = tx.objectStore(storeName);
118
+ const result = await this.promisifyRequest(store.getKey(key));
119
+ return result !== undefined;
120
+ }
121
+ async transaction(storeNames, mode, operation) {
122
+ const db = await this.getDB();
123
+ const idbTx = db.transaction(storeNames, mode);
124
+ const storageTx = {
125
+ get: async (storeName, key) => {
126
+ const store = idbTx.objectStore(storeName);
127
+ const result = await this.promisifyRequest(store.get(key));
128
+ return (result ?? null);
129
+ },
130
+ set: async (storeName, key, value) => {
131
+ const store = idbTx.objectStore(storeName);
132
+ // If store has keyPath, only pass value (in-line key)
133
+ // Otherwise pass both value and key (out-of-line key)
134
+ if (store.keyPath) {
135
+ await this.promisifyRequest(store.put(value));
136
+ }
137
+ else {
138
+ await this.promisifyRequest(store.put(value, key));
139
+ }
140
+ },
141
+ delete: async (storeName, key) => {
142
+ const store = idbTx.objectStore(storeName);
143
+ await this.promisifyRequest(store.delete(key));
144
+ },
145
+ };
146
+ return operation(storageTx);
147
+ }
148
+ async getQuotaInfo() {
149
+ if (navigator.storage?.estimate) {
150
+ const estimate = await navigator.storage.estimate();
151
+ return {
152
+ usage: estimate.usage || 0,
153
+ quota: estimate.quota || 0,
154
+ percent: estimate.quota ? ((estimate.usage || 0) / estimate.quota) * 100 : 0,
155
+ };
156
+ }
157
+ return { usage: 0, quota: 0, percent: 0 };
158
+ }
159
+ async requestPersistence() {
160
+ if (navigator.storage?.persist) {
161
+ return await navigator.storage.persist();
162
+ }
163
+ return false;
164
+ }
165
+ }
@@ -0,0 +1,23 @@
1
+ import type { StorageBackend, StoreConfig } from "./types.js";
2
+ /**
3
+ * Base class for all storage stores.
4
+ * Each store defines its IndexedDB schema and provides domain-specific methods.
5
+ */
6
+ export declare abstract class Store {
7
+ private backend;
8
+ /**
9
+ * Returns the IndexedDB configuration for this store.
10
+ * Defines store name, key path, and indices.
11
+ */
12
+ abstract getConfig(): StoreConfig;
13
+ /**
14
+ * Sets the storage backend. Called by AppStorage after backend creation.
15
+ */
16
+ setBackend(backend: StorageBackend): void;
17
+ /**
18
+ * Gets the storage backend. Throws if backend not set.
19
+ * Concrete stores must use this to access the backend.
20
+ */
21
+ protected getBackend(): StorageBackend;
22
+ }
23
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/webui/storage/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D;;;GAGG;AACH,8BAAsB,KAAK;IAC1B,OAAO,CAAC,OAAO,CAA+B;IAE9C;;;OAGG;IACH,QAAQ,CAAC,SAAS,IAAI,WAAW;IAEjC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAIzC;;;OAGG;IACH,SAAS,CAAC,UAAU,IAAI,cAAc;CAMtC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Base class for all storage stores.
3
+ * Each store defines its IndexedDB schema and provides domain-specific methods.
4
+ */
5
+ export class Store {
6
+ constructor() {
7
+ this.backend = null;
8
+ }
9
+ /**
10
+ * Sets the storage backend. Called by AppStorage after backend creation.
11
+ */
12
+ setBackend(backend) {
13
+ this.backend = backend;
14
+ }
15
+ /**
16
+ * Gets the storage backend. Throws if backend not set.
17
+ * Concrete stores must use this to access the backend.
18
+ */
19
+ getBackend() {
20
+ if (!this.backend) {
21
+ throw new Error(`Backend not set on ${this.constructor.name}`);
22
+ }
23
+ return this.backend;
24
+ }
25
+ }
@@ -0,0 +1,25 @@
1
+ import type { Model } from "../../../ai/index.js";
2
+ import { Store } from "../store.js";
3
+ import type { StoreConfig } from "../types.js";
4
+ export type AutoDiscoveryProviderType = "ollama" | "llama.cpp" | "vllm" | "lmstudio";
5
+ export type CustomProviderType = AutoDiscoveryProviderType | "openai-completions" | "openai-responses" | "anthropic-messages";
6
+ export interface CustomProvider {
7
+ id: string;
8
+ name: string;
9
+ type: CustomProviderType;
10
+ baseUrl: string;
11
+ apiKey?: string;
12
+ models?: Model<any>[];
13
+ }
14
+ /**
15
+ * Store for custom LLM providers (auto-discovery servers + manual providers).
16
+ */
17
+ export declare class CustomProvidersStore extends Store {
18
+ getConfig(): StoreConfig;
19
+ get(id: string): Promise<CustomProvider | null>;
20
+ set(provider: CustomProvider): Promise<void>;
21
+ delete(id: string): Promise<void>;
22
+ getAll(): Promise<CustomProvider[]>;
23
+ has(id: string): Promise<boolean>;
24
+ }
25
+ //# sourceMappingURL=custom-providers-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-providers-store.d.ts","sourceRoot":"","sources":["../../../../src/webui/storage/stores/custom-providers-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,MAAM,yBAAyB,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,CAAC;AAErF,MAAM,MAAM,kBAAkB,GAC3B,yBAAyB,GACzB,oBAAoB,GACpB,kBAAkB,GAClB,oBAAoB,CAAC;AAExB,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAIhB,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC9C,SAAS,IAAI,WAAW;IAMlB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAI/C,GAAG,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjC,MAAM,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAYnC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAGvC"}
@@ -0,0 +1,34 @@
1
+ import { Store } from "../store.js";
2
+ /**
3
+ * Store for custom LLM providers (auto-discovery servers + manual providers).
4
+ */
5
+ export class CustomProvidersStore extends Store {
6
+ getConfig() {
7
+ return {
8
+ name: "custom-providers",
9
+ };
10
+ }
11
+ async get(id) {
12
+ return this.getBackend().get("custom-providers", id);
13
+ }
14
+ async set(provider) {
15
+ await this.getBackend().set("custom-providers", provider.id, provider);
16
+ }
17
+ async delete(id) {
18
+ await this.getBackend().delete("custom-providers", id);
19
+ }
20
+ async getAll() {
21
+ const keys = await this.getBackend().keys("custom-providers");
22
+ const providers = [];
23
+ for (const key of keys) {
24
+ const provider = await this.get(key);
25
+ if (provider) {
26
+ providers.push(provider);
27
+ }
28
+ }
29
+ return providers;
30
+ }
31
+ async has(id) {
32
+ return this.getBackend().has("custom-providers", id);
33
+ }
34
+ }
@@ -0,0 +1,14 @@
1
+ import { Store } from "../store.js";
2
+ import type { StoreConfig } from "../types.js";
3
+ /**
4
+ * Store for LLM provider API keys (Anthropic, OpenAI, etc.).
5
+ */
6
+ export declare class ProviderKeysStore extends Store {
7
+ getConfig(): StoreConfig;
8
+ get(provider: string): Promise<string | null>;
9
+ set(provider: string, key: string): Promise<void>;
10
+ delete(provider: string): Promise<void>;
11
+ list(): Promise<string[]>;
12
+ has(provider: string): Promise<boolean>;
13
+ }
14
+ //# sourceMappingURL=provider-keys-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-keys-store.d.ts","sourceRoot":"","sources":["../../../../src/webui/storage/stores/provider-keys-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC3C,SAAS,IAAI,WAAW;IAMlB,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI7C,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIzB,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAG7C"}
@@ -0,0 +1,26 @@
1
+ import { Store } from "../store.js";
2
+ /**
3
+ * Store for LLM provider API keys (Anthropic, OpenAI, etc.).
4
+ */
5
+ export class ProviderKeysStore extends Store {
6
+ getConfig() {
7
+ return {
8
+ name: "provider-keys",
9
+ };
10
+ }
11
+ async get(provider) {
12
+ return this.getBackend().get("provider-keys", provider);
13
+ }
14
+ async set(provider, key) {
15
+ await this.getBackend().set("provider-keys", provider, key);
16
+ }
17
+ async delete(provider) {
18
+ await this.getBackend().delete("provider-keys", provider);
19
+ }
20
+ async list() {
21
+ return this.getBackend().keys("provider-keys");
22
+ }
23
+ async has(provider) {
24
+ return this.getBackend().has("provider-keys", provider);
25
+ }
26
+ }
@@ -0,0 +1,32 @@
1
+ import type { AgentState } from "../../../agent/index.js";
2
+ import { Store } from "../store.js";
3
+ import type { SessionData, SessionMetadata, StoreConfig } from "../types.js";
4
+ /**
5
+ * Store for chat sessions (data and metadata).
6
+ * Uses two object stores: sessions (full data) and sessions-metadata (lightweight).
7
+ */
8
+ export declare class SessionsStore extends Store {
9
+ getConfig(): StoreConfig;
10
+ /**
11
+ * Additional config for sessions-metadata store.
12
+ * Must be included when creating the backend.
13
+ */
14
+ static getMetadataConfig(): StoreConfig;
15
+ save(data: SessionData, metadata: SessionMetadata): Promise<void>;
16
+ get(id: string): Promise<SessionData | null>;
17
+ getMetadata(id: string): Promise<SessionMetadata | null>;
18
+ getAllMetadata(): Promise<SessionMetadata[]>;
19
+ delete(id: string): Promise<void>;
20
+ deleteSession(id: string): Promise<void>;
21
+ updateTitle(id: string, title: string): Promise<void>;
22
+ getQuotaInfo(): Promise<{
23
+ usage: number;
24
+ quota: number;
25
+ percent: number;
26
+ }>;
27
+ requestPersistence(): Promise<boolean>;
28
+ saveSession(id: string, state: AgentState, metadata: SessionMetadata | undefined, title?: string): Promise<void>;
29
+ loadSession(id: string): Promise<SessionData | null>;
30
+ getLatestSessionId(): Promise<string | null>;
31
+ }
32
+ //# sourceMappingURL=sessions-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions-store.d.ts","sourceRoot":"","sources":["../../../../src/webui/storage/stores/sessions-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE7E;;;GAGG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACvC,SAAS,IAAI,WAAW;IAQxB;;;OAGG;IACH,MAAM,CAAC,iBAAiB,IAAI,WAAW;IAQjC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAI5C,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAIxD,cAAc,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAK5C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjC,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAerD,YAAY,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAI1E,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAKtC,WAAW,CAChB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,eAAe,GAAG,SAAS,EACrC,KAAK,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;IAiCV,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAIpD,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAQlD"}
@@ -0,0 +1,112 @@
1
+ import { Store } from "../store.js";
2
+ /**
3
+ * Store for chat sessions (data and metadata).
4
+ * Uses two object stores: sessions (full data) and sessions-metadata (lightweight).
5
+ */
6
+ export class SessionsStore extends Store {
7
+ getConfig() {
8
+ return {
9
+ name: "sessions",
10
+ keyPath: "id",
11
+ indices: [{ name: "lastModified", keyPath: "lastModified" }],
12
+ };
13
+ }
14
+ /**
15
+ * Additional config for sessions-metadata store.
16
+ * Must be included when creating the backend.
17
+ */
18
+ static getMetadataConfig() {
19
+ return {
20
+ name: "sessions-metadata",
21
+ keyPath: "id",
22
+ indices: [{ name: "lastModified", keyPath: "lastModified" }],
23
+ };
24
+ }
25
+ async save(data, metadata) {
26
+ await this.getBackend().transaction(["sessions", "sessions-metadata"], "readwrite", async (tx) => {
27
+ await tx.set("sessions", data.id, data);
28
+ await tx.set("sessions-metadata", metadata.id, metadata);
29
+ });
30
+ }
31
+ async get(id) {
32
+ return this.getBackend().get("sessions", id);
33
+ }
34
+ async getMetadata(id) {
35
+ return this.getBackend().get("sessions-metadata", id);
36
+ }
37
+ async getAllMetadata() {
38
+ // Use the lastModified index to get sessions sorted by most recent first
39
+ return this.getBackend().getAllFromIndex("sessions-metadata", "lastModified", "desc");
40
+ }
41
+ async delete(id) {
42
+ await this.getBackend().transaction(["sessions", "sessions-metadata"], "readwrite", async (tx) => {
43
+ await tx.delete("sessions", id);
44
+ await tx.delete("sessions-metadata", id);
45
+ });
46
+ }
47
+ // Alias for backward compatibility
48
+ async deleteSession(id) {
49
+ return this.delete(id);
50
+ }
51
+ async updateTitle(id, title) {
52
+ const metadata = await this.getMetadata(id);
53
+ if (metadata) {
54
+ metadata.title = title;
55
+ await this.getBackend().set("sessions-metadata", id, metadata);
56
+ }
57
+ // Also update in full session data
58
+ const data = await this.get(id);
59
+ if (data) {
60
+ data.title = title;
61
+ await this.getBackend().set("sessions", id, data);
62
+ }
63
+ }
64
+ async getQuotaInfo() {
65
+ return this.getBackend().getQuotaInfo();
66
+ }
67
+ async requestPersistence() {
68
+ return this.getBackend().requestPersistence();
69
+ }
70
+ // Alias methods for backward compatibility
71
+ async saveSession(id, state, metadata, title) {
72
+ // If metadata is provided, use it; otherwise create it from state
73
+ const meta = metadata || {
74
+ id,
75
+ title: title || "",
76
+ createdAt: new Date().toISOString(),
77
+ lastModified: new Date().toISOString(),
78
+ messageCount: state.messages?.length || 0,
79
+ usage: {
80
+ input: 0,
81
+ output: 0,
82
+ cacheRead: 0,
83
+ cacheWrite: 0,
84
+ totalTokens: 0,
85
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
86
+ },
87
+ thinkingLevel: state.thinkingLevel || "off",
88
+ preview: "",
89
+ };
90
+ const data = {
91
+ id,
92
+ title: title || meta.title,
93
+ model: state.model,
94
+ thinkingLevel: state.thinkingLevel,
95
+ messages: state.messages || [],
96
+ createdAt: meta.createdAt,
97
+ lastModified: new Date().toISOString(),
98
+ };
99
+ await this.save(data, meta);
100
+ }
101
+ async loadSession(id) {
102
+ return this.get(id);
103
+ }
104
+ async getLatestSessionId() {
105
+ const allMetadata = await this.getAllMetadata();
106
+ if (allMetadata.length === 0)
107
+ return null;
108
+ // Sort by lastModified descending
109
+ allMetadata.sort((a, b) => b.lastModified.localeCompare(a.lastModified));
110
+ return allMetadata[0].id;
111
+ }
112
+ }
@@ -0,0 +1,14 @@
1
+ import { Store } from "../store.js";
2
+ import type { StoreConfig } from "../types.js";
3
+ /**
4
+ * Store for application settings (theme, proxy config, etc.).
5
+ */
6
+ export declare class SettingsStore extends Store {
7
+ getConfig(): StoreConfig;
8
+ get<T>(key: string): Promise<T | null>;
9
+ set<T>(key: string, value: T): Promise<void>;
10
+ delete(key: string): Promise<void>;
11
+ list(): Promise<string[]>;
12
+ clear(): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=settings-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-store.d.ts","sourceRoot":"","sources":["../../../../src/webui/storage/stores/settings-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACvC,SAAS,IAAI,WAAW;IAOlB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAItC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}
@@ -0,0 +1,27 @@
1
+ import { Store } from "../store.js";
2
+ /**
3
+ * Store for application settings (theme, proxy config, etc.).
4
+ */
5
+ export class SettingsStore extends Store {
6
+ getConfig() {
7
+ return {
8
+ name: "settings",
9
+ // No keyPath - uses out-of-line keys
10
+ };
11
+ }
12
+ async get(key) {
13
+ return this.getBackend().get("settings", key);
14
+ }
15
+ async set(key, value) {
16
+ await this.getBackend().set("settings", key, value);
17
+ }
18
+ async delete(key) {
19
+ await this.getBackend().delete("settings", key);
20
+ }
21
+ async list() {
22
+ return this.getBackend().keys("settings");
23
+ }
24
+ async clear() {
25
+ await this.getBackend().clear("settings");
26
+ }
27
+ }