@agent-native/core 0.7.14 → 0.7.16

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 (803) 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 +180 -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/action.d.ts +16 -0
  13. package/dist/action.d.ts.map +1 -1
  14. package/dist/action.js +11 -0
  15. package/dist/action.js.map +1 -1
  16. package/dist/agent/default-model.d.ts +21 -0
  17. package/dist/agent/default-model.d.ts.map +1 -0
  18. package/dist/agent/default-model.js +21 -0
  19. package/dist/agent/default-model.js.map +1 -0
  20. package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
  21. package/dist/agent/engine/ai-sdk-engine.js +7 -4
  22. package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
  23. package/dist/agent/engine/anthropic-engine.d.ts +1 -1
  24. package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
  25. package/dist/agent/engine/anthropic-engine.js +10 -4
  26. package/dist/agent/engine/anthropic-engine.js.map +1 -1
  27. package/dist/agent/engine/builder-engine.d.ts.map +1 -1
  28. package/dist/agent/engine/builder-engine.js +4 -1
  29. package/dist/agent/engine/builder-engine.js.map +1 -1
  30. package/dist/agent/engine/builtin.js +1 -1
  31. package/dist/agent/engine/builtin.js.map +1 -1
  32. package/dist/agent/engine/registry.d.ts +27 -7
  33. package/dist/agent/engine/registry.d.ts.map +1 -1
  34. package/dist/agent/engine/registry.js +101 -20
  35. package/dist/agent/engine/registry.js.map +1 -1
  36. package/dist/agent/index.d.ts +1 -0
  37. package/dist/agent/index.d.ts.map +1 -1
  38. package/dist/agent/index.js +1 -0
  39. package/dist/agent/index.js.map +1 -1
  40. package/dist/agent/production-agent.d.ts +32 -7
  41. package/dist/agent/production-agent.d.ts.map +1 -1
  42. package/dist/agent/production-agent.js +230 -70
  43. package/dist/agent/production-agent.js.map +1 -1
  44. package/dist/agent/run-manager.d.ts.map +1 -1
  45. package/dist/agent/run-manager.js +0 -3
  46. package/dist/agent/run-manager.js.map +1 -1
  47. package/dist/agent/types.d.ts +0 -4
  48. package/dist/agent/types.d.ts.map +1 -1
  49. package/dist/application-state/handlers.d.ts.map +1 -1
  50. package/dist/application-state/handlers.js +10 -6
  51. package/dist/application-state/handlers.js.map +1 -1
  52. package/dist/application-state/script-helpers.d.ts +1 -1
  53. package/dist/application-state/script-helpers.d.ts.map +1 -1
  54. package/dist/application-state/script-helpers.js +12 -8
  55. package/dist/application-state/script-helpers.js.map +1 -1
  56. package/dist/application-state/store.d.ts.map +1 -1
  57. package/dist/application-state/store.js +19 -10
  58. package/dist/application-state/store.js.map +1 -1
  59. package/dist/chat-threads/store.d.ts.map +1 -1
  60. package/dist/chat-threads/store.js +4 -1
  61. package/dist/chat-threads/store.js.map +1 -1
  62. package/dist/cli/create.d.ts +3 -1
  63. package/dist/cli/create.d.ts.map +1 -1
  64. package/dist/cli/create.js +106 -16
  65. package/dist/cli/create.js.map +1 -1
  66. package/dist/cli/index.js +97 -39
  67. package/dist/cli/index.js.map +1 -1
  68. package/dist/cli/templates-meta.d.ts +4 -0
  69. package/dist/cli/templates-meta.d.ts.map +1 -1
  70. package/dist/cli/templates-meta.js +56 -12
  71. package/dist/cli/templates-meta.js.map +1 -1
  72. package/dist/cli/workspacify.d.ts +2 -0
  73. package/dist/cli/workspacify.d.ts.map +1 -1
  74. package/dist/cli/workspacify.js +5 -4
  75. package/dist/cli/workspacify.js.map +1 -1
  76. package/dist/client/AgentPanel.d.ts +5 -2
  77. package/dist/client/AgentPanel.d.ts.map +1 -1
  78. package/dist/client/AgentPanel.js +64 -25
  79. package/dist/client/AgentPanel.js.map +1 -1
  80. package/dist/client/AgentTaskCard.d.ts.map +1 -1
  81. package/dist/client/AgentTaskCard.js +3 -2
  82. package/dist/client/AgentTaskCard.js.map +1 -1
  83. package/dist/client/AssistantChat.d.ts +0 -6
  84. package/dist/client/AssistantChat.d.ts.map +1 -1
  85. package/dist/client/AssistantChat.js +98 -100
  86. package/dist/client/AssistantChat.js.map +1 -1
  87. package/dist/client/ConnectBuilderCard.d.ts.map +1 -1
  88. package/dist/client/ConnectBuilderCard.js +2 -1
  89. package/dist/client/ConnectBuilderCard.js.map +1 -1
  90. package/dist/client/DefaultSpinner.d.ts +1 -1
  91. package/dist/client/DefaultSpinner.d.ts.map +1 -1
  92. package/dist/client/DefaultSpinner.js +2 -9
  93. package/dist/client/DefaultSpinner.js.map +1 -1
  94. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  95. package/dist/client/MultiTabAssistantChat.js +24 -22
  96. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  97. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  98. package/dist/client/agent-chat-adapter.js +4 -3
  99. package/dist/client/agent-chat-adapter.js.map +1 -1
  100. package/dist/client/agent-chat.d.ts.map +1 -1
  101. package/dist/client/agent-chat.js +6 -4
  102. package/dist/client/agent-chat.js.map +1 -1
  103. package/dist/client/analytics.d.ts.map +1 -1
  104. package/dist/client/analytics.js +70 -1
  105. package/dist/client/analytics.js.map +1 -1
  106. package/dist/client/api-path.d.ts +5 -0
  107. package/dist/client/api-path.d.ts.map +1 -0
  108. package/dist/client/api-path.js +48 -0
  109. package/dist/client/api-path.js.map +1 -0
  110. package/dist/client/components/ApiKeySettings.d.ts.map +1 -1
  111. package/dist/client/components/ApiKeySettings.js +3 -2
  112. package/dist/client/components/ApiKeySettings.js.map +1 -1
  113. package/dist/client/components/CodeRequiredDialog.d.ts.map +1 -1
  114. package/dist/client/components/CodeRequiredDialog.js +3 -2
  115. package/dist/client/components/CodeRequiredDialog.js.map +1 -1
  116. package/dist/client/composer/TiptapComposer.d.ts +3 -1
  117. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  118. package/dist/client/composer/TiptapComposer.js +17 -9
  119. package/dist/client/composer/TiptapComposer.js.map +1 -1
  120. package/dist/client/composer/draft-key.d.ts +2 -0
  121. package/dist/client/composer/draft-key.d.ts.map +1 -0
  122. package/dist/client/composer/draft-key.js +8 -0
  123. package/dist/client/composer/draft-key.js.map +1 -0
  124. package/dist/client/composer/use-file-search.d.ts.map +1 -1
  125. package/dist/client/composer/use-file-search.js +2 -1
  126. package/dist/client/composer/use-file-search.js.map +1 -1
  127. package/dist/client/composer/use-mention-search.d.ts.map +1 -1
  128. package/dist/client/composer/use-mention-search.js +2 -1
  129. package/dist/client/composer/use-mention-search.js.map +1 -1
  130. package/dist/client/composer/use-skills.d.ts.map +1 -1
  131. package/dist/client/composer/use-skills.js +2 -1
  132. package/dist/client/composer/use-skills.js.map +1 -1
  133. package/dist/client/composer/useVoiceDictation.d.ts +1 -1
  134. package/dist/client/composer/useVoiceDictation.d.ts.map +1 -1
  135. package/dist/client/composer/useVoiceDictation.js +16 -8
  136. package/dist/client/composer/useVoiceDictation.js.map +1 -1
  137. package/dist/client/dev-mode.d.ts +14 -0
  138. package/dist/client/dev-mode.d.ts.map +1 -0
  139. package/dist/client/dev-mode.js +14 -0
  140. package/dist/client/dev-mode.js.map +1 -0
  141. package/dist/client/dev-overlay/DevOverlay.d.ts +26 -0
  142. package/dist/client/dev-overlay/DevOverlay.d.ts.map +1 -0
  143. package/dist/client/dev-overlay/DevOverlay.js +315 -0
  144. package/dist/client/dev-overlay/DevOverlay.js.map +1 -0
  145. package/dist/client/dev-overlay/builtins.d.ts +6 -0
  146. package/dist/client/dev-overlay/builtins.d.ts.map +1 -0
  147. package/dist/client/dev-overlay/builtins.js +35 -0
  148. package/dist/client/dev-overlay/builtins.js.map +1 -0
  149. package/dist/client/dev-overlay/index.d.ts +6 -0
  150. package/dist/client/dev-overlay/index.d.ts.map +1 -0
  151. package/dist/client/dev-overlay/index.js +5 -0
  152. package/dist/client/dev-overlay/index.js.map +1 -0
  153. package/dist/client/dev-overlay/registry.d.ts +13 -0
  154. package/dist/client/dev-overlay/registry.d.ts.map +1 -0
  155. package/dist/client/dev-overlay/registry.js +63 -0
  156. package/dist/client/dev-overlay/registry.js.map +1 -0
  157. package/dist/client/dev-overlay/types.d.ts +56 -0
  158. package/dist/client/dev-overlay/types.d.ts.map +1 -0
  159. package/dist/client/dev-overlay/types.js +9 -0
  160. package/dist/client/dev-overlay/types.js.map +1 -0
  161. package/dist/client/dev-overlay/use-dev-option.d.ts +12 -0
  162. package/dist/client/dev-overlay/use-dev-option.d.ts.map +1 -0
  163. package/dist/client/dev-overlay/use-dev-option.js +73 -0
  164. package/dist/client/dev-overlay/use-dev-option.js.map +1 -0
  165. package/dist/client/dev-overlay/use-dev-overlay-shortcut.d.ts +6 -0
  166. package/dist/client/dev-overlay/use-dev-overlay-shortcut.d.ts.map +1 -0
  167. package/dist/client/dev-overlay/use-dev-overlay-shortcut.js +29 -0
  168. package/dist/client/dev-overlay/use-dev-overlay-shortcut.js.map +1 -0
  169. package/dist/client/frame-protocol.d.ts +61 -10
  170. package/dist/client/frame-protocol.d.ts.map +1 -1
  171. package/dist/client/frame.d.ts +1 -0
  172. package/dist/client/frame.d.ts.map +1 -1
  173. package/dist/client/frame.js +37 -16
  174. package/dist/client/frame.js.map +1 -1
  175. package/dist/client/index.d.ts +5 -1
  176. package/dist/client/index.d.ts.map +1 -1
  177. package/dist/client/index.js +5 -1
  178. package/dist/client/index.js.map +1 -1
  179. package/dist/client/integrations/IntegrationCard.d.ts.map +1 -1
  180. package/dist/client/integrations/IntegrationCard.js +3 -2
  181. package/dist/client/integrations/IntegrationCard.js.map +1 -1
  182. package/dist/client/integrations/IntegrationsPanel.d.ts.map +1 -1
  183. package/dist/client/integrations/IntegrationsPanel.js +3 -2
  184. package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
  185. package/dist/client/integrations/useIntegrationStatus.d.ts.map +1 -1
  186. package/dist/client/integrations/useIntegrationStatus.js +2 -1
  187. package/dist/client/integrations/useIntegrationStatus.js.map +1 -1
  188. package/dist/client/notifications/NotificationsBell.d.ts.map +1 -1
  189. package/dist/client/notifications/NotificationsBell.js +26 -8
  190. package/dist/client/notifications/NotificationsBell.js.map +1 -1
  191. package/dist/client/observability/ThumbsFeedback.d.ts.map +1 -1
  192. package/dist/client/observability/ThumbsFeedback.js +2 -1
  193. package/dist/client/observability/ThumbsFeedback.js.map +1 -1
  194. package/dist/client/observability/useObservability.d.ts.map +1 -1
  195. package/dist/client/observability/useObservability.js +2 -1
  196. package/dist/client/observability/useObservability.js.map +1 -1
  197. package/dist/client/onboarding/OnboardingPanel.d.ts +0 -7
  198. package/dist/client/onboarding/OnboardingPanel.d.ts.map +1 -1
  199. package/dist/client/onboarding/OnboardingPanel.js +20 -10
  200. package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
  201. package/dist/client/onboarding/index.d.ts +1 -0
  202. package/dist/client/onboarding/index.d.ts.map +1 -1
  203. package/dist/client/onboarding/index.js +1 -0
  204. package/dist/client/onboarding/index.js.map +1 -1
  205. package/dist/client/onboarding/use-onboarding.d.ts +1 -7
  206. package/dist/client/onboarding/use-onboarding.d.ts.map +1 -1
  207. package/dist/client/onboarding/use-onboarding.js +27 -13
  208. package/dist/client/onboarding/use-onboarding.js.map +1 -1
  209. package/dist/client/onboarding/use-preview-mode.d.ts +10 -0
  210. package/dist/client/onboarding/use-preview-mode.d.ts.map +1 -0
  211. package/dist/client/onboarding/use-preview-mode.js +35 -0
  212. package/dist/client/onboarding/use-preview-mode.js.map +1 -0
  213. package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
  214. package/dist/client/org/OrgSwitcher.js +2 -1
  215. package/dist/client/org/OrgSwitcher.js.map +1 -1
  216. package/dist/client/org/TeamPage.d.ts.map +1 -1
  217. package/dist/client/org/TeamPage.js +7 -5
  218. package/dist/client/org/TeamPage.js.map +1 -1
  219. package/dist/client/org/hooks.d.ts.map +1 -1
  220. package/dist/client/org/hooks.js +2 -1
  221. package/dist/client/org/hooks.js.map +1 -1
  222. package/dist/client/progress/RunsTray.d.ts.map +1 -1
  223. package/dist/client/progress/RunsTray.js +2 -1
  224. package/dist/client/progress/RunsTray.js.map +1 -1
  225. package/dist/client/resources/McpServerDetail.d.ts +0 -8
  226. package/dist/client/resources/McpServerDetail.d.ts.map +1 -1
  227. package/dist/client/resources/McpServerDetail.js +6 -1
  228. package/dist/client/resources/McpServerDetail.js.map +1 -1
  229. package/dist/client/resources/ResourceEditor.d.ts.map +1 -1
  230. package/dist/client/resources/ResourceEditor.js +2 -1
  231. package/dist/client/resources/ResourceEditor.js.map +1 -1
  232. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  233. package/dist/client/resources/ResourcesPanel.js +2 -1
  234. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  235. package/dist/client/resources/use-mcp-servers.d.ts.map +1 -1
  236. package/dist/client/resources/use-mcp-servers.js +7 -2
  237. package/dist/client/resources/use-mcp-servers.js.map +1 -1
  238. package/dist/client/resources/use-resources.d.ts.map +1 -1
  239. package/dist/client/resources/use-resources.js +9 -7
  240. package/dist/client/resources/use-resources.js.map +1 -1
  241. package/dist/client/settings/AgentsSection.d.ts.map +1 -1
  242. package/dist/client/settings/AgentsSection.js +7 -5
  243. package/dist/client/settings/AgentsSection.js.map +1 -1
  244. package/dist/client/settings/AutomationsSection.d.ts.map +1 -1
  245. package/dist/client/settings/AutomationsSection.js +9 -5
  246. package/dist/client/settings/AutomationsSection.js.map +1 -1
  247. package/dist/client/settings/BackgroundAgentSection.d.ts.map +1 -1
  248. package/dist/client/settings/BackgroundAgentSection.js +2 -1
  249. package/dist/client/settings/BackgroundAgentSection.js.map +1 -1
  250. package/dist/client/settings/SecretsSection.d.ts.map +1 -1
  251. package/dist/client/settings/SecretsSection.js +12 -4
  252. package/dist/client/settings/SecretsSection.js.map +1 -1
  253. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  254. package/dist/client/settings/SettingsPanel.js +15 -23
  255. package/dist/client/settings/SettingsPanel.js.map +1 -1
  256. package/dist/client/settings/UsageSection.d.ts.map +1 -1
  257. package/dist/client/settings/UsageSection.js +2 -1
  258. package/dist/client/settings/UsageSection.js.map +1 -1
  259. package/dist/client/settings/VoiceTranscriptionSection.d.ts +2 -4
  260. package/dist/client/settings/VoiceTranscriptionSection.d.ts.map +1 -1
  261. package/dist/client/settings/VoiceTranscriptionSection.js +66 -23
  262. package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
  263. package/dist/client/settings/useBuilderStatus.d.ts +9 -0
  264. package/dist/client/settings/useBuilderStatus.d.ts.map +1 -1
  265. package/dist/client/settings/useBuilderStatus.js +31 -3
  266. package/dist/client/settings/useBuilderStatus.js.map +1 -1
  267. package/dist/client/sharing/ShareButton.d.ts.map +1 -1
  268. package/dist/client/sharing/ShareButton.js +7 -2
  269. package/dist/client/sharing/ShareButton.js.map +1 -1
  270. package/dist/client/sharing/ShareDialog.d.ts.map +1 -1
  271. package/dist/client/sharing/ShareDialog.js +4 -3
  272. package/dist/client/sharing/ShareDialog.js.map +1 -1
  273. package/dist/client/sse-event-processor.d.ts +1 -3
  274. package/dist/client/sse-event-processor.d.ts.map +1 -1
  275. package/dist/client/sse-event-processor.js +3 -24
  276. package/dist/client/sse-event-processor.js.map +1 -1
  277. package/dist/client/terminal/AgentTerminal.d.ts +1 -0
  278. package/dist/client/terminal/AgentTerminal.d.ts.map +1 -1
  279. package/dist/client/terminal/AgentTerminal.js +14 -10
  280. package/dist/client/terminal/AgentTerminal.js.map +1 -1
  281. package/dist/client/tools/EmbeddedTool.d.ts +20 -0
  282. package/dist/client/tools/EmbeddedTool.d.ts.map +1 -0
  283. package/dist/client/tools/EmbeddedTool.js +154 -0
  284. package/dist/client/tools/EmbeddedTool.js.map +1 -0
  285. package/dist/client/tools/ExtensionSlot.d.ts +27 -0
  286. package/dist/client/tools/ExtensionSlot.d.ts.map +1 -0
  287. package/dist/client/tools/ExtensionSlot.js +96 -0
  288. package/dist/client/tools/ExtensionSlot.js.map +1 -0
  289. package/dist/client/tools/ToolEditor.d.ts.map +1 -1
  290. package/dist/client/tools/ToolEditor.js +5 -4
  291. package/dist/client/tools/ToolEditor.js.map +1 -1
  292. package/dist/client/tools/ToolViewer.d.ts.map +1 -1
  293. package/dist/client/tools/ToolViewer.js +75 -44
  294. package/dist/client/tools/ToolViewer.js.map +1 -1
  295. package/dist/client/tools/ToolViewerPage.d.ts.map +1 -1
  296. package/dist/client/tools/ToolViewerPage.js +2 -1
  297. package/dist/client/tools/ToolViewerPage.js.map +1 -1
  298. package/dist/client/tools/ToolsListPage.d.ts.map +1 -1
  299. package/dist/client/tools/ToolsListPage.js +3 -2
  300. package/dist/client/tools/ToolsListPage.js.map +1 -1
  301. package/dist/client/tools/ToolsSidebarSection.d.ts.map +1 -1
  302. package/dist/client/tools/ToolsSidebarSection.js +4 -3
  303. package/dist/client/tools/ToolsSidebarSection.js.map +1 -1
  304. package/dist/client/tools/iframe-bridge.d.ts +38 -0
  305. package/dist/client/tools/iframe-bridge.d.ts.map +1 -0
  306. package/dist/client/tools/iframe-bridge.js +207 -0
  307. package/dist/client/tools/iframe-bridge.js.map +1 -0
  308. package/dist/client/tools/index.d.ts +2 -0
  309. package/dist/client/tools/index.d.ts.map +1 -1
  310. package/dist/client/tools/index.js +2 -0
  311. package/dist/client/tools/index.js.map +1 -1
  312. package/dist/client/use-action.d.ts.map +1 -1
  313. package/dist/client/use-action.js +2 -1
  314. package/dist/client/use-action.js.map +1 -1
  315. package/dist/client/use-agent-chat.js +2 -2
  316. package/dist/client/use-agent-chat.js.map +1 -1
  317. package/dist/client/use-avatar.d.ts.map +1 -1
  318. package/dist/client/use-avatar.js +3 -2
  319. package/dist/client/use-avatar.js.map +1 -1
  320. package/dist/client/use-builder-enabled.d.ts.map +1 -1
  321. package/dist/client/use-builder-enabled.js +2 -1
  322. package/dist/client/use-builder-enabled.js.map +1 -1
  323. package/dist/client/use-chat-threads.d.ts.map +1 -1
  324. package/dist/client/use-chat-threads.js +2 -1
  325. package/dist/client/use-chat-threads.js.map +1 -1
  326. package/dist/client/use-db-sync.d.ts.map +1 -1
  327. package/dist/client/use-db-sync.js +3 -2
  328. package/dist/client/use-db-sync.js.map +1 -1
  329. package/dist/client/use-dev-mode.d.ts.map +1 -1
  330. package/dist/client/use-dev-mode.js +2 -1
  331. package/dist/client/use-dev-mode.js.map +1 -1
  332. package/dist/client/use-send-to-agent-chat.d.ts.map +1 -1
  333. package/dist/client/use-send-to-agent-chat.js +5 -3
  334. package/dist/client/use-send-to-agent-chat.js.map +1 -1
  335. package/dist/client/use-session.d.ts.map +1 -1
  336. package/dist/client/use-session.js +2 -1
  337. package/dist/client/use-session.js.map +1 -1
  338. package/dist/client/useProductionAgent.d.ts.map +1 -1
  339. package/dist/client/useProductionAgent.js +4 -3
  340. package/dist/client/useProductionAgent.js.map +1 -1
  341. package/dist/collab/client.d.ts.map +1 -1
  342. package/dist/collab/client.js +3 -2
  343. package/dist/collab/client.js.map +1 -1
  344. package/dist/credentials/index.d.ts +27 -10
  345. package/dist/credentials/index.d.ts.map +1 -1
  346. package/dist/credentials/index.js +61 -19
  347. package/dist/credentials/index.js.map +1 -1
  348. package/dist/db/client.d.ts.map +1 -1
  349. package/dist/db/client.js +10 -1
  350. package/dist/db/client.js.map +1 -1
  351. package/dist/db/migrations.d.ts +13 -5
  352. package/dist/db/migrations.d.ts.map +1 -1
  353. package/dist/db/migrations.js +9 -2
  354. package/dist/db/migrations.js.map +1 -1
  355. package/dist/deploy/build.d.ts +12 -1
  356. package/dist/deploy/build.d.ts.map +1 -1
  357. package/dist/deploy/build.js +195 -23
  358. package/dist/deploy/build.js.map +1 -1
  359. package/dist/file-upload/registry.d.ts.map +1 -1
  360. package/dist/file-upload/registry.js +25 -1
  361. package/dist/file-upload/registry.js.map +1 -1
  362. package/dist/index.d.ts +2 -2
  363. package/dist/index.d.ts.map +1 -1
  364. package/dist/index.js +2 -2
  365. package/dist/index.js.map +1 -1
  366. package/dist/integrations/adapters/email.d.ts.map +1 -1
  367. package/dist/integrations/adapters/email.js +152 -32
  368. package/dist/integrations/adapters/email.js.map +1 -1
  369. package/dist/integrations/adapters/slack.d.ts +13 -0
  370. package/dist/integrations/adapters/slack.d.ts.map +1 -1
  371. package/dist/integrations/adapters/slack.js +302 -32
  372. package/dist/integrations/adapters/slack.js.map +1 -1
  373. package/dist/integrations/adapters/telegram.d.ts.map +1 -1
  374. package/dist/integrations/adapters/telegram.js +37 -2
  375. package/dist/integrations/adapters/telegram.js.map +1 -1
  376. package/dist/integrations/adapters/whatsapp.d.ts.map +1 -1
  377. package/dist/integrations/adapters/whatsapp.js +91 -12
  378. package/dist/integrations/adapters/whatsapp.js.map +1 -1
  379. package/dist/integrations/google-docs-poller.d.ts.map +1 -1
  380. package/dist/integrations/google-docs-poller.js +5 -2
  381. package/dist/integrations/google-docs-poller.js.map +1 -1
  382. package/dist/integrations/internal-token.d.ts.map +1 -1
  383. package/dist/integrations/internal-token.js +17 -1
  384. package/dist/integrations/internal-token.js.map +1 -1
  385. package/dist/integrations/pending-tasks-retry-job.d.ts.map +1 -1
  386. package/dist/integrations/pending-tasks-retry-job.js +23 -9
  387. package/dist/integrations/pending-tasks-retry-job.js.map +1 -1
  388. package/dist/integrations/pending-tasks-store.d.ts +16 -0
  389. package/dist/integrations/pending-tasks-store.d.ts.map +1 -1
  390. package/dist/integrations/pending-tasks-store.js +58 -5
  391. package/dist/integrations/pending-tasks-store.js.map +1 -1
  392. package/dist/integrations/plugin.d.ts.map +1 -1
  393. package/dist/integrations/plugin.js +198 -15
  394. package/dist/integrations/plugin.js.map +1 -1
  395. package/dist/integrations/types.d.ts +33 -2
  396. package/dist/integrations/types.d.ts.map +1 -1
  397. package/dist/integrations/webhook-handler.d.ts +6 -0
  398. package/dist/integrations/webhook-handler.d.ts.map +1 -1
  399. package/dist/integrations/webhook-handler.js +141 -61
  400. package/dist/integrations/webhook-handler.js.map +1 -1
  401. package/dist/jobs/cron.d.ts.map +1 -1
  402. package/dist/jobs/cron.js +12 -4
  403. package/dist/jobs/cron.js.map +1 -1
  404. package/dist/jobs/scheduler.d.ts.map +1 -1
  405. package/dist/jobs/scheduler.js +141 -16
  406. package/dist/jobs/scheduler.js.map +1 -1
  407. package/dist/jobs/tools.d.ts.map +1 -1
  408. package/dist/jobs/tools.js +94 -3
  409. package/dist/jobs/tools.js.map +1 -1
  410. package/dist/mcp/server.d.ts.map +1 -1
  411. package/dist/mcp/server.js +128 -62
  412. package/dist/mcp/server.js.map +1 -1
  413. package/dist/mcp-client/hub-routes.d.ts +14 -0
  414. package/dist/mcp-client/hub-routes.d.ts.map +1 -1
  415. package/dist/mcp-client/hub-routes.js +42 -2
  416. package/dist/mcp-client/hub-routes.js.map +1 -1
  417. package/dist/mcp-client/index.d.ts +1 -1
  418. package/dist/mcp-client/index.d.ts.map +1 -1
  419. package/dist/mcp-client/index.js +1 -1
  420. package/dist/mcp-client/index.js.map +1 -1
  421. package/dist/mcp-client/manager.d.ts.map +1 -1
  422. package/dist/mcp-client/manager.js +28 -3
  423. package/dist/mcp-client/manager.js.map +1 -1
  424. package/dist/mcp-client/remote-store.d.ts +49 -1
  425. package/dist/mcp-client/remote-store.d.ts.map +1 -1
  426. package/dist/mcp-client/remote-store.js +253 -6
  427. package/dist/mcp-client/remote-store.js.map +1 -1
  428. package/dist/mcp-client/routes.d.ts.map +1 -1
  429. package/dist/mcp-client/routes.js +11 -9
  430. package/dist/mcp-client/routes.js.map +1 -1
  431. package/dist/mcp-client/visibility.d.ts +7 -3
  432. package/dist/mcp-client/visibility.d.ts.map +1 -1
  433. package/dist/mcp-client/visibility.js +16 -7
  434. package/dist/mcp-client/visibility.js.map +1 -1
  435. package/dist/notifications/actions.d.ts.map +1 -1
  436. package/dist/notifications/actions.js +7 -1
  437. package/dist/notifications/actions.js.map +1 -1
  438. package/dist/notifications/routes.d.ts +1 -1
  439. package/dist/notifications/routes.d.ts.map +1 -1
  440. package/dist/notifications/routes.js +20 -3
  441. package/dist/notifications/routes.js.map +1 -1
  442. package/dist/notifications/store.d.ts.map +1 -1
  443. package/dist/notifications/store.js +6 -1
  444. package/dist/notifications/store.js.map +1 -1
  445. package/dist/oauth-tokens/store.d.ts +43 -2
  446. package/dist/oauth-tokens/store.d.ts.map +1 -1
  447. package/dist/oauth-tokens/store.js +83 -14
  448. package/dist/oauth-tokens/store.js.map +1 -1
  449. package/dist/observability/cleanup-job.d.ts +38 -0
  450. package/dist/observability/cleanup-job.d.ts.map +1 -0
  451. package/dist/observability/cleanup-job.js +107 -0
  452. package/dist/observability/cleanup-job.js.map +1 -0
  453. package/dist/observability/experiments.js +5 -5
  454. package/dist/observability/experiments.js.map +1 -1
  455. package/dist/observability/index.d.ts +2 -1
  456. package/dist/observability/index.d.ts.map +1 -1
  457. package/dist/observability/index.js +2 -1
  458. package/dist/observability/index.js.map +1 -1
  459. package/dist/observability/plugin.d.ts.map +1 -1
  460. package/dist/observability/plugin.js +11 -0
  461. package/dist/observability/plugin.js.map +1 -1
  462. package/dist/observability/routes.d.ts.map +1 -1
  463. package/dist/observability/routes.js +37 -8
  464. package/dist/observability/routes.js.map +1 -1
  465. package/dist/observability/store.d.ts +16 -0
  466. package/dist/observability/store.d.ts.map +1 -1
  467. package/dist/observability/store.js +54 -3
  468. package/dist/observability/store.js.map +1 -1
  469. package/dist/observability/traces.d.ts +5 -0
  470. package/dist/observability/traces.d.ts.map +1 -1
  471. package/dist/observability/traces.js +44 -1
  472. package/dist/observability/traces.js.map +1 -1
  473. package/dist/observability/types.d.ts +7 -0
  474. package/dist/observability/types.d.ts.map +1 -1
  475. package/dist/observability/types.js.map +1 -1
  476. package/dist/onboarding/default-steps.d.ts.map +1 -1
  477. package/dist/onboarding/default-steps.js +1 -2
  478. package/dist/onboarding/default-steps.js.map +1 -1
  479. package/dist/onboarding/plugin.d.ts.map +1 -1
  480. package/dist/onboarding/plugin.js +63 -32
  481. package/dist/onboarding/plugin.js.map +1 -1
  482. package/dist/onboarding/types.d.ts +6 -1
  483. package/dist/onboarding/types.d.ts.map +1 -1
  484. package/dist/org/accept-pending.d.ts.map +1 -1
  485. package/dist/org/accept-pending.js +2 -1
  486. package/dist/org/accept-pending.js.map +1 -1
  487. package/dist/progress/actions.d.ts.map +1 -1
  488. package/dist/progress/actions.js +10 -1
  489. package/dist/progress/actions.js.map +1 -1
  490. package/dist/progress/routes.d.ts +1 -1
  491. package/dist/progress/routes.d.ts.map +1 -1
  492. package/dist/progress/routes.js +20 -3
  493. package/dist/progress/routes.js.map +1 -1
  494. package/dist/progress/store.d.ts.map +1 -1
  495. package/dist/progress/store.js +6 -1
  496. package/dist/progress/store.js.map +1 -1
  497. package/dist/resources/handlers.d.ts.map +1 -1
  498. package/dist/resources/handlers.js +35 -7
  499. package/dist/resources/handlers.js.map +1 -1
  500. package/dist/resources/script-helpers.d.ts.map +1 -1
  501. package/dist/resources/script-helpers.js +15 -3
  502. package/dist/resources/script-helpers.js.map +1 -1
  503. package/dist/resources/store.d.ts.map +1 -1
  504. package/dist/resources/store.js +12 -4
  505. package/dist/resources/store.js.map +1 -1
  506. package/dist/scripts/call-agent.d.ts +1 -0
  507. package/dist/scripts/call-agent.d.ts.map +1 -1
  508. package/dist/scripts/call-agent.js +78 -40
  509. package/dist/scripts/call-agent.js.map +1 -1
  510. package/dist/scripts/chat/search-chats.d.ts.map +1 -1
  511. package/dist/scripts/chat/search-chats.js +3 -2
  512. package/dist/scripts/chat/search-chats.js.map +1 -1
  513. package/dist/scripts/db/exec.d.ts +1 -1
  514. package/dist/scripts/db/exec.d.ts.map +1 -1
  515. package/dist/scripts/db/exec.js +171 -5
  516. package/dist/scripts/db/exec.js.map +1 -1
  517. package/dist/scripts/db/migrate-user-api-keys.d.ts.map +1 -1
  518. package/dist/scripts/db/migrate-user-api-keys.js +10 -0
  519. package/dist/scripts/db/migrate-user-api-keys.js.map +1 -1
  520. package/dist/scripts/db/query.d.ts +1 -1
  521. package/dist/scripts/db/query.d.ts.map +1 -1
  522. package/dist/scripts/db/query.js +104 -4
  523. package/dist/scripts/db/query.js.map +1 -1
  524. package/dist/scripts/db/scoping.d.ts.map +1 -1
  525. package/dist/scripts/db/scoping.js +35 -10
  526. package/dist/scripts/db/scoping.js.map +1 -1
  527. package/dist/scripts/dev/shell.d.ts.map +1 -1
  528. package/dist/scripts/dev/shell.js +3 -1
  529. package/dist/scripts/dev/shell.js.map +1 -1
  530. package/dist/scripts/resources/delete-memory.d.ts.map +1 -1
  531. package/dist/scripts/resources/delete-memory.js +2 -1
  532. package/dist/scripts/resources/delete-memory.js.map +1 -1
  533. package/dist/scripts/resources/delete.d.ts.map +1 -1
  534. package/dist/scripts/resources/delete.js +2 -1
  535. package/dist/scripts/resources/delete.js.map +1 -1
  536. package/dist/scripts/resources/list.d.ts.map +1 -1
  537. package/dist/scripts/resources/list.js +2 -1
  538. package/dist/scripts/resources/list.js.map +1 -1
  539. package/dist/scripts/resources/migrate-learnings.d.ts.map +1 -1
  540. package/dist/scripts/resources/migrate-learnings.js +2 -1
  541. package/dist/scripts/resources/migrate-learnings.js.map +1 -1
  542. package/dist/scripts/resources/read.d.ts.map +1 -1
  543. package/dist/scripts/resources/read.js +2 -1
  544. package/dist/scripts/resources/read.js.map +1 -1
  545. package/dist/scripts/resources/save-memory.d.ts.map +1 -1
  546. package/dist/scripts/resources/save-memory.js +2 -1
  547. package/dist/scripts/resources/save-memory.js.map +1 -1
  548. package/dist/scripts/resources/write.d.ts.map +1 -1
  549. package/dist/scripts/resources/write.js +2 -1
  550. package/dist/scripts/resources/write.js.map +1 -1
  551. package/dist/secrets/onboarding.d.ts.map +1 -1
  552. package/dist/secrets/onboarding.js +24 -16
  553. package/dist/secrets/onboarding.js.map +1 -1
  554. package/dist/secrets/routes.d.ts.map +1 -1
  555. package/dist/secrets/routes.js +139 -37
  556. package/dist/secrets/routes.js.map +1 -1
  557. package/dist/secrets/storage.d.ts.map +1 -1
  558. package/dist/secrets/storage.js +23 -12
  559. package/dist/secrets/storage.js.map +1 -1
  560. package/dist/secrets/substitution.d.ts +24 -2
  561. package/dist/secrets/substitution.d.ts.map +1 -1
  562. package/dist/secrets/substitution.js +44 -6
  563. package/dist/secrets/substitution.js.map +1 -1
  564. package/dist/server/action-discovery.d.ts.map +1 -1
  565. package/dist/server/action-discovery.js +19 -51
  566. package/dist/server/action-discovery.js.map +1 -1
  567. package/dist/server/action-routes.d.ts.map +1 -1
  568. package/dist/server/action-routes.js +61 -15
  569. package/dist/server/action-routes.js.map +1 -1
  570. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  571. package/dist/server/agent-chat-plugin.js +449 -338
  572. package/dist/server/agent-chat-plugin.js.map +1 -1
  573. package/dist/server/agent-discovery.d.ts +8 -0
  574. package/dist/server/agent-discovery.d.ts.map +1 -1
  575. package/dist/server/agent-discovery.js +39 -12
  576. package/dist/server/agent-discovery.js.map +1 -1
  577. package/dist/server/agent-teams.d.ts.map +1 -1
  578. package/dist/server/agent-teams.js +4 -1
  579. package/dist/server/agent-teams.js.map +1 -1
  580. package/dist/server/analytics.d.ts +0 -1
  581. package/dist/server/analytics.d.ts.map +1 -1
  582. package/dist/server/analytics.js +0 -1
  583. package/dist/server/analytics.js.map +1 -1
  584. package/dist/server/app-base-path.d.ts +4 -0
  585. package/dist/server/app-base-path.d.ts.map +1 -0
  586. package/dist/server/app-base-path.js +33 -0
  587. package/dist/server/app-base-path.js.map +1 -0
  588. package/dist/server/app-url.d.ts +4 -1
  589. package/dist/server/app-url.d.ts.map +1 -1
  590. package/dist/server/app-url.js +16 -1
  591. package/dist/server/app-url.js.map +1 -1
  592. package/dist/server/auth.d.ts +15 -0
  593. package/dist/server/auth.d.ts.map +1 -1
  594. package/dist/server/auth.js +400 -68
  595. package/dist/server/auth.js.map +1 -1
  596. package/dist/server/better-auth-instance.d.ts +1 -0
  597. package/dist/server/better-auth-instance.d.ts.map +1 -1
  598. package/dist/server/better-auth-instance.js +67 -15
  599. package/dist/server/better-auth-instance.js.map +1 -1
  600. package/dist/server/builder-browser.d.ts +15 -0
  601. package/dist/server/builder-browser.d.ts.map +1 -1
  602. package/dist/server/builder-browser.js +90 -4
  603. package/dist/server/builder-browser.js.map +1 -1
  604. package/dist/server/cli-capture.d.ts +31 -0
  605. package/dist/server/cli-capture.d.ts.map +1 -0
  606. package/dist/server/cli-capture.js +120 -0
  607. package/dist/server/cli-capture.js.map +1 -0
  608. package/dist/server/collab-plugin.d.ts +12 -0
  609. package/dist/server/collab-plugin.d.ts.map +1 -1
  610. package/dist/server/collab-plugin.js +63 -21
  611. package/dist/server/collab-plugin.js.map +1 -1
  612. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  613. package/dist/server/core-routes-plugin.js +467 -130
  614. package/dist/server/core-routes-plugin.js.map +1 -1
  615. package/dist/server/create-server.d.ts +2 -0
  616. package/dist/server/create-server.d.ts.map +1 -1
  617. package/dist/server/create-server.js +82 -11
  618. package/dist/server/create-server.js.map +1 -1
  619. package/dist/server/credential-provider.d.ts +11 -0
  620. package/dist/server/credential-provider.d.ts.map +1 -1
  621. package/dist/server/credential-provider.js +51 -2
  622. package/dist/server/credential-provider.js.map +1 -1
  623. package/dist/server/csrf.d.ts +58 -0
  624. package/dist/server/csrf.d.ts.map +1 -0
  625. package/dist/server/csrf.js +165 -0
  626. package/dist/server/csrf.js.map +1 -0
  627. package/dist/server/framework-request-handler.d.ts +20 -0
  628. package/dist/server/framework-request-handler.d.ts.map +1 -1
  629. package/dist/server/framework-request-handler.js +115 -34
  630. package/dist/server/framework-request-handler.js.map +1 -1
  631. package/dist/server/google-auth-plugin.d.ts.map +1 -1
  632. package/dist/server/google-auth-plugin.js +10 -2
  633. package/dist/server/google-auth-plugin.js.map +1 -1
  634. package/dist/server/google-oauth.d.ts +84 -2
  635. package/dist/server/google-oauth.d.ts.map +1 -1
  636. package/dist/server/google-oauth.js +248 -45
  637. package/dist/server/google-oauth.js.map +1 -1
  638. package/dist/server/index.d.ts +5 -4
  639. package/dist/server/index.d.ts.map +1 -1
  640. package/dist/server/index.js +5 -4
  641. package/dist/server/index.js.map +1 -1
  642. package/dist/server/oauth-helpers.d.ts +8 -3
  643. package/dist/server/oauth-helpers.d.ts.map +1 -1
  644. package/dist/server/oauth-helpers.js +12 -8
  645. package/dist/server/oauth-helpers.js.map +1 -1
  646. package/dist/server/onboarding-html.d.ts.map +1 -1
  647. package/dist/server/onboarding-html.js +37 -9
  648. package/dist/server/onboarding-html.js.map +1 -1
  649. package/dist/server/poll.d.ts +33 -0
  650. package/dist/server/poll.d.ts.map +1 -1
  651. package/dist/server/poll.js +43 -2
  652. package/dist/server/poll.js.map +1 -1
  653. package/dist/server/request-context.d.ts +102 -3
  654. package/dist/server/request-context.d.ts.map +1 -1
  655. package/dist/server/request-context.js +100 -7
  656. package/dist/server/request-context.js.map +1 -1
  657. package/dist/server/security-headers.d.ts +51 -0
  658. package/dist/server/security-headers.d.ts.map +1 -0
  659. package/dist/server/security-headers.js +90 -0
  660. package/dist/server/security-headers.js.map +1 -0
  661. package/dist/server/short-lived-token.d.ts +62 -0
  662. package/dist/server/short-lived-token.d.ts.map +1 -0
  663. package/dist/server/short-lived-token.js +118 -0
  664. package/dist/server/short-lived-token.js.map +1 -0
  665. package/dist/server/ssr-handler.d.ts.map +1 -1
  666. package/dist/server/ssr-handler.js +96 -2
  667. package/dist/server/ssr-handler.js.map +1 -1
  668. package/dist/server/transcribe-voice.d.ts.map +1 -1
  669. package/dist/server/transcribe-voice.js +307 -56
  670. package/dist/server/transcribe-voice.js.map +1 -1
  671. package/dist/server/voice-providers-status.d.ts +12 -0
  672. package/dist/server/voice-providers-status.d.ts.map +1 -0
  673. package/dist/server/voice-providers-status.js +71 -0
  674. package/dist/server/voice-providers-status.js.map +1 -0
  675. package/dist/shared/agent-chat.js +1 -1
  676. package/dist/shared/agent-chat.js.map +1 -1
  677. package/dist/shared/agent-env.js +1 -1
  678. package/dist/shared/agent-env.js.map +1 -1
  679. package/dist/sharing/access.d.ts.map +1 -1
  680. package/dist/sharing/access.js +16 -13
  681. package/dist/sharing/access.js.map +1 -1
  682. package/dist/sharing/actions/set-resource-visibility.d.ts.map +1 -1
  683. package/dist/sharing/actions/set-resource-visibility.js +3 -0
  684. package/dist/sharing/actions/set-resource-visibility.js.map +1 -1
  685. package/dist/sharing/actions/share-resource.d.ts +1 -0
  686. package/dist/sharing/actions/share-resource.d.ts.map +1 -1
  687. package/dist/sharing/actions/share-resource.js +50 -0
  688. package/dist/sharing/actions/share-resource.js.map +1 -1
  689. package/dist/sharing/actions/unshare-resource.d.ts.map +1 -1
  690. package/dist/sharing/actions/unshare-resource.js +2 -0
  691. package/dist/sharing/actions/unshare-resource.js.map +1 -1
  692. package/dist/templates/default/.agents/skills/delegate-to-agent/SKILL.md +54 -0
  693. package/dist/templates/default/app/root.tsx +1 -1
  694. package/dist/templates/default/app/routes/_index.tsx +6 -1
  695. package/dist/templates/default/package.json +1 -1
  696. package/dist/templates/default/public/favicon.svg +13 -0
  697. package/dist/templates/default/public/icon-180.svg +12 -3
  698. package/dist/templates/default/public/icon-192.svg +12 -3
  699. package/dist/templates/default/public/icon-512.svg +12 -3
  700. package/dist/templates/workspace-core/package.json +23 -5
  701. package/dist/templates/workspace-core/src/credentials.ts +32 -5
  702. package/dist/templates/workspace-core/tsconfig.json +4 -1
  703. package/dist/terminal/pty-server.d.ts.map +1 -1
  704. package/dist/terminal/pty-server.js +8 -2
  705. package/dist/terminal/pty-server.js.map +1 -1
  706. package/dist/terminal/terminal-plugin.js +3 -3
  707. package/dist/terminal/terminal-plugin.js.map +1 -1
  708. package/dist/tools/actions.d.ts.map +1 -1
  709. package/dist/tools/actions.js +130 -0
  710. package/dist/tools/actions.js.map +1 -1
  711. package/dist/tools/fetch-tool.d.ts +1 -0
  712. package/dist/tools/fetch-tool.d.ts.map +1 -1
  713. package/dist/tools/fetch-tool.js +38 -16
  714. package/dist/tools/fetch-tool.js.map +1 -1
  715. package/dist/tools/html-shell.d.ts +44 -1
  716. package/dist/tools/html-shell.d.ts.map +1 -1
  717. package/dist/tools/html-shell.js +119 -4
  718. package/dist/tools/html-shell.js.map +1 -1
  719. package/dist/tools/proxy-security.d.ts +12 -0
  720. package/dist/tools/proxy-security.d.ts.map +1 -0
  721. package/dist/tools/proxy-security.js +158 -0
  722. package/dist/tools/proxy-security.js.map +1 -0
  723. package/dist/tools/routes.d.ts.map +1 -1
  724. package/dist/tools/routes.js +156 -105
  725. package/dist/tools/routes.js.map +1 -1
  726. package/dist/tools/schema.d.ts +89 -0
  727. package/dist/tools/schema.d.ts.map +1 -1
  728. package/dist/tools/schema.js +34 -0
  729. package/dist/tools/schema.js.map +1 -1
  730. package/dist/tools/slots/routes.d.ts +15 -0
  731. package/dist/tools/slots/routes.d.ts.map +1 -0
  732. package/dist/tools/slots/routes.js +94 -0
  733. package/dist/tools/slots/routes.js.map +1 -0
  734. package/dist/tools/slots/schema.d.ts +303 -0
  735. package/dist/tools/slots/schema.d.ts.map +1 -0
  736. package/dist/tools/slots/schema.js +76 -0
  737. package/dist/tools/slots/schema.js.map +1 -0
  738. package/dist/tools/slots/store.d.ts +66 -0
  739. package/dist/tools/slots/store.d.ts.map +1 -0
  740. package/dist/tools/slots/store.js +227 -0
  741. package/dist/tools/slots/store.js.map +1 -0
  742. package/dist/tools/store.d.ts.map +1 -1
  743. package/dist/tools/store.js +35 -37
  744. package/dist/tools/store.js.map +1 -1
  745. package/dist/tools/url-safety.d.ts +24 -0
  746. package/dist/tools/url-safety.d.ts.map +1 -0
  747. package/dist/tools/url-safety.js +224 -0
  748. package/dist/tools/url-safety.js.map +1 -0
  749. package/dist/tracking/providers.d.ts.map +1 -1
  750. package/dist/tracking/providers.js +28 -11
  751. package/dist/tracking/providers.js.map +1 -1
  752. package/dist/tracking/registry.d.ts.map +1 -1
  753. package/dist/tracking/registry.js +7 -3
  754. package/dist/tracking/registry.js.map +1 -1
  755. package/dist/triggers/actions.d.ts.map +1 -1
  756. package/dist/triggers/actions.js +11 -6
  757. package/dist/triggers/actions.js.map +1 -1
  758. package/dist/triggers/condition-evaluator.d.ts +8 -0
  759. package/dist/triggers/condition-evaluator.d.ts.map +1 -1
  760. package/dist/triggers/condition-evaluator.js +39 -4
  761. package/dist/triggers/condition-evaluator.js.map +1 -1
  762. package/dist/triggers/dispatcher.d.ts.map +1 -1
  763. package/dist/triggers/dispatcher.js +67 -4
  764. package/dist/triggers/dispatcher.js.map +1 -1
  765. package/dist/usage/store.d.ts +0 -11
  766. package/dist/usage/store.d.ts.map +1 -1
  767. package/dist/usage/store.js +0 -11
  768. package/dist/usage/store.js.map +1 -1
  769. package/dist/vite/action-types-plugin.d.ts.map +1 -1
  770. package/dist/vite/action-types-plugin.js +8 -5
  771. package/dist/vite/action-types-plugin.js.map +1 -1
  772. package/dist/vite/client.d.ts +2 -0
  773. package/dist/vite/client.d.ts.map +1 -1
  774. package/dist/vite/client.js +216 -4
  775. package/dist/vite/client.js.map +1 -1
  776. package/docs/content/actions.md +32 -0
  777. package/docs/content/authentication.md +39 -12
  778. package/docs/content/cloneable-saas.md +13 -15
  779. package/docs/content/deployment.md +84 -9
  780. package/docs/content/drop-in-agent.md +2 -2
  781. package/docs/content/faq.md +4 -1
  782. package/docs/content/getting-started.md +2 -0
  783. package/docs/content/messaging.md +195 -155
  784. package/docs/content/onboarding.md +82 -12
  785. package/docs/content/security.md +59 -8
  786. package/docs/content/template-analytics.md +65 -59
  787. package/docs/content/template-clips.md +7 -9
  788. package/docs/content/template-design.md +55 -0
  789. package/docs/content/template-dispatch.md +13 -0
  790. package/docs/content/template-forms.md +7 -6
  791. package/docs/content/template-mail.md +78 -80
  792. package/package.json +4 -3
  793. package/src/templates/default/.agents/skills/delegate-to-agent/SKILL.md +54 -0
  794. package/src/templates/default/app/root.tsx +1 -1
  795. package/src/templates/default/app/routes/_index.tsx +6 -1
  796. package/src/templates/default/package.json +1 -1
  797. package/src/templates/default/public/favicon.svg +13 -0
  798. package/src/templates/default/public/icon-180.svg +12 -3
  799. package/src/templates/default/public/icon-192.svg +12 -3
  800. package/src/templates/default/public/icon-512.svg +12 -3
  801. package/src/templates/workspace-core/package.json +23 -5
  802. package/src/templates/workspace-core/src/credentials.ts +32 -5
  803. package/src/templates/workspace-core/tsconfig.json +4 -1
