@agent-native/core 0.86.1 → 0.88.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 (1282) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +18 -0
  3. package/corpus/core/docs/content/agent-native-toolkit.mdx +162 -0
  4. package/corpus/core/docs/content/components.mdx +13 -0
  5. package/corpus/core/docs/content/creating-templates.mdx +7 -0
  6. package/corpus/core/docs/content/locales/ar-SA/agent-native-toolkit.mdx +73 -0
  7. package/corpus/core/docs/content/locales/ar-SA/components.mdx +9 -0
  8. package/corpus/core/docs/content/locales/ar-SA/creating-templates.mdx +2 -0
  9. package/corpus/core/docs/content/locales/ar-SA/sharing.mdx +15 -7
  10. package/corpus/core/docs/content/locales/ar-SA/template-analytics.mdx +6 -0
  11. package/corpus/core/docs/content/locales/ar-SA/template-clips.mdx +7 -0
  12. package/corpus/core/docs/content/locales/ar-SA/tracking.mdx +6 -0
  13. package/corpus/core/docs/content/locales/de-DE/agent-native-toolkit.mdx +77 -0
  14. package/corpus/core/docs/content/locales/de-DE/components.mdx +9 -0
  15. package/corpus/core/docs/content/locales/de-DE/creating-templates.mdx +2 -0
  16. package/corpus/core/docs/content/locales/de-DE/sharing.mdx +15 -7
  17. package/corpus/core/docs/content/locales/de-DE/template-analytics.mdx +6 -0
  18. package/corpus/core/docs/content/locales/de-DE/template-clips.mdx +7 -0
  19. package/corpus/core/docs/content/locales/de-DE/tracking.mdx +6 -0
  20. package/corpus/core/docs/content/locales/es-ES/agent-native-toolkit.mdx +77 -0
  21. package/corpus/core/docs/content/locales/es-ES/components.mdx +9 -0
  22. package/corpus/core/docs/content/locales/es-ES/creating-templates.mdx +2 -0
  23. package/corpus/core/docs/content/locales/es-ES/sharing.mdx +15 -7
  24. package/corpus/core/docs/content/locales/es-ES/template-analytics.mdx +6 -0
  25. package/corpus/core/docs/content/locales/es-ES/template-clips.mdx +7 -0
  26. package/corpus/core/docs/content/locales/es-ES/tracking.mdx +6 -0
  27. package/corpus/core/docs/content/locales/fr-FR/agent-native-toolkit.mdx +79 -0
  28. package/corpus/core/docs/content/locales/fr-FR/components.mdx +9 -0
  29. package/corpus/core/docs/content/locales/fr-FR/creating-templates.mdx +2 -0
  30. package/corpus/core/docs/content/locales/fr-FR/sharing.mdx +15 -7
  31. package/corpus/core/docs/content/locales/fr-FR/template-analytics.mdx +6 -0
  32. package/corpus/core/docs/content/locales/fr-FR/template-clips.mdx +7 -0
  33. package/corpus/core/docs/content/locales/fr-FR/tracking.mdx +6 -0
  34. package/corpus/core/docs/content/locales/hi-IN/agent-native-toolkit.mdx +74 -0
  35. package/corpus/core/docs/content/locales/hi-IN/components.mdx +9 -0
  36. package/corpus/core/docs/content/locales/hi-IN/creating-templates.mdx +2 -0
  37. package/corpus/core/docs/content/locales/hi-IN/sharing.mdx +15 -7
  38. package/corpus/core/docs/content/locales/hi-IN/template-analytics.mdx +6 -0
  39. package/corpus/core/docs/content/locales/hi-IN/template-clips.mdx +7 -0
  40. package/corpus/core/docs/content/locales/hi-IN/tracking.mdx +6 -0
  41. package/corpus/core/docs/content/locales/ja-JP/agent-native-toolkit.mdx +67 -0
  42. package/corpus/core/docs/content/locales/ja-JP/components.mdx +9 -0
  43. package/corpus/core/docs/content/locales/ja-JP/creating-templates.mdx +2 -0
  44. package/corpus/core/docs/content/locales/ja-JP/sharing.mdx +15 -7
  45. package/corpus/core/docs/content/locales/ja-JP/template-analytics.mdx +6 -0
  46. package/corpus/core/docs/content/locales/ja-JP/template-clips.mdx +7 -0
  47. package/corpus/core/docs/content/locales/ja-JP/tracking.mdx +6 -0
  48. package/corpus/core/docs/content/locales/ko-KR/agent-native-toolkit.mdx +63 -0
  49. package/corpus/core/docs/content/locales/ko-KR/components.mdx +9 -0
  50. package/corpus/core/docs/content/locales/ko-KR/creating-templates.mdx +2 -0
  51. package/corpus/core/docs/content/locales/ko-KR/sharing.mdx +15 -7
  52. package/corpus/core/docs/content/locales/ko-KR/template-analytics.mdx +6 -0
  53. package/corpus/core/docs/content/locales/ko-KR/template-clips.mdx +7 -0
  54. package/corpus/core/docs/content/locales/ko-KR/tracking.mdx +6 -0
  55. package/corpus/core/docs/content/locales/pt-BR/agent-native-toolkit.mdx +77 -0
  56. package/corpus/core/docs/content/locales/pt-BR/components.mdx +9 -0
  57. package/corpus/core/docs/content/locales/pt-BR/creating-templates.mdx +2 -0
  58. package/corpus/core/docs/content/locales/pt-BR/sharing.mdx +15 -7
  59. package/corpus/core/docs/content/locales/pt-BR/template-analytics.mdx +6 -0
  60. package/corpus/core/docs/content/locales/pt-BR/template-clips.mdx +7 -0
  61. package/corpus/core/docs/content/locales/pt-BR/tracking.mdx +6 -0
  62. package/corpus/core/docs/content/locales/zh-CN/agent-native-toolkit.mdx +61 -0
  63. package/corpus/core/docs/content/locales/zh-CN/components.mdx +9 -0
  64. package/corpus/core/docs/content/locales/zh-CN/creating-templates.mdx +2 -0
  65. package/corpus/core/docs/content/locales/zh-CN/sharing.mdx +15 -7
  66. package/corpus/core/docs/content/locales/zh-CN/template-analytics.mdx +6 -0
  67. package/corpus/core/docs/content/locales/zh-CN/template-clips.mdx +7 -0
  68. package/corpus/core/docs/content/locales/zh-CN/tracking.mdx +6 -0
  69. package/corpus/core/docs/content/locales/zh-TW/agent-native-toolkit.mdx +61 -0
  70. package/corpus/core/docs/content/locales/zh-TW/components.mdx +9 -0
  71. package/corpus/core/docs/content/locales/zh-TW/creating-templates.mdx +2 -0
  72. package/corpus/core/docs/content/locales/zh-TW/sharing.mdx +15 -7
  73. package/corpus/core/docs/content/locales/zh-TW/template-analytics.mdx +6 -0
  74. package/corpus/core/docs/content/locales/zh-TW/template-clips.mdx +7 -0
  75. package/corpus/core/docs/content/locales/zh-TW/tracking.mdx +6 -0
  76. package/corpus/core/docs/content/sharing.mdx +39 -7
  77. package/corpus/core/docs/content/template-analytics.mdx +6 -0
  78. package/corpus/core/docs/content/template-clips.mdx +7 -0
  79. package/corpus/core/docs/content/tracking.mdx +6 -0
  80. package/corpus/core/package.json +9 -1
  81. package/corpus/core/src/application-state/emitter.ts +37 -5
  82. package/corpus/core/src/cli/create.ts +55 -3
  83. package/corpus/core/src/cli/workspacify.ts +10 -4
  84. package/corpus/core/src/client/components/ui/dialog.tsx +1 -91
  85. package/corpus/core/src/client/components/ui/dropdown-menu.tsx +1 -191
  86. package/corpus/core/src/client/components/ui/hover-card.tsx +1 -29
  87. package/corpus/core/src/client/components/ui/popover.tsx +1 -31
  88. package/corpus/core/src/client/components/ui/sheet.tsx +1 -96
  89. package/corpus/core/src/client/components/ui/tooltip.tsx +1 -53
  90. package/corpus/core/src/secrets/crypto.ts +47 -9
  91. package/corpus/core/src/server/action-discovery.ts +4 -0
  92. package/corpus/core/src/server/action-routes.ts +8 -1
  93. package/corpus/core/src/server/agent-access.ts +72 -0
  94. package/corpus/core/src/server/h3-helpers.ts +14 -2
  95. package/corpus/core/src/server/index.ts +28 -0
  96. package/corpus/core/src/server/request-context.ts +64 -7
  97. package/corpus/core/src/shared/agent-access.ts +112 -0
  98. package/corpus/core/src/shared/agent-readable-resource.ts +111 -0
  99. package/corpus/core/src/shared/index.ts +23 -0
  100. package/corpus/core/src/sharing/actions/create-agent-resource-link.ts +91 -0
  101. package/corpus/core/src/sharing/registry.ts +19 -0
  102. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +92 -0
  103. package/corpus/core/src/vite/client.ts +1 -0
  104. package/corpus/templates/analytics/AGENTS.md +4 -0
  105. package/corpus/templates/analytics/actions/get-sql-dashboard.ts +9 -113
  106. package/corpus/templates/analytics/app/components/InlineMetric.tsx +2 -2
  107. package/corpus/templates/analytics/app/components/dashboard/CumulativeNetChart.tsx +7 -2
  108. package/corpus/templates/analytics/app/components/dashboard/DataTable.tsx +16 -11
  109. package/corpus/templates/analytics/app/components/dashboard/DateRangePicker.tsx +2 -1
  110. package/corpus/templates/analytics/app/components/dashboard/MetricCard.tsx +7 -2
  111. package/corpus/templates/analytics/app/components/dashboard/RecentActivity.tsx +6 -3
  112. package/corpus/templates/analytics/app/components/dashboard/RevenueChart.tsx +6 -1
  113. package/corpus/templates/analytics/app/components/dashboard/RevenueComparisonChart.tsx +7 -2
  114. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +15 -11
  115. package/corpus/templates/analytics/app/components/dashboard/StatsCard.tsx +7 -1
  116. package/corpus/templates/analytics/app/components/dashboard/TimeSeriesChart.tsx +7 -2
  117. package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +16 -16
  118. package/corpus/templates/analytics/app/components/layout/HeaderActions.tsx +1 -2
  119. package/corpus/templates/analytics/app/components/layout/MobileNav.tsx +5 -2
  120. package/corpus/templates/analytics/app/components/layout/NewAnalysisDialog.tsx +6 -6
  121. package/corpus/templates/analytics/app/components/layout/NewDashboardDialog.tsx +3 -4
  122. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +12 -9
  123. package/corpus/templates/analytics/app/components/ui/calendar.tsx +1 -1
  124. package/corpus/templates/analytics/app/pages/Agents.tsx +19 -19
  125. package/corpus/templates/analytics/app/pages/DataDictionary.tsx +21 -21
  126. package/corpus/templates/analytics/app/pages/DataSources.tsx +28 -28
  127. package/corpus/templates/analytics/app/pages/NotFound.tsx +1 -2
  128. package/corpus/templates/analytics/app/pages/Placeholder.tsx +1 -2
  129. package/corpus/templates/analytics/app/pages/Settings.tsx +16 -16
  130. package/corpus/templates/analytics/app/pages/adhoc/DashboardSkeleton.tsx +2 -3
  131. package/corpus/templates/analytics/app/pages/adhoc/_shared/KpiChart.tsx +13 -8
  132. package/corpus/templates/analytics/app/pages/adhoc/_shared/components/DateRangeInput.tsx +2 -1
  133. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/ChartTypePicker.tsx +4 -2
  134. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/DateRangePicker.tsx +2 -1
  135. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/EventCombobox.tsx +7 -7
  136. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/EventPanel.tsx +1 -2
  137. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/EventRow.tsx +1 -2
  138. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/ExplorerChart.tsx +8 -3
  139. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/FilterBuilder.tsx +4 -5
  140. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/GroupByPicker.tsx +1 -2
  141. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/PropertyCombobox.tsx +7 -7
  142. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/PropertyValueCombobox.tsx +7 -7
  143. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/SqlPreview.tsx +1 -1
  144. package/corpus/templates/analytics/app/pages/adhoc/explorer/index.tsx +16 -16
  145. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/ChartCard.tsx +21 -16
  146. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +32 -32
  147. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/DashboardFilterBar.tsx +14 -14
  148. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/EmailReportDialog.tsx +13 -14
  149. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/PanelEditorDialog.tsx +21 -13
  150. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +28 -23
  151. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/ViewSqlPopover.tsx +12 -12
  152. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/ViewsMenu.tsx +15 -15
  153. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +33 -29
  154. package/corpus/templates/analytics/app/pages/analyses/AnalysesList.tsx +7 -8
  155. package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +19 -19
  156. package/corpus/templates/analytics/app/pages/analyses/LegacyFusionAnalysis.tsx +15 -11
  157. package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +42 -23
  158. package/corpus/templates/analytics/app/pages/sessions/SessionDevToolsPanel.tsx +12 -7
  159. package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +12 -12
  160. package/corpus/templates/analytics/app/pages/settings/AlertRulesSettingsCard.tsx +25 -25
  161. package/corpus/templates/analytics/app/root.tsx +2 -2
  162. package/corpus/templates/analytics/app/routes/catalog.tsx +8 -8
  163. package/corpus/templates/analytics/package.json +1 -0
  164. package/corpus/templates/analytics/server/db/index.ts +14 -0
  165. package/corpus/templates/analytics/server/lib/agent-readable-resource-context.ts +156 -0
  166. package/corpus/templates/analytics/server/lib/session-replay-agent-context.ts +59 -59
  167. package/corpus/templates/analytics/server/routes/[...page].get.ts +92 -25
  168. package/corpus/templates/analytics/server/routes/api/analysis-agent-context.json.get.ts +94 -0
  169. package/corpus/templates/analytics/server/routes/api/dashboard-agent-context.json.get.ts +109 -0
  170. package/corpus/templates/analytics/shared/resource-agent-access.ts +6 -0
  171. package/corpus/templates/analytics/shared/session-replay-agent-access.ts +14 -3
  172. package/corpus/templates/assets/app/components/create/RecentDraftsSection.tsx +2 -3
  173. package/corpus/templates/assets/app/components/generation/GenerationResults.tsx +9 -9
  174. package/corpus/templates/assets/app/components/layout/Header.tsx +4 -2
  175. package/corpus/templates/assets/app/components/layout/Layout.tsx +1 -1
  176. package/corpus/templates/assets/app/components/layout/PageShell.tsx +5 -6
  177. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +12 -12
  178. package/corpus/templates/assets/app/components/library/CreateLibraryDialog.tsx +8 -8
  179. package/corpus/templates/assets/app/components/library/EditLibraryDialog.tsx +7 -7
  180. package/corpus/templates/assets/app/components/library/LibraryCard.tsx +8 -8
  181. package/corpus/templates/assets/app/components/library/LibraryPresetGrid.tsx +2 -3
  182. package/corpus/templates/assets/app/root.tsx +1 -1
  183. package/corpus/templates/assets/app/routes/asset.$id.tsx +19 -19
  184. package/corpus/templates/assets/app/routes/audit.tsx +14 -15
  185. package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +54 -49
  186. package/corpus/templates/assets/app/routes/library.tsx +31 -31
  187. package/corpus/templates/assets/app/routes/settings.tsx +18 -18
  188. package/corpus/templates/assets/package.json +1 -0
  189. package/corpus/templates/brain/app/components/brain/CanonicalPreviewSheet.tsx +5 -6
  190. package/corpus/templates/brain/app/components/brain/Surface.tsx +8 -3
  191. package/corpus/templates/brain/app/components/layout/Layout.tsx +7 -7
  192. package/corpus/templates/brain/app/components/layout/Sidebar.tsx +6 -6
  193. package/corpus/templates/brain/app/routes/knowledge.tsx +19 -19
  194. package/corpus/templates/brain/app/routes/ops.tsx +18 -18
  195. package/corpus/templates/brain/app/routes/review.tsx +27 -22
  196. package/corpus/templates/brain/app/routes/search.tsx +20 -20
  197. package/corpus/templates/brain/app/routes/settings.tsx +22 -22
  198. package/corpus/templates/brain/app/routes/sources.tsx +23 -23
  199. package/corpus/templates/brain/package.json +1 -0
  200. package/corpus/templates/calendar/app/components/ThemeToggle.tsx +5 -5
  201. package/corpus/templates/calendar/app/components/TimezoneCombobox.tsx +6 -6
  202. package/corpus/templates/calendar/app/components/booking/BookingConfirmation.tsx +1 -2
  203. package/corpus/templates/calendar/app/components/booking/BookingForm.tsx +8 -9
  204. package/corpus/templates/calendar/app/components/booking/DatePicker.tsx +2 -2
  205. package/corpus/templates/calendar/app/components/booking/TimeSlotPicker.tsx +2 -3
  206. package/corpus/templates/calendar/app/components/calendar/AddCalendarDialog.tsx +15 -10
  207. package/corpus/templates/calendar/app/components/calendar/AttendeeAutocomplete.tsx +6 -6
  208. package/corpus/templates/calendar/app/components/calendar/CreateEventDialog.tsx +27 -27
  209. package/corpus/templates/calendar/app/components/calendar/DeleteEventDialog.tsx +12 -9
  210. package/corpus/templates/calendar/app/components/calendar/EventAttendeesSection.tsx +13 -10
  211. package/corpus/templates/calendar/app/components/calendar/EventDetailPanel.tsx +7 -7
  212. package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +21 -21
  213. package/corpus/templates/calendar/app/components/calendar/EventDialog.tsx +11 -11
  214. package/corpus/templates/calendar/app/components/calendar/EventOptionControls.tsx +9 -9
  215. package/corpus/templates/calendar/app/components/calendar/FindTimePanel.tsx +9 -9
  216. package/corpus/templates/calendar/app/components/calendar/GoogleConnectBanner.tsx +6 -6
  217. package/corpus/templates/calendar/app/components/calendar/GoogleSetupWizard.tsx +3 -3
  218. package/corpus/templates/calendar/app/components/calendar/GoogleSyncButton.tsx +1 -1
  219. package/corpus/templates/calendar/app/components/calendar/GuestNotificationDialog.tsx +10 -8
  220. package/corpus/templates/calendar/app/components/calendar/IntegrationsSidebar.tsx +12 -12
  221. package/corpus/templates/calendar/app/components/calendar/KeyboardShortcutsHelp.tsx +2 -2
  222. package/corpus/templates/calendar/app/components/calendar/MonthView.tsx +1 -1
  223. package/corpus/templates/calendar/app/components/calendar/PeopleSearchDialog.tsx +6 -6
  224. package/corpus/templates/calendar/app/components/calendar/WeekView.tsx +6 -6
  225. package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +2 -2
  226. package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +16 -16
  227. package/corpus/templates/calendar/app/pages/AvailabilitySettings.tsx +11 -11
  228. package/corpus/templates/calendar/app/pages/BookingLinksPage.tsx +50 -45
  229. package/corpus/templates/calendar/app/pages/BookingPage.tsx +2 -2
  230. package/corpus/templates/calendar/app/pages/BookingsList.tsx +12 -12
  231. package/corpus/templates/calendar/app/pages/CalendarView.tsx +17 -17
  232. package/corpus/templates/calendar/app/pages/ManageBookingPage.tsx +13 -13
  233. package/corpus/templates/calendar/app/pages/Settings.tsx +12 -12
  234. package/corpus/templates/calendar/app/routes/event.tsx +2 -2
  235. package/corpus/templates/calendar/package.json +1 -0
  236. package/corpus/templates/chat/app/components/layout/Header.tsx +4 -2
  237. package/corpus/templates/chat/app/components/layout/Layout.tsx +7 -7
  238. package/corpus/templates/chat/app/components/layout/Sidebar.tsx +12 -12
  239. package/corpus/templates/chat/app/routes/database.tsx +1 -2
  240. package/corpus/templates/chat/app/routes/observability.tsx +1 -1
  241. package/corpus/templates/chat/app/routes/settings.tsx +5 -5
  242. package/corpus/templates/chat/package.json +1 -0
  243. package/corpus/templates/clips/AGENTS.md +5 -0
  244. package/corpus/templates/clips/actions/create-recording-agent-link.ts +15 -20
  245. package/corpus/templates/clips/actions/delete-recording-permanent.ts +74 -34
  246. package/corpus/templates/clips/app/components/capture-install-options.tsx +6 -6
  247. package/corpus/templates/clips/app/components/editable-recording-title.tsx +2 -2
  248. package/corpus/templates/clips/app/components/editor/chapters-editor.tsx +7 -7
  249. package/corpus/templates/clips/app/components/editor/editor-layout.tsx +165 -3
  250. package/corpus/templates/clips/app/components/editor/editor-toolbar.tsx +101 -57
  251. package/corpus/templates/clips/app/components/editor/split-button.tsx +4 -5
  252. package/corpus/templates/clips/app/components/editor/stitch-manager.tsx +9 -9
  253. package/corpus/templates/clips/app/components/editor/thumbnail-picker.tsx +16 -11
  254. package/corpus/templates/clips/app/components/editor/timeline.tsx +4 -6
  255. package/corpus/templates/clips/app/components/editor/transcript-editor.tsx +5 -5
  256. package/corpus/templates/clips/app/components/editor/trim-handles.tsx +4 -7
  257. package/corpus/templates/clips/app/components/editor/waveform.tsx +13 -4
  258. package/corpus/templates/clips/app/components/layout/Header.tsx +4 -2
  259. package/corpus/templates/clips/app/components/layout/Layout.tsx +2 -3
  260. package/corpus/templates/clips/app/components/library/bulk-action-toolbar.tsx +4 -4
  261. package/corpus/templates/clips/app/components/library/create-space-dialog.tsx +8 -8
  262. package/corpus/templates/clips/app/components/library/empty-state.tsx +1 -2
  263. package/corpus/templates/clips/app/components/library/folder-tree.tsx +14 -14
  264. package/corpus/templates/clips/app/components/library/library-grid.tsx +7 -7
  265. package/corpus/templates/clips/app/components/library/library-layout.tsx +16 -16
  266. package/corpus/templates/clips/app/components/library/organization-switcher.tsx +11 -11
  267. package/corpus/templates/clips/app/components/library/recording-card.tsx +16 -12
  268. package/corpus/templates/clips/app/components/library/search-bar.tsx +5 -5
  269. package/corpus/templates/clips/app/components/library/sort-menu.tsx +3 -4
  270. package/corpus/templates/clips/app/components/library/tag-input.tsx +4 -4
  271. package/corpus/templates/clips/app/components/meetings/attendee-stack.tsx +6 -2
  272. package/corpus/templates/clips/app/components/meetings/auto-record-prompt.tsx +1 -1
  273. package/corpus/templates/clips/app/components/meetings/bullet-link.tsx +4 -4
  274. package/corpus/templates/clips/app/components/meetings/canvas-editor.tsx +5 -5
  275. package/corpus/templates/clips/app/components/meetings/meeting-card.tsx +3 -3
  276. package/corpus/templates/clips/app/components/meetings/quick-ask-sidebar.tsx +9 -9
  277. package/corpus/templates/clips/app/components/meetings/share-meeting-dialog.tsx +11 -6
  278. package/corpus/templates/clips/app/components/meetings/transcript-bubbles.tsx +4 -4
  279. package/corpus/templates/clips/app/components/player/access-password-prompt.tsx +2 -3
  280. package/corpus/templates/clips/app/components/player/comments-panel.tsx +14 -14
  281. package/corpus/templates/clips/app/components/player/delete-recording-menu.tsx +6 -7
  282. package/corpus/templates/clips/app/components/player/insights-panel.tsx +1 -2
  283. package/corpus/templates/clips/app/components/player/player-controls.tsx +15 -15
  284. package/corpus/templates/clips/app/components/player/reactions-tray.tsx +3 -3
  285. package/corpus/templates/clips/app/components/player/settings-panel.tsx +12 -13
  286. package/corpus/templates/clips/app/components/player/share-dialog.tsx +20 -11
  287. package/corpus/templates/clips/app/components/player/sign-in-prompt-dialog.tsx +2 -3
  288. package/corpus/templates/clips/app/components/player/timestamped-comment-button.tsx +2 -2
  289. package/corpus/templates/clips/app/components/player/transcript-panel.tsx +7 -7
  290. package/corpus/templates/clips/app/components/player/video-player.tsx +9 -9
  291. package/corpus/templates/clips/app/components/recorder/camera-visualizer.tsx +1 -1
  292. package/corpus/templates/clips/app/components/recorder/microphone-visualizer.tsx +1 -1
  293. package/corpus/templates/clips/app/components/recorder/pre-record-panel.tsx +21 -21
  294. package/corpus/templates/clips/app/components/recorder/recording-toolbar.tsx +5 -6
  295. package/corpus/templates/clips/app/components/recorder/storage-setup-card.tsx +6 -7
  296. package/corpus/templates/clips/app/components/sharing/share-ui.tsx +10 -10
  297. package/corpus/templates/clips/app/components/workspace/branding-editor.tsx +9 -5
  298. package/corpus/templates/clips/app/components/workspace/insights-hub.tsx +19 -9
  299. package/corpus/templates/clips/app/components/workspace/invite-dialog.tsx +9 -10
  300. package/corpus/templates/clips/app/components/workspace/members-list.tsx +10 -11
  301. package/corpus/templates/clips/app/components/workspace/notifications-list.tsx +1 -2
  302. package/corpus/templates/clips/app/components/workspace/top-creators-table.tsx +2 -3
  303. package/corpus/templates/clips/app/components/workspace/top-videos-table.tsx +2 -3
  304. package/corpus/templates/clips/app/hooks/use-desktop-promo.ts +1 -2
  305. package/corpus/templates/clips/app/root.tsx +10 -10
  306. package/corpus/templates/clips/app/routes/_app.dictate.tsx +13 -13
  307. package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +35 -26
  308. package/corpus/templates/clips/app/routes/_app.meetings._index.tsx +20 -20
  309. package/corpus/templates/clips/app/routes/_app.notifications.tsx +3 -3
  310. package/corpus/templates/clips/app/routes/_app.settings._index.tsx +31 -31
  311. package/corpus/templates/clips/app/routes/_app.settings.organization.tsx +13 -8
  312. package/corpus/templates/clips/app/routes/_app.spaces._index.tsx +1 -1
  313. package/corpus/templates/clips/app/routes/_app.trash.tsx +10 -10
  314. package/corpus/templates/clips/app/routes/bug-report.done.tsx +1 -1
  315. package/corpus/templates/clips/app/routes/bug-report.tsx +11 -11
  316. package/corpus/templates/clips/app/routes/download.tsx +2 -2
  317. package/corpus/templates/clips/app/routes/embed.$shareId.tsx +1 -1
  318. package/corpus/templates/clips/app/routes/invite.$token.tsx +13 -8
  319. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +28 -23
  320. package/corpus/templates/clips/app/routes/record.tsx +3 -3
  321. package/corpus/templates/clips/app/routes/share.$shareId.tsx +41 -20
  322. package/corpus/templates/clips/app/routes/share.meeting.$meetingId.tsx +2 -2
  323. package/corpus/templates/clips/changelog/2026-07-05-desktop-full-screen-recordings-with-system-audio-now-finaliz.md +6 -0
  324. package/corpus/templates/clips/changelog/2026-07-05-desktop-recording-shortcut-start-stop.md +6 -0
  325. package/corpus/templates/clips/changelog/2026-07-05-desktop-recordings-no-longer-fail-when-saved-capture-constra.md +6 -0
  326. package/corpus/templates/clips/changelog/2026-07-05-permanently-deleted-clips-now-clean-up-s3-media-objects.md +6 -0
  327. package/corpus/templates/clips/changelog/2026-07-05-timeline-zoom-controls-are-now-visible-in-the-clip-editor-an.md +6 -0
  328. package/corpus/templates/clips/desktop/src/app.tsx +98 -1
  329. package/corpus/templates/clips/desktop/src/components/MediaDeviceRow.tsx +3 -2
  330. package/corpus/templates/clips/desktop/src/lib/media-capture-constraints.ts +121 -0
  331. package/corpus/templates/clips/desktop/src/lib/recorder.ts +55 -84
  332. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +77 -39
  333. package/corpus/templates/clips/desktop/src-tauri/src/shortcuts.rs +60 -8
  334. package/corpus/templates/clips/package.json +1 -0
  335. package/corpus/templates/clips/server/lib/public-agent-context.ts +17 -12
  336. package/corpus/templates/clips/server/lib/recording-media-cleanup.ts +110 -0
  337. package/corpus/templates/clips/server/lib/s3-upload-provider.ts +126 -0
  338. package/corpus/templates/clips/server/routes/api/public-recording.get.ts +47 -11
  339. package/corpus/templates/clips/shared/agent-context.ts +23 -21
  340. package/corpus/templates/content/app/blocks/contentBlockRegistry.tsx +4 -4
  341. package/corpus/templates/content/app/components/EmptyState.tsx +1 -1
  342. package/corpus/templates/content/app/components/ThemeToggle.tsx +6 -6
  343. package/corpus/templates/content/app/components/editor/BubbleToolbar.tsx +5 -5
  344. package/corpus/templates/content/app/components/editor/CommentsSidebar.tsx +5 -5
  345. package/corpus/templates/content/app/components/editor/ContentReferencePreview.tsx +1 -1
  346. package/corpus/templates/content/app/components/editor/DocumentDatabase.tsx +36 -36
  347. package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +3 -3
  348. package/corpus/templates/content/app/components/editor/DocumentProperties.tsx +29 -29
  349. package/corpus/templates/content/app/components/editor/DocumentToolbar.tsx +23 -23
  350. package/corpus/templates/content/app/components/editor/EmojiPicker.tsx +4 -5
  351. package/corpus/templates/content/app/components/editor/LinkHoverPreview.tsx +4 -5
  352. package/corpus/templates/content/app/components/editor/NotionConflictBanner.tsx +1 -1
  353. package/corpus/templates/content/app/components/editor/NotionSyncBar.tsx +2 -2
  354. package/corpus/templates/content/app/components/editor/SlashCommandMenu.tsx +5 -5
  355. package/corpus/templates/content/app/components/editor/TableHoverControls.tsx +13 -13
  356. package/corpus/templates/content/app/components/editor/VersionHistoryPanel.tsx +10 -10
  357. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +41 -41
  358. package/corpus/templates/content/app/components/editor/database/shared.tsx +19 -19
  359. package/corpus/templates/content/app/components/editor/database-sources/BuilderSourceReviewDialog.tsx +8 -9
  360. package/corpus/templates/content/app/components/editor/extensions/AudioBlock.tsx +18 -19
  361. package/corpus/templates/content/app/components/editor/extensions/ImageBlock.tsx +20 -21
  362. package/corpus/templates/content/app/components/editor/extensions/LocalMdxComponentNode.tsx +8 -8
  363. package/corpus/templates/content/app/components/editor/extensions/VideoBlock.tsx +18 -19
  364. package/corpus/templates/content/app/components/layout/Header.tsx +4 -2
  365. package/corpus/templates/content/app/components/layout/Layout.tsx +3 -3
  366. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +22 -22
  367. package/corpus/templates/content/app/components/sidebar/DocumentTreeItem.tsx +22 -22
  368. package/corpus/templates/content/app/components/sidebar/NotionButton.tsx +11 -11
  369. package/corpus/templates/content/app/root.tsx +4 -5
  370. package/corpus/templates/content/app/routes/_app._index.tsx +1 -1
  371. package/corpus/templates/content/app/routes/_app.local-files.tsx +11 -11
  372. package/corpus/templates/content/app/routes/_app.settings.tsx +3 -3
  373. package/corpus/templates/content/app/routes/p.$id.tsx +114 -9
  374. package/corpus/templates/content/package.json +1 -0
  375. package/corpus/templates/content/server/db/index.ts +9 -0
  376. package/corpus/templates/content/server/routes/api/document-agent-context.json.get.ts +90 -0
  377. package/corpus/templates/content/shared/agent-readable.ts +56 -0
  378. package/corpus/templates/design/app/components/ThemeToggle.tsx +6 -6
  379. package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +11 -11
  380. package/corpus/templates/design/app/components/design/DesignEditorSkeleton.tsx +2 -2
  381. package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +21 -16
  382. package/corpus/templates/design/app/components/design/DesignImportPanel.tsx +3 -3
  383. package/corpus/templates/design/app/components/design/DrawOverlay.tsx +7 -7
  384. package/corpus/templates/design/app/components/design/EditPanel.tsx +30 -30
  385. package/corpus/templates/design/app/components/design/FusionAppBanner.tsx +8 -9
  386. package/corpus/templates/design/app/components/design/LayersPanel.tsx +14 -14
  387. package/corpus/templates/design/app/components/design/LocalhostWriteConsentDialog.tsx +5 -6
  388. package/corpus/templates/design/app/components/design/MotionDock.tsx +15 -15
  389. package/corpus/templates/design/app/components/design/QuestionFlow.tsx +3 -3
  390. package/corpus/templates/design/app/components/design/ReviewPanel.tsx +3 -3
  391. package/corpus/templates/design/app/components/design/StatesPanel.tsx +13 -13
  392. package/corpus/templates/design/app/components/design/TokensPanel.tsx +14 -14
  393. package/corpus/templates/design/app/components/design/TweaksPanel.tsx +6 -6
  394. package/corpus/templates/design/app/components/design/code-workbench/ActivityBar.tsx +3 -3
  395. package/corpus/templates/design/app/components/design/code-workbench/SideBar.tsx +3 -3
  396. package/corpus/templates/design/app/components/design/code-workbench/editor/EditorTabs.tsx +6 -6
  397. package/corpus/templates/design/app/components/design/code-workbench/editor/MonacoHost.tsx +1 -2
  398. package/corpus/templates/design/app/components/design/code-workbench/explorer/FileTree.tsx +17 -17
  399. package/corpus/templates/design/app/components/design/code-workbench/search/SearchView.tsx +6 -6
  400. package/corpus/templates/design/app/components/design/inspector/AlignmentMatrix.tsx +3 -3
  401. package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +7 -7
  402. package/corpus/templates/design/app/components/design/inspector/ConstraintsWidget.tsx +3 -3
  403. package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +18 -18
  404. package/corpus/templates/design/app/components/design/inspector/ExportSettingsPanel.tsx +6 -6
  405. package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +6 -6
  406. package/corpus/templates/design/app/components/design/inspector/InspectorAiActions.tsx +7 -7
  407. package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +7 -7
  408. package/corpus/templates/design/app/components/design/inspector/ShaderControls.tsx +14 -14
  409. package/corpus/templates/design/app/components/design/inspector/ShaderEffectRow.tsx +9 -9
  410. package/corpus/templates/design/app/components/design/inspector/ShaderFillsPanel.tsx +6 -6
  411. package/corpus/templates/design/app/components/design-system/DesignSystemCard.tsx +2 -3
  412. package/corpus/templates/design/app/components/editor/PromptDialog.tsx +18 -15
  413. package/corpus/templates/design/app/components/layout/Header.tsx +4 -2
  414. package/corpus/templates/design/app/components/layout/Layout.tsx +1 -1
  415. package/corpus/templates/design/app/components/layout/Sidebar.tsx +5 -5
  416. package/corpus/templates/design/app/components/visual-editor/CanvasCommentPins.tsx +7 -7
  417. package/corpus/templates/design/app/components/visual-editor/DrawOverlay.tsx +7 -7
  418. package/corpus/templates/design/app/components/visual-editor/SaveStatusIndicator.tsx +3 -3
  419. package/corpus/templates/design/app/pages/DesignEditor.tsx +51 -47
  420. package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +8 -8
  421. package/corpus/templates/design/app/pages/DesignSystems.tsx +32 -32
  422. package/corpus/templates/design/app/pages/Index.tsx +28 -28
  423. package/corpus/templates/design/app/pages/NotFound.tsx +1 -2
  424. package/corpus/templates/design/app/pages/Present.tsx +1 -2
  425. package/corpus/templates/design/app/pages/VisualEdit.tsx +1 -2
  426. package/corpus/templates/design/app/root.tsx +1 -1
  427. package/corpus/templates/design/app/routes/settings.tsx +3 -3
  428. package/corpus/templates/design/package.json +1 -0
  429. package/corpus/templates/design/server/db/index.ts +8 -0
  430. package/corpus/templates/design/server/routes/[...page].get.ts +94 -1
  431. package/corpus/templates/design/server/routes/api/design-agent-context.json.get.ts +84 -0
  432. package/corpus/templates/design/shared/agent-readable.ts +2 -0
  433. package/corpus/templates/forms/app/components/CloudUpgrade.tsx +10 -10
  434. package/corpus/templates/forms/app/components/ThemeToggle.tsx +5 -5
  435. package/corpus/templates/forms/app/components/builder/FieldPropertiesPanel.tsx +10 -11
  436. package/corpus/templates/forms/app/components/builder/FieldRenderer.tsx +13 -10
  437. package/corpus/templates/forms/app/components/layout/Header.tsx +4 -2
  438. package/corpus/templates/forms/app/components/layout/Layout.tsx +1 -1
  439. package/corpus/templates/forms/app/components/layout/Sidebar.tsx +15 -15
  440. package/corpus/templates/forms/app/components/ui/calendar.tsx +1 -1
  441. package/corpus/templates/forms/app/components/ui/command.tsx +1 -1
  442. package/corpus/templates/forms/app/pages/FormBuilderPage.tsx +24 -24
  443. package/corpus/templates/forms/app/pages/FormFillPage.tsx +2 -2
  444. package/corpus/templates/forms/app/pages/FormsListPage.tsx +25 -25
  445. package/corpus/templates/forms/app/pages/ResponseInsightsPage.tsx +11 -11
  446. package/corpus/templates/forms/app/pages/ResponsesPage.tsx +4 -4
  447. package/corpus/templates/forms/app/routes/_app.settings.tsx +5 -5
  448. package/corpus/templates/forms/app/routes/form-preview.tsx +3 -3
  449. package/corpus/templates/forms/package.json +1 -0
  450. package/corpus/templates/macros/app/components/AddExerciseDialog.tsx +1 -1
  451. package/corpus/templates/macros/app/components/AddMealDialog.tsx +1 -1
  452. package/corpus/templates/macros/app/components/AddWeightDialog.tsx +1 -1
  453. package/corpus/templates/macros/app/components/DailyProgress.tsx +7 -7
  454. package/corpus/templates/macros/app/components/WeeklyCaloriesChart.tsx +1 -2
  455. package/corpus/templates/macros/app/components/WeightCard.tsx +10 -10
  456. package/corpus/templates/macros/app/components/WeightTracker.tsx +1 -1
  457. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +11 -7
  458. package/corpus/templates/macros/app/components/layout/Header.tsx +4 -2
  459. package/corpus/templates/macros/app/root.tsx +1 -1
  460. package/corpus/templates/macros/app/routes/_index.tsx +1 -1
  461. package/corpus/templates/macros/app/routes/analytics.tsx +9 -9
  462. package/corpus/templates/macros/app/routes/settings.tsx +2 -2
  463. package/corpus/templates/macros/package.json +1 -0
  464. package/corpus/templates/mail/app/components/GoogleConnectBanner.tsx +1 -1
  465. package/corpus/templates/mail/app/components/ThemeToggle.tsx +6 -6
  466. package/corpus/templates/mail/app/components/agent-engine-picker.tsx +10 -10
  467. package/corpus/templates/mail/app/components/email/CodeBlockLangPicker.tsx +3 -4
  468. package/corpus/templates/mail/app/components/email/ComposeBubbleToolbar.tsx +5 -5
  469. package/corpus/templates/mail/app/components/email/ComposeEditor.tsx +9 -9
  470. package/corpus/templates/mail/app/components/email/ComposeModal.tsx +18 -18
  471. package/corpus/templates/mail/app/components/email/EmailList.tsx +17 -17
  472. package/corpus/templates/mail/app/components/email/EmailListItem.tsx +5 -5
  473. package/corpus/templates/mail/app/components/email/EmailThread.tsx +6 -6
  474. package/corpus/templates/mail/app/components/email/InlineReplyComposer.tsx +11 -11
  475. package/corpus/templates/mail/app/components/email/IntegrationsSidebar.tsx +13 -13
  476. package/corpus/templates/mail/app/components/email/MobileActionBar.tsx +13 -13
  477. package/corpus/templates/mail/app/components/email/RecipientInput.tsx +13 -13
  478. package/corpus/templates/mail/app/components/email/SendLaterButton.tsx +4 -5
  479. package/corpus/templates/mail/app/components/email/SnoozeModal.tsx +1 -1
  480. package/corpus/templates/mail/app/components/email/SnoozePopover.tsx +6 -6
  481. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +12 -12
  482. package/corpus/templates/mail/app/components/layout/SearchBar.tsx +5 -5
  483. package/corpus/templates/mail/app/components/settings/GmailFiltersSection.tsx +23 -23
  484. package/corpus/templates/mail/app/components/ui/calendar.tsx +1 -1
  485. package/corpus/templates/mail/app/components/ui/command.tsx +1 -1
  486. package/corpus/templates/mail/app/pages/DraftQueuePage.tsx +14 -14
  487. package/corpus/templates/mail/app/pages/NotFound.tsx +1 -2
  488. package/corpus/templates/mail/app/pages/SettingsPage.tsx +25 -25
  489. package/corpus/templates/mail/app/root.tsx +1 -1
  490. package/corpus/templates/mail/app/routes/_index.tsx +1 -2
  491. package/corpus/templates/mail/app/routes/email.tsx +2 -2
  492. package/corpus/templates/mail/package.json +1 -0
  493. package/corpus/templates/plan/app/components/layout/Header.tsx +4 -2
  494. package/corpus/templates/plan/app/components/layout/Layout.tsx +5 -6
  495. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +20 -20
  496. package/corpus/templates/plan/app/components/plan/CanvasArea.tsx +2 -3
  497. package/corpus/templates/plan/app/components/plan/DocumentArea.tsx +2 -2
  498. package/corpus/templates/plan/app/components/plan/GuestModeBanner.tsx +1 -2
  499. package/corpus/templates/plan/app/components/plan/LocalCodebasePicker.tsx +8 -8
  500. package/corpus/templates/plan/app/components/plan/PlanContentRenderer.tsx +1 -1
  501. package/corpus/templates/plan/app/components/plan/PlanImageViewer.tsx +83 -82
  502. package/corpus/templates/plan/app/components/plan/PlanVisualSurface.tsx +3 -3
  503. package/corpus/templates/plan/app/components/plan/planBlocks.tsx +4 -4
  504. package/corpus/templates/plan/app/pages/PlansPage.tsx +84 -77
  505. package/corpus/templates/plan/app/root.tsx +1 -1
  506. package/corpus/templates/plan/app/routes/_index.tsx +2 -1
  507. package/corpus/templates/plan/app/routes/local-plans.$slug.tsx +1 -1
  508. package/corpus/templates/plan/app/routes/plans.$id.tsx +2 -1
  509. package/corpus/templates/plan/app/routes/plans.tsx +2 -1
  510. package/corpus/templates/plan/app/routes/recaps.$id.tsx +2 -1
  511. package/corpus/templates/plan/app/routes/recaps.tsx +2 -1
  512. package/corpus/templates/plan/app/routes/settings.tsx +5 -5
  513. package/corpus/templates/plan/changelog/2026-07-05-images-in-plan-documents-open-reliably-in-the-full-size-prev.md +6 -0
  514. package/corpus/templates/plan/package.json +1 -0
  515. package/corpus/templates/plan/server/db/index.ts +12 -0
  516. package/corpus/templates/plan/server/plans.ts +25 -1
  517. package/corpus/templates/plan/server/routes/[...page].get.ts +107 -1
  518. package/corpus/templates/plan/server/routes/api/plan-agent-context.json.get.ts +65 -0
  519. package/corpus/templates/plan/shared/agent-readable.ts +2 -0
  520. package/corpus/templates/slides/app/components/ThemeToggle.tsx +6 -6
  521. package/corpus/templates/slides/app/components/comments/SlideCommentsPanel.tsx +5 -5
  522. package/corpus/templates/slides/app/components/deck/DeckCard.tsx +7 -7
  523. package/corpus/templates/slides/app/components/deck/ExcalidrawSlide.tsx +1 -2
  524. package/corpus/templates/slides/app/components/deck/SlideRenderer.tsx +1 -1
  525. package/corpus/templates/slides/app/components/design-system/DesignSystemCard.tsx +2 -3
  526. package/corpus/templates/slides/app/components/design-system/DesignSystemSetup.tsx +13 -14
  527. package/corpus/templates/slides/app/components/editor/AnimationsPanel.tsx +7 -7
  528. package/corpus/templates/slides/app/components/editor/BlockBubbleMenu.tsx +5 -5
  529. package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +6 -6
  530. package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +13 -13
  531. package/corpus/templates/slides/app/components/editor/ExportMenu.tsx +9 -10
  532. package/corpus/templates/slides/app/components/editor/GenerateSlidesDialog.tsx +5 -6
  533. package/corpus/templates/slides/app/components/editor/HistoryPanel.tsx +12 -12
  534. package/corpus/templates/slides/app/components/editor/ImageDropPromptPopover.tsx +3 -4
  535. package/corpus/templates/slides/app/components/editor/ImageSearchPanel.tsx +4 -5
  536. package/corpus/templates/slides/app/components/editor/ImportButton.tsx +3 -4
  537. package/corpus/templates/slides/app/components/editor/PromptDialog.tsx +1 -2
  538. package/corpus/templates/slides/app/components/editor/ShareDialog.tsx +10 -10
  539. package/corpus/templates/slides/app/components/editor/SlideBubbleMenu.tsx +10 -10
  540. package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +6 -6
  541. package/corpus/templates/slides/app/components/editor/SlideStyleInspector.tsx +1 -2
  542. package/corpus/templates/slides/app/components/editor/TweaksPanel.tsx +1 -1
  543. package/corpus/templates/slides/app/components/layout/Header.tsx +4 -2
  544. package/corpus/templates/slides/app/components/layout/Layout.tsx +1 -1
  545. package/corpus/templates/slides/app/components/layout/Sidebar.tsx +5 -5
  546. package/corpus/templates/slides/app/components/visual-editor/CanvasCommentPins.tsx +6 -6
  547. package/corpus/templates/slides/app/components/visual-editor/DrawOverlay.tsx +7 -7
  548. package/corpus/templates/slides/app/pages/DeckEditor.tsx +3 -3
  549. package/corpus/templates/slides/app/pages/DesignSystems.tsx +5 -5
  550. package/corpus/templates/slides/app/pages/Index.tsx +18 -15
  551. package/corpus/templates/slides/app/root.tsx +3 -3
  552. package/corpus/templates/slides/app/routes/p.$id.tsx +126 -12
  553. package/corpus/templates/slides/app/routes/settings.tsx +5 -5
  554. package/corpus/templates/slides/app/routes/share.$token.tsx +55 -8
  555. package/corpus/templates/slides/package.json +1 -0
  556. package/corpus/templates/slides/server/db/index.ts +9 -0
  557. package/corpus/templates/slides/server/routes/api/deck-agent-context.json.get.ts +97 -0
  558. package/corpus/templates/slides/shared/agent-readable.ts +2 -0
  559. package/dist/application-state/emitter.d.ts +9 -2
  560. package/dist/application-state/emitter.d.ts.map +1 -1
  561. package/dist/application-state/emitter.js +25 -3
  562. package/dist/application-state/emitter.js.map +1 -1
  563. package/dist/cli/create.d.ts +2 -1
  564. package/dist/cli/create.d.ts.map +1 -1
  565. package/dist/cli/create.js +52 -4
  566. package/dist/cli/create.js.map +1 -1
  567. package/dist/cli/workspacify.d.ts +2 -0
  568. package/dist/cli/workspacify.d.ts.map +1 -1
  569. package/dist/cli/workspacify.js +8 -4
  570. package/dist/cli/workspacify.js.map +1 -1
  571. package/dist/client/components/ui/dialog.d.ts +1 -13
  572. package/dist/client/components/ui/dialog.d.ts.map +1 -1
  573. package/dist/client/components/ui/dialog.js +1 -20
  574. package/dist/client/components/ui/dialog.js.map +1 -1
  575. package/dist/client/components/ui/dropdown-menu.d.ts +1 -27
  576. package/dist/client/components/ui/dropdown-menu.d.ts.map +1 -1
  577. package/dist/client/components/ui/dropdown-menu.js +1 -33
  578. package/dist/client/components/ui/dropdown-menu.js.map +1 -1
  579. package/dist/client/components/ui/hover-card.d.ts +1 -6
  580. package/dist/client/components/ui/hover-card.d.ts.map +1 -1
  581. package/dist/client/components/ui/hover-card.js +1 -9
  582. package/dist/client/components/ui/hover-card.js.map +1 -1
  583. package/dist/client/components/ui/popover.d.ts +1 -7
  584. package/dist/client/components/ui/popover.d.ts.map +1 -1
  585. package/dist/client/components/ui/popover.js +1 -10
  586. package/dist/client/components/ui/popover.js.map +1 -1
  587. package/dist/client/components/ui/sheet.d.ts +1 -15
  588. package/dist/client/components/ui/sheet.d.ts.map +1 -1
  589. package/dist/client/components/ui/sheet.js +1 -22
  590. package/dist/client/components/ui/sheet.js.map +1 -1
  591. package/dist/client/components/ui/tooltip.d.ts +1 -8
  592. package/dist/client/components/ui/tooltip.d.ts.map +1 -1
  593. package/dist/client/components/ui/tooltip.js +1 -17
  594. package/dist/client/components/ui/tooltip.js.map +1 -1
  595. package/dist/collab/routes.d.ts +1 -1
  596. package/dist/collab/struct-routes.d.ts +1 -1
  597. package/dist/observability/routes.d.ts +5 -5
  598. package/dist/progress/routes.d.ts +1 -1
  599. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  600. package/dist/secrets/crypto.d.ts.map +1 -1
  601. package/dist/secrets/crypto.js +37 -4
  602. package/dist/secrets/crypto.js.map +1 -1
  603. package/dist/secrets/routes.d.ts +9 -9
  604. package/dist/server/action-discovery.d.ts.map +1 -1
  605. package/dist/server/action-discovery.js +4 -0
  606. package/dist/server/action-discovery.js.map +1 -1
  607. package/dist/server/action-routes.d.ts.map +1 -1
  608. package/dist/server/action-routes.js +8 -2
  609. package/dist/server/action-routes.js.map +1 -1
  610. package/dist/server/agent-access.d.ts +16 -0
  611. package/dist/server/agent-access.d.ts.map +1 -0
  612. package/dist/server/agent-access.js +25 -0
  613. package/dist/server/agent-access.js.map +1 -0
  614. package/dist/server/h3-helpers.d.ts.map +1 -1
  615. package/dist/server/h3-helpers.js +12 -2
  616. package/dist/server/h3-helpers.js.map +1 -1
  617. package/dist/server/index.d.ts +2 -0
  618. package/dist/server/index.d.ts.map +1 -1
  619. package/dist/server/index.js +2 -0
  620. package/dist/server/index.js.map +1 -1
  621. package/dist/server/request-context.d.ts +17 -0
  622. package/dist/server/request-context.d.ts.map +1 -1
  623. package/dist/server/request-context.js +46 -6
  624. package/dist/server/request-context.js.map +1 -1
  625. package/dist/server/transcribe-voice.d.ts +1 -1
  626. package/dist/shared/agent-access.d.ts +29 -0
  627. package/dist/shared/agent-access.d.ts.map +1 -0
  628. package/dist/shared/agent-access.js +57 -0
  629. package/dist/shared/agent-access.js.map +1 -0
  630. package/dist/shared/agent-readable-resource.d.ts +29 -0
  631. package/dist/shared/agent-readable-resource.d.ts.map +1 -0
  632. package/dist/shared/agent-readable-resource.js +60 -0
  633. package/dist/shared/agent-readable-resource.js.map +1 -0
  634. package/dist/shared/index.d.ts +2 -0
  635. package/dist/shared/index.d.ts.map +1 -1
  636. package/dist/shared/index.js +2 -0
  637. package/dist/shared/index.js.map +1 -1
  638. package/dist/sharing/actions/create-agent-resource-link.d.ts +13 -0
  639. package/dist/sharing/actions/create-agent-resource-link.d.ts.map +1 -0
  640. package/dist/sharing/actions/create-agent-resource-link.js +72 -0
  641. package/dist/sharing/actions/create-agent-resource-link.js.map +1 -0
  642. package/dist/sharing/registry.d.ts +17 -0
  643. package/dist/sharing/registry.d.ts.map +1 -1
  644. package/dist/sharing/registry.js.map +1 -1
  645. package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +92 -0
  646. package/dist/vite/client.d.ts.map +1 -1
  647. package/dist/vite/client.js +1 -0
  648. package/dist/vite/client.js.map +1 -1
  649. package/docs/content/agent-native-toolkit.mdx +162 -0
  650. package/docs/content/components.mdx +13 -0
  651. package/docs/content/creating-templates.mdx +7 -0
  652. package/docs/content/locales/ar-SA/agent-native-toolkit.mdx +73 -0
  653. package/docs/content/locales/ar-SA/components.mdx +9 -0
  654. package/docs/content/locales/ar-SA/creating-templates.mdx +2 -0
  655. package/docs/content/locales/ar-SA/sharing.mdx +15 -7
  656. package/docs/content/locales/ar-SA/template-analytics.mdx +6 -0
  657. package/docs/content/locales/ar-SA/template-clips.mdx +7 -0
  658. package/docs/content/locales/ar-SA/tracking.mdx +6 -0
  659. package/docs/content/locales/de-DE/agent-native-toolkit.mdx +77 -0
  660. package/docs/content/locales/de-DE/components.mdx +9 -0
  661. package/docs/content/locales/de-DE/creating-templates.mdx +2 -0
  662. package/docs/content/locales/de-DE/sharing.mdx +15 -7
  663. package/docs/content/locales/de-DE/template-analytics.mdx +6 -0
  664. package/docs/content/locales/de-DE/template-clips.mdx +7 -0
  665. package/docs/content/locales/de-DE/tracking.mdx +6 -0
  666. package/docs/content/locales/es-ES/agent-native-toolkit.mdx +77 -0
  667. package/docs/content/locales/es-ES/components.mdx +9 -0
  668. package/docs/content/locales/es-ES/creating-templates.mdx +2 -0
  669. package/docs/content/locales/es-ES/sharing.mdx +15 -7
  670. package/docs/content/locales/es-ES/template-analytics.mdx +6 -0
  671. package/docs/content/locales/es-ES/template-clips.mdx +7 -0
  672. package/docs/content/locales/es-ES/tracking.mdx +6 -0
  673. package/docs/content/locales/fr-FR/agent-native-toolkit.mdx +79 -0
  674. package/docs/content/locales/fr-FR/components.mdx +9 -0
  675. package/docs/content/locales/fr-FR/creating-templates.mdx +2 -0
  676. package/docs/content/locales/fr-FR/sharing.mdx +15 -7
  677. package/docs/content/locales/fr-FR/template-analytics.mdx +6 -0
  678. package/docs/content/locales/fr-FR/template-clips.mdx +7 -0
  679. package/docs/content/locales/fr-FR/tracking.mdx +6 -0
  680. package/docs/content/locales/hi-IN/agent-native-toolkit.mdx +74 -0
  681. package/docs/content/locales/hi-IN/components.mdx +9 -0
  682. package/docs/content/locales/hi-IN/creating-templates.mdx +2 -0
  683. package/docs/content/locales/hi-IN/sharing.mdx +15 -7
  684. package/docs/content/locales/hi-IN/template-analytics.mdx +6 -0
  685. package/docs/content/locales/hi-IN/template-clips.mdx +7 -0
  686. package/docs/content/locales/hi-IN/tracking.mdx +6 -0
  687. package/docs/content/locales/ja-JP/agent-native-toolkit.mdx +67 -0
  688. package/docs/content/locales/ja-JP/components.mdx +9 -0
  689. package/docs/content/locales/ja-JP/creating-templates.mdx +2 -0
  690. package/docs/content/locales/ja-JP/sharing.mdx +15 -7
  691. package/docs/content/locales/ja-JP/template-analytics.mdx +6 -0
  692. package/docs/content/locales/ja-JP/template-clips.mdx +7 -0
  693. package/docs/content/locales/ja-JP/tracking.mdx +6 -0
  694. package/docs/content/locales/ko-KR/agent-native-toolkit.mdx +63 -0
  695. package/docs/content/locales/ko-KR/components.mdx +9 -0
  696. package/docs/content/locales/ko-KR/creating-templates.mdx +2 -0
  697. package/docs/content/locales/ko-KR/sharing.mdx +15 -7
  698. package/docs/content/locales/ko-KR/template-analytics.mdx +6 -0
  699. package/docs/content/locales/ko-KR/template-clips.mdx +7 -0
  700. package/docs/content/locales/ko-KR/tracking.mdx +6 -0
  701. package/docs/content/locales/pt-BR/agent-native-toolkit.mdx +77 -0
  702. package/docs/content/locales/pt-BR/components.mdx +9 -0
  703. package/docs/content/locales/pt-BR/creating-templates.mdx +2 -0
  704. package/docs/content/locales/pt-BR/sharing.mdx +15 -7
  705. package/docs/content/locales/pt-BR/template-analytics.mdx +6 -0
  706. package/docs/content/locales/pt-BR/template-clips.mdx +7 -0
  707. package/docs/content/locales/pt-BR/tracking.mdx +6 -0
  708. package/docs/content/locales/zh-CN/agent-native-toolkit.mdx +61 -0
  709. package/docs/content/locales/zh-CN/components.mdx +9 -0
  710. package/docs/content/locales/zh-CN/creating-templates.mdx +2 -0
  711. package/docs/content/locales/zh-CN/sharing.mdx +15 -7
  712. package/docs/content/locales/zh-CN/template-analytics.mdx +6 -0
  713. package/docs/content/locales/zh-CN/template-clips.mdx +7 -0
  714. package/docs/content/locales/zh-CN/tracking.mdx +6 -0
  715. package/docs/content/locales/zh-TW/agent-native-toolkit.mdx +61 -0
  716. package/docs/content/locales/zh-TW/components.mdx +9 -0
  717. package/docs/content/locales/zh-TW/creating-templates.mdx +2 -0
  718. package/docs/content/locales/zh-TW/sharing.mdx +15 -7
  719. package/docs/content/locales/zh-TW/template-analytics.mdx +6 -0
  720. package/docs/content/locales/zh-TW/template-clips.mdx +7 -0
  721. package/docs/content/locales/zh-TW/tracking.mdx +6 -0
  722. package/docs/content/sharing.mdx +39 -7
  723. package/docs/content/template-analytics.mdx +6 -0
  724. package/docs/content/template-clips.mdx +7 -0
  725. package/docs/content/tracking.mdx +6 -0
  726. package/package.json +10 -2
  727. package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +92 -0
  728. package/corpus/templates/analytics/app/components/ui/accordion.tsx +0 -56
  729. package/corpus/templates/analytics/app/components/ui/alert-dialog.tsx +0 -139
  730. package/corpus/templates/analytics/app/components/ui/alert.tsx +0 -59
  731. package/corpus/templates/analytics/app/components/ui/aspect-ratio.tsx +0 -5
  732. package/corpus/templates/analytics/app/components/ui/avatar.tsx +0 -48
  733. package/corpus/templates/analytics/app/components/ui/badge.tsx +0 -37
  734. package/corpus/templates/analytics/app/components/ui/breadcrumb.tsx +0 -115
  735. package/corpus/templates/analytics/app/components/ui/button.tsx +0 -57
  736. package/corpus/templates/analytics/app/components/ui/card.tsx +0 -86
  737. package/corpus/templates/analytics/app/components/ui/carousel.tsx +0 -260
  738. package/corpus/templates/analytics/app/components/ui/checkbox.tsx +0 -28
  739. package/corpus/templates/analytics/app/components/ui/collapsible.tsx +0 -9
  740. package/corpus/templates/analytics/app/components/ui/command.tsx +0 -154
  741. package/corpus/templates/analytics/app/components/ui/context-menu.tsx +0 -202
  742. package/corpus/templates/analytics/app/components/ui/date-picker.tsx +0 -68
  743. package/corpus/templates/analytics/app/components/ui/dialog.tsx +0 -130
  744. package/corpus/templates/analytics/app/components/ui/drawer.tsx +0 -116
  745. package/corpus/templates/analytics/app/components/ui/dropdown-menu.tsx +0 -212
  746. package/corpus/templates/analytics/app/components/ui/form.tsx +0 -177
  747. package/corpus/templates/analytics/app/components/ui/hover-card.tsx +0 -27
  748. package/corpus/templates/analytics/app/components/ui/input-otp.tsx +0 -69
  749. package/corpus/templates/analytics/app/components/ui/input.tsx +0 -22
  750. package/corpus/templates/analytics/app/components/ui/label.tsx +0 -24
  751. package/corpus/templates/analytics/app/components/ui/menubar.tsx +0 -234
  752. package/corpus/templates/analytics/app/components/ui/navigation-menu.tsx +0 -128
  753. package/corpus/templates/analytics/app/components/ui/pagination.tsx +0 -121
  754. package/corpus/templates/analytics/app/components/ui/popover.tsx +0 -44
  755. package/corpus/templates/analytics/app/components/ui/progress.tsx +0 -26
  756. package/corpus/templates/analytics/app/components/ui/radio-group.tsx +0 -42
  757. package/corpus/templates/analytics/app/components/ui/resizable.tsx +0 -43
  758. package/corpus/templates/analytics/app/components/ui/scroll-area.tsx +0 -46
  759. package/corpus/templates/analytics/app/components/ui/select.tsx +0 -158
  760. package/corpus/templates/analytics/app/components/ui/separator.tsx +0 -29
  761. package/corpus/templates/analytics/app/components/ui/sheet.tsx +0 -160
  762. package/corpus/templates/analytics/app/components/ui/sidebar.tsx +0 -782
  763. package/corpus/templates/analytics/app/components/ui/skeleton.tsx +0 -15
  764. package/corpus/templates/analytics/app/components/ui/slider.tsx +0 -26
  765. package/corpus/templates/analytics/app/components/ui/sonner.tsx +0 -58
  766. package/corpus/templates/analytics/app/components/ui/spinner.tsx +0 -17
  767. package/corpus/templates/analytics/app/components/ui/switch.tsx +0 -27
  768. package/corpus/templates/analytics/app/components/ui/table.tsx +0 -117
  769. package/corpus/templates/analytics/app/components/ui/tabs.tsx +0 -53
  770. package/corpus/templates/analytics/app/components/ui/textarea.tsx +0 -23
  771. package/corpus/templates/analytics/app/components/ui/toast.tsx +0 -127
  772. package/corpus/templates/analytics/app/components/ui/toaster.tsx +0 -33
  773. package/corpus/templates/analytics/app/components/ui/toggle-group.tsx +0 -59
  774. package/corpus/templates/analytics/app/components/ui/toggle.tsx +0 -43
  775. package/corpus/templates/analytics/app/components/ui/tooltip.tsx +0 -30
  776. package/corpus/templates/analytics/app/components/ui/use-toast.ts +0 -3
  777. package/corpus/templates/analytics/app/hooks/use-mobile.tsx +0 -21
  778. package/corpus/templates/analytics/app/hooks/use-toast.ts +0 -188
  779. package/corpus/templates/assets/app/components/layout/HeaderActions.tsx +0 -84
  780. package/corpus/templates/assets/app/components/ui/alert-dialog.tsx +0 -139
  781. package/corpus/templates/assets/app/components/ui/alert.tsx +0 -59
  782. package/corpus/templates/assets/app/components/ui/avatar.tsx +0 -48
  783. package/corpus/templates/assets/app/components/ui/badge.tsx +0 -37
  784. package/corpus/templates/assets/app/components/ui/breadcrumb.tsx +0 -115
  785. package/corpus/templates/assets/app/components/ui/button.tsx +0 -57
  786. package/corpus/templates/assets/app/components/ui/card.tsx +0 -86
  787. package/corpus/templates/assets/app/components/ui/checkbox.tsx +0 -28
  788. package/corpus/templates/assets/app/components/ui/dialog.tsx +0 -130
  789. package/corpus/templates/assets/app/components/ui/dropdown-menu.tsx +0 -212
  790. package/corpus/templates/assets/app/components/ui/hover-card.tsx +0 -27
  791. package/corpus/templates/assets/app/components/ui/input.tsx +0 -22
  792. package/corpus/templates/assets/app/components/ui/label.tsx +0 -24
  793. package/corpus/templates/assets/app/components/ui/pagination.tsx +0 -121
  794. package/corpus/templates/assets/app/components/ui/popover.tsx +0 -44
  795. package/corpus/templates/assets/app/components/ui/progress.tsx +0 -26
  796. package/corpus/templates/assets/app/components/ui/scroll-area.tsx +0 -46
  797. package/corpus/templates/assets/app/components/ui/select.tsx +0 -158
  798. package/corpus/templates/assets/app/components/ui/separator.tsx +0 -29
  799. package/corpus/templates/assets/app/components/ui/sheet.tsx +0 -160
  800. package/corpus/templates/assets/app/components/ui/skeleton.tsx +0 -15
  801. package/corpus/templates/assets/app/components/ui/slider.tsx +0 -26
  802. package/corpus/templates/assets/app/components/ui/sonner.tsx +0 -58
  803. package/corpus/templates/assets/app/components/ui/spinner.tsx +0 -17
  804. package/corpus/templates/assets/app/components/ui/table.tsx +0 -117
  805. package/corpus/templates/assets/app/components/ui/tabs.tsx +0 -53
  806. package/corpus/templates/assets/app/components/ui/tooltip.tsx +0 -30
  807. package/corpus/templates/brain/app/components/ui/badge.tsx +0 -37
  808. package/corpus/templates/brain/app/components/ui/button.tsx +0 -57
  809. package/corpus/templates/brain/app/components/ui/card.tsx +0 -86
  810. package/corpus/templates/brain/app/components/ui/input.tsx +0 -22
  811. package/corpus/templates/brain/app/components/ui/label.tsx +0 -24
  812. package/corpus/templates/brain/app/components/ui/progress.tsx +0 -26
  813. package/corpus/templates/brain/app/components/ui/select.tsx +0 -158
  814. package/corpus/templates/brain/app/components/ui/separator.tsx +0 -29
  815. package/corpus/templates/brain/app/components/ui/sheet.tsx +0 -160
  816. package/corpus/templates/brain/app/components/ui/skeleton.tsx +0 -15
  817. package/corpus/templates/brain/app/components/ui/sonner.tsx +0 -58
  818. package/corpus/templates/brain/app/components/ui/switch.tsx +0 -27
  819. package/corpus/templates/brain/app/components/ui/table.tsx +0 -117
  820. package/corpus/templates/brain/app/components/ui/textarea.tsx +0 -23
  821. package/corpus/templates/brain/app/components/ui/tooltip.tsx +0 -30
  822. package/corpus/templates/calendar/app/components/ui/accordion.tsx +0 -56
  823. package/corpus/templates/calendar/app/components/ui/alert-dialog.tsx +0 -139
  824. package/corpus/templates/calendar/app/components/ui/alert.tsx +0 -59
  825. package/corpus/templates/calendar/app/components/ui/aspect-ratio.tsx +0 -5
  826. package/corpus/templates/calendar/app/components/ui/avatar.tsx +0 -48
  827. package/corpus/templates/calendar/app/components/ui/badge.tsx +0 -37
  828. package/corpus/templates/calendar/app/components/ui/breadcrumb.tsx +0 -115
  829. package/corpus/templates/calendar/app/components/ui/button.tsx +0 -57
  830. package/corpus/templates/calendar/app/components/ui/calendar.tsx +0 -68
  831. package/corpus/templates/calendar/app/components/ui/card.tsx +0 -86
  832. package/corpus/templates/calendar/app/components/ui/carousel.tsx +0 -260
  833. package/corpus/templates/calendar/app/components/ui/chart.tsx +0 -375
  834. package/corpus/templates/calendar/app/components/ui/checkbox.tsx +0 -28
  835. package/corpus/templates/calendar/app/components/ui/collapsible.tsx +0 -9
  836. package/corpus/templates/calendar/app/components/ui/command.tsx +0 -154
  837. package/corpus/templates/calendar/app/components/ui/context-menu.tsx +0 -202
  838. package/corpus/templates/calendar/app/components/ui/dialog.tsx +0 -130
  839. package/corpus/templates/calendar/app/components/ui/drawer.tsx +0 -116
  840. package/corpus/templates/calendar/app/components/ui/dropdown-menu.tsx +0 -212
  841. package/corpus/templates/calendar/app/components/ui/form.tsx +0 -177
  842. package/corpus/templates/calendar/app/components/ui/hover-card.tsx +0 -27
  843. package/corpus/templates/calendar/app/components/ui/input-otp.tsx +0 -69
  844. package/corpus/templates/calendar/app/components/ui/input.tsx +0 -22
  845. package/corpus/templates/calendar/app/components/ui/label.tsx +0 -24
  846. package/corpus/templates/calendar/app/components/ui/menubar.tsx +0 -234
  847. package/corpus/templates/calendar/app/components/ui/navigation-menu.tsx +0 -128
  848. package/corpus/templates/calendar/app/components/ui/pagination.tsx +0 -121
  849. package/corpus/templates/calendar/app/components/ui/popover.tsx +0 -44
  850. package/corpus/templates/calendar/app/components/ui/progress.tsx +0 -26
  851. package/corpus/templates/calendar/app/components/ui/radio-group.tsx +0 -42
  852. package/corpus/templates/calendar/app/components/ui/resizable.tsx +0 -43
  853. package/corpus/templates/calendar/app/components/ui/scroll-area.tsx +0 -46
  854. package/corpus/templates/calendar/app/components/ui/select.tsx +0 -158
  855. package/corpus/templates/calendar/app/components/ui/separator.tsx +0 -29
  856. package/corpus/templates/calendar/app/components/ui/sheet.tsx +0 -160
  857. package/corpus/templates/calendar/app/components/ui/sidebar.tsx +0 -782
  858. package/corpus/templates/calendar/app/components/ui/skeleton.tsx +0 -15
  859. package/corpus/templates/calendar/app/components/ui/slider.tsx +0 -26
  860. package/corpus/templates/calendar/app/components/ui/spinner.tsx +0 -17
  861. package/corpus/templates/calendar/app/components/ui/switch.tsx +0 -27
  862. package/corpus/templates/calendar/app/components/ui/table.tsx +0 -117
  863. package/corpus/templates/calendar/app/components/ui/tabs.tsx +0 -53
  864. package/corpus/templates/calendar/app/components/ui/textarea.tsx +0 -23
  865. package/corpus/templates/calendar/app/components/ui/toast.tsx +0 -127
  866. package/corpus/templates/calendar/app/components/ui/toaster.tsx +0 -33
  867. package/corpus/templates/calendar/app/components/ui/toggle-group.tsx +0 -59
  868. package/corpus/templates/calendar/app/components/ui/toggle.tsx +0 -43
  869. package/corpus/templates/calendar/app/components/ui/tooltip.tsx +0 -30
  870. package/corpus/templates/calendar/app/components/ui/use-toast.ts +0 -3
  871. package/corpus/templates/calendar/app/hooks/use-mobile.tsx +0 -21
  872. package/corpus/templates/calendar/app/hooks/use-toast.ts +0 -188
  873. package/corpus/templates/chat/app/components/layout/HeaderActions.tsx +0 -84
  874. package/corpus/templates/chat/app/components/ui/accordion.tsx +0 -56
  875. package/corpus/templates/chat/app/components/ui/alert-dialog.tsx +0 -139
  876. package/corpus/templates/chat/app/components/ui/alert.tsx +0 -59
  877. package/corpus/templates/chat/app/components/ui/aspect-ratio.tsx +0 -5
  878. package/corpus/templates/chat/app/components/ui/avatar.tsx +0 -48
  879. package/corpus/templates/chat/app/components/ui/badge.tsx +0 -37
  880. package/corpus/templates/chat/app/components/ui/breadcrumb.tsx +0 -115
  881. package/corpus/templates/chat/app/components/ui/button.tsx +0 -57
  882. package/corpus/templates/chat/app/components/ui/calendar.tsx +0 -68
  883. package/corpus/templates/chat/app/components/ui/card.tsx +0 -86
  884. package/corpus/templates/chat/app/components/ui/carousel.tsx +0 -260
  885. package/corpus/templates/chat/app/components/ui/chart.tsx +0 -375
  886. package/corpus/templates/chat/app/components/ui/checkbox.tsx +0 -28
  887. package/corpus/templates/chat/app/components/ui/collapsible.tsx +0 -9
  888. package/corpus/templates/chat/app/components/ui/command.tsx +0 -154
  889. package/corpus/templates/chat/app/components/ui/context-menu.tsx +0 -202
  890. package/corpus/templates/chat/app/components/ui/dialog.tsx +0 -130
  891. package/corpus/templates/chat/app/components/ui/drawer.tsx +0 -116
  892. package/corpus/templates/chat/app/components/ui/dropdown-menu.tsx +0 -212
  893. package/corpus/templates/chat/app/components/ui/form.tsx +0 -177
  894. package/corpus/templates/chat/app/components/ui/hover-card.tsx +0 -27
  895. package/corpus/templates/chat/app/components/ui/input-otp.tsx +0 -69
  896. package/corpus/templates/chat/app/components/ui/input.tsx +0 -22
  897. package/corpus/templates/chat/app/components/ui/label.tsx +0 -24
  898. package/corpus/templates/chat/app/components/ui/menubar.tsx +0 -234
  899. package/corpus/templates/chat/app/components/ui/navigation-menu.tsx +0 -128
  900. package/corpus/templates/chat/app/components/ui/pagination.tsx +0 -121
  901. package/corpus/templates/chat/app/components/ui/popover.tsx +0 -44
  902. package/corpus/templates/chat/app/components/ui/progress.tsx +0 -26
  903. package/corpus/templates/chat/app/components/ui/radio-group.tsx +0 -42
  904. package/corpus/templates/chat/app/components/ui/resizable.tsx +0 -43
  905. package/corpus/templates/chat/app/components/ui/scroll-area.tsx +0 -46
  906. package/corpus/templates/chat/app/components/ui/select.tsx +0 -158
  907. package/corpus/templates/chat/app/components/ui/separator.tsx +0 -29
  908. package/corpus/templates/chat/app/components/ui/sheet.tsx +0 -160
  909. package/corpus/templates/chat/app/components/ui/sidebar.tsx +0 -782
  910. package/corpus/templates/chat/app/components/ui/skeleton.tsx +0 -15
  911. package/corpus/templates/chat/app/components/ui/slider.tsx +0 -26
  912. package/corpus/templates/chat/app/components/ui/sonner.tsx +0 -58
  913. package/corpus/templates/chat/app/components/ui/spinner.tsx +0 -17
  914. package/corpus/templates/chat/app/components/ui/switch.tsx +0 -27
  915. package/corpus/templates/chat/app/components/ui/table.tsx +0 -117
  916. package/corpus/templates/chat/app/components/ui/tabs.tsx +0 -53
  917. package/corpus/templates/chat/app/components/ui/textarea.tsx +0 -23
  918. package/corpus/templates/chat/app/components/ui/toast.tsx +0 -127
  919. package/corpus/templates/chat/app/components/ui/toaster.tsx +0 -33
  920. package/corpus/templates/chat/app/components/ui/toggle-group.tsx +0 -59
  921. package/corpus/templates/chat/app/components/ui/toggle.tsx +0 -43
  922. package/corpus/templates/chat/app/components/ui/tooltip.tsx +0 -30
  923. package/corpus/templates/chat/app/components/ui/use-toast.ts +0 -3
  924. package/corpus/templates/chat/app/hooks/use-mobile.tsx +0 -21
  925. package/corpus/templates/chat/app/hooks/use-toast.ts +0 -188
  926. package/corpus/templates/clips/app/components/layout/HeaderActions.tsx +0 -84
  927. package/corpus/templates/clips/app/components/ui/accordion.tsx +0 -56
  928. package/corpus/templates/clips/app/components/ui/alert-dialog.tsx +0 -139
  929. package/corpus/templates/clips/app/components/ui/alert.tsx +0 -59
  930. package/corpus/templates/clips/app/components/ui/aspect-ratio.tsx +0 -5
  931. package/corpus/templates/clips/app/components/ui/avatar.tsx +0 -48
  932. package/corpus/templates/clips/app/components/ui/badge.tsx +0 -37
  933. package/corpus/templates/clips/app/components/ui/breadcrumb.tsx +0 -115
  934. package/corpus/templates/clips/app/components/ui/button.tsx +0 -57
  935. package/corpus/templates/clips/app/components/ui/calendar.tsx +0 -68
  936. package/corpus/templates/clips/app/components/ui/card.tsx +0 -86
  937. package/corpus/templates/clips/app/components/ui/carousel.tsx +0 -260
  938. package/corpus/templates/clips/app/components/ui/chart.tsx +0 -375
  939. package/corpus/templates/clips/app/components/ui/checkbox.tsx +0 -28
  940. package/corpus/templates/clips/app/components/ui/collapsible.tsx +0 -9
  941. package/corpus/templates/clips/app/components/ui/command.tsx +0 -154
  942. package/corpus/templates/clips/app/components/ui/context-menu.tsx +0 -202
  943. package/corpus/templates/clips/app/components/ui/dialog.tsx +0 -130
  944. package/corpus/templates/clips/app/components/ui/drawer.tsx +0 -116
  945. package/corpus/templates/clips/app/components/ui/dropdown-menu.tsx +0 -212
  946. package/corpus/templates/clips/app/components/ui/form.tsx +0 -177
  947. package/corpus/templates/clips/app/components/ui/hover-card.tsx +0 -27
  948. package/corpus/templates/clips/app/components/ui/input-otp.tsx +0 -69
  949. package/corpus/templates/clips/app/components/ui/input.tsx +0 -22
  950. package/corpus/templates/clips/app/components/ui/label.tsx +0 -24
  951. package/corpus/templates/clips/app/components/ui/menubar.tsx +0 -234
  952. package/corpus/templates/clips/app/components/ui/navigation-menu.tsx +0 -128
  953. package/corpus/templates/clips/app/components/ui/pagination.tsx +0 -121
  954. package/corpus/templates/clips/app/components/ui/popover.tsx +0 -44
  955. package/corpus/templates/clips/app/components/ui/progress.tsx +0 -26
  956. package/corpus/templates/clips/app/components/ui/radio-group.tsx +0 -42
  957. package/corpus/templates/clips/app/components/ui/resizable.tsx +0 -43
  958. package/corpus/templates/clips/app/components/ui/scroll-area.tsx +0 -46
  959. package/corpus/templates/clips/app/components/ui/select.tsx +0 -158
  960. package/corpus/templates/clips/app/components/ui/separator.tsx +0 -29
  961. package/corpus/templates/clips/app/components/ui/sheet.tsx +0 -160
  962. package/corpus/templates/clips/app/components/ui/sidebar.tsx +0 -782
  963. package/corpus/templates/clips/app/components/ui/skeleton.tsx +0 -15
  964. package/corpus/templates/clips/app/components/ui/slider.tsx +0 -26
  965. package/corpus/templates/clips/app/components/ui/sonner.tsx +0 -58
  966. package/corpus/templates/clips/app/components/ui/spinner.tsx +0 -17
  967. package/corpus/templates/clips/app/components/ui/switch.tsx +0 -27
  968. package/corpus/templates/clips/app/components/ui/table.tsx +0 -117
  969. package/corpus/templates/clips/app/components/ui/tabs.tsx +0 -53
  970. package/corpus/templates/clips/app/components/ui/textarea.tsx +0 -23
  971. package/corpus/templates/clips/app/components/ui/toast.tsx +0 -127
  972. package/corpus/templates/clips/app/components/ui/toaster.tsx +0 -33
  973. package/corpus/templates/clips/app/components/ui/toggle-group.tsx +0 -59
  974. package/corpus/templates/clips/app/components/ui/toggle.tsx +0 -43
  975. package/corpus/templates/clips/app/components/ui/tooltip.tsx +0 -30
  976. package/corpus/templates/clips/app/components/ui/use-toast.ts +0 -3
  977. package/corpus/templates/clips/app/hooks/use-mobile.tsx +0 -21
  978. package/corpus/templates/clips/app/hooks/use-toast.ts +0 -188
  979. package/corpus/templates/content/app/components/layout/HeaderActions.tsx +0 -84
  980. package/corpus/templates/content/app/components/ui/alert-dialog.tsx +0 -139
  981. package/corpus/templates/content/app/components/ui/button.tsx +0 -57
  982. package/corpus/templates/content/app/components/ui/dialog.tsx +0 -130
  983. package/corpus/templates/content/app/components/ui/dropdown-menu.tsx +0 -212
  984. package/corpus/templates/content/app/components/ui/input.tsx +0 -22
  985. package/corpus/templates/content/app/components/ui/label.tsx +0 -24
  986. package/corpus/templates/content/app/components/ui/popover.tsx +0 -44
  987. package/corpus/templates/content/app/components/ui/separator.tsx +0 -29
  988. package/corpus/templates/content/app/components/ui/sheet.tsx +0 -160
  989. package/corpus/templates/content/app/components/ui/skeleton.tsx +0 -15
  990. package/corpus/templates/content/app/components/ui/sonner.tsx +0 -58
  991. package/corpus/templates/content/app/components/ui/spinner.tsx +0 -17
  992. package/corpus/templates/content/app/components/ui/table.tsx +0 -117
  993. package/corpus/templates/content/app/components/ui/toast.tsx +0 -127
  994. package/corpus/templates/content/app/components/ui/toaster.tsx +0 -33
  995. package/corpus/templates/content/app/components/ui/toggle.tsx +0 -43
  996. package/corpus/templates/content/app/components/ui/tooltip.tsx +0 -30
  997. package/corpus/templates/content/app/components/ui/use-toast.ts +0 -3
  998. package/corpus/templates/content/app/hooks/use-mobile.tsx +0 -21
  999. package/corpus/templates/content/app/hooks/use-toast.ts +0 -188
  1000. package/corpus/templates/design/app/components/layout/HeaderActions.tsx +0 -84
  1001. package/corpus/templates/design/app/components/ui/accordion.tsx +0 -56
  1002. package/corpus/templates/design/app/components/ui/alert-dialog.tsx +0 -139
  1003. package/corpus/templates/design/app/components/ui/alert.tsx +0 -59
  1004. package/corpus/templates/design/app/components/ui/aspect-ratio.tsx +0 -5
  1005. package/corpus/templates/design/app/components/ui/avatar.tsx +0 -48
  1006. package/corpus/templates/design/app/components/ui/badge.tsx +0 -37
  1007. package/corpus/templates/design/app/components/ui/breadcrumb.tsx +0 -115
  1008. package/corpus/templates/design/app/components/ui/button.tsx +0 -57
  1009. package/corpus/templates/design/app/components/ui/calendar.tsx +0 -68
  1010. package/corpus/templates/design/app/components/ui/card.tsx +0 -86
  1011. package/corpus/templates/design/app/components/ui/carousel.tsx +0 -260
  1012. package/corpus/templates/design/app/components/ui/chart.tsx +0 -375
  1013. package/corpus/templates/design/app/components/ui/checkbox.tsx +0 -28
  1014. package/corpus/templates/design/app/components/ui/collapsible.tsx +0 -9
  1015. package/corpus/templates/design/app/components/ui/command.tsx +0 -154
  1016. package/corpus/templates/design/app/components/ui/context-menu.tsx +0 -202
  1017. package/corpus/templates/design/app/components/ui/dialog.tsx +0 -130
  1018. package/corpus/templates/design/app/components/ui/drawer.tsx +0 -116
  1019. package/corpus/templates/design/app/components/ui/dropdown-menu.tsx +0 -212
  1020. package/corpus/templates/design/app/components/ui/form.tsx +0 -177
  1021. package/corpus/templates/design/app/components/ui/hover-card.tsx +0 -27
  1022. package/corpus/templates/design/app/components/ui/input-otp.tsx +0 -69
  1023. package/corpus/templates/design/app/components/ui/input.tsx +0 -22
  1024. package/corpus/templates/design/app/components/ui/label.tsx +0 -24
  1025. package/corpus/templates/design/app/components/ui/menubar.tsx +0 -234
  1026. package/corpus/templates/design/app/components/ui/navigation-menu.tsx +0 -128
  1027. package/corpus/templates/design/app/components/ui/pagination.tsx +0 -121
  1028. package/corpus/templates/design/app/components/ui/popover.tsx +0 -44
  1029. package/corpus/templates/design/app/components/ui/progress.tsx +0 -26
  1030. package/corpus/templates/design/app/components/ui/radio-group.tsx +0 -42
  1031. package/corpus/templates/design/app/components/ui/resizable.tsx +0 -43
  1032. package/corpus/templates/design/app/components/ui/scroll-area.tsx +0 -46
  1033. package/corpus/templates/design/app/components/ui/select.tsx +0 -158
  1034. package/corpus/templates/design/app/components/ui/separator.tsx +0 -29
  1035. package/corpus/templates/design/app/components/ui/sheet.tsx +0 -160
  1036. package/corpus/templates/design/app/components/ui/sidebar.tsx +0 -782
  1037. package/corpus/templates/design/app/components/ui/skeleton.tsx +0 -15
  1038. package/corpus/templates/design/app/components/ui/slider.tsx +0 -26
  1039. package/corpus/templates/design/app/components/ui/sonner.tsx +0 -58
  1040. package/corpus/templates/design/app/components/ui/spinner.tsx +0 -17
  1041. package/corpus/templates/design/app/components/ui/switch.tsx +0 -27
  1042. package/corpus/templates/design/app/components/ui/table.tsx +0 -117
  1043. package/corpus/templates/design/app/components/ui/tabs.tsx +0 -53
  1044. package/corpus/templates/design/app/components/ui/textarea.tsx +0 -23
  1045. package/corpus/templates/design/app/components/ui/toast.tsx +0 -127
  1046. package/corpus/templates/design/app/components/ui/toaster.tsx +0 -33
  1047. package/corpus/templates/design/app/components/ui/toggle-group.tsx +0 -59
  1048. package/corpus/templates/design/app/components/ui/toggle.tsx +0 -43
  1049. package/corpus/templates/design/app/components/ui/tooltip.tsx +0 -30
  1050. package/corpus/templates/design/app/components/ui/use-toast.ts +0 -3
  1051. package/corpus/templates/design/app/hooks/use-mobile.tsx +0 -21
  1052. package/corpus/templates/design/app/hooks/use-toast.ts +0 -188
  1053. package/corpus/templates/forms/app/components/layout/HeaderActions.tsx +0 -84
  1054. package/corpus/templates/forms/app/components/ui/accordion.tsx +0 -56
  1055. package/corpus/templates/forms/app/components/ui/alert-dialog.tsx +0 -139
  1056. package/corpus/templates/forms/app/components/ui/alert.tsx +0 -59
  1057. package/corpus/templates/forms/app/components/ui/aspect-ratio.tsx +0 -5
  1058. package/corpus/templates/forms/app/components/ui/avatar.tsx +0 -48
  1059. package/corpus/templates/forms/app/components/ui/badge.tsx +0 -37
  1060. package/corpus/templates/forms/app/components/ui/breadcrumb.tsx +0 -115
  1061. package/corpus/templates/forms/app/components/ui/button.tsx +0 -57
  1062. package/corpus/templates/forms/app/components/ui/card.tsx +0 -86
  1063. package/corpus/templates/forms/app/components/ui/carousel.tsx +0 -260
  1064. package/corpus/templates/forms/app/components/ui/checkbox.tsx +0 -28
  1065. package/corpus/templates/forms/app/components/ui/collapsible.tsx +0 -9
  1066. package/corpus/templates/forms/app/components/ui/dialog.tsx +0 -130
  1067. package/corpus/templates/forms/app/components/ui/drawer.tsx +0 -116
  1068. package/corpus/templates/forms/app/components/ui/dropdown-menu.tsx +0 -212
  1069. package/corpus/templates/forms/app/components/ui/form.tsx +0 -177
  1070. package/corpus/templates/forms/app/components/ui/hover-card.tsx +0 -27
  1071. package/corpus/templates/forms/app/components/ui/input-otp.tsx +0 -69
  1072. package/corpus/templates/forms/app/components/ui/input.tsx +0 -22
  1073. package/corpus/templates/forms/app/components/ui/label.tsx +0 -24
  1074. package/corpus/templates/forms/app/components/ui/navigation-menu.tsx +0 -128
  1075. package/corpus/templates/forms/app/components/ui/pagination.tsx +0 -121
  1076. package/corpus/templates/forms/app/components/ui/popover.tsx +0 -44
  1077. package/corpus/templates/forms/app/components/ui/progress.tsx +0 -26
  1078. package/corpus/templates/forms/app/components/ui/radio-group.tsx +0 -42
  1079. package/corpus/templates/forms/app/components/ui/resizable.tsx +0 -43
  1080. package/corpus/templates/forms/app/components/ui/scroll-area.tsx +0 -46
  1081. package/corpus/templates/forms/app/components/ui/select.tsx +0 -158
  1082. package/corpus/templates/forms/app/components/ui/separator.tsx +0 -29
  1083. package/corpus/templates/forms/app/components/ui/sheet.tsx +0 -160
  1084. package/corpus/templates/forms/app/components/ui/sidebar.tsx +0 -782
  1085. package/corpus/templates/forms/app/components/ui/skeleton.tsx +0 -15
  1086. package/corpus/templates/forms/app/components/ui/slider.tsx +0 -26
  1087. package/corpus/templates/forms/app/components/ui/sonner.tsx +0 -58
  1088. package/corpus/templates/forms/app/components/ui/spinner.tsx +0 -17
  1089. package/corpus/templates/forms/app/components/ui/switch.tsx +0 -27
  1090. package/corpus/templates/forms/app/components/ui/table.tsx +0 -117
  1091. package/corpus/templates/forms/app/components/ui/tabs.tsx +0 -53
  1092. package/corpus/templates/forms/app/components/ui/textarea.tsx +0 -23
  1093. package/corpus/templates/forms/app/components/ui/toast.tsx +0 -127
  1094. package/corpus/templates/forms/app/components/ui/toaster.tsx +0 -33
  1095. package/corpus/templates/forms/app/components/ui/toggle-group.tsx +0 -59
  1096. package/corpus/templates/forms/app/components/ui/toggle.tsx +0 -43
  1097. package/corpus/templates/forms/app/components/ui/tooltip.tsx +0 -30
  1098. package/corpus/templates/forms/app/hooks/use-mobile.tsx +0 -21
  1099. package/corpus/templates/forms/app/hooks/use-toast.ts +0 -188
  1100. package/corpus/templates/macros/app/components/layout/HeaderActions.tsx +0 -84
  1101. package/corpus/templates/macros/app/components/ui/accordion.tsx +0 -56
  1102. package/corpus/templates/macros/app/components/ui/alert-dialog.tsx +0 -139
  1103. package/corpus/templates/macros/app/components/ui/alert.tsx +0 -59
  1104. package/corpus/templates/macros/app/components/ui/aspect-ratio.tsx +0 -5
  1105. package/corpus/templates/macros/app/components/ui/avatar.tsx +0 -48
  1106. package/corpus/templates/macros/app/components/ui/badge.tsx +0 -37
  1107. package/corpus/templates/macros/app/components/ui/breadcrumb.tsx +0 -115
  1108. package/corpus/templates/macros/app/components/ui/chart.tsx +0 -375
  1109. package/corpus/templates/macros/app/components/ui/checkbox.tsx +0 -28
  1110. package/corpus/templates/macros/app/components/ui/collapsible.tsx +0 -9
  1111. package/corpus/templates/macros/app/components/ui/command.tsx +0 -154
  1112. package/corpus/templates/macros/app/components/ui/context-menu.tsx +0 -202
  1113. package/corpus/templates/macros/app/components/ui/drawer.tsx +0 -116
  1114. package/corpus/templates/macros/app/components/ui/dropdown-menu.tsx +0 -212
  1115. package/corpus/templates/macros/app/components/ui/form.tsx +0 -177
  1116. package/corpus/templates/macros/app/components/ui/hover-card.tsx +0 -27
  1117. package/corpus/templates/macros/app/components/ui/label.tsx +0 -24
  1118. package/corpus/templates/macros/app/components/ui/logo.tsx +0 -36
  1119. package/corpus/templates/macros/app/components/ui/navigation-menu.tsx +0 -128
  1120. package/corpus/templates/macros/app/components/ui/pagination.tsx +0 -121
  1121. package/corpus/templates/macros/app/components/ui/popover.tsx +0 -44
  1122. package/corpus/templates/macros/app/components/ui/radio-group.tsx +0 -42
  1123. package/corpus/templates/macros/app/components/ui/scroll-area.tsx +0 -46
  1124. package/corpus/templates/macros/app/components/ui/select.tsx +0 -158
  1125. package/corpus/templates/macros/app/components/ui/separator.tsx +0 -29
  1126. package/corpus/templates/macros/app/components/ui/sheet.tsx +0 -160
  1127. package/corpus/templates/macros/app/components/ui/skeleton.tsx +0 -15
  1128. package/corpus/templates/macros/app/components/ui/slider.tsx +0 -26
  1129. package/corpus/templates/macros/app/components/ui/sonner.tsx +0 -58
  1130. package/corpus/templates/macros/app/components/ui/switch.tsx +0 -27
  1131. package/corpus/templates/macros/app/components/ui/table.tsx +0 -117
  1132. package/corpus/templates/macros/app/components/ui/toast.tsx +0 -127
  1133. package/corpus/templates/macros/app/components/ui/toggle-group.tsx +0 -59
  1134. package/corpus/templates/macros/app/components/ui/toggle.tsx +0 -43
  1135. package/corpus/templates/macros/app/components/ui/tooltip.tsx +0 -30
  1136. package/corpus/templates/mail/app/components/ui/accordion.tsx +0 -56
  1137. package/corpus/templates/mail/app/components/ui/alert-dialog.tsx +0 -139
  1138. package/corpus/templates/mail/app/components/ui/alert.tsx +0 -59
  1139. package/corpus/templates/mail/app/components/ui/aspect-ratio.tsx +0 -5
  1140. package/corpus/templates/mail/app/components/ui/avatar.tsx +0 -48
  1141. package/corpus/templates/mail/app/components/ui/badge.tsx +0 -37
  1142. package/corpus/templates/mail/app/components/ui/breadcrumb.tsx +0 -115
  1143. package/corpus/templates/mail/app/components/ui/button.tsx +0 -57
  1144. package/corpus/templates/mail/app/components/ui/card.tsx +0 -86
  1145. package/corpus/templates/mail/app/components/ui/carousel.tsx +0 -260
  1146. package/corpus/templates/mail/app/components/ui/checkbox.tsx +0 -28
  1147. package/corpus/templates/mail/app/components/ui/collapsible.tsx +0 -9
  1148. package/corpus/templates/mail/app/components/ui/dialog.tsx +0 -130
  1149. package/corpus/templates/mail/app/components/ui/drawer.tsx +0 -116
  1150. package/corpus/templates/mail/app/components/ui/dropdown-menu.tsx +0 -212
  1151. package/corpus/templates/mail/app/components/ui/form.tsx +0 -177
  1152. package/corpus/templates/mail/app/components/ui/hover-card.tsx +0 -27
  1153. package/corpus/templates/mail/app/components/ui/input-otp.tsx +0 -69
  1154. package/corpus/templates/mail/app/components/ui/label.tsx +0 -24
  1155. package/corpus/templates/mail/app/components/ui/navigation-menu.tsx +0 -128
  1156. package/corpus/templates/mail/app/components/ui/pagination.tsx +0 -121
  1157. package/corpus/templates/mail/app/components/ui/popover.tsx +0 -44
  1158. package/corpus/templates/mail/app/components/ui/progress.tsx +0 -26
  1159. package/corpus/templates/mail/app/components/ui/radio-group.tsx +0 -42
  1160. package/corpus/templates/mail/app/components/ui/resizable.tsx +0 -43
  1161. package/corpus/templates/mail/app/components/ui/scroll-area.tsx +0 -46
  1162. package/corpus/templates/mail/app/components/ui/select.tsx +0 -158
  1163. package/corpus/templates/mail/app/components/ui/separator.tsx +0 -29
  1164. package/corpus/templates/mail/app/components/ui/sheet.tsx +0 -160
  1165. package/corpus/templates/mail/app/components/ui/sidebar.tsx +0 -782
  1166. package/corpus/templates/mail/app/components/ui/skeleton.tsx +0 -15
  1167. package/corpus/templates/mail/app/components/ui/slider.tsx +0 -26
  1168. package/corpus/templates/mail/app/components/ui/spinner.tsx +0 -17
  1169. package/corpus/templates/mail/app/components/ui/switch.tsx +0 -27
  1170. package/corpus/templates/mail/app/components/ui/table.tsx +0 -117
  1171. package/corpus/templates/mail/app/components/ui/tabs.tsx +0 -53
  1172. package/corpus/templates/mail/app/components/ui/toast.tsx +0 -127
  1173. package/corpus/templates/mail/app/components/ui/toaster.tsx +0 -33
  1174. package/corpus/templates/mail/app/components/ui/toggle-group.tsx +0 -59
  1175. package/corpus/templates/mail/app/components/ui/toggle.tsx +0 -43
  1176. package/corpus/templates/mail/app/components/ui/tooltip.tsx +0 -30
  1177. package/corpus/templates/mail/app/hooks/use-toast.ts +0 -188
  1178. package/corpus/templates/plan/app/components/layout/HeaderActions.tsx +0 -84
  1179. package/corpus/templates/plan/app/components/ui/accordion.tsx +0 -56
  1180. package/corpus/templates/plan/app/components/ui/alert-dialog.tsx +0 -139
  1181. package/corpus/templates/plan/app/components/ui/alert.tsx +0 -59
  1182. package/corpus/templates/plan/app/components/ui/aspect-ratio.tsx +0 -5
  1183. package/corpus/templates/plan/app/components/ui/avatar.tsx +0 -48
  1184. package/corpus/templates/plan/app/components/ui/badge.tsx +0 -37
  1185. package/corpus/templates/plan/app/components/ui/breadcrumb.tsx +0 -115
  1186. package/corpus/templates/plan/app/components/ui/button.tsx +0 -57
  1187. package/corpus/templates/plan/app/components/ui/calendar.tsx +0 -68
  1188. package/corpus/templates/plan/app/components/ui/card.tsx +0 -86
  1189. package/corpus/templates/plan/app/components/ui/carousel.tsx +0 -260
  1190. package/corpus/templates/plan/app/components/ui/chart.tsx +0 -375
  1191. package/corpus/templates/plan/app/components/ui/checkbox.tsx +0 -28
  1192. package/corpus/templates/plan/app/components/ui/collapsible.tsx +0 -9
  1193. package/corpus/templates/plan/app/components/ui/command.tsx +0 -154
  1194. package/corpus/templates/plan/app/components/ui/context-menu.tsx +0 -202
  1195. package/corpus/templates/plan/app/components/ui/dialog.tsx +0 -130
  1196. package/corpus/templates/plan/app/components/ui/drawer.tsx +0 -116
  1197. package/corpus/templates/plan/app/components/ui/dropdown-menu.tsx +0 -212
  1198. package/corpus/templates/plan/app/components/ui/form.tsx +0 -177
  1199. package/corpus/templates/plan/app/components/ui/hover-card.tsx +0 -27
  1200. package/corpus/templates/plan/app/components/ui/input-otp.tsx +0 -69
  1201. package/corpus/templates/plan/app/components/ui/input.tsx +0 -22
  1202. package/corpus/templates/plan/app/components/ui/label.tsx +0 -24
  1203. package/corpus/templates/plan/app/components/ui/menubar.tsx +0 -234
  1204. package/corpus/templates/plan/app/components/ui/navigation-menu.tsx +0 -128
  1205. package/corpus/templates/plan/app/components/ui/pagination.tsx +0 -121
  1206. package/corpus/templates/plan/app/components/ui/popover.tsx +0 -44
  1207. package/corpus/templates/plan/app/components/ui/progress.tsx +0 -26
  1208. package/corpus/templates/plan/app/components/ui/radio-group.tsx +0 -42
  1209. package/corpus/templates/plan/app/components/ui/resizable.tsx +0 -43
  1210. package/corpus/templates/plan/app/components/ui/scroll-area.tsx +0 -46
  1211. package/corpus/templates/plan/app/components/ui/select.tsx +0 -158
  1212. package/corpus/templates/plan/app/components/ui/separator.tsx +0 -29
  1213. package/corpus/templates/plan/app/components/ui/sheet.tsx +0 -160
  1214. package/corpus/templates/plan/app/components/ui/sidebar.tsx +0 -782
  1215. package/corpus/templates/plan/app/components/ui/skeleton.tsx +0 -15
  1216. package/corpus/templates/plan/app/components/ui/slider.tsx +0 -26
  1217. package/corpus/templates/plan/app/components/ui/sonner.tsx +0 -58
  1218. package/corpus/templates/plan/app/components/ui/spinner.tsx +0 -17
  1219. package/corpus/templates/plan/app/components/ui/switch.tsx +0 -27
  1220. package/corpus/templates/plan/app/components/ui/table.tsx +0 -117
  1221. package/corpus/templates/plan/app/components/ui/textarea.tsx +0 -23
  1222. package/corpus/templates/plan/app/components/ui/toast.tsx +0 -127
  1223. package/corpus/templates/plan/app/components/ui/toaster.tsx +0 -33
  1224. package/corpus/templates/plan/app/components/ui/toggle-group.tsx +0 -59
  1225. package/corpus/templates/plan/app/components/ui/toggle.tsx +0 -43
  1226. package/corpus/templates/plan/app/components/ui/tooltip.tsx +0 -30
  1227. package/corpus/templates/plan/app/components/ui/use-toast.ts +0 -3
  1228. package/corpus/templates/plan/app/hooks/use-mobile.tsx +0 -21
  1229. package/corpus/templates/plan/app/hooks/use-toast.ts +0 -188
  1230. package/corpus/templates/slides/app/components/layout/HeaderActions.tsx +0 -84
  1231. package/corpus/templates/slides/app/components/ui/accordion.tsx +0 -56
  1232. package/corpus/templates/slides/app/components/ui/alert-dialog.tsx +0 -139
  1233. package/corpus/templates/slides/app/components/ui/alert.tsx +0 -59
  1234. package/corpus/templates/slides/app/components/ui/aspect-ratio.tsx +0 -5
  1235. package/corpus/templates/slides/app/components/ui/avatar.tsx +0 -48
  1236. package/corpus/templates/slides/app/components/ui/badge.tsx +0 -37
  1237. package/corpus/templates/slides/app/components/ui/breadcrumb.tsx +0 -115
  1238. package/corpus/templates/slides/app/components/ui/button.tsx +0 -57
  1239. package/corpus/templates/slides/app/components/ui/calendar.tsx +0 -68
  1240. package/corpus/templates/slides/app/components/ui/card.tsx +0 -86
  1241. package/corpus/templates/slides/app/components/ui/carousel.tsx +0 -260
  1242. package/corpus/templates/slides/app/components/ui/chart.tsx +0 -375
  1243. package/corpus/templates/slides/app/components/ui/checkbox.tsx +0 -28
  1244. package/corpus/templates/slides/app/components/ui/collapsible.tsx +0 -9
  1245. package/corpus/templates/slides/app/components/ui/command.tsx +0 -154
  1246. package/corpus/templates/slides/app/components/ui/context-menu.tsx +0 -202
  1247. package/corpus/templates/slides/app/components/ui/dialog.tsx +0 -130
  1248. package/corpus/templates/slides/app/components/ui/drawer.tsx +0 -116
  1249. package/corpus/templates/slides/app/components/ui/dropdown-menu.tsx +0 -212
  1250. package/corpus/templates/slides/app/components/ui/form.tsx +0 -177
  1251. package/corpus/templates/slides/app/components/ui/hover-card.tsx +0 -27
  1252. package/corpus/templates/slides/app/components/ui/input-otp.tsx +0 -69
  1253. package/corpus/templates/slides/app/components/ui/input.tsx +0 -22
  1254. package/corpus/templates/slides/app/components/ui/label.tsx +0 -24
  1255. package/corpus/templates/slides/app/components/ui/menubar.tsx +0 -234
  1256. package/corpus/templates/slides/app/components/ui/navigation-menu.tsx +0 -128
  1257. package/corpus/templates/slides/app/components/ui/pagination.tsx +0 -121
  1258. package/corpus/templates/slides/app/components/ui/popover.tsx +0 -44
  1259. package/corpus/templates/slides/app/components/ui/progress.tsx +0 -26
  1260. package/corpus/templates/slides/app/components/ui/radio-group.tsx +0 -42
  1261. package/corpus/templates/slides/app/components/ui/resizable.tsx +0 -43
  1262. package/corpus/templates/slides/app/components/ui/scroll-area.tsx +0 -46
  1263. package/corpus/templates/slides/app/components/ui/select.tsx +0 -158
  1264. package/corpus/templates/slides/app/components/ui/separator.tsx +0 -29
  1265. package/corpus/templates/slides/app/components/ui/sheet.tsx +0 -160
  1266. package/corpus/templates/slides/app/components/ui/sidebar.tsx +0 -782
  1267. package/corpus/templates/slides/app/components/ui/skeleton.tsx +0 -15
  1268. package/corpus/templates/slides/app/components/ui/slider.tsx +0 -26
  1269. package/corpus/templates/slides/app/components/ui/sonner.tsx +0 -58
  1270. package/corpus/templates/slides/app/components/ui/spinner.tsx +0 -17
  1271. package/corpus/templates/slides/app/components/ui/switch.tsx +0 -27
  1272. package/corpus/templates/slides/app/components/ui/table.tsx +0 -117
  1273. package/corpus/templates/slides/app/components/ui/tabs.tsx +0 -53
  1274. package/corpus/templates/slides/app/components/ui/textarea.tsx +0 -23
  1275. package/corpus/templates/slides/app/components/ui/toast.tsx +0 -127
  1276. package/corpus/templates/slides/app/components/ui/toaster.tsx +0 -33
  1277. package/corpus/templates/slides/app/components/ui/toggle-group.tsx +0 -59
  1278. package/corpus/templates/slides/app/components/ui/toggle.tsx +0 -43
  1279. package/corpus/templates/slides/app/components/ui/tooltip.tsx +0 -30
  1280. package/corpus/templates/slides/app/components/ui/use-toast.ts +0 -3
  1281. package/corpus/templates/slides/app/hooks/use-mobile.tsx +0 -21
  1282. package/corpus/templates/slides/app/hooks/use-toast.ts +0 -188
