@agent-native/core 0.46.0 → 0.48.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (837) hide show
  1. package/bin/agent-native.js +41 -0
  2. package/dist/a2a/handlers.js +2 -2
  3. package/dist/a2a/handlers.js.map +1 -1
  4. package/dist/a2a/server.js +2 -2
  5. package/dist/a2a/server.js.map +1 -1
  6. package/dist/action.d.ts +43 -2
  7. package/dist/action.d.ts.map +1 -1
  8. package/dist/action.js.map +1 -1
  9. package/dist/agent/context-xray/actions/context-evict.d.ts +7 -1
  10. package/dist/agent/context-xray/actions/context-evict.d.ts.map +1 -1
  11. package/dist/agent/context-xray/actions/context-manifest-get.d.ts +4 -1
  12. package/dist/agent/context-xray/actions/context-manifest-get.d.ts.map +1 -1
  13. package/dist/agent/context-xray/actions/context-pin.d.ts +7 -1
  14. package/dist/agent/context-xray/actions/context-pin.d.ts.map +1 -1
  15. package/dist/agent/context-xray/actions/context-report.d.ts +12 -1
  16. package/dist/agent/context-xray/actions/context-report.d.ts.map +1 -1
  17. package/dist/agent/context-xray/actions/context-restore.d.ts +7 -1
  18. package/dist/agent/context-xray/actions/context-restore.d.ts.map +1 -1
  19. package/dist/agent/context-xray/apply-directives.d.ts.map +1 -1
  20. package/dist/agent/context-xray/apply-directives.js.map +1 -1
  21. package/dist/agent/context-xray/schema.d.ts +10 -10
  22. package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
  23. package/dist/agent/engine/ai-sdk-engine.js +26 -3
  24. package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
  25. package/dist/agent/engine/anthropic-engine.d.ts +1 -1
  26. package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
  27. package/dist/agent/engine/builder-engine.d.ts +1 -1
  28. package/dist/agent/engine/builder-engine.d.ts.map +1 -1
  29. package/dist/agent/engine/builder-engine.js +47 -8
  30. package/dist/agent/engine/builder-engine.js.map +1 -1
  31. package/dist/agent/engine/builtin.js +1 -1
  32. package/dist/agent/engine/builtin.js.map +1 -1
  33. package/dist/agent/engine/output-tokens.d.ts +1 -1
  34. package/dist/agent/engine/output-tokens.d.ts.map +1 -1
  35. package/dist/agent/engine/output-tokens.js +6 -2
  36. package/dist/agent/engine/output-tokens.js.map +1 -1
  37. package/dist/agent/engine/registry.d.ts.map +1 -1
  38. package/dist/agent/engine/registry.js +7 -4
  39. package/dist/agent/engine/registry.js.map +1 -1
  40. package/dist/agent/engine/types.d.ts +19 -0
  41. package/dist/agent/engine/types.d.ts.map +1 -1
  42. package/dist/agent/engine/types.js +6 -0
  43. package/dist/agent/engine/types.js.map +1 -1
  44. package/dist/agent/model-config.d.ts +22 -14
  45. package/dist/agent/model-config.d.ts.map +1 -1
  46. package/dist/agent/model-config.js +113 -8
  47. package/dist/agent/model-config.js.map +1 -1
  48. package/dist/agent/production-agent.d.ts +47 -1
  49. package/dist/agent/production-agent.d.ts.map +1 -1
  50. package/dist/agent/production-agent.js +267 -46
  51. package/dist/agent/production-agent.js.map +1 -1
  52. package/dist/agent/run-loop-with-resume.d.ts.map +1 -1
  53. package/dist/agent/run-loop-with-resume.js +10 -0
  54. package/dist/agent/run-loop-with-resume.js.map +1 -1
  55. package/dist/agent/run-manager.d.ts +1 -0
  56. package/dist/agent/run-manager.d.ts.map +1 -1
  57. package/dist/agent/run-manager.js +36 -9
  58. package/dist/agent/run-manager.js.map +1 -1
  59. package/dist/agent/run-store.d.ts +47 -4
  60. package/dist/agent/run-store.d.ts.map +1 -1
  61. package/dist/agent/run-store.js +154 -4
  62. package/dist/agent/run-store.js.map +1 -1
  63. package/dist/agent/thread-data-builder.d.ts.map +1 -1
  64. package/dist/agent/thread-data-builder.js +57 -2
  65. package/dist/agent/thread-data-builder.js.map +1 -1
  66. package/dist/agent/types.d.ts +3 -0
  67. package/dist/agent/types.d.ts.map +1 -1
  68. package/dist/agent/types.js.map +1 -1
  69. package/dist/agent-web/generator.d.ts +3 -3
  70. package/dist/appearance/actions/change-appearance.d.ts +6 -1
  71. package/dist/appearance/actions/change-appearance.d.ts.map +1 -1
  72. package/dist/application-state/handlers.d.ts +2 -2
  73. package/dist/application-state/handlers.d.ts.map +1 -1
  74. package/dist/application-state/store.d.ts.map +1 -1
  75. package/dist/application-state/store.js +17 -0
  76. package/dist/application-state/store.js.map +1 -1
  77. package/dist/catalog.json +2 -1
  78. package/dist/cli/code-agent-commands.d.ts.map +1 -1
  79. package/dist/cli/code-agent-commands.js +2 -0
  80. package/dist/cli/code-agent-commands.js.map +1 -1
  81. package/dist/cli/code-agent-connector.js +7 -13
  82. package/dist/cli/code-agent-connector.js.map +1 -1
  83. package/dist/cli/code-agent-executor.d.ts +54 -2
  84. package/dist/cli/code-agent-executor.d.ts.map +1 -1
  85. package/dist/cli/code-agent-executor.js +504 -48
  86. package/dist/cli/code-agent-executor.js.map +1 -1
  87. package/dist/cli/code-agent-runs.d.ts +13 -0
  88. package/dist/cli/code-agent-runs.d.ts.map +1 -1
  89. package/dist/cli/code-agent-runs.js +36 -0
  90. package/dist/cli/code-agent-runs.js.map +1 -1
  91. package/dist/cli/code.js +59 -5
  92. package/dist/cli/code.js.map +1 -1
  93. package/dist/cli/connect.js +141 -3
  94. package/dist/cli/connect.js.map +1 -1
  95. package/dist/cli/index.js +0 -0
  96. package/dist/cli/pr-visual-recap-workflow.js +1 -1
  97. package/dist/cli/pr-visual-recap-workflow.js.map +1 -1
  98. package/dist/cli/recap.js +476 -46
  99. package/dist/cli/recap.js.map +1 -1
  100. package/dist/cli/skills.js +331 -179
  101. package/dist/cli/skills.js.map +1 -1
  102. package/dist/client/AgentPanel.d.ts.map +1 -1
  103. package/dist/client/AgentPanel.js +29 -2
  104. package/dist/client/AgentPanel.js.map +1 -1
  105. package/dist/client/AgentTaskCard.d.ts.map +1 -1
  106. package/dist/client/AgentTaskCard.js +17 -2
  107. package/dist/client/AgentTaskCard.js.map +1 -1
  108. package/dist/client/AssistantChat.d.ts +1 -1
  109. package/dist/client/AssistantChat.d.ts.map +1 -1
  110. package/dist/client/AssistantChat.js +310 -1732
  111. package/dist/client/AssistantChat.js.map +1 -1
  112. package/dist/client/CommandMenu.d.ts +1 -1
  113. package/dist/client/CommandMenu.d.ts.map +1 -1
  114. package/dist/client/CommandMenu.js +1 -1
  115. package/dist/client/CommandMenu.js.map +1 -1
  116. package/dist/client/HighlightedCodeBlock.d.ts +40 -0
  117. package/dist/client/HighlightedCodeBlock.d.ts.map +1 -0
  118. package/dist/client/HighlightedCodeBlock.js +110 -0
  119. package/dist/client/HighlightedCodeBlock.js.map +1 -0
  120. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  121. package/dist/client/MultiTabAssistantChat.js +8 -1
  122. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  123. package/dist/client/PoweredByBadge.d.ts +2 -2
  124. package/dist/client/PoweredByBadge.d.ts.map +1 -1
  125. package/dist/client/RunStuckBanner.d.ts +1 -1
  126. package/dist/client/RunStuckBanner.d.ts.map +1 -1
  127. package/dist/client/StarfieldBackground.d.ts.map +1 -1
  128. package/dist/client/StarfieldBackground.js +10 -5
  129. package/dist/client/StarfieldBackground.js.map +1 -1
  130. package/dist/client/Turnstile.d.ts +1 -1
  131. package/dist/client/Turnstile.d.ts.map +1 -1
  132. package/dist/client/agent-chat-adapter.d.ts +3 -2
  133. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  134. package/dist/client/agent-chat-adapter.js +13 -9
  135. package/dist/client/agent-chat-adapter.js.map +1 -1
  136. package/dist/client/app-providers.d.ts +99 -0
  137. package/dist/client/app-providers.d.ts.map +1 -0
  138. package/dist/client/app-providers.js +19 -0
  139. package/dist/client/app-providers.js.map +1 -0
  140. package/dist/client/assistant-ui-recovery.d.ts +1 -1
  141. package/dist/client/auth-redirect-url.d.ts +1 -1
  142. package/dist/client/auth-redirect-url.d.ts.map +1 -1
  143. package/dist/client/blocks/library/AnnotatedCodeBlock.d.ts +0 -19
  144. package/dist/client/blocks/library/AnnotatedCodeBlock.d.ts.map +1 -1
  145. package/dist/client/blocks/library/AnnotatedCodeBlock.js +141 -55
  146. package/dist/client/blocks/library/AnnotatedCodeBlock.js.map +1 -1
  147. package/dist/client/blocks/library/DiffBlock.js +1 -1
  148. package/dist/client/blocks/library/DiffBlock.js.map +1 -1
  149. package/dist/client/blocks/library/FileTreeBlock.d.ts.map +1 -1
  150. package/dist/client/blocks/library/FileTreeBlock.js +1 -1
  151. package/dist/client/blocks/library/FileTreeBlock.js.map +1 -1
  152. package/dist/client/blocks/library/HighlightedCode.d.ts.map +1 -1
  153. package/dist/client/blocks/library/HighlightedCode.js +5 -3
  154. package/dist/client/blocks/library/HighlightedCode.js.map +1 -1
  155. package/dist/client/blocks/library/annotation-rail.d.ts +5 -4
  156. package/dist/client/blocks/library/annotation-rail.d.ts.map +1 -1
  157. package/dist/client/blocks/library/annotation-rail.js +22 -3
  158. package/dist/client/blocks/library/annotation-rail.js.map +1 -1
  159. package/dist/client/blocks/library/diagram.js +1 -1
  160. package/dist/client/blocks/library/diagram.js.map +1 -1
  161. package/dist/client/blocks/library/diff.config.d.ts +3 -2
  162. package/dist/client/blocks/library/diff.config.d.ts.map +1 -1
  163. package/dist/client/blocks/library/diff.config.js +4 -3
  164. package/dist/client/blocks/library/diff.config.js.map +1 -1
  165. package/dist/client/blocks/library/question-form.d.ts.map +1 -1
  166. package/dist/client/blocks/library/question-form.js +2 -1
  167. package/dist/client/blocks/library/question-form.js.map +1 -1
  168. package/dist/client/blocks/library/wireframe-kit.d.ts +1 -1
  169. package/dist/client/blocks/library/wireframe-kit.d.ts.map +1 -1
  170. package/dist/client/blocks/library/wireframe.js +1 -1
  171. package/dist/client/blocks/library/wireframe.js.map +1 -1
  172. package/dist/client/chat/attachment-adapters.d.ts +58 -0
  173. package/dist/client/chat/attachment-adapters.d.ts.map +1 -0
  174. package/dist/client/chat/attachment-adapters.js +331 -0
  175. package/dist/client/chat/attachment-adapters.js.map +1 -0
  176. package/dist/client/chat/index.d.ts +13 -0
  177. package/dist/client/chat/index.d.ts.map +1 -0
  178. package/dist/client/chat/index.js +13 -0
  179. package/dist/client/chat/index.js.map +1 -0
  180. package/dist/client/chat/markdown-renderer.d.ts +49 -0
  181. package/dist/client/chat/markdown-renderer.d.ts.map +1 -0
  182. package/dist/client/chat/markdown-renderer.js +391 -0
  183. package/dist/client/chat/markdown-renderer.js.map +1 -0
  184. package/dist/client/chat/message-components.d.ts +35 -0
  185. package/dist/client/chat/message-components.d.ts.map +1 -0
  186. package/dist/client/chat/message-components.js +452 -0
  187. package/dist/client/chat/message-components.js.map +1 -0
  188. package/dist/client/chat/repo-helpers.d.ts +41 -0
  189. package/dist/client/chat/repo-helpers.d.ts.map +1 -0
  190. package/dist/client/chat/repo-helpers.js +61 -0
  191. package/dist/client/chat/repo-helpers.js.map +1 -0
  192. package/dist/client/chat/run-recovery.d.ts +41 -0
  193. package/dist/client/chat/run-recovery.d.ts.map +1 -0
  194. package/dist/client/chat/run-recovery.js +348 -0
  195. package/dist/client/chat/run-recovery.js.map +1 -0
  196. package/dist/client/chat/tool-call-display.d.ts +34 -0
  197. package/dist/client/chat/tool-call-display.d.ts.map +1 -0
  198. package/dist/client/chat/tool-call-display.js +284 -0
  199. package/dist/client/chat/tool-call-display.js.map +1 -0
  200. package/dist/client/code-agent-chat-adapter.d.ts.map +1 -1
  201. package/dist/client/code-agent-chat-adapter.js +20 -0
  202. package/dist/client/code-agent-chat-adapter.js.map +1 -1
  203. package/dist/client/collab/index.d.ts +10 -0
  204. package/dist/client/collab/index.d.ts.map +1 -0
  205. package/dist/client/collab/index.js +10 -0
  206. package/dist/client/collab/index.js.map +1 -0
  207. package/dist/client/components/AgentPresenceChip.d.ts +1 -1
  208. package/dist/client/components/AgentPresenceChip.d.ts.map +1 -1
  209. package/dist/client/components/ApiKeySettings.d.ts +1 -1
  210. package/dist/client/components/ApiKeySettings.d.ts.map +1 -1
  211. package/dist/client/components/CodeAgentIndicator.d.ts +1 -1
  212. package/dist/client/components/CodeAgentIndicator.d.ts.map +1 -1
  213. package/dist/client/components/CodeRequiredDialog.d.ts +1 -1
  214. package/dist/client/components/CodeRequiredDialog.d.ts.map +1 -1
  215. package/dist/client/components/LiveCursorOverlay.d.ts.map +1 -1
  216. package/dist/client/components/LiveCursorOverlay.js.map +1 -1
  217. package/dist/client/components/PresenceBar.d.ts +1 -1
  218. package/dist/client/components/PresenceBar.d.ts.map +1 -1
  219. package/dist/client/composer/PromptComposer.d.ts.map +1 -1
  220. package/dist/client/composer/PromptComposer.js +6 -26
  221. package/dist/client/composer/PromptComposer.js.map +1 -1
  222. package/dist/client/composer/TiptapComposer.d.ts +8 -2
  223. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  224. package/dist/client/composer/TiptapComposer.js +21 -9
  225. package/dist/client/composer/TiptapComposer.js.map +1 -1
  226. package/dist/client/composer/VoiceButton.d.ts +2 -2
  227. package/dist/client/composer/VoiceButton.d.ts.map +1 -1
  228. package/dist/client/composer/index.d.ts +1 -1
  229. package/dist/client/composer/index.d.ts.map +1 -1
  230. package/dist/client/composer/index.js +1 -1
  231. package/dist/client/composer/index.js.map +1 -1
  232. package/dist/client/composer/use-skills.d.ts +1 -1
  233. package/dist/client/context-xray/ContextMeter.d.ts +1 -1
  234. package/dist/client/context-xray/ContextMeter.d.ts.map +1 -1
  235. package/dist/client/context-xray/ContextMeter.js +3 -3
  236. package/dist/client/context-xray/ContextMeter.js.map +1 -1
  237. package/dist/client/context-xray/ContextXRayPanel.d.ts.map +1 -1
  238. package/dist/client/context-xray/ContextXRayPanel.js +4 -3
  239. package/dist/client/context-xray/ContextXRayPanel.js.map +1 -1
  240. package/dist/client/context-xray/format.d.ts +11 -0
  241. package/dist/client/context-xray/format.d.ts.map +1 -1
  242. package/dist/client/context-xray/format.js +16 -0
  243. package/dist/client/context-xray/format.js.map +1 -1
  244. package/dist/client/conversation/AgentConversation.d.ts.map +1 -1
  245. package/dist/client/conversation/AgentConversation.js +8 -53
  246. package/dist/client/conversation/AgentConversation.js.map +1 -1
  247. package/dist/client/conversation/use-near-bottom-autoscroll.d.ts +1 -1
  248. package/dist/client/conversation/use-near-bottom-autoscroll.d.ts.map +1 -1
  249. package/dist/client/conversation/use-near-bottom-autoscroll.js +14 -1
  250. package/dist/client/conversation/use-near-bottom-autoscroll.js.map +1 -1
  251. package/dist/client/create-query-client.d.ts +28 -0
  252. package/dist/client/create-query-client.d.ts.map +1 -0
  253. package/dist/client/create-query-client.js +78 -0
  254. package/dist/client/create-query-client.js.map +1 -0
  255. package/dist/client/db-admin/DevDatabaseLink.d.ts +1 -1
  256. package/dist/client/db-admin/DevDatabaseLink.d.ts.map +1 -1
  257. package/dist/client/db-admin/RowSidePanel.d.ts +1 -1
  258. package/dist/client/db-admin/RowSidePanel.d.ts.map +1 -1
  259. package/dist/client/db-admin/RowSidePanel.js +2 -2
  260. package/dist/client/db-admin/RowSidePanel.js.map +1 -1
  261. package/dist/client/db-admin/TableEditor.d.ts +1 -1
  262. package/dist/client/db-admin/TableEditor.d.ts.map +1 -1
  263. package/dist/client/db-admin/TableEditor.js +1 -1
  264. package/dist/client/db-admin/TableEditor.js.map +1 -1
  265. package/dist/client/db-admin/cell-format.d.ts +1 -1
  266. package/dist/client/db-admin/cell-format.d.ts.map +1 -1
  267. package/dist/client/dev-overlay/DevOverlay.d.ts +1 -1
  268. package/dist/client/dev-overlay/DevOverlay.d.ts.map +1 -1
  269. package/dist/client/editor/index.d.ts +2 -0
  270. package/dist/client/editor/index.d.ts.map +1 -0
  271. package/dist/client/editor/index.js +2 -0
  272. package/dist/client/editor/index.js.map +1 -0
  273. package/dist/client/error-format.d.ts.map +1 -1
  274. package/dist/client/error-format.js +4 -0
  275. package/dist/client/error-format.js.map +1 -1
  276. package/dist/client/extensions/AgentNativeExtensionFrame.d.ts +1 -1
  277. package/dist/client/extensions/AgentNativeExtensionFrame.d.ts.map +1 -1
  278. package/dist/client/extensions/EmbeddedExtension.d.ts +1 -1
  279. package/dist/client/extensions/EmbeddedExtension.d.ts.map +1 -1
  280. package/dist/client/extensions/ExtensionSlot.d.ts +1 -1
  281. package/dist/client/extensions/ExtensionSlot.d.ts.map +1 -1
  282. package/dist/client/extensions/ExtensionViewerPage.d.ts +1 -1
  283. package/dist/client/extensions/ExtensionViewerPage.d.ts.map +1 -1
  284. package/dist/client/guided-questions.d.ts +6 -6
  285. package/dist/client/host-bridge.d.ts.map +1 -1
  286. package/dist/client/host-bridge.js +2 -0
  287. package/dist/client/host-bridge.js.map +1 -1
  288. package/dist/client/index.d.ts +7 -6
  289. package/dist/client/index.d.ts.map +1 -1
  290. package/dist/client/index.js +5 -3
  291. package/dist/client/index.js.map +1 -1
  292. package/dist/client/onboarding/OnboardingBanner.d.ts +1 -1
  293. package/dist/client/onboarding/OnboardingBanner.d.ts.map +1 -1
  294. package/dist/client/onboarding/OnboardingPanel.d.ts +1 -1
  295. package/dist/client/onboarding/OnboardingPanel.d.ts.map +1 -1
  296. package/dist/client/onboarding/SetupButton.d.ts +1 -1
  297. package/dist/client/onboarding/SetupButton.d.ts.map +1 -1
  298. package/dist/client/org/InvitationBanner.d.ts +1 -1
  299. package/dist/client/org/InvitationBanner.d.ts.map +1 -1
  300. package/dist/client/org/OrgSwitcher.d.ts +1 -1
  301. package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
  302. package/dist/client/org/RequireActiveOrg.d.ts +1 -1
  303. package/dist/client/org/RequireActiveOrg.d.ts.map +1 -1
  304. package/dist/client/org/hooks.d.ts +3 -3
  305. package/dist/client/org/hooks.d.ts.map +1 -1
  306. package/dist/client/progress/RunsTray.d.ts +2 -2
  307. package/dist/client/progress/RunsTray.d.ts.map +1 -1
  308. package/dist/client/progress/RunsTray.js +34 -9
  309. package/dist/client/progress/RunsTray.js.map +1 -1
  310. package/dist/client/resources/ResourceEditor.d.ts.map +1 -1
  311. package/dist/client/resources/ResourceEditor.js +1 -1
  312. package/dist/client/resources/ResourceEditor.js.map +1 -1
  313. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  314. package/dist/client/resources/ResourcesPanel.js +2 -0
  315. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  316. package/dist/client/rich-markdown-editor/BubbleToolbar.d.ts +1 -1
  317. package/dist/client/rich-markdown-editor/BubbleToolbar.d.ts.map +1 -1
  318. package/dist/client/rich-markdown-editor/CodeBlockNode.d.ts.map +1 -1
  319. package/dist/client/rich-markdown-editor/CodeBlockNode.js +2 -1
  320. package/dist/client/rich-markdown-editor/CodeBlockNode.js.map +1 -1
  321. package/dist/client/rich-markdown-editor/ImageExtension.d.ts.map +1 -1
  322. package/dist/client/rich-markdown-editor/ImageExtension.js +2 -1
  323. package/dist/client/rich-markdown-editor/ImageExtension.js.map +1 -1
  324. package/dist/client/rich-markdown-editor/RegistryBlockNode.d.ts +1 -1
  325. package/dist/client/rich-markdown-editor/RegistryBlockNode.d.ts.map +1 -1
  326. package/dist/client/rich-markdown-editor/RegistryBlockNode.js +1 -1
  327. package/dist/client/rich-markdown-editor/RegistryBlockNode.js.map +1 -1
  328. package/dist/client/rich-markdown-editor/RichMarkdownEditor.d.ts +1 -1
  329. package/dist/client/rich-markdown-editor/SharedRichEditor.d.ts.map +1 -1
  330. package/dist/client/rich-markdown-editor/SharedRichEditor.js +2 -3
  331. package/dist/client/rich-markdown-editor/SharedRichEditor.js.map +1 -1
  332. package/dist/client/rich-markdown-editor/SlashCommandMenu.d.ts +1 -1
  333. package/dist/client/rich-markdown-editor/SlashCommandMenu.d.ts.map +1 -1
  334. package/dist/client/route-state.d.ts +12 -2
  335. package/dist/client/route-state.d.ts.map +1 -1
  336. package/dist/client/route-state.js +1 -1
  337. package/dist/client/route-state.js.map +1 -1
  338. package/dist/client/route-warmup.d.ts +1 -1
  339. package/dist/client/route-warmup.d.ts.map +1 -1
  340. package/dist/client/settings/VoiceTranscriptionSection.js +1 -1
  341. package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
  342. package/dist/client/settings/useBuilderStatus.d.ts +2 -2
  343. package/dist/client/sharing/ShareDialog.d.ts +1 -1
  344. package/dist/client/sharing/ShareDialog.d.ts.map +1 -1
  345. package/dist/client/sse-event-processor.d.ts +8 -0
  346. package/dist/client/sse-event-processor.d.ts.map +1 -1
  347. package/dist/client/sse-event-processor.js +33 -10
  348. package/dist/client/sse-event-processor.js.map +1 -1
  349. package/dist/client/terminal/AgentTerminal.d.ts +1 -1
  350. package/dist/client/terminal/AgentTerminal.d.ts.map +1 -1
  351. package/dist/client/terminal/AgentTerminal.js +4 -2
  352. package/dist/client/terminal/AgentTerminal.js.map +1 -1
  353. package/dist/client/tool-cells/BashCell.d.ts +25 -0
  354. package/dist/client/tool-cells/BashCell.d.ts.map +1 -0
  355. package/dist/client/tool-cells/BashCell.js +49 -0
  356. package/dist/client/tool-cells/BashCell.js.map +1 -0
  357. package/dist/client/tool-cells/EditCell.d.ts +24 -0
  358. package/dist/client/tool-cells/EditCell.d.ts.map +1 -0
  359. package/dist/client/tool-cells/EditCell.js +126 -0
  360. package/dist/client/tool-cells/EditCell.js.map +1 -0
  361. package/dist/client/tool-cells/FilesChangedSummary.d.ts +13 -0
  362. package/dist/client/tool-cells/FilesChangedSummary.d.ts.map +1 -0
  363. package/dist/client/tool-cells/FilesChangedSummary.js +98 -0
  364. package/dist/client/tool-cells/FilesChangedSummary.js.map +1 -0
  365. package/dist/client/tool-cells/WriteCell.d.ts +17 -0
  366. package/dist/client/tool-cells/WriteCell.d.ts.map +1 -0
  367. package/dist/client/tool-cells/WriteCell.js +26 -0
  368. package/dist/client/tool-cells/WriteCell.js.map +1 -0
  369. package/dist/client/tool-cells/index.d.ts +8 -0
  370. package/dist/client/tool-cells/index.d.ts.map +1 -0
  371. package/dist/client/tool-cells/index.js +5 -0
  372. package/dist/client/tool-cells/index.js.map +1 -0
  373. package/dist/client/transcription/BuilderTranscriptionCta.d.ts +1 -1
  374. package/dist/client/transcription/BuilderTranscriptionCta.d.ts.map +1 -1
  375. package/dist/client/use-chat-threads.d.ts +1 -1
  376. package/dist/client/use-chat-threads.d.ts.map +1 -1
  377. package/dist/client/use-chat-threads.js +11 -8
  378. package/dist/client/use-chat-threads.js.map +1 -1
  379. package/dist/client/use-db-sync.d.ts +2 -0
  380. package/dist/client/use-db-sync.d.ts.map +1 -1
  381. package/dist/client/use-db-sync.js +329 -302
  382. package/dist/client/use-db-sync.js.map +1 -1
  383. package/dist/code-agents/transcript-normalizer.d.ts +15 -1
  384. package/dist/code-agents/transcript-normalizer.d.ts.map +1 -1
  385. package/dist/code-agents/transcript-normalizer.js +47 -0
  386. package/dist/code-agents/transcript-normalizer.js.map +1 -1
  387. package/dist/coding-tools/index.d.ts +75 -0
  388. package/dist/coding-tools/index.d.ts.map +1 -1
  389. package/dist/coding-tools/index.js +137 -10
  390. package/dist/coding-tools/index.js.map +1 -1
  391. package/dist/coding-tools/run-code.d.ts +40 -0
  392. package/dist/coding-tools/run-code.d.ts.map +1 -0
  393. package/dist/coding-tools/run-code.js +511 -0
  394. package/dist/coding-tools/run-code.js.map +1 -0
  395. package/dist/collab/client.d.ts.map +1 -1
  396. package/dist/collab/client.js +15 -9
  397. package/dist/collab/client.js.map +1 -1
  398. package/dist/collab/ydoc-manager.d.ts +1 -1
  399. package/dist/collab/ydoc-manager.d.ts.map +1 -1
  400. package/dist/collab/ydoc-manager.js +1 -1
  401. package/dist/collab/ydoc-manager.js.map +1 -1
  402. package/dist/db/client.d.ts +9 -1
  403. package/dist/db/client.d.ts.map +1 -1
  404. package/dist/db/client.js +204 -48
  405. package/dist/db/client.js.map +1 -1
  406. package/dist/db/create-get-db.d.ts +38 -0
  407. package/dist/db/create-get-db.d.ts.map +1 -1
  408. package/dist/db/create-get-db.js +204 -4
  409. package/dist/db/create-get-db.js.map +1 -1
  410. package/dist/db/migrations.d.ts.map +1 -1
  411. package/dist/db/migrations.js +159 -67
  412. package/dist/db/migrations.js.map +1 -1
  413. package/dist/demo/actions/toggle-demo-mode.d.ts +6 -1
  414. package/dist/demo/actions/toggle-demo-mode.d.ts.map +1 -1
  415. package/dist/deploy/build.d.ts.map +1 -1
  416. package/dist/deploy/build.js +80 -39
  417. package/dist/deploy/build.js.map +1 -1
  418. package/dist/deploy/workspace-deploy.js +20 -10
  419. package/dist/deploy/workspace-deploy.js.map +1 -1
  420. package/dist/extensions/fetch-tool.d.ts.map +1 -1
  421. package/dist/extensions/fetch-tool.js +62 -7
  422. package/dist/extensions/fetch-tool.js.map +1 -1
  423. package/dist/extensions/schema.d.ts +51 -51
  424. package/dist/extensions/slots/schema.d.ts +13 -13
  425. package/dist/extensions/web-search-tool.d.ts +41 -0
  426. package/dist/extensions/web-search-tool.d.ts.map +1 -0
  427. package/dist/extensions/web-search-tool.js +200 -0
  428. package/dist/extensions/web-search-tool.js.map +1 -0
  429. package/dist/file-upload/actions/upload-image.d.ts +26 -1
  430. package/dist/file-upload/actions/upload-image.d.ts.map +1 -1
  431. package/dist/file-upload/index.d.ts +1 -1
  432. package/dist/file-upload/index.d.ts.map +1 -1
  433. package/dist/file-upload/index.js +1 -1
  434. package/dist/file-upload/index.js.map +1 -1
  435. package/dist/file-upload/pre-upload-attachments.d.ts +37 -0
  436. package/dist/file-upload/pre-upload-attachments.d.ts.map +1 -1
  437. package/dist/file-upload/pre-upload-attachments.js +79 -19
  438. package/dist/file-upload/pre-upload-attachments.js.map +1 -1
  439. package/dist/index.d.ts +1 -1
  440. package/dist/index.d.ts.map +1 -1
  441. package/dist/index.js.map +1 -1
  442. package/dist/integrations/adapters/slack.js +1 -1
  443. package/dist/integrations/adapters/slack.js.map +1 -1
  444. package/dist/integrations/plugin.js +1 -1
  445. package/dist/integrations/plugin.js.map +1 -1
  446. package/dist/jobs/scheduler.js +70 -21
  447. package/dist/jobs/scheduler.js.map +1 -1
  448. package/dist/mcp/actions/create-org-service-token.d.ts +14 -0
  449. package/dist/mcp/actions/create-org-service-token.d.ts.map +1 -0
  450. package/dist/mcp/actions/create-org-service-token.js +74 -0
  451. package/dist/mcp/actions/create-org-service-token.js.map +1 -0
  452. package/dist/mcp/actions/list-org-service-tokens.d.ts +17 -0
  453. package/dist/mcp/actions/list-org-service-tokens.d.ts.map +1 -0
  454. package/dist/mcp/actions/list-org-service-tokens.js +42 -0
  455. package/dist/mcp/actions/list-org-service-tokens.js.map +1 -0
  456. package/dist/mcp/actions/revoke-org-service-token.d.ts +7 -0
  457. package/dist/mcp/actions/revoke-org-service-token.d.ts.map +1 -0
  458. package/dist/mcp/actions/revoke-org-service-token.js +28 -0
  459. package/dist/mcp/actions/revoke-org-service-token.js.map +1 -0
  460. package/dist/mcp/actions/service-token-access.d.ts +24 -0
  461. package/dist/mcp/actions/service-token-access.d.ts.map +1 -0
  462. package/dist/mcp/actions/service-token-access.js +63 -0
  463. package/dist/mcp/actions/service-token-access.js.map +1 -0
  464. package/dist/mcp/build-server.d.ts +42 -11
  465. package/dist/mcp/build-server.d.ts.map +1 -1
  466. package/dist/mcp/build-server.js +53 -3
  467. package/dist/mcp/build-server.js.map +1 -1
  468. package/dist/mcp/connect-route.d.ts +35 -0
  469. package/dist/mcp/connect-route.d.ts.map +1 -1
  470. package/dist/mcp/connect-route.js +57 -2
  471. package/dist/mcp/connect-route.js.map +1 -1
  472. package/dist/mcp/connect-store.d.ts +43 -0
  473. package/dist/mcp/connect-store.d.ts.map +1 -1
  474. package/dist/mcp/connect-store.js +129 -12
  475. package/dist/mcp/connect-store.js.map +1 -1
  476. package/dist/mcp/oauth-token.d.ts +10 -0
  477. package/dist/mcp/oauth-token.d.ts.map +1 -1
  478. package/dist/mcp/oauth-token.js +2 -0
  479. package/dist/mcp/oauth-token.js.map +1 -1
  480. package/dist/mcp/server.d.ts.map +1 -1
  481. package/dist/mcp/server.js +3 -0
  482. package/dist/mcp/server.js.map +1 -1
  483. package/dist/mcp-client/routes.js +1 -1
  484. package/dist/mcp-client/routes.js.map +1 -1
  485. package/dist/org/context.d.ts +4 -0
  486. package/dist/org/context.d.ts.map +1 -1
  487. package/dist/org/context.js +10 -0
  488. package/dist/org/context.js.map +1 -1
  489. package/dist/org/handlers.d.ts +11 -7
  490. package/dist/org/handlers.d.ts.map +1 -1
  491. package/dist/org/handlers.js +0 -8
  492. package/dist/org/handlers.js.map +1 -1
  493. package/dist/org/migrations.d.ts.map +1 -1
  494. package/dist/org/migrations.js +8 -0
  495. package/dist/org/migrations.js.map +1 -1
  496. package/dist/org/schema.d.ts +15 -15
  497. package/dist/progress/actions.d.ts.map +1 -1
  498. package/dist/progress/actions.js +13 -5
  499. package/dist/progress/actions.js.map +1 -1
  500. package/dist/provider-api/actions/delete-staged-dataset.d.ts +9 -0
  501. package/dist/provider-api/actions/delete-staged-dataset.d.ts.map +1 -0
  502. package/dist/provider-api/actions/delete-staged-dataset.js +35 -0
  503. package/dist/provider-api/actions/delete-staged-dataset.js.map +1 -0
  504. package/dist/provider-api/actions/list-staged-datasets.d.ts +15 -0
  505. package/dist/provider-api/actions/list-staged-datasets.d.ts.map +1 -0
  506. package/dist/provider-api/actions/list-staged-datasets.js +41 -0
  507. package/dist/provider-api/actions/list-staged-datasets.js.map +1 -0
  508. package/dist/provider-api/actions/query-staged-dataset.d.ts +29 -0
  509. package/dist/provider-api/actions/query-staged-dataset.d.ts.map +1 -0
  510. package/dist/provider-api/actions/query-staged-dataset.js +116 -0
  511. package/dist/provider-api/actions/query-staged-dataset.js.map +1 -0
  512. package/dist/provider-api/custom-registry.d.ts +92 -0
  513. package/dist/provider-api/custom-registry.d.ts.map +1 -0
  514. package/dist/provider-api/custom-registry.js +289 -0
  515. package/dist/provider-api/custom-registry.js.map +1 -0
  516. package/dist/provider-api/index.d.ts +88 -52
  517. package/dist/provider-api/index.d.ts.map +1 -1
  518. package/dist/provider-api/index.js +569 -23
  519. package/dist/provider-api/index.js.map +1 -1
  520. package/dist/provider-api/staged-datasets-aggregate.d.ts +46 -0
  521. package/dist/provider-api/staged-datasets-aggregate.d.ts.map +1 -0
  522. package/dist/provider-api/staged-datasets-aggregate.js +209 -0
  523. package/dist/provider-api/staged-datasets-aggregate.js.map +1 -0
  524. package/dist/provider-api/staged-datasets-store.d.ts +76 -0
  525. package/dist/provider-api/staged-datasets-store.d.ts.map +1 -0
  526. package/dist/provider-api/staged-datasets-store.js +319 -0
  527. package/dist/provider-api/staged-datasets-store.js.map +1 -0
  528. package/dist/provider-api/staging.d.ts +100 -0
  529. package/dist/provider-api/staging.d.ts.map +1 -0
  530. package/dist/provider-api/staging.js +281 -0
  531. package/dist/provider-api/staging.js.map +1 -0
  532. package/dist/resources/handlers.d.ts.map +1 -1
  533. package/dist/resources/handlers.js +13 -1
  534. package/dist/resources/handlers.js.map +1 -1
  535. package/dist/scripts/call-agent.d.ts.map +1 -1
  536. package/dist/scripts/call-agent.js +1 -2
  537. package/dist/scripts/call-agent.js.map +1 -1
  538. package/dist/scripts/resources/migrate-learnings.d.ts +1 -1
  539. package/dist/scripts/resources/migrate-learnings.d.ts.map +1 -1
  540. package/dist/scripts/resources/migrate-learnings.js +1 -1
  541. package/dist/scripts/resources/migrate-learnings.js.map +1 -1
  542. package/dist/secrets/register-framework-secrets.d.ts.map +1 -1
  543. package/dist/secrets/register-framework-secrets.js +36 -3
  544. package/dist/secrets/register-framework-secrets.js.map +1 -1
  545. package/dist/secrets/schema.d.ts +7 -7
  546. package/dist/server/action-discovery.d.ts.map +1 -1
  547. package/dist/server/action-discovery.js +14 -0
  548. package/dist/server/action-discovery.js.map +1 -1
  549. package/dist/server/action-routes.d.ts.map +1 -1
  550. package/dist/server/action-routes.js +3 -2
  551. package/dist/server/action-routes.js.map +1 -1
  552. package/dist/server/agent-chat-plugin.d.ts +69 -0
  553. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  554. package/dist/server/agent-chat-plugin.js +369 -179
  555. package/dist/server/agent-chat-plugin.js.map +1 -1
  556. package/dist/server/agent-discovery.d.ts.map +1 -1
  557. package/dist/server/agent-discovery.js +13 -16
  558. package/dist/server/agent-discovery.js.map +1 -1
  559. package/dist/server/agent-teams-run-queue.d.ts +31 -8
  560. package/dist/server/agent-teams-run-queue.d.ts.map +1 -1
  561. package/dist/server/agent-teams-run-queue.js +61 -18
  562. package/dist/server/agent-teams-run-queue.js.map +1 -1
  563. package/dist/server/agent-teams.d.ts +27 -1
  564. package/dist/server/agent-teams.d.ts.map +1 -1
  565. package/dist/server/agent-teams.js +214 -14
  566. package/dist/server/agent-teams.js.map +1 -1
  567. package/dist/server/app-base-path.d.ts +20 -0
  568. package/dist/server/app-base-path.d.ts.map +1 -1
  569. package/dist/server/app-base-path.js +36 -0
  570. package/dist/server/app-base-path.js.map +1 -1
  571. package/dist/server/attachment-actions.d.ts +43 -0
  572. package/dist/server/attachment-actions.d.ts.map +1 -0
  573. package/dist/server/attachment-actions.js +214 -0
  574. package/dist/server/attachment-actions.js.map +1 -0
  575. package/dist/server/auth.js +1 -1
  576. package/dist/server/auth.js.map +1 -1
  577. package/dist/server/complete-text.d.ts +56 -0
  578. package/dist/server/complete-text.d.ts.map +1 -0
  579. package/dist/server/complete-text.js +147 -0
  580. package/dist/server/complete-text.js.map +1 -0
  581. package/dist/server/core-routes-plugin.d.ts +1 -0
  582. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  583. package/dist/server/core-routes-plugin.js +37 -27
  584. package/dist/server/core-routes-plugin.js.map +1 -1
  585. package/dist/server/cors-origins.d.ts.map +1 -1
  586. package/dist/server/cors-origins.js +6 -1
  587. package/dist/server/cors-origins.js.map +1 -1
  588. package/dist/server/create-server.d.ts.map +1 -1
  589. package/dist/server/create-server.js +2 -1
  590. package/dist/server/create-server.js.map +1 -1
  591. package/dist/server/csrf.d.ts +1 -1
  592. package/dist/server/csrf.d.ts.map +1 -1
  593. package/dist/server/email-actions.d.ts +19 -0
  594. package/dist/server/email-actions.d.ts.map +1 -0
  595. package/dist/server/email-actions.js +191 -0
  596. package/dist/server/email-actions.js.map +1 -0
  597. package/dist/server/embed-route.js +1 -1
  598. package/dist/server/embed-route.js.map +1 -1
  599. package/dist/server/embed-session.d.ts.map +1 -1
  600. package/dist/server/embed-session.js +5 -1
  601. package/dist/server/embed-session.js.map +1 -1
  602. package/dist/server/entry-server.d.ts +24 -0
  603. package/dist/server/entry-server.d.ts.map +1 -0
  604. package/dist/server/entry-server.js +54 -0
  605. package/dist/server/entry-server.js.map +1 -0
  606. package/dist/server/framework-request-handler.d.ts.map +1 -1
  607. package/dist/server/framework-request-handler.js +2 -10
  608. package/dist/server/framework-request-handler.js.map +1 -1
  609. package/dist/server/google-oauth.d.ts.map +1 -1
  610. package/dist/server/google-oauth.js +2 -9
  611. package/dist/server/google-oauth.js.map +1 -1
  612. package/dist/server/google-realtime-session.d.ts.map +1 -1
  613. package/dist/server/google-realtime-session.js +6 -4
  614. package/dist/server/google-realtime-session.js.map +1 -1
  615. package/dist/server/h3-helpers.d.ts +39 -0
  616. package/dist/server/h3-helpers.d.ts.map +1 -1
  617. package/dist/server/h3-helpers.js +104 -1
  618. package/dist/server/h3-helpers.js.map +1 -1
  619. package/dist/server/index.d.ts +2 -1
  620. package/dist/server/index.d.ts.map +1 -1
  621. package/dist/server/index.js +2 -1
  622. package/dist/server/index.js.map +1 -1
  623. package/dist/server/onboarding-html.d.ts.map +1 -1
  624. package/dist/server/onboarding-html.js +1 -8
  625. package/dist/server/onboarding-html.js.map +1 -1
  626. package/dist/server/open-route.d.ts.map +1 -1
  627. package/dist/server/open-route.js +1 -0
  628. package/dist/server/open-route.js.map +1 -1
  629. package/dist/server/prompts/framework-core-compact.d.ts +19 -0
  630. package/dist/server/prompts/framework-core-compact.d.ts.map +1 -0
  631. package/dist/server/prompts/framework-core-compact.js +69 -0
  632. package/dist/server/prompts/framework-core-compact.js.map +1 -0
  633. package/dist/server/prompts/framework-core.d.ts +26 -0
  634. package/dist/server/prompts/framework-core.d.ts.map +1 -0
  635. package/dist/server/prompts/framework-core.js +130 -0
  636. package/dist/server/prompts/framework-core.js.map +1 -0
  637. package/dist/server/prompts/index.d.ts +9 -0
  638. package/dist/server/prompts/index.d.ts.map +1 -0
  639. package/dist/server/prompts/index.js +9 -0
  640. package/dist/server/prompts/index.js.map +1 -0
  641. package/dist/server/prompts/model-overlays.d.ts +18 -0
  642. package/dist/server/prompts/model-overlays.d.ts.map +1 -0
  643. package/dist/server/prompts/model-overlays.js +46 -0
  644. package/dist/server/prompts/model-overlays.js.map +1 -0
  645. package/dist/server/prompts/shared-rules.d.ts +29 -0
  646. package/dist/server/prompts/shared-rules.d.ts.map +1 -0
  647. package/dist/server/prompts/shared-rules.js +54 -0
  648. package/dist/server/prompts/shared-rules.js.map +1 -0
  649. package/dist/server/security-headers.d.ts +7 -1
  650. package/dist/server/security-headers.d.ts.map +1 -1
  651. package/dist/server/security-headers.js +11 -0
  652. package/dist/server/security-headers.js.map +1 -1
  653. package/dist/server/ssr-handler.d.ts.map +1 -1
  654. package/dist/server/ssr-handler.js +135 -46
  655. package/dist/server/ssr-handler.js.map +1 -1
  656. package/dist/server/transcribe-voice.d.ts.map +1 -1
  657. package/dist/server/transcribe-voice.js +7 -4
  658. package/dist/server/transcribe-voice.js.map +1 -1
  659. package/dist/settings/store.d.ts.map +1 -1
  660. package/dist/settings/store.js +9 -0
  661. package/dist/settings/store.js.map +1 -1
  662. package/dist/shared/markdown-block-split.d.ts +39 -0
  663. package/dist/shared/markdown-block-split.d.ts.map +1 -0
  664. package/dist/shared/markdown-block-split.js +97 -0
  665. package/dist/shared/markdown-block-split.js.map +1 -0
  666. package/dist/shared/reasoning-effort.js +13 -1
  667. package/dist/shared/reasoning-effort.js.map +1 -1
  668. package/dist/shared/streaming-text-smoothing.d.ts +18 -0
  669. package/dist/shared/streaming-text-smoothing.d.ts.map +1 -1
  670. package/dist/shared/streaming-text-smoothing.js +70 -4
  671. package/dist/shared/streaming-text-smoothing.js.map +1 -1
  672. package/dist/sharing/actions/list-resource-shares.d.ts +24 -1
  673. package/dist/sharing/actions/list-resource-shares.d.ts.map +1 -1
  674. package/dist/sharing/actions/set-resource-visibility.d.ts +8 -1
  675. package/dist/sharing/actions/set-resource-visibility.d.ts.map +1 -1
  676. package/dist/sharing/actions/share-resource.d.ts +12 -1
  677. package/dist/sharing/actions/share-resource.d.ts.map +1 -1
  678. package/dist/sharing/actions/unshare-resource.d.ts +8 -1
  679. package/dist/sharing/actions/unshare-resource.d.ts.map +1 -1
  680. package/dist/sharing/schema.d.ts +10 -10
  681. package/dist/styles/agent-conversation.css +239 -0
  682. package/dist/templates/default/.agents/skills/delegate-to-agent/SKILL.md +50 -2
  683. package/dist/templates/default/AGENTS.md +1 -1
  684. package/dist/templates/default/DEVELOPING.md +19 -0
  685. package/dist/templates/default/app/entry.client.tsx +4 -1
  686. package/dist/templates/default/app/entry.server.tsx +4 -56
  687. package/dist/templates/default/app/global.css +3 -2
  688. package/dist/templates/default/app/root.tsx +8 -24
  689. package/dist/templates/default/app/routes/_index.tsx +0 -13
  690. package/dist/templates/default/package.json +6 -5
  691. package/dist/templates/default/tsconfig.json +2 -1
  692. package/dist/templates/starter-shell-sync.spec.ts +118 -0
  693. package/dist/templates/ui-primitives-sync.spec.ts +399 -0
  694. package/dist/templates/workspace-core/.agents/skills/delegate-to-agent/SKILL.md +50 -2
  695. package/dist/terminal/pty-server.js +1 -1
  696. package/dist/terminal/pty-server.js.map +1 -1
  697. package/dist/triggers/dispatcher.js +1 -1
  698. package/dist/triggers/dispatcher.js.map +1 -1
  699. package/dist/usage/store.d.ts.map +1 -1
  700. package/dist/usage/store.js +60 -7
  701. package/dist/usage/store.js.map +1 -1
  702. package/dist/vite/client.d.ts.map +1 -1
  703. package/dist/vite/client.js +44 -12
  704. package/dist/vite/client.js.map +1 -1
  705. package/dist/workspace-files/index.d.ts +4 -0
  706. package/dist/workspace-files/index.d.ts.map +1 -0
  707. package/dist/workspace-files/index.js +4 -0
  708. package/dist/workspace-files/index.js.map +1 -0
  709. package/dist/workspace-files/schema.d.ts +195 -0
  710. package/dist/workspace-files/schema.d.ts.map +1 -0
  711. package/dist/workspace-files/schema.js +48 -0
  712. package/dist/workspace-files/schema.js.map +1 -0
  713. package/dist/workspace-files/store.d.ts +89 -0
  714. package/dist/workspace-files/store.d.ts.map +1 -0
  715. package/dist/workspace-files/store.js +298 -0
  716. package/dist/workspace-files/store.js.map +1 -0
  717. package/dist/workspace-files/tool.d.ts +15 -0
  718. package/dist/workspace-files/tool.d.ts.map +1 -0
  719. package/dist/workspace-files/tool.js +225 -0
  720. package/dist/workspace-files/tool.js.map +1 -0
  721. package/docs/content/a2a-protocol.md +18 -12
  722. package/docs/content/actions.md +42 -10
  723. package/docs/content/agent-mentions.md +7 -8
  724. package/docs/content/agent-teams.md +23 -37
  725. package/docs/content/agent-web-surfaces.md +18 -9
  726. package/docs/content/authentication.md +6 -17
  727. package/docs/content/automations.md +43 -15
  728. package/docs/content/cli-adapters.md +25 -24
  729. package/docs/content/client.md +66 -17
  730. package/docs/content/cloneable-saas.md +19 -23
  731. package/docs/content/code-agents-ui.md +3 -31
  732. package/docs/content/components.md +308 -0
  733. package/docs/content/context-awareness.md +4 -0
  734. package/docs/content/creating-templates.md +4 -2
  735. package/docs/content/cross-app-sso.md +45 -19
  736. package/docs/content/database.md +26 -1
  737. package/docs/content/deployment.md +3 -1
  738. package/docs/content/dispatch.md +9 -37
  739. package/docs/content/drop-in-agent.md +123 -2
  740. package/docs/content/embedding-sdk.md +35 -0
  741. package/docs/content/extensions.md +2 -2
  742. package/docs/content/external-agents.md +86 -171
  743. package/docs/content/faq.md +6 -27
  744. package/docs/content/frames.md +9 -12
  745. package/docs/content/getting-started.md +80 -77
  746. package/docs/content/key-concepts.md +29 -19
  747. package/docs/content/mcp-apps.md +103 -0
  748. package/docs/content/mcp-clients.md +2 -2
  749. package/docs/content/mcp-protocol.md +40 -17
  750. package/docs/content/messaging.md +11 -4
  751. package/docs/content/migration-workbench.md +4 -47
  752. package/docs/content/multi-app-workspace.md +48 -17
  753. package/docs/content/multi-tenancy.md +1 -1
  754. package/docs/content/notifications.md +8 -6
  755. package/docs/content/observability.md +26 -15
  756. package/docs/content/onboarding.md +7 -1
  757. package/docs/content/pr-visual-recap.md +203 -23
  758. package/docs/content/progress.md +5 -5
  759. package/docs/content/pure-agent-apps.md +3 -1
  760. package/docs/content/real-time-collaboration.md +106 -0
  761. package/docs/content/recurring-jobs.md +17 -1
  762. package/docs/content/security.md +17 -3
  763. package/docs/content/server.md +39 -3
  764. package/docs/content/sharing.md +20 -1
  765. package/docs/content/skills-guide.md +151 -125
  766. package/docs/content/template-analytics.md +8 -0
  767. package/docs/content/template-assets.md +2 -0
  768. package/docs/content/template-brain.md +59 -3
  769. package/docs/content/template-calendar.md +8 -0
  770. package/docs/content/template-clips.md +11 -2
  771. package/docs/content/template-content.md +24 -4
  772. package/docs/content/template-design.md +19 -17
  773. package/docs/content/template-dispatch.md +2 -0
  774. package/docs/content/template-forms.md +28 -1
  775. package/docs/content/template-mail.md +17 -0
  776. package/docs/content/template-plan.md +177 -10
  777. package/docs/content/template-slides.md +51 -12
  778. package/docs/content/template-videos.md +17 -0
  779. package/docs/content/tracking.md +17 -13
  780. package/docs/content/using-your-agent.md +15 -5
  781. package/docs/content/voice-input.md +1 -1
  782. package/docs/content/what-is-agent-native.md +5 -6
  783. package/docs/content/workspace-connections.md +138 -424
  784. package/docs/content/workspace-management.md +12 -128
  785. package/docs/content/workspace.md +125 -199
  786. package/docs/content/writing-agent-instructions.md +17 -1
  787. package/package.json +26 -6
  788. package/src/templates/default/.agents/skills/delegate-to-agent/SKILL.md +50 -2
  789. package/src/templates/default/AGENTS.md +1 -1
  790. package/src/templates/default/DEVELOPING.md +19 -0
  791. package/src/templates/default/app/entry.client.tsx +4 -1
  792. package/src/templates/default/app/entry.server.tsx +4 -56
  793. package/src/templates/default/app/global.css +3 -2
  794. package/src/templates/default/app/root.tsx +8 -24
  795. package/src/templates/default/app/routes/_index.tsx +0 -13
  796. package/src/templates/default/package.json +6 -5
  797. package/src/templates/default/tsconfig.json +2 -1
  798. package/src/templates/starter-shell-sync.spec.ts +118 -0
  799. package/src/templates/ui-primitives-sync.spec.ts +399 -0
  800. package/src/templates/workspace-core/.agents/skills/delegate-to-agent/SKILL.md +50 -2
  801. package/tsconfig.base.json +2 -10
  802. package/dist/cli/app-skill.d.ts +0 -157
  803. package/dist/cli/app-skill.d.ts.map +0 -1
  804. package/dist/cli/audit-agent-web.d.ts +0 -2
  805. package/dist/cli/audit-agent-web.d.ts.map +0 -1
  806. package/dist/cli/code-agent-connector.d.ts +0 -17
  807. package/dist/cli/code-agent-connector.d.ts.map +0 -1
  808. package/dist/cli/code.d.ts +0 -66
  809. package/dist/cli/code.d.ts.map +0 -1
  810. package/dist/cli/connect.d.ts +0 -140
  811. package/dist/cli/connect.d.ts.map +0 -1
  812. package/dist/cli/context-xray-local.d.ts +0 -16
  813. package/dist/cli/context-xray-local.d.ts.map +0 -1
  814. package/dist/cli/create-workspace.d.ts +0 -8
  815. package/dist/cli/create-workspace.d.ts.map +0 -1
  816. package/dist/cli/index.d.ts +0 -3
  817. package/dist/cli/index.d.ts.map +0 -1
  818. package/dist/cli/info.d.ts +0 -2
  819. package/dist/cli/info.d.ts.map +0 -1
  820. package/dist/cli/mcp-config-writers.d.ts +0 -82
  821. package/dist/cli/mcp-config-writers.d.ts.map +0 -1
  822. package/dist/cli/mcp.d.ts +0 -16
  823. package/dist/cli/mcp.d.ts.map +0 -1
  824. package/dist/cli/migrate.d.ts +0 -38
  825. package/dist/cli/migrate.d.ts.map +0 -1
  826. package/dist/cli/plan-local.d.ts +0 -43
  827. package/dist/cli/plan-local.d.ts.map +0 -1
  828. package/dist/cli/plan-publish-store.d.ts +0 -62
  829. package/dist/cli/plan-publish-store.d.ts.map +0 -1
  830. package/dist/cli/pr-visual-recap-workflow.d.ts +0 -11
  831. package/dist/cli/pr-visual-recap-workflow.d.ts.map +0 -1
  832. package/dist/cli/recap.d.ts +0 -297
  833. package/dist/cli/recap.d.ts.map +0 -1
  834. package/dist/cli/skills.d.ts +0 -162
  835. package/dist/cli/skills.d.ts.map +0 -1
  836. package/dist/cli/workspace-dev.d.ts +0 -96
  837. package/dist/cli/workspace-dev.d.ts.map +0 -1
