@agent-native/core 0.114.15 → 0.115.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (467) hide show
  1. package/agent-native.eject.json +2 -0
  2. package/bin/agent-native.js +35 -14
  3. package/bin/launcher.js +34 -0
  4. package/corpus/README.md +3 -3
  5. package/corpus/core/CHANGELOG.md +35 -0
  6. package/corpus/core/agent-native.eject.json +2 -0
  7. package/corpus/core/bin/agent-native.js +35 -14
  8. package/corpus/core/bin/launcher.js +34 -0
  9. package/corpus/core/docs/content/agent-native-toolkit.mdx +16 -0
  10. package/corpus/core/docs/content/recurring-jobs.mdx +35 -6
  11. package/corpus/core/export-snapshot.json +4 -0
  12. package/corpus/core/package.json +5 -1
  13. package/corpus/core/src/action.ts +22 -1
  14. package/corpus/core/src/agent/production-agent.ts +105 -3
  15. package/corpus/core/src/cli/templates-meta.ts +12 -0
  16. package/corpus/core/src/client/AssistantChat.tsx +53 -26
  17. package/corpus/core/src/client/agent-page/AgentJobsTab.tsx +19 -0
  18. package/corpus/core/src/client/agent-page/use-jobs.ts +1 -0
  19. package/corpus/core/src/client/chat/message-components.tsx +35 -1
  20. package/corpus/core/src/client/chat/tool-call-display.tsx +38 -3
  21. package/corpus/core/src/connections/catalog.ts +20 -1
  22. package/corpus/core/src/connections/reader.ts +65 -0
  23. package/corpus/core/src/dashboard-storage/index.ts +27 -0
  24. package/corpus/core/src/dashboard-storage/panel-source.ts +168 -0
  25. package/corpus/core/src/dashboard-storage/schema.ts +62 -0
  26. package/corpus/core/src/dashboard-storage/store.ts +333 -0
  27. package/corpus/core/src/deploy/build.ts +95 -16
  28. package/corpus/core/src/eject/provider-api-definitions.ts +1 -0
  29. package/corpus/core/src/eject/workspace-connections.ts +1 -0
  30. package/corpus/core/src/extensions/actions.ts +199 -73
  31. package/corpus/core/src/jobs/actions/list-recurring-jobs.ts +2 -0
  32. package/corpus/core/src/jobs/scheduler.ts +71 -4
  33. package/corpus/core/src/jobs/tools.ts +31 -1
  34. package/corpus/core/src/localization/default-messages.ts +1 -0
  35. package/corpus/core/src/mcp-client/index.ts +6 -0
  36. package/corpus/core/src/provider-api/actions/provider-api.ts +1 -1
  37. package/corpus/core/src/provider-api/index.ts +190 -5
  38. package/corpus/core/src/secrets/register-framework-secrets.ts +8 -0
  39. package/corpus/core/src/server/agent-chat/context-tools.ts +9 -0
  40. package/corpus/core/src/server/agent-chat/framework-prompts.ts +2 -2
  41. package/corpus/core/src/server/agent-chat-plugin.ts +22 -2
  42. package/corpus/core/src/server/core-routes-plugin.ts +1 -0
  43. package/corpus/core/src/server/credential-provider.ts +9 -3
  44. package/corpus/core/src/server/workspace-provider-oauth.ts +181 -4
  45. package/corpus/core/src/styles/agent-native.css +45 -2
  46. package/corpus/core/src/templates/default/.agents/skills/agent-native-docs/SKILL.md +27 -0
  47. package/corpus/core/src/templates/default/.agents/skills/app-branding/SKILL.md +159 -0
  48. package/corpus/core/src/templates/default/.agents/skills/app-permissions/SKILL.md +155 -0
  49. package/corpus/core/src/templates/headless/.agents/skills/agent-native-docs/SKILL.md +27 -0
  50. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +27 -0
  51. package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +31 -18
  52. package/corpus/core/src/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +15 -0
  53. package/corpus/core/src/triggers/actions.ts +11 -2
  54. package/corpus/core/src/triggers/dispatcher.ts +20 -1
  55. package/corpus/core/src/triggers/types.ts +5 -0
  56. package/corpus/core/src/vite/action-types-plugin.ts +9 -1
  57. package/corpus/templates/analytics/.agents/skills/agent-native-docs/SKILL.md +115 -0
  58. package/corpus/templates/analytics/AGENTS.md +11 -11
  59. package/corpus/templates/analytics/_gitignore +39 -0
  60. package/corpus/templates/analytics/actions/query-dashboard-panel.ts +30 -0
  61. package/corpus/templates/analytics/actions/update-dashboard.ts +2 -1
  62. package/corpus/templates/analytics/app/lib/sql-query.ts +11 -25
  63. package/corpus/templates/analytics/changelog/2026-07-21-fixed-extension-updates-failing-before-changes-could-be-appl.md +6 -0
  64. package/corpus/templates/analytics/server/lib/dashboard-panel-query.ts +1 -0
  65. package/corpus/templates/analytics/server/lib/dashboard-panel-source-resolver.ts +51 -0
  66. package/corpus/templates/analytics/server/lib/prometheus.ts +1 -1
  67. package/corpus/templates/analytics/server/plugins/agent-chat.ts +1 -1
  68. package/corpus/templates/assets/.agents/skills/agent-native-docs/SKILL.md +115 -0
  69. package/corpus/templates/brain/.agents/skills/agent-native-docs/SKILL.md +115 -0
  70. package/corpus/templates/calendar/.agents/skills/agent-native-docs/SKILL.md +115 -0
  71. package/corpus/templates/calendar/_gitignore +39 -0
  72. package/corpus/templates/chat/.agents/skills/agent-native-docs/SKILL.md +27 -0
  73. package/corpus/templates/chat/AGENTS.md +1 -1
  74. package/corpus/templates/clips/.agents/skills/agent-native-docs/SKILL.md +115 -0
  75. package/corpus/templates/clips/AGENTS.md +7 -0
  76. package/corpus/templates/clips/actions/prepare-crm-call-evidence.ts +58 -0
  77. package/corpus/templates/clips/app/components/library/bulk-action-toolbar.tsx +25 -8
  78. package/corpus/templates/clips/app/components/library/library-grid.tsx +118 -9
  79. package/corpus/templates/clips/app/components/library/library-layout.tsx +1 -1
  80. package/corpus/templates/clips/app/components/library/recording-card.tsx +10 -8
  81. package/corpus/templates/clips/app/components/recorder/recorder-engine.ts +88 -11
  82. package/corpus/templates/clips/app/i18n/en-US.ts +6 -0
  83. package/corpus/templates/clips/app/routes/_app.trash.tsx +16 -1
  84. package/corpus/templates/clips/changelog/2026-07-21-crm-call-evidence-handoff.md +6 -0
  85. package/corpus/templates/clips/changelog/2026-07-21-recording-retries-and-restarts-keep-their-upload-session-so-.md +6 -0
  86. package/corpus/templates/clips/chrome-extension/src/background.ts +20 -5
  87. package/corpus/templates/clips/chrome-extension/src/native-recording-state.ts +19 -0
  88. package/corpus/templates/clips/chrome-extension/src/offscreen.ts +8 -0
  89. package/corpus/templates/clips/desktop/src/app.tsx +24 -3
  90. package/corpus/templates/clips/desktop/src/overlays/recording-pill.tsx +9 -0
  91. package/corpus/templates/clips/desktop/src-tauri/src/recording_indicator.rs +54 -28
  92. package/corpus/templates/clips/server/plugins/agent-chat.ts +1 -0
  93. package/corpus/templates/content/.agents/skills/agent-native-docs/SKILL.md +115 -0
  94. package/corpus/templates/content/_gitignore +39 -0
  95. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +20 -38
  96. package/corpus/templates/content/app/components/editor/previewDocumentSaveController.ts +40 -1
  97. package/corpus/templates/content/learnings.defaults.md +5 -0
  98. package/corpus/templates/crm/.agents/skills/agent-native-docs/SKILL.md +115 -0
  99. package/corpus/templates/crm/.agents/skills/agent-native-toolkit/SKILL.md +133 -0
  100. package/corpus/templates/crm/.agents/skills/crm/SKILL.md +128 -0
  101. package/corpus/templates/crm/.agents/skills/customizing-agent-native/SKILL.md +145 -0
  102. package/corpus/templates/crm/.agents/skills/feature-flags/SKILL.md +169 -0
  103. package/corpus/templates/crm/.agents/skills/upgrade-agent-native/SKILL.md +100 -0
  104. package/corpus/templates/crm/.env.example +5 -0
  105. package/corpus/templates/crm/AGENTS.md +120 -0
  106. package/corpus/templates/crm/CHANGELOG.md +1 -0
  107. package/corpus/templates/crm/DEVELOPING.md +66 -0
  108. package/corpus/templates/crm/README.md +106 -0
  109. package/corpus/templates/crm/_gitignore +12 -0
  110. package/corpus/templates/crm/actions/_crm-action-utils.ts +87 -0
  111. package/corpus/templates/crm/actions/_crm-dashboard.ts +69 -0
  112. package/corpus/templates/crm/actions/_crm-signal-utils.ts +79 -0
  113. package/corpus/templates/crm/actions/apply-crm-proposals.ts +203 -0
  114. package/corpus/templates/crm/actions/attach-call-evidence.ts +170 -0
  115. package/corpus/templates/crm/actions/configure-crm-connection.ts +126 -0
  116. package/corpus/templates/crm/actions/configure-native-crm.ts +44 -0
  117. package/corpus/templates/crm/actions/create-crm-record.ts +148 -0
  118. package/corpus/templates/crm/actions/create-crm-signal-tracker.ts +58 -0
  119. package/corpus/templates/crm/actions/delete-staged-dataset.ts +14 -0
  120. package/corpus/templates/crm/actions/get-crm-automation-recipe.ts +36 -0
  121. package/corpus/templates/crm/actions/get-crm-dashboard-panel.ts +33 -0
  122. package/corpus/templates/crm/actions/get-crm-dashboard.ts +14 -0
  123. package/corpus/templates/crm/actions/get-crm-overview.ts +13 -0
  124. package/corpus/templates/crm/actions/get-crm-pipeline-data.ts +61 -0
  125. package/corpus/templates/crm/actions/get-crm-record.ts +75 -0
  126. package/corpus/templates/crm/actions/install-crm-pipeline-dashboard.ts +81 -0
  127. package/corpus/templates/crm/actions/list-crm-dashboard-revisions.ts +15 -0
  128. package/corpus/templates/crm/actions/list-crm-dashboards.ts +15 -0
  129. package/corpus/templates/crm/actions/list-crm-proposals.ts +31 -0
  130. package/corpus/templates/crm/actions/list-crm-records.ts +79 -0
  131. package/corpus/templates/crm/actions/list-crm-saved-views.ts +15 -0
  132. package/corpus/templates/crm/actions/list-crm-signal-hits.ts +43 -0
  133. package/corpus/templates/crm/actions/list-crm-signal-trackers.ts +32 -0
  134. package/corpus/templates/crm/actions/list-crm-tasks.ts +22 -0
  135. package/corpus/templates/crm/actions/list-staged-datasets.ts +14 -0
  136. package/corpus/templates/crm/actions/list-workspace-connections.ts +47 -0
  137. package/corpus/templates/crm/actions/manage-crm-signal-tracker.ts +87 -0
  138. package/corpus/templates/crm/actions/manage-crm-task.ts +132 -0
  139. package/corpus/templates/crm/actions/navigate.ts +63 -0
  140. package/corpus/templates/crm/actions/provider-api-catalog.ts +22 -0
  141. package/corpus/templates/crm/actions/provider-api-docs.ts +54 -0
  142. package/corpus/templates/crm/actions/provider-api-request.ts +92 -0
  143. package/corpus/templates/crm/actions/query-staged-dataset.ts +44 -0
  144. package/corpus/templates/crm/actions/record-crm-call-insight.ts +160 -0
  145. package/corpus/templates/crm/actions/record-crm-smart-signal.ts +150 -0
  146. package/corpus/templates/crm/actions/restore-crm-dashboard-revision.ts +23 -0
  147. package/corpus/templates/crm/actions/review-crm-signal.ts +31 -0
  148. package/corpus/templates/crm/actions/run-crm-saved-view-program.ts +103 -0
  149. package/corpus/templates/crm/actions/run-crm-signal-trackers.ts +275 -0
  150. package/corpus/templates/crm/actions/run.ts +11 -0
  151. package/corpus/templates/crm/actions/save-crm-dashboard.ts +51 -0
  152. package/corpus/templates/crm/actions/save-crm-saved-view.ts +119 -0
  153. package/corpus/templates/crm/actions/sync-crm.ts +146 -0
  154. package/corpus/templates/crm/actions/update-crm-record.ts +508 -0
  155. package/corpus/templates/crm/actions/view-screen.ts +218 -0
  156. package/corpus/templates/crm/agent-native.app-skill.json +58 -0
  157. package/corpus/templates/crm/app/components/crm/CreateCrmRecordDialog.tsx +158 -0
  158. package/corpus/templates/crm/app/components/crm/CrmDashboardPanel.tsx +83 -0
  159. package/corpus/templates/crm/app/components/crm/CrmSignalsPanel.tsx +225 -0
  160. package/corpus/templates/crm/app/components/crm/IntelligenceSettings.tsx +413 -0
  161. package/corpus/templates/crm/app/components/crm/RecordActions.tsx +510 -0
  162. package/corpus/templates/crm/app/components/crm/RecordGrid.tsx +134 -0
  163. package/corpus/templates/crm/app/components/crm/RecordWorkspace.tsx +367 -0
  164. package/corpus/templates/crm/app/components/crm/SavedViewDataProgram.tsx +92 -0
  165. package/corpus/templates/crm/app/components/crm/Surface.tsx +96 -0
  166. package/corpus/templates/crm/app/components/crm/WorkOverview.tsx +180 -0
  167. package/corpus/templates/crm/app/components/layout/CrmLayout.tsx +106 -0
  168. package/corpus/templates/crm/app/components/layout/CrmSidebar.tsx +84 -0
  169. package/corpus/templates/crm/app/entry.client.tsx +16 -0
  170. package/corpus/templates/crm/app/entry.server.tsx +10 -0
  171. package/corpus/templates/crm/app/global.css +167 -0
  172. package/corpus/templates/crm/app/hooks/use-navigation-state.ts +60 -0
  173. package/corpus/templates/crm/app/i18n/en-US.ts +89 -0
  174. package/corpus/templates/crm/app/i18n/index.ts +34 -0
  175. package/corpus/templates/crm/app/lib/dashboard.ts +13 -0
  176. package/corpus/templates/crm/app/lib/navigation.ts +54 -0
  177. package/corpus/templates/crm/app/lib/tab-id.ts +1 -0
  178. package/corpus/templates/crm/app/lib/types.ts +172 -0
  179. package/corpus/templates/crm/app/lib/utils.ts +1 -0
  180. package/corpus/templates/crm/app/root.tsx +88 -0
  181. package/corpus/templates/crm/app/routes/_index.tsx +26 -0
  182. package/corpus/templates/crm/app/routes/accounts.tsx +41 -0
  183. package/corpus/templates/crm/app/routes/agent.tsx +5 -0
  184. package/corpus/templates/crm/app/routes/ask.tsx +53 -0
  185. package/corpus/templates/crm/app/routes/dashboard.tsx +118 -0
  186. package/corpus/templates/crm/app/routes/opportunities.tsx +41 -0
  187. package/corpus/templates/crm/app/routes/people.tsx +41 -0
  188. package/corpus/templates/crm/app/routes/proposals.tsx +266 -0
  189. package/corpus/templates/crm/app/routes/records.$recordId.tsx +35 -0
  190. package/corpus/templates/crm/app/routes/settings.tsx +63 -0
  191. package/corpus/templates/crm/app/routes/setup.tsx +308 -0
  192. package/corpus/templates/crm/app/routes/tasks.tsx +252 -0
  193. package/corpus/templates/crm/app/routes/views.tsx +333 -0
  194. package/corpus/templates/crm/app/routes.ts +17 -0
  195. package/corpus/templates/crm/app/vite-env.d.ts +6 -0
  196. package/corpus/templates/crm/changelog/2026-07-21-agent-native-crm.md +6 -0
  197. package/corpus/templates/crm/changelog/2026-07-21-clips-call-evidence-review-recipe.md +6 -0
  198. package/corpus/templates/crm/changelog/2026-07-21-crm-can-now-find-and-review-evidence-grounded-call-signals-w.md +6 -0
  199. package/corpus/templates/crm/changelog/2026-07-21-crm-can-now-manage-keyword-and-smart-call-signal-trackers-fr.md +6 -0
  200. package/corpus/templates/crm/changelog/2026-07-21-delegated-local-crm-automation.md +6 -0
  201. package/corpus/templates/crm/changelog/2026-07-21-native-sql.md +6 -0
  202. package/corpus/templates/crm/changelog/2026-07-21-pipeline-dashboard.md +6 -0
  203. package/corpus/templates/crm/changelog/2026-07-21-pipeline-dashboards-now-install-correctly-from-the-crm-actio.md +6 -0
  204. package/corpus/templates/crm/changelog/2026-07-21-salesforce-connection.md +6 -0
  205. package/corpus/templates/crm/components.json +20 -0
  206. package/corpus/templates/crm/docs/architecture/crm-contract.md +180 -0
  207. package/corpus/templates/crm/learnings.defaults.md +5 -0
  208. package/corpus/templates/crm/package.json +59 -0
  209. package/corpus/templates/crm/public/favicon.svg +1 -0
  210. package/corpus/templates/crm/public/icon-180.svg +1 -0
  211. package/corpus/templates/crm/public/manifest.json +11 -0
  212. package/corpus/templates/crm/react-router.config.ts +7 -0
  213. package/corpus/templates/crm/server/crm/adapter.ts +32 -0
  214. package/corpus/templates/crm/server/crm/crm-field-firewall.ts +64 -0
  215. package/corpus/templates/crm/server/crm/crm-mirror.ts +711 -0
  216. package/corpus/templates/crm/server/crm/hubspot-adapter.ts +1143 -0
  217. package/corpus/templates/crm/server/crm/native-adapter.ts +1715 -0
  218. package/corpus/templates/crm/server/crm/read-through.ts +207 -0
  219. package/corpus/templates/crm/server/crm/salesforce-adapter.ts +1255 -0
  220. package/corpus/templates/crm/server/db/crm-store.ts +1170 -0
  221. package/corpus/templates/crm/server/db/index.ts +169 -0
  222. package/corpus/templates/crm/server/db/schema.ts +441 -0
  223. package/corpus/templates/crm/server/lib/intelligence/default-detectors.ts +65 -0
  224. package/corpus/templates/crm/server/lib/intelligence/evidence.ts +105 -0
  225. package/corpus/templates/crm/server/lib/intelligence/keyword-detector.ts +100 -0
  226. package/corpus/templates/crm/server/lib/intelligence/smart-detector.ts +144 -0
  227. package/corpus/templates/crm/server/lib/intelligence/summary.ts +141 -0
  228. package/corpus/templates/crm/server/lib/provider-api.ts +64 -0
  229. package/corpus/templates/crm/server/middleware/auth.ts +4 -0
  230. package/corpus/templates/crm/server/plugins/agent-chat.ts +68 -0
  231. package/corpus/templates/crm/server/plugins/auth.ts +14 -0
  232. package/corpus/templates/crm/server/plugins/core-routes.ts +17 -0
  233. package/corpus/templates/crm/server/plugins/db.ts +454 -0
  234. package/corpus/templates/crm/server/routes/[...page].get.ts +5 -0
  235. package/corpus/templates/crm/shared/crm-automation-recipes.ts +132 -0
  236. package/corpus/templates/crm/shared/crm-contract.ts +254 -0
  237. package/corpus/templates/crm/shared/crm-sales-config.ts +63 -0
  238. package/corpus/templates/crm/ssr-entry.ts +11 -0
  239. package/corpus/templates/crm/tsconfig.json +24 -0
  240. package/corpus/templates/crm/vite.config.ts +15 -0
  241. package/corpus/templates/crm/vitest.config.ts +5 -0
  242. package/corpus/templates/design/.agents/skills/agent-native-docs/SKILL.md +115 -0
  243. package/corpus/templates/dispatch/.agents/skills/agent-native-docs/SKILL.md +115 -0
  244. package/corpus/templates/forms/.agents/skills/agent-native-docs/SKILL.md +115 -0
  245. package/corpus/templates/forms/_gitignore +39 -0
  246. package/corpus/templates/forms/learnings.defaults.md +5 -0
  247. package/corpus/templates/macros/.agents/skills/agent-native-docs/SKILL.md +115 -0
  248. package/corpus/templates/macros/_gitignore +39 -0
  249. package/corpus/templates/macros/learnings.defaults.md +5 -0
  250. package/corpus/templates/mail/.agents/skills/agent-native-docs/SKILL.md +115 -0
  251. package/corpus/templates/mail/_gitignore +39 -0
  252. package/corpus/templates/plan/.agents/skills/agent-native-docs/SKILL.md +115 -0
  253. package/corpus/templates/slides/.agents/skills/agent-native-docs/SKILL.md +115 -0
  254. package/corpus/templates/slides/_gitignore +39 -0
  255. package/corpus/templates/tasks/.agents/skills/agent-native-docs/SKILL.md +27 -0
  256. package/corpus/templates/tasks/_gitignore +39 -0
  257. package/corpus/toolkit/CHANGELOG.md +12 -0
  258. package/corpus/toolkit/README.md +30 -0
  259. package/corpus/toolkit/agent-native.eject.json +33 -0
  260. package/corpus/toolkit/package.json +15 -1
  261. package/corpus/toolkit/src/dashboard/DataTable.tsx +273 -0
  262. package/corpus/toolkit/src/dashboard/DateRangePicker.tsx +57 -0
  263. package/corpus/toolkit/src/dashboard/GenericChartPanel.tsx +461 -0
  264. package/corpus/toolkit/src/dashboard/MetricCard.tsx +54 -0
  265. package/corpus/toolkit/src/dashboard/StatsCard.tsx +49 -0
  266. package/corpus/toolkit/src/dashboard/dashboard-layout.ts +329 -0
  267. package/corpus/toolkit/src/dashboard/index.ts +6 -0
  268. package/corpus/toolkit/src/index.ts +1 -0
  269. package/corpus/toolkit/src/ui/calendar.tsx +8 -8
  270. package/corpus/toolkit/src/ui/date-picker.tsx +4 -1
  271. package/dist/action.d.ts +14 -1
  272. package/dist/action.d.ts.map +1 -1
  273. package/dist/action.js.map +1 -1
  274. package/dist/agent/production-agent.d.ts +3 -1
  275. package/dist/agent/production-agent.d.ts.map +1 -1
  276. package/dist/agent/production-agent.js +83 -3
  277. package/dist/agent/production-agent.js.map +1 -1
  278. package/dist/cli/templates-meta.d.ts.map +1 -1
  279. package/dist/cli/templates-meta.js +12 -0
  280. package/dist/cli/templates-meta.js.map +1 -1
  281. package/dist/client/AssistantChat.d.ts +4 -0
  282. package/dist/client/AssistantChat.d.ts.map +1 -1
  283. package/dist/client/AssistantChat.js +30 -17
  284. package/dist/client/AssistantChat.js.map +1 -1
  285. package/dist/client/agent-page/AgentJobsTab.d.ts.map +1 -1
  286. package/dist/client/agent-page/AgentJobsTab.js +3 -1
  287. package/dist/client/agent-page/AgentJobsTab.js.map +1 -1
  288. package/dist/client/agent-page/use-jobs.d.ts +1 -0
  289. package/dist/client/agent-page/use-jobs.d.ts.map +1 -1
  290. package/dist/client/agent-page/use-jobs.js.map +1 -1
  291. package/dist/client/chat/message-components.d.ts +5 -0
  292. package/dist/client/chat/message-components.d.ts.map +1 -1
  293. package/dist/client/chat/message-components.js +17 -1
  294. package/dist/client/chat/message-components.js.map +1 -1
  295. package/dist/client/chat/tool-call-display.d.ts +3 -1
  296. package/dist/client/chat/tool-call-display.d.ts.map +1 -1
  297. package/dist/client/chat/tool-call-display.js +17 -7
  298. package/dist/client/chat/tool-call-display.js.map +1 -1
  299. package/dist/collab/awareness.d.ts +2 -2
  300. package/dist/collab/awareness.d.ts.map +1 -1
  301. package/dist/collab/routes.d.ts +1 -1
  302. package/dist/collab/struct-routes.d.ts +1 -1
  303. package/dist/connections/catalog.d.ts +17 -3
  304. package/dist/connections/catalog.d.ts.map +1 -1
  305. package/dist/connections/catalog.js +16 -1
  306. package/dist/connections/catalog.js.map +1 -1
  307. package/dist/connections/reader.d.ts +18 -0
  308. package/dist/connections/reader.d.ts.map +1 -1
  309. package/dist/connections/reader.js +41 -0
  310. package/dist/connections/reader.js.map +1 -1
  311. package/dist/dashboard-storage/index.d.ts +4 -0
  312. package/dist/dashboard-storage/index.d.ts.map +1 -0
  313. package/dist/dashboard-storage/index.js +4 -0
  314. package/dist/dashboard-storage/index.js.map +1 -0
  315. package/dist/dashboard-storage/panel-source.d.ts +68 -0
  316. package/dist/dashboard-storage/panel-source.d.ts.map +1 -0
  317. package/dist/dashboard-storage/panel-source.js +76 -0
  318. package/dist/dashboard-storage/panel-source.js.map +1 -0
  319. package/dist/dashboard-storage/schema.d.ts +562 -0
  320. package/dist/dashboard-storage/schema.d.ts.map +1 -0
  321. package/dist/dashboard-storage/schema.js +32 -0
  322. package/dist/dashboard-storage/schema.js.map +1 -0
  323. package/dist/dashboard-storage/store.d.ts +62 -0
  324. package/dist/dashboard-storage/store.d.ts.map +1 -0
  325. package/dist/dashboard-storage/store.js +227 -0
  326. package/dist/dashboard-storage/store.js.map +1 -0
  327. package/dist/deploy/build.d.ts +7 -0
  328. package/dist/deploy/build.d.ts.map +1 -1
  329. package/dist/deploy/build.js +78 -14
  330. package/dist/deploy/build.js.map +1 -1
  331. package/dist/eject/provider-api-definitions.d.ts +2 -1
  332. package/dist/eject/provider-api-definitions.d.ts.map +1 -1
  333. package/dist/eject/provider-api-definitions.js +1 -0
  334. package/dist/eject/provider-api-definitions.js.map +1 -1
  335. package/dist/eject/workspace-connections.d.ts.map +1 -1
  336. package/dist/eject/workspace-connections.js +1 -0
  337. package/dist/eject/workspace-connections.js.map +1 -1
  338. package/dist/extensions/actions.d.ts.map +1 -1
  339. package/dist/extensions/actions.js +165 -67
  340. package/dist/extensions/actions.js.map +1 -1
  341. package/dist/file-upload/actions/upload-image.d.ts +1 -1
  342. package/dist/jobs/actions/list-recurring-jobs.d.ts +1 -0
  343. package/dist/jobs/actions/list-recurring-jobs.d.ts.map +1 -1
  344. package/dist/jobs/actions/list-recurring-jobs.js +1 -0
  345. package/dist/jobs/actions/list-recurring-jobs.js.map +1 -1
  346. package/dist/jobs/scheduler.d.ts +17 -2
  347. package/dist/jobs/scheduler.d.ts.map +1 -1
  348. package/dist/jobs/scheduler.js +51 -2
  349. package/dist/jobs/scheduler.js.map +1 -1
  350. package/dist/jobs/tools.d.ts.map +1 -1
  351. package/dist/jobs/tools.js +32 -2
  352. package/dist/jobs/tools.js.map +1 -1
  353. package/dist/localization/default-messages.d.ts +1 -0
  354. package/dist/localization/default-messages.d.ts.map +1 -1
  355. package/dist/localization/default-messages.js +1 -0
  356. package/dist/localization/default-messages.js.map +1 -1
  357. package/dist/mcp-client/index.d.ts +2 -0
  358. package/dist/mcp-client/index.d.ts.map +1 -1
  359. package/dist/mcp-client/index.js +5 -0
  360. package/dist/mcp-client/index.js.map +1 -1
  361. package/dist/observability/routes.d.ts +1 -1
  362. package/dist/provider-api/actions/custom-provider-registration.d.ts +8 -8
  363. package/dist/provider-api/actions/provider-api.d.ts +8 -6
  364. package/dist/provider-api/actions/provider-api.d.ts.map +1 -1
  365. package/dist/provider-api/actions/provider-api.js +1 -1
  366. package/dist/provider-api/actions/provider-api.js.map +1 -1
  367. package/dist/provider-api/index.d.ts +11 -7
  368. package/dist/provider-api/index.d.ts.map +1 -1
  369. package/dist/provider-api/index.js +143 -5
  370. package/dist/provider-api/index.js.map +1 -1
  371. package/dist/resources/handlers.d.ts +1 -1
  372. package/dist/secrets/register-framework-secrets.d.ts.map +1 -1
  373. package/dist/secrets/register-framework-secrets.js +7 -0
  374. package/dist/secrets/register-framework-secrets.js.map +1 -1
  375. package/dist/server/agent-chat/context-tools.d.ts.map +1 -1
  376. package/dist/server/agent-chat/context-tools.js +9 -0
  377. package/dist/server/agent-chat/context-tools.js.map +1 -1
  378. package/dist/server/agent-chat/framework-prompts.js +2 -2
  379. package/dist/server/agent-chat/framework-prompts.js.map +1 -1
  380. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  381. package/dist/server/agent-chat-plugin.js +18 -2
  382. package/dist/server/agent-chat-plugin.js.map +1 -1
  383. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  384. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  385. package/dist/server/core-routes-plugin.js +1 -0
  386. package/dist/server/core-routes-plugin.js.map +1 -1
  387. package/dist/server/credential-provider.d.ts +4 -3
  388. package/dist/server/credential-provider.d.ts.map +1 -1
  389. package/dist/server/credential-provider.js +9 -3
  390. package/dist/server/credential-provider.js.map +1 -1
  391. package/dist/server/workspace-provider-oauth.d.ts +6 -1
  392. package/dist/server/workspace-provider-oauth.d.ts.map +1 -1
  393. package/dist/server/workspace-provider-oauth.js +141 -4
  394. package/dist/server/workspace-provider-oauth.js.map +1 -1
  395. package/dist/styles/agent-native.css +45 -2
  396. package/dist/templates/chat/.agents/skills/agent-native-docs/SKILL.md +27 -0
  397. package/dist/templates/chat/AGENTS.md +1 -1
  398. package/dist/templates/default/.agents/skills/agent-native-docs/SKILL.md +27 -0
  399. package/dist/templates/default/.agents/skills/app-branding/SKILL.md +159 -0
  400. package/dist/templates/default/.agents/skills/app-permissions/SKILL.md +155 -0
  401. package/dist/templates/headless/.agents/skills/agent-native-docs/SKILL.md +27 -0
  402. package/dist/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +27 -0
  403. package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +31 -18
  404. package/dist/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +15 -0
  405. package/dist/triggers/actions.d.ts.map +1 -1
  406. package/dist/triggers/actions.js +10 -2
  407. package/dist/triggers/actions.js.map +1 -1
  408. package/dist/triggers/dispatcher.d.ts.map +1 -1
  409. package/dist/triggers/dispatcher.js +15 -0
  410. package/dist/triggers/dispatcher.js.map +1 -1
  411. package/dist/triggers/types.d.ts +5 -0
  412. package/dist/triggers/types.d.ts.map +1 -1
  413. package/dist/triggers/types.js.map +1 -1
  414. package/dist/vite/action-types-plugin.d.ts.map +1 -1
  415. package/dist/vite/action-types-plugin.js +4 -1
  416. package/dist/vite/action-types-plugin.js.map +1 -1
  417. package/docs/content/agent-native-toolkit.mdx +16 -0
  418. package/docs/content/recurring-jobs.mdx +35 -6
  419. package/package.json +6 -2
  420. package/src/action.ts +22 -1
  421. package/src/agent/production-agent.ts +105 -3
  422. package/src/cli/templates-meta.ts +12 -0
  423. package/src/client/AssistantChat.tsx +53 -26
  424. package/src/client/agent-page/AgentJobsTab.tsx +19 -0
  425. package/src/client/agent-page/use-jobs.ts +1 -0
  426. package/src/client/chat/message-components.tsx +35 -1
  427. package/src/client/chat/tool-call-display.tsx +38 -3
  428. package/src/connections/catalog.ts +20 -1
  429. package/src/connections/reader.ts +65 -0
  430. package/src/dashboard-storage/index.ts +27 -0
  431. package/src/dashboard-storage/panel-source.ts +168 -0
  432. package/src/dashboard-storage/schema.ts +62 -0
  433. package/src/dashboard-storage/store.ts +333 -0
  434. package/src/deploy/build.ts +95 -16
  435. package/src/eject/provider-api-definitions.ts +1 -0
  436. package/src/eject/workspace-connections.ts +1 -0
  437. package/src/extensions/actions.ts +199 -73
  438. package/src/jobs/actions/list-recurring-jobs.ts +2 -0
  439. package/src/jobs/scheduler.ts +71 -4
  440. package/src/jobs/tools.ts +31 -1
  441. package/src/localization/default-messages.ts +1 -0
  442. package/src/mcp-client/index.ts +6 -0
  443. package/src/provider-api/actions/provider-api.ts +1 -1
  444. package/src/provider-api/index.ts +190 -5
  445. package/src/secrets/register-framework-secrets.ts +8 -0
  446. package/src/server/agent-chat/context-tools.ts +9 -0
  447. package/src/server/agent-chat/framework-prompts.ts +2 -2
  448. package/src/server/agent-chat-plugin.ts +22 -2
  449. package/src/server/core-routes-plugin.ts +1 -0
  450. package/src/server/credential-provider.ts +9 -3
  451. package/src/server/workspace-provider-oauth.ts +181 -4
  452. package/src/styles/agent-native.css +45 -2
  453. package/src/templates/chat/.agents/skills/agent-native-docs/SKILL.md +27 -0
  454. package/src/templates/chat/AGENTS.md +1 -1
  455. package/src/templates/default/.agents/skills/agent-native-docs/SKILL.md +27 -0
  456. package/src/templates/default/.agents/skills/app-branding/SKILL.md +159 -0
  457. package/src/templates/default/.agents/skills/app-permissions/SKILL.md +155 -0
  458. package/src/templates/headless/.agents/skills/agent-native-docs/SKILL.md +27 -0
  459. package/src/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +27 -0
  460. package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +31 -18
  461. package/src/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +15 -0
  462. package/src/triggers/actions.ts +11 -2
  463. package/src/triggers/dispatcher.ts +20 -1
  464. package/src/triggers/types.ts +5 -0
  465. package/src/vite/action-types-plugin.ts +9 -1
  466. package/corpus/templates/analytics/server/handlers/sql-query.ts +0 -36
  467. package/corpus/templates/analytics/server/routes/api/sql-query.post.ts +0 -1
