@agent-native/core-corpus 0.221.0-same-host-mcp-20261027-20261027081850 → 0.221.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (590) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/templates/analytics/.agents/skills/ab-readout/SKILL.md +19 -0
  3. package/corpus/templates/analytics/.agents/skills/feedback-ingest/SKILL.md +22 -0
  4. package/corpus/templates/analytics/.agents/skills/first-touch-radar/SKILL.md +51 -0
  5. package/corpus/templates/analytics/.agents/skills/fix-brief/SKILL.md +19 -0
  6. package/corpus/templates/analytics/.agents/skills/metric-watch/SKILL.md +29 -0
  7. package/corpus/templates/analytics/.agents/skills/replay-triage/SKILL.md +19 -0
  8. package/corpus/templates/analytics/.agents/skills/storing-data/SKILL.md +18 -0
  9. package/corpus/templates/analytics/CHANGELOG.md +38 -0
  10. package/corpus/templates/analytics/actions/set-index-schedule.ts +10 -1
  11. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +36 -10
  12. package/corpus/templates/analytics/changelog/2026-10-22-approval-links-from-a-connected-agent-such-as-claude-code-no.md +6 -0
  13. package/corpus/templates/analytics/changelog/2026-10-23-external-agents-need-approval-before-changing-recurring-inde.md +6 -0
  14. package/corpus/templates/analytics/package.json +5 -0
  15. package/corpus/templates/analytics/scripts/radar/ab.ts +688 -0
  16. package/corpus/templates/analytics/scripts/radar/campaign.ts +318 -0
  17. package/corpus/templates/analytics/scripts/radar/checks.ts +325 -0
  18. package/corpus/templates/analytics/scripts/radar/event-labels.ts +39 -0
  19. package/corpus/templates/analytics/scripts/radar/linked-events-sql.ts +197 -0
  20. package/corpus/templates/analytics/scripts/radar/query.ts +1630 -0
  21. package/corpus/templates/analytics/scripts/radar/report.ts +674 -0
  22. package/corpus/templates/analytics/scripts/radar/sql.ts +873 -0
  23. package/corpus/templates/analytics/scripts/radar/triage.ts +301 -0
  24. package/corpus/templates/analytics/scripts/radar/warehouse-sql.ts +474 -0
  25. package/corpus/templates/analytics/scripts/radar/watch.ts +1584 -0
  26. package/corpus/templates/analytics/server/plugins/agent-chat.ts +1 -1
  27. package/corpus/templates/analytics/shared/table-columns.ts +129 -21
  28. package/corpus/templates/assets/.agents/skills/storing-data/SKILL.md +18 -0
  29. package/corpus/templates/assets/CHANGELOG.md +12 -0
  30. package/corpus/templates/assets/changelog/2026-10-22-approval-links-from-a-connected-agent-such-as-claude-code-no.md +6 -0
  31. package/corpus/templates/assets/server/plugins/agent-chat.ts +1 -0
  32. package/corpus/templates/brain/.agents/skills/storing-data/SKILL.md +18 -0
  33. package/corpus/templates/brain/server/lib/connectors.ts +140 -89
  34. package/corpus/templates/brain/server/plugins/agent-chat.ts +1 -0
  35. package/corpus/templates/brain/server/plugins/brain-jobs.ts +10 -1
  36. package/corpus/templates/calendar/.agents/skills/storing-data/SKILL.md +18 -0
  37. package/corpus/templates/calendar/CHANGELOG.md +24 -0
  38. package/corpus/templates/calendar/actions/get-event-rules-status.ts +17 -6
  39. package/corpus/templates/calendar/actions/update-settings.ts +11 -10
  40. package/corpus/templates/calendar/app/i18n/en-US.ts +5 -4
  41. package/corpus/templates/calendar/app/pages/settings/CalendarEventRules.tsx +9 -5
  42. package/corpus/templates/calendar/changelog/2026-10-22-approval-links-from-a-connected-agent-such-as-claude-code-no.md +6 -0
  43. package/corpus/templates/calendar/changelog/2026-10-26-calendar-rules-can-use-openai.md +6 -0
  44. package/corpus/templates/calendar/changelog/2026-10-27-calendar-keeps-successful-invitation-rules-applied-while-ano.md +6 -0
  45. package/corpus/templates/calendar/server/plugins/agent-chat.ts +1 -0
  46. package/corpus/templates/calendar/server/plugins/event-rules.ts +169 -90
  47. package/corpus/templates/chat/.agents/skills/storing-data/SKILL.md +18 -0
  48. package/corpus/templates/chat/app/components/chat/ChatRouteContent.tsx +18 -4
  49. package/corpus/templates/chat/app/components/home/HomePage.tsx +28 -69
  50. package/corpus/templates/chat/app/components/layout/Layout.tsx +46 -14
  51. package/corpus/templates/chat/app/i18n/en-US.ts +0 -4
  52. package/corpus/templates/chat/app/lib/chat-paths.ts +36 -13
  53. package/corpus/templates/chat/package.json +1 -0
  54. package/corpus/templates/chat/server/plugins/agent-chat.ts +2 -1
  55. package/corpus/templates/clips/.agents/skills/meetings/SKILL.md +2 -0
  56. package/corpus/templates/clips/.agents/skills/video-sharing/SKILL.md +18 -0
  57. package/corpus/templates/clips/CHANGELOG.md +62 -70
  58. package/corpus/templates/clips/actions/add-comment.ts +2 -11
  59. package/corpus/templates/clips/actions/add-recording-to-space.ts +4 -1
  60. package/corpus/templates/clips/actions/archive-recording.ts +4 -1
  61. package/corpus/templates/clips/actions/burn-recording-redactions.ts +48 -15
  62. package/corpus/templates/clips/actions/clear-edits.ts +4 -1
  63. package/corpus/templates/clips/actions/complete-workflow.ts +4 -1
  64. package/corpus/templates/clips/actions/create-cta.ts +4 -1
  65. package/corpus/templates/clips/actions/create-recording-upload.ts +20 -69
  66. package/corpus/templates/clips/actions/delete-agent-recording-if-unpromoted.ts +2 -1
  67. package/corpus/templates/clips/actions/delete-comment.ts +14 -2
  68. package/corpus/templates/clips/actions/delete-cta.ts +4 -1
  69. package/corpus/templates/clips/actions/delete-recording-permanent.ts +39 -2
  70. package/corpus/templates/clips/actions/export-insights-csv.ts +9 -2
  71. package/corpus/templates/clips/actions/export-to-brain.ts +3 -4
  72. package/corpus/templates/clips/actions/finalize-meeting.ts +45 -24
  73. package/corpus/templates/clips/actions/generate-workflow.ts +8 -2
  74. package/corpus/templates/clips/actions/get-meeting-capture-state.ts +30 -0
  75. package/corpus/templates/clips/actions/get-meeting.ts +6 -16
  76. package/corpus/templates/clips/actions/get-organization-insights.ts +8 -1
  77. package/corpus/templates/clips/actions/get-recording-app-activity.ts +4 -1
  78. package/corpus/templates/clips/actions/get-recording-insights.ts +4 -1
  79. package/corpus/templates/clips/actions/get-recording-player-data.ts +21 -8
  80. package/corpus/templates/clips/actions/import-transcript.ts +13 -2
  81. package/corpus/templates/clips/actions/lib/ai-request-status.ts +5 -0
  82. package/corpus/templates/clips/actions/lib/save-chapters.ts +4 -1
  83. package/corpus/templates/clips/actions/list-ai-requests.ts +23 -2
  84. package/corpus/templates/clips/actions/list-clip-views.ts +4 -1
  85. package/corpus/templates/clips/actions/list-comments.ts +2 -11
  86. package/corpus/templates/clips/actions/list-notifications.ts +29 -13
  87. package/corpus/templates/clips/actions/list-organization-state.ts +5 -0
  88. package/corpus/templates/clips/actions/list-recordings.ts +38 -5
  89. package/corpus/templates/clips/actions/list-transactional-email-ai-requests.ts +12 -1
  90. package/corpus/templates/clips/actions/list-viewers.ts +4 -1
  91. package/corpus/templates/clips/actions/move-recording.ts +2 -1
  92. package/corpus/templates/clips/actions/navigate.ts +1 -0
  93. package/corpus/templates/clips/actions/react-to-comment.ts +2 -2
  94. package/corpus/templates/clips/actions/react-to-recording.ts +4 -1
  95. package/corpus/templates/clips/actions/reconcile-workflow-generation.ts +318 -21
  96. package/corpus/templates/clips/actions/record-first-run-builder-credits-v2-exposure.ts +63 -0
  97. package/corpus/templates/clips/actions/regenerate-chapters.ts +4 -1
  98. package/corpus/templates/clips/actions/regenerate-summary.ts +8 -1
  99. package/corpus/templates/clips/actions/regenerate-title.ts +12 -2
  100. package/corpus/templates/clips/actions/remove-filler-words.ts +4 -1
  101. package/corpus/templates/clips/actions/remove-silences.ts +4 -1
  102. package/corpus/templates/clips/actions/reply-to-comment.ts +5 -64
  103. package/corpus/templates/clips/actions/request-transcript.ts +19 -5
  104. package/corpus/templates/clips/actions/resolve-comment.ts +2 -14
  105. package/corpus/templates/clips/actions/restore-recording.ts +4 -1
  106. package/corpus/templates/clips/actions/restore-transcript-version.ts +14 -2
  107. package/corpus/templates/clips/actions/save-browser-diagnostics.ts +4 -1
  108. package/corpus/templates/clips/actions/save-browser-transcript.ts +14 -2
  109. package/corpus/templates/clips/actions/save-bug-report-context.ts +4 -1
  110. package/corpus/templates/clips/actions/save-recording-app-activity.ts +4 -1
  111. package/corpus/templates/clips/actions/save-screenshot-edits.ts +28 -15
  112. package/corpus/templates/clips/actions/search-meetings.ts +8 -2
  113. package/corpus/templates/clips/actions/search-recordings.ts +29 -7
  114. package/corpus/templates/clips/actions/set-recording-overlays.ts +4 -1
  115. package/corpus/templates/clips/actions/set-recording-trims.ts +4 -1
  116. package/corpus/templates/clips/actions/set-thumbnail.ts +12 -1
  117. package/corpus/templates/clips/actions/split-recording.ts +4 -1
  118. package/corpus/templates/clips/actions/start-meeting-recording.ts +23 -4
  119. package/corpus/templates/clips/actions/stop-meeting-recording.ts +1 -0
  120. package/corpus/templates/clips/actions/tag-recording.ts +4 -1
  121. package/corpus/templates/clips/actions/trash-recording.ts +4 -1
  122. package/corpus/templates/clips/actions/trim-recording.ts +4 -1
  123. package/corpus/templates/clips/actions/undo-edit.ts +4 -1
  124. package/corpus/templates/clips/actions/update-comment.ts +3 -15
  125. package/corpus/templates/clips/actions/update-cta.ts +4 -1
  126. package/corpus/templates/clips/actions/update-recording.ts +20 -3
  127. package/corpus/templates/clips/actions/view-screen.ts +62 -29
  128. package/corpus/templates/clips/app/components/library/empty-state.tsx +4 -0
  129. package/corpus/templates/clips/app/components/library/library-grid.tsx +16 -2
  130. package/corpus/templates/clips/app/components/library/library-layout.tsx +20 -1
  131. package/corpus/templates/clips/app/components/library/recording-card.tsx +24 -0
  132. package/corpus/templates/clips/app/components/player/comments-panel.tsx +25 -12
  133. package/corpus/templates/clips/app/hooks/use-auto-title.ts +29 -18
  134. package/corpus/templates/clips/app/hooks/use-library.ts +10 -1
  135. package/corpus/templates/clips/app/hooks/use-navigation-state.ts +4 -0
  136. package/corpus/templates/clips/app/i18n/en-US.ts +11 -0
  137. package/corpus/templates/clips/app/routes/_app.from-content.tsx +19 -0
  138. package/corpus/templates/clips/app/routes/_app.r.$recordingId.tsx +469 -33
  139. package/corpus/templates/clips/app/routes/share.$shareId.tsx +13 -29
  140. package/corpus/templates/clips/app/routes/share.meeting.$meetingId.tsx +6 -18
  141. package/corpus/templates/clips/changelog/2026-10-21-meeting-notes-check-sooner-when-a-meeting-ends-on-the-web-an.md +6 -0
  142. package/corpus/templates/clips/changelog/2026-10-22-approval-links-from-a-connected-agent-such-as-claude-code-no.md +6 -0
  143. package/corpus/templates/clips/changelog/2026-10-22-recording-sharing-and-discussion-settings-apply-consistently.md +6 -0
  144. package/corpus/templates/clips/changelog/2026-10-22-turning-comments-off-hides-saved-comments-from-viewers-while.md +6 -0
  145. package/corpus/templates/clips/changelog/2026-10-23-video-playback-respects-clip-availability.md +6 -0
  146. package/corpus/templates/clips/changelog/2026-10-26-agents-reading-a-clip-now-get-its-recommended-frames-from-st.md +6 -0
  147. package/corpus/templates/clips/changelog/2026-10-26-opening-a-private-clip-while-signed-out-goes-straight-to-the.md +6 -0
  148. package/corpus/templates/clips/changelog/2026-10-26-recording-activity-notifications-follow-trash-visibility.md +6 -0
  149. package/corpus/templates/clips/changelog/2026-10-26-recording-search-expiry.md +6 -0
  150. package/corpus/templates/clips/changelog/2026-10-27-first-run-setup-makes-free-credits-the-primary-path-while-ke.md +6 -0
  151. package/corpus/templates/clips/changelog/2026-10-27-meeting-transcripts-follow-their-sharing-settings-and-the-li.md +6 -0
  152. package/corpus/templates/clips/changelog/2026-10-27-the-rewind-consent-dialog-stays-visible-on-shorter-screens.md +6 -0
  153. package/corpus/templates/clips/changelog/2026-10-27-thumbnails-respect-attached-footage-availability.md +6 -0
  154. package/corpus/templates/clips/changelog/2026-10-27-workflow-generation-controls.md +6 -0
  155. package/corpus/templates/clips/changelog/2026-10-27-workflow-generation-only-reports-failure-after-its-run-ends-.md +6 -0
  156. package/corpus/templates/clips/changelog/2026-10-27-workflow-generation-progress-and-cancellation-stay-tied-to-t.md +6 -0
  157. package/corpus/templates/clips/desktop/src/components/ui/alert-dialog.tsx +1 -1
  158. package/corpus/templates/clips/desktop/src/hooks/useMeetingTranscription.ts +125 -18
  159. package/corpus/templates/clips/desktop/src/styles.css +3 -0
  160. package/corpus/templates/clips/server/db/index.ts +16 -1
  161. package/corpus/templates/clips/server/db/schema.ts +77 -0
  162. package/corpus/templates/clips/server/jobs/transactional-emails.ts +25 -3
  163. package/corpus/templates/clips/server/lib/activity-notifications.ts +3 -0
  164. package/corpus/templates/clips/server/lib/agent-frame-store.ts +650 -0
  165. package/corpus/templates/clips/server/lib/comment-access.ts +47 -0
  166. package/corpus/templates/clips/server/lib/content-clip-bindings.ts +50 -0
  167. package/corpus/templates/clips/server/lib/content-clip-peer.ts +778 -0
  168. package/corpus/templates/clips/server/lib/content-clip-uploads.ts +977 -0
  169. package/corpus/templates/clips/server/lib/content-doc-grant.ts +50 -0
  170. package/corpus/templates/clips/server/lib/content-peer-secret.ts +56 -0
  171. package/corpus/templates/clips/server/lib/content-playback-grant.ts +183 -0
  172. package/corpus/templates/clips/server/lib/content-uploads.ts +118 -0
  173. package/corpus/templates/clips/server/lib/final-chunk-claim.ts +276 -0
  174. package/corpus/templates/clips/server/lib/meeting-recording-access.ts +130 -0
  175. package/corpus/templates/clips/server/lib/post-finalize-dispatch.ts +19 -6
  176. package/corpus/templates/clips/server/lib/public-agent-context.ts +15 -12
  177. package/corpus/templates/clips/server/lib/recording-expiry-query.ts +27 -0
  178. package/corpus/templates/clips/server/lib/recording-leases.ts +27 -0
  179. package/corpus/templates/clips/server/lib/recording-page-access.ts +53 -5
  180. package/corpus/templates/clips/server/lib/recording-read-access.ts +34 -0
  181. package/corpus/templates/clips/server/lib/recording-upload-start.ts +141 -0
  182. package/corpus/templates/clips/server/lib/recording-upload-ticket.ts +96 -18
  183. package/corpus/templates/clips/server/lib/slack-unfurls.ts +2 -7
  184. package/corpus/templates/clips/server/middleware/auth.ts +3 -1
  185. package/corpus/templates/clips/server/plugins/agent-chat.ts +1 -0
  186. package/corpus/templates/clips/server/plugins/auth.ts +11 -0
  187. package/corpus/templates/clips/server/plugins/db.ts +64 -0
  188. package/corpus/templates/clips/server/routes/api/_agent-native-background/post-finalize-worker.post.ts +9 -2
  189. package/corpus/templates/clips/server/routes/api/agent-context.json.get.ts +7 -2
  190. package/corpus/templates/clips/server/routes/api/agent-frame.jpg.get.ts +45 -18
  191. package/corpus/templates/clips/server/routes/api/content-clips/[recordingId]/comments.get.ts +6 -0
  192. package/corpus/templates/clips/server/routes/api/content-clips/[recordingId]/comments.post.ts +6 -0
  193. package/corpus/templates/clips/server/routes/api/content-clips/[recordingId]/playback.get.ts +6 -0
  194. package/corpus/templates/clips/server/routes/api/content-clips/upload-status.get.ts +6 -0
  195. package/corpus/templates/clips/server/routes/api/content-clips/uploads.post.ts +6 -0
  196. package/corpus/templates/clips/server/routes/api/public-meeting.get.ts +8 -20
  197. package/corpus/templates/clips/server/routes/api/public-recording.get.ts +20 -10
  198. package/corpus/templates/clips/server/routes/api/thumbnail/[recordingId].get.ts +60 -16
  199. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/abort.post.ts +27 -1
  200. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +6 -0
  201. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/content-cancel.post.ts +6 -0
  202. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/content-chunk.post.ts +6 -0
  203. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/resume.get.ts +2 -1
  204. package/corpus/templates/clips/server/routes/api/video/[recordingId].get.ts +70 -18
  205. package/corpus/templates/clips/shared/comment-access.ts +6 -0
  206. package/corpus/templates/clips/shared/content-clip-contract.ts +219 -0
  207. package/corpus/templates/clips/shared/feature-flags.ts +2 -0
  208. package/corpus/templates/clips/shared/workflow.ts +124 -3
  209. package/corpus/templates/content/.agents/skills/document-editing/SKILL.md +21 -0
  210. package/corpus/templates/content/.agents/skills/document-editing/references/document-behavior.md +36 -0
  211. package/corpus/templates/content/.agents/skills/storing-data/SKILL.md +18 -0
  212. package/corpus/templates/content/CHANGELOG.md +70 -0
  213. package/corpus/templates/content/actions/_builder-cms-read-client.ts +42 -13
  214. package/corpus/templates/content/actions/_builder-cms-source-adapter.ts +73 -0
  215. package/corpus/templates/content/actions/_builder-cms-unpublished-changes.ts +632 -0
  216. package/corpus/templates/content/actions/_builder-cms-write-adapter.ts +198 -19
  217. package/corpus/templates/content/actions/_builder-cms-write-settings.ts +2 -2
  218. package/corpus/templates/content/actions/_builder-entry-status.ts +263 -0
  219. package/corpus/templates/content/actions/_builder-status-property.ts +402 -0
  220. package/corpus/templates/content/actions/_clip-embed-access.ts +189 -0
  221. package/corpus/templates/content/actions/_clip-upload.ts +59 -0
  222. package/corpus/templates/content/actions/_content-webhooks.ts +1196 -0
  223. package/corpus/templates/content/actions/_database-row-mutation.ts +205 -2
  224. package/corpus/templates/content/actions/_database-setup-discovery.ts +7 -5
  225. package/corpus/templates/content/actions/_database-source-utils.ts +1791 -583
  226. package/corpus/templates/content/actions/_database-utils.ts +31 -1
  227. package/corpus/templates/content/actions/_property-generations.ts +403 -0
  228. package/corpus/templates/content/actions/_property-utils.ts +16 -3
  229. package/corpus/templates/content/actions/add-comment.ts +22 -0
  230. package/corpus/templates/content/actions/apply-comment-ai-request.ts +28 -0
  231. package/corpus/templates/content/actions/create-clip-upload.ts +177 -0
  232. package/corpus/templates/content/actions/create-content-webhook.ts +231 -0
  233. package/corpus/templates/content/actions/delete-content-webhook.ts +59 -0
  234. package/corpus/templates/content/actions/delete-document-property.ts +6 -0
  235. package/corpus/templates/content/actions/delete-document.ts +25 -0
  236. package/corpus/templates/content/actions/disconnect-content-database-source.ts +16 -2
  237. package/corpus/templates/content/actions/duplicate-database-item.ts +10 -6
  238. package/corpus/templates/content/actions/duplicate-database-items.ts +2 -1
  239. package/corpus/templates/content/actions/duplicate-page.ts +57 -9
  240. package/corpus/templates/content/actions/execute-builder-source-batch.ts +15 -0
  241. package/corpus/templates/content/actions/execute-builder-source-execution.ts +413 -33
  242. package/corpus/templates/content/actions/get-clip-playback.ts +74 -0
  243. package/corpus/templates/content/actions/get-clip-upload-status.ts +49 -0
  244. package/corpus/templates/content/actions/get-clips-links.ts +25 -0
  245. package/corpus/templates/content/actions/get-document.ts +17 -0
  246. package/corpus/templates/content/actions/list-clip-comments.ts +91 -0
  247. package/corpus/templates/content/actions/list-content-webhooks.ts +136 -0
  248. package/corpus/templates/content/actions/list-document-properties.ts +30 -2
  249. package/corpus/templates/content/actions/materialize-builder-required-fields.ts +8 -0
  250. package/corpus/templates/content/actions/migrate-content-database-rows.ts +15 -0
  251. package/corpus/templates/content/actions/patch-database-items.ts +4 -1
  252. package/corpus/templates/content/actions/prepare-builder-source-execution.ts +3 -0
  253. package/corpus/templates/content/actions/prepare-builder-source-review.ts +110 -52
  254. package/corpus/templates/content/actions/review-content-database-source-change-set.ts +90 -35
  255. package/corpus/templates/content/actions/set-builder-entry-status.ts +199 -0
  256. package/corpus/templates/content/actions/set-content-database-source-write-mode.ts +8 -0
  257. package/corpus/templates/content/actions/set-document-property.ts +128 -15
  258. package/corpus/templates/content/actions/stage-builder-source-bulk-update.ts +400 -50
  259. package/corpus/templates/content/actions/update-comment.ts +48 -11
  260. package/corpus/templates/content/actions/update-database-item.ts +6 -1
  261. package/corpus/templates/content/actions/upsert-database-item-by-key.ts +4 -1
  262. package/corpus/templates/content/actions/view-screen.ts +49 -0
  263. package/corpus/templates/content/app/blocks/contentBlockRegistry.tsx +2 -0
  264. package/corpus/templates/content/app/blocks/publicBlockRegistry.ts +11 -0
  265. package/corpus/templates/content/app/clip-embed-messages.ts +881 -0
  266. package/corpus/templates/content/app/components/editor/BlockActionsMenu.tsx +518 -74
  267. package/corpus/templates/content/app/components/editor/BubbleToolbar.tsx +37 -25
  268. package/corpus/templates/content/app/components/editor/ColorSubmenu.tsx +76 -32
  269. package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +10 -3
  270. package/corpus/templates/content/app/components/editor/DocumentProperties.tsx +111 -2
  271. package/corpus/templates/content/app/components/editor/VisualEditor.tsx +90 -7
  272. package/corpus/templates/content/app/components/editor/block-actions.ts +196 -0
  273. package/corpus/templates/content/app/components/editor/clip-embed/ClipEmbedBlock.tsx +545 -0
  274. package/corpus/templates/content/app/components/editor/clip-embed/ClipPlayer.tsx +171 -0
  275. package/corpus/templates/content/app/components/editor/clip-embed/ClipUploadGate.tsx +552 -0
  276. package/corpus/templates/content/app/components/editor/clip-embed/clip-embed-content.ts +28 -0
  277. package/corpus/templates/content/app/components/editor/clip-embed/clip-media.ts +117 -0
  278. package/corpus/templates/content/app/components/editor/clip-embed/clip-upload-notices.ts +61 -0
  279. package/corpus/templates/content/app/components/editor/clip-embed/clip-uploads.ts +611 -0
  280. package/corpus/templates/content/app/components/editor/clip-embed/comment-preview.tsx +61 -0
  281. package/corpus/templates/content/app/components/editor/clip-embed/player-controls.tsx +288 -0
  282. package/corpus/templates/content/app/components/editor/clip-embed/scrubber-position.ts +93 -0
  283. package/corpus/templates/content/app/components/editor/clip-embed/scrubber.tsx +346 -0
  284. package/corpus/templates/content/app/components/editor/clip-embed/use-clip-playback.ts +363 -0
  285. package/corpus/templates/content/app/components/editor/clip-embed/use-clips-links.ts +45 -0
  286. package/corpus/templates/content/app/components/editor/comment-anchors.ts +18 -3
  287. package/corpus/templates/content/app/components/editor/content-selection.ts +41 -0
  288. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +148 -66
  289. package/corpus/templates/content/app/components/editor/database/settings.tsx +1 -0
  290. package/corpus/templates/content/app/components/editor/database-sources/BuilderSourceReviewDialog.tsx +167 -47
  291. package/corpus/templates/content/app/components/editor/extensions/NotionFidelity.ts +5 -0
  292. package/corpus/templates/content/app/components/editor/extensions/VideoBlock.tsx +179 -71
  293. package/corpus/templates/content/app/components/editor/extensions/VideoLinkForm.tsx +99 -0
  294. package/corpus/templates/content/app/components/editor/extensions/registryBlocks.ts +48 -7
  295. package/corpus/templates/content/app/components/editor/extensions/video-link-probe.ts +29 -0
  296. package/corpus/templates/content/app/components/editor/registrySlashItems.ts +1 -0
  297. package/corpus/templates/content/app/components/ui/slider.tsx +1 -0
  298. package/corpus/templates/content/app/global.css +7 -0
  299. package/corpus/templates/content/app/hooks/use-document-properties.ts +59 -0
  300. package/corpus/templates/content/app/hooks/use-documents.ts +3 -0
  301. package/corpus/templates/content/app/i18n-data.ts +50 -1
  302. package/corpus/templates/content/app/lib/document-read-failures.ts +55 -0
  303. package/corpus/templates/content/app/routes/p.$id.tsx +148 -34
  304. package/corpus/templates/content/changelog/2026-10-22-a-comment-on-the-start-of-a-block-no-longer-highlights-block.md +6 -0
  305. package/corpus/templates/content/changelog/2026-10-22-approval-links-from-a-connected-agent-such-as-claude-code-no.md +6 -0
  306. package/corpus/templates/content/changelog/2026-10-22-saving-a-builder-entry-from-content-no-longer-snaps-back-on-.md +6 -0
  307. package/corpus/templates/content/changelog/2026-10-22-the-block-menu-can-turn-a-block-into-another-kind-colour-it-.md +6 -0
  308. package/corpus/templates/content/changelog/2026-10-23-builder-collections-show-each-entry-s-builder-status-publish.md +6 -0
  309. package/corpus/templates/content/changelog/2026-10-23-public-pages-show-each-block-s-name-while-loading.md +6 -0
  310. package/corpus/templates/content/changelog/2026-10-23-pushing-a-builder-update-from-a-large-collection-now-ends-on.md +6 -0
  311. package/corpus/templates/content/changelog/2026-10-24-a-copied-block-that-holds-data-such-as-an-inline-database-ke.md +6 -0
  312. package/corpus/templates/content/changelog/2026-10-24-agents-can-register-webhooks-that-send-a-signed-event-when-a.md +6 -0
  313. package/corpus/templates/content/changelog/2026-10-24-agents-can-write-a-property-only-while-it-still-holds-the.md +6 -0
  314. package/corpus/templates/content/changelog/2026-10-24-pick-published-or-draft-in-a-builder-entry-s-status-to-stage.md +6 -0
  315. package/corpus/templates/content/changelog/2026-10-24-refreshing-a-builder-collection-keeps-edits-content-has-not.md +6 -0
  316. package/corpus/templates/content/changelog/2026-10-26-preserve-document-bodies-in-mcp-reads.md +6 -0
  317. package/corpus/templates/content/changelog/2026-10-27-an-agent-s-accept-on-words-someone-is-still-typing-returns-to-pending.md +6 -0
  318. package/corpus/templates/content/changelog/2026-10-27-opening-a-page-you-can-t-access-goes-straight-to-the-no-acce.md +6 -0
  319. package/corpus/templates/content/docs/product/capabilities/content.source.adapters.md +37 -9
  320. package/corpus/templates/content/e2e/global-teardown.ts +1 -1
  321. package/corpus/templates/content/e2e/helpers.ts +16 -3
  322. package/corpus/templates/content/e2e/live-body-gate.ts +19 -10
  323. package/corpus/templates/content/parity/matrix.md +45 -42
  324. package/corpus/templates/content/parity/matrix.ts +88 -2
  325. package/corpus/templates/content/parity/run-database-create-property-preservation.ts +2 -0
  326. package/corpus/templates/content/server/db/schema.ts +113 -0
  327. package/corpus/templates/content/server/lib/clips-peer.ts +403 -0
  328. package/corpus/templates/content/server/lib/content-webhook-signature.ts +85 -0
  329. package/corpus/templates/content/server/lib/public-documents.ts +6 -0
  330. package/corpus/templates/content/server/lib/suggested-edits.ts +12 -7
  331. package/corpus/templates/content/server/plugins/agent-chat.ts +1 -0
  332. package/corpus/templates/content/server/plugins/content-webhooks.ts +93 -0
  333. package/corpus/templates/content/server/plugins/db.ts +119 -0
  334. package/corpus/templates/content/shared/api.ts +88 -7
  335. package/corpus/templates/content/shared/clip-embed-block.ts +87 -0
  336. package/corpus/templates/content/shared/clips-peer-contract.ts +272 -0
  337. package/corpus/templates/content/shared/feature-flags.ts +10 -0
  338. package/corpus/templates/content/shared/nfm-registry.ts +10 -0
  339. package/corpus/templates/content/shared/video-link.ts +138 -0
  340. package/corpus/templates/crm/.agents/skills/crm/SKILL.md +4 -4
  341. package/corpus/templates/crm/.agents/skills/storing-data/SKILL.md +18 -0
  342. package/corpus/templates/crm/CHANGELOG.md +18 -0
  343. package/corpus/templates/crm/actions/find-crm-duplicates.ts +76 -88
  344. package/corpus/templates/crm/app/components/crm/RecordActions.tsx +1 -1
  345. package/corpus/templates/crm/app/i18n/en-US.ts +3 -3
  346. package/corpus/templates/crm/changelog/2026-10-22-approval-links-from-a-connected-agent-such-as-claude-code-no.md +6 -0
  347. package/corpus/templates/crm/changelog/2026-10-26-crm-duplicate-review-uses-decision-provider.md +6 -0
  348. package/corpus/templates/crm/server/plugins/agent-chat.ts +1 -1
  349. package/corpus/templates/design/.agents/skills/storing-data/SKILL.md +18 -0
  350. package/corpus/templates/design/CHANGELOG.md +69 -0
  351. package/corpus/templates/design/actions/_design-tracking.ts +2 -2
  352. package/corpus/templates/design/actions/_generation-tracking.ts +18 -29
  353. package/corpus/templates/design/actions/clear-localhost-write-consent-request.ts +8 -2
  354. package/corpus/templates/design/actions/create-design-from-template.ts +1 -1
  355. package/corpus/templates/design/actions/create-design.ts +1 -1
  356. package/corpus/templates/design/actions/duplicate-design.ts +1 -1
  357. package/corpus/templates/design/actions/edit-design.ts +43 -11
  358. package/corpus/templates/design/actions/generate-design.ts +98 -26
  359. package/corpus/templates/design/actions/get-design.ts +20 -1
  360. package/corpus/templates/design/actions/get-localhost-write-consent-request.ts +29 -13
  361. package/corpus/templates/design/actions/grant-localhost-write-consent.ts +31 -2
  362. package/corpus/templates/design/actions/issue-visual-edit-bootstrap.ts +6 -4
  363. package/corpus/templates/design/actions/localhost-consent-request-state.ts +4 -0
  364. package/corpus/templates/design/actions/open-visual-edit.ts +2 -1
  365. package/corpus/templates/design/actions/record-first-run-builder-credits-v2-exposure.ts +63 -0
  366. package/corpus/templates/design/actions/request-localhost-write-consent.ts +26 -5
  367. package/corpus/templates/design/app/components/design/DesignImportPanel.tsx +44 -15
  368. package/corpus/templates/design/app/components/design/LocalhostWriteConsentDialog.tsx +522 -26
  369. package/corpus/templates/design/app/components/editor/FigmaLinkComposerBubble.tsx +72 -39
  370. package/corpus/templates/design/app/components/home/DesignHomeLibrary.tsx +1 -0
  371. package/corpus/templates/design/app/components/templates/DesignTemplateLibrary.tsx +1 -0
  372. package/corpus/templates/design/app/hooks/use-question-flow.ts +1 -3
  373. package/corpus/templates/design/app/i18n/en-US.ts +16 -0
  374. package/corpus/templates/design/app/pages/Index.tsx +65 -6
  375. package/corpus/templates/design/app/pages/design-editor/commands/save-file-content.ts +34 -0
  376. package/corpus/templates/design/app/pages/design-editor/domains/use-editor-active-screen-and-geometry.ts +6 -78
  377. package/corpus/templates/design/app/pages/design-editor/domains/use-editor-canvas-and-screens.ts +2 -0
  378. package/corpus/templates/design/app/pages/design-editor/domains/use-editor-generation-and-access.ts +37 -31
  379. package/corpus/templates/design/app/pages/design-editor/domains/use-editor-live-edits-and-presence.ts +11 -21
  380. package/corpus/templates/design/app/pages/design-editor/domains/use-editor-source-and-sync.ts +9 -12
  381. package/corpus/templates/design/app/pages/design-editor/editor-state.ts +6 -0
  382. package/corpus/templates/design/app/pages/design-editor/effects/publish-active-source-content.ts +55 -0
  383. package/corpus/templates/design/app/pages/design-editor/localhost-consent-request.ts +16 -2
  384. package/corpus/templates/design/app/pages/design-editor/types.ts +1 -0
  385. package/corpus/templates/design/app/pages/design-editor/view/node-rewrite-and-localhost-dialogs.tsx +8 -25
  386. package/corpus/templates/design/changelog/2026-10-22-approval-links-from-a-connected-agent-such-as-claude-code-no.md +6 -0
  387. package/corpus/templates/design/changelog/2026-10-22-builder-sign-in-keeps-design-export-actions-available.md +6 -0
  388. package/corpus/templates/design/changelog/2026-10-22-local-visual-editing-returns-an-app-link-when-no-browser-han.md +6 -0
  389. package/corpus/templates/design/changelog/2026-10-24-approving-local-file-writes-no-longer-undoes-the-edit-that-a.md +6 -0
  390. package/corpus/templates/design/changelog/2026-10-24-local-file-write-consent-asks-you-to-sign-in-before-approvin.md +6 -0
  391. package/corpus/templates/design/changelog/2026-10-24-signing-in-from-the-file-write-consent-dialog-brings-you-back-to-the-same-request.md +6 -0
  392. package/corpus/templates/design/changelog/2026-10-24-visual-edit-links-keep-their-editing-access-after-sign-in-wi.md +6 -0
  393. package/corpus/templates/design/changelog/2026-10-26-voice-edits-make-the-smallest-matching-change-say-the-new-va.md +6 -0
  394. package/corpus/templates/design/changelog/2026-10-27-design-imports-make-your-source-and-page-choices-clear-and-c.md +6 -0
  395. package/corpus/templates/design/changelog/2026-10-27-first-run-setup-makes-free-credits-the-primary-path-while-ke.md +6 -0
  396. package/corpus/templates/design/e2e/helpers.ts +29 -0
  397. package/corpus/templates/design/server/lib/getting-started.ts +8 -2
  398. package/corpus/templates/design/server/lib/realtime-voice.ts +7 -0
  399. package/corpus/templates/design/server/plugins/agent-chat.ts +3 -0
  400. package/corpus/templates/design/server/plugins/feature-flags.ts +7 -1
  401. package/corpus/templates/dispatch/.agents/skills/storing-data/SKILL.md +18 -0
  402. package/corpus/templates/dispatch/.agents/skills/turn-into-app/SKILL.md +34 -29
  403. package/corpus/templates/dispatch/.agents/skills/turn-into-app/references/fresh-project.md +12 -5
  404. package/corpus/templates/dispatch/.agents/skills/turn-into-app/references/review-loop.md +3 -2
  405. package/corpus/templates/dispatch/.agents/skills/turn-into-app/references/where-it-runs.md +93 -0
  406. package/corpus/templates/dispatch/CHANGELOG.md +7 -0
  407. package/corpus/templates/dispatch/changelog/2026-10-22-approval-links-from-a-connected-agent-such-as-claude-code-no.md +6 -0
  408. package/corpus/templates/factory/.agents/skills/factory-workflows/SKILL.md +39 -4
  409. package/corpus/templates/factory/.agents/skills/review-latest-feedback/SKILL.md +123 -33
  410. package/corpus/templates/factory/.agents/skills/storing-data/SKILL.md +18 -0
  411. package/corpus/templates/factory/.agents/skills/turn-into-app/SKILL.md +34 -29
  412. package/corpus/templates/factory/.agents/skills/turn-into-app/references/fresh-project.md +12 -5
  413. package/corpus/templates/factory/.agents/skills/turn-into-app/references/review-loop.md +3 -2
  414. package/corpus/templates/factory/.agents/skills/turn-into-app/references/where-it-runs.md +93 -0
  415. package/corpus/templates/factory/CHANGELOG.md +8 -0
  416. package/corpus/templates/factory/actions/create-factory-automation.ts +3 -0
  417. package/corpus/templates/factory/actions/describe-workflow-node-catalog.ts +26 -10
  418. package/corpus/templates/factory/actions/get-factory-workflow.ts +5 -1
  419. package/corpus/templates/factory/actions/get-workflow-diagnostics.ts +5 -1
  420. package/corpus/templates/factory/actions/list-provider-options.ts +155 -0
  421. package/corpus/templates/factory/actions/list-workflow-items.ts +1 -1
  422. package/corpus/templates/factory/actions/restore-factory-automation-version.ts +15 -10
  423. package/corpus/templates/factory/actions/restore-factory-workflow-version.ts +5 -1
  424. package/corpus/templates/factory/actions/run-factory-automation.ts +12 -10
  425. package/corpus/templates/factory/actions/run-factory-workflow.ts +2 -0
  426. package/corpus/templates/factory/actions/run-workflow-operation.ts +8 -2
  427. package/corpus/templates/factory/actions/save-factory-automation.ts +33 -4
  428. package/corpus/templates/factory/actions/save-factory-workflow.ts +11 -3
  429. package/corpus/templates/factory/actions/set-factory-workflow-enabled.ts +7 -2
  430. package/corpus/templates/factory/app/components/factory/slack-mrkdwn.ts +12 -0
  431. package/corpus/templates/factory/app/components/workflow/RunPicker.tsx +20 -8
  432. package/corpus/templates/factory/app/components/workflow/RunStatusChip.tsx +12 -2
  433. package/corpus/templates/factory/app/components/workflow/WorkflowPage.tsx +37 -7
  434. package/corpus/templates/factory/app/components/workflow/WorkflowsView.tsx +11 -9
  435. package/corpus/templates/factory/app/components/workflow/activity/ActivityRow.tsx +6 -1
  436. package/corpus/templates/factory/app/components/workflow/activity/activity-model.ts +5 -1
  437. package/corpus/templates/factory/app/components/workflow/items/ItemListRow.tsx +7 -0
  438. package/corpus/templates/factory/app/components/workflow/items/item-status.ts +18 -0
  439. package/corpus/templates/factory/app/components/workflow/node-details/MapDrag.tsx +5 -3
  440. package/corpus/templates/factory/app/components/workflow/node-details/NodeDetailsDialog.tsx +2 -1
  441. package/corpus/templates/factory/app/components/workflow/node-details/NodeDetailsName.tsx +36 -11
  442. package/corpus/templates/factory/app/components/workflow/node-details/NodeDetailsParameters.tsx +6 -2
  443. package/corpus/templates/factory/app/components/workflow/node-details/name-field.ts +20 -0
  444. package/corpus/templates/factory/app/components/workflow/pickers/ProviderOptionCombobox.tsx +379 -0
  445. package/corpus/templates/factory/app/components/workflow/pickers/picker-kinds.ts +76 -0
  446. package/corpus/templates/factory/app/components/workflow/pickers/picker-scope.ts +12 -0
  447. package/corpus/templates/factory/app/components/workflow/pickers/picker-strings.ts +50 -0
  448. package/corpus/templates/factory/app/components/workflow/pickers/use-provider-options.ts +190 -0
  449. package/corpus/templates/factory/app/components/workflow/workflow-list-model.ts +17 -0
  450. package/corpus/templates/factory/app/components/workflow/workflow-time.ts +17 -2
  451. package/corpus/templates/factory/app/components/workflow-canvas/inspector/BindingField.tsx +66 -2
  452. package/corpus/templates/factory/app/components/workflow-canvas/inspector/OperationFields.tsx +2 -0
  453. package/corpus/templates/factory/app/components/workflow-canvas/inspector/fields.tsx +3 -3
  454. package/corpus/templates/factory/app/components/workflow-canvas/inspector/forms/SourceForm.tsx +5 -2
  455. package/corpus/templates/factory/app/i18n/en-US.ts +45 -14
  456. package/corpus/templates/factory/changelog/2026-10-23-external-automation-approval.md +8 -0
  457. package/corpus/templates/factory/server/connectors/email-workflow.ts +91 -5
  458. package/corpus/templates/factory/server/lib/factory-automation-history.ts +71 -27
  459. package/corpus/templates/factory/server/lib/factory-automation-resources.ts +15 -5
  460. package/corpus/templates/factory/server/lib/factory-scope.ts +148 -8
  461. package/corpus/templates/factory/server/lib/factory-sentry-fallback.ts +15 -0
  462. package/corpus/templates/factory/server/lib/factory-workflow-context.ts +34 -6
  463. package/corpus/templates/factory/server/lib/factory-workflow-job.ts +53 -7
  464. package/corpus/templates/factory/server/lib/factory-workflow-runner.ts +8 -0
  465. package/corpus/templates/factory/server/plugins/agent-chat.ts +4 -0
  466. package/corpus/templates/factory/server/plugins/factory-scheduler-job.ts +44 -17
  467. package/corpus/templates/factory/server/workflow/catalog/builder.ts +140 -5
  468. package/corpus/templates/factory/server/workflow/catalog/email.ts +20 -0
  469. package/corpus/templates/factory/server/workflow/catalog/factory.ts +32 -0
  470. package/corpus/templates/factory/server/workflow/catalog/github.ts +53 -0
  471. package/corpus/templates/factory/server/workflow/catalog/gong.ts +2 -0
  472. package/corpus/templates/factory/server/workflow/catalog/slack.ts +24 -0
  473. package/corpus/templates/factory/server/workflow/engine/run-tick.ts +3 -1
  474. package/corpus/templates/factory/server/workflow/graph-validation.ts +42 -2
  475. package/corpus/templates/factory/server/workflow/operations.ts +68 -0
  476. package/corpus/templates/factory/server/workflow/stories/02-builder-to-merge/story.md +2 -2
  477. package/corpus/templates/factory/server/workflow/stories/02-builder-to-merge/workflow.json +5 -0
  478. package/corpus/templates/factory/server/workflow/stories/07-incident-to-postmortem/workflow.json +4 -1
  479. package/corpus/templates/factory/server/workflow-host/builder-operations.ts +21 -5
  480. package/corpus/templates/factory/server/workflow-host/option-listers/github-repositories.ts +60 -0
  481. package/corpus/templates/factory/server/workflow-host/option-listers/provider-http.ts +270 -0
  482. package/corpus/templates/factory/server/workflow-host/option-listers/registry.ts +79 -0
  483. package/corpus/templates/factory/server/workflow-host/option-listers/sentry-organizations.ts +39 -0
  484. package/corpus/templates/factory/server/workflow-host/option-listers/sentry-projects.ts +40 -0
  485. package/corpus/templates/factory/server/workflow-host/option-listers/slack-channels.ts +113 -0
  486. package/corpus/templates/factory/server/workflow-host/option-listers/types.ts +108 -0
  487. package/corpus/templates/factory/server/workflow-host/provider-request.ts +31 -0
  488. package/corpus/templates/factory/server/workflow-host/read-models/items.ts +7 -0
  489. package/corpus/templates/factory/server/workflow-host/read-models/journey.ts +1 -0
  490. package/corpus/templates/factory/server/workflow-host/read-models/parked.ts +1 -0
  491. package/corpus/templates/factory/server/workflow-host/testing/workflow-actions-kit.ts +46 -1
  492. package/corpus/templates/forms/.agents/skills/storing-data/SKILL.md +18 -0
  493. package/corpus/templates/forms/server/plugins/agent-chat.ts +1 -0
  494. package/corpus/templates/mail/.agents/skills/inbox-automations/SKILL.md +7 -4
  495. package/corpus/templates/mail/.agents/skills/storing-data/SKILL.md +18 -0
  496. package/corpus/templates/mail/CHANGELOG.md +29 -0
  497. package/corpus/templates/mail/actions/apply-ai-filter.ts +3 -3
  498. package/corpus/templates/mail/actions/get-ai-priority.ts +188 -84
  499. package/corpus/templates/mail/actions/get-jev-availability.ts +40 -10
  500. package/corpus/templates/mail/actions/manage-draft.ts +151 -4
  501. package/corpus/templates/mail/actions/navigate.ts +19 -14
  502. package/corpus/templates/mail/actions/preview-ai-filter.ts +14 -11
  503. package/corpus/templates/mail/app/components/email/ComposeModal.tsx +263 -194
  504. package/corpus/templates/mail/app/components/email/DraftCard.tsx +657 -0
  505. package/corpus/templates/mail/app/components/email/EmailList.tsx +100 -22
  506. package/corpus/templates/mail/app/components/email/EmailListItem.tsx +1 -0
  507. package/corpus/templates/mail/app/components/email/EmailThread.tsx +66 -63
  508. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +39 -12
  509. package/corpus/templates/mail/app/components/settings/AiFilterSection.tsx +14 -9
  510. package/corpus/templates/mail/app/components/settings/JevConnectionPrompt.tsx +9 -1
  511. package/corpus/templates/mail/app/hooks/use-ai-priority.ts +8 -2
  512. package/corpus/templates/mail/app/hooks/use-compose-state.ts +29 -13
  513. package/corpus/templates/mail/app/i18n/en-US.ts +21 -5
  514. package/corpus/templates/mail/app/lib/inbox-tabs.ts +15 -2
  515. package/corpus/templates/mail/app/pages/InboxPage.tsx +3 -0
  516. package/corpus/templates/mail/app/routes/draft.tsx +15 -0
  517. package/corpus/templates/mail/changelog/2026-10-21-connected-agents-can-create-and-update-email-drafts-for-revi.md +6 -0
  518. package/corpus/templates/mail/changelog/2026-10-21-when-an-agent-in-claude-or-chatgpt-drafts-an-email-mail-show.md +6 -0
  519. package/corpus/templates/mail/changelog/2026-10-22-approval-links-from-a-connected-agent-such-as-claude-code-no.md +6 -0
  520. package/corpus/templates/mail/changelog/2026-10-26-mail-ai-decisions-can-use-openai.md +6 -0
  521. package/corpus/templates/mail/changelog/2026-10-27-configured-mail-labels-now-show-archived-messages-and-checkb.md +6 -0
  522. package/corpus/templates/mail/changelog/2026-10-27-priority-sort-refreshes-scores-when-its-ai-provider-changes.md +6 -0
  523. package/corpus/templates/mail/server/lib/ai-filter-backfill.ts +265 -22
  524. package/corpus/templates/mail/server/lib/ai-priority.ts +41 -7
  525. package/corpus/templates/mail/server/lib/automation-engine.ts +728 -620
  526. package/corpus/templates/mail/server/lib/automation-model.ts +1 -42
  527. package/corpus/templates/mail/server/lib/automations.ts +10 -9
  528. package/corpus/templates/mail/server/lib/mail-connector-catalog.ts +1 -0
  529. package/corpus/templates/mail/server/plugins/agent-chat.ts +1 -1
  530. package/corpus/templates/mail/shared/ai-filter-backfill.ts +15 -0
  531. package/corpus/templates/mail/shared/ai-filter.ts +41 -4
  532. package/corpus/templates/mail/shared/ai-priority.ts +12 -1
  533. package/corpus/templates/plan/.agents/skills/storing-data/SKILL.md +18 -0
  534. package/corpus/templates/plan/CHANGELOG.md +6 -0
  535. package/corpus/templates/plan/server/plugins/00-mcp.ts +1 -0
  536. package/corpus/templates/slides/.agents/skills/storing-data/SKILL.md +18 -0
  537. package/corpus/templates/slides/CHANGELOG.md +37 -0
  538. package/corpus/templates/slides/actions/_deck-tracking.ts +3 -3
  539. package/corpus/templates/slides/actions/add-deck.ts +1 -1
  540. package/corpus/templates/slides/actions/add-slide.ts +43 -30
  541. package/corpus/templates/slides/actions/clone-creative-context-deck.ts +1 -1
  542. package/corpus/templates/slides/actions/create-deck.ts +57 -14
  543. package/corpus/templates/slides/actions/duplicate-deck.ts +1 -1
  544. package/corpus/templates/slides/actions/import-google-slides-reference.ts +1 -1
  545. package/corpus/templates/slides/actions/import-pptx.ts +11 -4
  546. package/corpus/templates/slides/actions/record-first-run-builder-credits-v2-exposure.ts +63 -0
  547. package/corpus/templates/slides/changelog/2026-10-22-open-decks-in-the-full-app-from-chat.md +6 -0
  548. package/corpus/templates/slides/changelog/2026-10-26-voice-edits-make-the-smallest-matching-change-say-the-new-va.md +6 -0
  549. package/corpus/templates/slides/changelog/2026-10-27-first-run-setup-makes-free-credits-the-primary-path-while-ke.md +6 -0
  550. package/corpus/templates/slides/server/lib/chatgpt-directory-tools.ts +1 -43
  551. package/corpus/templates/slides/server/lib/realtime-voice.ts +12 -0
  552. package/corpus/templates/slides/server/plugins/agent-chat.ts +3 -0
  553. package/corpus/templates/slides/server/plugins/feature-flags.ts +4 -1
  554. package/corpus/templates/slides-2/.agents/skills/storing-data/SKILL.md +18 -0
  555. package/corpus/templates/slides-2/CHANGELOG.md +18 -0
  556. package/corpus/templates/slides-2/actions/add-slide.ts +1 -13
  557. package/corpus/templates/slides-2/actions/create-deck.ts +1 -8
  558. package/corpus/templates/slides-2/agent-native.config.ts +4 -0
  559. package/corpus/templates/slides-2/app/i18n/en-US.ts +5 -5
  560. package/corpus/templates/slides-2/changelog/2026-10-22-open-decks-in-the-full-app-from-chat.md +6 -0
  561. package/corpus/templates/slides-2/changelog/2026-10-27-onboarding-and-setup-copy-now-uses-a-clear-collaborative-voi.md +6 -0
  562. package/corpus/templates/slides-2/copy-rewrites.json +95 -0
  563. package/corpus/templates/slides-2/server/lib/chatgpt-directory-tools.ts +1 -43
  564. package/corpus/templates/slides-2/server/plugins/agent-chat.ts +1 -0
  565. package/corpus/templates/tasks/.agents/skills/storing-data/SKILL.md +18 -0
  566. package/corpus/templates/tasks/.agents/skills/task-inbox-workflow/SKILL.md +1 -1
  567. package/corpus/templates/tasks/CHANGELOG.md +6 -0
  568. package/corpus/templates/tasks/actions/suggest-task-route.ts +69 -64
  569. package/corpus/templates/tasks/app/components/tasks/fields/TaskFieldsSidebar.tsx +5 -4
  570. package/corpus/templates/tasks/changelog/2026-10-26-task-suggestions-can-use-openai.md +6 -0
  571. package/corpus/templates/tasks/server/plugins/agent-chat.ts +1 -0
  572. package/package.json +1 -1
  573. package/corpus/templates/analytics/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  574. package/corpus/templates/assets/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  575. package/corpus/templates/brain/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  576. package/corpus/templates/calendar/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  577. package/corpus/templates/chat/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  578. package/corpus/templates/clips/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  579. package/corpus/templates/clips/app/lib/missing-share-retry.ts +0 -20
  580. package/corpus/templates/content/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  581. package/corpus/templates/crm/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  582. package/corpus/templates/design/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  583. package/corpus/templates/design/.generated/bridge/native-builtin-metadata.generated.ts +0 -326
  584. package/corpus/templates/design/.generated/bridge/native-worker-source.generated.ts +0 -6
  585. package/corpus/templates/dispatch/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  586. package/corpus/templates/forms/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  587. package/corpus/templates/mail/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  588. package/corpus/templates/plan/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  589. package/corpus/templates/slides/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  590. package/corpus/templates/slides-2/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