@@ -5,65 +5,78 @@ description: "Shared provider metadata, grants, and credential refs for connect-
5
5
 
6
6
  # Workspace Connections
7
7
 
8
- Workspace connections are the framework primitive for reusable integration
9
- metadata. They make "connect once, grant apps, reuse credentials" possible
10
- without pretending every provider is fully generic. The workspace/Dispatch
11
- layer records provider accounts once, grants apps such as Brain, Analytics,
12
- Mail, and Dispatch access, and lets each app's UI and agent inspect safe
13
- integration metadata before asking for another credential.
14
-
15
- They have three shared pieces:
16
-
17
- - A typed provider catalog that templates import to describe the external
18
- systems they understand.
19
- - A scoped SQL store for connected accounts plus per-app grants, so Dispatch or
20
- another workspace setup flow can connect Slack, GitHub, Google Drive, Granola,
21
- or another provider once and then grant individual apps access.
22
- - A conservative provider-reader registry/runtime that standardizes provider
23
- `search`, `get`, and `listRecent` contracts and calls registered handlers
24
- through granted workspace connections.
25
- - An app-local boundary: the shared connection owns provider identity,
26
- credential refs, account metadata, and grants; each app owns the source
27
- choices and interpretation that only make sense inside that app.
28
-
29
- The store records provider ids, account labels, non-secret config, credential
30
- reference names, health state, and grant rows. It does not run OAuth and never
31
- returns secret values. Secret values stay in the credential vault and are
32
- resolved by actions at execution time from the request's user/org/workspace
33
- scope.
34
-
35
- That boundary is intentional. What is reusable today is provider identity,
36
- credential-reference resolution, per-app grants, provider readiness, safe
37
- account metadata, and the normalized provider-reader contract. What is not yet
38
- generic is most live provider API reading, OAuth flow ownership, ingestion
39
- cursors, source filters, sync cadence, and domain interpretation. Those stay in
40
- the app that owns the workflow unless a reader implementation is explicitly
41
- promoted to shared.
42
-
43
- Dispatch exposes the first control-plane implementation through the
44
- `list-workspace-connections`, `upsert-workspace-connection`, and
45
- `set-workspace-connection-grant` actions. App-specific actions then consume the
46
- same records. Brain uses `list-connection-providers`; Analytics uses
47
- `data-source-status`; future apps should expose the same kind of readiness
48
- summary before asking users for duplicate provider keys.
49
-
50
- ## Provider Reader Runtime
51
-
52
- The provider-reader layer is a contract first, not a promise that every
53
- provider has a shared live reader. Reader definitions describe supported
54
- operations, credential requirements, and implementation status:
55
- `metadata-only`, `template-owned`, or `shared`. The runtime resolves the granted
56
- workspace connection and credential refs for an app, calls a registered handler,
57
- and returns normalized items without exposing secret values.
58
-
59
- Initial providers such as Slack, GitHub, Notion, HubSpot, Gmail, Google Drive,
60
- and generic sources have conservative definitions. Most live handlers remain
61
- template-owned today, which means Brain still owns Slack/GitHub ingestion
62
- behavior and Analytics still owns analytics interpretation. Promote a reader to
63
- `shared` only when the provider-specific API calls, pagination, permissions,
64
- and result semantics are truly reusable across templates.
65
-
66
- ## Provider Catalog
8
+ Workspace connections are the framework primitive for reusable integration metadata. They make "connect once, grant apps, reuse credentials" possible without pretending every provider is fully generic.
9
+
10
+ ## Quickstart {#quickstart}
11
+
12
+ ### The four concepts
13
+
14
+ - **Connection** — a named provider account (`team-slack`, `acme-hubspot`). Records provider id, account label, status, scopes, and safe config. Never stores secret values.
15
+ - **Grant** permission for a specific app to use a connection. An app without a grant cannot see the connection's credentials.
16
+ - **credentialRef** — a pointer to a vault secret (`{ key: "SLACK_BOT_TOKEN", scope: "org" }`). The connection says where the token lives; the vault holds the value.
17
+ - **Readiness** the combined status an app sees: `connected` (granted + credentials present), `needs_grant`, `needs_credentials`, `needs_attention`, or `not_configured`.
18
+
19
+ ### Worked example: Slack
20
+
21
+ Connect Slack once and grant it to Brain and Analytics:
22
+
23
+ ```ts
24
+ import {
25
+ upsertWorkspaceConnection,
26
+ upsertWorkspaceConnectionGrant,
27
+ } from "@agent-native/core/workspace-connections";
28
+
29
+ await upsertWorkspaceConnection({
30
+ id: "acme-slack",
31
+ provider: "slack",
32
+ label: "Acme Slack",
33
+ accountId: "T012345",
34
+ accountLabel: "Acme",
35
+ status: "connected",
36
+ scopes: ["channels:history", "groups:history", "chat:write"],
37
+ config: {
38
+ teamDomain: "acme",
39
+ channelHints: ["product", "dev-fusion", "customer-success"],
40
+ },
41
+ credentialRefs: [{ key: "SLACK_BOT_TOKEN", scope: "org" }],
42
+ });
43
+
44
+ await upsertWorkspaceConnectionGrant({
45
+ connectionId: "acme-slack",
46
+ appId: "brain",
47
+ });
48
+ await upsertWorkspaceConnectionGrant({
49
+ connectionId: "acme-slack",
50
+ appId: "analytics",
51
+ });
52
+ ```
53
+
54
+ ### What apps call
55
+
56
+ Before asking a user to paste a new key, check readiness first:
57
+
58
+ ```ts
59
+ import { listWorkspaceConnectionProviderCatalogForApp } from "@agent-native/core/workspace-connections";
60
+
61
+ const catalog = await listWorkspaceConnectionProviderCatalogForApp({
62
+ appId: "brain",
63
+ templateUse: "brain",
64
+ provider: "slack",
65
+ includeConnections: "all",
66
+ });
67
+
68
+ const slack = catalog.providers[0];
69
+ if (slack.workspaceConnection.grantState === "needs_grant") {
70
+ // Show "Grant Brain access" instead of asking for a second Slack token.
71
+ }
72
+ if (slack.readiness.status === "needs_credentials") {
73
+ // Show the missing credential ref names, never a secret value.
74
+ }
75
+ ```
76
+
77
+ ## Reference {#reference}
78
+
79
+ ### Provider Catalog
67
80
 