@@ -1,6 +1,6 @@
1
1
  import type { EventHandler as H3EventHandler } from "h3";
2
- import type { ActionTool, AgentChatEvent } from "./types.js";
3
- import type { AgentEngine, EngineTool, EngineMessage } from "./engine/types.js";
2
+ import type { ActionTool, AgentChatAttachment, AgentChatEvent } from "./types.js";
3
+ import type { AgentEngine, EngineTool, EngineMessage, EngineContentPart } from "./engine/types.js";
4
4
  import { PROVIDER_TO_ENV } from "./engine/provider-env-vars.js";
5
5
  import { subscribeToRun, getActiveRunForThread, getActiveRunForThreadAsync, getRun, abortRun } from "./run-manager.js";
6
6
  import type { ActiveRun } from "./run-manager.js";
@@ -9,6 +9,12 @@ export { PROVIDER_TO_ENV };
9
9
  * Look up a user's persisted API key for the given provider. Returns
10
10
  * `undefined` for unauthenticated/local callers so the shared platform key
11
11
  * is never keyed off `local@localhost` in multi-tenant deployments.
12
+ *
13
+ * Read order:
14
+ * 1. `app_secrets` — encrypted, scope=user, current source of truth.
15
+ * 2. Legacy `user-api-key:<provider>:<email>` settings row — pre-migration
16
+ * data that hasn't been backfilled yet. Surfaced for compat only;
17
+ * writes always go to app_secrets now.
12
18
  */