package/corpus/README.md CHANGED
@@ -32,4 +32,4 @@ rg -n "defineAction|useActionQuery" node_modules/@agent-native/core-corpus/corpu
32
32
 
33
33
  ## Generated Counts
34
34
 
35
- - template files: 14842
35
+ - template files: 14961
@@ -0,0 +1,19 @@
1
+ ---
2
+ name: ab-readout
3
+ description: >-
4
+ Read the first-run Builder credits experiment output. Use for first-run
5
+ onboarding experiment analysis or the weekly radar report.
6
+ scope: dev
7
+ ---
8
+
9
+ # A/B readout
10
+
11
+ - Run `pnpm --filter analytics radar:ab --experiment first_run_builder_credits`.
12
+ - Verify the sample-ratio result and each arm's denominator before comparing
13
+ rates. Under the configured minimum arm size, report not enough data.
14
+ - Read the 95% confidence interval and two-proportion p-value beside the raw
15
+ counts. D1 and D7 only use mature cohorts.
16
+ - Keep per-app entry denominators separate from experiment-wide exposure counts.
17
+ State the observation window and note the overlapping Clips recording
18
+ experiment when interpreting Clips results.
19
+ - Report association only. Do not claim the credits variant caused a change.
@@ -0,0 +1,22 @@
1
+ ---
2
+ name: feedback-ingest
3
+ description: >-
4
+ Collect product feedback themes for the first-touch radar. Use during a weekly
5
+ report or after a fired first-session check.
6
+ scope: dev
7
+ ---
8
+
9
+ # Feedback ingest
10
+
11
+ - Read `.tmp/first-touch-radar/slack-watermark.json`; if absent, use the prior
12
+ 24 hours for the first scan.
13
+ - Search `#product-agent-native-feedback`, `#dev-agent-native`,
14
+ `#dev-agent-native-feedback`, `#design-an-feedback`, `#qa-agent-native`, and
15
+ `#plg-agent-native` from the watermark through now using Slack MCP.
16
+ - Keep the search read-only: do not post, react, mark messages read, or open the
17
+ Slack desktop app.
18
+ - Group feedback into themes with counts, app, dates, and permalinks. Join a
19
+ theme to a fired radar check only when the app and date overlap; otherwise mark
20
+ it unlinked.
21
+ - Store only the new watermark and aggregate theme notes in the private radar
22
+ run directory. Do not copy full messages, emails, or prompt text.
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: first-touch-radar
3
+ description: >-
4
+ Run the first-touch product radar for Design, Slides, and Clips. Use for daily
5
+ watch, replay triage, weekly growth reports, or first-session incidents.
6
+ scope: dev
7
+ ---
8
+
9
+ # First-touch radar
10
+
11
+ 1. Run `pnpm --filter analytics radar:watch --window daily` and read both the
12
+ JSON and Markdown under `.tmp/first-touch-radar/runs/`.
13
+ 2. Treat exit 0 as clear, exit 1 as one or more fired checks, and exit 2 as
14
+ incomplete evidence. Never turn a missing source or failed query into zero.
15
+ 3. On a fire, run `pnpm --filter analytics radar:triage` and inspect the
16
+ outcome-ranked sessions. Use `metric-watch` and `replay-triage` for details.
17
+ 4. For a weekly review, run `pnpm --filter analytics radar:report --week
18
+ <Monday>` and read the coverage flags, denominators, campaign annotations,
19
+ previous-issue recovery, and A/B maturity before drawing conclusions.
20
+ The `campaign-followup` check runs in daily watch and weekly report; compare
21
+ identified recipients' post-send activity with the seven days before each
22
+ send, split by recipient app and activity app. Weekly reports cap cumulative
23
+ BigQuery dry-run estimates at 100 GB; use `--max-total-gb` to set a different
24
+ report-wide cap, and treat a reached cap as incomplete evidence.
25
+ 5. Run `feedback-ingest` for Slack themes. Searches are read-only and begin at
26
+ the saved watermark.
27
+ 6. Send one Telegram to Steve only when a check fired or the weekly report is
28
+ ready. Include counts and the private run-file path. Send nothing on a quiet
29
+ day. Never send Slack or email.
30
+ 7. Keep recipient emails and prompt text out of logs, reports, Telegram, and
31
+ commits. The campaign check reads its mode-0600 recipient file in memory and
32
+ emits aggregate counts only. With a PostgreSQL sink, recipient identifiers
33
+ are parameters to the read-only query and caching is disabled. A BigQuery
34
+ sink cannot run campaign follow-up until a keyed recipient matching
35
+ function is configured; report it as incomplete rather than treating it as
36
+ zero. Unknown signup campaign labels are grouped as `other`. Anonymous
37
+ landings cannot be assigned to a recipient; do not interpret identified
38
+ counts as a complete click total.
39
+ 8. This radar changes scripts and skills only. Do not make user-visible UI
40
+ changes. If UI work becomes necessary, stop that scope and request Steve's
41
+ screenshot approval before implementing it.
42
+ 9. A fired metric may create a local brief through `fix-brief`; no fix starts
43
+ until Steve approves it.
44
+ 10. Interpret the first-touch journeys separately: Design web excludes
45
+ `/mcp/oauth%` signup paths; Design MCP is signup → `agent_connected` → first
46
+ `$mcp_tool_call` → `design_created`. Clips activation is signup →
47
+ `recording_ready` within 24 hours. Treat 2026-10-21 as a definition break:
48
+ `recording_started` before then includes local-only recordings.
49
+ 11. Read the weekly paid-acquisition notes alongside signup counts: Slides ads
50
+ stopped after 2026-10-16, Bing CPC ended around 2026-10-20 21:00 UTC for
51
+ Clips/Design, and Google paid spend was about 45% lower from 2026-10-21.
@@ -0,0 +1,19 @@
1
+ ---
2
+ name: fix-brief
3
+ description: >-
4
+ Turn a fired radar check into a local, evidence-backed repair brief. Use when
5
+ Steve asks for a fix brief or approves one.
6
+ scope: dev
7
+ ---
8
+
9
+ # Fix brief
10
+
11
+ - Choose one fired check and write `.tmp/first-touch-radar/briefs/<id>.md`.
12
+ - Include its query window, numerator and denominator, comparison baseline,
13
+ affected app, relevant redacted replay link, and likely source files from
14
+ `git grep origin/main`.
15
+ - Make acceptance measurable: the detecting query returns under threshold with
16
+ sufficient coverage on a fresh run.
17
+ - Do not change application code until Steve explicitly approves the fix task.
18
+ Keep UI changes out; any proposed UI repair needs Steve's screenshot approval.
19
+ - Do not include recipient emails, prompt text, or copied user content.
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: metric-watch
3
+ description: >-
4
+ Inspect first-touch radar checks, their query coverage, thresholds, and
5
+ backtests. Use when a watch fires or a metric needs calibration.
6
+ scope: dev
7
+ ---
8
+
9
+ # Metric watch
10
+
11
+ - Run `pnpm --filter analytics radar:watch --window daily`; use `--window
12
+ hourly` for provisioning and environment-key checks.
13
+ - Read the check status, numerator, denominator, seven-day comparison, and
14
+ coverage. `insufficient` is not a pass, and `unavailable` means the run exits
15
+ 2.
16
+ - Compare daily thresholds with the incident window and an ordinary week before
17
+ changing them. Record both windows and the observed counts in the PR or report.
18
+ - Action success uses a weighted `action.response` rate. Keep its app-specific
19
+ threshold below the quiet-week distribution; do not copy the 95% starting
20
+ value without a backtest.
21
+ - Read signup campaign tags beside signup drops. Paid search changes are context,
22
+ not proof that product behavior changed.
23
+ - Event first-seen checks require 10 events that day; went-to-zero checks require
24
+ at least 50 events across the preceding seven days.
25
+ - Read `campaign-followup` as identified recipient counts after send versus the
26
+ same recipients' prior seven days, split by recipient and activity app.
27
+ Anonymous landings cannot be attributed to recipients.
28
+ - The hourly Analytics alert rules cannot express ratios or trailing baselines;
29
+ do not replace these checks with simple count rules.
@@ -0,0 +1,19 @@
1
+ ---
2
+ name: replay-triage
3
+ description: >-
4
+ Review outcome-ranked first-touch sessions and their replay evidence. Use when
5
+ radar checks or the weekly report identify a first-session failure.
6
+ scope: dev
7
+ ---
8
+
9
+ # Replay triage
10
+
11
+ - Run `pnpm --filter analytics radar:triage` or pass `--date YYYY-MM-DD` for a
12
+ UTC day.
13
+ - Start with `prompted_no_output`, `recording_started_no_ready_clip`, and
14
+ `onboarding_abandoned`. Friction and performance fields explain outcomes; do
15
+ not rank sessions by friction score.
16
+ - Review at most the top 15–30 sessions. When a bearer is available, fetch replay
17
+ timelines only for those recording ids through Analytics' deployed action.
18
+ - Use event names, offsets, counts, trouble labels, and performance summaries.
19
+ Never include emails, prompt text, URLs, or other user content in a report.
@@ -29,6 +29,24 @@ Agent-Native apps use Drizzle ORM over PostgreSQL. Local development uses PGlite
29
29
 
