@agent-native/core 0.7.14 → 0.7.15

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 (737) hide show
  1. package/README.md +56 -6
  2. package/dist/a2a/handlers.d.ts.map +1 -1
  3. package/dist/a2a/handlers.js +149 -24
  4. package/dist/a2a/handlers.js.map +1 -1
  5. package/dist/a2a/server.d.ts.map +1 -1
  6. package/dist/a2a/server.js +166 -51
  7. package/dist/a2a/server.js.map +1 -1
  8. package/dist/a2a/task-store.d.ts +10 -1
  9. package/dist/a2a/task-store.d.ts.map +1 -1
  10. package/dist/a2a/task-store.js +36 -2
  11. package/dist/a2a/task-store.js.map +1 -1
  12. package/dist/agent/default-model.d.ts +21 -0
  13. package/dist/agent/default-model.d.ts.map +1 -0
  14. package/dist/agent/default-model.js +21 -0
  15. package/dist/agent/default-model.js.map +1 -0
  16. package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
  17. package/dist/agent/engine/ai-sdk-engine.js +7 -4
  18. package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
  19. package/dist/agent/engine/anthropic-engine.d.ts +1 -1
  20. package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
  21. package/dist/agent/engine/anthropic-engine.js +10 -4
  22. package/dist/agent/engine/anthropic-engine.js.map +1 -1
  23. package/dist/agent/engine/builder-engine.d.ts.map +1 -1
  24. package/dist/agent/engine/builder-engine.js +4 -1
  25. package/dist/agent/engine/builder-engine.js.map +1 -1
  26. package/dist/agent/engine/builtin.js +1 -1
  27. package/dist/agent/engine/builtin.js.map +1 -1
  28. package/dist/agent/engine/registry.d.ts +27 -7
  29. package/dist/agent/engine/registry.d.ts.map +1 -1
  30. package/dist/agent/engine/registry.js +101 -20
  31. package/dist/agent/engine/registry.js.map +1 -1
  32. package/dist/agent/index.d.ts +1 -0
  33. package/dist/agent/index.d.ts.map +1 -1
  34. package/dist/agent/index.js +1 -0
  35. package/dist/agent/index.js.map +1 -1
  36. package/dist/agent/production-agent.d.ts +25 -3
  37. package/dist/agent/production-agent.d.ts.map +1 -1
  38. package/dist/agent/production-agent.js +227 -36
  39. package/dist/agent/production-agent.js.map +1 -1
  40. package/dist/application-state/handlers.d.ts.map +1 -1
  41. package/dist/application-state/handlers.js +10 -6
  42. package/dist/application-state/handlers.js.map +1 -1
  43. package/dist/application-state/script-helpers.d.ts +1 -1
  44. package/dist/application-state/script-helpers.d.ts.map +1 -1
  45. package/dist/application-state/script-helpers.js +12 -8
  46. package/dist/application-state/script-helpers.js.map +1 -1
  47. package/dist/application-state/store.d.ts.map +1 -1
  48. package/dist/application-state/store.js +19 -10
  49. package/dist/application-state/store.js.map +1 -1
  50. package/dist/chat-threads/store.d.ts.map +1 -1
  51. package/dist/chat-threads/store.js +4 -1
  52. package/dist/chat-threads/store.js.map +1 -1
  53. package/dist/cli/create.d.ts.map +1 -1
  54. package/dist/cli/create.js +79 -13
  55. package/dist/cli/create.js.map +1 -1
  56. package/dist/cli/index.js +97 -39
  57. package/dist/cli/index.js.map +1 -1
  58. package/dist/cli/templates-meta.d.ts +4 -0
  59. package/dist/cli/templates-meta.d.ts.map +1 -1
  60. package/dist/cli/templates-meta.js +56 -12
  61. package/dist/cli/templates-meta.js.map +1 -1
  62. package/dist/cli/workspacify.d.ts +2 -0
  63. package/dist/cli/workspacify.d.ts.map +1 -1
  64. package/dist/cli/workspacify.js +5 -4
  65. package/dist/cli/workspacify.js.map +1 -1
  66. package/dist/client/AgentPanel.d.ts +5 -2
  67. package/dist/client/AgentPanel.d.ts.map +1 -1
  68. package/dist/client/AgentPanel.js +61 -23
  69. package/dist/client/AgentPanel.js.map +1 -1
  70. package/dist/client/AgentTaskCard.d.ts.map +1 -1
  71. package/dist/client/AgentTaskCard.js +3 -2
  72. package/dist/client/AgentTaskCard.js.map +1 -1
  73. package/dist/client/AssistantChat.d.ts.map +1 -1
  74. package/dist/client/AssistantChat.js +79 -16
  75. package/dist/client/AssistantChat.js.map +1 -1
  76. package/dist/client/ConnectBuilderCard.d.ts.map +1 -1
  77. package/dist/client/ConnectBuilderCard.js +2 -1
  78. package/dist/client/ConnectBuilderCard.js.map +1 -1
  79. package/dist/client/DefaultSpinner.d.ts +1 -1
  80. package/dist/client/DefaultSpinner.d.ts.map +1 -1
  81. package/dist/client/DefaultSpinner.js +2 -9
  82. package/dist/client/DefaultSpinner.js.map +1 -1
  83. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  84. package/dist/client/MultiTabAssistantChat.js +20 -19
  85. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  86. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  87. package/dist/client/agent-chat-adapter.js +2 -1
  88. package/dist/client/agent-chat-adapter.js.map +1 -1
  89. package/dist/client/agent-chat.d.ts.map +1 -1
  90. package/dist/client/agent-chat.js +3 -1
  91. package/dist/client/agent-chat.js.map +1 -1
  92. package/dist/client/analytics.d.ts.map +1 -1
  93. package/dist/client/analytics.js +70 -1
  94. package/dist/client/analytics.js.map +1 -1
  95. package/dist/client/api-path.d.ts +5 -0
  96. package/dist/client/api-path.d.ts.map +1 -0
  97. package/dist/client/api-path.js +48 -0
  98. package/dist/client/api-path.js.map +1 -0
  99. package/dist/client/components/ApiKeySettings.d.ts.map +1 -1
  100. package/dist/client/components/ApiKeySettings.js +3 -2
  101. package/dist/client/components/ApiKeySettings.js.map +1 -1
  102. package/dist/client/components/CodeRequiredDialog.d.ts.map +1 -1
  103. package/dist/client/components/CodeRequiredDialog.js +3 -2
  104. package/dist/client/components/CodeRequiredDialog.js.map +1 -1
  105. package/dist/client/composer/TiptapComposer.d.ts +3 -1
  106. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  107. package/dist/client/composer/TiptapComposer.js +9 -8
  108. package/dist/client/composer/TiptapComposer.js.map +1 -1
  109. package/dist/client/composer/draft-key.d.ts +2 -0
  110. package/dist/client/composer/draft-key.d.ts.map +1 -0
  111. package/dist/client/composer/draft-key.js +8 -0
  112. package/dist/client/composer/draft-key.js.map +1 -0
  113. package/dist/client/composer/use-file-search.d.ts.map +1 -1
  114. package/dist/client/composer/use-file-search.js +2 -1
  115. package/dist/client/composer/use-file-search.js.map +1 -1
  116. package/dist/client/composer/use-mention-search.d.ts.map +1 -1
  117. package/dist/client/composer/use-mention-search.js +2 -1
  118. package/dist/client/composer/use-mention-search.js.map +1 -1
  119. package/dist/client/composer/use-skills.d.ts.map +1 -1
  120. package/dist/client/composer/use-skills.js +2 -1
  121. package/dist/client/composer/use-skills.js.map +1 -1
  122. package/dist/client/composer/useVoiceDictation.d.ts +1 -1
  123. package/dist/client/composer/useVoiceDictation.d.ts.map +1 -1
  124. package/dist/client/composer/useVoiceDictation.js +16 -8
  125. package/dist/client/composer/useVoiceDictation.js.map +1 -1
  126. package/dist/client/dev-mode.d.ts +14 -0
  127. package/dist/client/dev-mode.d.ts.map +1 -0
  128. package/dist/client/dev-mode.js +14 -0
  129. package/dist/client/dev-mode.js.map +1 -0
  130. package/dist/client/dev-overlay/DevOverlay.d.ts +26 -0
  131. package/dist/client/dev-overlay/DevOverlay.d.ts.map +1 -0
  132. package/dist/client/dev-overlay/DevOverlay.js +315 -0
  133. package/dist/client/dev-overlay/DevOverlay.js.map +1 -0
  134. package/dist/client/dev-overlay/builtins.d.ts +6 -0
  135. package/dist/client/dev-overlay/builtins.d.ts.map +1 -0
  136. package/dist/client/dev-overlay/builtins.js +35 -0
  137. package/dist/client/dev-overlay/builtins.js.map +1 -0
  138. package/dist/client/dev-overlay/index.d.ts +6 -0
  139. package/dist/client/dev-overlay/index.d.ts.map +1 -0
  140. package/dist/client/dev-overlay/index.js +5 -0
  141. package/dist/client/dev-overlay/index.js.map +1 -0
  142. package/dist/client/dev-overlay/registry.d.ts +13 -0
  143. package/dist/client/dev-overlay/registry.d.ts.map +1 -0
  144. package/dist/client/dev-overlay/registry.js +63 -0
  145. package/dist/client/dev-overlay/registry.js.map +1 -0
  146. package/dist/client/dev-overlay/types.d.ts +56 -0
  147. package/dist/client/dev-overlay/types.d.ts.map +1 -0
  148. package/dist/client/dev-overlay/types.js +9 -0
  149. package/dist/client/dev-overlay/types.js.map +1 -0
  150. package/dist/client/dev-overlay/use-dev-option.d.ts +12 -0
  151. package/dist/client/dev-overlay/use-dev-option.d.ts.map +1 -0
  152. package/dist/client/dev-overlay/use-dev-option.js +73 -0
  153. package/dist/client/dev-overlay/use-dev-option.js.map +1 -0
  154. package/dist/client/dev-overlay/use-dev-overlay-shortcut.d.ts +6 -0
  155. package/dist/client/dev-overlay/use-dev-overlay-shortcut.d.ts.map +1 -0
  156. package/dist/client/dev-overlay/use-dev-overlay-shortcut.js +29 -0
  157. package/dist/client/dev-overlay/use-dev-overlay-shortcut.js.map +1 -0
  158. package/dist/client/frame.d.ts +1 -0
  159. package/dist/client/frame.d.ts.map +1 -1
  160. package/dist/client/frame.js +32 -11
  161. package/dist/client/frame.js.map +1 -1
  162. package/dist/client/index.d.ts +4 -0
  163. package/dist/client/index.d.ts.map +1 -1
  164. package/dist/client/index.js +4 -0
  165. package/dist/client/index.js.map +1 -1
  166. package/dist/client/integrations/IntegrationCard.d.ts.map +1 -1
  167. package/dist/client/integrations/IntegrationCard.js +3 -2
  168. package/dist/client/integrations/IntegrationCard.js.map +1 -1
  169. package/dist/client/integrations/IntegrationsPanel.d.ts.map +1 -1
  170. package/dist/client/integrations/IntegrationsPanel.js +3 -2
  171. package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
  172. package/dist/client/integrations/useIntegrationStatus.d.ts.map +1 -1
  173. package/dist/client/integrations/useIntegrationStatus.js +2 -1
  174. package/dist/client/integrations/useIntegrationStatus.js.map +1 -1
  175. package/dist/client/notifications/NotificationsBell.d.ts.map +1 -1
  176. package/dist/client/notifications/NotificationsBell.js +26 -8
  177. package/dist/client/notifications/NotificationsBell.js.map +1 -1
  178. package/dist/client/observability/ThumbsFeedback.d.ts.map +1 -1
  179. package/dist/client/observability/ThumbsFeedback.js +2 -1
  180. package/dist/client/observability/ThumbsFeedback.js.map +1 -1
  181. package/dist/client/observability/useObservability.d.ts.map +1 -1
  182. package/dist/client/observability/useObservability.js +2 -1
  183. package/dist/client/observability/useObservability.js.map +1 -1
  184. package/dist/client/onboarding/OnboardingPanel.d.ts +0 -7
  185. package/dist/client/onboarding/OnboardingPanel.d.ts.map +1 -1
  186. package/dist/client/onboarding/OnboardingPanel.js +20 -10
  187. package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
  188. package/dist/client/onboarding/index.d.ts +1 -0
  189. package/dist/client/onboarding/index.d.ts.map +1 -1
  190. package/dist/client/onboarding/index.js +1 -0
  191. package/dist/client/onboarding/index.js.map +1 -1
  192. package/dist/client/onboarding/use-onboarding.d.ts +1 -7
  193. package/dist/client/onboarding/use-onboarding.d.ts.map +1 -1
  194. package/dist/client/onboarding/use-onboarding.js +27 -13
  195. package/dist/client/onboarding/use-onboarding.js.map +1 -1
  196. package/dist/client/onboarding/use-preview-mode.d.ts +10 -0
  197. package/dist/client/onboarding/use-preview-mode.d.ts.map +1 -0
  198. package/dist/client/onboarding/use-preview-mode.js +35 -0
  199. package/dist/client/onboarding/use-preview-mode.js.map +1 -0
  200. package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
  201. package/dist/client/org/OrgSwitcher.js +2 -1
  202. package/dist/client/org/OrgSwitcher.js.map +1 -1
  203. package/dist/client/org/TeamPage.d.ts.map +1 -1
  204. package/dist/client/org/TeamPage.js +7 -5
  205. package/dist/client/org/TeamPage.js.map +1 -1
  206. package/dist/client/org/hooks.d.ts.map +1 -1
  207. package/dist/client/org/hooks.js +2 -1
  208. package/dist/client/org/hooks.js.map +1 -1
  209. package/dist/client/progress/RunsTray.d.ts.map +1 -1
  210. package/dist/client/progress/RunsTray.js +2 -1
  211. package/dist/client/progress/RunsTray.js.map +1 -1
  212. package/dist/client/resources/McpServerDetail.d.ts +0 -8
  213. package/dist/client/resources/McpServerDetail.d.ts.map +1 -1
  214. package/dist/client/resources/McpServerDetail.js +6 -1
  215. package/dist/client/resources/McpServerDetail.js.map +1 -1
  216. package/dist/client/resources/ResourceEditor.d.ts.map +1 -1
  217. package/dist/client/resources/ResourceEditor.js +2 -1
  218. package/dist/client/resources/ResourceEditor.js.map +1 -1
  219. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  220. package/dist/client/resources/ResourcesPanel.js +2 -1
  221. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  222. package/dist/client/resources/use-mcp-servers.d.ts.map +1 -1
  223. package/dist/client/resources/use-mcp-servers.js +7 -2
  224. package/dist/client/resources/use-mcp-servers.js.map +1 -1
  225. package/dist/client/resources/use-resources.d.ts.map +1 -1
  226. package/dist/client/resources/use-resources.js +9 -7
  227. package/dist/client/resources/use-resources.js.map +1 -1
  228. package/dist/client/settings/AgentsSection.d.ts.map +1 -1
  229. package/dist/client/settings/AgentsSection.js +7 -5
  230. package/dist/client/settings/AgentsSection.js.map +1 -1
  231. package/dist/client/settings/AutomationsSection.d.ts.map +1 -1
  232. package/dist/client/settings/AutomationsSection.js +9 -5
  233. package/dist/client/settings/AutomationsSection.js.map +1 -1
  234. package/dist/client/settings/BackgroundAgentSection.d.ts.map +1 -1
  235. package/dist/client/settings/BackgroundAgentSection.js +2 -1
  236. package/dist/client/settings/BackgroundAgentSection.js.map +1 -1
  237. package/dist/client/settings/SecretsSection.d.ts.map +1 -1
  238. package/dist/client/settings/SecretsSection.js +12 -4
  239. package/dist/client/settings/SecretsSection.js.map +1 -1
  240. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  241. package/dist/client/settings/SettingsPanel.js +15 -23
  242. package/dist/client/settings/SettingsPanel.js.map +1 -1
  243. package/dist/client/settings/UsageSection.d.ts.map +1 -1
  244. package/dist/client/settings/UsageSection.js +2 -1
  245. package/dist/client/settings/UsageSection.js.map +1 -1
  246. package/dist/client/settings/VoiceTranscriptionSection.d.ts +2 -4
  247. package/dist/client/settings/VoiceTranscriptionSection.d.ts.map +1 -1
  248. package/dist/client/settings/VoiceTranscriptionSection.js +66 -23
  249. package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
  250. package/dist/client/settings/useBuilderStatus.d.ts +9 -0
  251. package/dist/client/settings/useBuilderStatus.d.ts.map +1 -1
  252. package/dist/client/settings/useBuilderStatus.js +31 -3
  253. package/dist/client/settings/useBuilderStatus.js.map +1 -1
  254. package/dist/client/sharing/ShareButton.d.ts.map +1 -1
  255. package/dist/client/sharing/ShareButton.js +7 -2
  256. package/dist/client/sharing/ShareButton.js.map +1 -1
  257. package/dist/client/sharing/ShareDialog.d.ts.map +1 -1
  258. package/dist/client/sharing/ShareDialog.js +4 -3
  259. package/dist/client/sharing/ShareDialog.js.map +1 -1
  260. package/dist/client/terminal/AgentTerminal.d.ts +1 -0
  261. package/dist/client/terminal/AgentTerminal.d.ts.map +1 -1
  262. package/dist/client/terminal/AgentTerminal.js +12 -8
  263. package/dist/client/terminal/AgentTerminal.js.map +1 -1
  264. package/dist/client/tools/EmbeddedTool.d.ts +20 -0
  265. package/dist/client/tools/EmbeddedTool.d.ts.map +1 -0
  266. package/dist/client/tools/EmbeddedTool.js +113 -0
  267. package/dist/client/tools/EmbeddedTool.js.map +1 -0
  268. package/dist/client/tools/ExtensionSlot.d.ts +27 -0
  269. package/dist/client/tools/ExtensionSlot.d.ts.map +1 -0
  270. package/dist/client/tools/ExtensionSlot.js +96 -0
  271. package/dist/client/tools/ExtensionSlot.js.map +1 -0
  272. package/dist/client/tools/ToolEditor.d.ts.map +1 -1
  273. package/dist/client/tools/ToolEditor.js +5 -4
  274. package/dist/client/tools/ToolEditor.js.map +1 -1
  275. package/dist/client/tools/ToolViewer.d.ts.map +1 -1
  276. package/dist/client/tools/ToolViewer.js +10 -44
  277. package/dist/client/tools/ToolViewer.js.map +1 -1
  278. package/dist/client/tools/ToolViewerPage.d.ts.map +1 -1
  279. package/dist/client/tools/ToolViewerPage.js +2 -1
  280. package/dist/client/tools/ToolViewerPage.js.map +1 -1
  281. package/dist/client/tools/ToolsListPage.d.ts.map +1 -1
  282. package/dist/client/tools/ToolsListPage.js +3 -2
  283. package/dist/client/tools/ToolsListPage.js.map +1 -1
  284. package/dist/client/tools/ToolsSidebarSection.d.ts.map +1 -1
  285. package/dist/client/tools/ToolsSidebarSection.js +4 -3
  286. package/dist/client/tools/ToolsSidebarSection.js.map +1 -1
  287. package/dist/client/tools/iframe-bridge.d.ts +16 -0
  288. package/dist/client/tools/iframe-bridge.d.ts.map +1 -0
  289. package/dist/client/tools/iframe-bridge.js +118 -0
  290. package/dist/client/tools/iframe-bridge.js.map +1 -0
  291. package/dist/client/tools/index.d.ts +2 -0
  292. package/dist/client/tools/index.d.ts.map +1 -1
  293. package/dist/client/tools/index.js +2 -0
  294. package/dist/client/tools/index.js.map +1 -1
  295. package/dist/client/use-action.d.ts.map +1 -1
  296. package/dist/client/use-action.js +2 -1
  297. package/dist/client/use-action.js.map +1 -1
  298. package/dist/client/use-avatar.d.ts.map +1 -1
  299. package/dist/client/use-avatar.js +3 -2
  300. package/dist/client/use-avatar.js.map +1 -1
  301. package/dist/client/use-builder-enabled.d.ts.map +1 -1
  302. package/dist/client/use-builder-enabled.js +2 -1
  303. package/dist/client/use-builder-enabled.js.map +1 -1
  304. package/dist/client/use-chat-threads.d.ts.map +1 -1
  305. package/dist/client/use-chat-threads.js +2 -1
  306. package/dist/client/use-chat-threads.js.map +1 -1
  307. package/dist/client/use-db-sync.d.ts.map +1 -1
  308. package/dist/client/use-db-sync.js +3 -2
  309. package/dist/client/use-db-sync.js.map +1 -1
  310. package/dist/client/use-dev-mode.d.ts.map +1 -1
  311. package/dist/client/use-dev-mode.js +2 -1
  312. package/dist/client/use-dev-mode.js.map +1 -1
  313. package/dist/client/use-send-to-agent-chat.d.ts.map +1 -1
  314. package/dist/client/use-send-to-agent-chat.js +3 -1
  315. package/dist/client/use-send-to-agent-chat.js.map +1 -1
  316. package/dist/client/use-session.d.ts.map +1 -1
  317. package/dist/client/use-session.js +2 -1
  318. package/dist/client/use-session.js.map +1 -1
  319. package/dist/client/useProductionAgent.d.ts.map +1 -1
  320. package/dist/client/useProductionAgent.js +2 -1
  321. package/dist/client/useProductionAgent.js.map +1 -1
  322. package/dist/collab/client.d.ts.map +1 -1
  323. package/dist/collab/client.js +3 -2
  324. package/dist/collab/client.js.map +1 -1
  325. package/dist/credentials/index.d.ts +27 -10
  326. package/dist/credentials/index.d.ts.map +1 -1
  327. package/dist/credentials/index.js +61 -19
  328. package/dist/credentials/index.js.map +1 -1
  329. package/dist/db/client.d.ts.map +1 -1
  330. package/dist/db/client.js +10 -1
  331. package/dist/db/client.js.map +1 -1
  332. package/dist/db/migrations.d.ts +13 -5
  333. package/dist/db/migrations.d.ts.map +1 -1
  334. package/dist/db/migrations.js +9 -2
  335. package/dist/db/migrations.js.map +1 -1
  336. package/dist/deploy/build.d.ts +12 -1
  337. package/dist/deploy/build.d.ts.map +1 -1
  338. package/dist/deploy/build.js +195 -23
  339. package/dist/deploy/build.js.map +1 -1
  340. package/dist/file-upload/registry.d.ts.map +1 -1
  341. package/dist/file-upload/registry.js +25 -1
  342. package/dist/file-upload/registry.js.map +1 -1
  343. package/dist/index.d.ts +1 -1
  344. package/dist/index.d.ts.map +1 -1
  345. package/dist/index.js +1 -1
  346. package/dist/index.js.map +1 -1
  347. package/dist/integrations/adapters/email.d.ts.map +1 -1
  348. package/dist/integrations/adapters/email.js +152 -32
  349. package/dist/integrations/adapters/email.js.map +1 -1
  350. package/dist/integrations/adapters/slack.d.ts.map +1 -1
  351. package/dist/integrations/adapters/slack.js +190 -32
  352. package/dist/integrations/adapters/slack.js.map +1 -1
  353. package/dist/integrations/adapters/telegram.d.ts.map +1 -1
  354. package/dist/integrations/adapters/telegram.js +37 -2
  355. package/dist/integrations/adapters/telegram.js.map +1 -1
  356. package/dist/integrations/adapters/whatsapp.d.ts.map +1 -1
  357. package/dist/integrations/adapters/whatsapp.js +91 -12
  358. package/dist/integrations/adapters/whatsapp.js.map +1 -1
  359. package/dist/integrations/google-docs-poller.d.ts.map +1 -1
  360. package/dist/integrations/google-docs-poller.js +5 -2
  361. package/dist/integrations/google-docs-poller.js.map +1 -1
  362. package/dist/integrations/internal-token.d.ts.map +1 -1
  363. package/dist/integrations/internal-token.js +17 -1
  364. package/dist/integrations/internal-token.js.map +1 -1
  365. package/dist/integrations/pending-tasks-retry-job.d.ts.map +1 -1
  366. package/dist/integrations/pending-tasks-retry-job.js +18 -7
  367. package/dist/integrations/pending-tasks-retry-job.js.map +1 -1
  368. package/dist/integrations/pending-tasks-store.d.ts +16 -0
  369. package/dist/integrations/pending-tasks-store.d.ts.map +1 -1
  370. package/dist/integrations/pending-tasks-store.js +58 -5
  371. package/dist/integrations/pending-tasks-store.js.map +1 -1
  372. package/dist/integrations/plugin.d.ts.map +1 -1
  373. package/dist/integrations/plugin.js +198 -15
  374. package/dist/integrations/plugin.js.map +1 -1
  375. package/dist/integrations/types.d.ts +33 -2
  376. package/dist/integrations/types.d.ts.map +1 -1
  377. package/dist/integrations/webhook-handler.d.ts +6 -0
  378. package/dist/integrations/webhook-handler.d.ts.map +1 -1
  379. package/dist/integrations/webhook-handler.js +141 -61
  380. package/dist/integrations/webhook-handler.js.map +1 -1
  381. package/dist/jobs/cron.d.ts.map +1 -1
  382. package/dist/jobs/cron.js +12 -4
  383. package/dist/jobs/cron.js.map +1 -1
  384. package/dist/jobs/scheduler.d.ts.map +1 -1
  385. package/dist/jobs/scheduler.js +141 -16
  386. package/dist/jobs/scheduler.js.map +1 -1
  387. package/dist/jobs/tools.d.ts.map +1 -1
  388. package/dist/jobs/tools.js +94 -3
  389. package/dist/jobs/tools.js.map +1 -1
  390. package/dist/mcp/server.d.ts.map +1 -1
  391. package/dist/mcp/server.js +128 -62
  392. package/dist/mcp/server.js.map +1 -1
  393. package/dist/mcp-client/hub-routes.d.ts +14 -0
  394. package/dist/mcp-client/hub-routes.d.ts.map +1 -1
  395. package/dist/mcp-client/hub-routes.js +42 -2
  396. package/dist/mcp-client/hub-routes.js.map +1 -1
  397. package/dist/mcp-client/index.d.ts +1 -1
  398. package/dist/mcp-client/index.d.ts.map +1 -1
  399. package/dist/mcp-client/index.js +1 -1
  400. package/dist/mcp-client/index.js.map +1 -1
  401. package/dist/mcp-client/manager.d.ts.map +1 -1
  402. package/dist/mcp-client/manager.js +28 -3
  403. package/dist/mcp-client/manager.js.map +1 -1
  404. package/dist/mcp-client/remote-store.d.ts +49 -1
  405. package/dist/mcp-client/remote-store.d.ts.map +1 -1
  406. package/dist/mcp-client/remote-store.js +253 -6
  407. package/dist/mcp-client/remote-store.js.map +1 -1
  408. package/dist/mcp-client/routes.d.ts.map +1 -1
  409. package/dist/mcp-client/routes.js +11 -9
  410. package/dist/mcp-client/routes.js.map +1 -1
  411. package/dist/mcp-client/visibility.d.ts +7 -3
  412. package/dist/mcp-client/visibility.d.ts.map +1 -1
  413. package/dist/mcp-client/visibility.js +16 -7
  414. package/dist/mcp-client/visibility.js.map +1 -1
  415. package/dist/notifications/actions.d.ts.map +1 -1
  416. package/dist/notifications/actions.js +7 -1
  417. package/dist/notifications/actions.js.map +1 -1
  418. package/dist/notifications/routes.d.ts +1 -1
  419. package/dist/notifications/routes.d.ts.map +1 -1
  420. package/dist/notifications/routes.js +20 -3
  421. package/dist/notifications/routes.js.map +1 -1
  422. package/dist/notifications/store.d.ts.map +1 -1
  423. package/dist/notifications/store.js +6 -1
  424. package/dist/notifications/store.js.map +1 -1
  425. package/dist/oauth-tokens/store.d.ts +43 -2
  426. package/dist/oauth-tokens/store.d.ts.map +1 -1
  427. package/dist/oauth-tokens/store.js +83 -14
  428. package/dist/oauth-tokens/store.js.map +1 -1
  429. package/dist/observability/experiments.js +5 -5
  430. package/dist/observability/experiments.js.map +1 -1
  431. package/dist/observability/routes.d.ts.map +1 -1
  432. package/dist/observability/routes.js +37 -8
  433. package/dist/observability/routes.js.map +1 -1
  434. package/dist/observability/store.d.ts.map +1 -1
  435. package/dist/observability/store.js +19 -3
  436. package/dist/observability/store.js.map +1 -1
  437. package/dist/observability/types.d.ts +7 -0
  438. package/dist/observability/types.d.ts.map +1 -1
  439. package/dist/observability/types.js.map +1 -1
  440. package/dist/onboarding/default-steps.d.ts.map +1 -1
  441. package/dist/onboarding/default-steps.js +1 -2
  442. package/dist/onboarding/default-steps.js.map +1 -1
  443. package/dist/onboarding/plugin.d.ts.map +1 -1
  444. package/dist/onboarding/plugin.js +63 -32
  445. package/dist/onboarding/plugin.js.map +1 -1
  446. package/dist/onboarding/types.d.ts +6 -1
  447. package/dist/onboarding/types.d.ts.map +1 -1
  448. package/dist/org/accept-pending.d.ts.map +1 -1
  449. package/dist/org/accept-pending.js +2 -1
  450. package/dist/org/accept-pending.js.map +1 -1
  451. package/dist/progress/actions.d.ts.map +1 -1
  452. package/dist/progress/actions.js +10 -1
  453. package/dist/progress/actions.js.map +1 -1
  454. package/dist/progress/routes.d.ts +1 -1
  455. package/dist/progress/routes.d.ts.map +1 -1
  456. package/dist/progress/routes.js +20 -3
  457. package/dist/progress/routes.js.map +1 -1
  458. package/dist/progress/store.d.ts.map +1 -1
  459. package/dist/progress/store.js +6 -1
  460. package/dist/progress/store.js.map +1 -1
  461. package/dist/resources/handlers.d.ts.map +1 -1
  462. package/dist/resources/handlers.js +35 -7
  463. package/dist/resources/handlers.js.map +1 -1
  464. package/dist/resources/script-helpers.d.ts.map +1 -1
  465. package/dist/resources/script-helpers.js +15 -3
  466. package/dist/resources/script-helpers.js.map +1 -1
  467. package/dist/resources/store.d.ts.map +1 -1
  468. package/dist/resources/store.js +12 -4
  469. package/dist/resources/store.js.map +1 -1
  470. package/dist/scripts/call-agent.d.ts +1 -0
  471. package/dist/scripts/call-agent.d.ts.map +1 -1
  472. package/dist/scripts/call-agent.js +78 -40
  473. package/dist/scripts/call-agent.js.map +1 -1
  474. package/dist/scripts/chat/search-chats.d.ts.map +1 -1
  475. package/dist/scripts/chat/search-chats.js +3 -2
  476. package/dist/scripts/chat/search-chats.js.map +1 -1
  477. package/dist/scripts/db/exec.d.ts +1 -1
  478. package/dist/scripts/db/exec.d.ts.map +1 -1
  479. package/dist/scripts/db/exec.js +22 -3
  480. package/dist/scripts/db/exec.js.map +1 -1
  481. package/dist/scripts/db/migrate-user-api-keys.d.ts.map +1 -1
  482. package/dist/scripts/db/migrate-user-api-keys.js +10 -0
  483. package/dist/scripts/db/migrate-user-api-keys.js.map +1 -1
  484. package/dist/scripts/db/query.d.ts +1 -1
  485. package/dist/scripts/db/query.d.ts.map +1 -1
  486. package/dist/scripts/db/query.js +22 -3
  487. package/dist/scripts/db/query.js.map +1 -1
  488. package/dist/scripts/db/scoping.d.ts.map +1 -1
  489. package/dist/scripts/db/scoping.js +15 -9
  490. package/dist/scripts/db/scoping.js.map +1 -1
  491. package/dist/scripts/dev/shell.d.ts.map +1 -1
  492. package/dist/scripts/dev/shell.js +3 -1
  493. package/dist/scripts/dev/shell.js.map +1 -1
  494. package/dist/scripts/resources/delete-memory.d.ts.map +1 -1
  495. package/dist/scripts/resources/delete-memory.js +2 -1
  496. package/dist/scripts/resources/delete-memory.js.map +1 -1
  497. package/dist/scripts/resources/delete.d.ts.map +1 -1
  498. package/dist/scripts/resources/delete.js +2 -1
  499. package/dist/scripts/resources/delete.js.map +1 -1
  500. package/dist/scripts/resources/list.d.ts.map +1 -1
  501. package/dist/scripts/resources/list.js +2 -1
  502. package/dist/scripts/resources/list.js.map +1 -1
  503. package/dist/scripts/resources/migrate-learnings.d.ts.map +1 -1
  504. package/dist/scripts/resources/migrate-learnings.js +2 -1
  505. package/dist/scripts/resources/migrate-learnings.js.map +1 -1
  506. package/dist/scripts/resources/read.d.ts.map +1 -1
  507. package/dist/scripts/resources/read.js +2 -1
  508. package/dist/scripts/resources/read.js.map +1 -1
  509. package/dist/scripts/resources/save-memory.d.ts.map +1 -1
  510. package/dist/scripts/resources/save-memory.js +2 -1
  511. package/dist/scripts/resources/save-memory.js.map +1 -1
  512. package/dist/scripts/resources/write.d.ts.map +1 -1
  513. package/dist/scripts/resources/write.js +2 -1
  514. package/dist/scripts/resources/write.js.map +1 -1
  515. package/dist/secrets/onboarding.d.ts.map +1 -1
  516. package/dist/secrets/onboarding.js +24 -16
  517. package/dist/secrets/onboarding.js.map +1 -1
  518. package/dist/secrets/routes.d.ts.map +1 -1
  519. package/dist/secrets/routes.js +139 -37
  520. package/dist/secrets/routes.js.map +1 -1
  521. package/dist/secrets/storage.d.ts.map +1 -1
  522. package/dist/secrets/storage.js +23 -12
  523. package/dist/secrets/storage.js.map +1 -1
  524. package/dist/secrets/substitution.d.ts +24 -2
  525. package/dist/secrets/substitution.d.ts.map +1 -1
  526. package/dist/secrets/substitution.js +44 -6
  527. package/dist/secrets/substitution.js.map +1 -1
  528. package/dist/server/action-discovery.d.ts.map +1 -1
  529. package/dist/server/action-discovery.js +15 -51
  530. package/dist/server/action-discovery.js.map +1 -1
  531. package/dist/server/action-routes.d.ts.map +1 -1
  532. package/dist/server/action-routes.js +42 -15
  533. package/dist/server/action-routes.js.map +1 -1
  534. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  535. package/dist/server/agent-chat-plugin.js +447 -335
  536. package/dist/server/agent-chat-plugin.js.map +1 -1
  537. package/dist/server/agent-discovery.d.ts +8 -0
  538. package/dist/server/agent-discovery.d.ts.map +1 -1
  539. package/dist/server/agent-discovery.js +39 -12
  540. package/dist/server/agent-discovery.js.map +1 -1
  541. package/dist/server/agent-teams.d.ts.map +1 -1
  542. package/dist/server/agent-teams.js +4 -1
  543. package/dist/server/agent-teams.js.map +1 -1
  544. package/dist/server/analytics.d.ts +0 -1
  545. package/dist/server/analytics.d.ts.map +1 -1
  546. package/dist/server/analytics.js +0 -1
  547. package/dist/server/analytics.js.map +1 -1
  548. package/dist/server/app-base-path.d.ts +4 -0
  549. package/dist/server/app-base-path.d.ts.map +1 -0
  550. package/dist/server/app-base-path.js +33 -0
  551. package/dist/server/app-base-path.js.map +1 -0
  552. package/dist/server/auth.d.ts +15 -0
  553. package/dist/server/auth.d.ts.map +1 -1
  554. package/dist/server/auth.js +400 -68
  555. package/dist/server/auth.js.map +1 -1
  556. package/dist/server/better-auth-instance.d.ts +1 -0
  557. package/dist/server/better-auth-instance.d.ts.map +1 -1
  558. package/dist/server/better-auth-instance.js +67 -15
  559. package/dist/server/better-auth-instance.js.map +1 -1
  560. package/dist/server/builder-browser.d.ts +15 -0
  561. package/dist/server/builder-browser.d.ts.map +1 -1
  562. package/dist/server/builder-browser.js +90 -4
  563. package/dist/server/builder-browser.js.map +1 -1
  564. package/dist/server/cli-capture.d.ts +31 -0
  565. package/dist/server/cli-capture.d.ts.map +1 -0
  566. package/dist/server/cli-capture.js +120 -0
  567. package/dist/server/cli-capture.js.map +1 -0
  568. package/dist/server/collab-plugin.d.ts +12 -0
  569. package/dist/server/collab-plugin.d.ts.map +1 -1
  570. package/dist/server/collab-plugin.js +63 -21
  571. package/dist/server/collab-plugin.js.map +1 -1
  572. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  573. package/dist/server/core-routes-plugin.js +435 -106
  574. package/dist/server/core-routes-plugin.js.map +1 -1
  575. package/dist/server/create-server.d.ts +2 -0
  576. package/dist/server/create-server.d.ts.map +1 -1
  577. package/dist/server/create-server.js +82 -11
  578. package/dist/server/create-server.js.map +1 -1
  579. package/dist/server/credential-provider.d.ts +11 -0
  580. package/dist/server/credential-provider.d.ts.map +1 -1
  581. package/dist/server/credential-provider.js +51 -2
  582. package/dist/server/credential-provider.js.map +1 -1
  583. package/dist/server/csrf.d.ts +58 -0
  584. package/dist/server/csrf.d.ts.map +1 -0
  585. package/dist/server/csrf.js +165 -0
  586. package/dist/server/csrf.js.map +1 -0
  587. package/dist/server/framework-request-handler.d.ts +20 -0
  588. package/dist/server/framework-request-handler.d.ts.map +1 -1
  589. package/dist/server/framework-request-handler.js +115 -34
  590. package/dist/server/framework-request-handler.js.map +1 -1
  591. package/dist/server/google-auth-plugin.d.ts.map +1 -1
  592. package/dist/server/google-auth-plugin.js +10 -2
  593. package/dist/server/google-auth-plugin.js.map +1 -1
  594. package/dist/server/google-oauth.d.ts +84 -2
  595. package/dist/server/google-oauth.d.ts.map +1 -1
  596. package/dist/server/google-oauth.js +248 -45
  597. package/dist/server/google-oauth.js.map +1 -1
  598. package/dist/server/index.d.ts +4 -4
  599. package/dist/server/index.d.ts.map +1 -1
  600. package/dist/server/index.js +4 -4
  601. package/dist/server/index.js.map +1 -1
  602. package/dist/server/oauth-helpers.d.ts +8 -3
  603. package/dist/server/oauth-helpers.d.ts.map +1 -1
  604. package/dist/server/oauth-helpers.js +12 -8
  605. package/dist/server/oauth-helpers.js.map +1 -1
  606. package/dist/server/onboarding-html.d.ts.map +1 -1
  607. package/dist/server/onboarding-html.js +37 -9
  608. package/dist/server/onboarding-html.js.map +1 -1
  609. package/dist/server/poll.d.ts +33 -0
  610. package/dist/server/poll.d.ts.map +1 -1
  611. package/dist/server/poll.js +43 -2
  612. package/dist/server/poll.js.map +1 -1
  613. package/dist/server/request-context.d.ts +102 -3
  614. package/dist/server/request-context.d.ts.map +1 -1
  615. package/dist/server/request-context.js +100 -7
  616. package/dist/server/request-context.js.map +1 -1
  617. package/dist/server/security-headers.d.ts +51 -0
  618. package/dist/server/security-headers.d.ts.map +1 -0
  619. package/dist/server/security-headers.js +90 -0
  620. package/dist/server/security-headers.js.map +1 -0
  621. package/dist/server/ssr-handler.d.ts.map +1 -1
  622. package/dist/server/ssr-handler.js +96 -2
  623. package/dist/server/ssr-handler.js.map +1 -1
  624. package/dist/server/transcribe-voice.d.ts.map +1 -1
  625. package/dist/server/transcribe-voice.js +307 -56
  626. package/dist/server/transcribe-voice.js.map +1 -1
  627. package/dist/server/voice-providers-status.d.ts +12 -0
  628. package/dist/server/voice-providers-status.d.ts.map +1 -0
  629. package/dist/server/voice-providers-status.js +71 -0
  630. package/dist/server/voice-providers-status.js.map +1 -0
  631. package/dist/sharing/access.d.ts.map +1 -1
  632. package/dist/sharing/access.js +16 -13
  633. package/dist/sharing/access.js.map +1 -1
  634. package/dist/sharing/actions/share-resource.d.ts +1 -0
  635. package/dist/sharing/actions/share-resource.d.ts.map +1 -1
  636. package/dist/sharing/actions/share-resource.js +45 -0
  637. package/dist/sharing/actions/share-resource.js.map +1 -1
  638. package/dist/templates/default/.agents/skills/delegate-to-agent/SKILL.md +54 -0
  639. package/dist/templates/default/app/root.tsx +1 -1
  640. package/dist/templates/default/app/routes/_index.tsx +6 -1
  641. package/dist/templates/default/public/favicon.svg +13 -0
  642. package/dist/templates/default/public/icon-180.svg +12 -3
  643. package/dist/templates/default/public/icon-192.svg +12 -3
  644. package/dist/templates/default/public/icon-512.svg +12 -3
  645. package/dist/templates/workspace-core/package.json +22 -4
  646. package/dist/templates/workspace-core/src/credentials.ts +32 -5
  647. package/dist/templates/workspace-core/tsconfig.json +4 -1
  648. package/dist/terminal/pty-server.d.ts.map +1 -1
  649. package/dist/terminal/pty-server.js +7 -1
  650. package/dist/terminal/pty-server.js.map +1 -1
  651. package/dist/terminal/terminal-plugin.js +3 -3
  652. package/dist/terminal/terminal-plugin.js.map +1 -1
  653. package/dist/tools/actions.d.ts.map +1 -1
  654. package/dist/tools/actions.js +130 -0
  655. package/dist/tools/actions.js.map +1 -1
  656. package/dist/tools/fetch-tool.d.ts +1 -0
  657. package/dist/tools/fetch-tool.d.ts.map +1 -1
  658. package/dist/tools/fetch-tool.js +38 -16
  659. package/dist/tools/fetch-tool.js.map +1 -1
  660. package/dist/tools/html-shell.d.ts +43 -1
  661. package/dist/tools/html-shell.d.ts.map +1 -1
  662. package/dist/tools/html-shell.js +102 -4
  663. package/dist/tools/html-shell.js.map +1 -1
  664. package/dist/tools/proxy-security.d.ts +12 -0
  665. package/dist/tools/proxy-security.d.ts.map +1 -0
  666. package/dist/tools/proxy-security.js +158 -0
  667. package/dist/tools/proxy-security.js.map +1 -0
  668. package/dist/tools/routes.d.ts.map +1 -1
  669. package/dist/tools/routes.js +158 -105
  670. package/dist/tools/routes.js.map +1 -1
  671. package/dist/tools/schema.d.ts +3 -0
  672. package/dist/tools/schema.d.ts.map +1 -1
  673. package/dist/tools/schema.js +3 -0
  674. package/dist/tools/schema.js.map +1 -1
  675. package/dist/tools/slots/routes.d.ts +15 -0
  676. package/dist/tools/slots/routes.d.ts.map +1 -0
  677. package/dist/tools/slots/routes.js +94 -0
  678. package/dist/tools/slots/routes.js.map +1 -0
  679. package/dist/tools/slots/schema.d.ts +303 -0
  680. package/dist/tools/slots/schema.d.ts.map +1 -0
  681. package/dist/tools/slots/schema.js +76 -0
  682. package/dist/tools/slots/schema.js.map +1 -0
  683. package/dist/tools/slots/store.d.ts +66 -0
  684. package/dist/tools/slots/store.d.ts.map +1 -0
  685. package/dist/tools/slots/store.js +227 -0
  686. package/dist/tools/slots/store.js.map +1 -0
  687. package/dist/tools/store.d.ts.map +1 -1
  688. package/dist/tools/store.js +28 -37
  689. package/dist/tools/store.js.map +1 -1
  690. package/dist/tools/url-safety.d.ts +24 -0
  691. package/dist/tools/url-safety.d.ts.map +1 -0
  692. package/dist/tools/url-safety.js +224 -0
  693. package/dist/tools/url-safety.js.map +1 -0
  694. package/dist/tracking/providers.d.ts.map +1 -1
  695. package/dist/tracking/providers.js +28 -11
  696. package/dist/tracking/providers.js.map +1 -1
  697. package/dist/tracking/registry.d.ts.map +1 -1
  698. package/dist/tracking/registry.js +7 -3
  699. package/dist/tracking/registry.js.map +1 -1
  700. package/dist/triggers/actions.d.ts.map +1 -1
  701. package/dist/triggers/actions.js +11 -6
  702. package/dist/triggers/actions.js.map +1 -1
  703. package/dist/triggers/condition-evaluator.d.ts +8 -0
  704. package/dist/triggers/condition-evaluator.d.ts.map +1 -1
  705. package/dist/triggers/condition-evaluator.js +39 -4
  706. package/dist/triggers/condition-evaluator.js.map +1 -1
  707. package/dist/triggers/dispatcher.d.ts.map +1 -1
  708. package/dist/triggers/dispatcher.js +67 -4
  709. package/dist/triggers/dispatcher.js.map +1 -1
  710. package/dist/vite/action-types-plugin.d.ts.map +1 -1
  711. package/dist/vite/action-types-plugin.js +8 -5
  712. package/dist/vite/action-types-plugin.js.map +1 -1
  713. package/dist/vite/client.d.ts +2 -0
  714. package/dist/vite/client.d.ts.map +1 -1
  715. package/dist/vite/client.js +216 -4
  716. package/dist/vite/client.js.map +1 -1
  717. package/docs/content/authentication.md +27 -12
  718. package/docs/content/drop-in-agent.md +2 -2
  719. package/docs/content/messaging.md +195 -155
  720. package/docs/content/onboarding.md +82 -12
  721. package/docs/content/template-analytics.md +65 -59
  722. package/docs/content/template-clips.md +7 -9
  723. package/docs/content/template-design.md +55 -0
  724. package/docs/content/template-dispatch.md +13 -0
  725. package/docs/content/template-forms.md +7 -6
  726. package/docs/content/template-mail.md +78 -80
  727. package/package.json +2 -1
  728. package/src/templates/default/.agents/skills/delegate-to-agent/SKILL.md +54 -0
  729. package/src/templates/default/app/root.tsx +1 -1
  730. package/src/templates/default/app/routes/_index.tsx +6 -1
  731. package/src/templates/default/public/favicon.svg +13 -0
  732. package/src/templates/default/public/icon-180.svg +12 -3
  733. package/src/templates/default/public/icon-192.svg +12 -3
  734. package/src/templates/default/public/icon-512.svg +12 -3
  735. package/src/templates/workspace-core/package.json +22 -4
  736. package/src/templates/workspace-core/src/credentials.ts +32 -5
  737. package/src/templates/workspace-core/tsconfig.json +4 -1