13
19
  export declare function getOwnerApiKey(provider: string, ownerEmail: string | null | undefined): Promise<string | undefined>;
14
20
  /**
@@ -18,7 +24,19 @@ export declare function getOwnerApiKey(provider: string, ownerEmail: string | nu
18
24
  export declare function engineToProvider(engineName: string): string;
19
25
  /**
20
26
  * Resolve the active engine's provider and look up the user's API key for it.
21
- * Falls back to the provider's env var if no per-user key is stored.
27
+ *
28
+ * In multi-tenant deploys we deliberately refuse the deploy-level
29
+ * deploy-level fallback for authenticated users. Without that gate any
30
+ * signed-in user who hasn't configured their own provider key would silently
31
+ * inherit the deployment's key (uncapped billing on the owner's account,
32
+ * prompt logging tied to the deployment owner) — exactly the prior-incident
33
+ * pattern we hit on 2026-04-29.
34
+ *
35
+ * Single-tenant (local-dev, self-hosted SQLite) keeps the env fallback.
36
+ *
37
+ * Callers in `agent-chat-plugin.ts`, `triggers/dispatcher.ts`,
38
+ * `jobs/scheduler.ts`, and `integrations/plugin.ts` historically layer
39
+ * another deployment-key fallback after this must keep the same gate.
22
40
  */