30
30
  For app code, use Drizzle's schema/query DSL by default. Raw SQL is an escape hatch for additive migrations, health checks, or one-off maintenance, not the normal way to build features.
31
31
 
32
+ ### Typed raw SQL fragments
33
+
34
+ When Drizzle cannot express a PostgreSQL query, import `sql` from
35
+ `@agent-native/core/db` and pass its fragment directly to
36
+ `getDbExec().execute()`. Use `sql.value(value)` for bound values,
37
+ `sql.ident(name)` for validated lowercase identifiers, `sql.in(values)` for a
38
+ nonempty list (it includes parentheses), and `sql.join(fragments, separator)`
39
+ or nested fragments for composition. The tag rejects plain string interpolation
40
+ at compile time; do not build `{ sql: `...${value}...` }` or pass interpolated
41
+ templates directly to `execute()`. The diff-scoped guard checks new
42
+ interpolated SQL reaching `getDbExec().execute()` through the helper and wrapper
43
+ paths it analyzes. A reviewed exception needs `// raw-sql-ok: <reason>` as
44
+ a standalone comment immediately before the sink statement or after it on the
45
+ same line. Markers inside SQL text, callbacks, and object properties do not opt
46
+ out. The guard does not audit Drizzle `sql.raw()` or raw adapter `query()` calls,
47
+ so use bound Drizzle fragments or the typed kernel instead of interpolating
48
+ dynamic values through those APIs.
49
+
32
50
  ### Schema and migration ownership