68
81
  Import the catalog from `@agent-native/core/connections`:
69
82
 
@@ -96,12 +109,9 @@ The initial provider ids are:
96
109
  | `clips` | search, import, meetings | brain, clips, videos |
97
110
  | `generic` | search, import, docs | custom webhooks and file drops |
98
111
 
99
- Credential keys are names only, such as `SLACK_BOT_TOKEN` or `GITHUB_TOKEN`.
100
- Provider metadata must never include actual credential values.
101
-
102
- ## Connection Store
112
+ Credential keys are names only, such as `SLACK_BOT_TOKEN` or `GITHUB_TOKEN`. Provider metadata must never include actual credential values.
103
113
 
104
- Import the shared store from `@agent-native/core/workspace-connections`:
114
+ ### Connection Store API
105
115
 
106
116
  ```ts
107
117
  import {
@@ -115,19 +125,6 @@ import {
115
125
  revokeWorkspaceConnectionGrant,
116
126
  } from "@agent-native/core/workspace-connections";
117
127
 
118
- await upsertWorkspaceConnection({
119
- id: "team-slack",
120
- provider: "slack",
121
- label: "Team Slack",
122
- accountLabel: "Acme",
123
- credentialRefs: [{ key: "SLACK_BOT_TOKEN", scope: "org" }],
124
- });
125
-
126
- await upsertWorkspaceConnectionGrant({
127
- connectionId: "team-slack",
128
- appId: "dispatch",
129
- });
130
-
131
128
  const connections = await listWorkspaceConnections({ includeDisabled: true });
132
129
  const grants = await listWorkspaceConnectionGrants({ appId: "brain" });
133
130
 
@@ -151,127 +148,61 @@ const brainCatalog = await listWorkspaceConnectionProviderCatalogForApp({
151
148
  });
152
149
  ```
