@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,254 +0,0 @@
1
- export const CRM_PROVIDERS = [
2
- "hubspot",
3
- "salesforce",
4
- "native",
5
- "custom",
6
- ] as const;
7
-
8
- export type CrmProvider = (typeof CRM_PROVIDERS)[number];
9
-
10
- export const CRM_OBJECT_KINDS = [
11
- "account",
12
- "person",
13
- "opportunity",
14
- "activity",
15
- "task",
16
- "custom",
17
- ] as const;
18
-
19
- export type CrmObjectKind = (typeof CRM_OBJECT_KINDS)[number];
20
-
21
- export const CRM_FIELD_STORAGE_POLICIES = [
22
- "mirrored",
23
- "remote-only",
24
- "redacted",
25
- "derived-local",
26
- "local-authoritative",
27
- ] as const;
28
-
29
- export type CrmFieldStoragePolicy = (typeof CRM_FIELD_STORAGE_POLICIES)[number];
30
-
31
- export type CrmScalar = string | number | boolean | null;
32
- export type CrmValue = CrmScalar | CrmScalar[] | { [key: string]: CrmValue };
33
-
34
- export interface CrmConnectionRef {
35
- connectionId: string;
36
- provider: CrmProvider;
37
- accountId?: string;
38
- actorId?: string;
39
- }
40
-
41
- export interface CrmObjectRef extends CrmConnectionRef {
42
- objectType: string;
43
- kind: CrmObjectKind;
44
- }
45
-
46
- export interface CrmRecordRef extends CrmObjectRef {
47
- remoteId: string;
48
- localId?: string;
49
- }
50
-
51
- export interface CrmAccessScope {
52
- key: string;
53
- actorId?: string;
54
- grantId?: string;
55
- mode: "user" | "service-account" | "native";
56
- objectReadable: boolean;
57
- objectCreateable: boolean;
58
- objectUpdateable: boolean;
59
- objectDeleteable: boolean;
60
- recordVisibility: "actor" | "cohort" | "workspace" | "unknown";
61
- fieldPermissionsHash?: string;
62
- sharingFingerprint?: string;
63
- }
64
-
65
- export interface CrmFieldDefinition {
66
- name: string;
67
- label: string;
68
- valueType:
69
- | "string"
70
- | "number"
71
- | "boolean"
72
- | "date"
73
- | "datetime"
74
- | "currency"
75
- | "percent"
76
- | "enum"
77
- | "multi-enum"
78
- | "reference"
79
- | "json";
80
- storagePolicy: CrmFieldStoragePolicy;
81
- sensitive: boolean;
82
- readable: boolean;
83
- createable: boolean;
84
- updateable: boolean;
85
- required: boolean;
86
- options?: Array<{ value: string; label: string; active?: boolean }>;
87
- referencedObjectType?: string;
88
- }
89
-
90
- export interface CrmObjectDefinition extends CrmObjectRef {
91
- label: string;
92
- pluralLabel: string;
93
- custom: boolean;
94
- queryable: boolean;
95
- searchable: boolean;
96
- createable: boolean;
97
- updateable: boolean;
98
- deleteable: boolean;
99
- fields: CrmFieldDefinition[];
100
- }
101
-
102
- export interface CrmRecord {
103
- ref: CrmRecordRef;
104
- displayName: string;
105
- fields: Record<string, CrmValue>;
106
- remoteRevision?: string;
107
- remoteUpdatedAt?: string;
108
- deleted: boolean;
109
- accessScope: CrmAccessScope;
110
- provenance: CrmProvenance[];
111
- }
112
-
113
- export interface CrmRelationship {
114
- from: CrmRecordRef;
115
- to: CrmRecordRef;
116
- relationshipType: string;
117
- label?: string;
118
- inverseLabel?: string;
119
- sourceField?: string;
120
- }
121
-
122
- export interface CrmProvenance {
123
- provider: CrmProvider;
124
- connectionId: string;
125
- objectType: string;
126
- remoteId: string;
127
- fieldName?: string;
128
- remoteRevision?: string;
129
- observedAt: string;
130
- evidenceRef?: string;
131
- }
132
-
133
- export interface CrmSyncScope {
134
- objectType: string;
135
- pipelineIds?: string[];
136
- ownerIds?: string[];
137
- recordIds?: string[];
138
- associatedRecordIds?: string[];
139
- updatedAfter?: string;
140
- includeDeleted?: boolean;
141
- }
142
-
143
- export interface CrmSyncPage {
144
- records: CrmRecord[];
145
- relationships: CrmRelationship[];
146
- nextCursor?: string;
147
- complete: boolean;
148
- }
149
-
150
- export interface CrmMutation {
151
- operation: "create" | "update" | "delete" | "associate" | "disassociate";
152
- record: CrmRecordRef;
153
- fields?: Record<string, CrmValue>;
154
- relationship?: CrmRelationship;
155
- expectedRemoteRevision?: string;
156
- idempotencyKey: string;
157
- }
158
-
159
- export interface CrmMutationResult {
160
- status: "applied" | "conflict" | "rejected";
161
- record?: CrmRecord;
162
- remoteRevision?: string;
163
- message?: string;
164
- }
165
-
166
- export interface CrmAdapterCapabilities {
167
- schemaDiscovery: boolean;
168
- customObjects: boolean;
169
- search: boolean;
170
- incrementalSync: boolean;
171
- deletedRecordSync: boolean;
172
- conditionalMutations: boolean;
173
- labeledRelationships: boolean;
174
- perFieldPermissions: boolean;
175
- perRecordPermissions: boolean;
176
- }
177
-
178
- export interface CrmAdapter {
179
- readonly connection: CrmConnectionRef;
180
- readonly capabilities: CrmAdapterCapabilities;
181
- discoverObjects(): Promise<CrmObjectDefinition[]>;
182
- describeObject(objectType: string): Promise<CrmObjectDefinition>;
183
- syncPage(input: {
184
- scope: CrmSyncScope;
185
- fieldAllowList: string[];
186
- cursor?: string;
187
- limit: number;
188
- }): Promise<CrmSyncPage>;
189
- getRecord(input: {
190
- record: CrmRecordRef;
191
- fields: string[];
192
- }): Promise<CrmRecord | null>;
193
- search(input: {
194
- objectTypes: string[];
195
- query: string;
196
- fields: string[];
197
- limit: number;
198
- cursor?: string;
199
- }): Promise<CrmSyncPage>;
200
- listRelationships(input: {
201
- record: CrmRecordRef;
202
- targetObjectTypes?: string[];
203
- limit: number;
204
- cursor?: string;
205
- }): Promise<{
206
- relationships: CrmRelationship[];
207
- nextCursor?: string;
208
- complete: boolean;
209
- }>;
210
- applyMutation(mutation: CrmMutation): Promise<CrmMutationResult>;
211
- }
212
-
213
- export const CRM_WRITE_DECISIONS = [
214
- "execute",
215
- "propose",
216
- "require-approval",
217
- "deny",
218
- ] as const;
219
-
220
- export type CrmWriteDecision = (typeof CRM_WRITE_DECISIONS)[number];
221
-
222
- export interface CrmWritePolicyInput {
223
- initiatedBy: "human" | "agent" | "automation";
224
- target: "local" | "provider";
225
- reversibility: "reversible" | "compensatable" | "destructive";
226
- scope: "single-field" | "single-record" | "bulk";
227
- risk: "routine" | "ownership" | "amount" | "stage" | "external-side-effect";
228
- delegatedAuthority: boolean;
229
- storedAutomationPolicy: boolean;
230
- }
231
-
232
- export function decideCrmWritePolicy(
233
- input: CrmWritePolicyInput,
234
- ): CrmWriteDecision {
235
- if (
236
- input.reversibility === "destructive" ||
237
- input.scope === "bulk" ||
238
- input.risk !== "routine"
239
- ) {
240
- return input.initiatedBy === "human" ? "execute" : "require-approval";
241
- }
242
-
243
- if (input.initiatedBy === "human") return "execute";
244
-
245
- if (input.initiatedBy === "automation") {
246
- if (input.target === "provider") return "propose";
247
- return input.storedAutomationPolicy && input.delegatedAuthority
248
- ? "execute"
249
- : "deny";
250
- }
251
-
252
- if (input.target === "local") return "execute";
253
- return "propose";
254
- }
@@ -1,63 +0,0 @@
1
- import type { ActionRunContext } from "@agent-native/core/action";
2
-
3
- import type { CrmWritePolicyInput } from "./crm-contract.js";
4
-
5
- export const CRM_SALES_ROUTINE_LOCAL_POLICY_ID =
6
- "crm-sales-routine-local-v1" as const;
7
-
8
- export interface CrmSalesConfigPack {
9
- id: "crm-sales-v1";
10
- version: 1;
11
- delegatedWritePolicies: readonly [
12
- {
13
- id: typeof CRM_SALES_ROUTINE_LOCAL_POLICY_ID;
14
- target: "local";
15
- operation: "update";
16
- reversibility: "compensatable";
17
- scopes: readonly ["single-field", "single-record"];
18
- risk: "routine";
19
- },
20
- ];
21
- }
22
-
23
- export const CRM_SALES_CONFIG_PACK: CrmSalesConfigPack = {
24
- id: "crm-sales-v1",
25
- version: 1,
26
- delegatedWritePolicies: [
27
- {
28
- id: CRM_SALES_ROUTINE_LOCAL_POLICY_ID,
29
- target: "local",
30
- operation: "update",
31
- reversibility: "compensatable",
32
- scopes: ["single-field", "single-record"],
33
- risk: "routine",
34
- },
35
- ],
36
- };
37
-
38
- export function resolveCrmSalesDelegatedWrite(input: {
39
- context?: ActionRunContext;
40
- operation: "update";
41
- policy: CrmWritePolicyInput;
42
- }) {
43
- const policyId = input.context?.automation?.policyId;
44
- const policy = CRM_SALES_CONFIG_PACK.delegatedWritePolicies.find(
45
- (candidate) => candidate.id === policyId,
46
- );
47
- if (input.context?.caller !== "automation" || !policy) {
48
- return { delegatedAuthority: false, storedAutomationPolicy: false };
49
- }
50
-
51
- const matches =
52
- policy.operation === input.operation &&
53
- policy.target === input.policy.target &&
54
- policy.reversibility === input.policy.reversibility &&
55
- (input.policy.scope === "single-field" ||
56
- input.policy.scope === "single-record") &&
57
- policy.scopes.includes(input.policy.scope) &&
58
- policy.risk === input.policy.risk;
59
- return {
60
- delegatedAuthority: matches,
61
- storedAutomationPolicy: matches,
62
- };
63
- }
@@ -1,11 +0,0 @@
1
- import { createRequestHandler } from "react-router";
2
-
3
- const handler = createRequestHandler(
4
- () => import("virtual:react-router/server-build"),
5
- );
6
-
7
- export default {
8
- async fetch(request: Request) {
9
- return handler(request);
10
- },
11
- };
@@ -1,24 +0,0 @@
1
- {
2
- "extends": "@agent-native/core/tsconfig.base.json",
3
- "compilerOptions": {
4
- "ignoreDeprecations": "6.0",
5
- "rootDirs": [".", "./.react-router/types"],
6
- "paths": {
7
- "*": ["./*"],
8
- "@/*": ["./app/*"],
9
- "@shared/*": ["./shared/*"]
10
- }
11
- },
12
- "include": [
13
- "app/**/*",
14
- "server/**/*",
15
- "shared/**/*",
16
- "actions/**/*",
17
- "vite.config.ts",
18
- "vitest.config.ts",
19
- "react-router.config.ts",
20
- ".react-router/types/**/*",
21
- ".generated/**/*"
22
- ],
23
- "exclude": ["**/*.test.ts", "**/*.spec.ts"]
24
- }
@@ -1,15 +0,0 @@
1
- import { agentNative } from "@agent-native/core/vite";
2
- import { reactRouter } from "@react-router/dev/vite";
3
- import { defineConfig } from "vite";
4
-
5
- const reactRouterPlugins = reactRouter as unknown as () => any[];
6
- const agentNativePlugins = agentNative as unknown as (
7
- options?: Parameters<typeof agentNative>[0],
8
- ) => any[];
9
-
10
- export default defineConfig({
11
- plugins: [
12
- ...reactRouterPlugins(),
13
- ...agentNativePlugins({ ssrStubs: ["shiki"] }),
14
- ],
15
- });
@@ -1,5 +0,0 @@
1
- import { defineConfig } from "vitest/config";
2
-
3
- export default defineConfig({
4
- test: { include: ["**/*.test.ts"], environment: "node" },
5
- });
@@ -1,39 +0,0 @@
1
- export declare const HOSTED_DEFAULT_MODEL_EXPERIMENT_ID = "hosted-default-model-sonnet-5-vs-gpt-5-6-luna-2026-07";
2
- export declare const HOSTED_DEFAULT_MODEL_CONTROL: {
3
- readonly id: "sonnet-5";
4
- readonly model: "claude-sonnet-5";
5
- readonly weight: 80;
6
- };
7
- export declare const HOSTED_DEFAULT_MODEL_TREATMENT: {
8
- readonly id: "gpt-5-6-luna";
9
- readonly model: "gpt-5-6-luna";
10
- readonly weight: 20;
11
- };
12
- export interface HostedDefaultModelExperimentAssignment {
13
- experimentId: string;
14
- variantId: string;
15
- }
16
- export interface HostedDefaultModelExperimentResolution {
17
- model: string;
18
- assignment: HostedDefaultModelExperimentAssignment;
19
- }
20
- type HostedExperimentEnv = Record<string, string | undefined>;
21
- /**
22
- * The rollout is automatic only on first-party hosted app domains. Operators
23
- * can explicitly enable or disable it for preview and emergency rollback.
24
- */
25
- export declare function isHostedDefaultModelExperimentEnabled(env?: HostedExperimentEnv): boolean;
26
- /**
27
- * Stable cross-app bucket: the same authenticated user receives the same
28
- * variant in every hosted template for the life of this experiment id.
29
- */
30
- export declare function hostedDefaultModelExperimentBucket(userId: string): number;
31
- export declare function resolveHostedDefaultModelExperiment(args: {
32
- userId: string | null | undefined;
33
- engineName: string;
34
- isDefaultModelSelection: boolean;
35
- supportedModels?: readonly string[];
36
- env?: HostedExperimentEnv;
37
- }): HostedDefaultModelExperimentResolution | null;
38
- export {};
39
- //# sourceMappingURL=hosted-model-experiment.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hosted-model-experiment.d.ts","sourceRoot":"","sources":["../../src/observability/hosted-model-experiment.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kCAAkC,0DACU,CAAC;AAE1D,eAAO,MAAM,4BAA4B;aACvC,EAAE,EAAE,UAAU;aACd,KAAK,EAAE,iBAAiB;aACxB,MAAM,EAAE,EAAE;CACF,CAAC;AAEX,eAAO,MAAM,8BAA8B;aACzC,EAAE,EAAE,cAAc;aAClB,KAAK,EAAE,cAAc;aACrB,MAAM,EAAE,EAAE;CACF,CAAC;AAEX,MAAM,WAAW,sCAAsC;IACrD,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sCAAsC;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,sCAAsC,CAAC;CACpD;AAED,KAAK,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAmB9D;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,GAAG,GAAE,mBAAiC,GACrC,OAAO,CAsBT;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQzE;AAED,wBAAgB,mCAAmC,CAAC,IAAI,EAAE;IACxD,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,uBAAuB,EAAE,OAAO,CAAC;IACjC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,GAAG,CAAC,EAAE,mBAAmB,CAAC;CAC3B,GAAG,sCAAsC,GAAG,IAAI,CAuBhD"}
@@ -1,90 +0,0 @@
1
- export const HOSTED_DEFAULT_MODEL_EXPERIMENT_ID = "hosted-default-model-sonnet-5-vs-gpt-5-6-luna-2026-07";
2
- export const HOSTED_DEFAULT_MODEL_CONTROL = {
3
- id: "sonnet-5",
4
- model: "claude-sonnet-5",
5
- weight: 80,
6
- };
7
- export const HOSTED_DEFAULT_MODEL_TREATMENT = {
8
- id: "gpt-5-6-luna",
9
- model: "gpt-5-6-luna",
10
- weight: 20,
11
- };
12
- const FIRST_PARTY_HOST_SUFFIX = ".agent-native.com";
13
- const ENABLED_VALUES = new Set(["1", "true", "on", "yes"]);
14
- const DISABLED_VALUES = new Set(["0", "false", "off", "no"]);
15
- function hostnameFromUrl(value) {
16
- const trimmed = value?.trim();
17
- if (!trimmed)
18
- return null;
19
- try {
20
- const url = /^[a-z][a-z0-9+.-]*:\/\//i.test(trimmed)
21
- ? new URL(trimmed)
22
- : new URL(`https://${trimmed}`);
23
- return url.hostname.toLowerCase();
24
- }
25
- catch {
26
- return null;
27
- }
28
- }
29
- /**
30
- * The rollout is automatic only on first-party hosted app domains. Operators
31
- * can explicitly enable or disable it for preview and emergency rollback.
32
- */
33
- export function isHostedDefaultModelExperimentEnabled(env = process.env) {
34
- const override = env.AGENT_NATIVE_HOSTED_MODEL_EXPERIMENT?.trim().toLowerCase();
35
- if (override && DISABLED_VALUES.has(override))
36
- return false;
37
- if (override && ENABLED_VALUES.has(override))
38
- return true;
39
- const hostnames = [
40
- env.APP_URL,
41
- env.BETTER_AUTH_URL,
42
- env.URL,
43
- env.DEPLOY_URL,
44
- env.VERCEL_PROJECT_PRODUCTION_URL,
45
- env.VERCEL_URL,
46
- ]
47
- .map(hostnameFromUrl)
48
- .filter((hostname) => Boolean(hostname));
49
- return hostnames.some((hostname) => hostname === "agent-native.com" ||
50
- hostname.endsWith(FIRST_PARTY_HOST_SUFFIX));
51
- }
52
- /**
53
- * Stable cross-app bucket: the same authenticated user receives the same
54
- * variant in every hosted template for the life of this experiment id.
55
- */
56
- export function hostedDefaultModelExperimentBucket(userId) {
57
- const input = `${HOSTED_DEFAULT_MODEL_EXPERIMENT_ID}:${userId.trim().toLowerCase()}`;
58
- let hash = 0x811c9dc5;
59
- for (let index = 0; index < input.length; index++) {
60
- hash ^= input.charCodeAt(index);
61
- hash = Math.imul(hash, 0x01000193);
62
- }
63
- return (hash >>> 0) % 100;
64
- }
65
- export function resolveHostedDefaultModelExperiment(args) {
66
- const userId = args.userId?.trim();
67
- if (!userId)
68
- return null;
69
- if (args.engineName !== "builder")
70
- return null;
71
- if (!args.isDefaultModelSelection)
72
- return null;
73
- if (!isHostedDefaultModelExperimentEnabled(args.env))
74
- return null;
75
- const variant = hostedDefaultModelExperimentBucket(userId) <
76
- HOSTED_DEFAULT_MODEL_TREATMENT.weight
77
- ? HOSTED_DEFAULT_MODEL_TREATMENT
78
- : HOSTED_DEFAULT_MODEL_CONTROL;
79
- if (args.supportedModels && !args.supportedModels.includes(variant.model)) {
80
- return null;
81
- }
82
- return {
83
- model: variant.model,
84
- assignment: {
85
- experimentId: HOSTED_DEFAULT_MODEL_EXPERIMENT_ID,
86
- variantId: variant.id,
87
- },
88
- };
89
- }
90
- //# sourceMappingURL=hosted-model-experiment.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hosted-model-experiment.js","sourceRoot":"","sources":["../../src/observability/hosted-model-experiment.ts"],"names":[],"mappings":"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","sourcesContent":["export const HOSTED_DEFAULT_MODEL_EXPERIMENT_ID =\n \"hosted-default-model-sonnet-5-vs-gpt-5-6-luna-2026-07\";\n\nexport const HOSTED_DEFAULT_MODEL_CONTROL = {\n id: \"sonnet-5\",\n model: \"claude-sonnet-5\",\n weight: 80,\n} as const;\n\nexport const HOSTED_DEFAULT_MODEL_TREATMENT = {\n id: \"gpt-5-6-luna\",\n model: \"gpt-5-6-luna\",\n weight: 20,\n} as const;\n\nexport interface HostedDefaultModelExperimentAssignment {\n experimentId: string;\n variantId: string;\n}\n\nexport interface HostedDefaultModelExperimentResolution {\n model: string;\n assignment: HostedDefaultModelExperimentAssignment;\n}\n\ntype HostedExperimentEnv = Record<string, string | undefined>;\n\nconst FIRST_PARTY_HOST_SUFFIX = \".agent-native.com\";\nconst ENABLED_VALUES = new Set([\"1\", \"true\", \"on\", \"yes\"]);\nconst DISABLED_VALUES = new Set([\"0\", \"false\", \"off\", \"no\"]);\n\nfunction hostnameFromUrl(value: string | undefined): string | null {\n const trimmed = value?.trim();\n if (!trimmed) return null;\n try {\n const url = /^[a-z][a-z0-9+.-]*:\\/\\//i.test(trimmed)\n ? new URL(trimmed)\n : new URL(`https://${trimmed}`);\n return url.hostname.toLowerCase();\n } catch {\n return null;\n }\n}\n\n/**\n * The rollout is automatic only on first-party hosted app domains. Operators\n * can explicitly enable or disable it for preview and emergency rollback.\n */\nexport function isHostedDefaultModelExperimentEnabled(\n env: HostedExperimentEnv = process.env,\n): boolean {\n const override =\n env.AGENT_NATIVE_HOSTED_MODEL_EXPERIMENT?.trim().toLowerCase();\n if (override && DISABLED_VALUES.has(override)) return false;\n if (override && ENABLED_VALUES.has(override)) return true;\n\n const hostnames = [\n env.APP_URL,\n env.BETTER_AUTH_URL,\n env.URL,\n env.DEPLOY_URL,\n env.VERCEL_PROJECT_PRODUCTION_URL,\n env.VERCEL_URL,\n ]\n .map(hostnameFromUrl)\n .filter((hostname): hostname is string => Boolean(hostname));\n\n return hostnames.some(\n (hostname) =>\n hostname === \"agent-native.com\" ||\n hostname.endsWith(FIRST_PARTY_HOST_SUFFIX),\n );\n}\n\n/**\n * Stable cross-app bucket: the same authenticated user receives the same\n * variant in every hosted template for the life of this experiment id.\n */\nexport function hostedDefaultModelExperimentBucket(userId: string): number {\n const input = `${HOSTED_DEFAULT_MODEL_EXPERIMENT_ID}:${userId.trim().toLowerCase()}`;\n let hash = 0x811c9dc5;\n for (let index = 0; index < input.length; index++) {\n hash ^= input.charCodeAt(index);\n hash = Math.imul(hash, 0x01000193);\n }\n return (hash >>> 0) % 100;\n}\n\nexport function resolveHostedDefaultModelExperiment(args: {\n userId: string | null | undefined;\n engineName: string;\n isDefaultModelSelection: boolean;\n supportedModels?: readonly string[];\n env?: HostedExperimentEnv;\n}): HostedDefaultModelExperimentResolution | null {\n const userId = args.userId?.trim();\n if (!userId) return null;\n if (args.engineName !== \"builder\") return null;\n if (!args.isDefaultModelSelection) return null;\n if (!isHostedDefaultModelExperimentEnabled(args.env)) return null;\n\n const variant =\n hostedDefaultModelExperimentBucket(userId) <\n HOSTED_DEFAULT_MODEL_TREATMENT.weight\n ? HOSTED_DEFAULT_MODEL_TREATMENT\n : HOSTED_DEFAULT_MODEL_CONTROL;\n if (args.supportedModels && !args.supportedModels.includes(variant.model)) {\n return null;\n }\n\n return {\n model: variant.model,\n assignment: {\n experimentId: HOSTED_DEFAULT_MODEL_EXPERIMENT_ID,\n variantId: variant.id,\n },\n };\n}\n"]}
@@ -1,118 +0,0 @@
1
- export const HOSTED_DEFAULT_MODEL_EXPERIMENT_ID =
2
- "hosted-default-model-sonnet-5-vs-gpt-5-6-luna-2026-07";
3
-
4
- export const HOSTED_DEFAULT_MODEL_CONTROL = {
5
- id: "sonnet-5",
6
- model: "claude-sonnet-5",
7
- weight: 80,
8
- } as const;
9
-
10
- export const HOSTED_DEFAULT_MODEL_TREATMENT = {
11
- id: "gpt-5-6-luna",
12
- model: "gpt-5-6-luna",
13
- weight: 20,
14
- } as const;
15
-
16
- export interface HostedDefaultModelExperimentAssignment {
17
- experimentId: string;
18
- variantId: string;
19
- }
20
-
21
- export interface HostedDefaultModelExperimentResolution {
22
- model: string;
23
- assignment: HostedDefaultModelExperimentAssignment;
24
- }
25
-
26
- type HostedExperimentEnv = Record<string, string | undefined>;
27
-
28
- const FIRST_PARTY_HOST_SUFFIX = ".agent-native.com";
29
- const ENABLED_VALUES = new Set(["1", "true", "on", "yes"]);
30
- const DISABLED_VALUES = new Set(["0", "false", "off", "no"]);
31
-
32
- function hostnameFromUrl(value: string | undefined): string | null {
33
- const trimmed = value?.trim();
34
- if (!trimmed) return null;
35
- try {
36
- const url = /^[a-z][a-z0-9+.-]*:\/\//i.test(trimmed)
37
- ? new URL(trimmed)
38
- : new URL(`https://${trimmed}`);
39
- return url.hostname.toLowerCase();
40
- } catch {
41
- return null;
42
- }
43
- }
44
-
45
- /**
46
- * The rollout is automatic only on first-party hosted app domains. Operators
47
- * can explicitly enable or disable it for preview and emergency rollback.
48
- */
49
- export function isHostedDefaultModelExperimentEnabled(
50
- env: HostedExperimentEnv = process.env,
51
- ): boolean {
52
- const override =
53
- env.AGENT_NATIVE_HOSTED_MODEL_EXPERIMENT?.trim().toLowerCase();
54
- if (override && DISABLED_VALUES.has(override)) return false;
55
- if (override && ENABLED_VALUES.has(override)) return true;
56
-
57
- const hostnames = [
58
- env.APP_URL,
59
- env.BETTER_AUTH_URL,
60
- env.URL,
61
- env.DEPLOY_URL,
62
- env.VERCEL_PROJECT_PRODUCTION_URL,
63
- env.VERCEL_URL,
64
- ]
65
- .map(hostnameFromUrl)
66
- .filter((hostname): hostname is string => Boolean(hostname));
67
-
68
- return hostnames.some(
69
- (hostname) =>
70
- hostname === "agent-native.com" ||
71
- hostname.endsWith(FIRST_PARTY_HOST_SUFFIX),
72
- );
73
- }
74
-
75
- /**
76
- * Stable cross-app bucket: the same authenticated user receives the same
77
- * variant in every hosted template for the life of this experiment id.
78
- */
79
- export function hostedDefaultModelExperimentBucket(userId: string): number {
80
- const input = `${HOSTED_DEFAULT_MODEL_EXPERIMENT_ID}:${userId.trim().toLowerCase()}`;
81
- let hash = 0x811c9dc5;
82
- for (let index = 0; index < input.length; index++) {
83
- hash ^= input.charCodeAt(index);
84
- hash = Math.imul(hash, 0x01000193);
85
- }
86
- return (hash >>> 0) % 100;
87
- }
88
-
89
- export function resolveHostedDefaultModelExperiment(args: {
90
- userId: string | null | undefined;
91
- engineName: string;
92
- isDefaultModelSelection: boolean;
93
- supportedModels?: readonly string[];
94
- env?: HostedExperimentEnv;
95
- }): HostedDefaultModelExperimentResolution | null {
96
- const userId = args.userId?.trim();
97
- if (!userId) return null;
98
- if (args.engineName !== "builder") return null;
99
- if (!args.isDefaultModelSelection) return null;
100
- if (!isHostedDefaultModelExperimentEnabled(args.env)) return null;
101
-
102
- const variant =
103
- hostedDefaultModelExperimentBucket(userId) <
104
- HOSTED_DEFAULT_MODEL_TREATMENT.weight
105
- ? HOSTED_DEFAULT_MODEL_TREATMENT
106
- : HOSTED_DEFAULT_MODEL_CONTROL;
107
- if (args.supportedModels && !args.supportedModels.includes(variant.model)) {
108
- return null;
109
- }
110
-
111
- return {
112
- model: variant.model,
113
- assignment: {
114
- experimentId: HOSTED_DEFAULT_MODEL_EXPERIMENT_ID,
115
- variantId: variant.id,
116
- },
117
- };
118
- }