@@ -1,4 +1,5 @@
1
1
  import { createTool, getTool, updateTool, updateToolContent } from "./store.js";
2
+ import { addToolSlotTarget, installToolSlot, uninstallToolSlot, listToolsForSlot, listSlotsForTool, } from "./slots/store.js";
2
3
  export function createToolActionEntries() {
3
4
  return {
4
5
  "create-tool": {
@@ -122,6 +123,135 @@ export function createToolActionEntries() {
122
123
  return { ok: true, tool: result };
123
124
  },
124
125
  },
126
+ "add-tool-slot-target": {
127
+ tool: {
128
+ description: 'Declare that a tool can render in a UI extension-point slot of an app (e.g. "mail.contact-sidebar.bottom"). Apps drop ExtensionSlot components in their UI; this action registers a tool as installable into one of those slots. Slot IDs follow the convention <app>.<area>.<position>. Caller must have editor access to the tool.',
129
+ parameters: {
130
+ type: "object",
131
+ properties: {
132
+ toolId: { type: "string", description: "Tool id." },
133
+ slotId: {
134
+ type: "string",
135
+ description: 'Slot identifier — e.g. "mail.contact-sidebar.bottom".',
136
+ },
137
+ config: {
138
+ type: "string",
139
+ description: "Optional JSON string with slot-specific config (defaults, hints, etc.).",
140
+ },
141
+ },
142
+ required: ["toolId", "slotId"],
143
+ },
144
+ },
145
+ run: async (args) => {
146
+ const toolId = String(args?.toolId ?? "").trim();
147
+ const slotId = String(args?.slotId ?? "").trim();
148
+ if (!toolId)
149
+ return "Error: toolId is required.";
150
+ if (!slotId)
151
+ return "Error: slotId is required.";
152
+ const row = await addToolSlotTarget(toolId, slotId, args?.config ? String(args.config) : undefined);
153
+ return { ok: true, slot: row };
154
+ },
155
+ },
156
+ "install-extension": {
157
+ tool: {
158
+ description: "Install a tool as a widget in an extension-point slot for the current user. The tool must already declare the slot via add-tool-slot-target. Per-user installation — only affects the calling user's view. Use after creating a tool that targets a slot, or when the user asks to add an existing widget to a slot.",
159
+ parameters: {
160
+ type: "object",
161
+ properties: {
162
+ toolId: { type: "string", description: "Tool id to install." },
163
+ slotId: {
164
+ type: "string",
165
+ description: 'Slot identifier — e.g. "mail.contact-sidebar.bottom".',
166
+ },
167
+ position: {
168
+ type: "number",
169
+ description: "Optional integer position within the slot (lower = earlier). Defaults to end.",
170
+ },
171
+ config: {
172
+ type: "string",
173
+ description: "Optional JSON string with per-install config (overrides, settings).",
174
+ },
175
+ },
176
+ required: ["toolId", "slotId"],
177
+ },
178
+ },
179
+ run: async (args) => {
180
+ const toolId = String(args?.toolId ?? "").trim();
181
+ const slotId = String(args?.slotId ?? "").trim();
182
+ if (!toolId)
183
+ return "Error: toolId is required.";
184
+ if (!slotId)
185
+ return "Error: slotId is required.";
186
+ const position = args?.position !== undefined && args.position !== null
187
+ ? Number(args.position)
188
+ : undefined;
189
+ const row = await installToolSlot(toolId, slotId, {
190
+ position: Number.isFinite(position) ? position : undefined,
191
+ config: args?.config ? String(args.config) : undefined,
192
+ });
193
+ return { ok: true, install: row };
194
+ },
195
+ },
196
+ "uninstall-extension": {
197
+ tool: {
198
+ description: "Remove a tool from an extension-point slot for the current user. Does not delete the tool itself.",
199
+ parameters: {
200
+ type: "object",
201
+ properties: {
202
+ toolId: { type: "string", description: "Tool id." },
203
+ slotId: { type: "string", description: "Slot identifier." },
204
+ },
205
+ required: ["toolId", "slotId"],
206
+ },
207
+ },
208
+ run: async (args) => {
209
+ const toolId = String(args?.toolId ?? "").trim();
210
+ const slotId = String(args?.slotId ?? "").trim();
211
+ if (!toolId)
212
+ return "Error: toolId is required.";
213
+ if (!slotId)
214
+ return "Error: slotId is required.";
215
+ await uninstallToolSlot(toolId, slotId);
216
+ return { ok: true };
217
+ },
218
+ },
219
+ "list-tools-for-slot": {
220
+ tool: {
221
+ description: "List tools the current user has access to that declare a given extension-point slot. Use to discover what's available to install into a slot the user mentioned.",
222
+ parameters: {
223
+ type: "object",
224
+ properties: {
225
+ slotId: { type: "string", description: "Slot identifier." },
226
+ },
227
+ required: ["slotId"],
228
+ },
229
+ },
230
+ run: async (args) => {
231
+ const slotId = String(args?.slotId ?? "").trim();
232
+ if (!slotId)
233
+ return "Error: slotId is required.";
234
+ return { tools: await listToolsForSlot(slotId) };
235
+ },
236
+ },
237
+ "list-tool-slots": {
238
+ tool: {
239
+ description: "List the extension-point slots a specific tool declares it can render in. Caller must have viewer access to the tool.",
240
+ parameters: {
241
+ type: "object",
242
+ properties: {
243
+ toolId: { type: "string", description: "Tool id." },
244
+ },
245
+ required: ["toolId"],
246
+ },
247
+ },
248
+ run: async (args) => {
249
+ const toolId = String(args?.toolId ?? "").trim();
250
+ if (!toolId)
251
+ return "Error: toolId is required.";
252
+ return { slots: await listSlotsForTool(toolId) };
253
+ },
254
+ },
125
255
  };
126
256
  }