153
150
 
154
- The `credentialRefs` array points at vault keys; it is not credential storage.
155
- For example, `{ key: "SLACK_BOT_TOKEN", scope: "org" }` tells a granted app to
156
- look up the org-scoped vault secret named `SLACK_BOT_TOKEN` when it needs to
157
- call Slack. Connection-level refs can describe the provider account, and
158
- grant-level refs can narrow or override what a specific app should use.
151
+ The `credentialRefs` array points at vault keys; it is not credential storage. For example, `{ key: "SLACK_BOT_TOKEN", scope: "org" }` tells a granted app to look up the org-scoped vault secret named `SLACK_BOT_TOKEN` when it needs to call Slack. Connection-level refs describe the provider account; grant-level refs can narrow or override what a specific app should use.
159
152
 
160
- Connection rows are scoped to the active org when one is present. Without an
161
- org, they are scoped to the authenticated user. Grant rows use the same scope,
162
- which means any member of an org can see org-level grants while other orgs and
163
- personal scopes cannot.
153
+ Connection rows are scoped to the active org when one is present. Without an org, they are scoped to the authenticated user. Grant rows use the same scope.
164
154
 
165
- `allowedApps` on a connection is still supported for compatibility:
155
+ **Legacy `allowedApps` field:** `allowedApps: []` means every app in the same scope may use the connection; `allowedApps: ["dispatch"]` grants access through the legacy field. Use explicit `workspace_connection_grants` rows for new setup — they make revocation, audit, and per-app readiness easier. `revokeWorkspaceConnectionGrant(connectionId, appId)` removes an explicit grant but does not change legacy `allowedApps`.
166
156
 
