@agent-native/core 0.118.0 → 0.119.0

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 (480) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +32 -0
  3. package/corpus/core/docs/content/a2a-protocol.mdx +15 -0
  4. package/corpus/core/docs/content/template-chat.mdx +1 -1
  5. package/corpus/core/docs/content/template-plan.mdx +3 -3
  6. package/corpus/core/package.json +1 -1
  7. package/corpus/core/src/a2a/activity.ts +371 -0
  8. package/corpus/core/src/a2a/client.ts +35 -11
  9. package/corpus/core/src/a2a/index.ts +21 -0
  10. package/corpus/core/src/a2a/types.ts +8 -0
  11. package/corpus/core/src/agent/model-config.ts +19 -23
  12. package/corpus/core/src/agent/production-agent.ts +167 -100
  13. package/corpus/core/src/agent/types.ts +16 -1
  14. package/corpus/core/src/cli/index.ts +18 -10
  15. package/corpus/core/src/cli/multi-frontier-runs.ts +5 -3
  16. package/corpus/core/src/cli/templates-meta.ts +0 -12
  17. package/corpus/core/src/cli/workspace-dev.ts +1 -1
  18. package/corpus/core/src/client/AgentPanel.tsx +9 -1
  19. package/corpus/core/src/client/RunStuckBanner.tsx +39 -47
  20. package/corpus/core/src/client/chat/action-chat-ui-surface.tsx +32 -0
  21. package/corpus/core/src/client/chat/message-components.tsx +53 -8
  22. package/corpus/core/src/client/chat/tool-call-display.tsx +214 -44
  23. package/corpus/core/src/client/chat/widgets/InlineExtensionWidget.tsx +0 -1
  24. package/corpus/core/src/client/chat/widgets/builtin-tool-renderers.tsx +7 -3
  25. package/corpus/core/src/client/chat-model-groups.ts +67 -27
  26. package/corpus/core/src/client/conversation/AgentConversation.tsx +12 -1
  27. package/corpus/core/src/client/error-capture.ts +2 -6
  28. package/corpus/core/src/client/resources/McpConnectionSuggestion.tsx +20 -14
  29. package/corpus/core/src/client/resources/ResourcesPanel.tsx +5 -1
  30. package/corpus/core/src/client/resources/mcp-integration-catalog.ts +7 -17
  31. package/corpus/core/src/client/resources/mcp-integration-logos.ts +2 -2
  32. package/corpus/core/src/client/route-chunk-recovery.ts +5 -3
  33. package/corpus/core/src/client/session-replay.ts +3 -3
  34. package/corpus/core/src/client/settings/SettingsPanel.tsx +15 -6
  35. package/corpus/core/src/client/sharing/ShareButton.tsx +1 -27
  36. package/corpus/core/src/client/sharing/ShareDialog.tsx +0 -16
  37. package/corpus/core/src/client/sharing/useShareButtonController.ts +0 -7
  38. package/corpus/core/src/client/sharing/useShareDialogController.ts +0 -2
  39. package/corpus/core/src/client/sse-event-processor.ts +85 -1
  40. package/corpus/core/src/client/transcription/use-live-transcription.ts +64 -45
  41. package/corpus/core/src/deploy/build.ts +2 -1
  42. package/corpus/core/src/guards/db-tool-scoping.ts +1 -1
  43. package/corpus/core/src/integrations/adapters/slack.ts +84 -5
  44. package/corpus/core/src/integrations/index.ts +5 -1
  45. package/corpus/core/src/localization/default-messages.ts +7 -1
  46. package/corpus/core/src/mcp-client/oauth-routes.ts +45 -12
  47. package/corpus/core/src/scripts/agent-engines/list-agent-engines.ts +1 -18
  48. package/corpus/core/src/scripts/call-agent.ts +49 -6
  49. package/corpus/core/src/server/agent-chat-plugin.ts +50 -10
  50. package/corpus/core/src/server/realtime-voice.ts +4 -1
  51. package/corpus/core/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +16 -0
  52. package/corpus/core/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +7 -5
  53. package/corpus/core/src/terminal/cli-registry.ts +1 -1
  54. package/corpus/core/src/vite/client.ts +166 -1
  55. package/corpus/templates/analytics/app/hooks/use-dashboard-views.ts +13 -1
  56. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/ViewsMenu.tsx +10 -0
  57. package/corpus/templates/analytics/changelog/2026-07-22-show-a-useful-error-when-saving-a-dashboard-view-fails.md +6 -0
  58. package/corpus/templates/brain/app/routes/sources.tsx +181 -114
  59. package/corpus/templates/clips/AGENTS.md +8 -6
  60. package/corpus/templates/clips/actions/request-transcript.ts +90 -420
  61. package/corpus/templates/clips/actions/save-browser-transcript.ts +11 -28
  62. package/corpus/templates/clips/app/components/capture-install-options.tsx +5 -3
  63. package/corpus/templates/clips/app/components/player/transcript-panel.tsx +3 -136
  64. package/corpus/templates/clips/app/lib/capture-install-options.ts +15 -4
  65. package/corpus/templates/clips/app/routes/download.tsx +3 -2
  66. package/corpus/templates/clips/changelog/2026-07-22-fixed-an-intermittent-hydration-error-on-the-download-page.md +6 -0
  67. package/corpus/templates/clips/changelog/2026-07-22-fixed-transcript-generation-when-native-speech-capture-retur.md +6 -0
  68. package/corpus/templates/clips/changelog/2026-07-22-transcript-generation-now-retries-with-backup-speech-recogni.md +6 -0
  69. package/corpus/templates/clips/changelog/2026-07-23-fixed-recordings-failing-to-save-with-a-cancelled-or-cleanup.md +6 -0
  70. package/corpus/templates/clips/server/lib/public-agent-context.ts +2 -2
  71. package/corpus/templates/clips/server/plugins/db.ts +9 -1
  72. package/corpus/templates/clips/server/register-secrets.ts +7 -6
  73. package/corpus/templates/content/app/components/editor/SlashCommandMenu.tsx +16 -84
  74. package/corpus/templates/content/app/components/editor/VisualEditor.tsx +13 -7
  75. package/corpus/templates/content/app/components/editor/extensions/ImageBlock.tsx +2 -2
  76. package/corpus/templates/content/app/i18n-data.ts +10 -0
  77. package/corpus/templates/design/server/lib/fig-file-decoder.ts +1 -0
  78. package/corpus/templates/plan/app/entry.client.tsx +3 -0
  79. package/corpus/templates/plan/changelog/2026-07-22-recover-stale-pages-after-a-deployment-refresh-automatically.md +6 -0
  80. package/corpus/templates/slides/app/hooks/use-agent-generating.ts +10 -3
  81. package/corpus/templates/slides/app/pages/Index.tsx +1 -0
  82. package/corpus/templates/slides/changelog/2026-07-22-new-deck-prompts-now-open-in-their-own-visible-chat-thread.md +6 -0
  83. package/corpus/toolkit/CHANGELOG.md +9 -0
  84. package/corpus/toolkit/package.json +1 -1
  85. package/corpus/toolkit/src/composer/PromptComposer.tsx +5 -1
  86. package/corpus/toolkit/src/composer/RealtimeVoiceMode.tsx +119 -31
  87. package/corpus/toolkit/src/composer/useRealtimeVoiceMode.tsx +30 -0
  88. package/corpus/toolkit/src/conformance/runner.tsx +153 -1
  89. package/corpus/toolkit/src/editor/SharedRichEditor.tsx +13 -2
  90. package/corpus/toolkit/src/editor/SlashCommandMenu.tsx +20 -0
  91. package/corpus/toolkit/src/editor/index.ts +2 -0
  92. package/corpus/toolkit/src/styles.css +52 -23
  93. package/dist/a2a/activity.d.ts +50 -0
  94. package/dist/a2a/activity.d.ts.map +1 -0
  95. package/dist/a2a/activity.js +236 -0
  96. package/dist/a2a/activity.js.map +1 -0
  97. package/dist/a2a/client.d.ts +5 -1
  98. package/dist/a2a/client.d.ts.map +1 -1
  99. package/dist/a2a/client.js +18 -13
  100. package/dist/a2a/client.js.map +1 -1
  101. package/dist/a2a/index.d.ts +2 -1
  102. package/dist/a2a/index.d.ts.map +1 -1
  103. package/dist/a2a/index.js +1 -0
  104. package/dist/a2a/index.js.map +1 -1
  105. package/dist/a2a/types.d.ts +1 -0
  106. package/dist/a2a/types.d.ts.map +1 -1
  107. package/dist/a2a/types.js.map +1 -1
  108. package/dist/agent/engine/anthropic-engine.d.ts +1 -1
  109. package/dist/agent/engine/builder-engine.d.ts +2 -2
  110. package/dist/agent/engine/builder-engine.d.ts.map +1 -1
  111. package/dist/agent/model-config.d.ts +16 -16
  112. package/dist/agent/model-config.d.ts.map +1 -1
  113. package/dist/agent/model-config.js +19 -23
  114. package/dist/agent/model-config.js.map +1 -1
  115. package/dist/agent/production-agent.d.ts +26 -0
  116. package/dist/agent/production-agent.d.ts.map +1 -1
  117. package/dist/agent/production-agent.js +137 -80
  118. package/dist/agent/production-agent.js.map +1 -1
  119. package/dist/agent/types.d.ts +10 -0
  120. package/dist/agent/types.d.ts.map +1 -1
  121. package/dist/agent/types.js.map +1 -1
  122. package/dist/cli/index.js +18 -8
  123. package/dist/cli/index.js.map +1 -1
  124. package/dist/cli/multi-frontier-runs.js +3 -3
  125. package/dist/cli/multi-frontier-runs.js.map +1 -1
  126. package/dist/cli/templates-meta.d.ts.map +1 -1
  127. package/dist/cli/templates-meta.js +0 -12
  128. package/dist/cli/templates-meta.js.map +1 -1
  129. package/dist/cli/workspace-dev.js +1 -1
  130. package/dist/cli/workspace-dev.js.map +1 -1
  131. package/dist/client/AgentPanel.d.ts.map +1 -1
  132. package/dist/client/AgentPanel.js +4 -1
  133. package/dist/client/AgentPanel.js.map +1 -1
  134. package/dist/client/RunStuckBanner.d.ts +3 -5
  135. package/dist/client/RunStuckBanner.d.ts.map +1 -1
  136. package/dist/client/RunStuckBanner.js +17 -18
  137. package/dist/client/RunStuckBanner.js.map +1 -1
  138. package/dist/client/chat/action-chat-ui-surface.d.ts +8 -0
  139. package/dist/client/chat/action-chat-ui-surface.d.ts.map +1 -0
  140. package/dist/client/chat/action-chat-ui-surface.js +10 -0
  141. package/dist/client/chat/action-chat-ui-surface.js.map +1 -0
  142. package/dist/client/chat/message-components.d.ts +3 -0
  143. package/dist/client/chat/message-components.d.ts.map +1 -1
  144. package/dist/client/chat/message-components.js +40 -7
  145. package/dist/client/chat/message-components.js.map +1 -1
  146. package/dist/client/chat/tool-call-display.d.ts +3 -1
  147. package/dist/client/chat/tool-call-display.d.ts.map +1 -1
  148. package/dist/client/chat/tool-call-display.js +76 -23
  149. package/dist/client/chat/tool-call-display.js.map +1 -1
  150. package/dist/client/chat/widgets/InlineExtensionWidget.d.ts.map +1 -1
  151. package/dist/client/chat/widgets/InlineExtensionWidget.js +1 -1
  152. package/dist/client/chat/widgets/InlineExtensionWidget.js.map +1 -1
  153. package/dist/client/chat/widgets/builtin-tool-renderers.d.ts.map +1 -1
  154. package/dist/client/chat/widgets/builtin-tool-renderers.js +5 -3
  155. package/dist/client/chat/widgets/builtin-tool-renderers.js.map +1 -1
  156. package/dist/client/chat-model-groups.d.ts.map +1 -1
  157. package/dist/client/chat-model-groups.js +44 -21
  158. package/dist/client/chat-model-groups.js.map +1 -1
  159. package/dist/client/conversation/AgentConversation.d.ts.map +1 -1
  160. package/dist/client/conversation/AgentConversation.js +3 -2
  161. package/dist/client/conversation/AgentConversation.js.map +1 -1
  162. package/dist/client/error-capture.d.ts.map +1 -1
  163. package/dist/client/error-capture.js +2 -2
  164. package/dist/client/error-capture.js.map +1 -1
  165. package/dist/client/resources/McpConnectionSuggestion.d.ts +1 -0
  166. package/dist/client/resources/McpConnectionSuggestion.d.ts.map +1 -1
  167. package/dist/client/resources/McpConnectionSuggestion.js +9 -8
  168. package/dist/client/resources/McpConnectionSuggestion.js.map +1 -1
  169. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  170. package/dist/client/resources/ResourcesPanel.js +3 -1
  171. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  172. package/dist/client/resources/mcp-integration-catalog.d.ts +1 -0
  173. package/dist/client/resources/mcp-integration-catalog.d.ts.map +1 -1
  174. package/dist/client/resources/mcp-integration-catalog.js +4 -17
  175. package/dist/client/resources/mcp-integration-catalog.js.map +1 -1
  176. package/dist/client/resources/mcp-integration-logos.js +2 -2
  177. package/dist/client/resources/mcp-integration-logos.js.map +1 -1
  178. package/dist/client/route-chunk-recovery.d.ts.map +1 -1
  179. package/dist/client/route-chunk-recovery.js +5 -3
  180. package/dist/client/route-chunk-recovery.js.map +1 -1
  181. package/dist/client/session-replay.js +3 -3
  182. package/dist/client/session-replay.js.map +1 -1
  183. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  184. package/dist/client/settings/SettingsPanel.js +2 -2
  185. package/dist/client/settings/SettingsPanel.js.map +1 -1
  186. package/dist/client/sharing/ShareButton.d.ts +1 -1
  187. package/dist/client/sharing/ShareButton.d.ts.map +1 -1
  188. package/dist/client/sharing/ShareButton.js +3 -4
  189. package/dist/client/sharing/ShareButton.js.map +1 -1
  190. package/dist/client/sharing/ShareDialog.d.ts.map +1 -1
  191. package/dist/client/sharing/ShareDialog.js +1 -2
  192. package/dist/client/sharing/ShareDialog.js.map +1 -1
  193. package/dist/client/sharing/useShareButtonController.d.ts +0 -1
  194. package/dist/client/sharing/useShareButtonController.d.ts.map +1 -1
  195. package/dist/client/sharing/useShareButtonController.js +0 -6
  196. package/dist/client/sharing/useShareButtonController.js.map +1 -1
  197. package/dist/client/sharing/useShareDialogController.d.ts +0 -1
  198. package/dist/client/sharing/useShareDialogController.d.ts.map +1 -1
  199. package/dist/client/sharing/useShareDialogController.js +0 -1
  200. package/dist/client/sharing/useShareDialogController.js.map +1 -1
  201. package/dist/client/sse-event-processor.d.ts +12 -0
  202. package/dist/client/sse-event-processor.d.ts.map +1 -1
  203. package/dist/client/sse-event-processor.js +63 -1
  204. package/dist/client/sse-event-processor.js.map +1 -1
  205. package/dist/client/transcription/use-live-transcription.d.ts +3 -3
  206. package/dist/client/transcription/use-live-transcription.d.ts.map +1 -1
  207. package/dist/client/transcription/use-live-transcription.js +22 -11
  208. package/dist/client/transcription/use-live-transcription.js.map +1 -1
  209. package/dist/collab/awareness.d.ts +2 -2
  210. package/dist/collab/awareness.d.ts.map +1 -1
  211. package/dist/deploy/build.d.ts.map +1 -1
  212. package/dist/deploy/build.js +1 -1
  213. package/dist/deploy/build.js.map +1 -1
  214. package/dist/guards/db-tool-scoping.js +1 -1
  215. package/dist/guards/db-tool-scoping.js.map +1 -1
  216. package/dist/integrations/adapters/slack.d.ts +1 -0
  217. package/dist/integrations/adapters/slack.d.ts.map +1 -1
  218. package/dist/integrations/adapters/slack.js +61 -5
  219. package/dist/integrations/adapters/slack.js.map +1 -1
  220. package/dist/integrations/index.d.ts +1 -1
  221. package/dist/integrations/index.d.ts.map +1 -1
  222. package/dist/integrations/index.js +1 -1
  223. package/dist/integrations/index.js.map +1 -1
  224. package/dist/localization/default-messages.d.ts +6 -0
  225. package/dist/localization/default-messages.d.ts.map +1 -1
  226. package/dist/localization/default-messages.js +7 -1
  227. package/dist/localization/default-messages.js.map +1 -1
  228. package/dist/mcp-client/oauth-routes.d.ts +3 -0
  229. package/dist/mcp-client/oauth-routes.d.ts.map +1 -1
  230. package/dist/mcp-client/oauth-routes.js +41 -12
  231. package/dist/mcp-client/oauth-routes.js.map +1 -1
  232. package/dist/observability/routes.d.ts +3 -3
  233. package/dist/provider-api/actions/custom-provider-registration.d.ts +8 -8
  234. package/dist/provider-api/actions/provider-api.d.ts +11 -11
  235. package/dist/scripts/agent-engines/list-agent-engines.d.ts.map +1 -1
  236. package/dist/scripts/agent-engines/list-agent-engines.js +1 -18
  237. package/dist/scripts/agent-engines/list-agent-engines.js.map +1 -1
  238. package/dist/scripts/call-agent.d.ts.map +1 -1
  239. package/dist/scripts/call-agent.js +49 -6
  240. package/dist/scripts/call-agent.js.map +1 -1
  241. package/dist/secrets/routes.d.ts +6 -6
  242. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  243. package/dist/server/agent-chat-plugin.js +38 -10
  244. package/dist/server/agent-chat-plugin.js.map +1 -1
  245. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  246. package/dist/server/realtime-voice.d.ts.map +1 -1
  247. package/dist/server/realtime-voice.js +1 -1
  248. package/dist/server/realtime-voice.js.map +1 -1
  249. package/dist/server/transcribe-voice.d.ts +1 -1
  250. package/dist/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +16 -0
  251. package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +7 -5
  252. package/dist/terminal/cli-registry.js +1 -1
  253. package/dist/terminal/cli-registry.js.map +1 -1
  254. package/dist/vite/client.d.ts +8 -1
  255. package/dist/vite/client.d.ts.map +1 -1
  256. package/dist/vite/client.js +113 -2
  257. package/dist/vite/client.js.map +1 -1
  258. package/docs/content/a2a-protocol.mdx +15 -0
  259. package/docs/content/template-chat.mdx +1 -1
  260. package/docs/content/template-plan.mdx +3 -3
  261. package/package.json +2 -2
  262. package/src/a2a/activity.ts +371 -0
  263. package/src/a2a/client.ts +35 -11
  264. package/src/a2a/index.ts +21 -0
  265. package/src/a2a/types.ts +8 -0
  266. package/src/agent/model-config.ts +19 -23
  267. package/src/agent/production-agent.ts +167 -100
  268. package/src/agent/types.ts +16 -1
  269. package/src/cli/index.ts +18 -10
  270. package/src/cli/multi-frontier-runs.ts +5 -3
  271. package/src/cli/templates-meta.ts +0 -12
  272. package/src/cli/workspace-dev.ts +1 -1
  273. package/src/client/AgentPanel.tsx +9 -1
  274. package/src/client/RunStuckBanner.tsx +39 -47
  275. package/src/client/chat/action-chat-ui-surface.tsx +32 -0
  276. package/src/client/chat/message-components.tsx +53 -8
  277. package/src/client/chat/tool-call-display.tsx +214 -44
  278. package/src/client/chat/widgets/InlineExtensionWidget.tsx +0 -1
  279. package/src/client/chat/widgets/builtin-tool-renderers.tsx +7 -3
  280. package/src/client/chat-model-groups.ts +67 -27
  281. package/src/client/conversation/AgentConversation.tsx +12 -1
  282. package/src/client/error-capture.ts +2 -6
  283. package/src/client/resources/McpConnectionSuggestion.tsx +20 -14
  284. package/src/client/resources/ResourcesPanel.tsx +5 -1
  285. package/src/client/resources/mcp-integration-catalog.ts +7 -17
  286. package/src/client/resources/mcp-integration-logos.ts +2 -2
  287. package/src/client/route-chunk-recovery.ts +5 -3
  288. package/src/client/session-replay.ts +3 -3
  289. package/src/client/settings/SettingsPanel.tsx +15 -6
  290. package/src/client/sharing/ShareButton.tsx +1 -27
  291. package/src/client/sharing/ShareDialog.tsx +0 -16
  292. package/src/client/sharing/useShareButtonController.ts +0 -7
  293. package/src/client/sharing/useShareDialogController.ts +0 -2
  294. package/src/client/sse-event-processor.ts +85 -1
  295. package/src/client/transcription/use-live-transcription.ts +64 -45
  296. package/src/deploy/build.ts +2 -1
  297. package/src/guards/db-tool-scoping.ts +1 -1
  298. package/src/integrations/adapters/slack.ts +84 -5
  299. package/src/integrations/index.ts +5 -1
  300. package/src/localization/default-messages.ts +7 -1
  301. package/src/mcp-client/oauth-routes.ts +45 -12
  302. package/src/scripts/agent-engines/list-agent-engines.ts +1 -18
  303. package/src/scripts/call-agent.ts +49 -6
  304. package/src/server/agent-chat-plugin.ts +50 -10
  305. package/src/server/realtime-voice.ts +4 -1
  306. package/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +16 -0
  307. package/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +7 -5
  308. package/src/terminal/cli-registry.ts +1 -1
  309. package/src/vite/client.ts +166 -1
  310. package/corpus/core/src/observability/hosted-model-experiment.ts +0 -118
  311. package/corpus/templates/crm/.agents/skills/agent-native-docs/SKILL.md +0 -115
  312. package/corpus/templates/crm/.agents/skills/agent-native-toolkit/SKILL.md +0 -177
  313. package/corpus/templates/crm/.agents/skills/crm/SKILL.md +0 -128
  314. package/corpus/templates/crm/.agents/skills/customizing-agent-native/SKILL.md +0 -220
  315. package/corpus/templates/crm/.agents/skills/feature-flags/SKILL.md +0 -169
  316. package/corpus/templates/crm/.agents/skills/upgrade-agent-native/SKILL.md +0 -100
  317. package/corpus/templates/crm/.env.example +0 -5
  318. package/corpus/templates/crm/AGENTS.md +0 -120
  319. package/corpus/templates/crm/CHANGELOG.md +0 -1
  320. package/corpus/templates/crm/DEVELOPING.md +0 -66
  321. package/corpus/templates/crm/README.md +0 -106
  322. package/corpus/templates/crm/_gitignore +0 -12
  323. package/corpus/templates/crm/actions/_crm-action-utils.ts +0 -87
  324. package/corpus/templates/crm/actions/_crm-dashboard.ts +0 -69
  325. package/corpus/templates/crm/actions/_crm-data-program-actions.ts +0 -15
  326. package/corpus/templates/crm/actions/_crm-signal-utils.ts +0 -79
  327. package/corpus/templates/crm/actions/apply-crm-proposals.ts +0 -203
  328. package/corpus/templates/crm/actions/attach-call-evidence.ts +0 -170
  329. package/corpus/templates/crm/actions/configure-crm-connection.ts +0 -126
  330. package/corpus/templates/crm/actions/configure-native-crm.ts +0 -44
  331. package/corpus/templates/crm/actions/create-crm-record.ts +0 -148
  332. package/corpus/templates/crm/actions/create-crm-signal-tracker.ts +0 -58
  333. package/corpus/templates/crm/actions/delete-staged-dataset.ts +0 -14
  334. package/corpus/templates/crm/actions/get-crm-automation-recipe.ts +0 -36
  335. package/corpus/templates/crm/actions/get-crm-dashboard-panel.ts +0 -35
  336. package/corpus/templates/crm/actions/get-crm-dashboard.ts +0 -14
  337. package/corpus/templates/crm/actions/get-crm-overview.ts +0 -13
  338. package/corpus/templates/crm/actions/get-crm-pipeline-data.ts +0 -61
  339. package/corpus/templates/crm/actions/get-crm-record.ts +0 -75
  340. package/corpus/templates/crm/actions/install-crm-pipeline-dashboard.ts +0 -81
  341. package/corpus/templates/crm/actions/list-crm-dashboard-revisions.ts +0 -15
  342. package/corpus/templates/crm/actions/list-crm-dashboards.ts +0 -15
  343. package/corpus/templates/crm/actions/list-crm-proposals.ts +0 -31
  344. package/corpus/templates/crm/actions/list-crm-records.ts +0 -79
  345. package/corpus/templates/crm/actions/list-crm-saved-views.ts +0 -15
  346. package/corpus/templates/crm/actions/list-crm-signal-hits.ts +0 -43
  347. package/corpus/templates/crm/actions/list-crm-signal-trackers.ts +0 -32
  348. package/corpus/templates/crm/actions/list-crm-tasks.ts +0 -22
  349. package/corpus/templates/crm/actions/list-staged-datasets.ts +0 -14
  350. package/corpus/templates/crm/actions/list-workspace-connections.ts +0 -47
  351. package/corpus/templates/crm/actions/manage-crm-signal-tracker.ts +0 -87
  352. package/corpus/templates/crm/actions/manage-crm-task.ts +0 -132
  353. package/corpus/templates/crm/actions/navigate.ts +0 -63
  354. package/corpus/templates/crm/actions/provider-api-catalog.ts +0 -22
  355. package/corpus/templates/crm/actions/provider-api-docs.ts +0 -54
  356. package/corpus/templates/crm/actions/provider-api-request.ts +0 -92
  357. package/corpus/templates/crm/actions/query-staged-dataset.ts +0 -44
  358. package/corpus/templates/crm/actions/record-crm-call-insight.ts +0 -160
  359. package/corpus/templates/crm/actions/record-crm-smart-signal.ts +0 -150
  360. package/corpus/templates/crm/actions/restore-crm-dashboard-revision.ts +0 -23
  361. package/corpus/templates/crm/actions/review-crm-signal.ts +0 -31
  362. package/corpus/templates/crm/actions/run-crm-saved-view-program.ts +0 -103
  363. package/corpus/templates/crm/actions/run-crm-signal-trackers.ts +0 -275
  364. package/corpus/templates/crm/actions/run.ts +0 -7
  365. package/corpus/templates/crm/actions/save-crm-dashboard.ts +0 -51
  366. package/corpus/templates/crm/actions/save-crm-saved-view.ts +0 -119
  367. package/corpus/templates/crm/actions/sync-crm.ts +0 -146
  368. package/corpus/templates/crm/actions/update-crm-record.ts +0 -510
  369. package/corpus/templates/crm/actions/view-screen.ts +0 -218
  370. package/corpus/templates/crm/agent-native.app-skill.json +0 -58
  371. package/corpus/templates/crm/app/components/crm/CreateCrmRecordDialog.tsx +0 -158
  372. package/corpus/templates/crm/app/components/crm/CrmDashboardPanel.tsx +0 -78
  373. package/corpus/templates/crm/app/components/crm/CrmSignalsPanel.tsx +0 -226
  374. package/corpus/templates/crm/app/components/crm/IntelligenceSettings.tsx +0 -414
  375. package/corpus/templates/crm/app/components/crm/RecordActions.tsx +0 -510
  376. package/corpus/templates/crm/app/components/crm/RecordGrid.tsx +0 -134
  377. package/corpus/templates/crm/app/components/crm/RecordWorkspace.tsx +0 -362
  378. package/corpus/templates/crm/app/components/crm/SavedViewDataProgram.tsx +0 -93
  379. package/corpus/templates/crm/app/components/crm/Surface.tsx +0 -97
  380. package/corpus/templates/crm/app/components/crm/WorkOverview.tsx +0 -180
  381. package/corpus/templates/crm/app/components/layout/CrmLayout.tsx +0 -112
  382. package/corpus/templates/crm/app/components/layout/CrmSidebar.tsx +0 -84
  383. package/corpus/templates/crm/app/components/ui/alert-dialog.tsx +0 -1
  384. package/corpus/templates/crm/app/components/ui/badge.tsx +0 -1
  385. package/corpus/templates/crm/app/components/ui/button.tsx +0 -1
  386. package/corpus/templates/crm/app/components/ui/card.tsx +0 -1
  387. package/corpus/templates/crm/app/components/ui/dialog.tsx +0 -1
  388. package/corpus/templates/crm/app/components/ui/input.tsx +0 -1
  389. package/corpus/templates/crm/app/components/ui/label.tsx +0 -1
  390. package/corpus/templates/crm/app/components/ui/select.tsx +0 -1
  391. package/corpus/templates/crm/app/components/ui/sheet.tsx +0 -1
  392. package/corpus/templates/crm/app/components/ui/skeleton.tsx +0 -1
  393. package/corpus/templates/crm/app/components/ui/switch.tsx +0 -1
  394. package/corpus/templates/crm/app/components/ui/table.tsx +0 -1
  395. package/corpus/templates/crm/app/components/ui/tabs.tsx +0 -1
  396. package/corpus/templates/crm/app/components/ui/textarea.tsx +0 -1
  397. package/corpus/templates/crm/app/components/ui/toolkit-provider.tsx +0 -17
  398. package/corpus/templates/crm/app/design-system.ts +0 -3
  399. package/corpus/templates/crm/app/entry.client.tsx +0 -16
  400. package/corpus/templates/crm/app/entry.server.tsx +0 -10
  401. package/corpus/templates/crm/app/global.css +0 -167
  402. package/corpus/templates/crm/app/hooks/use-navigation-state.ts +0 -60
  403. package/corpus/templates/crm/app/i18n/en-US.ts +0 -89
  404. package/corpus/templates/crm/app/i18n/index.ts +0 -34
  405. package/corpus/templates/crm/app/lib/dashboard.ts +0 -13
  406. package/corpus/templates/crm/app/lib/navigation.ts +0 -54
  407. package/corpus/templates/crm/app/lib/tab-id.ts +0 -1
  408. package/corpus/templates/crm/app/lib/types.ts +0 -172
  409. package/corpus/templates/crm/app/lib/utils.ts +0 -1
  410. package/corpus/templates/crm/app/root.tsx +0 -91
  411. package/corpus/templates/crm/app/routes/_index.tsx +0 -26
  412. package/corpus/templates/crm/app/routes/accounts.tsx +0 -41
  413. package/corpus/templates/crm/app/routes/agent.tsx +0 -5
  414. package/corpus/templates/crm/app/routes/ask.tsx +0 -53
  415. package/corpus/templates/crm/app/routes/dashboard.tsx +0 -118
  416. package/corpus/templates/crm/app/routes/opportunities.tsx +0 -41
  417. package/corpus/templates/crm/app/routes/people.tsx +0 -41
  418. package/corpus/templates/crm/app/routes/proposals.tsx +0 -266
  419. package/corpus/templates/crm/app/routes/records.$recordId.tsx +0 -35
  420. package/corpus/templates/crm/app/routes/settings.tsx +0 -63
  421. package/corpus/templates/crm/app/routes/setup.tsx +0 -308
  422. package/corpus/templates/crm/app/routes/tasks.tsx +0 -252
  423. package/corpus/templates/crm/app/routes/views.tsx +0 -333
  424. package/corpus/templates/crm/app/routes.ts +0 -17
  425. package/corpus/templates/crm/app/vite-env.d.ts +0 -6
  426. package/corpus/templates/crm/changelog/2026-07-21-agent-native-crm.md +0 -6
  427. package/corpus/templates/crm/changelog/2026-07-21-clips-call-evidence-review-recipe.md +0 -6
  428. package/corpus/templates/crm/changelog/2026-07-21-crm-can-now-find-and-review-evidence-grounded-call-signals-w.md +0 -6
  429. package/corpus/templates/crm/changelog/2026-07-21-crm-can-now-manage-keyword-and-smart-call-signal-trackers-fr.md +0 -6
  430. package/corpus/templates/crm/changelog/2026-07-21-delegated-local-crm-automation.md +0 -6
  431. package/corpus/templates/crm/changelog/2026-07-21-native-sql.md +0 -6
  432. package/corpus/templates/crm/changelog/2026-07-21-pipeline-dashboard.md +0 -6
  433. package/corpus/templates/crm/changelog/2026-07-21-pipeline-dashboards-now-install-correctly-from-the-crm-actio.md +0 -6
  434. package/corpus/templates/crm/changelog/2026-07-21-salesforce-connection.md +0 -6
  435. package/corpus/templates/crm/changelog/2026-07-22-crm-field-validation-now-explains-which-fields-cannot-be-edi.md +0 -6
  436. package/corpus/templates/crm/changelog/2026-07-22-fixed-hubspot-contact-syncs-missing-records-updated-after-th.md +0 -6
  437. package/corpus/templates/crm/changelog/2026-07-22-fixed-pipeline-dashboard-panels-so-their-opportunity-data-lo.md +0 -6
  438. package/corpus/templates/crm/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +0 -6
  439. package/corpus/templates/crm/components.json +0 -20
  440. package/corpus/templates/crm/docs/architecture/crm-contract.md +0 -180
  441. package/corpus/templates/crm/learnings.defaults.md +0 -5
  442. package/corpus/templates/crm/package.json +0 -59
  443. package/corpus/templates/crm/public/favicon.svg +0 -1
  444. package/corpus/templates/crm/public/icon-180.svg +0 -1
  445. package/corpus/templates/crm/public/manifest.json +0 -11
  446. package/corpus/templates/crm/react-router.config.ts +0 -7
  447. package/corpus/templates/crm/server/crm/adapter.ts +0 -32
  448. package/corpus/templates/crm/server/crm/crm-field-firewall.ts +0 -64
  449. package/corpus/templates/crm/server/crm/crm-mirror.ts +0 -711
  450. package/corpus/templates/crm/server/crm/hubspot-adapter.ts +0 -1146
  451. package/corpus/templates/crm/server/crm/native-adapter.ts +0 -1715
  452. package/corpus/templates/crm/server/crm/read-through.ts +0 -207
  453. package/corpus/templates/crm/server/crm/salesforce-adapter.ts +0 -1255
  454. package/corpus/templates/crm/server/db/crm-store.ts +0 -1170
  455. package/corpus/templates/crm/server/db/index.ts +0 -169
  456. package/corpus/templates/crm/server/db/schema.ts +0 -441
  457. package/corpus/templates/crm/server/lib/intelligence/default-detectors.ts +0 -65
  458. package/corpus/templates/crm/server/lib/intelligence/evidence.ts +0 -105
  459. package/corpus/templates/crm/server/lib/intelligence/keyword-detector.ts +0 -100
  460. package/corpus/templates/crm/server/lib/intelligence/smart-detector.ts +0 -144
  461. package/corpus/templates/crm/server/lib/intelligence/summary.ts +0 -141
  462. package/corpus/templates/crm/server/lib/provider-api.ts +0 -64
  463. package/corpus/templates/crm/server/middleware/auth.ts +0 -4
  464. package/corpus/templates/crm/server/plugins/agent-chat.ts +0 -68
  465. package/corpus/templates/crm/server/plugins/auth.ts +0 -14
  466. package/corpus/templates/crm/server/plugins/core-routes.ts +0 -17
  467. package/corpus/templates/crm/server/plugins/db.ts +0 -454
  468. package/corpus/templates/crm/server/routes/[...page].get.ts +0 -5
  469. package/corpus/templates/crm/shared/crm-automation-recipes.ts +0 -132
  470. package/corpus/templates/crm/shared/crm-contract.ts +0 -254
  471. package/corpus/templates/crm/shared/crm-sales-config.ts +0 -63
  472. package/corpus/templates/crm/ssr-entry.ts +0 -11
  473. package/corpus/templates/crm/tsconfig.json +0 -24
  474. package/corpus/templates/crm/vite.config.ts +0 -15
  475. package/corpus/templates/crm/vitest.config.ts +0 -5
  476. package/dist/observability/hosted-model-experiment.d.ts +0 -39
  477. package/dist/observability/hosted-model-experiment.d.ts.map +0 -1
  478. package/dist/observability/hosted-model-experiment.js +0 -90
  479. package/dist/observability/hosted-model-experiment.js.map +0 -1
  480. package/src/observability/hosted-model-experiment.ts +0 -118
