@agent-native/core 0.91.2 → 0.92.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 (538) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +31 -0
  3. package/corpus/core/docs/content/faq.mdx +17 -0
  4. package/corpus/core/docs/content/notifications.mdx +12 -6
  5. package/corpus/core/package.json +1 -1
  6. package/corpus/core/src/agent/production-agent.ts +140 -46
  7. package/corpus/core/src/agent/tool-search.ts +71 -4
  8. package/corpus/core/src/application-state/store.ts +12 -1
  9. package/corpus/core/src/cli/index.ts +20 -0
  10. package/corpus/core/src/cli/upgrade.ts +798 -0
  11. package/corpus/core/src/client/AssistantChat.tsx +28 -15
  12. package/corpus/core/src/client/HighlightedCodeBlock.tsx +20 -3
  13. package/corpus/core/src/client/PoweredByBadge.tsx +1 -8
  14. package/corpus/core/src/client/agent-chat-adapter.ts +68 -16
  15. package/corpus/core/src/client/chat/message-components.tsx +85 -8
  16. package/corpus/core/src/client/chat/tool-call-display.tsx +355 -144
  17. package/corpus/core/src/client/chat/widgets/DataTableWidget.tsx +52 -1
  18. package/corpus/core/src/client/code-agent-chat-adapter.ts +2 -9
  19. package/corpus/core/src/client/db-admin/TableEditor.tsx +49 -0
  20. package/corpus/core/src/client/db-admin/export-utils.ts +13 -4
  21. package/corpus/core/src/client/db-admin/useAgentSync.ts +72 -0
  22. package/corpus/core/src/client/error-capture.ts +69 -7
  23. package/corpus/core/src/client/extensions/EmbeddedExtension.tsx +5 -1
  24. package/corpus/core/src/client/extensions/ExtensionViewer.tsx +53 -8
  25. package/corpus/core/src/client/extensions/InlineExtensionFrame.tsx +5 -1
  26. package/corpus/core/src/client/extensions/portable-extension.ts +1 -0
  27. package/corpus/core/src/client/org/OrgSwitcher.tsx +12 -9
  28. package/corpus/core/src/client/org/TeamPage.tsx +77 -71
  29. package/corpus/core/src/client/session-replay.ts +3 -97
  30. package/corpus/core/src/client/settings/SettingsPanel.tsx +738 -441
  31. package/corpus/core/src/client/settings/SettingsSection.tsx +161 -17
  32. package/corpus/core/src/client/settings/SettingsTabsPage.tsx +25 -9
  33. package/corpus/core/src/client/sse-event-processor.ts +29 -2
  34. package/corpus/core/src/db-admin/agent-tools.ts +8 -2
  35. package/corpus/core/src/db-admin/operations.ts +116 -4
  36. package/corpus/core/src/db-admin/routes.ts +1 -0
  37. package/corpus/core/src/db-admin/types.ts +4 -0
  38. package/corpus/core/src/extensions/actions.ts +113 -5
  39. package/corpus/core/src/extensions/html-shell.ts +5 -4
  40. package/corpus/core/src/extensions/routes.ts +10 -0
  41. package/corpus/core/src/navigation/index.ts +1 -1
  42. package/corpus/core/src/notifications/channels.ts +88 -25
  43. package/corpus/core/src/notifications/registry.ts +17 -3
  44. package/corpus/core/src/notifications/types.ts +4 -1
  45. package/corpus/core/src/resources/handlers.ts +10 -8
  46. package/corpus/core/src/server/agent-chat-plugin.ts +7 -3
  47. package/corpus/core/src/server/poll.ts +293 -8
  48. package/corpus/core/src/server/request-context.ts +7 -0
  49. package/corpus/core/src/styles/agent-conversation.css +1 -1
  50. package/corpus/core/src/styles/agent-native.css +27 -0
  51. package/corpus/core/src/templates/default/.agents/skills/actions/SKILL.md +5 -0
  52. package/corpus/core/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +5 -0
  53. package/corpus/core/src/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
  54. package/corpus/core/src/templates/default/.agents/skills/security/SKILL.md +7 -0
  55. package/corpus/core/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +20 -2
  56. package/corpus/core/src/templates/default/.agents/skills/storing-data/SKILL.md +5 -1
  57. package/corpus/core/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  58. package/corpus/core/src/templates/default/AGENTS.md +14 -5
  59. package/corpus/core/src/templates/default/package.json +2 -1
  60. package/corpus/core/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  61. package/corpus/core/src/templates/headless/AGENTS.md +13 -3
  62. package/corpus/core/src/templates/headless/package.json +1 -0
  63. package/corpus/core/src/templates/workspace-core/.agents/skills/actions/SKILL.md +5 -0
  64. package/corpus/core/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +5 -0
  65. package/corpus/core/src/templates/workspace-core/.agents/skills/context-awareness/SKILL.md +4 -0
  66. package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +6 -0
  67. package/corpus/core/src/templates/workspace-core/.agents/skills/performance/SKILL.md +4 -0
  68. package/corpus/core/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +1 -1
  69. package/corpus/core/src/templates/workspace-core/.agents/skills/security/SKILL.md +7 -0
  70. package/corpus/core/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +20 -2
  71. package/corpus/core/src/templates/workspace-core/.agents/skills/storing-data/SKILL.md +5 -1
  72. package/corpus/core/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  73. package/corpus/core/src/templates/workspace-core/AGENTS.md +7 -1
  74. package/corpus/core/src/templates/workspace-root/AGENTS.md +17 -5
  75. package/corpus/core/src/templates/workspace-root/package.json +1 -0
  76. package/corpus/templates/analytics/.agents/skills/actions/SKILL.md +5 -0
  77. package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +10 -0
  78. package/corpus/templates/analytics/.agents/skills/real-time-sync/SKILL.md +1 -1
  79. package/corpus/templates/analytics/.agents/skills/security/SKILL.md +7 -0
  80. package/corpus/templates/analytics/.agents/skills/self-modifying-code/SKILL.md +20 -2
  81. package/corpus/templates/analytics/.agents/skills/session-replay/SKILL.md +5 -6
  82. package/corpus/templates/analytics/.agents/skills/storing-data/SKILL.md +5 -1
  83. package/corpus/templates/analytics/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  84. package/corpus/templates/analytics/AGENTS.md +39 -18
  85. package/corpus/templates/analytics/actions/capture-test-error.ts +4 -0
  86. package/corpus/templates/analytics/actions/get-analytics-alert-rule-defaults.ts +23 -0
  87. package/corpus/templates/analytics/actions/get-error-issue.ts +1 -1
  88. package/corpus/templates/analytics/actions/list-analysis-revisions.ts +40 -0
  89. package/corpus/templates/analytics/actions/list-dashboard-revisions.ts +40 -0
  90. package/corpus/templates/analytics/actions/list-dashboard-usage-stats.ts +299 -0
  91. package/corpus/templates/analytics/actions/navigate.ts +4 -2
  92. package/corpus/templates/analytics/actions/restore-analysis-revision.ts +43 -0
  93. package/corpus/templates/analytics/actions/restore-dashboard-revision.ts +68 -0
  94. package/corpus/templates/analytics/actions/save-analytics-alert-rule.ts +14 -0
  95. package/corpus/templates/analytics/actions/save-monitor.ts +15 -1
  96. package/corpus/templates/analytics/actions/view-screen.ts +24 -0
  97. package/corpus/templates/analytics/app/components/analysis/AnalysisHistoryPanel.tsx +181 -0
  98. package/corpus/templates/analytics/app/components/dashboard/DashboardHistoryPanel.tsx +184 -0
  99. package/corpus/templates/analytics/app/components/dashboard/DataTable.tsx +41 -6
  100. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +122 -11
  101. package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +22 -16
  102. package/corpus/templates/analytics/app/components/layout/Header.tsx +1 -1
  103. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +27 -21
  104. package/corpus/templates/analytics/app/hooks/use-analysis-revisions.ts +43 -0
  105. package/corpus/templates/analytics/app/hooks/use-dashboard-chat-context.ts +110 -0
  106. package/corpus/templates/analytics/app/hooks/use-dashboard-revisions.ts +43 -0
  107. package/corpus/templates/analytics/app/hooks/use-navigation-state.ts +8 -3
  108. package/corpus/templates/analytics/app/i18n/zh-TW.ts +64 -2
  109. package/corpus/templates/analytics/app/i18n-data.ts +783 -3
  110. package/corpus/templates/analytics/app/pages/Agents.tsx +359 -19
  111. package/corpus/templates/analytics/app/pages/Settings.tsx +3 -2
  112. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +34 -1
  113. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +28 -0
  114. package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +18 -1
  115. package/corpus/templates/analytics/app/pages/monitoring/ErrorsPanel.tsx +7 -10
  116. package/corpus/templates/analytics/app/pages/monitoring/MonitoringPage.tsx +8 -2
  117. package/corpus/templates/analytics/app/pages/monitoring/errors/IssueDetail.tsx +479 -23
  118. package/corpus/templates/analytics/app/pages/monitoring/errors/IssueList.tsx +0 -9
  119. package/corpus/templates/analytics/app/pages/monitoring/errors/i18n.ts +11 -0
  120. package/corpus/templates/analytics/app/pages/monitoring/errors/types.ts +9 -1
  121. package/corpus/templates/analytics/app/pages/monitoring/uptime/MonitorFormPage.tsx +157 -35
  122. package/corpus/templates/analytics/app/pages/monitoring/uptime/i18n.ts +17 -2
  123. package/corpus/templates/analytics/app/pages/monitoring/uptime/types.ts +4 -0
  124. package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +80 -220
  125. package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +9 -99
  126. package/corpus/templates/analytics/app/pages/settings/AlertRulesSettingsCard.tsx +262 -104
  127. package/corpus/templates/analytics/app/routes/team.tsx +1 -1
  128. package/corpus/templates/analytics/changelog/2026-07-08-admins-can-audit-dashboard-usage-ownership-and-cleanup-signa.md +6 -0
  129. package/corpus/templates/analytics/changelog/2026-07-08-agent-monitoring-stays-available-to-non-admins.md +6 -0
  130. package/corpus/templates/analytics/changelog/2026-07-08-alert-rules-are-easier-to-scan-expand-and-edit-from-settings.md +6 -0
  131. package/corpus/templates/analytics/changelog/2026-07-08-analytics-alert-forms-remember-last-email-recipients.md +6 -0
  132. package/corpus/templates/analytics/changelog/2026-07-08-analytics-alert-rules-can-now-use-per-rule-slack-and-webhook.md +6 -0
  133. package/corpus/templates/analytics/changelog/2026-07-08-dashboard-history-and-chat-context.md +5 -0
  134. package/corpus/templates/analytics/changelog/2026-07-08-dashboard-tables-keep-their-size-while-loading.md +6 -0
  135. package/corpus/templates/analytics/changelog/2026-07-08-dashboard-usage-now-counts-explorer-dashboard-traffic.md +6 -0
  136. package/corpus/templates/analytics/changelog/2026-07-08-demo-mode-session-emails-are-filtered-and-anonymized.md +6 -0
  137. package/corpus/templates/analytics/changelog/2026-07-08-error-issue-detail-adds-stack-traces-and-frequency-bars.md +6 -0
  138. package/corpus/templates/analytics/changelog/2026-07-08-error-issue-detail-now-shows-the-latest-occurrence-message-a.md +6 -0
  139. package/corpus/templates/analytics/changelog/2026-07-08-monitoring-errors-only-show-test-action-when-empty.md +6 -0
  140. package/corpus/templates/analytics/changelog/2026-07-08-monitoring-uptime-and-errors-tabs-now-clearly-show-which-view-is-active.md +6 -0
  141. package/corpus/templates/analytics/changelog/2026-07-08-production-session-replay-now-requires-private-blob-storage-.md +6 -0
  142. package/corpus/templates/analytics/changelog/2026-07-08-session-replay-uses-stock-rrweb-sizing-again-so-recorded.md +6 -0
  143. package/corpus/templates/analytics/changelog/2026-07-08-shared-extension-links-now-show-a-clear-message-when-you-do-.md +6 -0
  144. package/corpus/templates/analytics/changelog/2026-07-08-sidebar-dashboard-menus-now-open-above-the-dashboard-canvas.md +6 -0
  145. package/corpus/templates/analytics/changelog/2026-07-08-team-settings-show-access-controls-next-to-member-lists.md +6 -0
  146. package/corpus/templates/analytics/changelog/2026-07-08-uptime-alerting-clarifies-in-app-inbox-vs-email-and-lets-you-paste-slack-or-webhook-urls-per-monitor.md +6 -0
  147. package/corpus/templates/analytics/changelog/2026-07-08-uptime-monitors-now-use-a-10-second-request-timeout-by-defau.md +6 -0
  148. package/corpus/templates/analytics/docs/uptime-monitoring.md +13 -11
  149. package/corpus/templates/analytics/server/db/schema-monitoring.ts +5 -1
  150. package/corpus/templates/analytics/server/db/schema.ts +56 -0
  151. package/corpus/templates/analytics/server/lib/analytics-alerts.ts +92 -0
  152. package/corpus/templates/analytics/server/lib/dashboards-store.ts +334 -5
  153. package/corpus/templates/analytics/server/lib/error-capture.ts +231 -36
  154. package/corpus/templates/analytics/server/lib/session-replay.ts +114 -8
  155. package/corpus/templates/analytics/server/lib/uptime-monitors.ts +65 -16
  156. package/corpus/templates/analytics/server/plugins/db.ts +122 -2
  157. package/corpus/templates/analytics/server/routes/api/dashboard-agent-context.json.get.ts +1 -0
  158. package/corpus/templates/assets/.agents/skills/actions/SKILL.md +5 -0
  159. package/corpus/templates/assets/.agents/skills/real-time-sync/SKILL.md +1 -1
  160. package/corpus/templates/assets/.agents/skills/security/SKILL.md +7 -0
  161. package/corpus/templates/assets/.agents/skills/self-modifying-code/SKILL.md +20 -2
  162. package/corpus/templates/assets/.agents/skills/storing-data/SKILL.md +5 -1
  163. package/corpus/templates/assets/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  164. package/corpus/templates/assets/AGENTS.md +4 -0
  165. package/corpus/templates/assets/app/routes/settings.tsx +1 -1
  166. package/corpus/templates/assets/app/routes/team.tsx +1 -1
  167. package/corpus/templates/brain/.agents/skills/actions/SKILL.md +5 -0
  168. package/corpus/templates/brain/.agents/skills/adding-a-feature/SKILL.md +5 -0
  169. package/corpus/templates/brain/.agents/skills/real-time-sync/SKILL.md +1 -1
  170. package/corpus/templates/brain/.agents/skills/security/SKILL.md +7 -0
  171. package/corpus/templates/brain/.agents/skills/self-modifying-code/SKILL.md +20 -2
  172. package/corpus/templates/brain/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  173. package/corpus/templates/brain/AGENTS.md +4 -0
  174. package/corpus/templates/brain/app/routes/team.tsx +1 -1
  175. package/corpus/templates/calendar/.agents/skills/actions/SKILL.md +5 -0
  176. package/corpus/templates/calendar/.agents/skills/real-time-sync/SKILL.md +1 -1
  177. package/corpus/templates/calendar/.agents/skills/security/SKILL.md +7 -0
  178. package/corpus/templates/calendar/.agents/skills/self-modifying-code/SKILL.md +20 -2
  179. package/corpus/templates/calendar/.agents/skills/storing-data/SKILL.md +5 -1
  180. package/corpus/templates/calendar/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  181. package/corpus/templates/calendar/AGENTS.md +4 -0
  182. package/corpus/templates/calendar/app/components/calendar/DayView.tsx +11 -2
  183. package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +21 -8
  184. package/corpus/templates/calendar/app/components/calendar/MonthView.tsx +7 -1
  185. package/corpus/templates/calendar/app/components/calendar/WeekView.tsx +11 -2
  186. package/corpus/templates/calendar/app/lib/popover-click-guard.ts +48 -4
  187. package/corpus/templates/calendar/app/pages/Settings.tsx +1 -1
  188. package/corpus/templates/calendar/app/routes/_app.team.tsx +1 -1
  189. package/corpus/templates/calendar/changelog/2026-07-08-clicking-empty-calendar-space-closes-an-open-event-popover-b.md +6 -0
  190. package/corpus/templates/chat/.agents/skills/actions/SKILL.md +5 -0
  191. package/corpus/templates/chat/.agents/skills/adding-a-feature/SKILL.md +5 -0
  192. package/corpus/templates/chat/.agents/skills/real-time-sync/SKILL.md +1 -1
  193. package/corpus/templates/chat/.agents/skills/security/SKILL.md +7 -0
  194. package/corpus/templates/chat/.agents/skills/self-modifying-code/SKILL.md +20 -2
  195. package/corpus/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  196. package/corpus/templates/chat/AGENTS.md +4 -0
  197. package/corpus/templates/chat/app/hooks/use-navigation-state.ts +1 -1
  198. package/corpus/templates/chat/app/routes/settings.tsx +2 -2
  199. package/corpus/templates/chat/app/routes/team.tsx +1 -1
  200. package/corpus/templates/clips/.agents/skills/actions/SKILL.md +5 -0
  201. package/corpus/templates/clips/.agents/skills/security/SKILL.md +7 -0
  202. package/corpus/templates/clips/.agents/skills/self-modifying-code/SKILL.md +20 -2
  203. package/corpus/templates/clips/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  204. package/corpus/templates/clips/AGENTS.md +4 -0
  205. package/corpus/templates/clips/actions/finalize-recording.ts +9 -3
  206. package/corpus/templates/clips/actions/set-thumbnail.ts +11 -2
  207. package/corpus/templates/clips/app/components/meetings/canvas-editor.tsx +1 -7
  208. package/corpus/templates/clips/app/components/player/player-controls.tsx +21 -13
  209. package/corpus/templates/clips/app/components/player/video-player.tsx +30 -75
  210. package/corpus/templates/clips/app/i18n/ar-SA.ts +6 -5
  211. package/corpus/templates/clips/app/i18n/de-DE.ts +6 -6
  212. package/corpus/templates/clips/app/i18n/en-US.ts +6 -5
  213. package/corpus/templates/clips/app/i18n/es-ES.ts +6 -5
  214. package/corpus/templates/clips/app/i18n/fr-FR.ts +6 -6
  215. package/corpus/templates/clips/app/i18n/hi-IN.ts +6 -5
  216. package/corpus/templates/clips/app/i18n/ja-JP.ts +6 -5
  217. package/corpus/templates/clips/app/i18n/ko-KR.ts +6 -5
  218. package/corpus/templates/clips/app/i18n/pt-BR.ts +6 -5
  219. package/corpus/templates/clips/app/i18n/zh-CN.ts +6 -5
  220. package/corpus/templates/clips/app/i18n/zh-TW.ts +6 -5
  221. package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +51 -118
  222. package/corpus/templates/clips/changelog/2026-07-08-desktop-meeting-notes-stay-active-from-tray-and-shortcut-controls.md +6 -0
  223. package/corpus/templates/clips/changelog/2026-07-08-desktop-meeting-popovers-can-start-notes-and-join-the-meetin.md +6 -0
  224. package/corpus/templates/clips/changelog/2026-07-08-hosted-clip-uploads-now-clear-failed-buffered-chunks.md +6 -0
  225. package/corpus/templates/clips/changelog/2026-07-08-hosted-recording-uploads-now-avoid-sql-chunk-storage.md +6 -0
  226. package/corpus/templates/clips/changelog/2026-07-08-meeting-notes-keep-their-recording-state-when-the-desktop.md +6 -0
  227. package/corpus/templates/clips/changelog/2026-07-08-meeting-recaps-now-keep-summaries-action-items-and-transcrip.md +6 -0
  228. package/corpus/templates/clips/changelog/2026-07-08-meeting-reminder-dropdowns-now-expand-fully-instead-of-being.md +6 -0
  229. package/corpus/templates/clips/changelog/2026-07-08-video-playback-controls-now-match-loom-style-5-second-skips-.md +6 -0
  230. package/corpus/templates/clips/desktop/src/app.tsx +123 -3
  231. package/corpus/templates/clips/desktop/src/hooks/useMeetingTranscription.ts +15 -1
  232. package/corpus/templates/clips/desktop/src/overlays/meeting-notification.tsx +23 -0
  233. package/corpus/templates/clips/desktop/src/styles.css +23 -1
  234. package/corpus/templates/clips/desktop/src-tauri/src/adhoc_meetings_watcher.rs +1 -3
  235. package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +40 -6
  236. package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +4 -2
  237. package/corpus/templates/clips/desktop/src-tauri/src/meetings_watcher.rs +3 -5
  238. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +23 -19
  239. package/corpus/templates/clips/desktop/src-tauri/src/shortcuts.rs +3 -3
  240. package/corpus/templates/clips/desktop/src-tauri/src/silence_detector.rs +0 -1
  241. package/corpus/templates/clips/desktop/src-tauri/src/state.rs +5 -0
  242. package/corpus/templates/clips/desktop/src-tauri/src/tray.rs +18 -6
  243. package/corpus/templates/clips/server/lib/recording-upload-state.ts +63 -0
  244. package/corpus/templates/clips/server/lib/video-storage.ts +4 -0
  245. package/corpus/templates/clips/server/routes/api/recordings/[recordingId]/thumbnail.post.ts +19 -13
  246. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +40 -1
  247. package/corpus/templates/content/.agents/skills/actions/SKILL.md +5 -0
  248. package/corpus/templates/content/.agents/skills/real-time-sync/SKILL.md +1 -1
  249. package/corpus/templates/content/.agents/skills/security/SKILL.md +7 -0
  250. package/corpus/templates/content/.agents/skills/self-modifying-code/SKILL.md +20 -2
  251. package/corpus/templates/content/.agents/skills/storing-data/SKILL.md +5 -1
  252. package/corpus/templates/content/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  253. package/corpus/templates/content/AGENTS.md +4 -0
  254. package/corpus/templates/content/actions/_batch-utils.ts +8 -0
  255. package/corpus/templates/content/actions/_builder-cms-read-client.ts +7 -5
  256. package/corpus/templates/content/actions/_database-source-utils.ts +776 -319
  257. package/corpus/templates/content/actions/_database-utils.ts +6 -1
  258. package/corpus/templates/content/actions/_property-utils.ts +168 -0
  259. package/corpus/templates/content/actions/add-content-database-source-field-property.ts +19 -12
  260. package/corpus/templates/content/actions/bind-content-database-source-field.ts +19 -12
  261. package/corpus/templates/content/actions/delete-document.ts +9 -13
  262. package/corpus/templates/content/actions/refresh-content-database-source.ts +5 -5
  263. package/corpus/templates/content/app/components/editor/body-hydration.ts +35 -11
  264. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +47 -5
  265. package/corpus/templates/content/app/hooks/use-documents.ts +8 -2
  266. package/corpus/templates/content/app/routes/_app.settings.tsx +2 -2
  267. package/corpus/templates/content/app/routes/_app.team.tsx +1 -1
  268. package/corpus/templates/content/changelog/2026-07-08-builder-source-sync-now-completes-reliably-on-hosted-databases.md +6 -0
  269. package/corpus/templates/content/changelog/2026-07-08-fixed-builder-database-sync-so-large-sources-continue-past-t.md +6 -0
  270. package/corpus/templates/content/server/plugins/db.ts +19 -0
  271. package/corpus/templates/design/.agents/skills/actions/SKILL.md +5 -0
  272. package/corpus/templates/design/.agents/skills/security/SKILL.md +7 -0
  273. package/corpus/templates/design/.agents/skills/self-modifying-code/SKILL.md +20 -2
  274. package/corpus/templates/design/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  275. package/corpus/templates/design/AGENTS.md +4 -0
  276. package/corpus/templates/design/actions/take-design-screenshot.ts +12 -9
  277. package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +57 -13
  278. package/corpus/templates/design/app/routes/team.tsx +1 -1
  279. package/corpus/templates/design/changelog/2026-07-08-local-images-added-to-designs-now-upload-to-file-storage-ins.md +6 -0
  280. package/corpus/templates/dispatch/.agents/skills/actions/SKILL.md +5 -0
  281. package/corpus/templates/dispatch/.agents/skills/security/SKILL.md +7 -0
  282. package/corpus/templates/dispatch/.agents/skills/self-modifying-code/SKILL.md +20 -2
  283. package/corpus/templates/dispatch/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  284. package/corpus/templates/dispatch/AGENTS.md +4 -0
  285. package/corpus/templates/dispatch/app/hooks/use-navigation-state.ts +1 -1
  286. package/corpus/templates/dispatch/app/routes/settings.tsx +2 -2
  287. package/corpus/templates/dispatch/app/routes/team.tsx +1 -1
  288. package/corpus/templates/forms/.agents/skills/actions/SKILL.md +5 -0
  289. package/corpus/templates/forms/.agents/skills/real-time-sync/SKILL.md +1 -1
  290. package/corpus/templates/forms/.agents/skills/security/SKILL.md +7 -0
  291. package/corpus/templates/forms/.agents/skills/self-modifying-code/SKILL.md +20 -2
  292. package/corpus/templates/forms/.agents/skills/storing-data/SKILL.md +5 -1
  293. package/corpus/templates/forms/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  294. package/corpus/templates/forms/AGENTS.md +4 -0
  295. package/corpus/templates/forms/app/routes/_app.settings.tsx +2 -2
  296. package/corpus/templates/forms/app/routes/_app.team.tsx +1 -1
  297. package/corpus/templates/forms/shared/navigation.ts +1 -1
  298. package/corpus/templates/macros/.agents/skills/security/SKILL.md +7 -0
  299. package/corpus/templates/macros/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  300. package/corpus/templates/macros/AGENTS.md +4 -0
  301. package/corpus/templates/macros/app/routes/settings.tsx +2 -2
  302. package/corpus/templates/macros/app/routes/team.tsx +1 -1
  303. package/corpus/templates/mail/.agents/skills/actions/SKILL.md +5 -0
  304. package/corpus/templates/mail/.agents/skills/email-drafts/SKILL.md +1 -1
  305. package/corpus/templates/mail/.agents/skills/real-time-sync/SKILL.md +1 -1
  306. package/corpus/templates/mail/.agents/skills/security/SKILL.md +7 -0
  307. package/corpus/templates/mail/.agents/skills/self-modifying-code/SKILL.md +20 -2
  308. package/corpus/templates/mail/.agents/skills/storing-data/SKILL.md +5 -1
  309. package/corpus/templates/mail/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  310. package/corpus/templates/mail/AGENTS.md +4 -0
  311. package/corpus/templates/mail/changelog/2026-07-08-mail-attachments-in-hosted-environments-now-require-file-sto.md +6 -0
  312. package/corpus/templates/mail/server/handlers/media.ts +26 -1
  313. package/corpus/templates/mail/server/lib/outgoing-email.ts +24 -1
  314. package/corpus/templates/mail/server/lib/upload-store.ts +2 -1
  315. package/corpus/templates/plan/.agents/skills/actions/SKILL.md +5 -0
  316. package/corpus/templates/plan/.agents/skills/adding-a-feature/SKILL.md +5 -0
  317. package/corpus/templates/plan/.agents/skills/real-time-sync/SKILL.md +1 -1
  318. package/corpus/templates/plan/.agents/skills/security/SKILL.md +7 -0
  319. package/corpus/templates/plan/.agents/skills/self-modifying-code/SKILL.md +20 -2
  320. package/corpus/templates/plan/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  321. package/corpus/templates/plan/AGENTS.md +4 -0
  322. package/corpus/templates/plan/app/hooks/use-navigation-state.ts +1 -1
  323. package/corpus/templates/plan/app/routes/settings.tsx +2 -2
  324. package/corpus/templates/plan/app/routes/team.tsx +1 -1
  325. package/corpus/templates/plan/changelog/2026-07-08-hosted-plan-images-now-require-connected-storage.md +6 -0
  326. package/corpus/templates/plan/server/lib/plan-assets.ts +33 -4
  327. package/corpus/templates/slides/.agents/skills/actions/SKILL.md +5 -0
  328. package/corpus/templates/slides/.agents/skills/security/SKILL.md +7 -0
  329. package/corpus/templates/slides/.agents/skills/self-modifying-code/SKILL.md +20 -2
  330. package/corpus/templates/slides/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  331. package/corpus/templates/slides/AGENTS.md +4 -0
  332. package/corpus/templates/slides/actions/generate-image-api.ts +15 -3
  333. package/corpus/templates/slides/app/routes/settings.tsx +2 -2
  334. package/corpus/templates/slides/app/routes/team.tsx +1 -1
  335. package/corpus/templates/slides/changelog/2026-07-08-generated-slide-images-now-return-hosted-file-storage-urls-i.md +6 -0
  336. package/corpus/templates/slides/shared/api.ts +1 -1
  337. package/corpus/templates/videos/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  338. package/corpus/templates/voice/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  339. package/dist/agent/production-agent.d.ts +5 -1
  340. package/dist/agent/production-agent.d.ts.map +1 -1
  341. package/dist/agent/production-agent.js +112 -42
  342. package/dist/agent/production-agent.js.map +1 -1
  343. package/dist/agent/tool-search.d.ts +2 -0
  344. package/dist/agent/tool-search.d.ts.map +1 -1
  345. package/dist/agent/tool-search.js +60 -4
  346. package/dist/agent/tool-search.js.map +1 -1
  347. package/dist/application-state/store.d.ts.map +1 -1
  348. package/dist/application-state/store.js +8 -2
  349. package/dist/application-state/store.js.map +1 -1
  350. package/dist/cli/index.js +19 -0
  351. package/dist/cli/index.js.map +1 -1
  352. package/dist/cli/upgrade.d.ts +100 -0
  353. package/dist/cli/upgrade.d.ts.map +1 -0
  354. package/dist/cli/upgrade.js +678 -0
  355. package/dist/cli/upgrade.js.map +1 -0
  356. package/dist/client/AssistantChat.d.ts.map +1 -1
  357. package/dist/client/AssistantChat.js +25 -14
  358. package/dist/client/AssistantChat.js.map +1 -1
  359. package/dist/client/HighlightedCodeBlock.d.ts +2 -0
  360. package/dist/client/HighlightedCodeBlock.d.ts.map +1 -1
  361. package/dist/client/HighlightedCodeBlock.js +10 -1
  362. package/dist/client/HighlightedCodeBlock.js.map +1 -1
  363. package/dist/client/PoweredByBadge.d.ts +1 -1
  364. package/dist/client/PoweredByBadge.d.ts.map +1 -1
  365. package/dist/client/PoweredByBadge.js +3 -9
  366. package/dist/client/PoweredByBadge.js.map +1 -1
  367. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  368. package/dist/client/agent-chat-adapter.js +60 -13
  369. package/dist/client/agent-chat-adapter.js.map +1 -1
  370. package/dist/client/chat/message-components.d.ts.map +1 -1
  371. package/dist/client/chat/message-components.js +61 -8
  372. package/dist/client/chat/message-components.js.map +1 -1
  373. package/dist/client/chat/tool-call-display.d.ts +12 -0
  374. package/dist/client/chat/tool-call-display.d.ts.map +1 -1
  375. package/dist/client/chat/tool-call-display.js +136 -42
  376. package/dist/client/chat/tool-call-display.js.map +1 -1
  377. package/dist/client/chat/widgets/DataTableWidget.d.ts.map +1 -1
  378. package/dist/client/chat/widgets/DataTableWidget.js +19 -2
  379. package/dist/client/chat/widgets/DataTableWidget.js.map +1 -1
  380. package/dist/client/code-agent-chat-adapter.js +2 -9
  381. package/dist/client/code-agent-chat-adapter.js.map +1 -1
  382. package/dist/client/db-admin/TableEditor.d.ts.map +1 -1
  383. package/dist/client/db-admin/TableEditor.js +19 -2
  384. package/dist/client/db-admin/TableEditor.js.map +1 -1
  385. package/dist/client/db-admin/export-utils.d.ts +2 -0
  386. package/dist/client/db-admin/export-utils.d.ts.map +1 -1
  387. package/dist/client/db-admin/export-utils.js +11 -3
  388. package/dist/client/db-admin/export-utils.js.map +1 -1
  389. package/dist/client/db-admin/useAgentSync.d.ts.map +1 -1
  390. package/dist/client/db-admin/useAgentSync.js +63 -0
  391. package/dist/client/db-admin/useAgentSync.js.map +1 -1
  392. package/dist/client/error-capture.d.ts.map +1 -1
  393. package/dist/client/error-capture.js +41 -7
  394. package/dist/client/error-capture.js.map +1 -1
  395. package/dist/client/extensions/EmbeddedExtension.d.ts.map +1 -1
  396. package/dist/client/extensions/EmbeddedExtension.js +3 -1
  397. package/dist/client/extensions/EmbeddedExtension.js.map +1 -1
  398. package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
  399. package/dist/client/extensions/ExtensionViewer.js +32 -5
  400. package/dist/client/extensions/ExtensionViewer.js.map +1 -1
  401. package/dist/client/extensions/InlineExtensionFrame.d.ts.map +1 -1
  402. package/dist/client/extensions/InlineExtensionFrame.js +3 -1
  403. package/dist/client/extensions/InlineExtensionFrame.js.map +1 -1
  404. package/dist/client/extensions/portable-extension.d.ts.map +1 -1
  405. package/dist/client/extensions/portable-extension.js +1 -0
  406. package/dist/client/extensions/portable-extension.js.map +1 -1
  407. package/dist/client/org/OrgSwitcher.d.ts +1 -1
  408. package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
  409. package/dist/client/org/OrgSwitcher.js +11 -6
  410. package/dist/client/org/OrgSwitcher.js.map +1 -1
  411. package/dist/client/org/TeamPage.d.ts.map +1 -1
  412. package/dist/client/org/TeamPage.js +5 -5
  413. package/dist/client/org/TeamPage.js.map +1 -1
  414. package/dist/client/session-replay.d.ts +0 -8
  415. package/dist/client/session-replay.d.ts.map +1 -1
  416. package/dist/client/session-replay.js +3 -80
  417. package/dist/client/session-replay.js.map +1 -1
  418. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  419. package/dist/client/settings/SettingsPanel.js +89 -33
  420. package/dist/client/settings/SettingsPanel.js.map +1 -1
  421. package/dist/client/settings/SettingsSection.d.ts +19 -4
  422. package/dist/client/settings/SettingsSection.d.ts.map +1 -1
  423. package/dist/client/settings/SettingsSection.js +33 -4
  424. package/dist/client/settings/SettingsSection.js.map +1 -1
  425. package/dist/client/settings/SettingsTabsPage.d.ts.map +1 -1
  426. package/dist/client/settings/SettingsTabsPage.js +21 -10
  427. package/dist/client/settings/SettingsTabsPage.js.map +1 -1
  428. package/dist/client/sse-event-processor.d.ts +9 -0
  429. package/dist/client/sse-event-processor.d.ts.map +1 -1
  430. package/dist/client/sse-event-processor.js +20 -2
  431. package/dist/client/sse-event-processor.js.map +1 -1
  432. package/dist/db-admin/agent-tools.d.ts.map +1 -1
  433. package/dist/db-admin/agent-tools.js +7 -2
  434. package/dist/db-admin/agent-tools.js.map +1 -1
  435. package/dist/db-admin/operations.d.ts.map +1 -1
  436. package/dist/db-admin/operations.js +90 -4
  437. package/dist/db-admin/operations.js.map +1 -1
  438. package/dist/db-admin/routes.d.ts.map +1 -1
  439. package/dist/db-admin/routes.js +1 -0
  440. package/dist/db-admin/routes.js.map +1 -1
  441. package/dist/db-admin/types.d.ts +4 -0
  442. package/dist/db-admin/types.d.ts.map +1 -1
  443. package/dist/db-admin/types.js.map +1 -1
  444. package/dist/extensions/actions.d.ts.map +1 -1
  445. package/dist/extensions/actions.js +85 -5
  446. package/dist/extensions/actions.js.map +1 -1
  447. package/dist/extensions/html-shell.d.ts +5 -4
  448. package/dist/extensions/html-shell.d.ts.map +1 -1
  449. package/dist/extensions/html-shell.js.map +1 -1
  450. package/dist/extensions/routes.d.ts.map +1 -1
  451. package/dist/extensions/routes.js +8 -0
  452. package/dist/extensions/routes.js.map +1 -1
  453. package/dist/navigation/index.d.ts +1 -1
  454. package/dist/navigation/index.d.ts.map +1 -1
  455. package/dist/navigation/index.js +1 -1
  456. package/dist/navigation/index.js.map +1 -1
  457. package/dist/notifications/channels.d.ts +8 -3
  458. package/dist/notifications/channels.d.ts.map +1 -1
  459. package/dist/notifications/channels.js +61 -22
  460. package/dist/notifications/channels.js.map +1 -1
  461. package/dist/notifications/registry.d.ts.map +1 -1
  462. package/dist/notifications/registry.js +14 -3
  463. package/dist/notifications/registry.js.map +1 -1
  464. package/dist/notifications/types.d.ts +4 -1
  465. package/dist/notifications/types.d.ts.map +1 -1
  466. package/dist/notifications/types.js.map +1 -1
  467. package/dist/resources/handlers.d.ts +5 -0
  468. package/dist/resources/handlers.d.ts.map +1 -1
  469. package/dist/resources/handlers.js +9 -8
  470. package/dist/resources/handlers.js.map +1 -1
  471. package/dist/server/agent-chat-plugin.d.ts +5 -1
  472. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  473. package/dist/server/agent-chat-plugin.js +2 -2
  474. package/dist/server/agent-chat-plugin.js.map +1 -1
  475. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  476. package/dist/server/poll.d.ts +12 -4
  477. package/dist/server/poll.d.ts.map +1 -1
  478. package/dist/server/poll.js +236 -9
  479. package/dist/server/poll.js.map +1 -1
  480. package/dist/server/request-context.d.ts +7 -0
  481. package/dist/server/request-context.d.ts.map +1 -1
  482. package/dist/server/request-context.js.map +1 -1
  483. package/dist/styles/agent-conversation.css +1 -1
  484. package/dist/styles/agent-native.css +27 -0
  485. package/dist/templates/default/.agents/skills/actions/SKILL.md +5 -0
  486. package/dist/templates/default/.agents/skills/adding-a-feature/SKILL.md +5 -0
  487. package/dist/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
  488. package/dist/templates/default/.agents/skills/security/SKILL.md +7 -0
  489. package/dist/templates/default/.agents/skills/self-modifying-code/SKILL.md +20 -2
  490. package/dist/templates/default/.agents/skills/storing-data/SKILL.md +5 -1
  491. package/dist/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  492. package/dist/templates/default/AGENTS.md +14 -5
  493. package/dist/templates/default/package.json +2 -1
  494. package/dist/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  495. package/dist/templates/headless/AGENTS.md +13 -3
  496. package/dist/templates/headless/package.json +1 -0
  497. package/dist/templates/workspace-core/.agents/skills/actions/SKILL.md +5 -0
  498. package/dist/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +5 -0
  499. package/dist/templates/workspace-core/.agents/skills/context-awareness/SKILL.md +4 -0
  500. package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +6 -0
  501. package/dist/templates/workspace-core/.agents/skills/performance/SKILL.md +4 -0
  502. package/dist/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +1 -1
  503. package/dist/templates/workspace-core/.agents/skills/security/SKILL.md +7 -0
  504. package/dist/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +20 -2
  505. package/dist/templates/workspace-core/.agents/skills/storing-data/SKILL.md +5 -1
  506. package/dist/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  507. package/dist/templates/workspace-core/AGENTS.md +7 -1
  508. package/dist/templates/workspace-root/AGENTS.md +17 -5
  509. package/dist/templates/workspace-root/package.json +1 -0
  510. package/docs/content/faq.mdx +17 -0
  511. package/docs/content/notifications.mdx +12 -6
  512. package/package.json +2 -2
  513. package/src/templates/default/.agents/skills/actions/SKILL.md +5 -0
  514. package/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +5 -0
  515. package/src/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
  516. package/src/templates/default/.agents/skills/security/SKILL.md +7 -0
  517. package/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +20 -2
  518. package/src/templates/default/.agents/skills/storing-data/SKILL.md +5 -1
  519. package/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  520. package/src/templates/default/AGENTS.md +14 -5
  521. package/src/templates/default/package.json +2 -1
  522. package/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  523. package/src/templates/headless/AGENTS.md +13 -3
  524. package/src/templates/headless/package.json +1 -0
  525. package/src/templates/workspace-core/.agents/skills/actions/SKILL.md +5 -0
  526. package/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +5 -0
  527. package/src/templates/workspace-core/.agents/skills/context-awareness/SKILL.md +4 -0
  528. package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +6 -0
  529. package/src/templates/workspace-core/.agents/skills/performance/SKILL.md +4 -0
  530. package/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +1 -1
  531. package/src/templates/workspace-core/.agents/skills/security/SKILL.md +7 -0
  532. package/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +20 -2
  533. package/src/templates/workspace-core/.agents/skills/storing-data/SKILL.md +5 -1
  534. package/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  535. package/src/templates/workspace-core/AGENTS.md +7 -1
  536. package/src/templates/workspace-root/AGENTS.md +17 -5
  537. package/src/templates/workspace-root/package.json +1 -0
  538. package/corpus/templates/analytics/changelog/2026-07-08-session-replay-clamps-ultra-wide-viewports-while-keeping-the.md +0 -6