23
41
  export declare function getOwnerActiveApiKey(ownerEmail: string | null | undefined): Promise<string | undefined>;
24
42
  /** @deprecated Use getOwnerApiKey("anthropic", ownerEmail) instead */
@@ -36,6 +54,13 @@ export interface ActionEntry {
36
54
  /** If true, completion does NOT trigger a screen-refresh poll event.
37
55
  * Set automatically by `defineAction` when `http.method === "GET"`. */
38
56
  readOnly?: boolean;
57
+ /** Whether this action may be invoked from the tools-iframe bridge.
58
+ * **Default-allow opt-out**: only an explicit `false` returns 403.
59
+ * - `true` / `undefined` — allow.
60
+ * - `false` — explicit deny; the tools bridge returns 403.
61
+ * See `defineAction` (`packages/core/src/action.ts`) and audit H5 in
62
+ * `security-audit/05-tools-sandbox.md`. */
63
+ toolCallable?: boolean;
39
64
  }
40
65
  /** @deprecated Use `ActionEntry` instead */
41
66
  export type ScriptEntry = ActionEntry;
@@ -69,10 +94,6 @@ export interface ProductionAgentOptions {
69
94
  onEngineResolved?: (engine: AgentEngine, model: string) => void;
70
95
  /** Resolve the owner email from the H3 event (for usage tracking) */
71
96
  resolveOwnerEmail?: (event: any) => string | Promise<string>;
72
- /** Enable per-user usage limit checking and token tracking */
73
- trackUsage?: boolean;
74
- /** Usage limit in cents (default: 100 = $1.00) */
75
- usageLimitCents?: number;
76
97
  /**
77
98
  * Skip auto-injecting the workspace files/skills/agents inventory on the
78
99
  * first message of a conversation. Useful for minimal/voice apps where
@@ -81,6 +102,10 @@ export interface ProductionAgentOptions {
81
102
  */
82
103
  skipFilesContext?: boolean;
83
104
  }