@@ -1,169 +0,0 @@
1
- import { createDashboardStorage } from "@agent-native/core/dashboard-storage";
2
- import { registerDataProgramsShareable } from "@agent-native/core/data-programs";
3
- import { createGetDb } from "@agent-native/core/db";
4
- import { registerShareableResource } from "@agent-native/core/sharing";
5
-
6
- import * as schema from "./schema.js";
7
-
8
- export const getDb = createGetDb(schema);
9
- export { schema };
10
-
11
- export interface CrmDashboardConfig {
12
- version: 1;
13
- panels: Array<{
14
- id: string;
15
- title: string;
16
- source: "program";
17
- query: string;
18
- chartType: "metric" | "bar" | "table";
19
- }>;
20
- }
21
-
22
- export const crmDashboardStore = createDashboardStorage<
23
- "pipeline",
24
- CrmDashboardConfig
25
- >({
26
- schema: {
27
- dashboards: schema.crmDashboards,
28
- dashboardRevisions: schema.crmDashboardRevisions,
29
- dashboardShares: schema.crmDashboardShares,
30
- },
31
- getDb,
32
- resourceType: "crm-dashboard",
33
- displayName: "CRM dashboard",
34
- validateKind: (kind): kind is "pipeline" => kind === "pipeline",
35
- getResourcePath: (dashboard) => `/dashboard?id=${dashboard.id}`,
36
- allowPublic: false,
37
- requireOrgMemberForUserShares: true,
38
- });
39
-
40
- crmDashboardStore.registerShareable();
41
-
42
- registerDataProgramsShareable();
43
-
44
- const registrations = [
45
- [
46
- "crm-connection",
47
- schema.crmConnections,
48
- schema.crmConnectionShares,
49
- "label",
50
- "/settings/connections",
51
- ],
52
- [
53
- "crm-object",
54
- schema.crmObjects,
55
- schema.crmObjectShares,
56
- "label",
57
- "/settings/fields",
58
- ],
59
- [
60
- "crm-field-policy",
61
- schema.crmFieldPolicies,
62
- schema.crmFieldPolicyShares,
63
- "label",
64
- "/settings/fields",
65
- ],
66
- [
67
- "crm-record",
68
- schema.crmRecords,
69
- schema.crmRecordShares,
70
- "displayName",
71
- "/records",
72
- ],
73
- [
74
- "crm-record-field",
75
- schema.crmRecordFields,
76
- schema.crmRecordFieldShares,
77
- "fieldName",
78
- "/records",
79
- ],
80
- [
81
- "crm-relationship",
82
- schema.crmRelationships,
83
- schema.crmRelationshipShares,
84
- "relationshipType",
85
- "/records",
86
- ],
87
- [
88
- "crm-interaction",
89
- schema.crmInteractions,
90
- schema.crmInteractionShares,
91
- "title",
92
- "/records",
93
- ],
94
- [
95
- "crm-call-evidence",
96
- schema.crmCallEvidence,
97
- schema.crmCallEvidenceShares,
98
- "artifactId",
99
- "/records",
100
- ],
101
- [
102
- "crm-signal-tracker",
103
- schema.crmSignalTrackers,
104
- schema.crmSignalTrackerShares,
105
- "name",
106
- "/settings/intelligence",
107
- ],
108
- [
109
- "crm-signal-run",
110
- schema.crmSignalRuns,
111
- schema.crmSignalRunShares,
112
- "id",
113
- "/records",
114
- ],
115
- [
116
- "crm-signal",
117
- schema.crmSignals,
118
- schema.crmSignalShares,
119
- "label",
120
- "/records",
121
- ],
122
- ["crm-task", schema.crmTasks, schema.crmTaskShares, "title", "/work"],
123
- [
124
- "crm-saved-view",
125
- schema.crmSavedViews,
126
- schema.crmSavedViewShares,
127
- "name",
128
- "/views",
129
- ],
130
- [
131
- "crm-mutation",
132
- schema.crmMutations,
133
- schema.crmMutationShares,
134
- "id",
135
- "/proposals",
136
- ],
137
- [
138
- "crm-sync-run",
139
- schema.crmSyncRuns,
140
- schema.crmSyncRunShares,
141
- "id",
142
- "/settings/connections",
143
- ],
144
- ] as const;
145
-
146
- for (const [
147
- type,
148
- resourceTable,
149
- sharesTable,
150
- titleColumn,
151
- path,
152
- ] of registrations) {
153
- registerShareableResource({
154
- type,
155
- resourceTable,
156
- sharesTable,
157
- displayName: type
158
- .split("-")
159
- .slice(1)
160
- .map((part) => part[0]?.toUpperCase() + part.slice(1))
161
- .join(" "),
162
- titleColumn,
163
- getResourcePath: (resource) =>
164
- type === "crm-record" ? `/records/${resource.id}` : path,
165
- allowPublic: false,
166
- requireOrgMemberForUserShares: true,
167
- getDb,
168
- });
169
- }
@@ -1,441 +0,0 @@
1
- import { createDashboardStorageSchema } from "@agent-native/core/dashboard-storage";
2
- import { getDialect } from "@agent-native/core/db";
3
- import {
4
- createSharesTable,
5
- integer,
6
- now,
7
- ownableColumns,
8
- real,
9
- table,
10
- text,
11
- } from "@agent-native/core/db/schema";
12
- import { customType as pgCustomType } from "drizzle-orm/pg-core";
13
- import { integer as sqliteInteger } from "drizzle-orm/sqlite-core";
14
-
15
- const pgIntegerBoolean = pgCustomType<{
16
- data: boolean;
17
- driverData: number;
18
- }>({
19
- dataType: () => "integer",
20
- fromDriver: (value) => value !== 0,
21
- toDriver: (value) => (value ? 1 : 0),
22
- });
23
-
24
- const sqliteBoolean = <TName extends string>(name: TName) =>
25
- sqliteInteger(name, { mode: "boolean" });
26
-
27
- const portableBoolean: typeof sqliteBoolean = ((name: string) =>
28
- getDialect() === "postgres"
29
- ? pgIntegerBoolean(name)
30
- : sqliteBoolean(name)) as unknown as typeof sqliteBoolean;
31
-
32
- export const crmConnections = table("crm_connections", {
33
- id: text("id").primaryKey(),
34
- provider: text("provider", {
35
- enum: ["hubspot", "salesforce", "native", "custom"],
36
- }).notNull(),
37
- workspaceConnectionId: text("workspace_connection_id"),
38
- label: text("label").notNull(),
39
- accountId: text("account_id"),
40
- mode: text("mode", { enum: ["connected", "hybrid", "native"] })
41
- .notNull()
42
- .default("connected"),
43
- status: text("status", {
44
- enum: ["connected", "syncing", "error", "disconnected"],
45
- })
46
- .notNull()
47
- .default("connected"),
48
- selectedPipelinesJson: text("selected_pipelines_json")
49
- .notNull()
50
- .default("[]"),
51
- selectedObjectTypesJson: text("selected_object_types_json")
52
- .notNull()
53
- .default("[]"),
54
- accessScopeKey: text("access_scope_key").notNull(),
55
- accessScopeJson: text("access_scope_json").notNull().default("{}"),
56
- lastSyncedAt: text("last_synced_at"),
57
- lastError: text("last_error"),
58
- createdAt: text("created_at").notNull().default(now()),
59
- updatedAt: text("updated_at").notNull().default(now()),
60
- ...ownableColumns(),
61
- });
62
-
63
- export const crmConnectionShares = createSharesTable("crm_connection_shares");
64
-
65
- export const crmObjects = table("crm_objects", {
66
- id: text("id").primaryKey(),
67
- connectionId: text("connection_id").notNull(),
68
- provider: text("provider").notNull(),
69
- objectType: text("object_type").notNull(),
70
- kind: text("kind", {
71
- enum: ["account", "person", "opportunity", "activity", "task", "custom"],
72
- }).notNull(),
73
- label: text("label").notNull(),
74
- pluralLabel: text("plural_label").notNull(),
75
- custom: portableBoolean("custom").notNull().default(false),
76
- queryable: portableBoolean("queryable").notNull().default(true),
77
- searchable: portableBoolean("searchable").notNull().default(true),
78
- createable: portableBoolean("createable").notNull().default(false),
79
- updateable: portableBoolean("updateable").notNull().default(false),
80
- deleteable: portableBoolean("deleteable").notNull().default(false),
81
- capabilitiesJson: text("capabilities_json").notNull().default("{}"),
82
- createdAt: text("created_at").notNull().default(now()),
83
- updatedAt: text("updated_at").notNull().default(now()),
84
- ...ownableColumns(),
85
- });
86
-
87
- export const crmObjectShares = createSharesTable("crm_object_shares");
88
-
89
- export const crmFieldPolicies = table("crm_field_policies", {
90
- id: text("id").primaryKey(),
91
- connectionId: text("connection_id").notNull(),
92
- objectType: text("object_type").notNull(),
93
- fieldName: text("field_name").notNull(),
94
- label: text("label").notNull(),
95
- valueType: text("value_type").notNull(),
96
- storagePolicy: text("storage_policy", {
97
- enum: [
98
- "mirrored",
99
- "remote-only",
100
- "redacted",
101
- "derived-local",
102
- "local-authoritative",
103
- ],
104
- })
105
- .notNull()
106
- .default("remote-only"),
107
- sensitive: portableBoolean("sensitive").notNull().default(false),
108
- readable: portableBoolean("readable").notNull().default(true),
109
- createable: portableBoolean("createable").notNull().default(false),
110
- updateable: portableBoolean("updateable").notNull().default(false),
111
- required: portableBoolean("required").notNull().default(false),
112
- metadataJson: text("metadata_json").notNull().default("{}"),
113
- createdAt: text("created_at").notNull().default(now()),
114
- updatedAt: text("updated_at").notNull().default(now()),
115
- ...ownableColumns(),
116
- });
117
-
118
- export const crmFieldPolicyShares = createSharesTable(
119
- "crm_field_policy_shares",
120
- );
121
-
122
- export const crmRecords = table("crm_records", {
123
- id: text("id").primaryKey(),
124
- connectionId: text("connection_id").notNull(),
125
- provider: text("provider").notNull(),
126
- objectType: text("object_type").notNull(),
127
- kind: text("kind", {
128
- enum: ["account", "person", "opportunity", "activity", "task", "custom"],
129
- }).notNull(),
130
- remoteId: text("remote_id").notNull(),
131
- displayName: text("display_name").notNull(),
132
- primaryEmail: text("primary_email"),
133
- domain: text("domain"),
134
- stage: text("stage"),
135
- pipelineId: text("pipeline_id"),
136
- pipelineName: text("pipeline_name"),
137
- ownerRemoteId: text("owner_remote_id"),
138
- ownerName: text("owner_name"),
139
- amount: real("amount"),
140
- currencyCode: text("currency_code"),
141
- closeDate: text("close_date"),
142
- desiredCadenceDays: integer("desired_cadence_days"),
143
- lastMeaningfulInteractionAt: text("last_meaningful_interaction_at"),
144
- nextContactAt: text("next_contact_at"),
145
- remoteRevision: text("remote_revision"),
146
- remoteUpdatedAt: text("remote_updated_at"),
147
- lastSyncedAt: text("last_synced_at"),
148
- accessScopeKey: text("access_scope_key").notNull(),
149
- accessScopeJson: text("access_scope_json").notNull().default("{}"),
150
- tombstone: portableBoolean("tombstone").notNull().default(false),
151
- createdAt: text("created_at").notNull().default(now()),
152
- updatedAt: text("updated_at").notNull().default(now()),
153
- ...ownableColumns(),
154
- });
155
-
156
- export const crmRecordShares = createSharesTable("crm_record_shares");
157
-
158
- export const crmRecordFields = table("crm_record_fields", {
159
- id: text("id").primaryKey(),
160
- recordId: text("record_id").notNull(),
161
- fieldPolicyId: text("field_policy_id"),
162
- fieldName: text("field_name").notNull(),
163
- valueType: text("value_type").notNull(),
164
- storagePolicy: text("storage_policy", {
165
- enum: ["mirrored", "derived-local", "local-authoritative"],
166
- }).notNull(),
167
- stringValue: text("string_value"),
168
- numberValue: real("number_value"),
169
- booleanValue: portableBoolean("boolean_value"),
170
- jsonValue: text("json_value"),
171
- provenanceJson: text("provenance_json").notNull().default("[]"),
172
- accessScopeKey: text("access_scope_key").notNull().default("unverified"),
173
- accessScopeJson: text("access_scope_json").notNull().default("{}"),
174
- remoteRevision: text("remote_revision"),
175
- createdAt: text("created_at").notNull().default(now()),
176
- updatedAt: text("updated_at").notNull().default(now()),
177
- ...ownableColumns(),
178
- });
179
-
180
- export const crmRecordFieldShares = createSharesTable(
181
- "crm_record_field_shares",
182
- );
183
-
184
- export const crmRelationships = table("crm_relationships", {
185
- id: text("id").primaryKey(),
186
- connectionId: text("connection_id").notNull(),
187
- fromRecordId: text("from_record_id").notNull(),
188
- toRecordId: text("to_record_id").notNull(),
189
- relationshipType: text("relationship_type").notNull(),
190
- label: text("label"),
191
- inverseLabel: text("inverse_label"),
192
- sourceField: text("source_field"),
193
- remoteRelationshipId: text("remote_relationship_id"),
194
- remoteRevision: text("remote_revision"),
195
- tombstone: portableBoolean("tombstone").notNull().default(false),
196
- lastSyncedAt: text("last_synced_at"),
197
- createdAt: text("created_at").notNull().default(now()),
198
- updatedAt: text("updated_at").notNull().default(now()),
199
- ...ownableColumns(),
200
- });
201
-
202
- export const crmRelationshipShares = createSharesTable(
203
- "crm_relationship_shares",
204
- );
205
-
206
- export const crmInteractions = table("crm_interactions", {
207
- id: text("id").primaryKey(),
208
- recordId: text("record_id").notNull(),
209
- connectionId: text("connection_id"),
210
- kind: text("kind", {
211
- enum: ["call", "meeting", "email", "note", "message", "other"],
212
- }).notNull(),
213
- direction: text("direction", {
214
- enum: ["inbound", "outbound", "internal", "unknown"],
215
- })
216
- .notNull()
217
- .default("unknown"),
218
- title: text("title").notNull(),
219
- summary: text("summary").notNull().default(""),
220
- occurredAt: text("occurred_at").notNull(),
221
- meaningful: portableBoolean("meaningful").notNull().default(true),
222
- providerObjectType: text("provider_object_type"),
223
- providerRemoteId: text("provider_remote_id"),
224
- sourceApp: text("source_app"),
225
- sourceUrl: text("source_url"),
226
- participantsJson: text("participants_json").notNull().default("[]"),
227
- createdAt: text("created_at").notNull().default(now()),
228
- updatedAt: text("updated_at").notNull().default(now()),
229
- ...ownableColumns(),
230
- });
231
-
232
- export const crmInteractionShares = createSharesTable("crm_interaction_shares");
233
-
234
- export const crmCallEvidence = table("crm_call_evidence", {
235
- id: text("id").primaryKey(),
236
- interactionId: text("interaction_id"),
237
- recordId: text("record_id").notNull(),
238
- sourceApp: text("source_app").notNull().default("clips"),
239
- artifactType: text("artifact_type").notNull().default("call-evidence"),
240
- artifactId: text("artifact_id").notNull(),
241
- sourceUrl: text("source_url").notNull(),
242
- quote: text("quote").notNull().default(""),
243
- speaker: text("speaker"),
244
- startSeconds: real("start_seconds"),
245
- endSeconds: real("end_seconds"),
246
- summary: text("summary").notNull().default(""),
247
- capturedAt: text("captured_at").notNull(),
248
- createdAt: text("created_at").notNull().default(now()),
249
- updatedAt: text("updated_at").notNull().default(now()),
250
- ...ownableColumns(),
251
- });
252
-
253
- export const crmCallEvidenceShares = createSharesTable(
254
- "crm_call_evidence_shares",
255
- );
256
-
257
- export const crmSignalTrackers = table("crm_signal_trackers", {
258
- id: text("id").primaryKey(),
259
- name: text("name").notNull(),
260
- description: text("description").notNull().default(""),
261
- kind: text("kind", { enum: ["keyword", "smart"] }).notNull(),
262
- keywordsJson: text("keywords_json").notNull().default("[]"),
263
- classifierPrompt: text("classifier_prompt").notNull().default(""),
264
- enabled: portableBoolean("enabled").notNull().default(true),
265
- isDefault: portableBoolean("is_default").notNull().default(false),
266
- createdAt: text("created_at").notNull().default(now()),
267
- updatedAt: text("updated_at").notNull().default(now()),
268
- ...ownableColumns(),
269
- });
270
-
271
- export const crmSignalTrackerShares = createSharesTable(
272
- "crm_signal_tracker_shares",
273
- );
274
-
275
- export const crmSignalRuns = table("crm_signal_runs", {
276
- id: text("id").primaryKey(),
277
- trackerId: text("tracker_id"),
278
- recordId: text("record_id").notNull(),
279
- kind: text("kind", { enum: ["keyword", "smart", "summary"] }).notNull(),
280
- status: text("status", {
281
- enum: ["queued", "running", "completed", "failed"],
282
- })
283
- .notNull()
284
- .default("queued"),
285
- evidenceCount: integer("evidence_count").notNull().default(0),
286
- model: text("model"),
287
- modelVersion: text("model_version"),
288
- idempotencyKey: text("idempotency_key").notNull(),
289
- error: text("error"),
290
- createdAt: text("created_at").notNull().default(now()),
291
- updatedAt: text("updated_at").notNull().default(now()),
292
- completedAt: text("completed_at"),
293
- ...ownableColumns(),
294
- });
295
-
296
- export const crmSignalRunShares = createSharesTable("crm_signal_run_shares");
297
-
298
- export const crmSignals = table("crm_signals", {
299
- id: text("id").primaryKey(),
300
- runId: text("run_id"),
301
- trackerId: text("tracker_id"),
302
- recordId: text("record_id").notNull(),
303
- evidenceId: text("evidence_id").notNull(),
304
- kind: text("kind", {
305
- enum: ["moment", "call-summary", "next-step"],
306
- }).notNull(),
307
- label: text("label").notNull(),
308
- quote: text("quote").notNull().default(""),
309
- speaker: text("speaker"),
310
- startSeconds: real("start_seconds"),
311
- endSeconds: real("end_seconds"),
312
- summary: text("summary").notNull().default(""),
313
- confidence: real("confidence").notNull().default(0),
314
- detector: text("detector", { enum: ["keyword", "agent"] }).notNull(),
315
- model: text("model"),
316
- modelVersion: text("model_version"),
317
- reviewStatus: text("review_status", {
318
- enum: ["unreviewed", "confirmed", "dismissed"],
319
- })
320
- .notNull()
321
- .default("unreviewed"),
322
- idempotencyKey: text("idempotency_key").notNull(),
323
- createdAt: text("created_at").notNull().default(now()),
324
- updatedAt: text("updated_at").notNull().default(now()),
325
- ...ownableColumns(),
326
- });
327
-
328
- export const crmSignalShares = createSharesTable("crm_signal_shares");
329
-
330
- export const crmTasks = table("crm_tasks", {
331
- id: text("id").primaryKey(),
332
- recordId: text("record_id"),
333
- title: text("title").notNull(),
334
- description: text("description").notNull().default(""),
335
- status: text("status", { enum: ["open", "done", "cancelled"] })
336
- .notNull()
337
- .default("open"),
338
- dueAt: text("due_at"),
339
- assignedTo: text("assigned_to"),
340
- authority: text("authority", { enum: ["local", "provider"] })
341
- .notNull()
342
- .default("local"),
343
- connectionId: text("connection_id"),
344
- providerObjectType: text("provider_object_type"),
345
- providerRemoteId: text("provider_remote_id"),
346
- remoteRevision: text("remote_revision"),
347
- completedAt: text("completed_at"),
348
- createdAt: text("created_at").notNull().default(now()),
349
- updatedAt: text("updated_at").notNull().default(now()),
350
- ...ownableColumns(),
351
- });
352
-
353
- export const crmTaskShares = createSharesTable("crm_task_shares");
354
-
355
- export const crmSavedViews = table("crm_saved_views", {
356
- id: text("id").primaryKey(),
357
- name: text("name").notNull(),
358
- description: text("description").notNull().default(""),
359
- kind: text("kind"),
360
- filtersJson: text("filters_json").notNull().default("{}"),
361
- columnsJson: text("columns_json").notNull().default("[]"),
362
- sortJson: text("sort_json").notNull().default("[]"),
363
- dataProgramId: text("data_program_id"),
364
- pinned: portableBoolean("pinned").notNull().default(false),
365
- createdAt: text("created_at").notNull().default(now()),
366
- updatedAt: text("updated_at").notNull().default(now()),
367
- ...ownableColumns(),
368
- });
369
-
370
- export const crmSavedViewShares = createSharesTable("crm_saved_view_shares");
371
-
372
- export const crmMutations = table("crm_mutations", {
373
- id: text("id").primaryKey(),
374
- recordId: text("record_id"),
375
- connectionId: text("connection_id"),
376
- operation: text("operation", {
377
- enum: ["create", "update", "delete", "associate", "disassociate"],
378
- }).notNull(),
379
- initiatedBy: text("initiated_by", {
380
- enum: ["human", "agent", "automation"],
381
- }).notNull(),
382
- target: text("target", { enum: ["local", "provider"] }).notNull(),
383
- policyDecision: text("policy_decision", {
384
- enum: ["execute", "propose", "require-approval", "deny"],
385
- }).notNull(),
386
- risk: text("risk").notNull().default("routine"),
387
- status: text("status", {
388
- enum: ["pending", "approved", "applied", "rejected", "conflict", "failed"],
389
- })
390
- .notNull()
391
- .default("pending"),
392
- patchJson: text("patch_json").notNull().default("{}"),
393
- beforeJson: text("before_json").notNull().default("{}"),
394
- afterJson: text("after_json").notNull().default("{}"),
395
- idempotencyKey: text("idempotency_key").notNull(),
396
- expectedRemoteRevision: text("expected_remote_revision"),
397
- providerRemoteRevision: text("provider_remote_revision"),
398
- approvedBy: text("approved_by"),
399
- approvedAt: text("approved_at"),
400
- appliedAt: text("applied_at"),
401
- error: text("error"),
402
- createdAt: text("created_at").notNull().default(now()),
403
- updatedAt: text("updated_at").notNull().default(now()),
404
- ...ownableColumns(),
405
- });
406
-
407
- export const crmMutationShares = createSharesTable("crm_mutation_shares");
408
-
409
- export const crmSyncRuns = table("crm_sync_runs", {
410
- id: text("id").primaryKey(),
411
- connectionId: text("connection_id").notNull(),
412
- status: text("status", {
413
- enum: ["running", "success", "partial", "failed"],
414
- })
415
- .notNull()
416
- .default("running"),
417
- scopeJson: text("scope_json").notNull().default("{}"),
418
- cursor: text("cursor"),
419
- recordsUpserted: integer("records_upserted").notNull().default(0),
420
- tombstonesApplied: integer("tombstones_applied").notNull().default(0),
421
- relationshipsUpserted: integer("relationships_upserted").notNull().default(0),
422
- error: text("error"),
423
- startedAt: text("started_at").notNull(),
424
- completedAt: text("completed_at"),
425
- createdAt: text("created_at").notNull().default(now()),
426
- updatedAt: text("updated_at").notNull().default(now()),
427
- ...ownableColumns(),
428
- });
429
-
430
- export const crmSyncRunShares = createSharesTable("crm_sync_run_shares");
431
-
432
- const crmDashboardStorageSchema = createDashboardStorageSchema({
433
- dashboardsTable: "crm_dashboards",
434
- revisionsTable: "crm_dashboard_revisions",
435
- sharesTable: "crm_dashboard_shares",
436
- });
437
-
438
- export const crmDashboards = crmDashboardStorageSchema.dashboards;
439
- export const crmDashboardRevisions =
440
- crmDashboardStorageSchema.dashboardRevisions;
441
- export const crmDashboardShares = crmDashboardStorageSchema.dashboardShares;
@@ -1,65 +0,0 @@
1
- export interface DefaultDetectorDefinition {
2
- id: string;
3
- name: string;
4
- description: string;
5
- kind: "keyword" | "smart";
6
- keywords?: string[];
7
- classifierPrompt?: string;
8
- enabled: true;
9
- }
10
-
11
- export const DEFAULT_CRM_DETECTORS: DefaultDetectorDefinition[] = [
12
- {
13
- id: "pricing",
14
- name: "Pricing",
15
- description: "Price, budget, quote, cost, or discount discussion.",
16
- kind: "keyword",
17
- keywords: ["price", "pricing", "quote", "cost", "discount"],
18
- enabled: true,
19
- },
20
- {
21
- id: "budget",
22
- name: "Budget",
23
- description: "Budget availability, approval, or constraint is discussed.",
24
- kind: "keyword",
25
- keywords: ["budget", "approved funds", "procurement"],
26
- enabled: true,
27
- },
28
- {
29
- id: "competitors",
30
- name: "Competitors",
31
- description: "A competing product, vendor, or current tool is mentioned.",
32
- kind: "smart",
33
- classifierPrompt:
34
- "Match a named competitor or a clear reference to another evaluated or current solution.",
35
- enabled: true,
36
- },
37
- {
38
- id: "objections",
39
- name: "Objections",
40
- description: "A prospect raises concern, hesitation, or pushback.",
41
- kind: "smart",
42
- classifierPrompt:
43
- "Match concerns about fit, timing, price, security, implementation, or team buy-in.",
44
- enabled: true,
45
- },
46
- {
47
- id: "next-steps",
48
- name: "Next steps",
49
- description:
50
- "A concrete future action, meeting, deliverable, or follow-up.",
51
- kind: "smart",
52
- classifierPrompt:
53
- "Match explicit commitments such as sending a proposal, booking a meeting, or looping in a stakeholder.",
54
- enabled: true,
55
- },
56
- {
57
- id: "timing",
58
- name: "Timing",
59
- description: "A deadline, renewal, launch, or urgency signal.",
60
- kind: "smart",
61
- classifierPrompt:
62
- "Match a concrete timeline, deadline, renewal, quarter, or urgency signal.",
63
- enabled: true,
64
- },
65
- ];