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,57 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { icon } from "@mariozechner/mini-lit";
8
+ import { html, LitElement } from "lit";
9
+ import { customElement, property, state } from "lit/decorators.js";
10
+ import { ChevronRight } from "lucide";
11
+ let ThinkingBlock = class ThinkingBlock extends LitElement {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.isStreaming = false;
15
+ this.isExpanded = false;
16
+ }
17
+ createRenderRoot() {
18
+ return this;
19
+ }
20
+ connectedCallback() {
21
+ super.connectedCallback();
22
+ this.style.display = "block";
23
+ }
24
+ toggleExpanded() {
25
+ this.isExpanded = !this.isExpanded;
26
+ }
27
+ render() {
28
+ const shimmerClasses = this.isStreaming
29
+ ? "animate-shimmer bg-gradient-to-r from-muted-foreground via-foreground to-muted-foreground bg-[length:200%_100%] bg-clip-text text-transparent"
30
+ : "";
31
+ return html `
32
+ <div class="thinking-block">
33
+ <div
34
+ class="thinking-header cursor-pointer select-none flex items-center gap-2 py-1 text-sm text-muted-foreground hover:text-foreground transition-colors"
35
+ @click=${this.toggleExpanded}
36
+ >
37
+ <span class="transition-transform inline-block ${this.isExpanded ? "rotate-90" : ""}">${icon(ChevronRight, "sm")}</span>
38
+ <span class="${shimmerClasses}">Thinking...</span>
39
+ </div>
40
+ ${this.isExpanded ? html `<markdown-block .content=${this.content} .isThinking=${true}></markdown-block>` : ""}
41
+ </div>
42
+ `;
43
+ }
44
+ };
45
+ __decorate([
46
+ property()
47
+ ], ThinkingBlock.prototype, "content", void 0);
48
+ __decorate([
49
+ property({ type: Boolean })
50
+ ], ThinkingBlock.prototype, "isStreaming", void 0);
51
+ __decorate([
52
+ state()
53
+ ], ThinkingBlock.prototype, "isExpanded", void 0);
54
+ ThinkingBlock = __decorate([
55
+ customElement("thinking-block")
56
+ ], ThinkingBlock);
57
+ export { ThinkingBlock };
@@ -0,0 +1,12 @@
1
+ import type { AgentMessage } from "../../agent/index.js";
2
+ import type { TemplateResult } from "lit";
3
+ export type MessageRole = AgentMessage["role"];
4
+ export interface MessageRenderer<TMessage extends AgentMessage = AgentMessage> {
5
+ render(message: TMessage): TemplateResult;
6
+ }
7
+ export declare function registerMessageRenderer<TRole extends MessageRole>(role: TRole, renderer: MessageRenderer<Extract<AgentMessage, {
8
+ role: TRole;
9
+ }>>): void;
10
+ export declare function getMessageRenderer(role: MessageRole): MessageRenderer | undefined;
11
+ export declare function renderMessage(message: AgentMessage): TemplateResult | undefined;
12
+ //# sourceMappingURL=message-renderer-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-renderer-registry.d.ts","sourceRoot":"","sources":["../../../src/webui/components/message-renderer-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAG1C,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AAG/C,MAAM,WAAW,eAAe,CAAC,QAAQ,SAAS,YAAY,GAAG,YAAY;IAC5E,MAAM,CAAC,OAAO,EAAE,QAAQ,GAAG,cAAc,CAAC;CAC1C;AAKD,wBAAgB,uBAAuB,CAAC,KAAK,SAAS,WAAW,EAChE,IAAI,EAAE,KAAK,EACX,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,YAAY,EAAE;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC,GAC/D,IAAI,CAEN;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,eAAe,GAAG,SAAS,CAEjF;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,cAAc,GAAG,SAAS,CAE/E"}
@@ -0,0 +1,11 @@
1
+ // Registry of custom message renderers by role
2
+ const messageRenderers = new Map();
3
+ export function registerMessageRenderer(role, renderer) {
4
+ messageRenderers.set(role, renderer);
5
+ }
6
+ export function getMessageRenderer(role) {
7
+ return messageRenderers.get(role);
8
+ }
9
+ export function renderMessage(message) {
10
+ return messageRenderers.get(message.role)?.render(message);
11
+ }
@@ -0,0 +1,35 @@
1
+ import type { SandboxRuntimeProvider } from "./SandboxRuntimeProvider.js";
2
+ interface ArtifactsPanelLike {
3
+ artifacts: Map<string, {
4
+ content: string;
5
+ }>;
6
+ tool: {
7
+ execute(toolCallId: string, args: {
8
+ command: string;
9
+ filename: string;
10
+ content?: string;
11
+ }): Promise<any>;
12
+ };
13
+ }
14
+ interface AgentLike {
15
+ appendMessage(message: any): void;
16
+ }
17
+ /**
18
+ * Artifacts Runtime Provider
19
+ *
20
+ * Provides programmatic access to session artifacts from sandboxed code.
21
+ * Allows code to create, read, update, and delete artifacts dynamically.
22
+ * Supports both online (extension) and offline (downloaded HTML) modes.
23
+ */
24
+ export declare class ArtifactsRuntimeProvider implements SandboxRuntimeProvider {
25
+ private artifactsPanel;
26
+ private agent?;
27
+ private readWrite;
28
+ constructor(artifactsPanel: ArtifactsPanelLike, agent?: AgentLike | undefined, readWrite?: boolean);
29
+ getData(): Record<string, any>;
30
+ getRuntime(): (sandboxId: string) => void;
31
+ handleMessage(message: any, respond: (response: any) => void): Promise<void>;
32
+ getDescription(): string;
33
+ }
34
+ export {};
35
+ //# sourceMappingURL=ArtifactsRuntimeProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArtifactsRuntimeProvider.d.ts","sourceRoot":"","sources":["../../../../src/webui/components/sandbox/ArtifactsRuntimeProvider.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAG1E,UAAU,kBAAkB;IAC3B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5C,IAAI,EAAE;QACL,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;KACzG,CAAC;CACF;AAED,UAAU,SAAS;IAClB,aAAa,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;CAClC;AAED;;;;;;GAMG;AACH,qBAAa,wBAAyB,YAAW,sBAAsB;IAErE,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,KAAK,CAAC;IACd,OAAO,CAAC,SAAS;gBAFT,cAAc,EAAE,kBAAkB,EAClC,KAAK,CAAC,EAAE,SAAS,YAAA,EACjB,SAAS,GAAE,OAAc;IAGlC,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAS9B,UAAU,IAAI,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI;IAgGnC,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA8ElF,cAAc,IAAI,MAAM;CAGxB"}
@@ -0,0 +1,188 @@
1
+ import { ARTIFACTS_RUNTIME_PROVIDER_DESCRIPTION_RO, ARTIFACTS_RUNTIME_PROVIDER_DESCRIPTION_RW, } from "../../prompts/prompts.js";
2
+ /**
3
+ * Artifacts Runtime Provider
4
+ *
5
+ * Provides programmatic access to session artifacts from sandboxed code.
6
+ * Allows code to create, read, update, and delete artifacts dynamically.
7
+ * Supports both online (extension) and offline (downloaded HTML) modes.
8
+ */
9
+ export class ArtifactsRuntimeProvider {
10
+ constructor(artifactsPanel, agent, readWrite = true) {
11
+ this.artifactsPanel = artifactsPanel;
12
+ this.agent = agent;
13
+ this.readWrite = readWrite;
14
+ }
15
+ getData() {
16
+ // Inject artifact snapshot for offline mode
17
+ const snapshot = {};
18
+ this.artifactsPanel.artifacts.forEach((artifact, filename) => {
19
+ snapshot[filename] = artifact.content;
20
+ });
21
+ return { artifacts: snapshot };
22
+ }
23
+ getRuntime() {
24
+ // This function will be stringified, so no external references!
25
+ return (_sandboxId) => {
26
+ // Auto-parse/stringify for .json files
27
+ const isJsonFile = (filename) => filename.endsWith(".json");
28
+ window.listArtifacts = async () => {
29
+ // Online: ask extension
30
+ if (window.sendRuntimeMessage) {
31
+ const response = await window.sendRuntimeMessage({
32
+ type: "artifact-operation",
33
+ action: "list",
34
+ });
35
+ if (!response.success)
36
+ throw new Error(response.error);
37
+ return response.result;
38
+ }
39
+ // Offline: return snapshot keys
40
+ else {
41
+ return Object.keys(window.artifacts || {});
42
+ }
43
+ };
44
+ window.getArtifact = async (filename) => {
45
+ let content;
46
+ // Online: ask extension
47
+ if (window.sendRuntimeMessage) {
48
+ const response = await window.sendRuntimeMessage({
49
+ type: "artifact-operation",
50
+ action: "get",
51
+ filename,
52
+ });
53
+ if (!response.success)
54
+ throw new Error(response.error);
55
+ content = response.result;
56
+ }
57
+ // Offline: read snapshot
58
+ else {
59
+ if (!window.artifacts?.[filename]) {
60
+ throw new Error(`Artifact not found (offline mode): ${filename}`);
61
+ }
62
+ content = window.artifacts[filename];
63
+ }
64
+ // Auto-parse .json files
65
+ if (isJsonFile(filename)) {
66
+ try {
67
+ return JSON.parse(content);
68
+ }
69
+ catch (e) {
70
+ throw new Error(`Failed to parse JSON from ${filename}: ${e}`);
71
+ }
72
+ }
73
+ return content;
74
+ };
75
+ window.createOrUpdateArtifact = async (filename, content, mimeType) => {
76
+ if (!window.sendRuntimeMessage) {
77
+ throw new Error("Cannot create/update artifacts in offline mode (read-only)");
78
+ }
79
+ let finalContent = content;
80
+ // Auto-stringify .json files
81
+ if (isJsonFile(filename) && typeof content !== "string") {
82
+ finalContent = JSON.stringify(content, null, 2);
83
+ }
84
+ else if (typeof content !== "string") {
85
+ finalContent = JSON.stringify(content, null, 2);
86
+ }
87
+ const response = await window.sendRuntimeMessage({
88
+ type: "artifact-operation",
89
+ action: "createOrUpdate",
90
+ filename,
91
+ content: finalContent,
92
+ mimeType,
93
+ });
94
+ if (!response.success)
95
+ throw new Error(response.error);
96
+ };
97
+ window.deleteArtifact = async (filename) => {
98
+ if (!window.sendRuntimeMessage) {
99
+ throw new Error("Cannot delete artifacts in offline mode (read-only)");
100
+ }
101
+ const response = await window.sendRuntimeMessage({
102
+ type: "artifact-operation",
103
+ action: "delete",
104
+ filename,
105
+ });
106
+ if (!response.success)
107
+ throw new Error(response.error);
108
+ };
109
+ };
110
+ }
111
+ async handleMessage(message, respond) {
112
+ if (message.type !== "artifact-operation") {
113
+ return;
114
+ }
115
+ const { action, filename, content } = message;
116
+ try {
117
+ switch (action) {
118
+ case "list": {
119
+ const filenames = Array.from(this.artifactsPanel.artifacts.keys());
120
+ respond({ success: true, result: filenames });
121
+ break;
122
+ }
123
+ case "get": {
124
+ const artifact = this.artifactsPanel.artifacts.get(filename);
125
+ if (!artifact) {
126
+ respond({ success: false, error: `Artifact not found: ${filename}` });
127
+ }
128
+ else {
129
+ respond({ success: true, result: artifact.content });
130
+ }
131
+ break;
132
+ }
133
+ case "createOrUpdate": {
134
+ try {
135
+ const exists = this.artifactsPanel.artifacts.has(filename);
136
+ const command = exists ? "rewrite" : "create";
137
+ const action = exists ? "update" : "create";
138
+ await this.artifactsPanel.tool.execute("", {
139
+ command,
140
+ filename,
141
+ content,
142
+ });
143
+ this.agent?.appendMessage({
144
+ role: "artifact",
145
+ action,
146
+ filename,
147
+ content,
148
+ ...(action === "create" && { title: filename }),
149
+ timestamp: new Date().toISOString(),
150
+ });
151
+ respond({ success: true });
152
+ }
153
+ catch (err) {
154
+ respond({ success: false, error: err.message });
155
+ }
156
+ break;
157
+ }
158
+ case "delete": {
159
+ try {
160
+ await this.artifactsPanel.tool.execute("", {
161
+ command: "delete",
162
+ filename,
163
+ });
164
+ this.agent?.appendMessage({
165
+ role: "artifact",
166
+ action: "delete",
167
+ filename,
168
+ timestamp: new Date().toISOString(),
169
+ });
170
+ respond({ success: true });
171
+ }
172
+ catch (err) {
173
+ respond({ success: false, error: err.message });
174
+ }
175
+ break;
176
+ }
177
+ default:
178
+ respond({ success: false, error: `Unknown artifact action: ${action}` });
179
+ }
180
+ }
181
+ catch (error) {
182
+ respond({ success: false, error: error.message });
183
+ }
184
+ }
185
+ getDescription() {
186
+ return this.readWrite ? ARTIFACTS_RUNTIME_PROVIDER_DESCRIPTION_RW : ARTIFACTS_RUNTIME_PROVIDER_DESCRIPTION_RO;
187
+ }
188
+ }
@@ -0,0 +1,17 @@
1
+ import type { Attachment } from "../../utils/attachment-utils.js";
2
+ import type { SandboxRuntimeProvider } from "./SandboxRuntimeProvider.js";
3
+ /**
4
+ * Attachments Runtime Provider
5
+ *
6
+ * OPTIONAL provider that provides file access APIs to sandboxed code.
7
+ * Only needed when attachments are present.
8
+ * Attachments are read-only snapshot data - no messaging needed.
9
+ */
10
+ export declare class AttachmentsRuntimeProvider implements SandboxRuntimeProvider {
11
+ private attachments;
12
+ constructor(attachments: Attachment[]);
13
+ getData(): Record<string, any>;
14
+ getRuntime(): (sandboxId: string) => void;
15
+ getDescription(): string;
16
+ }
17
+ //# sourceMappingURL=AttachmentsRuntimeProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttachmentsRuntimeProvider.d.ts","sourceRoot":"","sources":["../../../../src/webui/components/sandbox/AttachmentsRuntimeProvider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAE1E;;;;;;GAMG;AACH,qBAAa,0BAA2B,YAAW,sBAAsB;IAC5D,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,UAAU,EAAE;IAE7C,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAa9B,UAAU,IAAI,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI;IAmCzC,cAAc,IAAI,MAAM;CAGxB"}
@@ -0,0 +1,63 @@
1
+ import { ATTACHMENTS_RUNTIME_DESCRIPTION } from "../../prompts/prompts.js";
2
+ /**
3
+ * Attachments Runtime Provider
4
+ *
5
+ * OPTIONAL provider that provides file access APIs to sandboxed code.
6
+ * Only needed when attachments are present.
7
+ * Attachments are read-only snapshot data - no messaging needed.
8
+ */
9
+ export class AttachmentsRuntimeProvider {
10
+ constructor(attachments) {
11
+ this.attachments = attachments;
12
+ }
13
+ getData() {
14
+ const attachmentsData = this.attachments.map((a) => ({
15
+ id: a.id,
16
+ fileName: a.fileName,
17
+ mimeType: a.mimeType,
18
+ size: a.size,
19
+ content: a.content,
20
+ extractedText: a.extractedText,
21
+ }));
22
+ return { attachments: attachmentsData };
23
+ }
24
+ getRuntime() {
25
+ // This function will be stringified, so no external references!
26
+ // These functions read directly from window.attachments
27
+ // Works both online AND offline (no messaging needed!)
28
+ return (_sandboxId) => {
29
+ window.listAttachments = () => (window.attachments || []).map((a) => ({
30
+ id: a.id,
31
+ fileName: a.fileName,
32
+ mimeType: a.mimeType,
33
+ size: a.size,
34
+ }));
35
+ window.readTextAttachment = (attachmentId) => {
36
+ const a = (window.attachments || []).find((x) => x.id === attachmentId);
37
+ if (!a)
38
+ throw new Error(`Attachment not found: ${attachmentId}`);
39
+ if (a.extractedText)
40
+ return a.extractedText;
41
+ try {
42
+ return atob(a.content);
43
+ }
44
+ catch {
45
+ throw new Error(`Failed to decode text content for: ${attachmentId}`);
46
+ }
47
+ };
48
+ window.readBinaryAttachment = (attachmentId) => {
49
+ const a = (window.attachments || []).find((x) => x.id === attachmentId);
50
+ if (!a)
51
+ throw new Error(`Attachment not found: ${attachmentId}`);
52
+ const bin = atob(a.content);
53
+ const bytes = new Uint8Array(bin.length);
54
+ for (let i = 0; i < bin.length; i++)
55
+ bytes[i] = bin.charCodeAt(i);
56
+ return bytes;
57
+ };
58
+ };
59
+ }
60
+ getDescription() {
61
+ return ATTACHMENTS_RUNTIME_DESCRIPTION;
62
+ }
63
+ }
@@ -0,0 +1,42 @@
1
+ import type { SandboxRuntimeProvider } from "./SandboxRuntimeProvider.js";
2
+ export interface ConsoleLog {
3
+ type: "log" | "warn" | "error" | "info";
4
+ text: string;
5
+ args?: unknown[];
6
+ }
7
+ /**
8
+ * Console Runtime Provider
9
+ *
10
+ * REQUIRED provider that should always be included first.
11
+ * Provides console capture, error handling, and execution lifecycle management.
12
+ * Collects console output for retrieval by caller.
13
+ */
14
+ export declare class ConsoleRuntimeProvider implements SandboxRuntimeProvider {
15
+ private logs;
16
+ private completionError;
17
+ private completed;
18
+ getData(): Record<string, any>;
19
+ getDescription(): string;
20
+ getRuntime(): (sandboxId: string) => void;
21
+ handleMessage(message: any, respond: (response: any) => void): Promise<void>;
22
+ /**
23
+ * Get collected console logs
24
+ */
25
+ getLogs(): ConsoleLog[];
26
+ /**
27
+ * Get completion status
28
+ */
29
+ isCompleted(): boolean;
30
+ /**
31
+ * Get completion error if any
32
+ */
33
+ getCompletionError(): {
34
+ message: string;
35
+ stack: string;
36
+ } | null;
37
+ /**
38
+ * Reset state for reuse
39
+ */
40
+ reset(): void;
41
+ }
42
+ //# sourceMappingURL=ConsoleRuntimeProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConsoleRuntimeProvider.d.ts","sourceRoot":"","sources":["../../../../src/webui/components/sandbox/ConsoleRuntimeProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAE1E,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;CACjB;AAED;;;;;;GAMG;AACH,qBAAa,sBAAuB,YAAW,sBAAsB;IACpE,OAAO,CAAC,IAAI,CAAoB;IAChC,OAAO,CAAC,eAAe,CAAmD;IAC1E,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAK9B,cAAc,IAAI,MAAM;IAIxB,UAAU,IAAI,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI;IA2GnC,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBlF;;OAEG;IACH,OAAO,IAAI,UAAU,EAAE;IAIvB;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,kBAAkB,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAI/D;;OAEG;IACH,KAAK,IAAI,IAAI;CAKb"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Console Runtime Provider
3
+ *
4
+ * REQUIRED provider that should always be included first.
5
+ * Provides console capture, error handling, and execution lifecycle management.
6
+ * Collects console output for retrieval by caller.
7
+ */
8
+ export class ConsoleRuntimeProvider {
9
+ constructor() {
10
+ this.logs = [];
11
+ this.completionError = null;
12
+ this.completed = false;
13
+ }
14
+ getData() {
15
+ // No data needed
16
+ return {};
17
+ }
18
+ getDescription() {
19
+ return "";
20
+ }
21
+ getRuntime() {
22
+ return (_sandboxId) => {
23
+ // Store truly original console methods on first wrap only
24
+ // This prevents accumulation of wrapper functions across multiple executions
25
+ if (!window.__originalConsole) {
26
+ window.__originalConsole = {
27
+ log: console.log.bind(console),
28
+ error: console.error.bind(console),
29
+ warn: console.warn.bind(console),
30
+ info: console.info.bind(console),
31
+ };
32
+ }
33
+ // Always use the truly original console, not the current (possibly wrapped) one
34
+ const originalConsole = window.__originalConsole;
35
+ // Track pending send promises to wait for them in onCompleted
36
+ const pendingSends = [];
37
+ ["log", "error", "warn", "info"].forEach((method) => {
38
+ console[method] = (...args) => {
39
+ const text = args
40
+ .map((arg) => {
41
+ try {
42
+ return typeof arg === "object" ? JSON.stringify(arg) : String(arg);
43
+ }
44
+ catch {
45
+ return String(arg);
46
+ }
47
+ })
48
+ .join(" ");
49
+ // Always log locally too (using truly original console)
50
+ originalConsole[method].apply(console, args);
51
+ // Send immediately and track the promise (only in extension context)
52
+ if (window.sendRuntimeMessage) {
53
+ const sendPromise = window
54
+ .sendRuntimeMessage({
55
+ type: "console",
56
+ method,
57
+ text,
58
+ args,
59
+ })
60
+ .catch(() => { });
61
+ pendingSends.push(sendPromise);
62
+ }
63
+ };
64
+ });
65
+ // Register completion callback to wait for all pending sends
66
+ if (window.onCompleted) {
67
+ window.onCompleted(async (_success) => {
68
+ // Wait for all pending console sends to complete
69
+ if (pendingSends.length > 0) {
70
+ await Promise.all(pendingSends);
71
+ }
72
+ });
73
+ }
74
+ // Track errors for HTML artifacts
75
+ let lastError = null;
76
+ // Error handlers - track errors but don't log them
77
+ // (they'll be shown via execution-error message)
78
+ window.addEventListener("error", (e) => {
79
+ const text = `${e.error?.stack || e.message || String(e)} at line ${e.lineno || "?"}:${e.colno || "?"}`;
80
+ lastError = {
81
+ message: e.error?.message || e.message || String(e),
82
+ stack: e.error?.stack || text,
83
+ };
84
+ });
85
+ window.addEventListener("unhandledrejection", (e) => {
86
+ const text = `Unhandled promise rejection: ${e.reason?.message || e.reason || "Unknown error"}`;
87
+ lastError = {
88
+ message: e.reason?.message || String(e.reason) || "Unhandled promise rejection",
89
+ stack: e.reason?.stack || text,
90
+ };
91
+ });
92
+ // Expose complete() method for user code to call
93
+ let completionSent = false;
94
+ window.complete = async (error, returnValue) => {
95
+ if (completionSent)
96
+ return;
97
+ completionSent = true;
98
+ const finalError = error || lastError;
99
+ if (window.sendRuntimeMessage) {
100
+ if (finalError) {
101
+ await window.sendRuntimeMessage({
102
+ type: "execution-error",
103
+ error: finalError,
104
+ });
105
+ }
106
+ else {
107
+ await window.sendRuntimeMessage({
108
+ type: "execution-complete",
109
+ returnValue,
110
+ });
111
+ }
112
+ }
113
+ };
114
+ };
115
+ }
116
+ async handleMessage(message, respond) {
117
+ if (message.type === "console") {
118
+ // Collect console output
119
+ this.logs.push({
120
+ type: message.method === "error"
121
+ ? "error"
122
+ : message.method === "warn"
123
+ ? "warn"
124
+ : message.method === "info"
125
+ ? "info"
126
+ : "log",
127
+ text: message.text,
128
+ args: message.args,
129
+ });
130
+ // Acknowledge receipt
131
+ respond({ success: true });
132
+ }
133
+ }
134
+ /**
135
+ * Get collected console logs
136
+ */
137
+ getLogs() {
138
+ return this.logs;
139
+ }
140
+ /**
141
+ * Get completion status
142
+ */
143
+ isCompleted() {
144
+ return this.completed;
145
+ }
146
+ /**
147
+ * Get completion error if any
148
+ */
149
+ getCompletionError() {
150
+ return this.completionError;
151
+ }
152
+ /**
153
+ * Reset state for reuse
154
+ */
155
+ reset() {
156
+ this.logs = [];
157
+ this.completionError = null;
158
+ this.completed = false;
159
+ }
160
+ }
@@ -0,0 +1,30 @@
1
+ import type { SandboxRuntimeProvider } from "./SandboxRuntimeProvider.js";
2
+ export interface DownloadableFile {
3
+ fileName: string;
4
+ content: string | Uint8Array;
5
+ mimeType: string;
6
+ }
7
+ /**
8
+ * File Download Runtime Provider
9
+ *
10
+ * Provides returnDownloadableFile() for creating user downloads.
11
+ * Files returned this way are NOT accessible to the LLM later (one-time download).
12
+ * Works both online (sends to extension) and offline (triggers browser download directly).
13
+ * Collects files for retrieval by caller.
14
+ */
15
+ export declare class FileDownloadRuntimeProvider implements SandboxRuntimeProvider {
16
+ private files;
17
+ getData(): Record<string, any>;
18
+ getRuntime(): (sandboxId: string) => void;
19
+ handleMessage(message: any, respond: (response: any) => void): Promise<void>;
20
+ /**
21
+ * Get collected files
22
+ */
23
+ getFiles(): DownloadableFile[];
24
+ /**
25
+ * Reset state for reuse
26
+ */
27
+ reset(): void;
28
+ getDescription(): string;
29
+ }
30
+ //# sourceMappingURL=FileDownloadRuntimeProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileDownloadRuntimeProvider.d.ts","sourceRoot":"","sources":["../../../../src/webui/components/sandbox/FileDownloadRuntimeProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAE1E,MAAM,WAAW,gBAAgB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,qBAAa,2BAA4B,YAAW,sBAAsB;IACzE,OAAO,CAAC,KAAK,CAA0B;IAEvC,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAK9B,UAAU,IAAI,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI;IAuDnC,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAalF;;OAEG;IACH,QAAQ,IAAI,gBAAgB,EAAE;IAI9B;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb,cAAc,IAAI,MAAM;CAGxB"}