33
51
 
34
52
  Define PostgreSQL tables with Drizzle's `drizzle-orm/pg-core` exports and use
@@ -5,12 +5,23 @@ time from the command menu (Cmd+K → "What's new") or from Settings.
5
5
 
6
6
  ## 2026-10-24
7
7
 
8
+ ### Added
9
+
10
+ - Pick dashboard panels for the agent with the Select button in the chat composer.
11
+
8
12
  ### Improved
9
13
 
14
+ - An empty Ask page shows the large composer, and the agent panel opens on the app's default model
15
+ - The Content dashboard ranks articles by signups, adds Authors, New and rising, and Sources tabs, and names missing data sources in one notice.
10
16
  - Organization roster searches now find row-level dbt membership data more reliably.
11
17
 
12
18
  ### Fixed
13
19
 
20
+ - Analytics now clearly indicates incomplete Gong user lists and HubSpot deal pages.
21
+ - Date columns in dashboard tables no longer show the previous day in time zones west of UTC.
22
+ - Gong transcript reads preserve the transcript alias for existing callers.
23
+ - Phones can open the agent from the top bar on every page outside Ask
24
+ - HubSpot and Gong searches keep their filters and page totals visible.
14
25
  - Analytics avoids showing partial warehouse results when a metric or plan request is ambiguous.