@@ -0,0 +1,128 @@
1
+ ---
2
+ name: crm
3
+ description: Work with Native SQL or HubSpot/Salesforce CRM using scoped records, field policies, evidence, proposals, and provider data programs.
4
+ ---
5
+
6
+ # CRM Companion
7
+
8
+ Use actions as the operational source of truth and `shared/crm-contract.ts` as
9
+ the product-model source of truth. This scope supports standalone Native SQL
10
+ and HubSpot/Salesforce Connected/Hybrid behavior.
11
+
12
+ ## Start with the right source
13
+
14
+ - Use `view-screen` only when the request depends on the current UI view,
15
+ selection, or saved view. Use `get-crm-overview`, `list-crm-records`, and
16
+ `get-crm-record` for ordinary CRM reads.
17
+ - Use `sync-crm` for a declared, bounded mirror cohort. It is not an exhaustive
18
+ provider export.
19
+ - Use `configure-native-crm` to start CRM without an external provider. Native
20
+ SQL records are local-authoritative and portable across SQLite, Postgres, and
21
+ D1. Use the normal CRM record, task, view, cadence, and evidence actions;
22
+ never require a provider connection or call `sync-crm` for Native SQL.
23
+ - After HubSpot or Salesforce is authorized in workspace Connections, use
24
+ `configure-crm-connection` with the selected provider to register it with
25
+ CRM. Never pass a token. HubSpot starts with `companies`, `contacts`, and
26
+ `deals`; Salesforce starts with `Account`, `Contact`, and `Opportunity`.
27
+ - Use `sync-crm` only for the declared recent cohort. HubSpot may be narrowed
28
+ by deal pipeline ids; Salesforce uses the updated-after boundary for its
29
+ standard objects. Record detail can perform a scoped read-through refresh;
30
+ do not treat it as permission for an export-all query.
31
+ - For an endpoint, object, filter, pagination mode, or schema not represented
32
+ by a CRM action, use `provider-api-catalog`, `provider-api-docs`, then the
33
+ read-only `provider-api-request` for the selected provider. Before broad work,
34
+ declare a cohort, selected fields, and a bounded page/row budget. Stage only
35
+ that result, then use `query-staged-dataset` or a data program to reduce it.
36
+ Report provider, scope, filters, page/row counts, truncation, and gaps.
37
+ - Always pass the selected workspace `connectionId` for Salesforce provider API
38
+ reads so its actor-bound OAuth token and instance URL cannot be separated.
39
+
40
+ ## Field, evidence, and credential boundaries
41
+
42
+ - Credentials exist only in workspace Connections. Never request, paste, log,
43
+ save, or return a HubSpot or Salesforce token or secret.
44
+ - Treat the upstream CRM as authoritative for remote fields. Only configured
45
+ allow-listed fields are mirrored. Unknown fields are remote-only; sensitive
46
+ fields default to redacted and must not be fetched or shown.
47
+ - Salesforce reads must be revalidated against the current connection actor and
48
+ field permissions. Never infer a user's access from a service-account mirror
49
+ or from a previously visible local row; fail closed when access is ambiguous.
50
+ - Never save raw provider payloads, media, screenshots, audio, video,
51
+ transcripts, base64 data, or file bodies in CRM SQL. `attach-call-evidence`
52
+ stores only a source URL/id, bounded quote, timestamp, speaker, and metadata.
53
+ For Clips, use only a durable `/share/<id>` or `/r/<id>` page URL with no
54
+ access token or transcript fragment; never use a `clip.created` event URL.
55
+ - Use `run-crm-signal-trackers` only over evidence already attached to the CRM
56
+ record. Keyword hits are deterministic. Smart detector and summary requests
57
+ must go through agent chat, never a direct model call. Persist delegated
58
+ results with `record-crm-smart-signal` or one atomic
59
+ `record-crm-call-insight` batch; each quote/timestamp must cite the exact
60
+ bounded evidence row. Use `review-crm-signal` for human confirmation.
61
+ - Use `create-crm-signal-tracker` to add a keyword or smart tracker, and
62
+ `manage-crm-signal-tracker` to enable, disable, or delete one tracker with
63
+ editor access. Tracker management is local configuration only: it never
64
+ invokes a model or mutates a connected provider. Navigate with
65
+ `{ view: "settings", settingsSection: "intelligence" }` to open the
66
+ Intelligence settings tab.
67
+ - Do not identify or merge records by email/domain alone. Provider identity is
68
+ connection + provider + object type + remote id, and relationships retain
69
+ direction.
70
+
71
+ ## Safe writes and workflows
72
+
73
+ - Use `update-crm-record` for a scoped typed edit. Provider writes are
74
+ prepared as revision-aware, access-checked, idempotent, audited proposals.
75
+ HubSpot proposals always hand off because HubSpot cannot apply the expected
76
+ revision atomically. Salesforce conditional-write capability is a
77
+ prerequisite for a future provider apply, not a reason to claim a write
78
+ succeeded without a confirmed provider response and the stored approval
79
+ policy.
80
+ - Agent provider writes default to proposals. For ownership, amount, stage,
81
+ delete, bulk, or external-side-effect changes, show exact scope and fields,
82
+ then require approval. Use `list-crm-proposals` and
83
+ `apply-crm-proposals` to review the change and record the upstream handoff;
84
+ direct the user to complete it in HubSpot or Salesforce and never claim it
85
+ was applied without a confirmed adapter result.
86
+ - The only stored delegation pack is `crm-sales-routine-local-v1`. It applies
87
+ only when a trusted automation trigger supplies that policy id and only to
88
+ one routine local record update. Do not pass policy ids as action input;
89
+ provider mutations stay proposal-first and risky, destructive, bulk, or
90
+ external-effect work stays gated.
91
+ - Native SQL writes are local-authoritative CRM mutations. They remain
92
+ access-checked, idempotent, and audited, but have no provider handoff or
93
+ remote revision to claim.
94
+ - Use `list-crm-saved-views` and `save-crm-saved-view` for saved views. Use
95
+ `list-crm-tasks` and `manage-crm-task` for CRM follow-ups. Use `navigate` to
96
+ show a requested view instead of merely describing it.
97
+ - Use `install-crm-pipeline-dashboard` to install the owner-scoped Pipeline
98
+ dashboard. Its stored data program calls the bounded, access-scoped
99
+ `get-crm-pipeline-data` action through `appAction`; do not reimplement the
100
+ aggregate with a provider request or put CRM rows in dashboard config. Use
101
+ `get-crm-dashboard` / `list-crm-dashboards` to inspect dashboards,
102
+ `save-crm-dashboard` with `expectedUpdatedAt` for safe edits, and
103
+ `list-crm-dashboard-revisions` / `restore-crm-dashboard-revision` to review
104
+ or restore prior dashboard configurations.
105
+ - Use `get-crm-automation-recipe` for the default-off Clips call-evidence
106
+ review recipe after the user explicitly selects a CRM record. The recipe is a
107
+ configuration aid, not permission to activate an automation. Before enabling
108
+ it, show the exact Clips-owned `clip.created` trigger, the selected CRM
109
+ record, and its one bounded local evidence-reference write, then obtain a
110
+ fresh approval. Use the recipe's exact `call-agent` input and content-bound
111
+ `approvedActions` grant. The Clips trigger must call
112
+ `prepare-crm-call-evidence`; never use the event URL or copy media/transcript
113
+ content. The downstream CRM call may only invoke `attach-call-evidence` for
114
+ that selected record and cannot create tasks, field updates, proposals, or
115
+ provider mutations.
116
+
117
+ ## Four-area provider changes
118
+
119
+ Provider behavior must stay aligned across setup UI, CRM actions, this skill,
120
+ and `application_state`/`view-screen`. Reuse workspace Connections and action
121
+ hooks; do not add a provider-key field, legacy `/api` route, direct browser
122
+ fetch, or provider-specific state outside the shared CRM contract.
123
+
124
+ ## Out of scope
125
+
126
+ Do not add provider migration, a page builder, or raw provider payload/media in
127
+ CRM SQL. Native SQL supports the canonical CRM objects and generic custom
128
+ records; a separate object-authoring engine is not part of this template.
@@ -0,0 +1,145 @@
1
+ ---
2
+ name: customizing-agent-native
3
+ description: >-
4
+ How to configure, compose, or eject Agent Native features into app-owned
5
+ code. Use when overriding shared components or integrations, customizing a
6
+ template, adding UI to chat or headless apps, or inspecting package source.
7
+ scope: dev
8
+ metadata:
9
+ internal: true
10
+ ---
11
+
12
+ # Customizing Agent Native
13
+
14
+ ## Rule
15
+
16
+ Start with the public component and its props, slots, callbacks, and stable
17
+ class names. If those seams are not enough, use the eject CLI to transfer the
18
+ smallest supported feature into the app and make that copy app-owned. Never
19
+ edit `node_modules`, deep-import a private source file at runtime, or patch an
20
+ `@agent-native/*` package.
21
+
22
+ Use this order:
23
+
24
+ 1. Configure the public component.
25
+ 2. Compose public primitives behind a local app component.
26
+ 3. Eject the smallest feature into app-owned source.
27
+ 4. Propose a new Toolkit seam when the same override is useful in two apps.
28
+
29
+ Ejection is for intentional product customization, not for hiding an upgrade
30
+ failure or replacing Core runtime behavior.
31
+
32
+ ## Eject A Feature
33
+
34
+ Discover and inspect the ejection units published by installed first-party
35
+ packages before changing source:
36
+
37
+ ```bash
38
+ agent-native eject --list
39
+ agent-native eject inspect <unit>
40
+ agent-native eject <unit> --app <app>
41
+ agent-native eject <unit> --app <app> --apply
42
+ ```
43
+
44
+ The command is dry-run by default. It prints the file closure, consumer import
45
+ rewrites, protected package contracts, and verification commands before
46
+ writing. `--apply` copies the package-version-matched source into the app and
47
+ rewrites only imports covered by the unit manifest.
48
+
49
+ Every first-party public ejection unit must have a complete manifest. If one is
50
+ missing, treat that as a framework coverage bug instead of inventing a copy
51
+ recipe. For an unknown third-party package, use the emitted add-style blueprint
52
+ as a starting point. Protected runtime behavior is never copied; follow the
53
+ reported configuration, adapter, or extension seam instead.
54
+
55
+ Applied ejections are recorded in the committed
56
+ `agent-native.ejections.json`, including package version, manifest digest,
57
+ target hashes, and import rewrites. Use the recorded state to review drift or
58
+ undo an unchanged ejection:
59
+
60
+ ```bash
61
+ agent-native eject diff <unit> --app <app>
62
+ agent-native eject restore <unit> --app <app>
63
+ agent-native eject restore <unit> --app <app> --apply
64
+ ```
65
+
66
+ Restore is hash-gated. It refuses to remove locally edited files or reverse
67
+ changed imports and prints their diff instead. Keep an edited ejection as
68
+ app-owned code, or reconcile those edits before restoring it.
69
+
70
+ ## Find The Installed Implementation
71
+
72
+ Use the source that matches the installed package version:
73
+
74
+ ```bash
75
+ pnpm action docs-search --query "<component or feature>"
76
+ pnpm action source-search --query "<component or symbol>"
77
+ rg -n "<component or symbol>" node_modules/@agent-native/toolkit/src
78
+ rg -n "<component or symbol>" node_modules/@agent-native/core/corpus
79
+ ```
80
+
81
+ - Toolkit publishes readable TypeScript under
82
+ `node_modules/@agent-native/toolkit/src/` for selective UI adoption.
83
+ - Core and first-party template source lives under
84
+ `node_modules/@agent-native/core/corpus/core/` and
85
+ `node_modules/@agent-native/core/corpus/templates/`.
86
+ - Treat those trees as read-only references. Prefer `agent-native eject` so the
87
+ package manifest selects the complete source closure and rewrites imports.
88
+ Manual inspection is still useful for deciding whether to configure,
89
+ compose, eject, or propose a shared seam.
90
+
91
+ Do not manually guess at sibling dependencies. The ejection manifest owns the
92
+ required file closure and keeps protected contracts on public package imports.
93
+
94
+ ## Preserve The Agent-Native Contract
95
+
96
+ UI ownership may change; product contracts should not:
97
+
98
+ - Keep app operations in `defineAction` actions and call them through
99
+ `useActionQuery`, `useActionMutation`, or another named client helper.
100
+ - Keep navigation, selection, and focused-object state visible through the
101
+ existing application-state keys.
102
+ - Keep AI work in the shared agent chat instead of adding direct LLM calls.
103
+ - Keep auth, access checks, persistence, chat transport, and agent execution in
104
+ Core. Do not copy those runtimes into the app.
105
+ - Keep local adapters narrow so package upgrades still improve every surface
106
+ the app has not intentionally taken ownership of.
107
+
108
+ ## App Shapes
109
+
110
+ - **Template app:** begin with its existing local adapters and domain UI. Use
111
+ Toolkit for repeated workspace UI; eject only the unit being customized.
112
+ - **Chat app:** keep `AgentChatSurface`, thread state, and chat transport in
113
+ Core. Compose or eject Toolkit presentation such as chat-history UI around it.
114
+ - **Headless app:** stay action-first while no UI is needed. When adding a UI,
115
+ use the Chat template as the on-ramp or add Toolkit components without
116
+ replacing the existing actions.
117
+ - **Workspace:** put one-app overrides in that app. Promote a local component
118
+ to `packages/shared` only when multiple workspace apps use it.
119
+
120
+ ## After Ejecting
121
+
122
+ - Commit `agent-native.ejections.json` with the app-owned files and rewrites.
123
+ - Remove unused dependencies and imports from the ejected files.
124
+ - Keep visible text in the app's localization catalogs.
125
+ - Run the manifest verification commands plus the app's formatter, typecheck,
126
+ and focused tests.
127
+ - Re-check the installed source during future package upgrades; the app-owned
128
+ ejection does not receive upstream fixes automatically. Use `eject diff` to
129
+ distinguish recorded output from subsequent local edits.
130
+
131
+ ## Don't
132
+
133
+ - Don't edit or import from `node_modules/@agent-native/*/src` at runtime.
134
+ - Don't add `pnpm.overrides`, patches, or resolutions for Agent Native packages.
135
+ - Don't copy Core auth, DB, action, agent-loop, or transport internals.
136
+ - Don't manually copy a first-party unit with a missing recipe; fix its manifest.
137
+ - Don't eject a full package when a prop, slot, wrapper, or smaller unit works.
138
+
139
+ ## Related Skills
140
+
141
+ - `agent-native-docs` — version-matched docs and source lookup
142
+ - `agent-native-toolkit` — shared-vs-app-owned architecture boundary
143
+ - `self-modifying-code` — safe app source edits
144
+ - `upgrade-agent-native` — supported package upgrade path
145
+ - `adding-a-feature` — UI/action/instructions/application-state parity
@@ -0,0 +1,169 @@
1
+ ---
2
+ name: feature-flags
3
+ description: >-
4
+ Declare, evaluate, manage, and remove framework feature flags. Use when
5
+ shipping a capability gradually, targeting users or organizations, or
6
+ replacing a compile-time rollout switch with a production-safe runtime flag.
7
+ scope: dev
8
+ metadata:
9
+ internal: true
10
+ ---
11
+
12
+ # Feature Flags
13
+
14
+ A feature flag is a boolean declared in app code, evaluated locally by Core,
15
+ and managed from the Analytics fleet control plane. Code owns whether a flag
16
+ exists. Runtime settings own only its rollout state.
17
+
18
+ Flags let an app deploy dormant code and turn it on in the real environment
19
+ without another deployment. They are not experiments: do not add variants,
20
+ hypotheses, conversion metrics, exposure tracking, or lifecycle states.
21
+
22
+ ## When to use one
23
+
24
+ Use a flag for a reversible rollout of a user-facing capability whose dormant
25
+ code is safe to deploy. Flags are useful for production dogfooding, exact-user
26
+ or organization pilots, and deterministic percentage rollouts.
27
+
28
+ Do not use a flag for authentication, authorization, secrets, audit enablement,
29
+ SSR cache behavior, or another security boundary. Client hiding is presentation
30
+ only; every guarded server action must evaluate the same registered flag.
31
+
32
+ ## Agent workflow
33
+
34
+ ### 1. Declare
35
+
36
+ Keep definitions in a shared TypeScript module so server and client code use the
37
+ same stable key. Flags are boolean and default-off.
38
+
39
+ ```ts
40
+ import { defineFeatureFlag } from "@agent-native/core/feature-flags/registry";
41
+
42
+ export const FULL_APP_BUILDING = defineFeatureFlag({
43
+ key: "full-app-building",
44
+ displayName: "Full app building",
45
+ description: "Create and edit Fusion-backed applications.",
46
+ });
47
+ ```
48
+
49
+ Keys are immutable, never reused, and contain only letters, numbers, dots,
50
+ underscores, or hyphens. Prefer a concise app-owned name. Do not create flag
51
+ definitions or rollout rows from Analytics.
52
+
53
+ ### 2. Register
54
+
55
+ Register app definitions from a Nitro plugin before actions are discovered.
56
+ Do not add app-specific flags to a Core registry.
57
+
58
+ ```ts
59
+ import { createFeatureFlagsPlugin } from "@agent-native/core/server";
60
+
61
+ import { FULL_APP_BUILDING } from "../../shared/feature-flags.js";
62
+
63
+ export default createFeatureFlagsPlugin({ flags: [FULL_APP_BUILDING] });
64
+ ```
65
+
66
+ ### 3. Guard server and client
67
+
68
+ The server action is the enforcement boundary:
69
+
70
+ ```ts
71
+ import { isFeatureFlagEnabled } from "@agent-native/core/feature-flags";
72
+
73
+ run: async (args, ctx) => {
74
+ if (!(await isFeatureFlagEnabled(FULL_APP_BUILDING, ctx))) {
75
+ throw new Error("Full app building is not enabled for this account.");
76
+ }
77
+ // guarded operation
78
+ }
79
+ ```
80
+
81
+ Use the client hook only to hide or reveal hydrated UI:
82
+
83
+ ```tsx
84
+ import { useFeatureFlag } from "@agent-native/core/client/feature-flags";
85
+
86
+ const enabled = useFeatureFlag(FULL_APP_BUILDING.key);
87
+ return enabled ? <FullAppOption /> : null;
88
+ ```
89
+
90
+ The client hook intentionally returns false while loading or for an unknown
91
+ flag. Never replace that fail-closed behavior with app-local bucketing or a
92
+ compile-time fallback. Never evaluate personalized flags in the public SSR
93
+ shell; it is shared and cached for every visitor.
94
+
95
+ ### 4. Verify and roll out
96
+
97
+ 1. Verify the off path before changing rollout state.
98
+ 2. Confirm the registered flag appears in **Analytics → Feature flags** for the
99
+ app and is Off by default.
100
+ 3. Use **Enable for me** for initial production dogfood.
101
+ 4. Expand to exact emails, organization IDs, or a percentage only from
102
+ Analytics.
103
+ 5. Confirm the client presentation and authoritative server action agree.
104
+
105
+ ## Management contract
106
+
107
+ Core mounts three actions in registered apps:
108
+
109
+ | Action | Purpose |
110
+ | --- | --- |
111
+ | `get-feature-flags` | Return the current caller's evaluated boolean values. |
112
+ | `list-feature-flags` | Return definitions and rollout metadata to an authorized operator. |
113
+ | `set-feature-flag` | Atomically turn a flag off, enable it for the operator, or replace targeting rules. |
114
+
115
+ Analytics calls the app-local operator actions through narrowly scoped A2A
116
+ delegation. Tokens require an exact audience, organization, scope, operator
117
+ role, and audit correlation id. Management is permission-checked and audited
118
+ by the target app. Never manage flags through generic settings routes, raw SQL,
119
+ or per-app toggle UIs.
120
+
121
+ ## Rollout semantics
122
+
123
+ The operator modes are **Off**, **Targeted**, and **Everyone**. Core stores them
124
+ as `off`, `rules`, and `on`.
125
+
126
+ Targeted rules combine exact normalized emails, exact organization IDs, and a
127
+ percentage with OR semantics. Exact matches are checked first. Percentage
128
+ buckets use Core's stable hash of the flag key and authenticated user identity;
129
+ anonymous callers fail closed. Raising a percentage preserves the users already
130
+ included at a lower percentage. Do not implement bucketing in app code.
131
+
132
+ Unknown definitions, missing state, malformed state, storage errors, and
133
+ evaluation errors all return the code default (`false` in v1). Explicit Off
134
+ wins over every target; Everyone enables every authenticated caller.
135
+
136
+ ## Remove a flag
137
+
138
+ After a rollout is permanent:
139
+
140
+ 1. Replace guarded branches with the chosen behavior.
141
+ 2. Delete the server and client gates.
142
+ 3. Delete the definition and registration entry.
143
+ 4. Verify the flag disappears from the Analytics fleet.
144
+ 5. Remove stale tests and rollout instructions.
145
+
146
+ A permanent flag is just an if statement with a pension plan.
147
+
148
+ ## Verification checklist
149
+
150
+ - Unknown and unregistered keys evaluate false.
151
+ - UI hiding and server enforcement use the same registered key.
152
+ - Exact-user, organization, deterministic percentage, Everyone, and Off paths
153
+ have focused tests.
154
+ - Increasing a percentage is monotonic; anonymous percentage evaluation is off.
155
+ - Unauthorized callers cannot list targeting details or mutate flags.
156
+ - Mutations are atomic, read back stored state, emit refresh, and appear in the
157
+ audit log with the flag key.
158
+ - Analytics represents ready, no-definition, unsupported, forbidden, legacy,
159
+ and unreachable directory apps honestly.
160
+ - Future agents can find this skill from root `AGENTS.md`, and
161
+ `pnpm guard:workspace-skills` passes after syncing generated copies.
162
+
163
+ ## Related skills
164
+
165
+ - **adding-a-feature** — preserve UI/action/instruction/application-state parity
166
+ - **actions** — define and call guarded app operations
167
+ - **audit-log** — inspect automatic action mutation history
168
+ - **reliable-mutations** — make rollout changes atomic and provable
169
+ - **security** — keep security controls out of feature flags
@@ -0,0 +1,100 @@
1
+ ---
2
+ name: upgrade-agent-native
3
+ description: >-
4
+ Bring an older Agent Native app or workspace current. Use when updating
5
+ @agent-native/core, fixing a broken upgrade, or when tempted to patch or
6
+ override core/dispatch packages to make an old branch run.
7
+ scope: dev
8
+ metadata:
9
+ internal: true
10
+ ---
11
+
12
+ # Upgrade Agent Native
13
+
14
+ ## Rule
15
+
16
+ When an older Agent Native app/branch needs to run on current packages, use
17
+ `agent-native upgrade`. Never "fix" upgrade breakage with
18
+ `pnpm.overrides`, `patchedDependencies`, `resolutions`, local patches, or
19
+ edits under `node_modules/@agent-native/*` — especially not against
20
+ `@agent-native/core` or `@agent-native/dispatch`.
21
+
22
+ ## Why
23
+
24
+ Agents often respond to a failed core bump by inventing framework patches and
25
+ dispatch behavior overrides. That hides the real app-level break, drifts from
26
+ upstream, and makes the next upgrade worse. The supported path is bump →
27
+ install → refresh scaffold skills → verify, then fix **app** code only.
28
+
29
+ ## How
30
+
31
+ 1. **Preview migration codemods first**
32
+
33
+ ```bash
34
+ npx @agent-native/core@latest upgrade --codemods
35
+ ```
36
+
37
+ Codemods are preview-by-default: read the diff before applying it. Do not
38
+ manually edit imports before running this command; the migration manifest is
39
+ the source of truth for renamed specifiers and symbols.
40
+
41
+ 2. **Apply the reviewed codemods, then run the upgrade**
42
+
43
+ ```bash
44
+ npx @agent-native/core@latest upgrade --codemods --yes
45
+ npx @agent-native/core@latest upgrade
46
+ ```
47
+
48
+ Or from an already-installed CLI: `pnpm exec agent-native upgrade` /
49
+ `agent-native upgrade`.
50
+
51
+ What it does:
52
+
53
+ - Blocks (unless `--force`) when `@agent-native/*` overrides/patches exist
54
+ - Rewrites non-local `@agent-native/*` dependency pins to `latest`
55
+ - Runs the package manager install
56
+ - Runs `skills update scaffold --project`
57
+ - Runs `typecheck` when the project has that script
58
+
59
+ 3. **If upgrade or typecheck fails**
60
+
61
+ - Read the concrete error
62
+ - Fix **app** source, actions, config, or env — not framework packages
63
+ - Re-run `agent-native upgrade` or `pnpm typecheck`
64
+ - Stop and ask the user if you cannot fix the app-level error
65
+
66
+ Intentional app-level UI customization is a separate workflow. Read
67
+ `customizing-agent-native` when the product needs to own a selectively
68
+ copied component; do not use that path to reproduce framework runtime
69
+ behavior or hide version skew.
70
+
71
+ 4. **Dry-run / partial runs**
72
+
73
+ ```bash
74
+ agent-native upgrade --dry-run
75
+ agent-native upgrade --skip-verify
76
+ agent-native upgrade --skip-install # package.json bumps only
77
+ agent-native doctor --only migration-manifest
78
+ ```
79
+
80
+ `migration-manifest` has no opt-out. Run it in CI before upgrading to find
81
+ imports that will break, then use `npx @agent-native/core@latest upgrade --codemods`
82
+ to preview the supported rewrite.
83
+
84
+ ## Don't
85
+
86
+ - Don't add `pnpm.overrides`, `overrides`, `resolutions`, or
87
+ `patchedDependencies` for any `@agent-native/*` package
88
+ - Don't edit `node_modules/@agent-native/core` or
89
+ `node_modules/@agent-native/dispatch`
90
+ - Don't invent local "dispatch behavior" shims to paper over version skew
91
+ - Don't keep iterating with more framework patches after a failed install
92
+ - Don't skip `skills update scaffold --project` after a core bump (the
93
+ upgrade command does this for you)
94
+
95
+ ## Related Skills
96
+
97
+ - **self-modifying-code** — Tier 4: framework packages are off limits
98
+ - **agent-native-docs** — version-matched docs after the bump
99
+ - **customizing-agent-native** — intentional app-owned UI copies, not upgrade patches
100
+ - **portability** — keep app code provider-agnostic across upgrades
@@ -0,0 +1,5 @@
1
+ # Persistent SQL is required outside local development.
2
+ DATABASE_URL=file:./data/app.db
3
+
4
+ # Local development or preview only.
5
+ # AUTH_DISABLED=true
@@ -0,0 +1,120 @@
1
+ # CRM — Agent Guide
2
+
3
+ CRM is a standalone Native SQL CRM and a HubSpot/Salesforce Connected/Hybrid
4
+ companion. Actions are the shared contract for UI, agent chat, HTTP, MCP, A2A,
5
+ and CLI. Read `shared/crm-contract.ts` before changing CRM semantics; it is the
6
+ source of truth for vocabulary, field policies, provenance, provider identity,
7
+ and write policy.
8
+
9
+ ## Hard boundaries
10
+
11
+ - Native SQL, HubSpot, and Salesforce are the initial modes. Native SQL is
12
+ local-authoritative, requires no external connection, and stays portable
13
+ across SQLite, Postgres, and D1.
14
+ - Workspace Connections own provider credentials. Never ask for, store, log,
15
+ or expose provider tokens.
16
+ - The local mirror is scoped and thin. Unknown fields are remote-only;
17
+ sensitive fields default to redacted; only allow-listed fields are mirrored.
18
+ - Never store raw provider payloads, transcripts, audio, video, screenshots,
19
+ base64, or file bodies in SQL. Evidence is a URL/id plus bounded quote,
20
+ timestamp, speaker, and source metadata.
21
+ - Do not merge identities from email/domain matches. Preserve the provider
22
+ identity tuple and directional relationships.
23
+
24
+ ## Actions
25
+
26
+ | Action | Purpose |
27
+ | -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
28
+ | `get-crm-overview` | Read the scoped CRM summary and connection/mirror health. |
29
+ | `configure-native-crm` | Start a local-authoritative Native SQL CRM without a provider connection. |
30
+ | `configure-crm-connection` | Register an authorized HubSpot or Salesforce workspace Connection for the companion mirror. |
31
+ | `list-crm-records` | List a bounded set of CRM records using declared filters. |
32
+ | `get-crm-record` | Read one record and its permitted scoped detail. |
33
+ | `sync-crm` | Refresh a declared mirror cohort; never treat it as an export-all operation. |
34
+ | `list-crm-saved-views` / `save-crm-saved-view` | List or save scoped CRM views. |
35
+ | `install-crm-pipeline-dashboard` | Idempotently verify and install the CRM-owned Pipeline dashboard and data program. |
36
+ | `get-crm-pipeline-data` | Read bounded, access-scoped opportunity totals by stage for the dashboard program. |
37
+ | `get-crm-dashboard` / `list-crm-dashboards` / `save-crm-dashboard` | Read, list, or revision-write access-scoped Pipeline dashboards. |
38
+ | `list-crm-dashboard-revisions` / `restore-crm-dashboard-revision` | Inspect and restore a dashboard's bounded revision history. |
39
+ | `list-crm-tasks` / `manage-crm-task` | Read and manage CRM follow-up tasks. |
40
+ | `update-crm-record` | Submit a typed, access-checked, revision-aware record mutation. |
41
+ | `list-crm-proposals` / `apply-crm-proposals` | Review provider proposals and record the upstream handoff. |
42
+ | `attach-call-evidence` | Attach a bounded call evidence reference; never attach a transcript or media. |
43
+ | `get-crm-automation-recipe` | Return the default-off, record-selected Clips call-evidence review recipe. |
44
+ | `create-crm-signal-tracker` / `list-crm-signal-trackers` / `manage-crm-signal-tracker` | Create, inspect, enable, disable, or delete access-scoped keyword and delegated-agent moment detectors. |
45
+ | `run-crm-signal-trackers` / `list-crm-signal-hits` | Find deterministic hits and prepare bounded smart/summary agent work. |
46
+ | `record-crm-smart-signal` / `record-crm-call-insight` | Persist only evidence-grounded delegated results as reviewable signals. |
47
+ | `review-crm-signal` | Confirm or dismiss one grounded CRM signal. |
48
+ | `view-screen` | Read current navigation, selection, and visible CRM context. |
49
+ | `navigate` | Move the UI to overview, records, tasks, proposals, or settings. |
50
+ | `provider-api-catalog` / `provider-api-docs` / `provider-api-request` | Discover and make authorized, read-only exact provider API requests. |
51
+ | `query-staged-dataset` | Reduce staged, paginated provider results for broad analyses. |
52
+ | data program, automation, extension surfaces | Use shared framework capabilities under their scoped access and data limits. |
53
+
54
+ ## Agent behavior
55
+
56
+ - Call `view-screen` before acting on “this record,” “these accounts,” the
57
+ selected row, or a visible saved view. For standalone read requests, call the
58
+ focused CRM action directly.
59
+ - Navigate before presenting a requested CRM view. Keep visible context aligned
60
+ with the action result.
61
+ - For a standalone CRM, use `configure-native-crm`; then create and update
62
+ local-authoritative records through the normal CRM actions. Do not call
63
+ `sync-crm`, provider API actions, or require a workspace Connection for
64
+ Native SQL.
65
+ - Use first-class actions for ordinary workflows. For an exact HubSpot or Salesforce API
66
+ request that actions cannot express, discover it with provider API actions,
67
+ fetch it with explicit pagination, then stage/reduce large results. Report
68
+ source, scope, filters, counts, pagination, and uncertainty.
69
+ - Agent provider changes are normally proposals. Changes involving ownership,
70
+ amounts, stage, deletion, bulk scope, or external side effects require an
71
+ exact preview and approval. This release does not complete provider writes:
72
+ review the proposal, direct the user to make the change in HubSpot or
73
+ Salesforce, and never claim the upstream change succeeded.
74
+ - A stored automation may execute only the `crm-sales-routine-local-v1` pack:
75
+ one routine, compensatable local update to one record. The trigger dispatcher,
76
+ not action input, supplies that policy context. Provider updates remain
77
+ proposals; ownership, amount, stage, deletion, bulk, and external effects
78
+ stay approval-gated or denied.
79
+ - Use `run-crm-signal-trackers` for attached Clips evidence. Keyword detectors
80
+ run locally; smart detectors and call summaries are delegated through agent
81
+ chat. Record only exact, bounded evidence citations through the signal record
82
+ actions. Never pass or reconstruct a transcript.
83
+ - Manage a tracker only with editor access. Enabling, disabling, and deleting a
84
+ tracker are local CRM configuration changes: they never invoke a model or
85
+ mutate a connected provider. Use `navigate` with
86
+ `{ view: "settings", settingsSection: "intelligence" }` to open its settings tab.
87
+ - The Clips review recipe is default-off and always scoped to one explicit CRM
88
+ record. It may subscribe to `clip.created` only after the user explicitly
89
+ approves the exact A2A activation call. The trigger belongs to Clips, where
90
+ `clip.created` is registered. It must ignore the event URL, call
91
+ `prepare-crm-call-evidence` with the event clip ID, and send only that bounded
92
+ durable HTTPS `/r/<id>` reference back to `attach-call-evidence` for the
93
+ selected record. It rejects media, tokens, transcripts, inferred records,
94
+ tasks, field/provider writes, and broader scopes. Use
95
+ `get-crm-automation-recipe` before configuring this flow.
96
+ - Use `install-crm-pipeline-dashboard` to set up the Pipeline view. It owns one
97
+ per-user data program that calls `get-crm-pipeline-data`; do not replace it
98
+ with a provider-specific action or embed raw rows in dashboard config. Use
99
+ `save-crm-dashboard` with `expectedUpdatedAt` for dashboard edits, and
100
+ `restore-crm-dashboard-revision` to roll back a saved revision.
101
+
102
+ ## Four-area change guide
103
+
104
+ When changing a provider workflow, keep UI, actions, agent instructions, and
105
+ application state aligned. The setup route records the selected native mode or
106
+ connection; `configure-native-crm`, `configure-crm-connection`, and `sync-crm`
107
+ are the shared UI/agent operations; signal selection stores record/evidence IDs
108
+ only; `view-screen` and `navigate` expose the selected CRM context. Do not introduce provider-specific API routes, browser
109
+ credential inputs, or unscoped state.
110
+
111
+ ## Implementation
112
+
113
+ Before building common workspace or agent UI, read `agent-native-toolkit`; use
114
+ `customizing-agent-native` when composing or ejecting shared surfaces.
115
+
116
+ Use `defineAction` and action hooks rather than duplicate `/api` CRUD routes.
117
+ Use shared Toolkit surfaces for connections, settings, navigation, sharing,
118
+ automations, and extensions before adding app-local equivalents. Keep SQL
119
+ schema changes additive and preserve access-scope checks independently from
120
+ provider permissions.