127
257
  function parsePatches(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/tools/actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/tools/actions.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ export interface FetchToolOptions {
11
11
  resolveKeys?: (text: string) => Promise<{
12
12
  resolved: string;
13
13
  usedKeys: string[];
14
+ secretValues?: string[];
14
15
  }>;
15
16
  /** Validate URL against per-key allowlists. */
16
17
  validateUrl?: (url: string, usedKeys: string[]) => Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-tool.d.ts","sourceRoot":"","sources":["../../src/tools/fetch-tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAKhE,MAAM,WAAW,gBAAgB;IAC/B,6EAA6E;IAC7E,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QACtC,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC,CAAC;IACH,+CAA+C;IAC/C,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACrE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,GAAE,gBAAqB,GAC1B,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAiK7B"}
1
+ {"version":3,"file":"fetch-tool.d.ts","sourceRoot":"","sources":["../../src/tools/fetch-tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAchE,MAAM,WAAW,gBAAgB;IAC/B,6EAA6E;IAC7E,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QACtC,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC,CAAC;IACH,+CAA+C;IAC/C,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACrE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,GAAE,gBAAqB,GAC1B,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAgM7B"}
@@ -5,8 +5,9 @@
5
5
  * Values are resolved server-side AFTER the model emits the tool call —
6
6
  * the raw secret never enters the model's context.
7
7
  */
8
+ import { collectSecretValues, MAX_TOOL_PROXY_RESPONSE_SIZE, normalizeToolProxyMethod, readResponseTextWithLimit, redactSecrets, redactString, sanitizeOutboundHeaders, } from "./proxy-security.js";
9
+ import { isBlockedToolUrlWithDns } from "./url-safety.js";
8
10
  const DEFAULT_TIMEOUT_MS = 15_000;
9
- const MAX_RESPONSE_SIZE = 1024 * 1024; // 1 MB
10
11
  /**
11
12
  * Create the fetch tool entry for the agent tool registry.
12
13
  */
@@ -46,7 +47,10 @@ export function createFetchToolEntry(opts = {}) {
46
47
  run: async (args) => {
47
48
  const startTime = Date.now();
48
49
  const rawUrl = args.url;
49
- const method = (args.method || "GET").toUpperCase();
50
+ const method = normalizeToolProxyMethod(args.method || "GET");
51
+ if (!method) {
52
+ return "Unsupported HTTP method. Allowed methods: GET, POST, PUT, PATCH, DELETE, HEAD.";
53
+ }
50
54
  const rawHeaders = args.headers || "{}";
51
55
  const rawBody = args.body;
52
56
  const timeoutMs = Math.min(Number(args.timeout_ms) || DEFAULT_TIMEOUT_MS, 30_000);
@@ -55,24 +59,33 @@ export function createFetchToolEntry(opts = {}) {
55
59
  let resolvedHeaders = rawHeaders;
56
60
  let resolvedBody = rawBody;
57
61
  const allUsedKeys = [];
62
+ const allSecretValues = [];
58
63
  if (opts.resolveKeys) {
59
64
  try {
60
65
  const urlResult = await opts.resolveKeys(rawUrl);
61
66
  resolvedUrl = urlResult.resolved;
62
67
  allUsedKeys.push(...urlResult.usedKeys);
68
+ allSecretValues.push(...(urlResult.secretValues ?? []));
63
69
  const headerResult = await opts.resolveKeys(rawHeaders);
64
70
  resolvedHeaders = headerResult.resolved;
65
71
  allUsedKeys.push(...headerResult.usedKeys);
72
+ allSecretValues.push(...(headerResult.secretValues ?? []));
66
73
  if (rawBody) {
67
74
  const bodyResult = await opts.resolveKeys(rawBody);
68
75
  resolvedBody = bodyResult.resolved;
69
76
  allUsedKeys.push(...bodyResult.usedKeys);
77
+ allSecretValues.push(...(bodyResult.secretValues ?? []));
70
78
  }
71
79
  }
72
80
  catch (err) {
73
81
  return `Error resolving key references: ${err?.message ?? err}`;
74
82
  }
75
83
  }
84
+ const secretValues = collectSecretValues(allSecretValues);
85
+ // Block SSRF targets regardless of key usage
86
+ if (await isBlockedToolUrlWithDns(resolvedUrl)) {
87
+ return `Requests to private/internal addresses are not allowed: "${rawUrl}".`;
88
+ }
76
89
  // Validate URL against per-key allowlists
77
90
  if (opts.validateUrl && allUsedKeys.length > 0) {
78
91
  try {
@@ -88,7 +101,7 @@ export function createFetchToolEntry(opts = {}) {
88
101
  // Parse headers
89
102
  let headers;
90
103
  try {
91
- headers = JSON.parse(resolvedHeaders);
104
+ headers = sanitizeOutboundHeaders(JSON.parse(resolvedHeaders));
92
105
  }
93
106
  catch {
94
107
  return `Invalid headers JSON: ${rawHeaders}`;
@@ -101,6 +114,7 @@ export function createFetchToolEntry(opts = {}) {
101
114
  method,
102
115
  headers,
103
116
  signal: controller.signal,
117
+ redirect: "manual",
104
118
  };
105
119
  if (resolvedBody && ["POST", "PUT", "PATCH"].includes(method)) {
106
120
  fetchOpts.body = resolvedBody;
@@ -110,24 +124,31 @@ export function createFetchToolEntry(opts = {}) {
110
124
  }
111
125
  const response = await fetch(resolvedUrl, fetchOpts);
112
126
  const elapsed = Date.now() - startTime;
113
- // Read response with size limit
114
- const contentLength = response.headers.get("content-length");
115
- if (contentLength && Number(contentLength) > MAX_RESPONSE_SIZE) {
116
- return `Response too large (${contentLength} bytes, max ${MAX_RESPONSE_SIZE}). Status: ${response.status}.`;
127
+ if (response.status >= 300 && response.status < 400) {
128
+ const location = response.headers.get("location");
129
+ const redirectUrl = location
130
+ ? new URL(location, resolvedUrl).href
131
+ : null;
132
+ if (redirectUrl && (await isBlockedToolUrlWithDns(redirectUrl))) {
133
+ return "Redirect to private/internal address blocked.";
134
+ }
135
+ if (redirectUrl && opts.validateUrl && allUsedKeys.length > 0) {
136
+ const allowed = await opts.validateUrl(redirectUrl, allUsedKeys);
137
+ if (!allowed) {
138
+ return "Redirect URL is not in the allowlist for the referenced keys.";
139
+ }
140
+ }
141
+ return `HTTP ${response.status} ${response.statusText}\n\nRedirect: ${redirectUrl ? redactString(redirectUrl, secretValues) : "(none)"}`;
117
142
  }
118
143
  let body;
119
144
  try {
120
- const buffer = await response.arrayBuffer();
121
- if (buffer.byteLength > MAX_RESPONSE_SIZE) {
122
- body = `(response truncated — ${buffer.byteLength} bytes, max ${MAX_RESPONSE_SIZE})`;
123
- }
124
- else {
125
- body = new TextDecoder().decode(buffer);
126
- }
145
+ const result = await readResponseTextWithLimit(response, MAX_TOOL_PROXY_RESPONSE_SIZE);
146
+ body = result.text;
127
147
  }
128
148
  catch {
129
149
  body = "(could not read response body)";
130
150
  }
151
+ body = redactString(body, secretValues);
131
152
  // Truncate very long responses for the agent
132
153
  if (body.length > 8000) {
133
154
  body = body.slice(0, 8000) + "\n... (truncated)";
@@ -142,8 +163,9 @@ export function createFetchToolEntry(opts = {}) {
142
163
  console.log(`[fetch-tool] ${method} ${rawUrl} → TIMEOUT (${elapsed}ms)`);
143
164
  return `Request timed out after ${timeoutMs}ms.`;
144
165
  }
145
- console.log(`[fetch-tool] ${method} ${rawUrl} → ERROR: ${err?.message} (${elapsed}ms)`);
146
- return `Request failed: ${err?.message ?? err}`;
166
+ const message = redactSecrets(err?.message ?? String(err), secretValues);
167
+ console.log(`[fetch-tool] ${method} ${rawUrl} → ERROR: ${message} (${elapsed}ms)`);
168
+ return `Request failed: ${message}`;
147
169
  }
148
170
  finally {
149
171
  clearTimeout(timeout);
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-tool.js","sourceRoot":"","sources":["../../src/tools/fetch-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch-tool.js","sourceRoot":"","sources":["../../src/tools/fetch-tool.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,44 @@
1
- export declare function buildToolHtml(content: string, themeVars: string, isDark: boolean, toolId?: string): string;
1
+ export declare const TOOL_IFRAME_CSP = "default-src 'none'; script-src 'self' https://cdn.jsdelivr.net 'unsafe-eval' 'unsafe-inline'; style-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net https://fonts.googleapis.com; font-src https://fonts.gstatic.com; connect-src 'self'; img-src 'self' data: blob:; media-src 'self' data: blob:; frame-src 'none'; object-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'self';";
2
+ /**
3
+ * SECURITY — TOOL CONTENT IS UNTRUSTED.
4
+ *
5
+ * `${content}` (line ~Body) interpolates raw HTML/JS authored by a user. This
6
+ * file is the boundary between framework-controlled HTML and user-controlled
7
+ * HTML. Two non-negotiable invariants for every change here:
8
+ *
9
+ * 1. The iframe MUST be rendered with a `sandbox` attribute that does NOT
10
+ * include `allow-same-origin`. The viewer (`ToolViewer.tsx`,
11
+ * `EmbeddedTool.tsx`) sets `sandbox="allow-scripts allow-forms"` — and
12
+ * that is the only acceptable shape. Adding `allow-same-origin` would
13
+ * give the tool full DOM access to the parent window via cross-frame
14
+ * script.
15
+ *
16
+ * 2. Every reachable parent action must treat the postMessage payload as
17
+ * hostile. The bridge in `iframe-bridge.ts` enforces a path allowlist,
18
+ * header sanitization, and method allowlist; do not relax those gates
19
+ * for "convenience" in this file or any caller.
20
+ *
21
+ * For the trust model rationale, see audit 05-tools-sandbox.md (C1) and the
22
+ * `tools` skill. When in doubt, fail closed.
23
+ */
24
+ export interface ToolRenderBinding {
25
+ /** Email of the user who authored / owns the tool. */
26
+ authorEmail: string;
27
+ /** Email of the user currently viewing/running the tool. */
28
+ viewerEmail: string;
29
+ /** True when viewer === author. */
30
+ isAuthor: boolean;
31
+ /**
32
+ * Resolved role for the viewer ("owner" | "admin" | "editor" | "viewer").
33
+ *
34
+ * TODO(security, audit H4): the host-side bridge does not yet gate any
35
+ * helper based on this value — every viewer gets the same powers as the
36
+ * author. The role is plumbed through so a follow-up PR can constrain
37
+ * `appAction` / `dbExec` / `toolFetch` for non-author viewers (and
38
+ * eventually require an explicit consent step before running a shared
39
+ * tool, audit C1). For now this is metadata only.
40
+ */
41
+ role: "owner" | "admin" | "editor" | "viewer";
42
+ }
43
+ export declare function buildToolHtml(content: string, themeVars: string, isDark: boolean, toolId?: string, binding?: ToolRenderBinding): string;
2
44
  //# sourceMappingURL=html-shell.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"html-shell.d.ts","sourceRoot":"","sources":["../../src/tools/html-shell.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO,EACf,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CA2XR"}
1
+ {"version":3,"file":"html-shell.d.ts","sourceRoot":"","sources":["../../src/tools/html-shell.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,8YACiX,CAAC;AAE9Y;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,WAAW,iBAAiB;IAChC,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;;;;;OASG;IACH,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;CAC/C;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO,EACf,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,iBAAiB,GAC1B,MAAM,CA8dR"}
@@ -1,12 +1,20 @@
1
- export function buildToolHtml(content, themeVars, isDark, toolId) {
1
+ export const TOOL_IFRAME_CSP = "default-src 'none'; script-src 'self' https://cdn.jsdelivr.net 'unsafe-eval' 'unsafe-inline'; style-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net https://fonts.googleapis.com; font-src https://fonts.gstatic.com; connect-src 'self'; img-src 'self' data: blob:; media-src 'self' data: blob:; frame-src 'none'; object-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'self';";
2
+ export function buildToolHtml(content, themeVars, isDark, toolId, binding) {
2
3
  const toolIdJson = JSON.stringify(toolId ?? "");
3
4
  const toolIdAttr = escapeHtmlAttribute(toolId ?? "");
5
+ const bindingJson = JSON.stringify(binding ?? {
6
+ authorEmail: "",
7
+ viewerEmail: "",
8
+ isAuthor: true,
9
+ role: "owner",
10
+ });
4
11
  return `<!DOCTYPE html>
5
12
  <html lang="en"${isDark ? ' class="dark"' : ""}>
6
13
  <head>
7
14
  <meta charset="utf-8" />
8
15
  <meta name="viewport" content="width=device-width, initial-scale=1" />
9
- <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' https://cdn.jsdelivr.net 'unsafe-eval' 'unsafe-inline'; style-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net https://fonts.googleapis.com; font-src https://fonts.gstatic.com; connect-src 'self'; img-src 'self' data: https:; form-action 'none';" />
16
+ <meta http-equiv="Content-Security-Policy" content="${TOOL_IFRAME_CSP}" />
17
+ ${binding && !binding.isAuthor ? `<meta name="agent-native-tool-author" content="${escapeHtmlAttribute(binding.authorEmail)}" />` : ""}
10
18
  <link rel="preconnect" href="https://fonts.googleapis.com" />
11
19
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
12
20
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300..700&display=swap" rel="stylesheet" />
@@ -64,8 +72,26 @@ export function buildToolHtml(content, themeVars, isDark, toolId) {
64
72
  _collectError(msg, stack);
65
73
  });
66
74
  </script>
67
- <script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
68
- <script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3/dist/cdn.min.js"></script>
75
+ <!--
76
+ SECURITY: pinned to exact patch versions + SRI integrity hashes. A
77
+ malicious republish of @tailwindcss/browser@4.x or alpinejs@3.x would
78
+ otherwise inject code into every tool. To bump these versions:
79
+ 1. npm view @tailwindcss/browser version (or alpinejs)
80
+ 2. curl -sL https://cdn.jsdelivr.net/npm/@tailwindcss/browser@<v> \
81
+ | openssl dgst -sha384 -binary | openssl base64 -A
82
+ 3. Update the URL + integrity hash below in lockstep.
83
+ -->
84
+ <script
85
+ src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4.2.4"
86
+ integrity="sha384-yNSZBFvuOWcmww494a9+1zNuvgUGEXoWkein7cxP8wHUTi3iXCU4vJ7hr3tzBCml"
87
+ crossorigin="anonymous"
88
+ ></script>
89
+ <script
90
+ defer
91
+ src="https://cdn.jsdelivr.net/npm/alpinejs@3.15.11/dist/cdn.min.js"
92
+ integrity="sha384-WPtu0YHhJ3arcykfnv1JgUffWDSKRnqnDeTpJUbOc2os2moEmLkIdaeR0trPN4be"
93
+ crossorigin="anonymous"
94
+ ></script>
69
95
  <style>${themeVars}</style>
70
96
  <style type="text/tailwindcss">
71
97
  @custom-variant dark (&:where(.dark, .dark *));
@@ -111,6 +137,7 @@ export function buildToolHtml(content, themeVars, isDark, toolId) {
111
137
  var _toolPendingRequests = {};
112
138
 
113
139
  window.addEventListener('message', function(event) {
140
+ if (event.source !== window.parent) return;
114
141
  var message = event.data || {};
115
142
  if (message.type !== 'agent-native-tool-response') return;
116
143
  var pending = _toolPendingRequests[message.requestId];
@@ -242,6 +269,24 @@ export function buildToolHtml(content, themeVars, isDark, toolId) {
242
269
  }
243
270
 
244
271
  var _toolId = ${toolIdJson};
272
+ var _toolBinding = ${bindingJson};
273
+ window.toolBinding = _toolBinding;
274
+ // SECURITY: when the viewer is not the author of this tool, emit a clear
275
+ // console warning. The bridge currently runs every helper with the
276
+ // viewer's session — a malicious shared tool can call any action, read
277
+ // any owned table row in scope, and resolve any user-scope secret. A
278
+ // full consent step is tracked as TODO C1 in audit 05-tools-sandbox.md.
279
+ if (_toolBinding && !_toolBinding.isAuthor) {
280
+ try {
281
+ console.warn(
282
+ '[agent-native] Shared tool — running with viewer\\'s session. ' +
283
+ 'Author: ' + (_toolBinding.authorEmail || '<unknown>') + '. ' +
284
+ 'Bridge calls (appAction, dbExec, toolFetch) execute under ' +
285
+ 'your account; they are gated by your permissions, not the ' +
286
+ 'author\\'s. Do not run untrusted shared tools.',
287
+ );
288
+ } catch (_) {}
289
+ }
245
290
 
246
291
  var toolData = {
247
292
  async list(collection, opts) {
@@ -301,7 +346,60 @@ export function buildToolHtml(content, themeVars, isDark, toolId) {
301
346
  }
302
347
  </style>
303
348
  <script>
349
+ // Extension-point slot context: when a tool is rendered embedded inside an
350
+ // ExtensionSlot, the host pushes a context object via postMessage. Tools
351
+ // read it synchronously via window.slotContext or subscribe to changes
352
+ // via window.onSlotContext(fn). When rendered full-page (no ?slot= param),
353
+ // slotContext stays null and tools branch on that.
354
+ window.slotContext = null;
355
+ var _slotContextSubscribers = [];
356
+ window.onSlotContext = function(fn) {
357
+ _slotContextSubscribers.push(fn);
358
+ if (window.slotContext !== null) {
359
+ try { fn(window.slotContext); } catch(_) {}
360
+ }
361
+ return function() {
362
+ _slotContextSubscribers = _slotContextSubscribers.filter(function(f) { return f !== fn; });
363
+ };
364
+ };
365
+ window.addEventListener('message', function(event) {
366
+ if (event.source !== window.parent) return;
367
+ var msg = event.data;
368
+ if (!msg || msg.type !== 'agent-native-slot-context') return;
369
+ window.slotContext = msg.context || {};
370
+ _slotContextSubscribers.forEach(function(fn) {
371
+ try { fn(window.slotContext); } catch(_) {}
372
+ });
373
+ });
374
+
375
+ // Auto-resize the iframe to its content when running in slot mode. The
376
+ // host listens for agent-native-tool-resize and adjusts the iframe height.
377
+ if (new URLSearchParams(location.search).get('slot')) {
378
+ var _lastH = 0;
379
+ var _reportHeight = function() {
380
+ var h = Math.max(
381
+ document.documentElement.scrollHeight,
382
+ document.body ? document.body.scrollHeight : 0,
383
+ );
384
+ if (h !== _lastH) {
385
+ _lastH = h;
386
+ window.parent.postMessage({ type: 'agent-native-tool-resize', height: h }, '*');
387
+ }
388
+ };
389
+ if (typeof ResizeObserver !== 'undefined') {
390
+ var _ro = new ResizeObserver(_reportHeight);
391
+ document.addEventListener('DOMContentLoaded', function() {
392
+ _ro.observe(document.documentElement);
393
+ if (document.body) _ro.observe(document.body);
394
+ });
395
+ }
396
+ // Initial reports — Alpine takes a tick to render after DOMContentLoaded.
397
+ setTimeout(_reportHeight, 50);
398
+ setTimeout(_reportHeight, 250);
399
+ }
400
+
304
401
  window.addEventListener('message', function(event) {
402
+ if (event.source !== window.parent) return;
305
403
  var msg = event.data;
306
404
  if (!msg || msg.type !== 'agent-native-theme-update') return;
307
405
  var root = document.documentElement;
@@ -1 +1 @@
1
- {"version":3,"file":"html-shell.js","sourceRoot":"","sources":["../../src/tools/html-shell.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,aAAa,CAC3B,OAAe,EACf,SAAiB,EACjB,MAAe,EACf,MAAe;IAEf,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAErD,OAAO;iBACQ,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAgEnC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA+KA,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA2HtB,MAAM,CAAC,CAAC,CAAC,kBAAkB,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE;GAClD,OAAO;;;;;;;;;;SAUD,CAAC;AACV,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,KAAK;SACT,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"html-shell.js","sourceRoot":"","sources":["../../src/tools/html-shell.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAC1B,2YAA2Y,CAAC;AA6C9Y,MAAM,UAAU,aAAa,CAC3B,OAAe,EACf,SAAiB,EACjB,MAAe,EACf,MAAe,EACf,OAA2B;IAE3B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAChC,OAAO,IAAI;QACT,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,EAAE;QACf,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,OAAO;KACd,CACF,CAAC;IAEF,OAAO;iBACQ,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;;;;wDAIU,eAAe;IACnE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,kDAAkD,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA8E7H,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAgLA,UAAU;yBACL,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAiM5B,MAAM,CAAC,CAAC,CAAC,kBAAkB,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE;GAClD,OAAO;;;;;;;;;;SAUD,CAAC;AACV,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,KAAK;SACT,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,12 @@
1
+ export declare const MAX_TOOL_PROXY_RESPONSE_SIZE: number;
2
+ export declare function normalizeToolProxyMethod(value: unknown): string | null;
3
+ export declare function sanitizeOutboundHeaders(value: unknown): Record<string, string>;
4
+ export declare function collectSecretValues(...groups: Array<Array<string> | undefined>): string[];
5
+ export declare function redactSecrets<T>(value: T, secretValues: string[]): T;
6
+ export declare function redactString(text: string, secretValues: string[]): string;
7
+ export declare function readResponseTextWithLimit(response: Response, maxBytes?: number): Promise<{
8
+ text: string;
9
+ truncated: boolean;
10
+ size: number;
11
+ }>;
12
+ //# sourceMappingURL=proxy-security.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy-security.d.ts","sourceRoot":"","sources":["../../src/tools/proxy-security.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,4BAA4B,QAAc,CAAC;AAWxD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAGtE;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,GACb,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAexB;AAED,wBAAgB,mBAAmB,CACjC,GAAG,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,GAC1C,MAAM,EAAE,CAQV;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,CAiBpE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,CAQzE;AAaD,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,QAAQ,EAClB,QAAQ,SAA+B,GACtC,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAyD7D"}