15
26
  - Analytics preserves verified results from successful time ranges when another requested range is unavailable.
16
27
  - Analytics uses a warehouse fallback for a failed metric only when requested and supported by a complete metric definition and result.
@@ -18,8 +29,16 @@ time from the command menu (Cmd+K → "What's new") or from Settings.
18
29
 
19
30
  ## 2026-10-23
20
31
 
32
+ ### Improved
33
+
34
+ - Metric tiles can show their change from the period before, tables give the spare width to their first text column and right-align numbers, and callouts read as a list with a severity icon per row, in dashboards and emailed reports.
35
+
21
36
  ### Fixed
22
37
 
38
+ - Content pageviews use their own GA4 property without changing other dashboards.
39
+ - Content signup collection keeps actual query usage and the configured cap, including when collection fails
40
+ - External agents need approval before changing recurring index builds.
41
+ - Query cost tracking distinguishes unknown BigQuery usage from zero-byte results.
23
42
  - Analytics figures require complete, scope-matched warehouse evidence
24
43
  - Analytics keeps malformed metric values out of verified summaries
25
44
  - Analytics keeps verified metrics available when another requested dbt metric is unavailable
@@ -29,8 +48,23 @@ time from the command menu (Cmd+K → "What's new") or from Settings.
29
48
  - Analytics withholds warehouse figures when an owner-defined dbt metric query fails.