@@ -0,0 +1,25 @@
1
+ import { DEFAULT_AGENT_ACCESS_TTL_SECONDS, scopedAgentAccessResourceId, } from "../shared/agent-access.js";
2
+ import { signShortLivedToken, verifyShortLivedToken, } from "./short-lived-token.js";
3
+ export { AGENT_ACCESS_PARAM, DEFAULT_AGENT_ACCESS_TTL_SECONDS, appendAgentAccessParam, buildAgentAccessApiUrl, buildAgentAccessUrl, normalizeAgentAccessBasePath, normalizeAgentAccessOrigin, scopedAgentAccessResourceId, toAgentAccessUrl, } from "../shared/agent-access.js";
4
+ export function signScopedAgentAccessToken({ resourceKind, resourceId, viewerEmail, ttlSeconds = DEFAULT_AGENT_ACCESS_TTL_SECONDS, }) {
5
+ return signShortLivedToken({
6
+ resourceId: scopedAgentAccessResourceId(resourceKind, resourceId),
7
+ viewerEmail,
8
+ ttlSeconds,
9
+ });
10
+ }
11
+ export function verifyScopedAgentAccessToken(token, scope) {
12
+ if (!token)
13
+ return { ok: false, reason: "missing" };
14
+ return verifyShortLivedToken(token, scopedAgentAccessResourceId(scope.resourceKind, scope.resourceId));
15
+ }
16
+ export function createScopedAgentAccessGrant(options) {
17
+ const ttlSeconds = options.ttlSeconds ?? DEFAULT_AGENT_ACCESS_TTL_SECONDS;
18
+ const token = signScopedAgentAccessToken({ ...options, ttlSeconds });
19
+ return {
20
+ token,
21
+ expiresAt: new Date(Date.now() + ttlSeconds * 1000).toISOString(),
22
+ ttlSeconds,
23
+ };
24
+ }
25
+ //# sourceMappingURL=agent-access.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-access.js","sourceRoot":"","sources":["../../src/server/agent-access.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gCAAgC,EAChC,2BAA2B,GAE5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GAEtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,kBAAkB,EAClB,gCAAgC,EAChC,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,EAC3B,gBAAgB,GAIjB,MAAM,2BAA2B,CAAC;AAanC,MAAM,UAAU,0BAA0B,CAAC,EACzC,YAAY,EACZ,UAAU,EACV,WAAW,EACX,UAAU,GAAG,gCAAgC,GACf;IAC9B,OAAO,mBAAmB,CAAC;QACzB,UAAU,EAAE,2BAA2B,CAAC,YAAY,EAAE,UAAU,CAAC;QACjE,WAAW;QACX,UAAU;KACX,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,KAAa,EACb,KAA+B;IAE/B,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACpD,OAAO,qBAAqB,CAC1B,KAAK,EACL,2BAA2B,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC,CAClE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,OAAsC;IAEtC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,gCAAgC,CAAC;IAC1E,MAAM,KAAK,GAAG,0BAA0B,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IACrE,OAAO;QACL,KAAK;QACL,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;QACjE,UAAU;KACX,CAAC;AACJ,CAAC","sourcesContent":["import {\n DEFAULT_AGENT_ACCESS_TTL_SECONDS,\n scopedAgentAccessResourceId,\n type AgentAccessResourceScope,\n} from \"../shared/agent-access.js\";\nimport {\n signShortLivedToken,\n verifyShortLivedToken,\n type VerifyResult,\n} from \"./short-lived-token.js\";\n\nexport {\n AGENT_ACCESS_PARAM,\n DEFAULT_AGENT_ACCESS_TTL_SECONDS,\n appendAgentAccessParam,\n buildAgentAccessApiUrl,\n buildAgentAccessUrl,\n normalizeAgentAccessBasePath,\n normalizeAgentAccessOrigin,\n scopedAgentAccessResourceId,\n toAgentAccessUrl,\n type AgentAccessApiUrlOptions,\n type AgentAccessResourceScope,\n type AgentAccessUrlOptions,\n} from \"../shared/agent-access.js\";\n\nexport interface ScopedAgentAccessTokenOptions extends AgentAccessResourceScope {\n viewerEmail?: string;\n ttlSeconds?: number;\n}\n\nexport interface ScopedAgentAccessGrant {\n token: string;\n expiresAt: string;\n ttlSeconds: number;\n}\n\nexport function signScopedAgentAccessToken({\n resourceKind,\n resourceId,\n viewerEmail,\n ttlSeconds = DEFAULT_AGENT_ACCESS_TTL_SECONDS,\n}: ScopedAgentAccessTokenOptions): string {\n return signShortLivedToken({\n resourceId: scopedAgentAccessResourceId(resourceKind, resourceId),\n viewerEmail,\n ttlSeconds,\n });\n}\n\nexport function verifyScopedAgentAccessToken(\n token: string,\n scope: AgentAccessResourceScope,\n): VerifyResult {\n if (!token) return { ok: false, reason: \"missing\" };\n return verifyShortLivedToken(\n token,\n scopedAgentAccessResourceId(scope.resourceKind, scope.resourceId),\n );\n}\n\nexport function createScopedAgentAccessGrant(\n options: ScopedAgentAccessTokenOptions,\n): ScopedAgentAccessGrant {\n const ttlSeconds = options.ttlSeconds ?? DEFAULT_AGENT_ACCESS_TTL_SECONDS;\n const token = signScopedAgentAccessToken({ ...options, ttlSeconds });\n return {\n token,\n expiresAt: new Date(Date.now() + ttlSeconds * 1000).toISOString(),\n ttlSeconds,\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"h3-helpers.d.ts","sourceRoot":"","sources":["../../src/server/h3-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAmB1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAElC;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,QAAmB,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,6BAA6B,QAAmB,CAAC;AAE9D;;;GAGG;AACH,eAAO,MAAM,gCAAgC,KAAK,CAAC;AAEnD;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,UAaxC,CAAC;AAWF;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAMjE;AAED;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAElE;AAED;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CAAC,CAAC,GAAG,GAAG,EACjD,KAAK,EAAE,OAAO,EACd,QAAQ,GAAE,MAAoC,GAC7C,OAAO,CAAC,CAAC,CAAC,CAwCZ;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,cAAc,CAE7D"}
1
+ {"version":3,"file":"h3-helpers.d.ts","sourceRoot":"","sources":["../../src/server/h3-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAkB1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAElC;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,QAAmB,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,6BAA6B,QAAmB,CAAC;AAE9D;;;GAGG;AACH,eAAO,MAAM,gCAAgC,KAAK,CAAC;AAEnD;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,UAaxC,CAAC;AAWF;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAMjE;AAED;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAElE;AAED;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CAAC,CAAC,GAAG,GAAG,EACjD,KAAK,EAAE,OAAO,EACd,QAAQ,GAAE,MAAoC,GAC7C,OAAO,CAAC,CAAC,CAAC,CAwCZ;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,cAAc,CAe7D"}
@@ -1,4 +1,3 @@
1
- import { Readable } from "node:stream";
2
1
  /**
3
2
  * Small helpers around h3 v2 that polish ergonomics for templates.
4
3
  *
@@ -135,6 +134,17 @@ export async function readBodyWithSizeLimit(event, maxBytes = DEFAULT_CHAT_MAX_B
135
134
  * return streamFile(fs.createReadStream(filePath));
136
135
  */
137
136
  export function streamFile(stream) {
138
- return Readable.toWeb(stream);
137
+ return new ReadableStream({
138
+ start(controller) {
139
+ stream.on("data", (chunk) => {
140
+ controller.enqueue(typeof chunk === "string" ? new TextEncoder().encode(chunk) : chunk);
141
+ });
142
+ stream.on("end", () => controller.close());
143
+ stream.on("error", (error) => controller.error(error));
144
+ },
145
+ cancel() {
146
+ stream.destroy();
147
+ },
148
+ });
139
149
  }
140
150
  //# sourceMappingURL=h3-helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"h3-helpers.js","sourceRoot":"","sources":["../../src/server/h3-helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ReadStream } from \"node:fs\";\nimport { Readable } from \"node:stream\";\n\n/**\n * Small helpers around h3 v2 that polish ergonomics for templates.\n *\n * `readBody` — wraps h3's `readBody` so the result is typed `any` by default\n * (h3 v2 infers `unknown`, which forces `as` casts at every call site).\n *\n * `readBodyWithSizeLimit` — like `readBody` but rejects with a 413 response\n * when the `content-length` header (or the buffered body size) exceeds the\n * given threshold. Use this on any route whose payload can include inline\n * base64 attachments (chat POST, upload routes).\n *\n * `streamFile` — converts a Node `ReadStream` to a web `ReadableStream` so\n * route handlers can return file content without importing `node:stream`\n * inline. h3 v2 expects web streams everywhere.\n */\nimport { readBody as _readBody, getHeader, setResponseStatus } from \"h3\";\nimport type { H3Event } from \"h3\";\n\n/**\n * Default maximum chat-POST body size (25 MB uncompressed). The agent chat\n * body carries base64-encoded attachments so a 25 MB cap is generous while\n * still protecting against runaway payloads. Override per-route by passing a\n * different `maxBytes` value to `readBodyWithSizeLimit`.\n */\nexport const DEFAULT_CHAT_MAX_BODY_BYTES = 25 * 1024 * 1024;\n\n/**\n * Maximum file size for upload routes (25 MB). Mirrors Whisper's hard limit\n * so audio, image, and document uploads share a consistent ceiling.\n */\nexport const DEFAULT_UPLOAD_MAX_FILE_BYTES = 25 * 1024 * 1024;\n\n/**\n * Maximum number of attachments per chat message. Guards against pathological\n * requests that would fan out into hundreds of parallel model content-parts.\n */\nexport const MAX_CHAT_ATTACHMENTS_PER_MESSAGE = 20;\n\n/**\n * MIME types allowed on the file-upload routes. Executables and scripts are\n * explicitly excluded; everything else is allowed at the default tier.\n * Pass `allowedMimeTypes` to `assertAllowedMimeType` to enforce on a route.\n */\nexport const UPLOAD_ALLOWED_MIME_PREFIXES = [\n \"image/\",\n \"video/\",\n \"audio/\",\n \"text/\",\n \"application/pdf\",\n \"application/json\",\n \"application/zip\",\n \"application/gzip\",\n \"application/x-tar\",\n \"application/vnd.ms-excel\",\n \"application/vnd.openxmlformats-officedocument\",\n \"application/msword\",\n];\n\n/** Mime types that are always rejected even if a prefix matches. */\nconst UPLOAD_BLOCKED_MIME_TYPES = new Set([\n \"application/x-msdownload\",\n \"application/x-executable\",\n \"application/x-sh\",\n \"application/x-bat\",\n \"application/x-msdos-program\",\n]);\n\n/**\n * Returns true when the given MIME type is acceptable for uploads.\n * Blocks executables and scripts; allows everything else in the allow-prefix list.\n */\nexport function isAllowedUploadMimeType(mimeType: string): boolean {\n const lower = (mimeType || \"\").toLowerCase().split(\";\")[0].trim();\n if (UPLOAD_BLOCKED_MIME_TYPES.has(lower)) return false;\n return UPLOAD_ALLOWED_MIME_PREFIXES.some((prefix) =>\n lower.startsWith(prefix),\n );\n}\n\n/**\n * Parse a JSON request body. Returns `{}` if the body is empty or absent\n * so callers don't have to null-check before destructuring.\n *\n * Defaults T to `any` for ergonomic field access. Pass an explicit type\n * argument when you want a typed result:\n *\n * const { email, password } = await readBody<LoginRequest>(event);\n */\nexport async function readBody<T = any>(event: H3Event): Promise<T> {\n return ((await _readBody(event)) ?? {}) as T;\n}\n\n/**\n * Like `readBody` but rejects with a 413 response when the declared\n * `content-length` (or the actual buffered body) exceeds `maxBytes`.\n *\n * @param event - H3 event\n * @param maxBytes - Maximum allowed body size in bytes (default: 25 MB)\n * @returns Parsed body or `{}` when absent\n * @throws Never — on over-size it sets status 413 and throws an object with\n * `{ statusCode: 413, message }` so the h3 handler can propagate it.\n */\nexport async function readBodyWithSizeLimit<T = any>(\n event: H3Event,\n maxBytes: number = DEFAULT_CHAT_MAX_BODY_BYTES,\n): Promise<T> {\n // Fast-path: check Content-Length before buffering the body.\n const clRaw = getHeader(event, \"content-length\");\n if (clRaw) {\n const declared = parseInt(clRaw, 10);\n if (!Number.isNaN(declared) && declared > maxBytes) {\n setResponseStatus(event, 413);\n throw Object.assign(\n new Error(`Request body too large (max ${maxBytes} bytes)`),\n {\n statusCode: 413,\n },\n );\n }\n }\n\n const body = await _readBody(event);\n\n // Also check the actual serialised size for chunked requests that omit C-L.\n if (body !== null && body !== undefined) {\n let actualBytes: number;\n if (typeof body === \"string\") {\n actualBytes = Buffer.byteLength(body, \"utf8\");\n } else {\n try {\n actualBytes = Buffer.byteLength(JSON.stringify(body), \"utf8\");\n } catch {\n actualBytes = 0;\n }\n }\n if (actualBytes > maxBytes) {\n setResponseStatus(event, 413);\n throw Object.assign(\n new Error(`Request body too large (max ${maxBytes} bytes)`),\n { statusCode: 413 },\n );\n }\n }\n\n return (body ?? {}) as T;\n}\n\n/**\n * Convert a Node `ReadStream` (e.g. from `fs.createReadStream`) into a web\n * `ReadableStream`, suitable for returning directly from an h3 v2 handler.\n *\n * import { streamFile } from \"@agent-native/core/server\";\n * import fs from \"node:fs\";\n *\n * return streamFile(fs.createReadStream(filePath));\n */\nexport function streamFile(stream: ReadStream): ReadableStream {\n return Readable.toWeb(stream) as ReadableStream;\n}\n"]}
1
+ {"version":3,"file":"h3-helpers.js","sourceRoot":"","sources":["../../src/server/h3-helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ReadStream } from \"node:fs\";\n\n/**\n * Small helpers around h3 v2 that polish ergonomics for templates.\n *\n * `readBody` — wraps h3's `readBody` so the result is typed `any` by default\n * (h3 v2 infers `unknown`, which forces `as` casts at every call site).\n *\n * `readBodyWithSizeLimit` — like `readBody` but rejects with a 413 response\n * when the `content-length` header (or the buffered body size) exceeds the\n * given threshold. Use this on any route whose payload can include inline\n * base64 attachments (chat POST, upload routes).\n *\n * `streamFile` — converts a Node `ReadStream` to a web `ReadableStream` so\n * route handlers can return file content without importing `node:stream`\n * inline. h3 v2 expects web streams everywhere.\n */\nimport { readBody as _readBody, getHeader, setResponseStatus } from \"h3\";\nimport type { H3Event } from \"h3\";\n\n/**\n * Default maximum chat-POST body size (25 MB uncompressed). The agent chat\n * body carries base64-encoded attachments so a 25 MB cap is generous while\n * still protecting against runaway payloads. Override per-route by passing a\n * different `maxBytes` value to `readBodyWithSizeLimit`.\n */\nexport const DEFAULT_CHAT_MAX_BODY_BYTES = 25 * 1024 * 1024;\n\n/**\n * Maximum file size for upload routes (25 MB). Mirrors Whisper's hard limit\n * so audio, image, and document uploads share a consistent ceiling.\n */\nexport const DEFAULT_UPLOAD_MAX_FILE_BYTES = 25 * 1024 * 1024;\n\n/**\n * Maximum number of attachments per chat message. Guards against pathological\n * requests that would fan out into hundreds of parallel model content-parts.\n */\nexport const MAX_CHAT_ATTACHMENTS_PER_MESSAGE = 20;\n\n/**\n * MIME types allowed on the file-upload routes. Executables and scripts are\n * explicitly excluded; everything else is allowed at the default tier.\n * Pass `allowedMimeTypes` to `assertAllowedMimeType` to enforce on a route.\n */\nexport const UPLOAD_ALLOWED_MIME_PREFIXES = [\n \"image/\",\n \"video/\",\n \"audio/\",\n \"text/\",\n \"application/pdf\",\n \"application/json\",\n \"application/zip\",\n \"application/gzip\",\n \"application/x-tar\",\n \"application/vnd.ms-excel\",\n \"application/vnd.openxmlformats-officedocument\",\n \"application/msword\",\n];\n\n/** Mime types that are always rejected even if a prefix matches. */\nconst UPLOAD_BLOCKED_MIME_TYPES = new Set([\n \"application/x-msdownload\",\n \"application/x-executable\",\n \"application/x-sh\",\n \"application/x-bat\",\n \"application/x-msdos-program\",\n]);\n\n/**\n * Returns true when the given MIME type is acceptable for uploads.\n * Blocks executables and scripts; allows everything else in the allow-prefix list.\n */\nexport function isAllowedUploadMimeType(mimeType: string): boolean {\n const lower = (mimeType || \"\").toLowerCase().split(\";\")[0].trim();\n if (UPLOAD_BLOCKED_MIME_TYPES.has(lower)) return false;\n return UPLOAD_ALLOWED_MIME_PREFIXES.some((prefix) =>\n lower.startsWith(prefix),\n );\n}\n\n/**\n * Parse a JSON request body. Returns `{}` if the body is empty or absent\n * so callers don't have to null-check before destructuring.\n *\n * Defaults T to `any` for ergonomic field access. Pass an explicit type\n * argument when you want a typed result:\n *\n * const { email, password } = await readBody<LoginRequest>(event);\n */\nexport async function readBody<T = any>(event: H3Event): Promise<T> {\n return ((await _readBody(event)) ?? {}) as T;\n}\n\n/**\n * Like `readBody` but rejects with a 413 response when the declared\n * `content-length` (or the actual buffered body) exceeds `maxBytes`.\n *\n * @param event - H3 event\n * @param maxBytes - Maximum allowed body size in bytes (default: 25 MB)\n * @returns Parsed body or `{}` when absent\n * @throws Never — on over-size it sets status 413 and throws an object with\n * `{ statusCode: 413, message }` so the h3 handler can propagate it.\n */\nexport async function readBodyWithSizeLimit<T = any>(\n event: H3Event,\n maxBytes: number = DEFAULT_CHAT_MAX_BODY_BYTES,\n): Promise<T> {\n // Fast-path: check Content-Length before buffering the body.\n const clRaw = getHeader(event, \"content-length\");\n if (clRaw) {\n const declared = parseInt(clRaw, 10);\n if (!Number.isNaN(declared) && declared > maxBytes) {\n setResponseStatus(event, 413);\n throw Object.assign(\n new Error(`Request body too large (max ${maxBytes} bytes)`),\n {\n statusCode: 413,\n },\n );\n }\n }\n\n const body = await _readBody(event);\n\n // Also check the actual serialised size for chunked requests that omit C-L.\n if (body !== null && body !== undefined) {\n let actualBytes: number;\n if (typeof body === \"string\") {\n actualBytes = Buffer.byteLength(body, \"utf8\");\n } else {\n try {\n actualBytes = Buffer.byteLength(JSON.stringify(body), \"utf8\");\n } catch {\n actualBytes = 0;\n }\n }\n if (actualBytes > maxBytes) {\n setResponseStatus(event, 413);\n throw Object.assign(\n new Error(`Request body too large (max ${maxBytes} bytes)`),\n { statusCode: 413 },\n );\n }\n }\n\n return (body ?? {}) as T;\n}\n\n/**\n * Convert a Node `ReadStream` (e.g. from `fs.createReadStream`) into a web\n * `ReadableStream`, suitable for returning directly from an h3 v2 handler.\n *\n * import { streamFile } from \"@agent-native/core/server\";\n * import fs from \"node:fs\";\n *\n * return streamFile(fs.createReadStream(filePath));\n */\nexport function streamFile(stream: ReadStream): ReadableStream {\n return new ReadableStream<Uint8Array>({\n start(controller) {\n stream.on(\"data\", (chunk: string | Uint8Array) => {\n controller.enqueue(\n typeof chunk === \"string\" ? new TextEncoder().encode(chunk) : chunk,\n );\n });\n stream.on(\"end\", () => controller.close());\n stream.on(\"error\", (error) => controller.error(error));\n },\n cancel() {\n stream.destroy();\n },\n });\n}\n"]}
@@ -60,6 +60,8 @@ export { renderEmail, emailStrong, emailLink, type RenderEmailArgs, type Rendere
60
60
  export { getAppProductionUrl, getFirstPartyProdUrl } from "./app-url.js";
61
61
  export { getConfiguredAppBasePath, normalizeAppBasePath, withConfiguredAppBasePath, } from "./app-base-path.js";
62
62
  export { signShortLivedToken, verifyShortLivedToken, type ShortLivedTokenClaims, type VerifyResult as ShortLivedTokenVerifyResult, } from "./short-lived-token.js";
63
+ export { AGENT_ACCESS_PARAM, DEFAULT_AGENT_ACCESS_TTL_SECONDS, appendAgentAccessParam, buildAgentAccessApiUrl, buildAgentAccessUrl, createScopedAgentAccessGrant, normalizeAgentAccessBasePath, normalizeAgentAccessOrigin, scopedAgentAccessResourceId, signScopedAgentAccessToken, toAgentAccessUrl, verifyScopedAgentAccessToken, type AgentAccessApiUrlOptions, type AgentAccessResourceScope, type AgentAccessUrlOptions, type ScopedAgentAccessGrant, type ScopedAgentAccessTokenOptions, } from "./agent-access.js";
64
+ export { AGENT_READABLE_RESOURCE_PAYLOAD_TYPE, AGENT_READABLE_RESOURCE_SCRIPT_TYPE, buildAgentReadableResourceDiscovery, renderAgentReadableResourceDiscoveryScript, safeJsonForHtml, type AgentReadableResourceDiscovery, type BuildAgentReadableResourceDiscoveryOptions, } from "../shared/agent-readable-resource.js";
63
65
  export type NitroPluginDef = (nitroApp: any) => void | Promise<void>;
64
66
  export declare function defineNitroPlugin(def: NitroPluginDef): NitroPluginDef;
65
67
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,YAAY,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,QAAQ,EACR,qBAAqB,EACrB,UAAU,EACV,2BAA2B,EAC3B,6BAA6B,EAC7B,gCAAgC,EAChC,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,KAAK,sBAAsB,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,8BAA8B,EAC9B,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,gCAAgC,EACrC,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,6BAA6B,GACnC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,UAAU,EACV,WAAW,EACX,UAAU,EACV,aAAa,EACb,eAAe,EACf,+BAA+B,EAC/B,yBAAyB,EACzB,4BAA4B,EAC5B,YAAY,EACZ,kBAAkB,EAClB,uBAAuB,EACvB,cAAc,EACd,KAAK,2BAA2B,EAChC,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,0BAA0B,EAC1B,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,+BAA+B,EACpC,KAAK,qBAAqB,GAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,4BAA4B,EAC5B,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAChC,KAAK,kCAAkC,EACvC,KAAK,iCAAiC,EACtC,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,GAChC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,GACb,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,uBAAuB,EACvB,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,iBAAiB,EACjB,KAAK,iBAAiB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,4BAA4B,EAC5B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI7E,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACL,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,+BAA+B,EAC/B,gCAAgC,GACjC,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,sBAAsB,EACtB,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,KAAK,sBAAsB,GAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,uCAAuC,EACvC,oCAAoC,EACpC,+BAA+B,EAC/B,wBAAwB,EACxB,mCAAmC,EACnC,KAAK,8BAA8B,EACnC,KAAK,6BAA6B,EAClC,KAAK,8BAA8B,EACnC,KAAK,gCAAgC,GACtC,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,YAAY,EACZ,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,mCAAmC,EACnC,4BAA4B,EAC5B,2CAA2C,EAC3C,2BAA2B,EAC3B,iCAAiC,EACjC,+BAA+B,EAC/B,2BAA2B,EAC3B,2BAA2B,EAC3B,KAAK,uBAAuB,GAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,iCAAiC,EACjC,KAAK,wCAAwC,GAC9C,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,uCAAuC,EACvC,0CAA0C,EAC1C,8BAA8B,EAC9B,kBAAkB,EAClB,0BAA0B,EAC1B,6BAA6B,EAC7B,2BAA2B,EAC3B,wBAAwB,EACxB,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,yBAAyB,EACzB,KAAK,gCAAgC,GACtC,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACV,yBAAyB,EACzB,+BAA+B,EAC/B,+BAA+B,EAC/B,gCAAgC,EAChC,sCAAsC,EACtC,oCAAoC,EACpC,2CAA2C,EAC3C,sCAAsC,GACvC,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,qBAAqB,GAC3B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,kBAAkB,EAClB,KAAK,mBAAmB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,SAAS,EACT,OAAO,EACP,eAAe,EACf,SAAS,EACT,UAAU,EACV,eAAe,EACf,KAAK,SAAS,EACd,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EACL,0BAA0B,EAC1B,sCAAsC,EACtC,yCAAyC,EACzC,gCAAgC,EAChC,8BAA8B,EAC9B,KAAK,sBAAsB,GAC5B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EACL,QAAQ,EACR,cAAc,EACd,yBAAyB,EACzB,KAAK,SAAS,GACf,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,6BAA6B,EAC7B,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,GAC9B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,KAAK,cAAc,EACnB,KAAK,iBAAiB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAExE,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,uBAAuB,EACvB,2BAA2B,EAC3B,qCAAqC,EACrC,UAAU,EACV,yBAAyB,EACzB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,eAAe,EACf,YAAY,EACZ,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,GAC/B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,UAAU,EACV,QAAQ,EACR,SAAS,EACT,cAAc,EACd,SAAS,EACT,uBAAuB,EACvB,yBAAyB,EACzB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,cAAc,EACd,wBAAwB,EACxB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,gCAAgC,EAChC,0BAA0B,EAC1B,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,2BAA2B,EAC3B,mCAAmC,EACnC,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,sBAAsB,EACtB,kCAAkC,EAClC,oCAAoC,EACpC,4BAA4B,EAC5B,8BAA8B,EAC9B,mCAAmC,EACnC,0BAA0B,EAC1B,sCAAsC,EACtC,sCAAsC,EACtC,6BAA6B,EAC7B,KAAK,yCAAyC,EAC9C,KAAK,gCAAgC,EACrC,KAAK,8BAA8B,EACnC,KAAK,2BAA2B,EAChC,KAAK,oCAAoC,EACzC,KAAK,4BAA4B,EACjC,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,EACnC,KAAK,8BAA8B,EACnC,KAAK,qCAAqC,EAC1C,KAAK,iCAAiC,GACvC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,6BAA6B,EAC7B,gCAAgC,EAChC,eAAe,EACf,KAAK,qBAAqB,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,EAChB,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACxB,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,GAC7B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,WAAW,EACX,WAAW,EACX,SAAS,EACT,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,QAAQ,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,YAAY,IAAI,2BAA2B,GACjD,MAAM,wBAAwB,CAAC;AAUhC,MAAM,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACrE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,GAAG,cAAc,CAErE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
@@ -61,6 +61,8 @@ export { renderEmail, emailStrong, emailLink, } from "./email-template.js";
61
61
  export { getAppProductionUrl, getFirstPartyProdUrl } from "./app-url.js";
62
62
  export { getConfiguredAppBasePath, normalizeAppBasePath, withConfiguredAppBasePath, } from "./app-base-path.js";
63
63
  export { signShortLivedToken, verifyShortLivedToken, } from "./short-lived-token.js";
64
+ export { AGENT_ACCESS_PARAM, DEFAULT_AGENT_ACCESS_TTL_SECONDS, appendAgentAccessParam, buildAgentAccessApiUrl, buildAgentAccessUrl, createScopedAgentAccessGrant, normalizeAgentAccessBasePath, normalizeAgentAccessOrigin, scopedAgentAccessResourceId, signScopedAgentAccessToken, toAgentAccessUrl, verifyScopedAgentAccessToken, } from "./agent-access.js";
65
+ export { AGENT_READABLE_RESOURCE_PAYLOAD_TYPE, AGENT_READABLE_RESOURCE_SCRIPT_TYPE, buildAgentReadableResourceDiscovery, renderAgentReadableResourceDiscoveryScript, safeJsonForHtml, } from "../shared/agent-readable-resource.js";
64
66
  export function defineNitroPlugin(def) {
65
67
  return def;
66
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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","sourcesContent":["export {\n createServer,\n type CreateServerOptions,\n type EnvKeyConfig,\n} from \"./create-server.js\";\n\nexport {\n readBody,\n readBodyWithSizeLimit,\n streamFile,\n DEFAULT_CHAT_MAX_BODY_BYTES,\n DEFAULT_UPLOAD_MAX_FILE_BYTES,\n MAX_CHAT_ATTACHMENTS_PER_MESSAGE,\n isAllowedUploadMimeType,\n} from \"./h3-helpers.js\";\nexport {\n buildDeepLink,\n toAbsoluteOpenUrl,\n toDesktopOpenUrl,\n toVsCodeOpenUrl,\n OPEN_ROUTE_SUBPATH,\n DESKTOP_OPEN_URL,\n VSCODE_OPEN_URL,\n type DeepLinkInput,\n} from \"./deep-link.js\";\nexport { createOpenRouteHandler, type OpenRouteOptions } from \"./open-route.js\";\nexport {\n createEmbedStartRouteHandler,\n buildEmbedStartPath,\n type EmbedStartRouteOptions,\n} from \"./embed-route.js\";\nexport {\n createEmbedSessionTicket,\n consumeEmbedSessionTicket,\n normalizeEmbedTargetPath,\n requestHasEmbedAuthMarker,\n resolveEmbedSessionFromRequest,\n setEmbedSessionCookie,\n signEmbedSessionToken,\n verifyEmbedSessionToken,\n type ConsumedEmbedSessionTicket,\n type ConsumeEmbedSessionTicketOptions,\n type EmbedSessionTicket,\n type EmbedSessionTicketInput,\n type EmbedSessionTokenClaims,\n type ResolvedEmbedSession,\n type VerifyEmbedSessionTokenResult,\n} from \"./embed-session.js\";\nexport { createSSEHandler, type SSEHandlerOptions } from \"./sse.js\";\nexport {\n mountAuthMiddleware,\n autoMountAuth,\n getSession,\n COOKIE_NAME,\n addSession,\n removeSession,\n getSessionEmail,\n getFrameworkSessionCookieValues,\n setFrameworkSessionCookie,\n clearFrameworkSessionCookies,\n runAuthGuard,\n setDesktopExchange,\n setDesktopExchangeError,\n safeReturnPath,\n type DesktopExchangeErrorPayload,\n type AuthSession,\n type AuthOptions,\n} from \"./auth.js\";\nexport {\n handleIdentitySso,\n getIdentityHubUrl,\n isIdentitySsoEnabled,\n isIdentitySsoBypassPath,\n identitySsoLoginButtonHtml,\n IDENTITY_SSO_PROVIDER_ID,\n IDENTITY_SSO_SCOPE,\n} from \"./identity-sso.js\";\nexport { requireEnvKey, type MissingKeyResponse } from \"./missing-key.js\";\nexport { verifyCaptcha, type CaptchaVerifyResult } from \"./captcha.js\";\nexport {\n getLocaleInitScript,\n parseAcceptLanguage,\n resolveLocaleFromRequest,\n type LocaleInitScriptOptions,\n type ResolveLocaleFromRequestOptions,\n type ResolvedRequestLocale,\n} from \"../localization/server.js\";\nexport {\n createProductionAgentHandler,\n type ActionEntry,\n type ScriptEntry,\n type ProductionAgentOptions,\n type ActionTool,\n type ScriptTool,\n type AgentMessage,\n type AgentChatRequest,\n type AgentChatEvent,\n type AgentChatAttachment,\n type AgentChatReference,\n type MentionProvider,\n type MentionProviderItem,\n type AgentLoopFinalResponseGuard,\n type AgentLoopFinalResponseGuardContext,\n type AgentLoopFinalResponseGuardResult,\n type AgentLoopToolCallSummary,\n type AgentLoopToolResultSummary,\n} from \"../agent/index.js\";\nexport {\n actionsToEngineTools,\n getOwnerActiveApiKey,\n runAgentLoop,\n} from \"../agent/production-agent.js\";\nexport {\n getStoredModelForEngine,\n resolveEngine,\n} from \"../agent/engine/index.js\";\nexport {\n completeText,\n type CompleteTextMessage,\n type CompleteTextOptions,\n type CompleteTextResult,\n type CompleteTextUsage,\n} from \"./complete-text.js\";\nexport { createDevScriptRegistry } from \"../scripts/dev/index.js\";\n\nexport {\n createPollHandler,\n recordChange,\n getVersion,\n getChangesSince,\n getPollEmitter,\n canSeeChangeForUser,\n POLL_CHANGE_EVENT,\n} from \"./poll.js\";\nexport { createPollEventsHandler } from \"./poll-events.js\";\nexport { createAuthPlugin, defaultAuthPlugin } from \"./auth-plugin.js\";\nexport {\n initServerSentry,\n isServerSentryEnabled,\n setSentryUserForRequest,\n captureRouteError,\n type RouteErrorContext,\n} from \"./sentry.js\";\nexport {\n captureError,\n captureServerError,\n registerErrorCaptureProvider,\n type CaptureErrorContext,\n type CaptureErrorProvider,\n} from \"./capture-error.js\";\nexport { createSentryPlugin, defaultSentryPlugin } from \"./sentry-plugin.js\";\n// Re-export the org plugin so the auto-discovery's DEFAULT_PLUGIN_REGISTRY\n// (which references \"defaultOrgPlugin\" from @agent-native/core/server) can\n// resolve it during the deploy build worker-entry generation.\nexport { createOrgPlugin, defaultOrgPlugin } from \"../org/plugin.js\";\nexport {\n createContextXrayPlugin,\n defaultContextXrayPlugin,\n} from \"../agent/context-xray/plugin.js\";\nexport {\n createObservationalMemoryPlugin,\n defaultObservationalMemoryPlugin,\n} from \"../agent/observational-memory/plugin.js\";\nexport {\n createGoogleAuthPlugin,\n type GoogleAuthPluginOptions,\n} from \"./google-auth-plugin.js\";\nexport type { GoogleAuthMode } from \"./google-auth-mode.js\";\nexport {\n createAgentChatPlugin,\n defaultAgentChatPlugin,\n refreshGlobalMcpManager,\n type AgentChatPluginOptions,\n} from \"./agent-chat-plugin.js\";\nexport {\n configureAgentNativeEmbeddedEnvironment,\n createAgentNativeEmbeddedAuthOptions,\n createAgentNativeEmbeddedPlugin,\n mountAgentNativeEmbedded,\n normalizeAgentNativeEmbeddedSession,\n type AgentNativeEmbeddedAuthOptions,\n type AgentNativeEmbeddedGetSession,\n type AgentNativeEmbeddedHostSession,\n type AgentNativeEmbeddedPluginOptions,\n} from \"./embedded.js\";\nexport {\n createThread,\n getThread,\n listThreads,\n updateThreadData,\n deleteThread,\n setThreadArchived,\n setThreadPinned,\n setThreadScope,\n type ChatThread,\n type ChatThreadScope,\n type ChatThreadSummary,\n type ListThreadsOptions,\n} from \"../chat-threads/store.js\";\nexport {\n createResourcesPlugin,\n defaultResourcesPlugin,\n} from \"./resources-plugin.js\";\nexport {\n createCoreRoutesPlugin,\n defaultCoreRoutesPlugin,\n FRAMEWORK_ROUTE_PREFIX,\n type CoreRoutesPluginOptions,\n} from \"./core-routes-plugin.js\";\nexport {\n AGENT_NATIVE_OG_IMAGE_CACHE_CONTROL,\n AGENT_NATIVE_OG_IMAGE_HEIGHT,\n AGENT_NATIVE_OG_IMAGE_NETLIFY_CACHE_CONTROL,\n AGENT_NATIVE_OG_IMAGE_WIDTH,\n agentNativeOgImageResponseHeaders,\n createAgentNativeOgImageHandler,\n renderAgentNativeOgImagePng,\n renderAgentNativeOgImageSvg,\n type AgentNativeOgImageInput,\n} from \"./social-og-image.js\";\nexport {\n createBrowserSessionActionEntries,\n type CreateBrowserSessionActionEntriesOptions,\n} from \"../browser-sessions/actions.js\";\nexport {\n DEFAULT_BROWSER_SESSION_REQUEST_POLL_MS,\n DEFAULT_BROWSER_SESSION_REQUEST_TIMEOUT_MS,\n DEFAULT_BROWSER_SESSION_TTL_MS,\n callBrowserSession,\n claimBrowserSessionRequest,\n completeBrowserSessionRequest,\n createBrowserSessionRequest,\n disconnectBrowserSession,\n getBrowserSession,\n getBrowserSessionRequest,\n listBrowserSessions,\n registerBrowserSession,\n waitForBrowserSessionRequest,\n} from \"../browser-sessions/store.js\";\nexport {\n mountBrowserSessionRoutes,\n type MountBrowserSessionRoutesOptions,\n} from \"../browser-sessions/routes.js\";\nexport type {\n AgentNativeBrowserSession,\n AgentNativeBrowserSessionAction,\n AgentNativeBrowserSessionRecord,\n AgentNativeBrowserSessionRequest,\n AgentNativeBrowserSessionRequestStatus,\n AgentNativeBrowserSessionRequestType,\n CreateAgentNativeBrowserSessionRequestInput,\n RegisterAgentNativeBrowserSessionInput,\n} from \"../browser-sessions/types.js\";\nexport {\n createTerminalPlugin,\n defaultTerminalPlugin,\n type TerminalPluginOptions,\n} from \"../terminal/terminal-plugin.js\";\nexport {\n createCollabPlugin,\n type CollabPluginOptions,\n} from \"./collab-plugin.js\";\n\nexport {\n spawnTask,\n getTask,\n getTaskByThread,\n listTasks,\n sendToTask,\n markTaskErrored,\n type AgentTask,\n type SpawnTaskOptions,\n} from \"./agent-teams.js\";\nexport { isOAuthConnected, getOAuthAccounts } from \"./oauth-helpers.js\";\nexport {\n hasGoogleSignInCredentials,\n resolveGoogleLegacyProviderCredentials,\n resolveGoogleProviderCredentialCandidates,\n resolveGoogleProviderCredentials,\n resolveGoogleSignInCredentials,\n type GoogleOAuthCredentials,\n} from \"./google-oauth-credentials.js\";\nexport { wrapWithAnalytics } from \"./analytics.js\";\nexport {\n getH3App,\n awaitBootstrap,\n markDefaultPluginProvided,\n type H3AppShim,\n} from \"./framework-request-handler.js\";\nexport {\n autoDiscoverActions,\n autoDiscoverScripts,\n loadActionsFromStaticRegistry,\n mergeCoreSharingActions,\n registerPackageActions,\n} from \"./action-discovery.js\";\nexport {\n mountActionRoutes,\n type MountActionRoutesOptions,\n} from \"./action-routes.js\";\nexport {\n runWithRequestContext,\n hasRequestContext,\n getRequestContext,\n getRequestUserEmail,\n getRequestUserName,\n getRequestOrgId,\n getRequestTimezone,\n getRequestRunContext,\n getCredentialContext,\n isIntegrationCallerRequest,\n type RequestContext,\n type RequestRunContext,\n} from \"./request-context.js\";\nexport { formatDateInTimezone, todayInTimezone } from \"./date-utils.js\";\n\nexport {\n createOnboardingPlugin,\n defaultOnboardingPlugin,\n} from \"../onboarding/plugin.js\";\n\nexport {\n registerFileUploadProvider,\n unregisterFileUploadProvider,\n listFileUploadProviders,\n getActiveFileUploadProvider,\n getActiveFileUploadProviderForRequest,\n uploadFile,\n builderFileUploadProvider,\n type FileUploadInput,\n type FileUploadProvider,\n type FileUploadResult,\n} from \"../file-upload/index.js\";\n\nexport {\n createIntegrationsPlugin,\n defaultIntegrationsPlugin,\n enqueueRemoteCommand,\n slackAdapter,\n telegramAdapter,\n whatsappAdapter,\n emailAdapter,\n type PlatformAdapter,\n type IncomingMessage,\n type OutgoingMessage,\n type IntegrationStatus,\n type IntegrationsPluginOptions,\n} from \"../integrations/index.js\";\n\nexport {\n isElectron,\n isMobile,\n getOrigin,\n getAppBasePath,\n getAppUrl,\n resolveOAuthRedirectUri,\n isAllowedOAuthRedirectUri,\n encodeOAuthState,\n decodeOAuthState,\n resolveOAuthOwner,\n createOAuthSession,\n oauthCallbackResponse,\n oauthErrorPage,\n oauthDesktopExchangePage,\n type OAuthStatePayload,\n type OAuthOwnerResult,\n type OAuthSessionResult,\n} from \"./google-oauth.js\";\n\nexport {\n FeatureNotConfiguredError,\n hasBuilderPrivateKey,\n isBuilderEnvManaged,\n getBuilderProxyOrigin,\n getBuilderImageGenerationBaseUrl,\n getBuilderWebSearchBaseUrl,\n getBuilderAuthHeader,\n resolveBuilderPrivateKey,\n resolveBuilderAuthHeader,\n resolveHasBuilderPrivateKey,\n resolveHasCompleteBuilderConnection,\n resolveBuilderCredentials,\n resolveBuilderCredential,\n readDeployCredentialEnv,\n writeBuilderCredentials,\n deleteBuilderCredentials,\n resolveSecret,\n} from \"./credential-provider.js\";\nexport {\n builderDesignSystemUrl,\n buildBuilderDesignSystemIndexFiles,\n createBuilderDesignSystemProxyFields,\n fetchBuilderDesignSystemDocs,\n getBuilderDesignSystemsBaseUrl,\n hydrateBuilderDesignSystemReference,\n localBuilderDesignSystemId,\n mimeTypeForBuilderDesignSystemFilename,\n parseBuilderDesignSystemProxyReference,\n startBuilderDesignSystemIndex,\n type BuildBuilderDesignSystemIndexFilesOptions,\n type BuilderDesignSystemCodeFileInput,\n type BuilderDesignSystemDocsOptions,\n type BuilderDesignSystemDocument,\n type BuilderDesignSystemHydratedReference,\n type BuilderDesignSystemIndexFile,\n type BuilderDesignSystemIndexOptions,\n type BuilderDesignSystemIndexResult,\n type BuilderDesignSystemProxyFields,\n type BuilderDesignSystemProxyFieldsOptions,\n type BuilderDesignSystemProxyReference,\n} from \"./builder-design-systems.js\";\nexport {\n getBuilderBranchProjectId,\n isBuilderBranchingEnabled,\n resolveBuilderBranchProjectId,\n resolveIsBuilderBranchingEnabled,\n runBuilderAgent,\n type RunBuilderAgentResult,\n} from \"./builder-browser.js\";\nexport {\n ensureFusionContainer,\n sendFusionBranchMessage,\n pushFusionBranch,\n reserveFusionHostingSlug,\n deployFusionProject,\n getFusionDeploys,\n getFusionBranchEditorUrl,\n getFusionHostingUrl,\n type FusionBranchRef,\n type EnsureFusionContainerResult,\n type SendFusionMessageResult,\n} from \"./fusion-app.js\";\n\nexport {\n sendEmail,\n isEmailConfigured,\n getEmailProvider,\n type EmailAttachment,\n type EmailProvider,\n type SendEmailArgs,\n} from \"./email.js\";\nexport {\n renderEmail,\n emailStrong,\n emailLink,\n type RenderEmailArgs,\n type RenderedEmail,\n type EmailCta,\n} from \"./email-template.js\";\nexport { getAppProductionUrl, getFirstPartyProdUrl } from \"./app-url.js\";\nexport {\n getConfiguredAppBasePath,\n normalizeAppBasePath,\n withConfiguredAppBasePath,\n} from \"./app-base-path.js\";\nexport {\n signShortLivedToken,\n verifyShortLivedToken,\n type ShortLivedTokenClaims,\n type VerifyResult as ShortLivedTokenVerifyResult,\n} from \"./short-lived-token.js\";\n\n// SSR handler is NOT re-exported here — it uses a virtual module\n// (virtual:react-router/server-build) that only exists at Vite dev/build time.\n// Including it in this barrel would break the esbuild CF Pages bundler.\n// Templates import directly: import { ssrHandler } from \"@agent-native/core/server/ssr-handler\"\n\n// Nitro plugin helper — re-exported so templates don't need nitro as a direct dependency.\n// defineNitroPlugin is an identity function; this typed wrapper lets templates use it\n// without resolving `nitro/runtime` (which requires Nitro's virtual modules at runtime).\nexport type NitroPluginDef = (nitroApp: any) => void | Promise<void>;\nexport function defineNitroPlugin(def: NitroPluginDef): NitroPluginDef {\n return def;\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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","sourcesContent":["export {\n createServer,\n type CreateServerOptions,\n type EnvKeyConfig,\n} from \"./create-server.js\";\n\nexport {\n readBody,\n readBodyWithSizeLimit,\n streamFile,\n DEFAULT_CHAT_MAX_BODY_BYTES,\n DEFAULT_UPLOAD_MAX_FILE_BYTES,\n MAX_CHAT_ATTACHMENTS_PER_MESSAGE,\n isAllowedUploadMimeType,\n} from \"./h3-helpers.js\";\nexport {\n buildDeepLink,\n toAbsoluteOpenUrl,\n toDesktopOpenUrl,\n toVsCodeOpenUrl,\n OPEN_ROUTE_SUBPATH,\n DESKTOP_OPEN_URL,\n VSCODE_OPEN_URL,\n type DeepLinkInput,\n} from \"./deep-link.js\";\nexport { createOpenRouteHandler, type OpenRouteOptions } from \"./open-route.js\";\nexport {\n createEmbedStartRouteHandler,\n buildEmbedStartPath,\n type EmbedStartRouteOptions,\n} from \"./embed-route.js\";\nexport {\n createEmbedSessionTicket,\n consumeEmbedSessionTicket,\n normalizeEmbedTargetPath,\n requestHasEmbedAuthMarker,\n resolveEmbedSessionFromRequest,\n setEmbedSessionCookie,\n signEmbedSessionToken,\n verifyEmbedSessionToken,\n type ConsumedEmbedSessionTicket,\n type ConsumeEmbedSessionTicketOptions,\n type EmbedSessionTicket,\n type EmbedSessionTicketInput,\n type EmbedSessionTokenClaims,\n type ResolvedEmbedSession,\n type VerifyEmbedSessionTokenResult,\n} from \"./embed-session.js\";\nexport { createSSEHandler, type SSEHandlerOptions } from \"./sse.js\";\nexport {\n mountAuthMiddleware,\n autoMountAuth,\n getSession,\n COOKIE_NAME,\n addSession,\n removeSession,\n getSessionEmail,\n getFrameworkSessionCookieValues,\n setFrameworkSessionCookie,\n clearFrameworkSessionCookies,\n runAuthGuard,\n setDesktopExchange,\n setDesktopExchangeError,\n safeReturnPath,\n type DesktopExchangeErrorPayload,\n type AuthSession,\n type AuthOptions,\n} from \"./auth.js\";\nexport {\n handleIdentitySso,\n getIdentityHubUrl,\n isIdentitySsoEnabled,\n isIdentitySsoBypassPath,\n identitySsoLoginButtonHtml,\n IDENTITY_SSO_PROVIDER_ID,\n IDENTITY_SSO_SCOPE,\n} from \"./identity-sso.js\";\nexport { requireEnvKey, type MissingKeyResponse } from \"./missing-key.js\";\nexport { verifyCaptcha, type CaptchaVerifyResult } from \"./captcha.js\";\nexport {\n getLocaleInitScript,\n parseAcceptLanguage,\n resolveLocaleFromRequest,\n type LocaleInitScriptOptions,\n type ResolveLocaleFromRequestOptions,\n type ResolvedRequestLocale,\n} from \"../localization/server.js\";\nexport {\n createProductionAgentHandler,\n type ActionEntry,\n type ScriptEntry,\n type ProductionAgentOptions,\n type ActionTool,\n type ScriptTool,\n type AgentMessage,\n type AgentChatRequest,\n type AgentChatEvent,\n type AgentChatAttachment,\n type AgentChatReference,\n type MentionProvider,\n type MentionProviderItem,\n type AgentLoopFinalResponseGuard,\n type AgentLoopFinalResponseGuardContext,\n type AgentLoopFinalResponseGuardResult,\n type AgentLoopToolCallSummary,\n type AgentLoopToolResultSummary,\n} from \"../agent/index.js\";\nexport {\n actionsToEngineTools,\n getOwnerActiveApiKey,\n runAgentLoop,\n} from \"../agent/production-agent.js\";\nexport {\n getStoredModelForEngine,\n resolveEngine,\n} from \"../agent/engine/index.js\";\nexport {\n completeText,\n type CompleteTextMessage,\n type CompleteTextOptions,\n type CompleteTextResult,\n type CompleteTextUsage,\n} from \"./complete-text.js\";\nexport { createDevScriptRegistry } from \"../scripts/dev/index.js\";\n\nexport {\n createPollHandler,\n recordChange,\n getVersion,\n getChangesSince,\n getPollEmitter,\n canSeeChangeForUser,\n POLL_CHANGE_EVENT,\n} from \"./poll.js\";\nexport { createPollEventsHandler } from \"./poll-events.js\";\nexport { createAuthPlugin, defaultAuthPlugin } from \"./auth-plugin.js\";\nexport {\n initServerSentry,\n isServerSentryEnabled,\n setSentryUserForRequest,\n captureRouteError,\n type RouteErrorContext,\n} from \"./sentry.js\";\nexport {\n captureError,\n captureServerError,\n registerErrorCaptureProvider,\n type CaptureErrorContext,\n type CaptureErrorProvider,\n} from \"./capture-error.js\";\nexport { createSentryPlugin, defaultSentryPlugin } from \"./sentry-plugin.js\";\n// Re-export the org plugin so the auto-discovery's DEFAULT_PLUGIN_REGISTRY\n// (which references \"defaultOrgPlugin\" from @agent-native/core/server) can\n// resolve it during the deploy build worker-entry generation.\nexport { createOrgPlugin, defaultOrgPlugin } from \"../org/plugin.js\";\nexport {\n createContextXrayPlugin,\n defaultContextXrayPlugin,\n} from \"../agent/context-xray/plugin.js\";\nexport {\n createObservationalMemoryPlugin,\n defaultObservationalMemoryPlugin,\n} from \"../agent/observational-memory/plugin.js\";\nexport {\n createGoogleAuthPlugin,\n type GoogleAuthPluginOptions,\n} from \"./google-auth-plugin.js\";\nexport type { GoogleAuthMode } from \"./google-auth-mode.js\";\nexport {\n createAgentChatPlugin,\n defaultAgentChatPlugin,\n refreshGlobalMcpManager,\n type AgentChatPluginOptions,\n} from \"./agent-chat-plugin.js\";\nexport {\n configureAgentNativeEmbeddedEnvironment,\n createAgentNativeEmbeddedAuthOptions,\n createAgentNativeEmbeddedPlugin,\n mountAgentNativeEmbedded,\n normalizeAgentNativeEmbeddedSession,\n type AgentNativeEmbeddedAuthOptions,\n type AgentNativeEmbeddedGetSession,\n type AgentNativeEmbeddedHostSession,\n type AgentNativeEmbeddedPluginOptions,\n} from \"./embedded.js\";\nexport {\n createThread,\n getThread,\n listThreads,\n updateThreadData,\n deleteThread,\n setThreadArchived,\n setThreadPinned,\n setThreadScope,\n type ChatThread,\n type ChatThreadScope,\n type ChatThreadSummary,\n type ListThreadsOptions,\n} from \"../chat-threads/store.js\";\nexport {\n createResourcesPlugin,\n defaultResourcesPlugin,\n} from \"./resources-plugin.js\";\nexport {\n createCoreRoutesPlugin,\n defaultCoreRoutesPlugin,\n FRAMEWORK_ROUTE_PREFIX,\n type CoreRoutesPluginOptions,\n} from \"./core-routes-plugin.js\";\nexport {\n AGENT_NATIVE_OG_IMAGE_CACHE_CONTROL,\n AGENT_NATIVE_OG_IMAGE_HEIGHT,\n AGENT_NATIVE_OG_IMAGE_NETLIFY_CACHE_CONTROL,\n AGENT_NATIVE_OG_IMAGE_WIDTH,\n agentNativeOgImageResponseHeaders,\n createAgentNativeOgImageHandler,\n renderAgentNativeOgImagePng,\n renderAgentNativeOgImageSvg,\n type AgentNativeOgImageInput,\n} from \"./social-og-image.js\";\nexport {\n createBrowserSessionActionEntries,\n type CreateBrowserSessionActionEntriesOptions,\n} from \"../browser-sessions/actions.js\";\nexport {\n DEFAULT_BROWSER_SESSION_REQUEST_POLL_MS,\n DEFAULT_BROWSER_SESSION_REQUEST_TIMEOUT_MS,\n DEFAULT_BROWSER_SESSION_TTL_MS,\n callBrowserSession,\n claimBrowserSessionRequest,\n completeBrowserSessionRequest,\n createBrowserSessionRequest,\n disconnectBrowserSession,\n getBrowserSession,\n getBrowserSessionRequest,\n listBrowserSessions,\n registerBrowserSession,\n waitForBrowserSessionRequest,\n} from \"../browser-sessions/store.js\";\nexport {\n mountBrowserSessionRoutes,\n type MountBrowserSessionRoutesOptions,\n} from \"../browser-sessions/routes.js\";\nexport type {\n AgentNativeBrowserSession,\n AgentNativeBrowserSessionAction,\n AgentNativeBrowserSessionRecord,\n AgentNativeBrowserSessionRequest,\n AgentNativeBrowserSessionRequestStatus,\n AgentNativeBrowserSessionRequestType,\n CreateAgentNativeBrowserSessionRequestInput,\n RegisterAgentNativeBrowserSessionInput,\n} from \"../browser-sessions/types.js\";\nexport {\n createTerminalPlugin,\n defaultTerminalPlugin,\n type TerminalPluginOptions,\n} from \"../terminal/terminal-plugin.js\";\nexport {\n createCollabPlugin,\n type CollabPluginOptions,\n} from \"./collab-plugin.js\";\n\nexport {\n spawnTask,\n getTask,\n getTaskByThread,\n listTasks,\n sendToTask,\n markTaskErrored,\n type AgentTask,\n type SpawnTaskOptions,\n} from \"./agent-teams.js\";\nexport { isOAuthConnected, getOAuthAccounts } from \"./oauth-helpers.js\";\nexport {\n hasGoogleSignInCredentials,\n resolveGoogleLegacyProviderCredentials,\n resolveGoogleProviderCredentialCandidates,\n resolveGoogleProviderCredentials,\n resolveGoogleSignInCredentials,\n type GoogleOAuthCredentials,\n} from \"./google-oauth-credentials.js\";\nexport { wrapWithAnalytics } from \"./analytics.js\";\nexport {\n getH3App,\n awaitBootstrap,\n markDefaultPluginProvided,\n type H3AppShim,\n} from \"./framework-request-handler.js\";\nexport {\n autoDiscoverActions,\n autoDiscoverScripts,\n loadActionsFromStaticRegistry,\n mergeCoreSharingActions,\n registerPackageActions,\n} from \"./action-discovery.js\";\nexport {\n mountActionRoutes,\n type MountActionRoutesOptions,\n} from \"./action-routes.js\";\nexport {\n runWithRequestContext,\n hasRequestContext,\n getRequestContext,\n getRequestUserEmail,\n getRequestUserName,\n getRequestOrgId,\n getRequestTimezone,\n getRequestRunContext,\n getCredentialContext,\n isIntegrationCallerRequest,\n type RequestContext,\n type RequestRunContext,\n} from \"./request-context.js\";\nexport { formatDateInTimezone, todayInTimezone } from \"./date-utils.js\";\n\nexport {\n createOnboardingPlugin,\n defaultOnboardingPlugin,\n} from \"../onboarding/plugin.js\";\n\nexport {\n registerFileUploadProvider,\n unregisterFileUploadProvider,\n listFileUploadProviders,\n getActiveFileUploadProvider,\n getActiveFileUploadProviderForRequest,\n uploadFile,\n builderFileUploadProvider,\n type FileUploadInput,\n type FileUploadProvider,\n type FileUploadResult,\n} from \"../file-upload/index.js\";\n\nexport {\n createIntegrationsPlugin,\n defaultIntegrationsPlugin,\n enqueueRemoteCommand,\n slackAdapter,\n telegramAdapter,\n whatsappAdapter,\n emailAdapter,\n type PlatformAdapter,\n type IncomingMessage,\n type OutgoingMessage,\n type IntegrationStatus,\n type IntegrationsPluginOptions,\n} from \"../integrations/index.js\";\n\nexport {\n isElectron,\n isMobile,\n getOrigin,\n getAppBasePath,\n getAppUrl,\n resolveOAuthRedirectUri,\n isAllowedOAuthRedirectUri,\n encodeOAuthState,\n decodeOAuthState,\n resolveOAuthOwner,\n createOAuthSession,\n oauthCallbackResponse,\n oauthErrorPage,\n oauthDesktopExchangePage,\n type OAuthStatePayload,\n type OAuthOwnerResult,\n type OAuthSessionResult,\n} from \"./google-oauth.js\";\n\nexport {\n FeatureNotConfiguredError,\n hasBuilderPrivateKey,\n isBuilderEnvManaged,\n getBuilderProxyOrigin,\n getBuilderImageGenerationBaseUrl,\n getBuilderWebSearchBaseUrl,\n getBuilderAuthHeader,\n resolveBuilderPrivateKey,\n resolveBuilderAuthHeader,\n resolveHasBuilderPrivateKey,\n resolveHasCompleteBuilderConnection,\n resolveBuilderCredentials,\n resolveBuilderCredential,\n readDeployCredentialEnv,\n writeBuilderCredentials,\n deleteBuilderCredentials,\n resolveSecret,\n} from \"./credential-provider.js\";\nexport {\n builderDesignSystemUrl,\n buildBuilderDesignSystemIndexFiles,\n createBuilderDesignSystemProxyFields,\n fetchBuilderDesignSystemDocs,\n getBuilderDesignSystemsBaseUrl,\n hydrateBuilderDesignSystemReference,\n localBuilderDesignSystemId,\n mimeTypeForBuilderDesignSystemFilename,\n parseBuilderDesignSystemProxyReference,\n startBuilderDesignSystemIndex,\n type BuildBuilderDesignSystemIndexFilesOptions,\n type BuilderDesignSystemCodeFileInput,\n type BuilderDesignSystemDocsOptions,\n type BuilderDesignSystemDocument,\n type BuilderDesignSystemHydratedReference,\n type BuilderDesignSystemIndexFile,\n type BuilderDesignSystemIndexOptions,\n type BuilderDesignSystemIndexResult,\n type BuilderDesignSystemProxyFields,\n type BuilderDesignSystemProxyFieldsOptions,\n type BuilderDesignSystemProxyReference,\n} from \"./builder-design-systems.js\";\nexport {\n getBuilderBranchProjectId,\n isBuilderBranchingEnabled,\n resolveBuilderBranchProjectId,\n resolveIsBuilderBranchingEnabled,\n runBuilderAgent,\n type RunBuilderAgentResult,\n} from \"./builder-browser.js\";\nexport {\n ensureFusionContainer,\n sendFusionBranchMessage,\n pushFusionBranch,\n reserveFusionHostingSlug,\n deployFusionProject,\n getFusionDeploys,\n getFusionBranchEditorUrl,\n getFusionHostingUrl,\n type FusionBranchRef,\n type EnsureFusionContainerResult,\n type SendFusionMessageResult,\n} from \"./fusion-app.js\";\n\nexport {\n sendEmail,\n isEmailConfigured,\n getEmailProvider,\n type EmailAttachment,\n type EmailProvider,\n type SendEmailArgs,\n} from \"./email.js\";\nexport {\n renderEmail,\n emailStrong,\n emailLink,\n type RenderEmailArgs,\n type RenderedEmail,\n type EmailCta,\n} from \"./email-template.js\";\nexport { getAppProductionUrl, getFirstPartyProdUrl } from \"./app-url.js\";\nexport {\n getConfiguredAppBasePath,\n normalizeAppBasePath,\n withConfiguredAppBasePath,\n} from \"./app-base-path.js\";\nexport {\n signShortLivedToken,\n verifyShortLivedToken,\n type ShortLivedTokenClaims,\n type VerifyResult as ShortLivedTokenVerifyResult,\n} from \"./short-lived-token.js\";\nexport {\n AGENT_ACCESS_PARAM,\n DEFAULT_AGENT_ACCESS_TTL_SECONDS,\n appendAgentAccessParam,\n buildAgentAccessApiUrl,\n buildAgentAccessUrl,\n createScopedAgentAccessGrant,\n normalizeAgentAccessBasePath,\n normalizeAgentAccessOrigin,\n scopedAgentAccessResourceId,\n signScopedAgentAccessToken,\n toAgentAccessUrl,\n verifyScopedAgentAccessToken,\n type AgentAccessApiUrlOptions,\n type AgentAccessResourceScope,\n type AgentAccessUrlOptions,\n type ScopedAgentAccessGrant,\n type ScopedAgentAccessTokenOptions,\n} from \"./agent-access.js\";\nexport {\n AGENT_READABLE_RESOURCE_PAYLOAD_TYPE,\n AGENT_READABLE_RESOURCE_SCRIPT_TYPE,\n buildAgentReadableResourceDiscovery,\n renderAgentReadableResourceDiscoveryScript,\n safeJsonForHtml,\n type AgentReadableResourceDiscovery,\n type BuildAgentReadableResourceDiscoveryOptions,\n} from \"../shared/agent-readable-resource.js\";\n\n// SSR handler is NOT re-exported here — it uses a virtual module\n// (virtual:react-router/server-build) that only exists at Vite dev/build time.\n// Including it in this barrel would break the esbuild CF Pages bundler.\n// Templates import directly: import { ssrHandler } from \"@agent-native/core/server/ssr-handler\"\n\n// Nitro plugin helper — re-exported so templates don't need nitro as a direct dependency.\n// defineNitroPlugin is an identity function; this typed wrapper lets templates use it\n// without resolving `nitro/runtime` (which requires Nitro's virtual modules at runtime).\nexport type NitroPluginDef = (nitroApp: any) => void | Promise<void>;\nexport function defineNitroPlugin(def: NitroPluginDef): NitroPluginDef {\n return def;\n}\n"]}
@@ -1,3 +1,20 @@
1
+ /**
2
+ * Per-request context using AsyncLocalStorage.
3
+ *
4
+ * Replaces the unsafe pattern of mutating `process.env.AGENT_USER_EMAIL` /
5
+ * `process.env.AGENT_ORG_ID` on every request. On Node.js (Netlify, self-hosted)
6
+ * concurrent requests would overwrite each other's env vars. AsyncLocalStorage
7
+ * gives each async call-chain its own isolated context.
8
+ *
9
+ * Supported on all deployment targets:
10
+ * - Node.js (native)
11
+ * - Cloudflare Workers (via nodejs_compat flag)
12
+ * - Deno Deploy (via node:async_hooks compat)
13
+ *
14
+ * For CLI scripts that run outside a request context, the getters fall back to
15
+ * process.env so existing `AGENT_USER_EMAIL=x pnpm action foo` invocations
16
+ * continue to work.
17
+ */
1
18
  /**
2
19
  * Per-request agent-run state. Lives on `RequestContext.run` so the
3
20
  * agent-chat plugin can populate fields as the run progresses (owner,
@@ -1 +1 @@
1
- {"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../../src/server/request-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../../src/server/request-context.ts"],"names":[],"mappings":"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"}
@@ -15,12 +15,52 @@
15
15
  * process.env so existing `AGENT_USER_EMAIL=x pnpm action foo` invocations
16
16
  * continue to work.
17
17
  */
18
- import { AsyncLocalStorage } from "node:async_hooks";
18
+ class StackAsyncLocalStorage {
19
+ stack = [];
20
+ getStore() {
21
+ return this.stack.at(-1);
22
+ }
23
+ run(store, callback) {
24
+ this.stack.push(store);
25
+ try {
26
+ const result = callback();
27
+ const maybePromise = result;
28
+ if (maybePromise && typeof maybePromise.finally === "function") {
29
+ return maybePromise.finally(() => {
30
+ this.stack.pop();
31
+ });
32
+ }
33
+ this.stack.pop();
34
+ return result;
35
+ }
36
+ catch (error) {
37
+ this.stack.pop();
38
+ throw error;
39
+ }
40
+ }
41
+ }
42
+ function getAsyncLocalStorageCtor() {
43
+ if (typeof window !== "undefined" ||
44
+ typeof process === "undefined" ||
45
+ !process.versions?.node ||
46
+ typeof process.getBuiltinModule !== "function") {
47
+ return undefined;
48
+ }
49
+ return process.getBuiltinModule("node:async_hooks")?.AsyncLocalStorage;
50
+ }
51
+ const AsyncLocalStorageCtor = getAsyncLocalStorageCtor();
52
+ function processEnv(name) {
53
+ if (typeof process === "undefined")
54
+ return undefined;
55
+ return process.env?.[name];
56
+ }
19
57
  const GLOBAL_KEY = "__agentNativeRequestContextAls";
20
58
  const OBSERVERS_KEY = "__agentNativeRequestContextObservers";
21
59
  const globalRef = globalThis;
22
60
  if (!globalRef[GLOBAL_KEY]) {
23
- globalRef[GLOBAL_KEY] = new AsyncLocalStorage();
61
+ globalRef[GLOBAL_KEY] = AsyncLocalStorageCtor
62
+ ? new AsyncLocalStorageCtor()
63
+ : new StackAsyncLocalStorage();
24
64
  }
25
65
  if (!globalRef[OBSERVERS_KEY]) {
26
66
  globalRef[OBSERVERS_KEY] = [];
@@ -105,7 +145,7 @@ export function getRequestUserEmail() {
105
145
  markAuthContextAccess(store);
106
146
  return store.userEmail;
107
147
  }
108
- return process.env.AGENT_USER_EMAIL;
148
+ return processEnv("AGENT_USER_EMAIL");
109
149
  }
110
150
  /**
111
151
  * Get the current request's display name, when the auth provider supplied one.
@@ -121,7 +161,7 @@ export function getRequestUserName() {
121
161
  markAuthContextAccess(store);
122
162
  return store.userName;
123
163
  }
124
- return process.env.AGENT_USER_NAME;
164
+ return processEnv("AGENT_USER_NAME");
125
165
  }
126
166
  /**
127
167
  * Get the current request's org ID.
@@ -137,7 +177,7 @@ export function getRequestOrgId() {
137
177
  markAuthContextAccess(store);
138
178
  return store.orgId;
139
179
  }
140
- return process.env.AGENT_ORG_ID;
180
+ return processEnv("AGENT_ORG_ID");
141
181
  }
142
182
  function markAuthContextAccess(ctx) {
143
183
  if (!ctx)
@@ -160,7 +200,7 @@ export function getRequestTimezone() {
160
200
  const store = als.getStore();
161
201
  if (store !== undefined)
162
202
  return store.timezone;
163
- return process.env.AGENT_USER_TIMEZONE;
203
+ return processEnv("AGENT_USER_TIMEZONE");
164
204
  }
165
205
  /**
166
206
  * Returns true when this request is on an integration-platform path (Slack,
@@ -1 +1 @@
1
- {"version":3,"file":"request-context.js","sourceRoot":"","sources":["../../src/server/request-context.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Per-request context using AsyncLocalStorage.\n *\n * Replaces the unsafe pattern of mutating `process.env.AGENT_USER_EMAIL` /\n * `process.env.AGENT_ORG_ID` on every request. On Node.js (Netlify, self-hosted)\n * concurrent requests would overwrite each other's env vars. AsyncLocalStorage\n * gives each async call-chain its own isolated context.\n *\n * Supported on all deployment targets:\n * - Node.js (native)\n * - Cloudflare Workers (via nodejs_compat flag)\n * - Deno Deploy (via node:async_hooks compat)\n *\n * For CLI scripts that run outside a request context, the getters fall back to\n * process.env so existing `AGENT_USER_EMAIL=x pnpm action foo` invocations\n * continue to work.\n */\nimport { AsyncLocalStorage } from \"node:async_hooks\";\n\n/**\n * Per-request agent-run state. Lives on `RequestContext.run` so the\n * agent-chat plugin can populate fields as the run progresses (owner,\n * resolved API key, system prompt, engine, model, threadId) without\n * mutating module-scope `let` bindings — those leak across concurrent\n * requests on a single Node.js process.\n *\n * Mutated in-place by `prepareRun`, `onEngineResolved`, `onRunStart` so\n * tool factory closures (automation, fetch, team, builder-browser) read\n * the live per-request value via `getRequestRunContext()`.\n */\nexport interface RequestRunContext {\n /** Origin of the current request (used by the builder-browser tool). */\n requestOrigin?: string;\n /** Stable browser tab id for tab-scoped app-state reads/writes. */\n browserTabId?: string;\n /** Resource scope for the current chat thread, e.g. the active deck. */\n chatScope?: {\n type: string;\n id: string;\n label?: string;\n } | null;\n /** Resolved owner email (set by prepareRun). */\n owner?: string;\n /** Owner's active Anthropic API key (set by prepareRun). */\n userApiKey?: string;\n /** Thread ID for the current run (set by onRunStart). */\n threadId?: string;\n /** System prompt actually sent to the model for this run. */\n systemPrompt?: string;\n /** Engine instance for this run (set by onEngineResolved). */\n engine?: import(\"../agent/engine/types.js\").AgentEngine;\n /** Model name for this run (set by onEngineResolved). */\n model?: string;\n /**\n * True when this run is executing inside the durable background-function\n * worker (the `_process-run` self-dispatch), not the synchronous foreground\n * request. Template `extraContext` / system-prompt builders can read this to\n * skip heavy, hang-prone enrichment (large data-dictionary DB reads, etc.)\n * in the worker so it reliably claims its run within the setup budget.\n */\n isBackgroundWorker?: boolean;\n /** Tool calls made so far in the current agent loop. */\n toolCalls?: Array<{ name: string; input: unknown }>;\n /** Tool results returned so far in the current agent loop. */\n toolResults?: Array<{ name: string; content: string; isError: boolean }>;\n}\n\nexport interface RequestContext {\n userEmail?: string;\n userName?: string;\n orgId?: string;\n timezone?: string;\n /**\n * Set when code reads authenticated request context. Public SSR shell/data\n * should not depend on this value; user/org-specific reads belong behind\n * client-side actions/API after hydration.\n */\n authContextAccessed?: boolean;\n /**\n * Origin of the inbound request (e.g. `http://127.0.0.1:8100`). Set by the\n * MCP mount from the request headers so actions that build externally\n * fetchable URLs (e.g. design `export-coding-handoff`'s signed raw-code URL)\n * resolve the real local-workspace origin instead of a prod/localhost\n * fallback. Optional — absent on paths that don't populate it.\n */\n requestOrigin?: string;\n /**\n * True when this request is being processed by an integration-platform\n * webhook (Slack, Telegram, etc.) where the function timeout is the\n * binding constraint. Code that calls slow remote APIs can use this to apply\n * tighter budgets on this path while leaving normal agent-chat callers\n * (5+ min budget) unaffected.\n */\n isIntegrationCaller?: boolean;\n /**\n * Metadata for the currently-processing integration task. This lets tools\n * that start long-running remote work persist a continuation that can update\n * the originating platform thread after the current function budget ends.\n */\n integration?: {\n taskId: string;\n attempts?: number;\n incoming: import(\"../integrations/types.js\").IncomingMessage;\n placeholderRef?: string;\n };\n /**\n * Mutable per-request agent-run state. Populated by the agent-chat plugin\n * during a run; tool closures dereference it on each invocation.\n */\n run?: RequestRunContext;\n}\n\nconst GLOBAL_KEY = \"__agentNativeRequestContextAls\" as const;\nconst OBSERVERS_KEY = \"__agentNativeRequestContextObservers\" as const;\ntype RequestContextObserver = (ctx: RequestContext) => void;\ntype GlobalWithRequestContext = typeof globalThis & {\n [GLOBAL_KEY]?: AsyncLocalStorage<RequestContext>;\n [OBSERVERS_KEY]?: RequestContextObserver[];\n};\nconst globalRef = globalThis as GlobalWithRequestContext;\nif (!globalRef[GLOBAL_KEY]) {\n globalRef[GLOBAL_KEY] = new AsyncLocalStorage<RequestContext>();\n}\nif (!globalRef[OBSERVERS_KEY]) {\n globalRef[OBSERVERS_KEY] = [];\n}\nconst als = globalRef[GLOBAL_KEY]!;\nconst observers = globalRef[OBSERVERS_KEY]!;\n\n/**\n * Register a callback fired every time `runWithRequestContext` enters a new\n * scope. The hook runs INSIDE the AsyncLocalStorage scope, so observability\n * helpers that read the current isolation scope (e.g. Sentry) attach to the\n * right per-request context.\n *\n * Returned function unregisters the observer. Observers must never throw —\n * any error is swallowed so a misbehaving observer can't break the request\n * path.\n */\nexport function addRequestContextObserver(\n observer: RequestContextObserver,\n): () => void {\n observers.push(observer);\n return () => {\n const i = observers.indexOf(observer);\n if (i !== -1) observers.splice(i, 1);\n };\n}\n\n/**\n * Run a callback within a per-request context. The context is available to all\n * async operations spawned from `fn` via `getRequestUserEmail()` / `getRequestOrgId()`.\n *\n * Any registered `addRequestContextObserver` callbacks fire inside the new\n * scope before `fn` runs, so observability code can pin user/org info onto\n * isolation-scoped backends (Sentry, OpenTelemetry, etc.).\n */\nexport function runWithRequestContext<T>(\n ctx: RequestContext,\n fn: () => T | Promise<T>,\n): T | Promise<T> {\n return als.run(ctx, () => {\n if (observers.length > 0) {\n for (const obs of observers) {\n try {\n obs(ctx);\n } catch {\n // Observers must never break the request path.\n }\n }\n }\n return fn();\n });\n}\n\n/**\n * Return the active request context, if this call chain is running under one.\n *\n * This is intentionally distinct from `getRequestUserEmail()`: callers that\n * have an active context with no authenticated user must not fall through to\n * process-wide CLI fallbacks such as `AGENT_USER_EMAIL` or \"latest session\".\n */\nexport function getRequestContext(): RequestContext | undefined {\n const store = als.getStore();\n markAuthContextAccess(store);\n return store;\n}\n\n/**\n * True when AsyncLocalStorage has an active context for this call chain.\n * Useful for helpers that support both HTTP requests and standalone CLI runs.\n */\nexport function hasRequestContext(): boolean {\n return als.getStore() !== undefined;\n}\n\n/**\n * Get the current request's user email.\n *\n * - If a request context exists (HTTP/A2A path), returns its `userEmail` —\n * even when that value is `undefined`. The env fallback MUST NOT fire here:\n * a stale process-wide `AGENT_USER_EMAIL` from a CLI run or previous bug\n * would leak into an unauthenticated A2A/API call (e.g. unsigned or API-key\n * modes where `runWithRequestContext({ userEmail: undefined })` is used).\n * - Only when there is NO request context (CLI scripts) do we fall back to\n * `process.env.AGENT_USER_EMAIL`.\n */\nexport function getRequestUserEmail(): string | undefined {\n const store = als.getStore();\n if (store !== undefined) {\n if (store.userEmail) markAuthContextAccess(store);\n return store.userEmail;\n }\n return process.env.AGENT_USER_EMAIL;\n}\n\n/**\n * Get the current request's display name, when the auth provider supplied one.\n *\n * The same request-context fallback rules as `getRequestUserEmail()` apply:\n * HTTP/A2A calls only read AsyncLocalStorage, while CLI scripts may opt in via\n * `AGENT_USER_NAME`.\n */\nexport function getRequestUserName(): string | undefined {\n const store = als.getStore();\n if (store !== undefined) {\n if (store.userName) markAuthContextAccess(store);\n return store.userName;\n }\n return process.env.AGENT_USER_NAME;\n}\n\n/**\n * Get the current request's org ID.\n *\n * Same store-aware semantics as `getRequestUserEmail()` — env fallback is\n * CLI-only, so a request that explicitly has no org doesn't inherit a stale\n * `process.env.AGENT_ORG_ID` from a prior request on the same Lambda instance.\n */\nexport function getRequestOrgId(): string | undefined {\n const store = als.getStore();\n if (store !== undefined) {\n if (store.orgId) markAuthContextAccess(store);\n return store.orgId;\n }\n return process.env.AGENT_ORG_ID;\n}\n\nfunction markAuthContextAccess(ctx: RequestContext | undefined) {\n if (!ctx) return;\n if (ctx.userEmail || ctx.userName || ctx.orgId) {\n ctx.authContextAccessed = true;\n }\n}\n\nexport function hasAuthContextAccess(ctx: RequestContext | undefined): boolean {\n return Boolean(ctx?.authContextAccessed);\n}\n\n/**\n * Get the current request's IANA timezone (e.g. \"America/Los_Angeles\").\n * The UI sends this via the `x-user-timezone` header on every action call, and\n * the agent chat plugin propagates it into the request context so that\n * agent-initiated tool calls also see the user's timezone. Falls back to\n * `process.env.AGENT_USER_TIMEZONE` only for CLI scripts (no request context).\n */\nexport function getRequestTimezone(): string | undefined {\n const store = als.getStore();\n if (store !== undefined) return store.timezone;\n return process.env.AGENT_USER_TIMEZONE;\n}\n\n/**\n * Returns true when this request is on an integration-platform path (Slack,\n * Telegram, etc.) — i.e. we're inside the integration plugin's processor\n * function and the platform's deliver-by deadline plus the host's function\n * timeout are the binding budget. Non-integration callers (CLI, normal\n * agent chat) should treat this as `false`.\n */\nexport function isIntegrationCallerRequest(): boolean {\n return als.getStore()?.isIntegrationCaller === true;\n}\n\nexport function getIntegrationRequestContext():\n | NonNullable<RequestContext[\"integration\"]>\n | undefined {\n return als.getStore()?.integration;\n}\n\n/**\n * Convenience: returns `{ userEmail, orgId }` from the active request context,\n * suitable for passing to `resolveCredential(key, ctx)`. Returns `null` when\n * no user is associated with the call (e.g. an unauthenticated public route).\n *\n * For framework actions auto-mounted at `/_agent-native/actions/...` this is\n * always populated because action-routes wraps every invocation in\n * `runWithRequestContext`. For hand-written `/api/*` routes the calling code\n * is responsible for setting up the context (see `runWithRequestContext`).\n */\nexport function getCredentialContext(): {\n userEmail: string;\n orgId: string | null;\n} | null {\n const userEmail = getRequestUserEmail();\n if (!userEmail) return null;\n return { userEmail, orgId: getRequestOrgId() ?? null };\n}\n\n/**\n * Get the active request's mutable agent-run state. Returns `undefined` when\n * called outside an agent run (e.g. before `prepareRun` or in a non-agent\n * code path). Callers must tolerate the field absence; use the helper\n * `requireRequestRunContext()` if missing context is a programming error.\n */\nexport function getRequestRunContext(): RequestRunContext | undefined {\n const store = als.getStore();\n if (!store) return undefined;\n return store.run;\n}\n\n/**\n * Ensure a `RequestRunContext` exists on the active request store and\n * return it. Used by the agent-chat handler to attach run state once it\n * starts processing a chat request. Returns `undefined` if there is no\n * active request store (caller should not be invoking this outside ALS).\n */\nexport function ensureRequestRunContext(): RequestRunContext | undefined {\n const store = als.getStore();\n if (!store) return undefined;\n if (!store.run) store.run = {};\n return store.run;\n}\n"]}
1
+ {"version":3,"file":"request-context.js","sourceRoot":"","sources":["../../src/server/request-context.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Per-request context using AsyncLocalStorage.\n *\n * Replaces the unsafe pattern of mutating `process.env.AGENT_USER_EMAIL` /\n * `process.env.AGENT_ORG_ID` on every request. On Node.js (Netlify, self-hosted)\n * concurrent requests would overwrite each other's env vars. AsyncLocalStorage\n * gives each async call-chain its own isolated context.\n *\n * Supported on all deployment targets:\n * - Node.js (native)\n * - Cloudflare Workers (via nodejs_compat flag)\n * - Deno Deploy (via node:async_hooks compat)\n *\n * For CLI scripts that run outside a request context, the getters fall back to\n * process.env so existing `AGENT_USER_EMAIL=x pnpm action foo` invocations\n * continue to work.\n */\n\ntype AsyncLocalStorageLike<T> = {\n getStore(): T | undefined;\n run<R>(store: T, callback: () => R): R;\n};\n\ntype AsyncLocalStorageCtor = new <T>() => AsyncLocalStorageLike<T>;\n\nclass StackAsyncLocalStorage<T> implements AsyncLocalStorageLike<T> {\n private readonly stack: T[] = [];\n\n getStore(): T | undefined {\n return this.stack.at(-1);\n }\n\n run<R>(store: T, callback: () => R): R {\n this.stack.push(store);\n try {\n const result = callback();\n const maybePromise = result as unknown as\n | { finally?: (callback: () => void) => unknown }\n | undefined;\n if (maybePromise && typeof maybePromise.finally === \"function\") {\n return maybePromise.finally(() => {\n this.stack.pop();\n }) as R;\n }\n this.stack.pop();\n return result;\n } catch (error) {\n this.stack.pop();\n throw error;\n }\n }\n}\n\nfunction getAsyncLocalStorageCtor(): AsyncLocalStorageCtor | undefined {\n if (\n typeof window !== \"undefined\" ||\n typeof process === \"undefined\" ||\n !process.versions?.node ||\n typeof process.getBuiltinModule !== \"function\"\n ) {\n return undefined;\n }\n return process.getBuiltinModule(\"node:async_hooks\")?.AsyncLocalStorage as\n | AsyncLocalStorageCtor\n | undefined;\n}\n\nconst AsyncLocalStorageCtor = getAsyncLocalStorageCtor();\n\nfunction processEnv(name: string): string | undefined {\n if (typeof process === \"undefined\") return undefined;\n return process.env?.[name];\n}\n\n/**\n * Per-request agent-run state. Lives on `RequestContext.run` so the\n * agent-chat plugin can populate fields as the run progresses (owner,\n * resolved API key, system prompt, engine, model, threadId) without\n * mutating module-scope `let` bindings — those leak across concurrent\n * requests on a single Node.js process.\n *\n * Mutated in-place by `prepareRun`, `onEngineResolved`, `onRunStart` so\n * tool factory closures (automation, fetch, team, builder-browser) read\n * the live per-request value via `getRequestRunContext()`.\n */\nexport interface RequestRunContext {\n /** Origin of the current request (used by the builder-browser tool). */\n requestOrigin?: string;\n /** Stable browser tab id for tab-scoped app-state reads/writes. */\n browserTabId?: string;\n /** Resource scope for the current chat thread, e.g. the active deck. */\n chatScope?: {\n type: string;\n id: string;\n label?: string;\n } | null;\n /** Resolved owner email (set by prepareRun). */\n owner?: string;\n /** Owner's active Anthropic API key (set by prepareRun). */\n userApiKey?: string;\n /** Thread ID for the current run (set by onRunStart). */\n threadId?: string;\n /** System prompt actually sent to the model for this run. */\n systemPrompt?: string;\n /** Engine instance for this run (set by onEngineResolved). */\n engine?: import(\"../agent/engine/types.js\").AgentEngine;\n /** Model name for this run (set by onEngineResolved). */\n model?: string;\n /**\n * True when this run is executing inside the durable background-function\n * worker (the `_process-run` self-dispatch), not the synchronous foreground\n * request. Template `extraContext` / system-prompt builders can read this to\n * skip heavy, hang-prone enrichment (large data-dictionary DB reads, etc.)\n * in the worker so it reliably claims its run within the setup budget.\n */\n isBackgroundWorker?: boolean;\n /** Tool calls made so far in the current agent loop. */\n toolCalls?: Array<{ name: string; input: unknown }>;\n /** Tool results returned so far in the current agent loop. */\n toolResults?: Array<{ name: string; content: string; isError: boolean }>;\n}\n\nexport interface RequestContext {\n userEmail?: string;\n userName?: string;\n orgId?: string;\n timezone?: string;\n /**\n * Set when code reads authenticated request context. Public SSR shell/data\n * should not depend on this value; user/org-specific reads belong behind\n * client-side actions/API after hydration.\n */\n authContextAccessed?: boolean;\n /**\n * Origin of the inbound request (e.g. `http://127.0.0.1:8100`). Set by the\n * MCP mount from the request headers so actions that build externally\n * fetchable URLs (e.g. design `export-coding-handoff`'s signed raw-code URL)\n * resolve the real local-workspace origin instead of a prod/localhost\n * fallback. Optional — absent on paths that don't populate it.\n */\n requestOrigin?: string;\n /**\n * True when this request is being processed by an integration-platform\n * webhook (Slack, Telegram, etc.) where the function timeout is the\n * binding constraint. Code that calls slow remote APIs can use this to apply\n * tighter budgets on this path while leaving normal agent-chat callers\n * (5+ min budget) unaffected.\n */\n isIntegrationCaller?: boolean;\n /**\n * Metadata for the currently-processing integration task. This lets tools\n * that start long-running remote work persist a continuation that can update\n * the originating platform thread after the current function budget ends.\n */\n integration?: {\n taskId: string;\n attempts?: number;\n incoming: import(\"../integrations/types.js\").IncomingMessage;\n placeholderRef?: string;\n };\n /**\n * Mutable per-request agent-run state. Populated by the agent-chat plugin\n * during a run; tool closures dereference it on each invocation.\n */\n run?: RequestRunContext;\n}\n\nconst GLOBAL_KEY = \"__agentNativeRequestContextAls\" as const;\nconst OBSERVERS_KEY = \"__agentNativeRequestContextObservers\" as const;\ntype RequestContextObserver = (ctx: RequestContext) => void;\ntype GlobalWithRequestContext = typeof globalThis & {\n [GLOBAL_KEY]?: AsyncLocalStorageLike<RequestContext>;\n [OBSERVERS_KEY]?: RequestContextObserver[];\n};\nconst globalRef = globalThis as GlobalWithRequestContext;\nif (!globalRef[GLOBAL_KEY]) {\n globalRef[GLOBAL_KEY] = AsyncLocalStorageCtor\n ? new AsyncLocalStorageCtor<RequestContext>()\n : new StackAsyncLocalStorage<RequestContext>();\n}\nif (!globalRef[OBSERVERS_KEY]) {\n globalRef[OBSERVERS_KEY] = [];\n}\nconst als = globalRef[GLOBAL_KEY]!;\nconst observers = globalRef[OBSERVERS_KEY]!;\n\n/**\n * Register a callback fired every time `runWithRequestContext` enters a new\n * scope. The hook runs INSIDE the AsyncLocalStorage scope, so observability\n * helpers that read the current isolation scope (e.g. Sentry) attach to the\n * right per-request context.\n *\n * Returned function unregisters the observer. Observers must never throw —\n * any error is swallowed so a misbehaving observer can't break the request\n * path.\n */\nexport function addRequestContextObserver(\n observer: RequestContextObserver,\n): () => void {\n observers.push(observer);\n return () => {\n const i = observers.indexOf(observer);\n if (i !== -1) observers.splice(i, 1);\n };\n}\n\n/**\n * Run a callback within a per-request context. The context is available to all\n * async operations spawned from `fn` via `getRequestUserEmail()` / `getRequestOrgId()`.\n *\n * Any registered `addRequestContextObserver` callbacks fire inside the new\n * scope before `fn` runs, so observability code can pin user/org info onto\n * isolation-scoped backends (Sentry, OpenTelemetry, etc.).\n */\nexport function runWithRequestContext<T>(\n ctx: RequestContext,\n fn: () => T | Promise<T>,\n): T | Promise<T> {\n return als.run(ctx, () => {\n if (observers.length > 0) {\n for (const obs of observers) {\n try {\n obs(ctx);\n } catch {\n // Observers must never break the request path.\n }\n }\n }\n return fn();\n });\n}\n\n/**\n * Return the active request context, if this call chain is running under one.\n *\n * This is intentionally distinct from `getRequestUserEmail()`: callers that\n * have an active context with no authenticated user must not fall through to\n * process-wide CLI fallbacks such as `AGENT_USER_EMAIL` or \"latest session\".\n */\nexport function getRequestContext(): RequestContext | undefined {\n const store = als.getStore();\n markAuthContextAccess(store);\n return store;\n}\n\n/**\n * True when AsyncLocalStorage has an active context for this call chain.\n * Useful for helpers that support both HTTP requests and standalone CLI runs.\n */\nexport function hasRequestContext(): boolean {\n return als.getStore() !== undefined;\n}\n\n/**\n * Get the current request's user email.\n *\n * - If a request context exists (HTTP/A2A path), returns its `userEmail` —\n * even when that value is `undefined`. The env fallback MUST NOT fire here:\n * a stale process-wide `AGENT_USER_EMAIL` from a CLI run or previous bug\n * would leak into an unauthenticated A2A/API call (e.g. unsigned or API-key\n * modes where `runWithRequestContext({ userEmail: undefined })` is used).\n * - Only when there is NO request context (CLI scripts) do we fall back to\n * `process.env.AGENT_USER_EMAIL`.\n */\nexport function getRequestUserEmail(): string | undefined {\n const store = als.getStore();\n if (store !== undefined) {\n if (store.userEmail) markAuthContextAccess(store);\n return store.userEmail;\n }\n return processEnv(\"AGENT_USER_EMAIL\");\n}\n\n/**\n * Get the current request's display name, when the auth provider supplied one.\n *\n * The same request-context fallback rules as `getRequestUserEmail()` apply:\n * HTTP/A2A calls only read AsyncLocalStorage, while CLI scripts may opt in via\n * `AGENT_USER_NAME`.\n */\nexport function getRequestUserName(): string | undefined {\n const store = als.getStore();\n if (store !== undefined) {\n if (store.userName) markAuthContextAccess(store);\n return store.userName;\n }\n return processEnv(\"AGENT_USER_NAME\");\n}\n\n/**\n * Get the current request's org ID.\n *\n * Same store-aware semantics as `getRequestUserEmail()` — env fallback is\n * CLI-only, so a request that explicitly has no org doesn't inherit a stale\n * `process.env.AGENT_ORG_ID` from a prior request on the same Lambda instance.\n */\nexport function getRequestOrgId(): string | undefined {\n const store = als.getStore();\n if (store !== undefined) {\n if (store.orgId) markAuthContextAccess(store);\n return store.orgId;\n }\n return processEnv(\"AGENT_ORG_ID\");\n}\n\nfunction markAuthContextAccess(ctx: RequestContext | undefined) {\n if (!ctx) return;\n if (ctx.userEmail || ctx.userName || ctx.orgId) {\n ctx.authContextAccessed = true;\n }\n}\n\nexport function hasAuthContextAccess(ctx: RequestContext | undefined): boolean {\n return Boolean(ctx?.authContextAccessed);\n}\n\n/**\n * Get the current request's IANA timezone (e.g. \"America/Los_Angeles\").\n * The UI sends this via the `x-user-timezone` header on every action call, and\n * the agent chat plugin propagates it into the request context so that\n * agent-initiated tool calls also see the user's timezone. Falls back to\n * `process.env.AGENT_USER_TIMEZONE` only for CLI scripts (no request context).\n */\nexport function getRequestTimezone(): string | undefined {\n const store = als.getStore();\n if (store !== undefined) return store.timezone;\n return processEnv(\"AGENT_USER_TIMEZONE\");\n}\n\n/**\n * Returns true when this request is on an integration-platform path (Slack,\n * Telegram, etc.) — i.e. we're inside the integration plugin's processor\n * function and the platform's deliver-by deadline plus the host's function\n * timeout are the binding budget. Non-integration callers (CLI, normal\n * agent chat) should treat this as `false`.\n */\nexport function isIntegrationCallerRequest(): boolean {\n return als.getStore()?.isIntegrationCaller === true;\n}\n\nexport function getIntegrationRequestContext():\n | NonNullable<RequestContext[\"integration\"]>\n | undefined {\n return als.getStore()?.integration;\n}\n\n/**\n * Convenience: returns `{ userEmail, orgId }` from the active request context,\n * suitable for passing to `resolveCredential(key, ctx)`. Returns `null` when\n * no user is associated with the call (e.g. an unauthenticated public route).\n *\n * For framework actions auto-mounted at `/_agent-native/actions/...` this is\n * always populated because action-routes wraps every invocation in\n * `runWithRequestContext`. For hand-written `/api/*` routes the calling code\n * is responsible for setting up the context (see `runWithRequestContext`).\n */\nexport function getCredentialContext(): {\n userEmail: string;\n orgId: string | null;\n} | null {\n const userEmail = getRequestUserEmail();\n if (!userEmail) return null;\n return { userEmail, orgId: getRequestOrgId() ?? null };\n}\n\n/**\n * Get the active request's mutable agent-run state. Returns `undefined` when\n * called outside an agent run (e.g. before `prepareRun` or in a non-agent\n * code path). Callers must tolerate the field absence; use the helper\n * `requireRequestRunContext()` if missing context is a programming error.\n */\nexport function getRequestRunContext(): RequestRunContext | undefined {\n const store = als.getStore();\n if (!store) return undefined;\n return store.run;\n}\n\n/**\n * Ensure a `RequestRunContext` exists on the active request store and\n * return it. Used by the agent-chat handler to attach run state once it\n * starts processing a chat request. Returns `undefined` if there is no\n * active request store (caller should not be invoking this outside ALS).\n */\nexport function ensureRequestRunContext(): RequestRunContext | undefined {\n const store = als.getStore();\n if (!store) return undefined;\n if (!store.run) store.run = {};\n return store.run;\n}\n"]}
@@ -20,7 +20,7 @@ export declare function createTranscribeVoiceHandler(): import("h3").EventHandle
20
20
  error: string;