105
+ export declare function buildUserContentWithAttachments(opts: {
106
+ text: string;
107
+ attachments?: AgentChatAttachment[];
108
+ }): EngineContentPart[];
84
109
  /** Accumulated token usage from an agent loop run */
85
110
  export interface AgentLoopUsage {
86
111
  inputTokens: number;
@@ -1 +1 @@
1
- {"version":3,"file":"production-agent.d.ts","sourceRoot":"","sources":["../../src/agent/production-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"production-agent.d.ts","sourceRoot":"","sources":["../../src/agent/production-agent.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
1
  import { defineEventHandler, setResponseHeader, setResponseStatus, getMethod, } from "h3";
2
+ import { DEV_MODE_USER_EMAIL } from "../server/auth.js";
3
+ import { isLocalDatabase } from "../db/client.js";
4
+ import { readDeployCredentialEnv } from "../server/credential-provider.js";
2
5
  import { EngineError } from "./engine/types.js";
3
6
  import { resolveEngine, registerBuiltinEngines, getStoredModelForEngine, } from "./engine/index.js";
4
7
  import { PROVIDER_TO_ENV } from "./engine/provider-env-vars.js";
@@ -14,17 +17,36 @@ export { PROVIDER_TO_ENV };
14
17
  * Look up a user's persisted API key for the given provider. Returns
15
18
  * `undefined` for unauthenticated/local callers so the shared platform key
16
19
  * is never keyed off `local@localhost` in multi-tenant deployments.
20
+ *
21
+ * Read order:
22
+ * 1. `app_secrets` — encrypted, scope=user, current source of truth.
23
+ * 2. Legacy `user-api-key:<provider>:<email>` settings row — pre-migration
24
+ * data that hasn't been backfilled yet. Surfaced for compat only;
25
+ * writes always go to app_secrets now.
17
26
  */
18
27
  export async function getOwnerApiKey(provider, ownerEmail) {
19
- if (!ownerEmail || ownerEmail === "local@localhost")
28
+ if (!ownerEmail || ownerEmail === DEV_MODE_USER_EMAIL)
20
29
  return undefined;
30
+ const secretKey = PROVIDER_TO_ENV[provider] ?? `${provider.toUpperCase()}_API_KEY`;
31
+ try {
32
+ const { readAppSecret } = await import("../secrets/storage.js");
33
+ const fromSecrets = await readAppSecret({
34
+ key: secretKey,
35
+ scope: "user",
36
+ scopeId: ownerEmail,
37
+ });
38
+ if (fromSecrets?.value)
39
+ return fromSecrets.value;
40
+ }
41
+ catch {
42
+ // app_secrets table not ready — fall through to legacy lookup.
43
+ }
21
44
  try {
22
45
  const { getSetting } = await import("../settings/store.js");
23
46
  const stored = await getSetting(`user-api-key:${provider}:${ownerEmail}`);
24
47
  const key = stored && typeof stored.key === "string" ? stored.key.trim() : "";
25
48
  if (key)
26
49
  return key;
27
- // Backward compat: check legacy Anthropic key format
28
50
  if (provider === "anthropic") {
29
51
  const legacy = await getSetting(`user-anthropic-api-key:${ownerEmail}`);
30
52
  const legacyKey = legacy && typeof legacy.key === "string" ? legacy.key.trim() : "";
@@ -43,9 +65,42 @@ export async function getOwnerApiKey(provider, ownerEmail) {
43
65
  export function engineToProvider(engineName) {
44
66
  return engineName.startsWith("ai-sdk:") ? engineName.slice(7) : engineName;
45
67
  }
68
+ /**
69
+ * Returns true when this process is acting as a multi-tenant deployment —
70
+ * i.e. a hosted shared-DB environment where one user's identity must NOT be
71
+ * silently substituted with the deploy-level API key.
72
+ *
73
+ * Mirrors the gate in `resolveBuilderCredential` (server/credential-provider.ts).
74
+ *
75
+ * Heuristic:
76
+ * - `NODE_ENV === "production"`, AND
77
+ * - The DB is not a local file (i.e. it's Neon/Postgres/Turso/D1 — any
78
+ * backend that could be shared across multiple users).
79
+ *
80
+ * Self-hosted single-tenant deployments (a local sqlite file, or NODE_ENV
81
+ * unset/development) keep the env-var fallback so the original BYO-server
82
+ * UX continues to work without a per-user key.
83
+ */
84
+ function isMultiTenantDeploy() {
85
+ if (process.env.NODE_ENV !== "production")
86
+ return false;
87
+ return !isLocalDatabase();
88
+ }
46
89
  /**
47
90
  * Resolve the active engine's provider and look up the user's API key for it.
48
- * Falls back to the provider's env var if no per-user key is stored.
91
+ *
92
+ * In multi-tenant deploys we deliberately refuse the deploy-level
93
+ * deploy-level fallback for authenticated users. Without that gate any
94
+ * signed-in user who hasn't configured their own provider key would silently
95
+ * inherit the deployment's key (uncapped billing on the owner's account,
96
+ * prompt logging tied to the deployment owner) — exactly the prior-incident
97
+ * pattern we hit on 2026-04-29.
98
+ *
99
+ * Single-tenant (local-dev, self-hosted SQLite) keeps the env fallback.
100
+ *
101
+ * Callers in `agent-chat-plugin.ts`, `triggers/dispatcher.ts`,
102
+ * `jobs/scheduler.ts`, and `integrations/plugin.ts` historically layer
103
+ * another deployment-key fallback after this must keep the same gate.
49
104
  */
50
105
  export async function getOwnerActiveApiKey(ownerEmail) {
51
106
  try {
@@ -56,8 +111,15 @@ export async function getOwnerActiveApiKey(ownerEmail) {
56
111
  const userKey = await getOwnerApiKey(provider, ownerEmail);
57
112
  if (userKey)
58
113
  return userKey;
114
+ if (isMultiTenantDeploy()) {
115
+ // Multi-tenant: refuse the env fallback. A null user (unauthenticated /
116
+ // background context with no owner) gets undefined here too — there's
117
+ // no user to bill, and the call site must surface a "configure a key"
118
+ // error to the requester rather than silently using the deploy key.
119
+ return undefined;
120
+ }
59
121
  const envVar = PROVIDER_TO_ENV[provider];
60
- return envVar ? process.env[envVar] || undefined : undefined;
122
+ return envVar ? readDeployCredentialEnv(envVar) : undefined;
61
123
  }
62
124
  catch {
63
125
  return undefined;
@@ -74,6 +136,23 @@ function generateRunId() {
74
136
  return `run-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
75
137
  }
76
138
  /** Check if an error is transient and should be retried */
139
+ function isContextTooLongError(err) {
140
+ if (!(err instanceof Error))
141
+ return false;
142
+ const msg = err.message.toLowerCase();
143
+ if (msg.includes("context_length_exceeded") ||
144
+ msg.includes("input_too_long") ||
145
+ msg.includes("too many tokens") ||
146
+ msg.includes("prompt is too long") ||
147
+ msg.includes("reduce the length"))
148
+ return true;
149
+ if (err instanceof EngineError) {
150
+ const code = (err.errorCode ?? "").toLowerCase();
151
+ if (code.includes("context_length") || code.includes("input_too_long"))
152
+ return true;
153
+ }
154
+ return false;
155
+ }
77
156
  function isRetryableError(err) {
78
157
  if (!(err instanceof Error))
79
158
  return false;
@@ -97,6 +176,59 @@ function retryDelay(attempt, signal) {
97
176
  }, { once: true });
98
177
  });
99
178
  }
179
+ function isSupportedImageMediaType(mediaType) {
180
+ return (mediaType === "image/jpeg" ||
181
+ mediaType === "image/png" ||
182
+ mediaType === "image/gif" ||
183
+ mediaType === "image/webp");
184
+ }
185
+ function escapeAttachmentAttribute(value) {
186
+ return value
187
+ .replace(/&/g, "&amp;")
188
+ .replace(/"/g, "&quot;")
189
+ .replace(/</g, "&lt;")
190
+ .replace(/>/g, "&gt;");
191
+ }
192
+ function formatTextAttachment(att) {
193
+ if (typeof att.text !== "string" || att.text.length === 0)
194
+ return null;
195
+ const attrs = [
196
+ `name="${escapeAttachmentAttribute(att.name || "attachment")}"`,
197
+ att.contentType
198
+ ? `contentType="${escapeAttachmentAttribute(att.contentType)}"`
199
+ : null,
200
+ att.type ? `type="${escapeAttachmentAttribute(att.type)}"` : null,
201
+ ].filter(Boolean);
202
+ return `<attachment ${attrs.join(" ")}>\n${att.text}\n</attachment>`;
203
+ }
204
+ export function buildUserContentWithAttachments(opts) {
205
+ const userContent = [];
206
+ const textAttachments = [];
207
+ for (const att of opts.attachments ?? []) {
208
+ if (att.type === "image" && att.data) {
209
+ const match = att.data.match(/^data:(image\/[^;]+);base64,(.+)$/);
210
+ if (match && isSupportedImageMediaType(match[1])) {
211
+ userContent.push({
212
+ type: "image",
213
+ data: match[2],
214
+ mediaType: match[1],
215
+ });
216
+ }
217
+ continue;
218
+ }
219
+ const textAttachment = formatTextAttachment(att);
220
+ if (textAttachment) {
221
+ textAttachments.push(textAttachment);
222
+ }
223
+ }
224
+ userContent.push({
225
+ type: "text",
226
+ text: textAttachments.length > 0
227
+ ? `${textAttachments.join("\n\n")}\n\n${opts.text}`
228
+ : opts.text,
229
+ });
230
+ return userContent;
231
+ }
100
232
  /** Build enriched message with file/skill/mention references */
101
233
  function enrichMessage(message, references) {
102
234
  if (references.length === 0)
@@ -215,6 +347,9 @@ export async function runAgentLoop(opts) {
215
347
  catch (err) {
216
348
  if (signal.aborted)
217
349
  throw err;
350
+ if (isContextTooLongError(err)) {
351
+ throw new EngineError("Conversation has grown too long. Start a new conversation to continue.", { errorCode: "context_length_exceeded" });
352
+ }
218
353
  if (retry < MAX_RETRIES && isRetryableError(err)) {
219
354
  // Clear partial text from the failed attempt so the retry
220
355
  // doesn't produce garbled duplicate output
@@ -262,11 +397,24 @@ export async function runAgentLoop(opts) {
262
397
  tool: toolCall.name,
263
398
  input: toolCall.input,
264
399
  });
400
+ const MAX_TOOL_RESULT_CHARS = 50_000;
401
+ const TOOL_TIMEOUT_MS = 60_000;
265
402
  let result;
266
403
  let isError = false;
267
404
  try {
268
- const raw = await actionEntry.run(toolCall.input, { send });
269
- result = typeof raw === "string" ? raw : JSON.stringify(raw, null, 2);
405
+ const timeoutSignal = AbortSignal.timeout(TOOL_TIMEOUT_MS);
406
+ const raw = await Promise.race([
407
+ actionEntry.run(toolCall.input, { send }),
408
+ new Promise((_, reject) => {
409
+ timeoutSignal.addEventListener("abort", () => reject(new Error("Tool call timed out after 60 seconds")));
410
+ }),
411
+ ]);
412
+ let resultStr = typeof raw === "string" ? raw : JSON.stringify(raw, null, 2);
413
+ if (resultStr.length > MAX_TOOL_RESULT_CHARS) {
414
+ const truncated = resultStr.slice(0, MAX_TOOL_RESULT_CHARS);
415
+ resultStr = `${truncated}\n\n...[truncated — full result was ${resultStr.length.toLocaleString()} chars; only first ${MAX_TOOL_RESULT_CHARS.toLocaleString()} shown]`;
416
+ }
417
+ result = resultStr;
270
418
  }
271
419
  catch (err) {
272
420
  result = `Error running ${toolCall.name}: ${err?.message ?? String(err)}`;
@@ -344,9 +492,8 @@ export function createProductionAgentHandler(options) {
344
492
  return { error: "message is required" };
345
493
  }
346
494
  // Resolve owner first so we can look up a per-owner API key. Users
347
- // who bring their own key bypass the platform's free-tier usage limit
348
- // and use their key for this request (which is also durable across
349
- // serverless cold starts via the settings table).
495
+ // who bring their own key use their key for this request (durable
496
+ // across serverless cold starts via the settings table).
350
497
  let ownerEmail = null;
351
498
  if (options.resolveOwnerEmail) {
352
499
  try {
@@ -362,15 +509,28 @@ export function createProductionAgentHandler(options) {
362
509
  if (requestEngine) {
363
510
  const provider = engineToProvider(requestEngine);
364
511
  userApiKey = await getOwnerApiKey(provider, ownerEmail);
365
- if (!userApiKey) {
512
+ if (!userApiKey && !isMultiTenantDeploy()) {
513
+ // Single-tenant only: env fallback for the requested provider.
514
+ // Multi-tenant deploys never silently substitute the deploy-level
515
+ // key for an authenticated user (see getOwnerActiveApiKey for the
516
+ // full rationale).
366
517
  const envVar = PROVIDER_TO_ENV[provider];
367
- userApiKey = envVar ? process.env[envVar] || undefined : undefined;
518
+ userApiKey = envVar ? readDeployCredentialEnv(envVar) : undefined;
368
519
  }
369
520
  }
370
521
  else {
371
522
  userApiKey = await getOwnerActiveApiKey(ownerEmail);
372
523
  }
373
- const effectiveApiKey = userApiKey ?? options.apiKey ?? process.env.ANTHROPIC_API_KEY;
524
+ // `options.apiKey` is the value the template constructed the plugin with
525
+ // (e.g. wired from a deployment env var). On a multi-tenant deploy this
526
+ // is the same cross-tenant hazard as any deploy-level provider key:
527
+ // accepting it as the final fallback would silently bill every key-less
528
+ // user to the deployment's account. Only honour it in single-tenant mode.
529
+ const effectiveApiKey = isMultiTenantDeploy()
530
+ ? userApiKey
531
+ : (userApiKey ??
532
+ options.apiKey ??
533
+ readDeployCredentialEnv("ANTHROPIC_API_KEY"));
374
534
  // Resolve engine — per-request engine override takes priority
375
535
  let engine;
376
536
  try {
@@ -414,34 +574,6 @@ export function createProductionAgentHandler(options) {
414
574
  },
415
575
  });
416
576
  }
417
- // Check usage limit before starting a run (production hosted mode).
418
- // Skip when the user has provided their own key — they're paying
419
- // Anthropic directly, so the platform's free tier doesn't apply.
420
- if (!userApiKey &&
421
- options.trackUsage &&
422
- options.resolveOwnerEmail &&
423
- ownerEmail &&
424
- ownerEmail !== "local@localhost") {
425
- try {
426
- const { checkUsageLimit } = await import("../usage/store.js");
427
- const result = await checkUsageLimit(ownerEmail, options.usageLimitCents);
428
- if (!result.allowed) {
429
- setResponseHeader(event, "Content-Type", "text/event-stream");
430
- setResponseHeader(event, "Cache-Control", "no-cache");
431
- setResponseHeader(event, "Connection", "keep-alive");
432
- const encoder = new TextEncoder();
433
- return new ReadableStream({
434
- start(controller) {
435
- controller.enqueue(encoder.encode(`data: ${JSON.stringify({ type: "usage_limit_reached", usageCents: result.usageCents, limitCents: result.limitCents })}\n\n`));
436
- controller.close();
437
- },
438
- });
439
- }
440
- }
441
- catch {
442
- // Usage check failed — allow the request to proceed
443
- }
444
- }
445
577
  // Run all independent pre-send steps in parallel. Each of these hits
446
578
  // the DB or invokes an action; running them sequentially was the
447
579
  // single biggest contributor to pre-LLM latency.
@@ -504,6 +636,27 @@ export function createProductionAgentHandler(options) {
504
636
  }
505
637
  return "";
506
638
  })();
639
+ // Selection context: written by the client when the user presses Cmd+I
640
+ // with text selected on the page. Treat anything older than 5 minutes
641
+ // as stale and ignore it.
642
+ const SELECTION_TTL_MS = 5 * 60 * 1000;
643
+ const selectionContextPromise = (async () => {
644
+ try {
645
+ const sel = (await readAppState("pending-selection-context"));
646
+ if (!sel?.text)
647
+ return "";
648
+ const capturedAt = typeof sel.capturedAt === "number" ? sel.capturedAt : 0;
649
+ if (Date.now() - capturedAt > SELECTION_TTL_MS)
650
+ return "";
651
+ return (`\n\nThe user has selected the following text and pressed Cmd+I to focus the agent. ` +
652
+ `Treat this as the immediate context to act on:\n` +
653
+ `<selection>\n${sel.text}\n</selection>`);
654
+ }
655
+ catch {
656
+ // DB not ready — skip silently
657
+ }
658
+ return "";
659
+ })();
507
660
  // On the first message of a conversation, inject workspace inventory
508
661
  // so the agent knows what files, skills, jobs, and custom agents exist.
509
662
  // Templates can opt out via `skipFilesContext: true` when the inventory
@@ -516,7 +669,9 @@ export function createProductionAgentHandler(options) {
516
669
  try {
517
670
  const { resourceListAccessible, SHARED_OWNER, resourceGet } = await import("../resources/store.js");
518
671
  const { getResourceKind, parseCustomAgentProfile, parseRemoteAgentManifest, parseSkillMetadata, } = await import("../resources/metadata.js");
519
- const ownerEmail = getRequestUserEmail() || "local@localhost";
672
+ const ownerEmail = getRequestUserEmail();
673
+ if (!ownerEmail)
674
+ throw new Error("no authenticated user");
520
675
  const allResources = await resourceListAccessible(ownerEmail);
521
676
  if (allResources.length > 0) {
522
677
  const fileLines = [];
@@ -577,10 +732,11 @@ export function createProductionAgentHandler(options) {
577
732
  }
578
733
  return filesContext;
579
734
  })();
580
- const [systemPrompt, screenBlock, urlBlock, filesContext] = await Promise.all([
735
+ const [systemPrompt, screenBlock, urlBlock, selectionBlock, filesContext] = await Promise.all([
581
736
  systemPromptPromise,
582
737
  screenContextPromise,
583
738
  urlContextPromise,
739
+ selectionContextPromise,
584
740
  filesContextPromise,
585
741
  ]);
586
742
  if (systemPromptError) {
@@ -595,29 +751,13 @@ export function createProductionAgentHandler(options) {
595
751
  },
596
752
  });
597
753
  }
598
- const screenContext = screenBlock + urlBlock;
754
+ const screenContext = screenBlock + urlBlock + selectionBlock;
599
755
  // Pre-compute agent references for A2A resolution inside the run
600
756
  const agentRefs = references.filter((r) => r.type === "agent");
601
757
  const customAgentRefs = references.filter((r) => r.type === "custom-agent");
602
- // Build user content: text + any image attachments
603
- const userContent = [];
604
- if (attachments?.length) {
605
- for (const att of attachments) {
606
- if (att.type === "image" && att.data) {
607
- const match = att.data.match(/^data:(image\/[^;]+);base64,(.+)$/);
608
- if (match) {
609
- userContent.push({
610
- type: "image",
611
- data: match[2],
612
- mediaType: match[1],
613
- });
614
- }
615
- }
616
- }
617
- }
618
- userContent.push({
619
- type: "text",
758
+ const userContent = buildUserContentWithAttachments({
620
759
  text: enrichedMessage + screenContext + filesContext,
760
+ attachments,
621
761
  });
622
762
  const messages = [
623
763
  ...history
@@ -628,6 +768,18 @@ export function createProductionAgentHandler(options) {
628
768
  })),
629
769
  { role: "user", content: userContent },
630
770
  ];
771
+ // If there's already an active run for this thread, reject with 409 so
772
+ // the client can queue or wait rather than silently aborting the existing run.
773
+ if (threadId) {
774
+ const existingRun = getActiveRunForThread(threadId);
775
+ if (existingRun && existingRun.status === "running") {
776
+ setResponseStatus(event, 409);
777
+ return {
778
+ error: "Run already in progress for this thread",
779
+ activeRunId: existingRun.runId,
780
+ };
781
+ }
782
+ }
631
783
  // Start agent loop in background via run-manager
632
784
  const runId = generateRunId();
633
785
  startRun(runId, threadId ?? runId, async (send, signal) => {
@@ -637,7 +789,9 @@ export function createProductionAgentHandler(options) {
637
789
  }
638
790
  // Resolve custom workspace agent mentions first.
639
791
  if (customAgentRefs.length > 0) {
640
- const ownerEmail = getRequestUserEmail() || "local@localhost";
792
+ const ownerEmail = getRequestUserEmail();
793
+ if (!ownerEmail)
794
+ throw new Error("no authenticated user");
641
795
  const { findAccessibleCustomAgent } = await import("../resources/agents.js");
642
796
  const customResults = await Promise.allSettled(customAgentRefs.map(async (ref) => {
643
797
  send({
@@ -686,7 +840,11 @@ export function createProductionAgentHandler(options) {
686
840
  try {
687
841
  const ownerEmail = options.resolveOwnerEmail
688
842
  ? await options.resolveOwnerEmail(event)
689
- : getRequestUserEmail() || "local@localhost";
843
+ : getRequestUserEmail();
844
+ if (!ownerEmail) {
845
+ // Skip usage recording for unauthenticated runs.
846
+ return;
847
+ }
690
848
  const { recordUsage } = await import("../usage/store.js");
691
849
  await recordUsage({
692
850
  ownerEmail,
@@ -828,7 +986,11 @@ export function createProductionAgentHandler(options) {
828
986
  let effectiveModel = model;
829
987
  try {
830
988
  const { resolveActiveExperimentConfig } = await import("../observability/experiments.js");
831
- const expConfig = await resolveActiveExperimentConfig(ownerEmail || "local@localhost");
989
+ if (!ownerEmail) {
990
+ // Without an authenticated owner we can't resolve user-scoped experiments.
991
+ throw new Error("no authenticated user");
992
+ }
993
+ const expConfig = await resolveActiveExperimentConfig(ownerEmail);
832
994
  if (expConfig) {
833
995
  if (typeof expConfig.configs.model === "string") {
834
996
  effectiveModel = expConfig.configs.model;
@@ -861,7 +1023,7 @@ export function createProductionAgentHandler(options) {
861
1023
  loopOpts: agentLoopOpts,
862
1024
  runId,
863
1025
  threadId: threadId ?? null,
864
- userId: ownerEmail || "local@localhost",
1026
+ userId: ownerEmail,
865
1027
  config: obsConfig,
866
1028
  });
867
1029
  }
@@ -875,14 +1037,12 @@ export function createProductionAgentHandler(options) {
875
1037
  if (!instrumented) {
876
1038
  loopUsage = await runAgentLoop(agentLoopOpts);
877
1039
  }
878
- // Record token usage for cost monitoring. Always on (not gated by
879
- // trackUsage) so the Usage panel in settings works in every mode,
880
- // including local dev. `trackUsage` only controls the pre-request
881
- // *limit check*; recording happens unconditionally.
1040
+ // Record token usage for cost monitoring so the Usage panel in
1041
+ // settings works in every mode, including local dev.
882
1042
  try {
883
1043
  const ownerEmail = options.resolveOwnerEmail
884
1044
  ? await options.resolveOwnerEmail(event)
885
- : getRequestUserEmail() || "local@localhost";
1045
+ : getRequestUserEmail();
886
1046
  if (ownerEmail &&
887
1047
  (loopUsage.inputTokens > 0 ||
888
1048
  loopUsage.outputTokens > 0 ||