@@ -0,0 +1,678 @@
1
+ /**
2
+ * `agent-native upgrade` — bring an existing Agent Native app/workspace current.
3
+ *
4
+ * Older branches often break after a core bump. Agents then invent
5
+ * `pnpm.overrides` / patches against `@agent-native/*` (especially dispatch),
6
+ * which makes things worse. This command is the supported path:
7
+ *
8
+ * 1. Doctor: refuse or warn on framework overrides/patches
9
+ * 2. Bump `@agent-native/*` deps to `latest` (unless file:/link:/workspace:)
10
+ * 3. Install
11
+ * 4. Refresh scaffold skills (`skills update scaffold --project`)
12
+ * 5. Verify with typecheck when available
13
+ *
14
+ * On failure: print the error and stop. Do not patch framework packages.
15
+ */
16
+ import { spawnSync } from "node:child_process";
17
+ import fs from "node:fs";
18
+ import path from "node:path";
19
+ import { fileURLToPath } from "node:url";
20
+ const AGENT_NATIVE_SCOPE = "@agent-native/";
21
+ const PINNABLE_VERSION = "latest";
22
+ const defaultIo = {
23
+ log: (message) => console.log(message),
24
+ err: (message) => console.error(message),
25
+ spawn: (command, args, options) => spawnSync(command, args, {
26
+ cwd: options.cwd,
27
+ stdio: options.stdio ?? "inherit",
28
+ encoding: "utf-8",
29
+ shell: process.platform === "win32",
30
+ }),
31
+ runSkillsUpdate: async (cwd) => {
32
+ const { runSkills } = await import("./skills.js");
33
+ const previous = process.cwd();
34
+ process.chdir(cwd);
35
+ try {
36
+ await runSkills(["update", "scaffold", "--project"]);
37
+ }
38
+ finally {
39
+ process.chdir(previous);
40
+ }
41
+ },
42
+ };
43
+ export function parseUpgradeArgs(argv) {
44
+ const opts = { command: "run" };
45
+ for (let i = 0; i < argv.length; i++) {
46
+ const arg = argv[i];
47
+ if (arg === "check" || arg === "doctor") {
48
+ opts.command = "check";
49
+ }
50
+ else if (arg === "help" || arg === "--help" || arg === "-h") {
51
+ opts.command = "help";
52
+ opts.help = true;
53
+ }
54
+ else if (arg === "--dry-run") {
55
+ opts.dryRun = true;
56
+ }
57
+ else if (arg === "--skip-install") {
58
+ opts.skipInstall = true;
59
+ }
60
+ else if (arg === "--skip-verify") {
61
+ opts.skipVerify = true;
62
+ }
63
+ else if (arg === "--skip-skills") {
64
+ opts.skipSkills = true;
65
+ }
66
+ else if (arg === "--json") {
67
+ opts.json = true;
68
+ }
69
+ else if (arg === "--force") {
70
+ opts.force = true;
71
+ }
72
+ else if (arg === "--cwd" && argv[i + 1]) {
73
+ opts.cwd = argv[++i];
74
+ }
75
+ else if (arg.startsWith("--cwd=")) {
76
+ opts.cwd = arg.slice("--cwd=".length);
77
+ }
78
+ else if (!arg.startsWith("-")) {
79
+ // Ignore unknown positional for forward-compat; help covers usage.
80
+ }
81
+ }
82
+ return opts;
83
+ }
84
+ export function printUpgradeHelp(io = defaultIo) {
85
+ io.log([
86
+ "Usage:",
87
+ " agent-native upgrade Bring this app/workspace to current @agent-native/*",
88
+ " agent-native upgrade check Doctor only: overrides, patches, pending bumps",
89
+ " agent-native upgrade --dry-run Show the plan without writing or installing",
90
+ "",
91
+ "Options:",
92
+ " --skip-install Bump package.json only; do not run the package manager",
93
+ " --skip-skills Skip `skills update scaffold --project`",
94
+ " --skip-verify Skip typecheck after upgrade",
95
+ " --force Continue even when framework overrides/patches are present",
96
+ " --json Machine-readable report",
97
+ " --cwd <dir> Run against a project root other than the current directory",
98
+ "",
99
+ "On failure: report the error and stop. Do NOT add pnpm.overrides,",
100
+ "patchedDependencies, or local patches against @agent-native/* packages.",
101
+ "Do NOT edit node_modules/@agent-native/* or invent dispatch/core behavior",
102
+ "overrides. Revert those changes and re-run `agent-native upgrade`.",
103
+ ].join("\n"));
104
+ }
105
+ function readJsonFile(filePath) {
106
+ try {
107
+ return JSON.parse(fs.readFileSync(filePath, "utf-8"));
108
+ }
109
+ catch {
110
+ return null;
111
+ }
112
+ }
113
+ function writeJsonFile(filePath, value) {
114
+ fs.writeFileSync(filePath, `${JSON.stringify(value, null, 2)}\n`);
115
+ }
116
+ export function isAgentNativePackageName(name) {
117
+ return name === "@agent-native" || name.startsWith(AGENT_NATIVE_SCOPE);
118
+ }
119
+ export function isPinnedOrLocalVersion(version) {
120
+ const v = version.trim();
121
+ return (v.startsWith("file:") ||
122
+ v.startsWith("link:") ||
123
+ v.startsWith("workspace:") ||
124
+ v.startsWith("portal:") ||
125
+ v.startsWith("git+") ||
126
+ v.startsWith("github:") ||
127
+ v.startsWith("http:") ||
128
+ v.startsWith("https:"));
129
+ }
130
+ export function shouldBumpAgentNativeVersion(version) {
131
+ if (isPinnedOrLocalVersion(version))
132
+ return false;
133
+ return version.trim() !== PINNABLE_VERSION;
134
+ }
135
+ function collectOverrideFindings(file, pkg) {
136
+ const findings = [];
137
+ const tables = [
138
+ { field: "pnpm.overrides", map: pkg.pnpm?.overrides },
139
+ { field: "pnpm.patchedDependencies", map: pkg.pnpm?.patchedDependencies },
140
+ { field: "overrides", map: pkg.overrides },
141
+ { field: "resolutions", map: pkg.resolutions },
142
+ ];
143
+ for (const table of tables) {
144
+ if (!table.map)
145
+ continue;
146
+ for (const [key, value] of Object.entries(table.map)) {
147
+ // Keys may be bare (`@agent-native/core`) or versioned
148
+ // (`@agent-native/core@1.2.3` for patchedDependencies).
149
+ if (key.includes(AGENT_NATIVE_SCOPE) || isAgentNativePackageName(key)) {
150
+ findings.push({ file, field: table.field, key, value: String(value) });
151
+ }
152
+ }
153
+ }
154
+ return findings;
155
+ }
156
+ function collectBumps(file, pkg) {
157
+ const bumps = [];
158
+ const sections = [
159
+ "dependencies",
160
+ "devDependencies",
161
+ "optionalDependencies",
162
+ ];
163
+ for (const section of sections) {
164
+ const deps = pkg[section];
165
+ if (!deps)
166
+ continue;
167
+ for (const [name, version] of Object.entries(deps)) {
168
+ if (!isAgentNativePackageName(name))
169
+ continue;
170
+ if (!shouldBumpAgentNativeVersion(version))
171
+ continue;
172
+ bumps.push({
173
+ file,
174
+ section,
175
+ name,
176
+ from: version,
177
+ to: PINNABLE_VERSION,
178
+ });
179
+ }
180
+ }
181
+ return bumps;
182
+ }
183
+ function applyBumps(pkg, bumps) {
184
+ for (const bump of bumps) {
185
+ const section = pkg[bump.section];
186
+ if (!section)
187
+ continue;
188
+ if (section[bump.name] === bump.from) {
189
+ section[bump.name] = bump.to;
190
+ }
191
+ }
192
+ }
193
+ export function detectUpgradeProject(cwd) {
194
+ const start = path.resolve(cwd);
195
+ let dir = start;
196
+ while (true) {
197
+ const pkgPath = path.join(dir, "package.json");
198
+ if (fs.existsSync(pkgPath)) {
199
+ const pkg = readJsonFile(pkgPath);
200
+ const hasCore = Boolean(pkg?.dependencies?.["@agent-native/core"]) ||
201
+ Boolean(pkg?.devDependencies?.["@agent-native/core"]);
202
+ const workspaceYaml = path.join(dir, "pnpm-workspace.yaml");
203
+ const isWorkspace = fs.existsSync(workspaceYaml);
204
+ if (hasCore || isWorkspace) {
205
+ const packageFiles = [pkgPath];
206
+ if (isWorkspace) {
207
+ packageFiles.push(...workspacePackageFiles(dir, workspaceYaml));
208
+ }
209
+ return {
210
+ root: dir,
211
+ kind: isWorkspace ? "workspace" : "standalone",
212
+ packageFiles: Array.from(new Set(packageFiles)),
213
+ };
214
+ }
215
+ }
216
+ const parent = path.dirname(dir);
217
+ if (parent === dir)
218
+ break;
219
+ dir = parent;
220
+ }
221
+ return null;
222
+ }
223
+ function workspacePackageFiles(root, workspaceYaml) {
224
+ const patterns = parseWorkspacePackagePatterns(workspaceYaml);
225
+ const included = new Set();
226
+ const excluded = new Set();
227
+ for (const rawPattern of patterns) {
228
+ const exclude = rawPattern.startsWith("!");
229
+ const pattern = exclude ? rawPattern.slice(1) : rawPattern;
230
+ const files = packageFilesForWorkspacePattern(root, pattern);
231
+ for (const file of files) {
232
+ if (exclude)
233
+ excluded.add(file);
234
+ else
235
+ included.add(file);
236
+ }
237
+ }
238
+ return Array.from(included)
239
+ .filter((file) => !excluded.has(file))
240
+ .sort();
241
+ }
242
+ function parseWorkspacePackagePatterns(workspaceYaml) {
243
+ let text = "";
244
+ try {
245
+ text = fs.readFileSync(workspaceYaml, "utf-8");
246
+ }
247
+ catch {
248
+ return ["apps/*", "packages/*"];
249
+ }
250
+ const patterns = [];
251
+ let inPackages = false;
252
+ for (const line of text.split(/\r?\n/)) {
253
+ const trimmed = line.trim();
254
+ if (!trimmed || trimmed.startsWith("#"))
255
+ continue;
256
+ if (/^[A-Za-z0-9_-]+:/.test(trimmed)) {
257
+ inPackages = trimmed === "packages:";
258
+ continue;
259
+ }
260
+ if (!inPackages || !trimmed.startsWith("-"))
261
+ continue;
262
+ const pattern = trimmed
263
+ .slice(1)
264
+ .trim()
265
+ .replace(/^['"]|['"]$/g, "");
266
+ if (pattern)
267
+ patterns.push(pattern);
268
+ }
269
+ return patterns.length ? patterns : ["apps/*", "packages/*"];
270
+ }
271
+ function packageFilesForWorkspacePattern(root, pattern) {
272
+ const normalized = pattern.replace(/\\/g, "/").replace(/\/+$/g, "");
273
+ if (!normalized || normalized.includes("node_modules"))
274
+ return [];
275
+ if (normalized.endsWith("/**")) {
276
+ return collectPackageFilesRecursive(path.join(root, normalized.slice(0, -3)));
277
+ }
278
+ if (normalized.endsWith("/*")) {
279
+ const base = path.join(root, normalized.slice(0, -2));
280
+ if (!fs.existsSync(base))
281
+ return [];
282
+ return fs
283
+ .readdirSync(base, { withFileTypes: true })
284
+ .filter((entry) => entry.isDirectory())
285
+ .map((entry) => path.join(base, entry.name, "package.json"))
286
+ .filter((file) => fs.existsSync(file));
287
+ }
288
+ if (normalized.includes("*")) {
289
+ return collectPackageFilesRecursive(path.join(root, normalized.split("*")[0]));
290
+ }
291
+ const file = path.join(root, normalized, "package.json");
292
+ return fs.existsSync(file) ? [file] : [];
293
+ }
294
+ function collectPackageFilesRecursive(dir) {
295
+ if (!fs.existsSync(dir))
296
+ return [];
297
+ const files = [];
298
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
299
+ if (!entry.isDirectory())
300
+ continue;
301
+ if (entry.name === "node_modules" || entry.name === ".git")
302
+ continue;
303
+ const child = path.join(dir, entry.name);
304
+ const pkg = path.join(child, "package.json");
305
+ if (fs.existsSync(pkg))
306
+ files.push(pkg);
307
+ files.push(...collectPackageFilesRecursive(child));
308
+ }
309
+ return files;
310
+ }
311
+ function resolveInstalledPackageVersion(projectRoot, packageName) {
312
+ let dir = projectRoot;
313
+ while (true) {
314
+ const candidate = path.join(dir, "node_modules", ...packageName.split("/"), "package.json");
315
+ if (fs.existsSync(candidate)) {
316
+ const pkg = readJsonFile(candidate);
317
+ return typeof pkg?.version === "string" ? pkg.version : null;
318
+ }
319
+ const parent = path.dirname(dir);
320
+ if (parent === dir)
321
+ break;
322
+ dir = parent;
323
+ }
324
+ return null;
325
+ }
326
+ function readCliCoreVersion() {
327
+ try {
328
+ const here = path.dirname(fileURLToPath(import.meta.url));
329
+ const pkgPath = path.resolve(here, "../../package.json");
330
+ const pkg = readJsonFile(pkgPath);
331
+ return typeof pkg?.version === "string" ? pkg.version : null;
332
+ }
333
+ catch {
334
+ return null;
335
+ }
336
+ }
337
+ function detectPackageManager(projectRoot) {
338
+ if (fs.existsSync(path.join(projectRoot, "pnpm-lock.yaml")))
339
+ return "pnpm";
340
+ if (fs.existsSync(path.join(projectRoot, "yarn.lock")))
341
+ return "yarn";
342
+ if (fs.existsSync(path.join(projectRoot, "package-lock.json")))
343
+ return "npm";
344
+ // Prefer pnpm for Agent Native scaffolds.
345
+ return "pnpm";
346
+ }
347
+ function installArgs(pm) {
348
+ if (pm === "npm")
349
+ return ["install"];
350
+ if (pm === "yarn")
351
+ return ["install"];
352
+ return ["install"];
353
+ }
354
+ export function buildUpgradeDoctorReport(project) {
355
+ const findings = [];
356
+ const bumps = [];
357
+ for (const file of project.packageFiles) {
358
+ const pkg = readJsonFile(file);
359
+ if (!pkg)
360
+ continue;
361
+ findings.push(...collectOverrideFindings(file, pkg));
362
+ bumps.push(...collectBumps(file, pkg));
363
+ }
364
+ const installedCoreVersion = resolveInstalledPackageVersion(project.root, "@agent-native/core");
365
+ const cliCoreVersion = readCliCoreVersion();
366
+ const skillsUpdateScript = project.packageFiles.some((file) => {
367
+ const pkg = readJsonFile(file);
368
+ return Boolean(pkg?.scripts?.["skills:update"]);
369
+ });
370
+ return {
371
+ project,
372
+ findings,
373
+ bumps,
374
+ installedCoreVersion,
375
+ cliCoreVersion,
376
+ scaffoldStaleHint: skillsUpdateScript || bumps.length > 0,
377
+ };
378
+ }
379
+ function relativeTo(root, file) {
380
+ const rel = path.relative(root, file);
381
+ return rel || ".";
382
+ }
383
+ function formatDoctorHuman(report) {
384
+ const lines = [];
385
+ lines.push(`Project: ${report.project.root} (${report.project.kind})`);
386
+ if (report.installedCoreVersion) {
387
+ lines.push(`Installed @agent-native/core: ${report.installedCoreVersion}`);
388
+ }
389
+ else {
390
+ lines.push("Installed @agent-native/core: (not found in node_modules)");
391
+ }
392
+ if (report.cliCoreVersion) {
393
+ lines.push(`CLI package version: ${report.cliCoreVersion}`);
394
+ }
395
+ if (report.findings.length === 0) {
396
+ lines.push("Framework overrides/patches: none");
397
+ }
398
+ else {
399
+ lines.push("Framework overrides/patches:");
400
+ for (const finding of report.findings) {
401
+ lines.push(` - ${relativeTo(report.project.root, finding.file)} ${finding.field}["${finding.key}"] = ${finding.value}`);
402
+ }
403
+ }
404
+ if (report.bumps.length === 0) {
405
+ lines.push("Pending @agent-native/* bumps: none");
406
+ }
407
+ else {
408
+ lines.push("Pending @agent-native/* bumps:");
409
+ for (const bump of report.bumps) {
410
+ lines.push(` - ${relativeTo(report.project.root, bump.file)} ${bump.name}: ${bump.from} → ${bump.to}`);
411
+ }
412
+ }
413
+ return lines.join("\n");
414
+ }
415
+ const FAILURE_GUIDANCE = [
416
+ "Upgrade failed. Do not paper over this with framework patches.",
417
+ "Never add pnpm.overrides / patchedDependencies / resolutions for @agent-native/*.",
418
+ "Never edit node_modules/@agent-native/* or invent local dispatch/core behavior overrides.",
419
+ "Revert those changes if present, fix the app-level compile/runtime error, then re-run:",
420
+ " npx @agent-native/core@latest upgrade",
421
+ ].join("\n");
422
+ export async function runUpgrade(argv, io = defaultIo) {
423
+ const opts = parseUpgradeArgs(argv);
424
+ if (opts.help || opts.command === "help") {
425
+ printUpgradeHelp(io);
426
+ return 0;
427
+ }
428
+ const cwd = path.resolve(opts.cwd ?? process.cwd());
429
+ const project = detectUpgradeProject(cwd);
430
+ if (!project) {
431
+ const message = "No Agent Native app/workspace found. Run from an app or workspace root that depends on @agent-native/core.";
432
+ if (opts.json) {
433
+ io.err(JSON.stringify({ ok: false, message }, null, 2));
434
+ }
435
+ else {
436
+ io.err(message);
437
+ }
438
+ return 1;
439
+ }
440
+ const doctor = buildUpgradeDoctorReport(project);
441
+ if (opts.command === "check") {
442
+ if (opts.json) {
443
+ io.log(JSON.stringify({ ok: doctor.findings.length === 0, doctor }, null, 2));
444
+ }
445
+ else {
446
+ io.log(formatDoctorHuman(doctor));
447
+ if (doctor.findings.length > 0) {
448
+ io.err("");
449
+ io.err(FAILURE_GUIDANCE);
450
+ }
451
+ }
452
+ return doctor.findings.length > 0 ? 1 : 0;
453
+ }
454
+ const result = {
455
+ ok: true,
456
+ dryRun: Boolean(opts.dryRun),
457
+ doctor,
458
+ steps: [],
459
+ message: "",
460
+ exitCode: 0,
461
+ };
462
+ if (doctor.findings.length > 0 && !opts.force) {
463
+ result.ok = false;
464
+ result.exitCode = 1;
465
+ result.message =
466
+ "Blocked: framework overrides/patches for @agent-native/* are present. Remove them, then re-run upgrade (or pass --force to continue unsafely).";
467
+ result.steps.push({
468
+ id: "doctor",
469
+ status: "failed",
470
+ detail: result.message,
471
+ });
472
+ if (opts.json) {
473
+ io.err(JSON.stringify(result, null, 2));
474
+ }
475
+ else {
476
+ io.log(formatDoctorHuman(doctor));
477
+ io.err("");
478
+ io.err(result.message);
479
+ io.err("");
480
+ io.err(FAILURE_GUIDANCE);
481
+ }
482
+ return 1;
483
+ }
484
+ result.steps.push({
485
+ id: "doctor",
486
+ status: doctor.findings.length > 0 ? "ok" : "ok",
487
+ detail: doctor.findings.length > 0
488
+ ? "Continuing with --force despite framework overrides/patches"
489
+ : "No framework overrides/patches",
490
+ });
491
+ // Apply package.json bumps.
492
+ if (doctor.bumps.length === 0) {
493
+ result.steps.push({
494
+ id: "bump",
495
+ status: "skipped",
496
+ detail: "All @agent-native/* deps already use latest or local pins",
497
+ });
498
+ }
499
+ else if (opts.dryRun) {
500
+ result.steps.push({
501
+ id: "bump",
502
+ status: "planned",
503
+ detail: doctor.bumps
504
+ .map((b) => `${relativeTo(project.root, b.file)} ${b.name}: ${b.from} → ${b.to}`)
505
+ .join("; "),
506
+ });
507
+ }
508
+ else {
509
+ const byFile = new Map();
510
+ for (const bump of doctor.bumps) {
511
+ const list = byFile.get(bump.file) ?? [];
512
+ list.push(bump);
513
+ byFile.set(bump.file, list);
514
+ }
515
+ for (const [file, bumps] of byFile) {
516
+ const pkg = readJsonFile(file);
517
+ if (!pkg)
518
+ continue;
519
+ applyBumps(pkg, bumps);
520
+ writeJsonFile(file, pkg);
521
+ }
522
+ result.steps.push({
523
+ id: "bump",
524
+ status: "ok",
525
+ detail: `Updated ${doctor.bumps.length} @agent-native/* dependency pin(s)`,
526
+ });
527
+ }
528
+ // Install.
529
+ if (opts.skipInstall) {
530
+ result.steps.push({
531
+ id: "install",
532
+ status: "skipped",
533
+ detail: "--skip-install",
534
+ });
535
+ }
536
+ else if (opts.dryRun) {
537
+ result.steps.push({
538
+ id: "install",
539
+ status: "planned",
540
+ detail: `${detectPackageManager(project.root)} install`,
541
+ });
542
+ }
543
+ else {
544
+ const pm = detectPackageManager(project.root);
545
+ const spawned = io.spawn(pm, installArgs(pm), {
546
+ cwd: project.root,
547
+ stdio: opts.json ? "pipe" : "inherit",
548
+ });
549
+ if (spawned.status !== 0) {
550
+ result.ok = false;
551
+ result.exitCode = spawned.status ?? 1;
552
+ result.message = `${pm} install failed`;
553
+ result.steps.push({
554
+ id: "install",
555
+ status: "failed",
556
+ detail: result.message,
557
+ });
558
+ emitResult(io, opts, result);
559
+ return result.exitCode;
560
+ }
561
+ result.steps.push({ id: "install", status: "ok", detail: `${pm} install` });
562
+ }
563
+ // Skills refresh.
564
+ if (opts.skipSkills) {
565
+ result.steps.push({
566
+ id: "skills",
567
+ status: "skipped",
568
+ detail: "--skip-skills",
569
+ });
570
+ }
571
+ else if (opts.dryRun) {
572
+ result.steps.push({
573
+ id: "skills",
574
+ status: "planned",
575
+ detail: "skills update scaffold --project",
576
+ });
577
+ }
578
+ else {
579
+ try {
580
+ await io.runSkillsUpdate(project.root);
581
+ result.steps.push({
582
+ id: "skills",
583
+ status: "ok",
584
+ detail: "skills update scaffold --project",
585
+ });
586
+ }
587
+ catch (err) {
588
+ result.ok = false;
589
+ result.exitCode = 1;
590
+ result.message = `skills update failed: ${err instanceof Error ? err.message : String(err)}`;
591
+ result.steps.push({
592
+ id: "skills",
593
+ status: "failed",
594
+ detail: result.message,
595
+ });
596
+ emitResult(io, opts, result);
597
+ return result.exitCode;
598
+ }
599
+ }
600
+ // Verify.
601
+ if (opts.skipVerify) {
602
+ result.steps.push({
603
+ id: "verify",
604
+ status: "skipped",
605
+ detail: "--skip-verify",
606
+ });
607
+ }
608
+ else if (opts.dryRun) {
609
+ result.steps.push({
610
+ id: "verify",
611
+ status: "planned",
612
+ detail: "typecheck (when available)",
613
+ });
614
+ }
615
+ else {
616
+ const rootPkg = readJsonFile(path.join(project.root, "package.json"));
617
+ const hasTypecheck = Boolean(rootPkg?.scripts?.typecheck);
618
+ if (!hasTypecheck) {
619
+ result.steps.push({
620
+ id: "verify",
621
+ status: "skipped",
622
+ detail: "no typecheck script",
623
+ });
624
+ }
625
+ else {
626
+ const pm = detectPackageManager(project.root);
627
+ const args = pm === "npm"
628
+ ? ["run", "typecheck"]
629
+ : pm === "yarn"
630
+ ? ["typecheck"]
631
+ : ["typecheck"];
632
+ const spawned = io.spawn(pm, args, {
633
+ cwd: project.root,
634
+ stdio: opts.json ? "pipe" : "inherit",
635
+ });
636
+ if (spawned.status !== 0) {
637
+ result.ok = false;
638
+ result.exitCode = spawned.status ?? 1;
639
+ result.message = "typecheck failed";
640
+ result.steps.push({
641
+ id: "verify",
642
+ status: "failed",
643
+ detail: result.message,
644
+ });
645
+ emitResult(io, opts, result);
646
+ return result.exitCode;
647
+ }
648
+ result.steps.push({ id: "verify", status: "ok", detail: "typecheck" });
649
+ }
650
+ }
651
+ result.message = opts.dryRun
652
+ ? "Dry run complete. Re-run without --dry-run to apply."
653
+ : "Upgrade complete. If the app still fails to run, fix app-level code — do not patch @agent-native/*.";
654
+ emitResult(io, opts, result);
655
+ return 0;
656
+ }
657
+ function emitResult(io, opts, result) {
658
+ if (opts.json) {
659
+ const sink = result.ok ? io.log : io.err;
660
+ sink(JSON.stringify(result, null, 2));
661
+ return;
662
+ }
663
+ io.log(formatDoctorHuman(result.doctor));
664
+ io.log("");
665
+ for (const step of result.steps) {
666
+ io.log(`[${step.status}] ${step.id}${step.detail ? ` — ${step.detail}` : ""}`);
667
+ }
668
+ io.log("");
669
+ if (result.ok) {
670
+ io.log(result.message);
671
+ }
672
+ else {
673
+ io.err(result.message);
674
+ io.err("");
675
+ io.err(FAILURE_GUIDANCE);
676
+ }
677
+ }
678
+ //# sourceMappingURL=upgrade.js.map