@agent-native/core 0.69.0 → 0.70.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 (336) hide show
  1. package/README.md +15 -15
  2. package/corpus/README.md +2 -2
  3. package/corpus/core/CHANGELOG.md +109 -0
  4. package/corpus/core/docs/design/durable-agent-runs.md +217 -0
  5. package/corpus/core/package.json +1 -1
  6. package/corpus/core/src/action.ts +89 -0
  7. package/corpus/core/src/agent/model-config.ts +0 -2
  8. package/corpus/core/src/agent/run-loop-with-resume.ts +48 -0
  9. package/corpus/core/src/changelog/parse.ts +245 -0
  10. package/corpus/core/src/cli/changelog.ts +199 -0
  11. package/corpus/core/src/cli/index.ts +19 -0
  12. package/corpus/core/src/cli/recap.ts +24 -1
  13. package/corpus/core/src/cli/skills.ts +74 -47
  14. package/corpus/core/src/client/AgentPanel.tsx +5 -3
  15. package/corpus/core/src/client/AssistantChat.tsx +8 -0
  16. package/corpus/core/src/client/CommandMenu.tsx +183 -75
  17. package/corpus/core/src/client/agent-chat-adapter.ts +44 -7
  18. package/corpus/core/src/client/analytics.ts +181 -0
  19. package/corpus/core/src/client/changelog/Changelog.tsx +321 -0
  20. package/corpus/core/src/client/client-surface.ts +41 -0
  21. package/corpus/core/src/client/composer/TiptapComposer.tsx +123 -12
  22. package/corpus/core/src/client/feedback-context.ts +4 -0
  23. package/corpus/core/src/client/index.ts +12 -0
  24. package/corpus/core/src/client/mcp-apps/McpAppRenderer.tsx +54 -0
  25. package/corpus/core/src/client/settings/useBuilderStatus.ts +82 -20
  26. package/corpus/core/src/client/sse-event-processor.ts +7 -1
  27. package/corpus/core/src/mcp/build-server.ts +57 -1
  28. package/corpus/core/src/mcp/embed-app.ts +197 -7
  29. package/corpus/core/src/mcp/oauth-route.ts +109 -13
  30. package/corpus/core/src/server/attribution.ts +211 -0
  31. package/corpus/core/src/server/auth.ts +6 -0
  32. package/corpus/core/src/server/better-auth-instance.ts +49 -5
  33. package/corpus/core/src/server/builder-browser.ts +27 -1
  34. package/corpus/core/src/server/core-routes-plugin.ts +136 -0
  35. package/corpus/core/src/server/google-oauth.ts +19 -6
  36. package/corpus/core/src/server/onboarding-html.ts +35 -0
  37. package/corpus/core/src/shared/mcp-embed-headers.ts +1 -1
  38. package/corpus/core/src/styles/agent-conversation.css +21 -0
  39. package/corpus/core/src/templates/workspace-core/.agents/skills/changelog/SKILL.md +111 -0
  40. package/corpus/core/src/templates/workspace-core/.agents/skills/reliable-mutations/SKILL.md +72 -0
  41. package/corpus/core/src/templates/workspace-core/.agents/skills/tracking/SKILL.md +46 -14
  42. package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +22 -0
  43. package/corpus/templates/analytics/AGENTS.md +8 -1
  44. package/corpus/templates/analytics/CHANGELOG.md +10 -0
  45. package/corpus/templates/analytics/actions/install-dashboard-template.ts +99 -4
  46. package/corpus/templates/analytics/actions/open-traffic-dashboard.ts +1 -1
  47. package/corpus/templates/analytics/actions/update-dashboard.ts +39 -8
  48. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +30 -3
  49. package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +180 -144
  50. package/corpus/templates/analytics/app/components/layout/Header.tsx +2 -3
  51. package/corpus/templates/analytics/app/components/layout/Layout.tsx +7 -5
  52. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +221 -215
  53. package/corpus/templates/analytics/app/hooks/use-navigation-state.ts +6 -6
  54. package/corpus/templates/analytics/app/lib/demo-dashboard-path.ts +1 -1
  55. package/corpus/templates/analytics/app/lib/last-opened.ts +2 -1
  56. package/corpus/templates/analytics/app/pages/Settings.tsx +4 -0
  57. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +3 -3
  58. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/DashboardFilterBar.tsx +2 -2
  59. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +32 -2
  60. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +101 -99
  61. package/corpus/templates/analytics/app/pages/overview/OverviewPage.tsx +1 -1
  62. package/corpus/templates/analytics/app/routes/adhoc.$id.tsx +18 -5
  63. package/corpus/templates/analytics/app/routes/catalog.tsx +1 -1
  64. package/corpus/templates/analytics/app/routes/dashboards.$id.tsx +9 -0
  65. package/corpus/templates/analytics/app/routes/traffic.tsx +1 -1
  66. package/corpus/templates/analytics/changelog/2026-06-23-long-dashboard-and-analysis-names-in-the-sidebar-now-truncat.md +6 -0
  67. package/corpus/templates/analytics/changelog/2026-06-23-open-any-dashboard-chart-full-screen-in-a-modal-from-the-pan.md +6 -0
  68. package/corpus/templates/analytics/changelog/2026-06-23-the-dashboards-and-analyses-sidebar-settings-buttons-now-sta.md +6 -0
  69. package/corpus/templates/analytics/seeds/dashboards/agent-native-templates-first-party.json +145 -0
  70. package/corpus/templates/analytics/server/db/index.ts +1 -1
  71. package/corpus/templates/analytics/server/lib/dashboard-catalog.ts +9 -2
  72. package/corpus/templates/analytics/server/lib/demo-dashboards.ts +1 -1
  73. package/corpus/templates/analytics/server/plugins/agent-chat.ts +2 -2
  74. package/corpus/templates/analytics/server/plugins/core-routes.ts +6 -6
  75. package/corpus/templates/assets/CHANGELOG.md +10 -0
  76. package/corpus/templates/assets/actions/generate-image.ts +24 -0
  77. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +2 -2
  78. package/corpus/templates/assets/app/global.css +17 -1
  79. package/corpus/templates/assets/app/root.tsx +7 -1
  80. package/corpus/templates/assets/app/routes/_index.tsx +94 -14
  81. package/corpus/templates/assets/app/routes/settings.tsx +6 -0
  82. package/corpus/templates/assets/changelog/2026-06-23-chat-dates-in-the-sidebar-no-longer-wrap-onto-two-lines.md +6 -0
  83. package/corpus/templates/assets/changelog/2026-06-23-clicking-image-video-or-refine-on-the-start-screen-now-drops.md +6 -0
  84. package/corpus/templates/assets/changelog/2026-06-23-pick-your-image-generation-model-right-from-the-chat-model-m.md +6 -0
  85. package/corpus/templates/brain/CHANGELOG.md +10 -0
  86. package/corpus/templates/brain/app/root.tsx +7 -1
  87. package/corpus/templates/brain/app/routes/settings.tsx +8 -1
  88. package/corpus/templates/calendar/CHANGELOG.md +10 -0
  89. package/corpus/templates/calendar/app/pages/Settings.tsx +4 -0
  90. package/corpus/templates/calendar/app/root.tsx +7 -1
  91. package/corpus/templates/chat/CHANGELOG.md +10 -0
  92. package/corpus/templates/chat/app/root.tsx +7 -1
  93. package/corpus/templates/clips/CHANGELOG.md +10 -0
  94. package/corpus/templates/clips/app/components/library/library-grid.tsx +1 -20
  95. package/corpus/templates/clips/app/components/player/share-dialog.tsx +33 -7
  96. package/corpus/templates/clips/app/components/player/sign-in-prompt-dialog.tsx +8 -0
  97. package/corpus/templates/clips/app/components/player/video-player.tsx +150 -20
  98. package/corpus/templates/clips/app/components/recorder/countdown-overlay.tsx +72 -48
  99. package/corpus/templates/clips/app/components/recorder/pre-record-panel.tsx +7 -11
  100. package/corpus/templates/clips/app/components/recorder/recorder-engine.ts +31 -0
  101. package/corpus/templates/clips/app/components/sharing/slack-share-hint.tsx +71 -0
  102. package/corpus/templates/clips/app/lib/countdown-audio-cue.ts +35 -17
  103. package/corpus/templates/clips/app/root.tsx +7 -1
  104. package/corpus/templates/clips/app/routes/_app.settings._index.tsx +15 -1
  105. package/corpus/templates/clips/app/routes/record.tsx +78 -5
  106. package/corpus/templates/clips/app/routes/share.$shareId.tsx +86 -5
  107. package/corpus/templates/clips/changelog/2026-06-23-clips-shared-in-slack-no-longer-show-a-could-not-start-playb.md +6 -0
  108. package/corpus/templates/clips/changelog/2026-06-23-made-the-play-button-on-shared-and-embedded-clips-scale-with.md +6 -0
  109. package/corpus/templates/clips/changelog/2026-06-23-public-clip-share-links-now-show-whether-they-ll-play-inline.md +6 -0
  110. package/corpus/templates/clips/changelog/2026-06-23-removed-select-button-from-library-hover-a-clip-to-select-it.md +6 -0
  111. package/corpus/templates/clips/changelog/2026-06-23-screen-camera-recordings-now-keep-the-presenter-s-face-in-th.md +6 -0
  112. package/corpus/templates/clips/changelog/2026-06-23-shared-video-links-now-play-for-anyone-without-signing-in.md +6 -0
  113. package/corpus/templates/clips/changelog/2026-06-23-skip-or-cancel-the-recording-countdown-with-buttons-beside-t.md +6 -0
  114. package/corpus/templates/clips/changelog/2026-06-23-the-desktop-camera-bubble-now-looks-sharp-the-instant-it-ope.md +6 -0
  115. package/corpus/templates/clips/changelog/2026-06-23-the-desktop-recording-widget-now-grows-downward-only-when-yo.md +6 -0
  116. package/corpus/templates/clips/changelog/2026-06-23-the-recording-start-sound-is-now-a-softer-more-modern-chime.md +6 -0
  117. package/corpus/templates/clips/chrome-extension/public/manifest.json +17 -8
  118. package/corpus/templates/clips/chrome-extension/src/background.ts +769 -180
  119. package/corpus/templates/clips/chrome-extension/src/content-script.ts +177 -0
  120. package/corpus/templates/clips/chrome-extension/src/offscreen.ts +466 -329
  121. package/corpus/templates/clips/chrome-extension/src/overlay.css +377 -0
  122. package/corpus/templates/clips/chrome-extension/src/overlay.html +12 -0
  123. package/corpus/templates/clips/chrome-extension/src/overlay.ts +330 -0
  124. package/corpus/templates/clips/chrome-extension/src/permission.html +227 -0
  125. package/corpus/templates/clips/chrome-extension/src/permission.ts +105 -0
  126. package/corpus/templates/clips/chrome-extension/src/popup.html +3 -0
  127. package/corpus/templates/clips/chrome-extension/src/popup.ts +50 -2
  128. package/corpus/templates/clips/chrome-extension/src/styles.css +50 -0
  129. package/corpus/templates/clips/chrome-extension/vite.config.ts +3 -0
  130. package/corpus/templates/clips/desktop/src/lib/audio-cue.ts +41 -24
  131. package/corpus/templates/clips/desktop/src/lib/bubble-webrtc.ts +119 -2
  132. package/corpus/templates/clips/desktop/src/lib/recorder.ts +20 -0
  133. package/corpus/templates/clips/desktop/src/main.tsx +3 -0
  134. package/corpus/templates/clips/desktop/src/overlays/countdown.tsx +21 -2
  135. package/corpus/templates/clips/desktop/src/overlays/region-record-border.tsx +76 -0
  136. package/corpus/templates/clips/desktop/src/styles.css +119 -2
  137. package/corpus/templates/clips/desktop/src-tauri/capabilities/default.json +2 -1
  138. package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +140 -1
  139. package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +2 -0
  140. package/corpus/templates/clips/desktop/src-tauri/src/util.rs +4 -1
  141. package/corpus/templates/clips/server/routes/api/video/[recordingId].get.ts +85 -6
  142. package/corpus/templates/clips/shared/share-attribution.ts +79 -0
  143. package/corpus/templates/content/AGENTS.md +20 -3
  144. package/corpus/templates/content/CHANGELOG.md +10 -0
  145. package/corpus/templates/content/actions/_database-utils.ts +15 -0
  146. package/corpus/templates/content/actions/_property-utils.ts +371 -4
  147. package/corpus/templates/content/actions/configure-document-property.ts +35 -1
  148. package/corpus/templates/content/actions/create-content-database.ts +5 -1
  149. package/corpus/templates/content/actions/delete-document-property.ts +52 -2
  150. package/corpus/templates/content/actions/duplicate-document-property.ts +34 -17
  151. package/corpus/templates/content/actions/reorder-document-property.ts +79 -0
  152. package/corpus/templates/content/actions/set-document-property.ts +39 -0
  153. package/corpus/templates/content/app/components/editor/DocumentBlockFields.tsx +806 -0
  154. package/corpus/templates/content/app/components/editor/DocumentDatabase.tsx +226 -68
  155. package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +59 -30
  156. package/corpus/templates/content/app/components/editor/DocumentProperties.tsx +25 -1
  157. package/corpus/templates/content/app/components/editor/blockFieldSaveController.ts +180 -0
  158. package/corpus/templates/content/app/components/editor/blockFieldSaveRegistry.ts +179 -0
  159. package/corpus/templates/content/app/components/editor/previewDocumentSaveController.ts +244 -0
  160. package/corpus/templates/content/app/components/editor/previewDocumentSaveRegistry.ts +132 -0
  161. package/corpus/templates/content/app/global.css +9 -0
  162. package/corpus/templates/content/app/hooks/use-document-properties.ts +21 -0
  163. package/corpus/templates/content/app/root.tsx +7 -1
  164. package/corpus/templates/content/server/db/schema.ts +30 -0
  165. package/corpus/templates/content/server/plugins/db.ts +87 -0
  166. package/corpus/templates/content/shared/api.ts +7 -0
  167. package/corpus/templates/content/shared/properties.ts +109 -0
  168. package/corpus/templates/design/CHANGELOG.md +10 -0
  169. package/corpus/templates/design/actions/generate-design.ts +4 -0
  170. package/corpus/templates/design/app/root.tsx +7 -1
  171. package/corpus/templates/design/app/routes/settings.tsx +10 -2
  172. package/corpus/templates/dispatch/CHANGELOG.md +10 -0
  173. package/corpus/templates/dispatch/app/root.tsx +7 -1
  174. package/corpus/templates/forms/.agents/skills/form-responses/SKILL.md +10 -0
  175. package/corpus/templates/forms/CHANGELOG.md +10 -0
  176. package/corpus/templates/forms/actions/export-responses.ts +6 -0
  177. package/corpus/templates/forms/actions/list-responses.ts +2 -0
  178. package/corpus/templates/forms/actions/response-insights.ts +2 -0
  179. package/corpus/templates/forms/app/pages/ResponsesPage.tsx +138 -1
  180. package/corpus/templates/forms/app/root.tsx +7 -1
  181. package/corpus/templates/forms/changelog/2026-06-23-response-tables-now-show-the-page-each-submission-came-from-.md +6 -0
  182. package/corpus/templates/forms/changelog/2026-06-23-response-tables-now-show-whether-feedback-came-from-the-web-.md +6 -0
  183. package/corpus/templates/forms/server/db/schema.ts +7 -0
  184. package/corpus/templates/forms/server/handlers/submissions.ts +19 -2
  185. package/corpus/templates/forms/server/lib/integrations.ts +76 -2
  186. package/corpus/templates/forms/server/plugins/db.ts +20 -0
  187. package/corpus/templates/forms/shared/types.ts +12 -0
  188. package/corpus/templates/macros/CHANGELOG.md +10 -0
  189. package/corpus/templates/macros/app/root.tsx +7 -1
  190. package/corpus/templates/mail/CHANGELOG.md +10 -0
  191. package/corpus/templates/mail/app/components/layout/CommandPalette.tsx +3 -0
  192. package/corpus/templates/mail/app/pages/SettingsPage.tsx +27 -0
  193. package/corpus/templates/plan/.agents/skills/visual-plan/SKILL.md +31 -17
  194. package/corpus/templates/plan/.agents/skills/visual-plan/references/wireframe.md +7 -4
  195. package/corpus/templates/plan/.agents/skills/visual-recap/SKILL.md +34 -24
  196. package/corpus/templates/plan/.agents/skills/visual-recap/references/wireframe.md +7 -4
  197. package/corpus/templates/plan/AGENTS.md +4 -0
  198. package/corpus/templates/plan/CHANGELOG.md +10 -0
  199. package/corpus/templates/plan/actions/view-screen.ts +5 -0
  200. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +98 -1
  201. package/corpus/templates/plan/app/components/plan/wireframe/html-artboard.css +3 -1
  202. package/corpus/templates/plan/app/pages/PlansPage.tsx +107 -7
  203. package/corpus/templates/plan/app/root.tsx +7 -1
  204. package/corpus/templates/plan/changelog/2026-06-23-large-diagrams-in-a-plan-now-scroll-within-their-block-inste.md +6 -0
  205. package/corpus/templates/plan/shared/share-attribution.ts +72 -0
  206. package/corpus/templates/slides/CHANGELOG.md +10 -0
  207. package/corpus/templates/slides/app/root.tsx +7 -1
  208. package/corpus/templates/videos/CHANGELOG.md +4 -151
  209. package/corpus/templates/videos/app/root.tsx +7 -1
  210. package/dist/action.js +87 -0
  211. package/dist/action.js.map +1 -1
  212. package/dist/agent/engine/builder-engine.d.ts +1 -1
  213. package/dist/agent/engine/builder-engine.d.ts.map +1 -1
  214. package/dist/agent/model-config.d.ts +2 -2
  215. package/dist/agent/model-config.d.ts.map +1 -1
  216. package/dist/agent/model-config.js +0 -2
  217. package/dist/agent/model-config.js.map +1 -1
  218. package/dist/agent/run-loop-with-resume.d.ts +13 -0
  219. package/dist/agent/run-loop-with-resume.d.ts.map +1 -1
  220. package/dist/agent/run-loop-with-resume.js +44 -0
  221. package/dist/agent/run-loop-with-resume.js.map +1 -1
  222. package/dist/changelog/parse.d.ts +70 -0
  223. package/dist/changelog/parse.d.ts.map +1 -0
  224. package/dist/changelog/parse.js +200 -0
  225. package/dist/changelog/parse.js.map +1 -0
  226. package/dist/cli/changelog.d.ts +4 -0
  227. package/dist/cli/changelog.d.ts.map +1 -0
  228. package/dist/cli/changelog.js +166 -0
  229. package/dist/cli/changelog.js.map +1 -0
  230. package/dist/cli/index.js +18 -0
  231. package/dist/cli/index.js.map +1 -1
  232. package/dist/cli/recap.d.ts.map +1 -1
  233. package/dist/cli/recap.js +22 -1
  234. package/dist/cli/recap.js.map +1 -1
  235. package/dist/cli/skills.d.ts +3 -3
  236. package/dist/cli/skills.d.ts.map +1 -1
  237. package/dist/cli/skills.js +74 -47
  238. package/dist/cli/skills.js.map +1 -1
  239. package/dist/client/AgentPanel.d.ts.map +1 -1
  240. package/dist/client/AgentPanel.js +5 -3
  241. package/dist/client/AgentPanel.js.map +1 -1
  242. package/dist/client/AssistantChat.d.ts +6 -1
  243. package/dist/client/AssistantChat.d.ts.map +1 -1
  244. package/dist/client/AssistantChat.js +2 -2
  245. package/dist/client/AssistantChat.js.map +1 -1
  246. package/dist/client/CommandMenu.d.ts +17 -1
  247. package/dist/client/CommandMenu.d.ts.map +1 -1
  248. package/dist/client/CommandMenu.js +49 -13
  249. package/dist/client/CommandMenu.js.map +1 -1
  250. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  251. package/dist/client/agent-chat-adapter.js +43 -6
  252. package/dist/client/agent-chat-adapter.js.map +1 -1
  253. package/dist/client/analytics.d.ts +18 -0
  254. package/dist/client/analytics.d.ts.map +1 -1
  255. package/dist/client/analytics.js +177 -0
  256. package/dist/client/analytics.js.map +1 -1
  257. package/dist/client/changelog/Changelog.d.ts +47 -0
  258. package/dist/client/changelog/Changelog.d.ts.map +1 -0
  259. package/dist/client/changelog/Changelog.js +138 -0
  260. package/dist/client/changelog/Changelog.js.map +1 -0
  261. package/dist/client/client-surface.d.ts +17 -0
  262. package/dist/client/client-surface.d.ts.map +1 -0
  263. package/dist/client/client-surface.js +24 -0
  264. package/dist/client/client-surface.js.map +1 -0
  265. package/dist/client/composer/TiptapComposer.d.ts +26 -1
  266. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  267. package/dist/client/composer/TiptapComposer.js +27 -5
  268. package/dist/client/composer/TiptapComposer.js.map +1 -1
  269. package/dist/client/feedback-context.d.ts +3 -0
  270. package/dist/client/feedback-context.d.ts.map +1 -1
  271. package/dist/client/feedback-context.js +2 -0
  272. package/dist/client/feedback-context.js.map +1 -1
  273. package/dist/client/index.d.ts +3 -1
  274. package/dist/client/index.d.ts.map +1 -1
  275. package/dist/client/index.js +3 -1
  276. package/dist/client/index.js.map +1 -1
  277. package/dist/client/mcp-apps/McpAppRenderer.d.ts +1 -0
  278. package/dist/client/mcp-apps/McpAppRenderer.d.ts.map +1 -1
  279. package/dist/client/mcp-apps/McpAppRenderer.js +42 -1
  280. package/dist/client/mcp-apps/McpAppRenderer.js.map +1 -1
  281. package/dist/client/settings/useBuilderStatus.d.ts +2 -0
  282. package/dist/client/settings/useBuilderStatus.d.ts.map +1 -1
  283. package/dist/client/settings/useBuilderStatus.js +58 -10
  284. package/dist/client/settings/useBuilderStatus.js.map +1 -1
  285. package/dist/client/sse-event-processor.d.ts.map +1 -1
  286. package/dist/client/sse-event-processor.js +7 -1
  287. package/dist/client/sse-event-processor.js.map +1 -1
  288. package/dist/mcp/build-server.d.ts +21 -0
  289. package/dist/mcp/build-server.d.ts.map +1 -1
  290. package/dist/mcp/build-server.js +43 -1
  291. package/dist/mcp/build-server.js.map +1 -1
  292. package/dist/mcp/embed-app.d.ts.map +1 -1
  293. package/dist/mcp/embed-app.js +197 -7
  294. package/dist/mcp/embed-app.js.map +1 -1
  295. package/dist/mcp/oauth-route.d.ts.map +1 -1
  296. package/dist/mcp/oauth-route.js +95 -12
  297. package/dist/mcp/oauth-route.js.map +1 -1
  298. package/dist/server/attribution.d.ts +83 -0
  299. package/dist/server/attribution.d.ts.map +1 -0
  300. package/dist/server/attribution.js +178 -0
  301. package/dist/server/attribution.js.map +1 -0
  302. package/dist/server/auth.d.ts.map +1 -1
  303. package/dist/server/auth.js +7 -0
  304. package/dist/server/auth.js.map +1 -1
  305. package/dist/server/better-auth-instance.d.ts +9 -1
  306. package/dist/server/better-auth-instance.d.ts.map +1 -1
  307. package/dist/server/better-auth-instance.js +32 -2
  308. package/dist/server/better-auth-instance.js.map +1 -1
  309. package/dist/server/builder-browser.d.ts +4 -0
  310. package/dist/server/builder-browser.d.ts.map +1 -1
  311. package/dist/server/builder-browser.js +20 -1
  312. package/dist/server/builder-browser.js.map +1 -1
  313. package/dist/server/core-routes-plugin.d.ts +25 -0
  314. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  315. package/dist/server/core-routes-plugin.js +101 -0
  316. package/dist/server/core-routes-plugin.js.map +1 -1
  317. package/dist/server/google-oauth.d.ts.map +1 -1
  318. package/dist/server/google-oauth.js +16 -2
  319. package/dist/server/google-oauth.js.map +1 -1
  320. package/dist/server/onboarding-html.d.ts.map +1 -1
  321. package/dist/server/onboarding-html.js +35 -0
  322. package/dist/server/onboarding-html.js.map +1 -1
  323. package/dist/shared/mcp-embed-headers.js +1 -1
  324. package/dist/shared/mcp-embed-headers.js.map +1 -1
  325. package/dist/styles/agent-conversation.css +21 -0
  326. package/dist/templates/workspace-core/.agents/skills/changelog/SKILL.md +111 -0
  327. package/dist/templates/workspace-core/.agents/skills/reliable-mutations/SKILL.md +72 -0
  328. package/dist/templates/workspace-core/.agents/skills/tracking/SKILL.md +46 -14
  329. package/docs/design/durable-agent-runs.md +217 -0
  330. package/package.json +1 -1
  331. package/src/templates/workspace-core/.agents/skills/changelog/SKILL.md +111 -0
  332. package/src/templates/workspace-core/.agents/skills/reliable-mutations/SKILL.md +72 -0
  333. package/src/templates/workspace-core/.agents/skills/tracking/SKILL.md +46 -14
  334. package/corpus/templates/analytics/app/pages/About.tsx +0 -108
  335. package/corpus/templates/analytics/app/routes/about.tsx +0 -9
  336. /package/corpus/templates/analytics/app/routes/{dashboards.tsx → dashboards._index.tsx} +0 -0
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Viral attribution contract for shared/public Plan links.
3
+ *
4
+ * Public plan/recap URLs self-attribute so the signup funnel can be measured
5
+ * even when `document.referrer` is empty (desktop app, Slack, native clients,
6
+ * etc.). The framework captures first-touch from these params into a cookie and
7
+ * enriches the `signup` event; Plan's job is to (a) tag the share/public URLs it
8
+ * mints and (b) emit funnel events when a logged-out visitor views a public plan
9
+ * and clicks a sign-up CTA.
10
+ *
11
+ * Contract strings are centralized here so the minting side (share popover /
12
+ * copy-link) and the measuring side (public plan view) cannot drift apart. The
13
+ * framework also derives `plan_share` from public plan paths (`/p/`, `/plan/`,
14
+ * `/plans/`, `/recaps/`, `/share-plan/`) as a fallback when the param is lost.
15
+ *
16
+ * Privacy: `via` must be a non-PII stable id (the owner's user id), never an
17
+ * email. Omit `via` rather than leak PII into a public URL or event.
18
+ */
19
+
20
+ /** Fixed referral source for plan shares. */
21
+ export const PLAN_SHARE_REF = "plan_share";
22
+
23
+ /** Surface tag included on plan share funnel events. */
24
+ export const PLAN_SHARE_SURFACE = "plan";
25
+
26
+ /** Query param names that carry attribution. */
27
+ export const REF_PARAM = "ref";
28
+ export const VIA_PARAM = "via";
29
+
30
+ /**
31
+ * Append `ref=plan_share` (and `via=<ownerId>` when a non-PII owner id is known)
32
+ * to an absolute share/public plan URL, preserving any existing query params.
33
+ * Returns the input unchanged when it isn't a parseable absolute URL.
34
+ */
35
+ export function withPlanShareAttribution(
36
+ url: string | undefined,
37
+ ownerId?: string | null,
38
+ ): string | undefined {
39
+ if (!url) return url;
40
+ try {
41
+ const parsed = new URL(url);
42
+ parsed.searchParams.set(REF_PARAM, PLAN_SHARE_REF);
43
+ const owner = (ownerId ?? "").trim();
44
+ if (owner) parsed.searchParams.set(VIA_PARAM, owner);
45
+ return parsed.toString();
46
+ } catch {
47
+ return url;
48
+ }
49
+ }
50
+
51
+ export type ShareAttribution = {
52
+ ref: string | undefined;
53
+ via: string | undefined;
54
+ };
55
+
56
+ /**
57
+ * Read `ref`/`via` from a query string (e.g. `window.location.search`). Falls
58
+ * back to `ref=plan_share` so downstream attribution stays meaningful even when
59
+ * the visitor arrived via a link that lost the param. Never throws.
60
+ */
61
+ export function readPlanShareAttribution(search: string): ShareAttribution {
62
+ let ref: string | undefined;
63
+ let via: string | undefined;
64
+ try {
65
+ const params = new URLSearchParams(search ?? "");
66
+ ref = params.get(REF_PARAM) ?? undefined;
67
+ via = params.get(VIA_PARAM) ?? undefined;
68
+ } catch {
69
+ // Ignore malformed query strings — fall through to the default below.
70
+ }
71
+ return { ref: ref || PLAN_SHARE_REF, via: via || undefined };
72
+ }
@@ -0,0 +1,10 @@
1
+ # Changelog
2
+
3
+ All notable user-facing changes to Agent-Native Slides are documented here. Open it any
4
+ time from the command menu (Cmd+K → "What's new").
5
+
6
+ ## 2026-06-23
7
+
8
+ ### Added
9
+
10
+ - See what's new right inside Agent-Native Slides — a changelog now lives in the command menu (Cmd+K).
@@ -28,6 +28,7 @@ import { useQueryClient } from "@tanstack/react-query";
28
28
  import type { LinksFunction } from "react-router";
29
29
  import stylesheet from "./global.css?url";
30
30
  import { configureTracking } from "@agent-native/core/client";
31
+ import changelog from "../CHANGELOG.md?raw";
31
32
  import { getThemeInitScript } from "@agent-native/core/client";
32
33
  import { TAB_ID } from "@/lib/tab-id";
33
34
  configureTracking({
@@ -162,7 +163,12 @@ function AppContent() {
162
163
 
163
164
  return (
164
165
  <>
165
- <CommandMenu open={cmdkOpen} onOpenChange={setCmdkOpen}>
166
+ <CommandMenu
167
+ open={cmdkOpen}
168
+ onOpenChange={setCmdkOpen}
169
+ changelog={changelog}
170
+ changelogKey="slides"
171
+ >
166
172
  <CommandMenu.Group heading="Presentations">
167
173
  <CommandMenu.Item onSelect={() => {}}>Search decks</CommandMenu.Item>
168
174
  </CommandMenu.Group>
@@ -1,157 +1,10 @@
1
1
  # Changelog
2
2
 
3
- ## [Unreleased] - 2026-02-28
3
+ All notable user-facing changes to Agent-Native Videos are documented here. Open it any
4
+ time from the command menu (Cmd+K → "What's new").
4
5
 
5
- ### Architecture Improvements ✨
6
-
7
- - **Extracted Animation Logic to Reusable Pure Function**
8
- - Created `app/remotion/animations/useElementAnimations.ts` (202 lines)
9
- - Exported `calculateElementAnimations()` - pure function (not hook)
10
- - Removed 130 lines of animation logic from InteractiveCardGrid
11
- - Centralized all animation calculations in testable function
12
- - Can be called inside loops (no Rules of Hooks violations)
13
- - Other compositions can now reuse animation system instantly
14
- - Reduced InteractiveCardGrid from 400+ to 320 lines
15
- - Simpler and faster than hook-based approach
16
-
17
- - **Centralized Configuration Constants**
18
- - Created `app/config/constants.ts` (204 lines)
19
- - Eliminated all magic numbers across codebase
20
- - Organized by domain: ANIMATION_CONFIG, CURSOR_CONFIG, CARD_CONFIG, UI_CONFIG, etc.
21
- - Type-safe with `as const`
22
- - Well-documented with inline comments
23
-
24
- - **Code Quality Improvements**
25
- - Max function length: 87 lines → 42 lines
26
- - Animation logic now testable in isolation
27
- - Proper type guards with centralized validation
28
- - Cleaner separation of concerns
29
-
30
- **Impact**: Architecture grade improved from C+ to A-
6
+ ## 2026-06-23
31
7
 
32
8
  ### Added
33
9
 
34
- - **Color Animation Support**: Background and border color properties for cursor interactions
35
- - Added `backgroundColor` and `borderColor` to animation property options
36
- - Implemented color interpolation function for smooth color transitions
37
- - Color picker UI with native browser color input
38
- - Colors animate from each element's base color to target color (preserves multicolor designs)
39
-
40
- - **Click Animation Return-to-Hover**: Click animations now properly animate back
41
- - Implemented "there-and-back" animation (0→1→0 progress mapping)
42
- - Doubles animation duration to accommodate forward and return transitions
43
- - Smooth easing applied to both directions
44
-
45
- - **Timeline Visual Enhancements**
46
- - Changed cursor keyframe click indicator dot from grey/white to yellow (#facc15)
47
- - Improved visual distinction for click events in timeline
48
-
49
- ### Changed
50
-
51
- - **Playback Speed System**: Simplified from adaptive to manual control
52
- - Removed adaptive playback rate compensation based on FPS measurement
53
- - Added manual playback speed dropdown (0.25× to 2×)
54
- - Moved speed selector to VideoPlayer bottom controls (next to Frame counter)
55
- - Removed playback speed from Timeline component
56
-
57
- - **Composition Creation Workflow**: Restored AI-powered generation
58
- - Rewrote `NewCompositionPopover` with full agent chat integration
59
- - Added file attachment support (images, videos, SVGs via data URLs)
60
- - Implemented postMessage API for parent window communication
61
- - Added event listener for `builder.agentChat.chatRunning` completion detection
62
- - Slug-based URL generation with conflict resolution (`/c/comp-title`, `/c/comp-title-2`)
63
- - Navigate to `/c/new` on submission for AI generation
64
-
65
- - **Properties Panel Improvements**
66
- - Removed composition name input from Properties > Properties section (non-editable)
67
- - Hidden "x" unit label to avoid confusion with delete button (kept "px", "deg", etc.)
68
- - Moved "Add Property" section above property list (below Motion Curve)
69
- - Swapped + button to left side of dropdown
70
- - Added Enter key support to add properties from dropdown
71
- - Changed focus ring color to red-400 for consistency
72
- - Removed hex code display next to color picker (visible in native picker)
73
-
74
- - **Animation System Architecture**
75
- - Updated `AnimationKeyframe.value` type to support `number | string` for colors
76
- - Color animations only apply when `hoverProgress > 0` or `clickProgress > 0`
77
- - Each element's base color extracted and used as animation starting point
78
- - Hover and click animations support mixed numeric and color properties
79
-
80
- ### Fixed
81
-
82
- - Browser cache issues causing stale code errors
83
- - Fixed `ReferenceError: adaptivePlaybackRate is not defined`
84
- - Fixed `ReferenceError: onCreateComposition is not defined`
85
- - Solution: Dev server restart to clear Vite cache
86
-
87
- - Color animation not preserving element colors
88
- - Cards were all turning blue when backgroundColor animation added
89
- - Fixed by interpolating from each card's unique base color instead of fixed start color
90
- - Only applies color animations during active hover/click (preserves idle state)
91
-
92
- - Click animations jumping back to hover state
93
- - Animations were not tweening back, causing abrupt transitions
94
- - Implemented smooth 0→1→0 progress curve with doubled duration
95
-
96
- ### Technical Details
97
-
98
- #### Color Interpolation Implementation
99
-
100
- ```typescript
101
- // New function in elementAnimations.ts
102
- export function interpolateColor(
103
- color1: string,
104
- color2: string,
105
- progress: number,
106
- ): string;
107
- ```
108
-
109
- - Parses hex colors to RGB components
110
- - Linear interpolation per channel
111
- - Returns hex color string
112
-
113
- #### Animation Progress Mapping
114
-
115
- ```typescript
116
- // Click animation: 0→1→0 curve
117
- const rawProgress = framesSinceClick / clickDuration; // 0→2
118
- clickProgress = rawProgress <= 1 ? rawProgress : 2 - rawProgress; // 0→1→0
119
- ```
120
-
121
- #### Files Modified
122
-
123
- - `app/components/VideoPlayer.tsx` - Simplified playback rate
124
- - `app/components/Timeline.tsx` - Removed playback UI, changed dot color
125
- - `app/pages/CompositionView.tsx` - Playback rate state management
126
- - `app/components/NewCompositionPopover.tsx` - Complete rewrite for agent chat integration
127
- - `app/components/Sidebar.tsx` - Updated props, removed name input
128
- - `app/components/PropsEditor.tsx` - Removed composition name field
129
- - `app/components/CurrentElementPanel.tsx` - Color properties, UI improvements
130
- - `app/types/elementAnimations.ts` - Color support, interpolation
131
- - `app/remotion/compositions/InteractiveCardGrid.tsx` - Color animation logic
132
-
133
- #### Files Created
134
-
135
- - `app/remotion/animations/useElementAnimations.ts` (209 lines) - **Reusable animation hook**
136
- - `app/config/constants.ts` (204 lines) - **Centralized configuration**
137
- - `app/utils/compositionHelpers.ts` (378 lines) - Helper functions library
138
- - `app/utils/debug.ts` (104 lines) - Production-safe logging utility
139
- - `scripts/create-composition.ts` (127 lines) - Example composition script
140
- - `COMPOSITION_GUIDE.md` (787 lines) - Comprehensive API reference
141
- - `QUICK_START.md` (498 lines) - Beginner-friendly guide
142
- - `README.md` (209 lines) - Project overview
143
- - `CHANGELOG.md`, `CODE_REVIEW.md`, `TODO.md`, `PR_DESCRIPTION.md`, `SESSION_SUMMARY.md`
144
-
145
- ### Developer Experience
146
-
147
- - Native `<select>` supports type-to-search for properties
148
- - Arrow keys navigate property options
149
- - Enter key adds selected property
150
- - Color picker shows hex values natively
151
- - Improved visual hierarchy in properties panel
152
-
153
- ---
154
-
155
- ## Notes
156
-
157
- All changes maintain backward compatibility with existing compositions. Color animation feature is additive and optional.
10
+ - See what's new right inside Agent-Native Videos a changelog now lives in the command menu (Cmd+K).
@@ -20,6 +20,7 @@ import {
20
20
  configureTracking,
21
21
  getThemeInitScript,
22
22
  } from "@agent-native/core/client";
23
+ import changelog from "../CHANGELOG.md?raw";
23
24
  configureTracking({
24
25
  getDefaultProps: (_name, properties) => ({
25
26
  ...properties,
@@ -83,7 +84,12 @@ function AppContent() {
83
84
 
84
85
  return (
85
86
  <>
86
- <CommandMenu open={cmdkOpen} onOpenChange={setCmdkOpen}>
87
+ <CommandMenu
88
+ open={cmdkOpen}
89
+ onOpenChange={setCmdkOpen}
90
+ changelog={changelog}
91
+ changelogKey="videos"
92
+ >
87
93
  <CommandMenu.Group heading="Videos">
88
94
  <CommandMenu.Item onSelect={() => {}}>
89
95
  Search compositions
package/dist/action.js CHANGED
@@ -332,6 +332,92 @@ function zodDefToJsonSchema(def) {
332
332
  // ---------------------------------------------------------------------------
333
333
  // Runtime validation wrapper
334
334
  // ---------------------------------------------------------------------------
335
+ const NO_COERCE = Symbol("no-coerce");
336
+ /**
337
+ * Coerce a single stringified value to one of the JSON-schema types the field
338
+ * expects. Returns NO_COERCE when nothing safe applies, so the caller leaves
339
+ * the original value untouched and the normal validation error still surfaces.
340
+ */
341
+ function coerceStringToSchemaType(raw, types) {
342
+ const trimmed = raw.trim();
343
+ if (types.includes("boolean")) {
344
+ if (trimmed === "true")
345
+ return true;
346
+ if (trimmed === "false")
347
+ return false;
348
+ }
349
+ if ((types.includes("array") &&
350
+ trimmed.startsWith("[") &&
351
+ trimmed.endsWith("]")) ||
352
+ (types.includes("object") &&
353
+ trimmed.startsWith("{") &&
354
+ trimmed.endsWith("}"))) {
355
+ try {
356
+ const parsed = JSON.parse(trimmed);
357
+ if (types.includes("array") && Array.isArray(parsed))
358
+ return parsed;
359
+ if (types.includes("object") &&
360
+ parsed &&
361
+ typeof parsed === "object" &&
362
+ !Array.isArray(parsed)) {
363
+ return parsed;
364
+ }
365
+ }
366
+ catch {
367
+ // fall through — leave the original so validation reports the real error
368
+ }
369
+ }
370
+ if ((types.includes("number") || types.includes("integer")) &&
371
+ trimmed !== "" &&
372
+ Number.isFinite(Number(trimmed))) {
373
+ const n = Number(trimmed);
374
+ if (types.includes("number") || Number.isInteger(n))
375
+ return n;
376
+ }
377
+ return NO_COERCE;
378
+ }
379
+ /**
380
+ * Defensively coerce gateway-stringified tool arguments to the types the schema
381
+ * expects. Some model gateways (notably Builder's Gemini-backed gateway) hand
382
+ * back structured tool-call arguments as JSON strings — an array param arrives
383
+ * as `"[{...}]"`, a boolean as `"true"`. Standard Schema (zod) `validate` does
384
+ * not coerce, so these fail validation and the agent thrashes retrying shapes
385
+ * (and can hang). We only touch a string value when the schema expects a
386
+ * non-string type and the string parses cleanly to it; anything ambiguous
387
+ * (schema also allows string) or unparseable is left as-is. Operates on
388
+ * top-level properties only — once an array/object param is parsed, its nested
389
+ * members are already native and validate normally.
390
+ */
391
+ function coerceGatewayStringifiedArgs(args, parameters) {
392
+ const properties = parameters?.properties;
393
+ if (!properties)
394
+ return args;
395
+ if (!args || typeof args !== "object" || Array.isArray(args))
396
+ return args;
397
+ let out = null;
398
+ for (const [key, raw] of Object.entries(args)) {
399
+ if (typeof raw !== "string")
400
+ continue;
401
+ const spec = properties[key];
402
+ if (!spec)
403
+ continue;
404
+ const types = Array.isArray(spec.type)
405
+ ? spec.type
406
+ : spec.type
407
+ ? [spec.type]
408
+ : [];
409
+ // No declared type, or the field legitimately accepts a string → leave it.
410
+ if (types.length === 0 || types.includes("string"))
411
+ continue;
412
+ const coerced = coerceStringToSchemaType(raw, types);
413
+ if (coerced === NO_COERCE)
414
+ continue;
415
+ if (!out)
416
+ out = { ...args };
417
+ out[key] = coerced;
418
+ }
419
+ return out ?? args;
420
+ }
335
421
  /**
336
422
  * Wrap an action's run function with schema validation.
337
423
  * Invalid inputs get a clear error message (including what was actually passed)
@@ -339,6 +425,7 @@ function zodDefToJsonSchema(def) {
339
425
  */
340
426
  function wrapWithValidation(schema, run, toolParameters) {
341
427
  return async (args, ctx) => {
428
+ args = coerceGatewayStringifiedArgs(args, toolParameters);
342
429
  const result = await schema["~standard"].validate(args);
343
430
  if (result.issues) {
344
431
  // Split issues into "missing required field" vs other validation errors