@agent-native/core 0.118.0 → 0.118.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 (375) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +21 -0
  3. package/corpus/core/package.json +1 -1
  4. package/corpus/core/src/a2a/client.ts +32 -10
  5. package/corpus/core/src/cli/index.ts +18 -10
  6. package/corpus/core/src/cli/multi-frontier-runs.ts +5 -3
  7. package/corpus/core/src/cli/templates-meta.ts +0 -12
  8. package/corpus/core/src/cli/workspace-dev.ts +1 -1
  9. package/corpus/core/src/client/AgentPanel.tsx +9 -1
  10. package/corpus/core/src/client/RunStuckBanner.tsx +39 -47
  11. package/corpus/core/src/client/chat/action-chat-ui-surface.tsx +32 -0
  12. package/corpus/core/src/client/chat/message-components.tsx +53 -8
  13. package/corpus/core/src/client/chat/tool-call-display.tsx +24 -9
  14. package/corpus/core/src/client/chat/widgets/InlineExtensionWidget.tsx +0 -1
  15. package/corpus/core/src/client/chat/widgets/builtin-tool-renderers.tsx +7 -3
  16. package/corpus/core/src/client/conversation/AgentConversation.tsx +12 -1
  17. package/corpus/core/src/client/error-capture.ts +2 -6
  18. package/corpus/core/src/client/resources/McpConnectionSuggestion.tsx +20 -14
  19. package/corpus/core/src/client/resources/ResourcesPanel.tsx +5 -1
  20. package/corpus/core/src/client/resources/mcp-integration-catalog.ts +7 -17
  21. package/corpus/core/src/client/resources/mcp-integration-logos.ts +2 -2
  22. package/corpus/core/src/client/route-chunk-recovery.ts +5 -3
  23. package/corpus/core/src/client/session-replay.ts +3 -3
  24. package/corpus/core/src/client/settings/SettingsPanel.tsx +15 -6
  25. package/corpus/core/src/client/transcription/use-live-transcription.ts +64 -45
  26. package/corpus/core/src/deploy/build.ts +2 -1
  27. package/corpus/core/src/guards/db-tool-scoping.ts +1 -1
  28. package/corpus/core/src/integrations/adapters/slack.ts +84 -5
  29. package/corpus/core/src/integrations/index.ts +5 -1
  30. package/corpus/core/src/localization/default-messages.ts +1 -1
  31. package/corpus/core/src/mcp-client/oauth-routes.ts +45 -12
  32. package/corpus/core/src/server/realtime-voice.ts +4 -1
  33. package/corpus/core/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +7 -5
  34. package/corpus/core/src/terminal/cli-registry.ts +1 -1
  35. package/corpus/core/src/vite/client.ts +166 -1
  36. package/corpus/templates/analytics/app/hooks/use-dashboard-views.ts +13 -1
  37. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/ViewsMenu.tsx +10 -0
  38. package/corpus/templates/analytics/changelog/2026-07-22-show-a-useful-error-when-saving-a-dashboard-view-fails.md +6 -0
  39. package/corpus/templates/brain/app/routes/sources.tsx +181 -114
  40. package/corpus/templates/clips/AGENTS.md +8 -6
  41. package/corpus/templates/clips/actions/request-transcript.ts +90 -420
  42. package/corpus/templates/clips/actions/save-browser-transcript.ts +11 -28
  43. package/corpus/templates/clips/app/components/capture-install-options.tsx +5 -3
  44. package/corpus/templates/clips/app/components/player/transcript-panel.tsx +3 -136
  45. package/corpus/templates/clips/app/lib/capture-install-options.ts +15 -4
  46. package/corpus/templates/clips/app/routes/download.tsx +3 -2
  47. package/corpus/templates/clips/changelog/2026-07-22-fixed-an-intermittent-hydration-error-on-the-download-page.md +6 -0
  48. package/corpus/templates/clips/changelog/2026-07-22-fixed-transcript-generation-when-native-speech-capture-retur.md +6 -0
  49. package/corpus/templates/clips/changelog/2026-07-22-transcript-generation-now-retries-with-backup-speech-recogni.md +6 -0
  50. package/corpus/templates/clips/server/lib/public-agent-context.ts +2 -2
  51. package/corpus/templates/clips/server/register-secrets.ts +7 -6
  52. package/corpus/templates/content/app/components/editor/SlashCommandMenu.tsx +16 -84
  53. package/corpus/templates/content/app/components/editor/VisualEditor.tsx +13 -7
  54. package/corpus/templates/content/app/components/editor/extensions/ImageBlock.tsx +2 -2
  55. package/corpus/templates/content/app/i18n-data.ts +10 -0
  56. package/corpus/templates/design/server/lib/fig-file-decoder.ts +1 -0
  57. package/corpus/templates/plan/app/entry.client.tsx +3 -0
  58. package/corpus/templates/plan/changelog/2026-07-22-recover-stale-pages-after-a-deployment-refresh-automatically.md +6 -0
  59. package/corpus/templates/slides/app/hooks/use-agent-generating.ts +10 -3
  60. package/corpus/templates/slides/app/pages/Index.tsx +1 -0
  61. package/corpus/templates/slides/changelog/2026-07-22-new-deck-prompts-now-open-in-their-own-visible-chat-thread.md +6 -0
  62. package/corpus/toolkit/CHANGELOG.md +9 -0
  63. package/corpus/toolkit/package.json +1 -1
  64. package/corpus/toolkit/src/composer/PromptComposer.tsx +5 -1
  65. package/corpus/toolkit/src/composer/RealtimeVoiceMode.tsx +119 -31
  66. package/corpus/toolkit/src/composer/useRealtimeVoiceMode.tsx +30 -0
  67. package/corpus/toolkit/src/conformance/runner.tsx +153 -1
  68. package/corpus/toolkit/src/editor/SharedRichEditor.tsx +13 -2
  69. package/corpus/toolkit/src/editor/SlashCommandMenu.tsx +20 -0
  70. package/corpus/toolkit/src/editor/index.ts +2 -0
  71. package/corpus/toolkit/src/styles.css +52 -23
  72. package/dist/a2a/client.d.ts +3 -1
  73. package/dist/a2a/client.d.ts.map +1 -1
  74. package/dist/a2a/client.js +17 -12
  75. package/dist/a2a/client.js.map +1 -1
  76. package/dist/cli/index.js +18 -8
  77. package/dist/cli/index.js.map +1 -1
  78. package/dist/cli/multi-frontier-runs.js +3 -3
  79. package/dist/cli/multi-frontier-runs.js.map +1 -1
  80. package/dist/cli/templates-meta.d.ts.map +1 -1
  81. package/dist/cli/templates-meta.js +0 -12
  82. package/dist/cli/templates-meta.js.map +1 -1
  83. package/dist/cli/workspace-dev.js +1 -1
  84. package/dist/cli/workspace-dev.js.map +1 -1
  85. package/dist/client/AgentPanel.d.ts.map +1 -1
  86. package/dist/client/AgentPanel.js +4 -1
  87. package/dist/client/AgentPanel.js.map +1 -1
  88. package/dist/client/RunStuckBanner.d.ts +3 -5
  89. package/dist/client/RunStuckBanner.d.ts.map +1 -1
  90. package/dist/client/RunStuckBanner.js +17 -18
  91. package/dist/client/RunStuckBanner.js.map +1 -1
  92. package/dist/client/chat/action-chat-ui-surface.d.ts +8 -0
  93. package/dist/client/chat/action-chat-ui-surface.d.ts.map +1 -0
  94. package/dist/client/chat/action-chat-ui-surface.js +10 -0
  95. package/dist/client/chat/action-chat-ui-surface.js.map +1 -0
  96. package/dist/client/chat/message-components.d.ts +3 -0
  97. package/dist/client/chat/message-components.d.ts.map +1 -1
  98. package/dist/client/chat/message-components.js +40 -7
  99. package/dist/client/chat/message-components.js.map +1 -1
  100. package/dist/client/chat/tool-call-display.d.ts +3 -1
  101. package/dist/client/chat/tool-call-display.d.ts.map +1 -1
  102. package/dist/client/chat/tool-call-display.js +13 -9
  103. package/dist/client/chat/tool-call-display.js.map +1 -1
  104. package/dist/client/chat/widgets/InlineExtensionWidget.d.ts.map +1 -1
  105. package/dist/client/chat/widgets/InlineExtensionWidget.js +1 -1
  106. package/dist/client/chat/widgets/InlineExtensionWidget.js.map +1 -1
  107. package/dist/client/chat/widgets/builtin-tool-renderers.d.ts.map +1 -1
  108. package/dist/client/chat/widgets/builtin-tool-renderers.js +5 -3
  109. package/dist/client/chat/widgets/builtin-tool-renderers.js.map +1 -1
  110. package/dist/client/conversation/AgentConversation.d.ts.map +1 -1
  111. package/dist/client/conversation/AgentConversation.js +3 -2
  112. package/dist/client/conversation/AgentConversation.js.map +1 -1
  113. package/dist/client/error-capture.d.ts.map +1 -1
  114. package/dist/client/error-capture.js +2 -2
  115. package/dist/client/error-capture.js.map +1 -1
  116. package/dist/client/resources/McpConnectionSuggestion.d.ts +1 -0
  117. package/dist/client/resources/McpConnectionSuggestion.d.ts.map +1 -1
  118. package/dist/client/resources/McpConnectionSuggestion.js +9 -8
  119. package/dist/client/resources/McpConnectionSuggestion.js.map +1 -1
  120. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  121. package/dist/client/resources/ResourcesPanel.js +3 -1
  122. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  123. package/dist/client/resources/mcp-integration-catalog.d.ts +1 -0
  124. package/dist/client/resources/mcp-integration-catalog.d.ts.map +1 -1
  125. package/dist/client/resources/mcp-integration-catalog.js +4 -17
  126. package/dist/client/resources/mcp-integration-catalog.js.map +1 -1
  127. package/dist/client/resources/mcp-integration-logos.js +2 -2
  128. package/dist/client/resources/mcp-integration-logos.js.map +1 -1
  129. package/dist/client/route-chunk-recovery.d.ts.map +1 -1
  130. package/dist/client/route-chunk-recovery.js +5 -3
  131. package/dist/client/route-chunk-recovery.js.map +1 -1
  132. package/dist/client/session-replay.js +3 -3
  133. package/dist/client/session-replay.js.map +1 -1
  134. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  135. package/dist/client/settings/SettingsPanel.js +2 -2
  136. package/dist/client/settings/SettingsPanel.js.map +1 -1
  137. package/dist/client/transcription/use-live-transcription.d.ts +3 -3
  138. package/dist/client/transcription/use-live-transcription.d.ts.map +1 -1
  139. package/dist/client/transcription/use-live-transcription.js +22 -11
  140. package/dist/client/transcription/use-live-transcription.js.map +1 -1
  141. package/dist/collab/routes.d.ts +1 -1
  142. package/dist/collab/struct-routes.d.ts +1 -1
  143. package/dist/deploy/build.d.ts.map +1 -1
  144. package/dist/deploy/build.js +1 -1
  145. package/dist/deploy/build.js.map +1 -1
  146. package/dist/guards/db-tool-scoping.js +1 -1
  147. package/dist/guards/db-tool-scoping.js.map +1 -1
  148. package/dist/integrations/adapters/slack.d.ts +1 -0
  149. package/dist/integrations/adapters/slack.d.ts.map +1 -1
  150. package/dist/integrations/adapters/slack.js +61 -5
  151. package/dist/integrations/adapters/slack.js.map +1 -1
  152. package/dist/integrations/index.d.ts +1 -1
  153. package/dist/integrations/index.d.ts.map +1 -1
  154. package/dist/integrations/index.js +1 -1
  155. package/dist/integrations/index.js.map +1 -1
  156. package/dist/localization/default-messages.js +1 -1
  157. package/dist/localization/default-messages.js.map +1 -1
  158. package/dist/mcp-client/oauth-routes.d.ts +3 -0
  159. package/dist/mcp-client/oauth-routes.d.ts.map +1 -1
  160. package/dist/mcp-client/oauth-routes.js +41 -12
  161. package/dist/mcp-client/oauth-routes.js.map +1 -1
  162. package/dist/notifications/routes.d.ts +2 -2
  163. package/dist/observability/routes.d.ts +3 -3
  164. package/dist/provider-api/actions/custom-provider-registration.d.ts +8 -8
  165. package/dist/provider-api/actions/provider-api.d.ts +11 -11
  166. package/dist/secrets/routes.d.ts +6 -6
  167. package/dist/server/realtime-voice.d.ts.map +1 -1
  168. package/dist/server/realtime-voice.js +1 -1
  169. package/dist/server/realtime-voice.js.map +1 -1
  170. package/dist/server/transcribe-voice.d.ts +1 -1
  171. package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +7 -5
  172. package/dist/terminal/cli-registry.js +1 -1
  173. package/dist/terminal/cli-registry.js.map +1 -1
  174. package/dist/vite/client.d.ts +8 -1
  175. package/dist/vite/client.d.ts.map +1 -1
  176. package/dist/vite/client.js +113 -2
  177. package/dist/vite/client.js.map +1 -1
  178. package/package.json +2 -2
  179. package/src/a2a/client.ts +32 -10
  180. package/src/cli/index.ts +18 -10
  181. package/src/cli/multi-frontier-runs.ts +5 -3
  182. package/src/cli/templates-meta.ts +0 -12
  183. package/src/cli/workspace-dev.ts +1 -1
  184. package/src/client/AgentPanel.tsx +9 -1
  185. package/src/client/RunStuckBanner.tsx +39 -47
  186. package/src/client/chat/action-chat-ui-surface.tsx +32 -0
  187. package/src/client/chat/message-components.tsx +53 -8
  188. package/src/client/chat/tool-call-display.tsx +24 -9
  189. package/src/client/chat/widgets/InlineExtensionWidget.tsx +0 -1
  190. package/src/client/chat/widgets/builtin-tool-renderers.tsx +7 -3
  191. package/src/client/conversation/AgentConversation.tsx +12 -1
  192. package/src/client/error-capture.ts +2 -6
  193. package/src/client/resources/McpConnectionSuggestion.tsx +20 -14
  194. package/src/client/resources/ResourcesPanel.tsx +5 -1
  195. package/src/client/resources/mcp-integration-catalog.ts +7 -17
  196. package/src/client/resources/mcp-integration-logos.ts +2 -2
  197. package/src/client/route-chunk-recovery.ts +5 -3
  198. package/src/client/session-replay.ts +3 -3
  199. package/src/client/settings/SettingsPanel.tsx +15 -6
  200. package/src/client/transcription/use-live-transcription.ts +64 -45
  201. package/src/deploy/build.ts +2 -1
  202. package/src/guards/db-tool-scoping.ts +1 -1
  203. package/src/integrations/adapters/slack.ts +84 -5
  204. package/src/integrations/index.ts +5 -1
  205. package/src/localization/default-messages.ts +1 -1
  206. package/src/mcp-client/oauth-routes.ts +45 -12
  207. package/src/server/realtime-voice.ts +4 -1
  208. package/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +7 -5
  209. package/src/terminal/cli-registry.ts +1 -1
  210. package/src/vite/client.ts +166 -1
  211. package/corpus/templates/crm/.agents/skills/agent-native-docs/SKILL.md +0 -115
  212. package/corpus/templates/crm/.agents/skills/agent-native-toolkit/SKILL.md +0 -177
  213. package/corpus/templates/crm/.agents/skills/crm/SKILL.md +0 -128
  214. package/corpus/templates/crm/.agents/skills/customizing-agent-native/SKILL.md +0 -220
  215. package/corpus/templates/crm/.agents/skills/feature-flags/SKILL.md +0 -169
  216. package/corpus/templates/crm/.agents/skills/upgrade-agent-native/SKILL.md +0 -100
  217. package/corpus/templates/crm/.env.example +0 -5
  218. package/corpus/templates/crm/AGENTS.md +0 -120
  219. package/corpus/templates/crm/CHANGELOG.md +0 -1
  220. package/corpus/templates/crm/DEVELOPING.md +0 -66
  221. package/corpus/templates/crm/README.md +0 -106
  222. package/corpus/templates/crm/_gitignore +0 -12
  223. package/corpus/templates/crm/actions/_crm-action-utils.ts +0 -87
  224. package/corpus/templates/crm/actions/_crm-dashboard.ts +0 -69
  225. package/corpus/templates/crm/actions/_crm-data-program-actions.ts +0 -15
  226. package/corpus/templates/crm/actions/_crm-signal-utils.ts +0 -79
  227. package/corpus/templates/crm/actions/apply-crm-proposals.ts +0 -203
  228. package/corpus/templates/crm/actions/attach-call-evidence.ts +0 -170
  229. package/corpus/templates/crm/actions/configure-crm-connection.ts +0 -126
  230. package/corpus/templates/crm/actions/configure-native-crm.ts +0 -44
  231. package/corpus/templates/crm/actions/create-crm-record.ts +0 -148
  232. package/corpus/templates/crm/actions/create-crm-signal-tracker.ts +0 -58
  233. package/corpus/templates/crm/actions/delete-staged-dataset.ts +0 -14
  234. package/corpus/templates/crm/actions/get-crm-automation-recipe.ts +0 -36
  235. package/corpus/templates/crm/actions/get-crm-dashboard-panel.ts +0 -35
  236. package/corpus/templates/crm/actions/get-crm-dashboard.ts +0 -14
  237. package/corpus/templates/crm/actions/get-crm-overview.ts +0 -13
  238. package/corpus/templates/crm/actions/get-crm-pipeline-data.ts +0 -61
  239. package/corpus/templates/crm/actions/get-crm-record.ts +0 -75
  240. package/corpus/templates/crm/actions/install-crm-pipeline-dashboard.ts +0 -81
  241. package/corpus/templates/crm/actions/list-crm-dashboard-revisions.ts +0 -15
  242. package/corpus/templates/crm/actions/list-crm-dashboards.ts +0 -15
  243. package/corpus/templates/crm/actions/list-crm-proposals.ts +0 -31
  244. package/corpus/templates/crm/actions/list-crm-records.ts +0 -79
  245. package/corpus/templates/crm/actions/list-crm-saved-views.ts +0 -15
  246. package/corpus/templates/crm/actions/list-crm-signal-hits.ts +0 -43
  247. package/corpus/templates/crm/actions/list-crm-signal-trackers.ts +0 -32
  248. package/corpus/templates/crm/actions/list-crm-tasks.ts +0 -22
  249. package/corpus/templates/crm/actions/list-staged-datasets.ts +0 -14
  250. package/corpus/templates/crm/actions/list-workspace-connections.ts +0 -47
  251. package/corpus/templates/crm/actions/manage-crm-signal-tracker.ts +0 -87
  252. package/corpus/templates/crm/actions/manage-crm-task.ts +0 -132
  253. package/corpus/templates/crm/actions/navigate.ts +0 -63
  254. package/corpus/templates/crm/actions/provider-api-catalog.ts +0 -22
  255. package/corpus/templates/crm/actions/provider-api-docs.ts +0 -54
  256. package/corpus/templates/crm/actions/provider-api-request.ts +0 -92
  257. package/corpus/templates/crm/actions/query-staged-dataset.ts +0 -44
  258. package/corpus/templates/crm/actions/record-crm-call-insight.ts +0 -160
  259. package/corpus/templates/crm/actions/record-crm-smart-signal.ts +0 -150
  260. package/corpus/templates/crm/actions/restore-crm-dashboard-revision.ts +0 -23
  261. package/corpus/templates/crm/actions/review-crm-signal.ts +0 -31
  262. package/corpus/templates/crm/actions/run-crm-saved-view-program.ts +0 -103
  263. package/corpus/templates/crm/actions/run-crm-signal-trackers.ts +0 -275
  264. package/corpus/templates/crm/actions/run.ts +0 -7
  265. package/corpus/templates/crm/actions/save-crm-dashboard.ts +0 -51
  266. package/corpus/templates/crm/actions/save-crm-saved-view.ts +0 -119
  267. package/corpus/templates/crm/actions/sync-crm.ts +0 -146
  268. package/corpus/templates/crm/actions/update-crm-record.ts +0 -510
  269. package/corpus/templates/crm/actions/view-screen.ts +0 -218
  270. package/corpus/templates/crm/agent-native.app-skill.json +0 -58
  271. package/corpus/templates/crm/app/components/crm/CreateCrmRecordDialog.tsx +0 -158
  272. package/corpus/templates/crm/app/components/crm/CrmDashboardPanel.tsx +0 -78
  273. package/corpus/templates/crm/app/components/crm/CrmSignalsPanel.tsx +0 -226
  274. package/corpus/templates/crm/app/components/crm/IntelligenceSettings.tsx +0 -414
  275. package/corpus/templates/crm/app/components/crm/RecordActions.tsx +0 -510
  276. package/corpus/templates/crm/app/components/crm/RecordGrid.tsx +0 -134
  277. package/corpus/templates/crm/app/components/crm/RecordWorkspace.tsx +0 -362
  278. package/corpus/templates/crm/app/components/crm/SavedViewDataProgram.tsx +0 -93
  279. package/corpus/templates/crm/app/components/crm/Surface.tsx +0 -97
  280. package/corpus/templates/crm/app/components/crm/WorkOverview.tsx +0 -180
  281. package/corpus/templates/crm/app/components/layout/CrmLayout.tsx +0 -112
  282. package/corpus/templates/crm/app/components/layout/CrmSidebar.tsx +0 -84
  283. package/corpus/templates/crm/app/components/ui/alert-dialog.tsx +0 -1
  284. package/corpus/templates/crm/app/components/ui/badge.tsx +0 -1
  285. package/corpus/templates/crm/app/components/ui/button.tsx +0 -1
  286. package/corpus/templates/crm/app/components/ui/card.tsx +0 -1
  287. package/corpus/templates/crm/app/components/ui/dialog.tsx +0 -1
  288. package/corpus/templates/crm/app/components/ui/input.tsx +0 -1
  289. package/corpus/templates/crm/app/components/ui/label.tsx +0 -1
  290. package/corpus/templates/crm/app/components/ui/select.tsx +0 -1
  291. package/corpus/templates/crm/app/components/ui/sheet.tsx +0 -1
  292. package/corpus/templates/crm/app/components/ui/skeleton.tsx +0 -1
  293. package/corpus/templates/crm/app/components/ui/switch.tsx +0 -1
  294. package/corpus/templates/crm/app/components/ui/table.tsx +0 -1
  295. package/corpus/templates/crm/app/components/ui/tabs.tsx +0 -1
  296. package/corpus/templates/crm/app/components/ui/textarea.tsx +0 -1
  297. package/corpus/templates/crm/app/components/ui/toolkit-provider.tsx +0 -17
  298. package/corpus/templates/crm/app/design-system.ts +0 -3
  299. package/corpus/templates/crm/app/entry.client.tsx +0 -16
  300. package/corpus/templates/crm/app/entry.server.tsx +0 -10
  301. package/corpus/templates/crm/app/global.css +0 -167
  302. package/corpus/templates/crm/app/hooks/use-navigation-state.ts +0 -60
  303. package/corpus/templates/crm/app/i18n/en-US.ts +0 -89
  304. package/corpus/templates/crm/app/i18n/index.ts +0 -34
  305. package/corpus/templates/crm/app/lib/dashboard.ts +0 -13
  306. package/corpus/templates/crm/app/lib/navigation.ts +0 -54
  307. package/corpus/templates/crm/app/lib/tab-id.ts +0 -1
  308. package/corpus/templates/crm/app/lib/types.ts +0 -172
  309. package/corpus/templates/crm/app/lib/utils.ts +0 -1
  310. package/corpus/templates/crm/app/root.tsx +0 -91
  311. package/corpus/templates/crm/app/routes/_index.tsx +0 -26
  312. package/corpus/templates/crm/app/routes/accounts.tsx +0 -41
  313. package/corpus/templates/crm/app/routes/agent.tsx +0 -5
  314. package/corpus/templates/crm/app/routes/ask.tsx +0 -53
  315. package/corpus/templates/crm/app/routes/dashboard.tsx +0 -118
  316. package/corpus/templates/crm/app/routes/opportunities.tsx +0 -41
  317. package/corpus/templates/crm/app/routes/people.tsx +0 -41
  318. package/corpus/templates/crm/app/routes/proposals.tsx +0 -266
  319. package/corpus/templates/crm/app/routes/records.$recordId.tsx +0 -35
  320. package/corpus/templates/crm/app/routes/settings.tsx +0 -63
  321. package/corpus/templates/crm/app/routes/setup.tsx +0 -308
  322. package/corpus/templates/crm/app/routes/tasks.tsx +0 -252
  323. package/corpus/templates/crm/app/routes/views.tsx +0 -333
  324. package/corpus/templates/crm/app/routes.ts +0 -17
  325. package/corpus/templates/crm/app/vite-env.d.ts +0 -6
  326. package/corpus/templates/crm/changelog/2026-07-21-agent-native-crm.md +0 -6
  327. package/corpus/templates/crm/changelog/2026-07-21-clips-call-evidence-review-recipe.md +0 -6
  328. package/corpus/templates/crm/changelog/2026-07-21-crm-can-now-find-and-review-evidence-grounded-call-signals-w.md +0 -6
  329. package/corpus/templates/crm/changelog/2026-07-21-crm-can-now-manage-keyword-and-smart-call-signal-trackers-fr.md +0 -6
  330. package/corpus/templates/crm/changelog/2026-07-21-delegated-local-crm-automation.md +0 -6
  331. package/corpus/templates/crm/changelog/2026-07-21-native-sql.md +0 -6
  332. package/corpus/templates/crm/changelog/2026-07-21-pipeline-dashboard.md +0 -6
  333. package/corpus/templates/crm/changelog/2026-07-21-pipeline-dashboards-now-install-correctly-from-the-crm-actio.md +0 -6
  334. package/corpus/templates/crm/changelog/2026-07-21-salesforce-connection.md +0 -6
  335. package/corpus/templates/crm/changelog/2026-07-22-crm-field-validation-now-explains-which-fields-cannot-be-edi.md +0 -6
  336. package/corpus/templates/crm/changelog/2026-07-22-fixed-hubspot-contact-syncs-missing-records-updated-after-th.md +0 -6
  337. package/corpus/templates/crm/changelog/2026-07-22-fixed-pipeline-dashboard-panels-so-their-opportunity-data-lo.md +0 -6
  338. package/corpus/templates/crm/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +0 -6
  339. package/corpus/templates/crm/components.json +0 -20
  340. package/corpus/templates/crm/docs/architecture/crm-contract.md +0 -180
  341. package/corpus/templates/crm/learnings.defaults.md +0 -5
  342. package/corpus/templates/crm/package.json +0 -59
  343. package/corpus/templates/crm/public/favicon.svg +0 -1
  344. package/corpus/templates/crm/public/icon-180.svg +0 -1
  345. package/corpus/templates/crm/public/manifest.json +0 -11
  346. package/corpus/templates/crm/react-router.config.ts +0 -7
  347. package/corpus/templates/crm/server/crm/adapter.ts +0 -32
  348. package/corpus/templates/crm/server/crm/crm-field-firewall.ts +0 -64
  349. package/corpus/templates/crm/server/crm/crm-mirror.ts +0 -711
  350. package/corpus/templates/crm/server/crm/hubspot-adapter.ts +0 -1146
  351. package/corpus/templates/crm/server/crm/native-adapter.ts +0 -1715
  352. package/corpus/templates/crm/server/crm/read-through.ts +0 -207
  353. package/corpus/templates/crm/server/crm/salesforce-adapter.ts +0 -1255
  354. package/corpus/templates/crm/server/db/crm-store.ts +0 -1170
  355. package/corpus/templates/crm/server/db/index.ts +0 -169
  356. package/corpus/templates/crm/server/db/schema.ts +0 -441
  357. package/corpus/templates/crm/server/lib/intelligence/default-detectors.ts +0 -65
  358. package/corpus/templates/crm/server/lib/intelligence/evidence.ts +0 -105
  359. package/corpus/templates/crm/server/lib/intelligence/keyword-detector.ts +0 -100
  360. package/corpus/templates/crm/server/lib/intelligence/smart-detector.ts +0 -144
  361. package/corpus/templates/crm/server/lib/intelligence/summary.ts +0 -141
  362. package/corpus/templates/crm/server/lib/provider-api.ts +0 -64
  363. package/corpus/templates/crm/server/middleware/auth.ts +0 -4
  364. package/corpus/templates/crm/server/plugins/agent-chat.ts +0 -68
  365. package/corpus/templates/crm/server/plugins/auth.ts +0 -14
  366. package/corpus/templates/crm/server/plugins/core-routes.ts +0 -17
  367. package/corpus/templates/crm/server/plugins/db.ts +0 -454
  368. package/corpus/templates/crm/server/routes/[...page].get.ts +0 -5
  369. package/corpus/templates/crm/shared/crm-automation-recipes.ts +0 -132
  370. package/corpus/templates/crm/shared/crm-contract.ts +0 -254
  371. package/corpus/templates/crm/shared/crm-sales-config.ts +0 -63
  372. package/corpus/templates/crm/ssr-entry.ts +0 -11
  373. package/corpus/templates/crm/tsconfig.json +0 -24
  374. package/corpus/templates/crm/vite.config.ts +0 -15
  375. package/corpus/templates/crm/vitest.config.ts +0 -5