21
21
  text?: undefined;
22
22
  } | {
23
- error?: undefined;
24
23
  text: string;
24
+ error?: undefined;
25
25
  }>>;
26
26
  //# sourceMappingURL=transcribe-voice.d.ts.map
@@ -0,0 +1,29 @@
1
+ export declare const AGENT_ACCESS_PARAM = "agent_access";
2
+ export declare const DEFAULT_AGENT_ACCESS_TTL_SECONDS: number;
3
+ export interface AgentAccessResourceScope {
4
+ resourceKind: string;
5
+ resourceId: string;
6
+ }
7
+ export interface AgentAccessUrlOptions {
8
+ origin?: string;
9
+ basePath?: string;
10
+ tokenParam?: string;
11
+ }
12
+ export interface AgentAccessApiUrlOptions extends AgentAccessUrlOptions {
13
+ endpoint: string;
14
+ resourceId: string;
15
+ idParam?: string;
16
+ token?: string | null;
17
+ extraParams?: Array<[string, string | number | boolean | null | undefined]>;
18
+ }
19
+ export declare function scopedAgentAccessResourceId(resourceKind: string, resourceId: string): string;
20
+ export declare function normalizeAgentAccessBasePath(basePath?: string): string;
21
+ export declare function normalizeAgentAccessOrigin(origin?: string): string;
22
+ export declare function toAgentAccessUrl(pathOrUrl: string, options?: Pick<AgentAccessUrlOptions, "origin" | "basePath">): string;
23
+ export declare function appendAgentAccessParam(urlOrPath: string, token: string, param?: string): string;
24
+ export declare function buildAgentAccessUrl({ path, token, origin, basePath, tokenParam, }: AgentAccessUrlOptions & {
25
+ path: string;
26
+ token: string;
27
+ }): string;
28
+ export declare function buildAgentAccessApiUrl({ endpoint, resourceId, idParam, token, tokenParam, extraParams, origin, basePath, }: AgentAccessApiUrlOptions): string;
29
+ //# sourceMappingURL=agent-access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-access.d.ts","sourceRoot":"","sources":["../../src/shared/agent-access.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AACjD,eAAO,MAAM,gCAAgC,QAAc,CAAC;AAE5D,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,wBAAyB,SAAQ,qBAAqB;IACrE,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC;CAC7E;AAQD,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GACjB,MAAM,CAER;AAMD,wBAAgB,4BAA4B,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAGtE;AAED,wBAAgB,0BAA0B,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAGlE;AAMD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,IAAI,CAAC,qBAAqB,EAAE,QAAQ,GAAG,UAAU,CAAM,GAC/D,MAAM,CAIR;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,KAAK,SAAqB,GACzB,MAAM,CAMR;AAED,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,KAAK,EACL,MAAM,EACN,QAAQ,EACR,UAA+B,GAChC,EAAE,qBAAqB,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,CAMT;AAED,wBAAgB,sBAAsB,CAAC,EACrC,QAAQ,EACR,UAAU,EACV,OAAc,EACd,KAAK,EACL,UAA+B,EAC/B,WAAW,EACX,MAAM,EACN,QAAQ,GACT,EAAE,wBAAwB,GAAG,MAAM,CAWnC"}
@@ -0,0 +1,57 @@
1
+ export const AGENT_ACCESS_PARAM = "agent_access";
2
+ export const DEFAULT_AGENT_ACCESS_TTL_SECONDS = 2 * 60 * 60;
3
+ function normalizeResourcePart(value, label) {
4
+ const trimmed = value.trim();
5
+ if (!trimmed)
6
+ throw new Error(`${label} is required`);
7
+ return trimmed;
8
+ }
9
+ export function scopedAgentAccessResourceId(resourceKind, resourceId) {
10
+ return `${normalizeResourcePart(resourceKind, "resourceKind")}:${normalizeResourcePart(resourceId, "resourceId")}`;
11
+ }
12
+ function trimSlashes(value) {
13
+ return value.replace(/^\/+|\/+$/g, "");
14
+ }
15
+ export function normalizeAgentAccessBasePath(basePath) {
16
+ const trimmed = trimSlashes(basePath ?? "");
17
+ return trimmed ? `/${trimmed}` : "";
18
+ }
19
+ export function normalizeAgentAccessOrigin(origin) {
20
+ if (!origin)
21
+ return "";
22
+ return origin.replace(/\/+$/g, "");
23
+ }
24
+ function isAbsoluteUrl(value) {
25
+ return /^[a-z][a-z0-9+.-]*:\/\//i.test(value);
26
+ }
27
+ export function toAgentAccessUrl(pathOrUrl, options = {}) {
28
+ if (isAbsoluteUrl(pathOrUrl))
29
+ return pathOrUrl;
30
+ const path = pathOrUrl.startsWith("/") ? pathOrUrl : `/${pathOrUrl}`;
31
+ return `${normalizeAgentAccessOrigin(options.origin)}${normalizeAgentAccessBasePath(options.basePath)}${path}`;
32
+ }
33
+ export function appendAgentAccessParam(urlOrPath, token, param = AGENT_ACCESS_PARAM) {
34
+ const hashIndex = urlOrPath.indexOf("#");
35
+ const base = hashIndex >= 0 ? urlOrPath.slice(0, hashIndex) : urlOrPath;
36
+ const hash = hashIndex >= 0 ? urlOrPath.slice(hashIndex) : "";
37
+ const sep = base.includes("?") ? "&" : "?";
38
+ return `${base}${sep}${encodeURIComponent(param)}=${encodeURIComponent(token)}${hash}`;
39
+ }
40
+ export function buildAgentAccessUrl({ path, token, origin, basePath, tokenParam = AGENT_ACCESS_PARAM, }) {
41
+ return appendAgentAccessParam(toAgentAccessUrl(path, { origin, basePath }), token, tokenParam);
42
+ }
43
+ export function buildAgentAccessApiUrl({ endpoint, resourceId, idParam = "id", token, tokenParam = AGENT_ACCESS_PARAM, extraParams, origin, basePath, }) {
44
+ const params = new URLSearchParams({ [idParam]: resourceId });
45
+ if (token)
46
+ params.set(tokenParam, token);
47
+ for (const [key, value] of extraParams ?? []) {
48
+ if (value === undefined || value === null || value === "")
49
+ continue;
50
+ params.set(key, String(value));
51
+ }
52
+ return toAgentAccessUrl(`${endpoint}?${params.toString()}`, {
53
+ origin,
54
+ basePath,
55
+ });
56
+ }
57
+ //# sourceMappingURL=agent-access.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-access.js","sourceRoot":"","sources":["../../src/shared/agent-access.ts"],"names":[],"mappings":"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","sourcesContent":["export const AGENT_ACCESS_PARAM = \"agent_access\";\nexport const DEFAULT_AGENT_ACCESS_TTL_SECONDS = 2 * 60 * 60;\n\nexport interface AgentAccessResourceScope {\n resourceKind: string;\n resourceId: string;\n}\n\nexport interface AgentAccessUrlOptions {\n origin?: string;\n basePath?: string;\n tokenParam?: string;\n}\n\nexport interface AgentAccessApiUrlOptions extends AgentAccessUrlOptions {\n endpoint: string;\n resourceId: string;\n idParam?: string;\n token?: string | null;\n extraParams?: Array<[string, string | number | boolean | null | undefined]>;\n}\n\nfunction normalizeResourcePart(value: string, label: string): string {\n const trimmed = value.trim();\n if (!trimmed) throw new Error(`${label} is required`);\n return trimmed;\n}\n\nexport function scopedAgentAccessResourceId(\n resourceKind: string,\n resourceId: string,\n): string {\n return `${normalizeResourcePart(resourceKind, \"resourceKind\")}:${normalizeResourcePart(resourceId, \"resourceId\")}`;\n}\n\nfunction trimSlashes(value: string): string {\n return value.replace(/^\\/+|\\/+$/g, \"\");\n}\n\nexport function normalizeAgentAccessBasePath(basePath?: string): string {\n const trimmed = trimSlashes(basePath ?? \"\");\n return trimmed ? `/${trimmed}` : \"\";\n}\n\nexport function normalizeAgentAccessOrigin(origin?: string): string {\n if (!origin) return \"\";\n return origin.replace(/\\/+$/g, \"\");\n}\n\nfunction isAbsoluteUrl(value: string): boolean {\n return /^[a-z][a-z0-9+.-]*:\\/\\//i.test(value);\n}\n\nexport function toAgentAccessUrl(\n pathOrUrl: string,\n options: Pick<AgentAccessUrlOptions, \"origin\" | \"basePath\"> = {},\n): string {\n if (isAbsoluteUrl(pathOrUrl)) return pathOrUrl;\n const path = pathOrUrl.startsWith(\"/\") ? pathOrUrl : `/${pathOrUrl}`;\n return `${normalizeAgentAccessOrigin(options.origin)}${normalizeAgentAccessBasePath(options.basePath)}${path}`;\n}\n\nexport function appendAgentAccessParam(\n urlOrPath: string,\n token: string,\n param = AGENT_ACCESS_PARAM,\n): string {\n const hashIndex = urlOrPath.indexOf(\"#\");\n const base = hashIndex >= 0 ? urlOrPath.slice(0, hashIndex) : urlOrPath;\n const hash = hashIndex >= 0 ? urlOrPath.slice(hashIndex) : \"\";\n const sep = base.includes(\"?\") ? \"&\" : \"?\";\n return `${base}${sep}${encodeURIComponent(param)}=${encodeURIComponent(token)}${hash}`;\n}\n\nexport function buildAgentAccessUrl({\n path,\n token,\n origin,\n basePath,\n tokenParam = AGENT_ACCESS_PARAM,\n}: AgentAccessUrlOptions & {\n path: string;\n token: string;\n}): string {\n return appendAgentAccessParam(\n toAgentAccessUrl(path, { origin, basePath }),\n token,\n tokenParam,\n );\n}\n\nexport function buildAgentAccessApiUrl({\n endpoint,\n resourceId,\n idParam = \"id\",\n token,\n tokenParam = AGENT_ACCESS_PARAM,\n extraParams,\n origin,\n basePath,\n}: AgentAccessApiUrlOptions): string {\n const params = new URLSearchParams({ [idParam]: resourceId });\n if (token) params.set(tokenParam, token);\n for (const [key, value] of extraParams ?? []) {\n if (value === undefined || value === null || value === \"\") continue;\n params.set(key, String(value));\n }\n return toAgentAccessUrl(`${endpoint}?${params.toString()}`, {\n origin,\n basePath,\n });\n}\n"]}