167
- - `allowedApps: []` means every app in the same scope may use the connection.
168
- - `allowedApps: ["dispatch"]` grants access through the legacy field.
169
- - `workspace_connection_grants` rows add explicit per-app grants alongside the
170
- legacy field.
157
+ Use `summarizeWorkspaceConnectionProviderForApp()` and `summarizeWorkspaceConnectionProviderReadiness()` for app-facing status instead of hand-rolling grant checks. The shared summaries return `grantState`, `grantAvailability`, safe credential ref names, per-app connection rows, and readiness fields such as `readyConnectionCount` and `missingRequiredCredentialKeys`.
171
158
 
172
- Use `revokeWorkspaceConnectionGrant(connectionId, appId)` to remove an explicit
173
- grant. Revoking a grant does not change legacy `allowedApps`; if the app is
174
- still listed there, the connection remains available to that app.
159
+ For new app setup screens, prefer `listWorkspaceConnectionProviderCatalogForApp()` as the higher-level boundary — it combines the provider catalog, scoped connections, explicit grants, per-app access summaries, and provider readiness into one safe shape.
175
160
 
176
- Use `summarizeWorkspaceConnectionProviderForApp()` and
177
- `summarizeWorkspaceConnectionProviderReadiness()` for app-facing status instead
178
- of hand-rolling grant checks. The shared summaries return the stable contract
179
- used by Brain, Analytics, and Dispatch: `grantState`, `grantAvailability`,
180
- safe credential ref names, per-app connection rows, counts for granted/active
181
- connections, and readiness fields such as `readyConnectionCount` and
182
- `missingRequiredCredentialKeys`.
161
+ ### How this complements the vault
183
162
 