@@ -1,47 +0,0 @@
1
- import { defineAction } from "@agent-native/core/action";
2
- import { listWorkspaceConnectionsForApp } from "@agent-native/core/workspace-connections";
3
- import { z } from "zod";
4
-
5
- import { CRM_APP_ID } from "../server/lib/provider-api.js";
6
-
7
- const httpBoolean = z.preprocess((value) => {
8
- if (typeof value !== "string") return value;
9
- if (["true", "1"].includes(value.toLowerCase())) return true;
10
- if (["false", "0"].includes(value.toLowerCase())) return false;
11
- return value;
12
- }, z.boolean());
13
-
14
- export default defineAction({
15
- description:
16
- "List safe metadata for HubSpot and Salesforce workspace connections currently granted to CRM. Provider credentials and credential references are never returned.",
17
- schema: z.object({
18
- includeDisabled: httpBoolean.default(false),
19
- }),
20
- http: { method: "GET" },
21
- readOnly: true,
22
- run: async ({ includeDisabled }) => {
23
- const connectionGroups = await Promise.all(
24
- (["hubspot", "salesforce"] as const).map((provider) =>
25
- listWorkspaceConnectionsForApp({
26
- appId: CRM_APP_ID,
27
- provider,
28
- includeDisabled,
29
- }),
30
- ),
31
- );
32
- const connections = connectionGroups.flat();
33
- return {
34
- connections: connections.map((connection) => ({
35
- id: connection.id,
36
- provider: connection.provider,
37
- label: connection.label,
38
- accountId: connection.accountId,
39
- accountLabel: connection.accountLabel,
40
- status: connection.status,
41
- lastCheckedAt: connection.lastCheckedAt,
42
- lastUsedAt: connection.lastUsedAt,
43
- accessMode: connection.appAccess.mode,
44
- })),
45
- };
46
- },
47
- });
@@ -1,87 +0,0 @@
1
- import { defineAction } from "@agent-native/core/action";
2
- import { assertAccess } from "@agent-native/core/sharing";
3
- import { eq } from "drizzle-orm";
4
- import { z } from "zod";
5
-
6
- import { getDb, schema } from "../server/db/index.js";
7
-
8
- const inputSchema = z
9
- .object({
10
- trackerId: z.string().trim().min(1).max(128),
11
- operation: z.enum(["set-enabled", "delete"]),
12
- enabled: z.boolean().optional(),
13
- })
14
- .superRefine((value, ctx) => {
15
- if (value.operation === "set-enabled" && value.enabled === undefined) {
16
- ctx.addIssue({
17
- code: "custom",
18
- path: ["enabled"],
19
- message: "enabled is required when changing a tracker state.",
20
- });
21
- }
22
- if (value.operation === "delete" && value.enabled !== undefined) {
23
- ctx.addIssue({
24
- code: "custom",
25
- path: ["enabled"],
26
- message: "enabled cannot be provided when deleting a tracker.",
27
- });
28
- }
29
- });
30
-
31
- export default defineAction({
32
- description:
33
- "Enable, disable, or delete one access-scoped local CRM signal tracker. This never invokes a model or changes a connected provider.",
34
- schema: inputSchema,
35
- audit: {
36
- target: (_args, result) => {
37
- const tracker = result as {
38
- id: string;
39
- ownerEmail: string;
40
- orgId: string | null;
41
- visibility: "private" | "org";
42
- };
43
- return {
44
- type: "crm-signal-tracker",
45
- id: tracker.id,
46
- ownerEmail: tracker.ownerEmail,
47
- orgId: tracker.orgId,
48
- visibility: tracker.visibility,
49
- };
50
- },
51
- summary: (args) =>
52
- args.operation === "delete"
53
- ? `Deleted CRM signal tracker ${args.trackerId}`
54
- : `${args.enabled ? "Enabled" : "Disabled"} CRM signal tracker ${args.trackerId}`,
55
- },
56
- run: async (args) => {
57
- await assertAccess("crm-signal-tracker", args.trackerId, "editor");
58
- const db = getDb();
59
- const [tracker] = await db
60
- .select()
61
- .from(schema.crmSignalTrackers)
62
- .where(eq(schema.crmSignalTrackers.id, args.trackerId))
63
- .limit(1);
64
- if (!tracker) throw new Error("CRM signal tracker was not found.");
65
-
66
- if (args.operation === "delete") {
67
- await db
68
- .delete(schema.crmSignalTrackers)
69
- .where(eq(schema.crmSignalTrackers.id, args.trackerId));
70
- return { ...tracker, deleted: true };
71
- }
72
-
73
- const now = new Date().toISOString();
74
- await db
75
- .update(schema.crmSignalTrackers)
76
- .set({ enabled: args.enabled!, updatedAt: now })
77
- .where(eq(schema.crmSignalTrackers.id, args.trackerId));
78
- const [updated] = await db
79
- .select()
80
- .from(schema.crmSignalTrackers)
81
- .where(eq(schema.crmSignalTrackers.id, args.trackerId))
82
- .limit(1);
83
- if (!updated)
84
- throw new Error("CRM signal tracker could not be verified after saving.");
85
- return updated;
86
- },
87
- });
@@ -1,132 +0,0 @@
1
- import { defineAction } from "@agent-native/core/action";
2
- import { assertAccess } from "@agent-native/core/sharing";
3
- import { and, eq } from "drizzle-orm";
4
- import { z } from "zod";
5
-
6
- import { getDb, schema } from "../server/db/index.js";
7
- import { requireCrmScope } from "./_crm-action-utils.js";
8
-
9
- export default defineAction({
10
- description:
11
- "Create or update a local CRM follow-up task. Mirrored provider tasks remain read-only in this phase so they cannot be changed without an explicit provider proposal.",
12
- schema: z
13
- .object({
14
- taskId: z.string().trim().min(1).max(128).optional(),
15
- recordId: z.string().trim().min(1).max(128).optional(),
16
- title: z.string().trim().min(1).max(300).optional(),
17
- description: z.string().trim().max(2_000).optional(),
18
- status: z.enum(["open", "done", "cancelled"]).optional(),
19
- dueAt: z.string().datetime({ offset: true }).optional(),
20
- assignedTo: z.string().trim().max(240).optional(),
21
- })
22
- .superRefine((value, issue) => {
23
- if (!value.taskId && !value.title) {
24
- issue.addIssue({
25
- code: "custom",
26
- message: "title is required when creating a task",
27
- path: ["title"],
28
- });
29
- }
30
- }),
31
- audit: {
32
- target: (_args, result) => {
33
- const task = result as {
34
- id: string;
35
- ownerEmail: string;
36
- orgId: string | null;
37
- visibility: "private" | "org";
38
- };
39
- return {
40
- type: "crm-task",
41
- id: task.id,
42
- ownerEmail: task.ownerEmail,
43
- orgId: task.orgId,
44
- visibility: task.visibility,
45
- };
46
- },
47
- summary: (args) =>
48
- args.taskId
49
- ? `Updated CRM task ${args.taskId}`
50
- : `Created CRM task ${args.title}`,
51
- },
52
- run: async (args, ctx) => {
53
- const db = getDb();
54
- const now = new Date().toISOString();
55
- if (args.taskId) {
56
- await assertAccess("crm-task", args.taskId, "editor");
57
- const [task] = await db
58
- .select()
59
- .from(schema.crmTasks)
60
- .where(eq(schema.crmTasks.id, args.taskId))
61
- .limit(1);
62
- if (!task) throw new Error("CRM task was not found.");
63
- if (task.authority !== "local") {
64
- throw new Error(
65
- "This is a mirrored provider task. Provider task writeback is not available in the initial release; create a CRM proposal or complete it upstream.",
66
- );
67
- }
68
- if (args.recordId && args.recordId !== task.recordId) {
69
- await assertAccess("crm-record", args.recordId, "editor");
70
- }
71
- await db
72
- .update(schema.crmTasks)
73
- .set({
74
- ...(args.recordId !== undefined ? { recordId: args.recordId } : {}),
75
- ...(args.title !== undefined ? { title: args.title } : {}),
76
- ...(args.description !== undefined
77
- ? { description: args.description }
78
- : {}),
79
- ...(args.status !== undefined ? { status: args.status } : {}),
80
- ...(args.dueAt !== undefined ? { dueAt: args.dueAt } : {}),
81
- ...(args.assignedTo !== undefined
82
- ? { assignedTo: args.assignedTo }
83
- : {}),
84
- ...(args.status === "done" ? { completedAt: now } : {}),
85
- ...(args.status && args.status !== "done"
86
- ? { completedAt: null }
87
- : {}),
88
- updatedAt: now,
89
- })
90
- .where(eq(schema.crmTasks.id, args.taskId));
91
- const [updated] = await db
92
- .select()
93
- .from(schema.crmTasks)
94
- .where(eq(schema.crmTasks.id, args.taskId))
95
- .limit(1);
96
- if (!updated)
97
- throw new Error("CRM task could not be verified after updating.");
98
- return updated;
99
- }
100
-
101
- if (args.recordId)
102
- await assertAccess("crm-record", args.recordId, "editor");
103
- const scope = requireCrmScope(ctx);
104
- const id = crypto.randomUUID();
105
- await db.insert(schema.crmTasks).values({
106
- id,
107
- recordId: args.recordId ?? null,
108
- title: args.title!,
109
- description: args.description ?? "",
110
- status: args.status ?? "open",
111
- dueAt: args.dueAt ?? null,
112
- assignedTo: args.assignedTo ?? null,
113
- authority: "local",
114
- completedAt: args.status === "done" ? now : null,
115
- ...scope,
116
- createdAt: now,
117
- updatedAt: now,
118
- });
119
- const [task] = await db
120
- .select()
121
- .from(schema.crmTasks)
122
- .where(
123
- and(
124
- eq(schema.crmTasks.id, id),
125
- eq(schema.crmTasks.ownerEmail, scope.ownerEmail),
126
- ),
127
- )
128
- .limit(1);
129
- if (!task) throw new Error("CRM task could not be verified after saving.");
130
- return task;
131
- },
132
- });
@@ -1,63 +0,0 @@
1
- import { defineAction } from "@agent-native/core/action";
2
- import { writeAppStateForCurrentTab } from "@agent-native/core/application-state";
3
- import { z } from "zod";
4
-
5
- const viewSchema = z.enum([
6
- "work",
7
- "account",
8
- "person",
9
- "opportunity",
10
- "record",
11
- "tasks",
12
- "proposals",
13
- "views",
14
- "dashboard",
15
- "ask",
16
- "setup",
17
- "settings",
18
- ]);
19
-
20
- const paths = {
21
- work: "/",
22
- account: "/accounts",
23
- person: "/people",
24
- opportunity: "/opportunities",
25
- tasks: "/tasks",
26
- proposals: "/proposals",
27
- views: "/views",
28
- dashboard: "/dashboard",
29
- ask: "/ask",
30
- setup: "/setup",
31
- settings: "/settings",
32
- } as const;
33
-
34
- export default defineAction({
35
- description:
36
- "Navigate the CRM UI to work, records, tasks, proposals, saved views, Ask CRM, setup, or settings.",
37
- schema: z.object({
38
- view: viewSchema,
39
- recordId: z.string().trim().min(1).max(200).optional(),
40
- viewId: z.string().trim().min(1).max(200).optional(),
41
- dashboardId: z.string().trim().min(1).max(200).optional(),
42
- query: z.string().trim().max(200).optional(),
43
- settingsSection: z.enum(["intelligence"]).optional(),
44
- }),
45
- http: false,
46
- run: async (args) => {
47
- if (args.view === "record" && !args.recordId) {
48
- throw new Error("recordId is required when navigating to a CRM record.");
49
- }
50
- const basePath =
51
- args.view === "record"
52
- ? `/records/${encodeURIComponent(args.recordId!)}`
53
- : args.view === "settings" && args.settingsSection
54
- ? `/settings/${args.settingsSection}`
55
- : paths[args.view];
56
- const path =
57
- args.view === "dashboard" && args.dashboardId
58
- ? `${basePath}?id=${encodeURIComponent(args.dashboardId)}`
59
- : basePath;
60
- await writeAppStateForCurrentTab("navigate", { ...args, path });
61
- return { navigatingTo: path };
62
- },
63
- });
@@ -1,22 +0,0 @@
1
- import { createProviderApiCatalogAction } from "@agent-native/core/provider-api/actions/provider-api";
2
- import { z } from "zod";
3
-
4
- import {
5
- CRM_PROVIDER_API_IDS,
6
- getCrmProviderApiRuntime,
7
- } from "../server/lib/provider-api.js";
8
-
9
- const ProviderSchema = z.enum(CRM_PROVIDER_API_IDS);
10
-
11
- export default createProviderApiCatalogAction(getCrmProviderApiRuntime(), {
12
- description:
13
- "List the raw HubSpot and Salesforce API capabilities available through CRM's granted workspace connections. Use before provider-api-request when a CRM convenience action cannot express an endpoint, filter, custom object, pagination mode, or API version. Returns metadata and examples, never secret values.",
14
- schema: z.object({
15
- provider: ProviderSchema.optional().describe(
16
- "Optional provider id to inspect: hubspot or salesforce.",
17
- ),
18
- }),
19
- http: { method: "GET" },
20
- guidance:
21
- "CRM actions are convenience workflows, not a provider capability limit. For an exact HubSpot or Salesforce endpoint, inspect its catalog and docs before provider-api-request. For broad work, stage a bounded paginated result, reduce it with query-staged-dataset or a data program, and report the scope, row count, pagination status, truncation, and gaps.",
22
- });
@@ -1,54 +0,0 @@
1
- import { createProviderApiDocsAction } from "@agent-native/core/provider-api/actions/provider-api";
2
- import { z } from "zod";
3
-
4
- import {
5
- CRM_PROVIDER_API_IDS,
6
- getCrmProviderApiRuntime,
7
- } from "../server/lib/provider-api.js";
8
-
9
- const ProviderSchema = z.enum(CRM_PROVIDER_API_IDS);
10
- const BooleanFromQuerySchema = z.preprocess(
11
- (value) => (typeof value === "string" ? value === "true" : value),
12
- z.boolean(),
13
- );
14
-
15
- export default createProviderApiDocsAction(getCrmProviderApiRuntime(), {
16
- description:
17
- "Inspect HubSpot or Salesforce API documentation before an exact provider-api-request when the endpoint, object schema, field, filter operator, relationship, or pagination contract is uncertain.",
18
- schema: z.object({
19
- provider: ProviderSchema.describe("Provider whose API docs to inspect."),
20
- url: z
21
- .string()
22
- .url()
23
- .optional()
24
- .describe(
25
- "Optional public provider docs/spec URL. The provider catalog returns curated starting URLs.",
26
- ),
27
- maxBytes: z.coerce
28
- .number()
29
- .int()
30
- .min(1_000)
31
- .max(4 * 1024 * 1024)
32
- .optional(),
33
- maxChars: z.coerce.number().int().min(1).max(200_000).optional(),
34
- responseMode: z
35
- .enum(["auto", "raw", "text", "markdown", "links", "metadata", "matches"])
36
- .optional(),
37
- extract: z.enum(["readability", "all-visible", "none"]).optional(),
38
- includeLinks: BooleanFromQuerySchema.optional(),
39
- search: z
40
- .object({
41
- query: z.union([z.string(), z.array(z.string())]).optional(),
42
- queries: z.array(z.string()).optional(),
43
- terms: z.array(z.string()).optional(),
44
- regex: z.string().optional(),
45
- regexFlags: z.string().optional(),
46
- source: z.enum(["extracted", "raw"]).optional(),
47
- maxMatches: z.coerce.number().int().min(1).max(500).optional(),
48
- contextChars: z.coerce.number().int().min(0).max(1_000).optional(),
49
- caseSensitive: BooleanFromQuerySchema.optional(),
50
- })
51
- .optional(),
52
- }),
53
- http: { method: "GET" },
54
- });
@@ -1,92 +0,0 @@
1
- import { createProviderApiRequestAction } from "@agent-native/core/provider-api/actions/provider-api";
2
- import { getCredentialContext } from "@agent-native/core/server/request-context";
3
- import { z } from "zod";
4
-
5
- import {
6
- CRM_APP_ID,
7
- CRM_PROVIDER_API_IDS,
8
- getCrmProviderApiRuntime,
9
- } from "../server/lib/provider-api.js";
10
-
11
- const ProviderSchema = z.enum(CRM_PROVIDER_API_IDS);
12
- const MethodSchema = z.enum(["GET", "HEAD"]);
13
-
14
- const PaginationSchema = z
15
- .object({
16
- nextCursorPath: z.string().optional(),
17
- cursorParam: z.string().optional(),
18
- pageParam: z.string().optional(),
19
- startPage: z.coerce.number().int().optional(),
20
- offsetParam: z.string().optional(),
21
- pageSize: z.coerce.number().int().min(1).optional(),
22
- maxPages: z.coerce.number().int().min(1).max(200).optional(),
23
- })
24
- .optional();
25
-
26
- export default createProviderApiRequestAction(getCrmProviderApiRuntime(), {
27
- description:
28
- "Make an exact read-only authenticated HubSpot or Salesforce GET or HEAD request through a CRM-granted workspace connection. This is the flexible escape hatch for custom object, field, relationship, pagination, and API-version reads that CRM convenience actions do not model. It is host-constrained, access-scoped to the granted connection, and redacts secrets. Provider writes must use revision-aware CRM proposals, never this action. Use stageAs for large results instead of returning raw provider payloads to chat.",
29
- schema: z
30
- .object({
31
- provider: ProviderSchema.describe("CRM provider: hubspot or salesforce."),
32
- method: MethodSchema.default("GET"),
33
- path: z
34
- .string()
35
- .min(1)
36
- .describe(
37
- "Provider API path, or a full URL on the selected connection's allowed provider host.",
38
- ),
39
- query: z.unknown().optional(),
40
- headers: z.record(z.string(), z.unknown()).optional(),
41
- auth: z.enum(["default", "none"]).default("default"),
42
- connectionId: z
43
- .string()
44
- .trim()
45
- .min(1)
46
- .optional()
47
- .describe(
48
- "Granted workspace connection id. Required for Salesforce so its actor-bound token and instance URL stay coupled.",
49
- ),
50
- timeoutMs: z.coerce.number().int().min(1_000).max(120_000).optional(),
51
- maxBytes: z.coerce
52
- .number()
53
- .int()
54
- .min(1_000)
55
- .max(4 * 1024 * 1024)
56
- .optional(),
57
- stageAs: z
58
- .string()
59
- .min(1)
60
- .optional()
61
- .describe(
62
- "Store response items as a caller-scoped scratch dataset and return a compact summary.",
63
- ),
64
- itemsPath: z.string().optional(),
65
- pagination: PaginationSchema.describe(
66
- "Server-side query-string pagination for a staged response. Use the provider's catalog/docs to choose its cursor fields.",
67
- ),
68
- saveToFile: z.string().optional(),
69
- fetchAllPages: z
70
- .object({
71
- cursorPath: z.string(),
72
- cursorParam: z.string().optional(),
73
- itemsPath: z.string().optional(),
74
- maxPages: z.coerce.number().int().min(1).max(50).optional(),
75
- })
76
- .optional(),
77
- })
78
- .superRefine((value, ctx) => {
79
- if (value.provider === "salesforce" && !value.connectionId) {
80
- ctx.addIssue({
81
- code: "custom",
82
- path: ["connectionId"],
83
- message:
84
- "Salesforce provider reads require the granted workspace connection id.",
85
- });
86
- }
87
- }),
88
- appId: CRM_APP_ID,
89
- getOwnerEmail: () => getCredentialContext()?.userEmail ?? null,
90
- http: false,
91
- toolCallable: false,
92
- });
@@ -1,44 +0,0 @@
1
- import { createQueryStagedDatasetAction } from "@agent-native/core/provider-api/actions/staged-datasets";
2
- import { z } from "zod";
3
-
4
- import { CRM_APP_ID } from "../server/lib/provider-api.js";
5
-
6
- const WhereSchema = z.object({
7
- column: z.string().min(1),
8
- op: z.enum([
9
- "equals",
10
- "not_equals",
11
- "contains",
12
- "not_contains",
13
- "gt",
14
- "gte",
15
- "lt",
16
- "lte",
17
- "exists",
18
- "not_exists",
19
- ]),
20
- value: z.unknown().optional(),
21
- });
22
-
23
- const AggregateSchema = z.object({
24
- column: z.string().min(1),
25
- op: z.enum(["sum", "avg", "count", "min", "max", "count_distinct"]),
26
- as: z.string().optional(),
27
- });
28
-
29
- export default createQueryStagedDatasetAction({
30
- description:
31
- "Filter, project, sort, or aggregate a caller-scoped staged CRM provider dataset without re-fetching the provider. For exhaustive CRM analysis, stage every bounded page first and report the dataset's source scope, row count, pagination status, truncation, and gaps.",
32
- schema: z.object({
33
- datasetId: z.string().min(1),
34
- where: z.array(WhereSchema).optional(),
35
- groupBy: z.array(z.string().min(1)).optional(),
36
- aggregate: z.array(AggregateSchema).optional(),
37
- select: z.array(z.string().min(1)).optional(),
38
- orderBy: z.string().optional(),
39
- orderDir: z.enum(["asc", "desc"]).optional(),
40
- limit: z.coerce.number().int().min(1).max(10_000).optional(),
41
- }),
42
- http: false,
43
- appId: CRM_APP_ID,
44
- });