30
49
  - Warehouse figures stay hidden when a failed dbt query cannot verify the calculation.
31
50
 
51
+ ## 2026-10-22
52
+
53
+ ### Added
54
+
55
+ - Tables, metric tiles and charts can show a number of seconds as a duration such as 16 min or 7.4 hours, and duration columns sort by time.
56
+
57
+ ### Improved
58
+
59
+ - Approval links from a connected agent, such as Claude Code, now open the review inside the app, in its own theme.
60
+ - Extension panels on dashboards are as tall as their content, so a one-line extension no longer leaves an empty band below it
61
+
32
62
  ## 2026-10-21
33
63
 
64
+ ### Added
65
+
66
+ - You can pin a shared chat just for yourself, or hide it from your list and undo that from the toast.
67
+
34
68
  ### Improved
35
69
 
36
70
  - Analytics recognizes questions about connected data, product analytics, sessions, dashboards, and charts.
@@ -43,6 +77,10 @@ time from the command menu (Cmd+K → "What's new") or from Settings.
43
77
 
44
78
  ## 2026-10-20
45
79
 
80
+ ### Added
81
+
82
+ - Custom SQL charts can open configured record details on click
83
+
46
84
  ### Fixed
47
85
 
48
86
  - Blog signup attribution excludes signups before the first visit and URLs on unrelated hosts