184
- For new app setup screens, prefer
185
- `listWorkspaceConnectionProviderCatalogForApp()` as the higher-level boundary.
186
- It combines the provider catalog, scoped connections, explicit grants,
187
- per-app access summaries, and provider readiness into one safe shape. Apps can
188
- add their own source counts, local health checks, and connector-specific
189
- fields on top without duplicating grant logic.
163
+ The credential vault answers: "Where is the secret stored, who can access it, and which apps are granted it?"
190
164
 
191
- ## How This Complements The Vault
165
+ Workspace connection provider metadata answers: "Which provider is this, what can it do, what credential keys might it need, and which templates should offer it?"
192
166
 
193
- The credential vault answers: "Where is the secret stored, who can access it,
194
- and which apps are granted it?"
167
+ Use both together:
195
168
 
196
- Workspace connection provider metadata answers: "Which provider is this, what
197
- can it do, what credential keys might it need, and which templates should offer
198
- it?"
169
+ 1. Dispatch (or another workspace setup flow) creates the underlying vault secret or OAuth credential reference.
170
+ 2. The workspace connection store records the provider account, safe metadata, credential refs, and app grants.
171
+ 3. Each app reads provider metadata from the catalog and connection/grant summaries from the shared store.
172
+ 4. The app UI shows readiness: connected, granted but unhealthy, needs grant, missing credentials, or metadata-only.
173
+ 5. App-specific SQL stores only app-specific source ids, cursors, filters, sync windows, metric definitions, review rules, and user choices.
174
+ 6. App actions resolve credentials at execution time through granted connection refs and the vault, and never return secret values.
199
175
 