@@ -5,6 +5,7 @@ import {
5
5
  } from "@agent-native/core/server";
6
6
  import {
7
7
  defineAutomation,
8
+ isOutsideAutomationOrigin,
8
9
  listAutomationDefinitions,
9
10
  updateAutomation,
10
11
  } from "@agent-native/core/triggers";
@@ -26,6 +27,7 @@ const INDEX_RUN_BODY = [
26
27
  ].join("\n");
27
28
 
28
29
  export default defineAction({
30
+ needsApproval: (_input, ctx) => isOutsideAutomationOrigin(ctx),
29
31
  mcpAnnotations: {
30
32
  readOnlyHint: false,
31
33
  destructiveHint: false,
@@ -65,7 +67,14 @@ export default defineAction({
65
67
  const current = await readIndexSchedule(admin.orgId);
66
68
  const name =
67
69
  current.automationName ?? DEFAULT_INDEX_SCHEDULE_AUTOMATION_NAME;
68
- const actor = { userEmail: admin.userEmail, orgId: admin.orgId, appId };
70
+ const actor = {
71
+ userEmail: admin.userEmail,
72
+ orgId: admin.orgId,
73
+ appId,
74
+ caller: ctx.caller,
75
+ networkProtocol: ctx.networkProtocol,
76
+ automation: ctx.automation,
77
+ };
69
78
  const definitions = await listAutomationDefinitions(actor, "organization");
70
79
  const exists = definitions.some((definition) => definition.name === name);
71
80
 
@@ -37,7 +37,7 @@ import {
37
37
  type ChartPointLimit,
38
38
  type HeatmapKeys,
39
39
  } from "@shared/panel-render-contract";
40
- import { numberTableColumns } from "@shared/table-columns";
40
+ import { numberTableColumns, tableQuantity } from "@shared/table-columns";
41
41
  import {
42
42
  FUNNEL_OUTCOME_FILLS,
43
43
  FUNNEL_OUTCOME_SEGMENTS,
@@ -2480,6 +2480,8 @@ export function sortTableRows(
2480
2480
  rows: Record<string, unknown>[],
2481
2481
  sorts: TableSort[],
2482
2482
  columns: TableColumnConfig[] = [],
2483
+ // The columns that line up as numbers, when the caller already has them.
2484
+ numberColumns?: ReadonlySet<string>,
2483
2485
  ): Record<string, unknown>[] {
2484
2486
  if (sorts.length === 0) return rows;
2485
2487
 
@@ -2489,8 +2491,30 @@ export function sortTableRows(
2489
2491
  const isEmpty = (key: string, value: unknown) =>
2490
2492
  formats.get(key) === "duration" ? isEmptyDuration(value) : value == null;
2491
2493
 
2494
+ // Text that reads as a number sorts by it, and a duration such as
2495
+ // "4.8 days" by how long it is, in a column that lines up as numbers.
2496
+ const numeric =
2497
+ numberColumns ??
2498
+ numberTableColumns(
2499
+ sorts.map(
2500
+ (sort) =>
2501
+ columns.find((col) => col.key === sort.key) ?? { key: sort.key },
2502
+ ),
2503
+ rows,
2504
+ );
2505
+ const quantity = (key: string, value: unknown) =>
2506
+ numericTableValue(value) ??
2507
+ (numeric.has(key) ? tableQuantity(value) : null);
2508
+
2492
2509
  return rows
2493
- .map((row, index) => ({ row, index }))
2510
+ .map((row, index) => ({
2511
+ row,
2512
+ index,
2513
+ // Read each sorted cell once, not on every comparison.
2514
+ quantities: new Map<string, number | null>(
2515
+ sorts.map((sort) => [sort.key, quantity(sort.key, row[sort.key])]),
2516
+ ),
2517
+ }))
2494
2518
  .sort((a, b) => {
2495
2519
  for (const sort of sorts) {
2496
2520
  const av = a.row[sort.key];
@@ -2501,8 +2525,8 @@ export function sortTableRows(
2501
2525
  if (aEmpty) return 1;
2502
2526
  if (bEmpty) return -1;
2503
2527
 
2504
- const an = numericTableValue(av);
2505
- const bn = numericTableValue(bv);
2528
+ const an = a.quantities.get(sort.key) ?? null;
2529
+ const bn = b.quantities.get(sort.key) ?? null;
2506
2530
 
2507
2531
  if (an !== null && bn === null) return -1;
2508
2532
  if (an === null && bn !== null) return 1;
@@ -3070,11 +3094,17 @@ function TableRenderer({
3070
3094
  const [requestedPage, setPage] = useState(0);
3071
3095
  const [pageSize, setPageSize] = useState(DEFAULT_TABLE_PAGE_SIZE);
3072
3096
 
3097
+ // Formats, not widths, decide these, so resizing a column doesn't redo it.
3098
+ const numberColumns = useMemo(
3099
+ () => numberTableColumns(savedColumns, limitedRows),
3100
+ [savedColumns, limitedRows],
3101
+ );
3102
+
3073
3103
  const sortedRows = useMemo(() => {
3074
3104
  return sortable
3075
- ? sortTableRows(limitedRows, sortColumns, savedColumns)
3105
+ ? sortTableRows(limitedRows, sortColumns, savedColumns, numberColumns)
3076
3106
  : limitedRows;
3077
- }, [limitedRows, sortColumns, sortable, savedColumns]);
3107
+ }, [limitedRows, sortColumns, sortable, savedColumns, numberColumns]);
3078
3108
 
3079
3109
  const pageCount = Math.ceil(sortedRows.length / pageSize);
3080
3110
  // A refresh can return fewer rows than the page a viewer was on; show the
@@ -3082,10 +3112,6 @@ function TableRenderer({
3082
3112
  const page = Math.min(requestedPage, Math.max(pageCount - 1, 0));
3083
3113
  const displayRows = sortedRows.slice(page * pageSize, (page + 1) * pageSize);
3084
3114
 
3085
- const numberColumns = useMemo(
3086
- () => numberTableColumns(columns, limitedRows),
3087
- [columns, limitedRows],
3088
- );
3089
3115
  const fillKey = tableFillColumn(columns, numberColumns);
3090
3116
  // The fill column's max-width of 0 drops its content from the table's
3091
3117
  // minimum width, so it takes only the spare width; a width set on it (saved
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: improved
3
+ date: 2026-10-22
4
+ ---
5
+
6
+ Approval links from a connected agent, such as Claude Code, now open the review inside the app, in its own theme.
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: fixed
3
+ date: 2026-10-23
4
+ ---
5
+
6
+ External agents need approval before changing recurring index builds.
@@ -14,6 +14,11 @@
14
14
  "typecheck": "agent-native typecheck",
15
15
  "migrate:production": "tsx scripts/migrate-production.ts",
16
16
  "journey:capture": "tsx scripts/journey-capture.ts",
17
+ "radar:query": "tsx scripts/radar/query.ts",
18
+ "radar:watch": "tsx scripts/radar/watch.ts",
19
+ "radar:triage": "tsx scripts/radar/triage.ts",
20
+ "radar:ab": "tsx scripts/radar/ab.ts",
21
+ "radar:report": "tsx scripts/radar/report.ts",
17
22
  "journey:snapshot": "tsx scripts/journey-snapshot.ts",
18
23
  "source-index": "tsx scripts/build-source-index.ts",
19
24
  "backfill:first-party-bigquery": "tsx scripts/first-party-analytics-bigquery-backfill.ts",