200
- Use both together:
176
+ ### Provider reader runtime
177
+
178
+ The provider-reader layer is a contract first, not a promise that every provider has a shared live reader. Reader definitions describe supported operations, credential requirements, and implementation status: `metadata-only`, `template-owned`, or `shared`. The runtime resolves the granted workspace connection and credential refs for an app, calls a registered handler, and returns normalized items without exposing secret values.
201
179
 
202
- 1. Dispatch or another workspace setup flow creates/grants the underlying vault
203
- secret or OAuth credential reference.
204
- 2. The workspace connection store records the provider account, safe metadata,
205
- credential refs, and app grants.
206
- 3. Each app reads provider metadata from the catalog and connection/grant
207
- summaries from the shared store.
208
- 4. The app UI shows readiness: connected, granted but unhealthy, needs grant,
209
- missing credentials, or metadata-only.
210
- 5. App-specific SQL stores only app-specific source ids, cursors, filters,
211
- sync windows, metric definitions, review rules, and user choices.
212
- 6. App actions resolve credentials at execution time through granted connection
213
- refs and the vault, and never return secret values.
214
-
215
- App source connectors should not read deploy-level environment variables as a
216
- fallback for user/org source credentials. Env vars are global to the deployment
217
- and do not express workspace grants. Brain's current source resolver checks
218
- granted workspace connection refs for `appId=brain` first, then backward
219
- compatible Brain-local SQL credentials and registered vault secrets; it does not
220
- fall back to `process.env`.
221
-
222
- Agents should use the same summaries as the UI. Before asking for a duplicate
223
- Slack, GitHub, HubSpot, Google, or other provider key, an agent should inspect
224
- the workspace connection catalog or the app's readiness action and prefer a
225
- granted shared connection when one exists. If a connection exists with
226
- `needs_grant`, ask for that app grant instead of asking the user to paste a new
227
- secret.
228
-
229
- ## Minimal Onboarding Flow
230
-
231
- Use a connect-once flow before app-specific source setup:
232
-
233
- 1. Connect the provider account in Dispatch or the workspace integrations
234
- surface.
235
- 2. Store safe metadata and credential ref names only; put secret values in the
236
- vault.
237
- 3. Grant only the apps that need the provider, such as Brain, Analytics, Mail,
238
- or Dispatch.
239
- 4. In each app, create the app-local source or data source with only the
240
- provider-specific choices it owns: channels, repositories, polling windows,
241
- filters, cursors, or sync cadence.
242
- 5. Agents inspect readiness and grants before asking for new credentials.
243
-
244
- This keeps the UX clean without overclaiming the abstraction: users connect
245
- Slack, GitHub, HubSpot, Google Drive, Granola, and similar providers once, then
246
- choose which apps may use the credential/account metadata. Each app still
247
- decides what data to read, how to read it, and what the data means.
248
-
249
- ## Build A Reusable Connector Once
250
-
251
- When a new provider should work across multiple templates, split the work into
252
- three layers:
253
-
254
- 1. **Provider metadata:** add or reuse a provider in
255
- `@agent-native/core/connections`. This is the stable id, display label,
256
- capability list, recommended template uses, and credential key names.
257
- 2. **Workspace connection:** Dispatch or another workspace setup surface stores
258
- the connected account's safe metadata, status, scopes, `credentialRefs`, and
259
- app grants through `@agent-native/core/workspace-connections`.
260
- 3. **App-local source:** Brain, Analytics, Mail, or another app stores only the
261
- app-specific choices it owns, such as Slack channels, GitHub repositories,
262
- HubSpot object filters, sync cursors, or polling cadence.
263
-
264
- Do not duplicate OAuth/token storage in each app. The connection record should
265
- say "this is Acme Slack and its token lives at `SLACK_BOT_TOKEN`"; the app-local
266
- source should say "Brain may ingest `#product` and `#dev-fusion` from that
267
- Slack connection." The Slack API handler, cursor, retry policy, and
268
- distillation rules still belong to Brain unless and until those pieces are
269
- promoted to a shared provider-reader implementation.
180
+ Most live handlers remain template-owned today, which means Brain still owns Slack/GitHub ingestion behavior and Analytics still owns analytics interpretation. Promote a reader to `shared` only when the provider-specific API calls, pagination, permissions, and result semantics are truly reusable across templates.
181
+
182
+ ### App readiness pattern
183
+
184
+ Apps that consume shared provider credentials should expose a read-only readiness action and a small setup surface covering:
185
+
186
+ - **Provider catalog:** provider id, label, capabilities, recommended template uses, and required credential key names from `@agent-native/core/connections`.
187
+ - **Workspace summary:** connection count, active/granted counts, grant state, credential ref names, and non-secret account labels from `@agent-native/core/workspace-connections`.
188
+ - **Provider readiness:** `ready`, `needs_credentials`, `needs_attention`, `checking`, `disabled`, or `not_configured` via `summarizeWorkspaceConnectionProviderReadiness()`.
189
+ - **Source state:** app-local configured sources, cursors, sync status, and next action.
190
+
191
+ Brain's Sources page is the reference implementation. It shows reusable workspace connection providers beside Brain source records, labels grant states as `connected`, `granted`, `needs_grant`, or `not_connected`, and shows provider health as ready, missing keys, grant needed, needs repair, or metadata only.
192
+
193
+ ### Building a reusable connector
194
+
195
+ When a new provider should work across multiple templates:
196
+
197
+ 1. **Provider metadata:** add or reuse a provider in `@agent-native/core/connections`. This is the stable id, display label, capability list, recommended template uses, and credential key names.
198
+ 2. **Workspace connection:** Dispatch or another workspace setup surface stores the connected account's safe metadata, status, scopes, `credentialRefs`, and app grants through `@agent-native/core/workspace-connections`.
199
+ 3. **App-local source:** Brain, Analytics, Mail, or another app stores only the app-specific choices it owns, such as Slack channels, GitHub repositories, HubSpot object filters, sync cursors, or polling cadence.
200
+
201
+ Do not duplicate OAuth/token storage in each app. The connection record says "this is Acme Slack and its token lives at `SLACK_BOT_TOKEN`"; the app-local source says "Brain may ingest `#product` and `#dev-fusion` from that Slack connection."
270
202
 
271
203
  ### Dispatch control-plane setup
272
204
 
273
- Dispatch exposes the current control-plane actions. They write the same shared
274
- store functions an app could call directly from server code:
205
+ Dispatch exposes control-plane actions that write the same shared store functions an app could call directly:
275
206
 
276
207
  ```ts
277
208
  // templates/dispatch/actions/upsert-workspace-connection.ts delegates to this.
@@ -283,10 +214,7 @@ await upsertWorkspaceConnection({
283
214
  accountLabel: "acme",
284
215
  status: "connected",
285
216
  scopes: ["channels:history", "groups:history"],
286
- config: {
287
- teamDomain: "acme",
288
- preferredChannels: ["product", "dev-fusion"],
289
- },
217
+ config: { teamDomain: "acme", preferredChannels: ["product", "dev-fusion"] },
290
218
  credentialRefs: [
291
219
  {
292
220
  key: "SLACK_BOT_TOKEN",
@@ -296,263 +224,49 @@ await upsertWorkspaceConnection({
296
224
  },
297
225
  ],
298
226
  });
299
- ```
300
-
301
- Then grant the apps that should reuse the provider:
302
227
 
303
- ```ts
228
+ // Then grant the apps that should reuse the provider.
304
229
  await upsertWorkspaceConnectionGrant({
305
230
  connectionId: "team-slack",
306
231
  appId: "brain",
307
232
  });
308
-
309
233
  await upsertWorkspaceConnectionGrant({
310
234
  connectionId: "team-slack",
311
235
  appId: "analytics",
312
236
  });
313
237
  ```
314
238
 
315
- Use `allowedApps: []` only when a connection should be available to every app in
316
- the same workspace scope. Prefer explicit grant rows for production setup,
317
- because they make revocation, audit, and per-app readiness easier to explain.
318
-
319
- ### App consumption boundary
320
-
321
- App setup screens and agents should use the high-level catalog helper whenever
322
- they need provider readiness:
323
-
324
- ```ts
325
- import { listWorkspaceConnectionProviderCatalogForApp } from "@agent-native/core/workspace-connections";
326
-
327
- const catalog = await listWorkspaceConnectionProviderCatalogForApp({
328
- appId: "brain",
329
- templateUse: "brain",
330
- provider: "slack",
331
- includeConnections: "all",
332
- });
333
-
334
- const slack = catalog.providers[0];
335
- if (slack.workspaceConnection.grantState === "needs_grant") {
336
- // Show "Grant Brain access" instead of asking for a second Slack token.
337
- }
338
- if (slack.readiness.status === "needs_credentials") {
339
- // Show the missing credential ref names, never a secret value.
340
- }
341
- ```
342
-
343
- App execution code can then resolve credential values from granted
344
- `credentialRefs` through the vault in the active request scope. Brain's
345
- `source-credentials.ts` is the current reference implementation: it lists
346
- workspace connections for the provider, checks `getWorkspaceConnectionAppAccess`
347
- for `appId: "brain"`, merges connection-level and grant-level credential refs,
348
- and reads the first matching scoped vault secret. Other apps should follow that
349
- shape instead of reaching for `process.env`.
350
-
351
- ## Concrete Provider Examples
352
-
353
- ### Slack: Brain, Analytics, Dispatch
354
-
355
- Use one Slack workspace connection for channel history and messaging-related
356
- workflows:
357
-
358
- ```ts
359
- await upsertWorkspaceConnection({
360
- id: "acme-slack",
361
- provider: "slack",
362
- label: "Acme Slack",
363
- accountId: "T012345",
364
- accountLabel: "Acme",
365
- status: "connected",
366
- scopes: ["channels:history", "groups:history", "chat:write"],
367
- config: {
368
- teamDomain: "acme",
369
- channelHints: ["product", "dev-fusion", "customer-success"],
370
- },
371
- credentialRefs: [{ key: "SLACK_BOT_TOKEN", scope: "org" }],
372
- });
239
+ Use `allowedApps: []` only when a connection should be available to every app in the same scope. Prefer explicit grant rows for production setup.
373
240
 
374
- await upsertWorkspaceConnectionGrant({
375
- connectionId: "acme-slack",
376
- appId: "brain",
377
- });
378
- await upsertWorkspaceConnectionGrant({
379
- connectionId: "acme-slack",
380
- appId: "analytics",
381
- });
382
- await upsertWorkspaceConnectionGrant({
383
- connectionId: "acme-slack",
384
- appId: "dispatch",
385
- });
386
- ```
241
+ ### Credential resolution
387
242
 
388
- - **Brain** stores allow-listed channels, exclusion rules, cursors, and source
389
- status in `brain_sources`; it resolves `SLACK_BOT_TOKEN` from the granted
390
- workspace connection before Brain-local credentials.
391
- - **Analytics** should check `data-source-status` for the Slack provider and
392
- use shared readiness before requesting a Slack credential for channel or
393
- funnel analysis.
394
- - **Dispatch** owns the setup/grant UX and can use the same connection for
395
- Slack-triggered routing, notifications, and agent entrypoints.
243
+ App execution code resolves credential values from granted `credentialRefs` through the vault in the active request scope. Brain's `source-credentials.ts` is the current reference implementation: it lists workspace connections for the provider, checks `getWorkspaceConnectionAppAccess` for `appId: "brain"`, merges connection-level and grant-level credential refs, and reads the first matching scoped vault secret. Other apps should follow that shape instead of reaching for `process.env`.
396
244
 
397
- ### HubSpot: Analytics, Brain, Mail
245
+ ## Design notes {#design-notes}
398
246
 
399
- Use one HubSpot private app token for CRM records that multiple apps can
400
- interpret differently:
247
+ <details>
248
+ <summary>Reader-promotion policy and path to "connect once, use everywhere"</summary>
401
249
 
402
- ```ts
403
- await upsertWorkspaceConnection({
404
- id: "acme-hubspot",
405
- provider: "hubspot",
406
- label: "Acme HubSpot",
407
- accountLabel: "Acme CRM",
408
- status: "connected",
409
- scopes: ["crm.objects.contacts.read", "crm.objects.companies.read"],
410
- config: {
411
- portalId: "1234567",
412
- objectHints: ["companies", "contacts", "deals"],
413
- },
414
- credentialRefs: [{ key: "HUBSPOT_PRIVATE_APP_TOKEN", scope: "org" }],
415
- });
250
+ ### App-local boundary
416
251
 
417
- for (const appId of ["analytics", "brain", "mail"]) {
418
- await upsertWorkspaceConnectionGrant({
419
- connectionId: "acme-hubspot",
420
- appId,
421
- });
422
- }
423
- ```
252
+ The boundary between shared connections and app-local sources is intentional. What is reusable today is provider identity, credential-reference resolution, per-app grants, provider readiness, safe account metadata, and the normalized provider-reader contract. What is not yet generic is most live provider API reading, OAuth flow ownership, ingestion cursors, source filters, sync cadence, and domain interpretation. Those stay in the app that owns the workflow unless a reader implementation is explicitly promoted to shared.
424
253
 
425
- - **Analytics** is the first consumer for CRM metrics, lifecycle dashboards, and
426
- customer segmentation. Its readiness action should show a HubSpot workspace
427
- connection before asking for duplicate CRM secrets.
428
- - **Brain** can ingest selected customer-facing context, policies, and product
429
- rationale derived from CRM workflows while keeping Brain-specific allow-lists
430
- and proposal gates in Brain SQL.
431
- - **Mail** should use the same workspace connection pattern when adding CRM
432
- enrichment to mailbox workflows. The provider catalog already recommends
433
- `hubspot` for `mail`; a Mail readiness action should call
434
- `listWorkspaceConnectionProviderCatalogForApp({ appId: "mail" })` before
435
- prompting for a HubSpot token.
254
+ App source connectors should not read deploy-level environment variables as a fallback for user/org source credentials. Env vars are global to the deployment and do not express workspace grants.
436
255
 
437
- ### GitHub: Brain, Analytics, Dispatch
256
+ Agents should follow a simple rule: if a user asks to connect Slack, GitHub, HubSpot, Gmail, Google Drive, Granola, or another shared provider, inspect the workspace connection catalog first. If the provider is `connected`, use it. If it is `needs_grant`, ask for or perform the app grant. If it is `needs_credentials`, ask for the missing vault key. Only ask for a new raw key when no reusable connection exists.
438
257
 
439
- Use one GitHub connection for repositories, issues, pull requests, and code
440
- context:
258
+ ### Path to "connect once, use everywhere"
441
259
 
442
- ```ts
443
- await upsertWorkspaceConnection({
444
- id: "acme-github",
445
- provider: "github",
446
- label: "Acme GitHub",
447
- accountLabel: "acme",
448
- status: "connected",
449
- scopes: ["contents:read", "issues:read", "pull_requests:read"],
450
- config: {
451
- owner: "acme",
452
- repositoryHints: ["agent-native", "website"],
453
- },
454
- credentialRefs: [{ key: "GITHUB_TOKEN", scope: "org" }],
455
- });
260
+ The provider catalog and grant store are the foundation for a broader workspace layer:
456
261
 
457
- await upsertWorkspaceConnectionGrant({
458
- connectionId: "acme-github",
459
- appId: "brain",
460
- });
461
- await upsertWorkspaceConnectionGrant({
462
- connectionId: "acme-github",
463
- appId: "analytics",
464
- });
465
- await upsertWorkspaceConnectionGrant({
466
- connectionId: "acme-github",
467
- appId: "dispatch",
468
- });
469
- ```
262
+ - Shared provider ids and capability names keep templates aligned.
263
+ - Workspace-level inventory can show which providers are configured across Brain, Mail, Analytics, Dispatch, and future apps.
264
+ - Connection rows record account labels, status, allowed apps, credential refs, and health checks without changing template-facing provider ids.
265
+ - Grant rows let a workspace owner connect once, then enable individual apps as the workspace adopts them.
266
+ - Agents can route work across apps knowing which providers are already connected and which apps have grants.
267
+ - Federated search can ask for providers with `search`, `docs`, `messages`, `meetings`, `crm`, or `code` capabilities instead of hardcoding every app's connector list.
268
+ - Provider-specific readers, OAuth refresh flows, ingestion checkpoints, and app-owned data models can become shared later, but they are not implied by a workspace connection today.
470
269
 
471
- - **Brain** can turn issues, pull requests, and design discussions into cited
472
- product memory, with app-local repo allow-lists and distillation rules.
473
- - **Analytics** can use the same granted token for engineering throughput,
474
- release, and operational dashboards.
475
- - **Dispatch** can route GitHub-related questions to the right app or connected
476
- agent without owning repository-specific ingestion state.
477
-
478
- ## Consumer Guide By Surface
479
-
480
- | Surface | What it should read | What it should store locally |
481
- | ------------- | ------------------------------------------------------- | ----------------------------------------------------------------- |
482
- | **Dispatch** | Full provider catalog, connections, grants, app targets | Workspace setup policy, grant choices, safe account metadata |
483
- | **Brain** | Catalog helper with `{ appId: "brain" }` | Sources, allow-lists, cursors, extraction rules, proposals |
484
- | **Analytics** | `data-source-status` plus workspace provider summaries | Metric definitions, datasets, sync windows, dashboard choices |
485
- | **Mail** | A Mail readiness action using the same catalog helper | Mailboxes, labels, reply rules, CRM enrichment preferences |
486
- | **Agents** | App readiness actions before asking for secrets | No secret values; only cite provider ids, grant state, next steps |
487
-
488
- Analytics data sources are app-owned even when their credentials come from a
489
- workspace connection. A HubSpot or GitHub grant tells Analytics which provider
490
- account it may use; the Analytics app still owns the source-of-truth decision,
491
- warehouse-vs-live-provider choice, metric definitions, dashboard semantics, and
492
- saved analyses.
493
-
494
- Brain's "ask across everything" direction should be federated rather than
495
- centralized. Brain can answer from reviewed Brain knowledge and raw captures it
496
- is allowed to search. When a question needs live app-owned data such as current
497
- analytics metrics, mail state, calendar availability, or Dispatch runtime
498
- policy, Brain should delegate to the specialized app agent or action and cite
499
- that result instead of trying to own every app's reader locally.
500
-
501
- Agents should follow a simple rule: if a user asks to connect Slack, GitHub,
502
- HubSpot, Gmail, Google Drive, Granola, or another shared provider, inspect the
503
- workspace connection catalog first. If the provider is `connected`, use it. If
504
- it is `needs_grant`, ask for or perform the app grant. If it is
505
- `needs_credentials`, ask for the missing vault key. Only ask for a new raw key
506
- when no reusable connection exists.
507
-
508
- ## App Readiness Pattern
509
-
510
- Apps that consume shared provider credentials should expose a read-only
511
- readiness action and a small setup surface:
512
-
513
- - **Provider catalog:** provider id, label, capabilities, recommended template
514
- uses, and required credential key names from `@agent-native/core/connections`.
515
- - **Workspace summary:** connection count, active/granted counts, connection
516
- statuses, grant state, credential ref names, and non-secret account labels
517
- from `@agent-native/core/workspace-connections`. Use
518
- `summarizeWorkspaceConnectionProviderForApp()` for this shape.
519
- - **Provider readiness:** use
520
- `summarizeWorkspaceConnectionProviderReadiness()` when the UI needs the
521
- provider-level `ready`, `needs_credentials`, `needs_attention`, `checking`,
522
- `disabled`, or `not_configured` status.
523
- - **Credential health:** whether required keys can be resolved without exposing
524
- values.
525
- - **Source state:** app-local configured sources, cursors, sync status, and
526
- next action.
527
-
528
- Brain's Sources page is the reference implementation. It shows reusable
529
- workspace connection providers beside Brain source records, labels grant states
530
- as `connected`, `granted`, `needs_grant`, or `not_connected`, and shows provider
531
- health as ready, missing keys, grant needed, needs repair, or metadata only.
532
- That lets a Brain user create Slack, Granola, GitHub, Clips, generic, or manual
533
- sources with a clear signal about whether the shared credential path is ready,
534
- grantable, scoped locally, or missing.
535
-
536
- ## Path To Connect Once, Use Everywhere
537
-
538
- The provider catalog and grant store are the foundation for a broader workspace
539
- layer:
270
+ Keep the boundary strict: provider metadata is safe to show; credential values stay in the vault.
540
271
 
541
- - Shared provider ids and capability names keep templates aligned.
542
- - Workspace-level inventory can show which providers are configured across
543
- Brain, Mail, Analytics, Dispatch, and future apps.
544
- - Connection rows record account labels, status, allowed apps, credential refs,
545
- and health checks without changing template-facing provider ids.
546
- - Grant rows let a workspace owner connect once, then enable individual apps as
547
- the workspace adopts them.
548
- - Agents can route work across apps knowing which providers are already
549
- connected and which apps have grants.
550
- - Federated search can ask for providers with `search`, `docs`, `messages`,
551
- `meetings`, `crm`, or `code` capabilities instead of hardcoding every app's
552
- connector list.
553
- - Provider-specific readers, OAuth refresh flows, ingestion checkpoints, and
554
- app-owned data models can become shared later, but they are not implied by a
555
- workspace connection today.
556
-
557
- Keep the boundary strict: provider metadata is safe to show; credential values
558
- stay in the vault.
272
+ </details>