@agent-native/core 0.121.2 → 0.122.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 (460) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +139 -0
  3. package/corpus/core/docs/content/actions.mdx +2 -2
  4. package/corpus/core/docs/content/agent-surfaces.mdx +1 -1
  5. package/corpus/core/docs/content/authentication.mdx +2 -0
  6. package/corpus/core/docs/content/deployment.mdx +36 -0
  7. package/corpus/core/docs/content/http-api.mdx +266 -0
  8. package/corpus/core/docs/content/syncing-template-changes.mdx +159 -0
  9. package/corpus/core/package.json +2 -1
  10. package/corpus/core/src/a2a/activity.ts +38 -27
  11. package/corpus/core/src/agent/engine/builder-engine.ts +35 -4
  12. package/corpus/core/src/agent/run-manager.ts +20 -1
  13. package/corpus/core/src/agent/run-store.ts +4 -1
  14. package/corpus/core/src/agent/types.ts +28 -8
  15. package/corpus/core/src/chat-threads/store.ts +45 -0
  16. package/corpus/core/src/checkpoints/index.ts +2 -0
  17. package/corpus/core/src/checkpoints/route-match.ts +13 -0
  18. package/corpus/core/src/cli/create.ts +105 -17
  19. package/corpus/core/src/cli/index.ts +20 -0
  20. package/corpus/core/src/cli/template-baseline.ts +410 -0
  21. package/corpus/core/src/cli/template-sync.ts +1004 -0
  22. package/corpus/core/src/cli/templates-meta.ts +1 -0
  23. package/corpus/core/src/client/AssistantChat.tsx +38 -12
  24. package/corpus/core/src/client/NewWorkspaceAppFlow.tsx +75 -10
  25. package/corpus/core/src/client/chat/message-components.tsx +127 -66
  26. package/corpus/core/src/client/chat/tool-call-display.tsx +29 -5
  27. package/corpus/core/src/client/error-format.ts +18 -0
  28. package/corpus/core/src/client/org/OrgSwitcher.tsx +30 -8
  29. package/corpus/core/src/client/org/TeamPage.tsx +7 -6
  30. package/corpus/core/src/client/sse-event-processor.ts +3 -0
  31. package/corpus/core/src/data-widgets/index.ts +41 -0
  32. package/corpus/core/src/deploy/build.ts +11 -9
  33. package/corpus/core/src/integrations/webhook-handler.ts +63 -9
  34. package/corpus/core/src/org/auto-join-domain.ts +4 -3
  35. package/corpus/core/src/org/context.ts +108 -39
  36. package/corpus/core/src/org/index.ts +5 -0
  37. package/corpus/core/src/org/service-identity.ts +60 -0
  38. package/corpus/core/src/provider-api/index.ts +22 -1
  39. package/corpus/core/src/scripts/docs/search.ts +12 -1
  40. package/corpus/core/src/server/agent-chat/context-tools.ts +9 -4
  41. package/corpus/core/src/server/agent-chat/framework-prompts.ts +38 -66
  42. package/corpus/core/src/server/agent-chat-plugin.ts +17 -10
  43. package/corpus/core/src/server/agents-bundle.ts +84 -5
  44. package/corpus/core/src/server/auth.ts +4 -3
  45. package/corpus/core/src/server/builder-browser.ts +47 -19
  46. package/corpus/core/src/server/core-routes-plugin.ts +2 -2
  47. package/corpus/core/src/server/credential-provider.ts +209 -68
  48. package/corpus/core/src/server/index.ts +3 -0
  49. package/corpus/core/src/server/prompts/framework-core-compact.ts +6 -13
  50. package/corpus/core/src/server/prompts/framework-core.ts +9 -21
  51. package/corpus/core/src/server/prompts/index.ts +0 -1
  52. package/corpus/core/src/server/prompts/shared-rules.ts +19 -11
  53. package/corpus/core/src/server/ssr-handler.ts +13 -2
  54. package/corpus/core/src/settings/user-settings.ts +13 -1
  55. package/corpus/core/src/shared/cache-control.ts +141 -0
  56. package/corpus/core/src/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  57. package/corpus/core/src/templates/chat/_gitignore +1 -0
  58. package/corpus/core/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  59. package/corpus/core/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  60. package/corpus/core/src/templates/workspace-core/.agents/skills/performance/SKILL.md +19 -0
  61. package/corpus/core/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  62. package/corpus/core/src/templates/workspace-core/.agents/skills/visual-answer/SKILL.md +1 -0
  63. package/corpus/core/src/vite/agents-bundle-plugin.ts +7 -6
  64. package/corpus/core/src/vite/client.ts +5 -0
  65. package/corpus/templates/analytics/.agents/skills/adhoc-analysis/SKILL.md +4 -5
  66. package/corpus/templates/analytics/.agents/skills/admin-surfaces/SKILL.md +55 -0
  67. package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +10 -0
  68. package/corpus/templates/analytics/.agents/skills/dashboard-management/references/template-catalog-and-demo.md +62 -0
  69. package/corpus/templates/analytics/.agents/skills/dashboard-ops/SKILL.md +85 -0
  70. package/corpus/templates/analytics/.agents/skills/data-querying/SKILL.md +27 -2
  71. package/corpus/templates/analytics/.agents/skills/data-querying/references/inline-chart-embeds.md +139 -0
  72. package/corpus/templates/analytics/.agents/skills/monitoring/SKILL.md +77 -0
  73. package/corpus/templates/analytics/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  74. package/corpus/templates/analytics/AGENTS.md +91 -563
  75. package/corpus/templates/analytics/_gitignore +1 -0
  76. package/corpus/templates/analytics/actions/bigquery.ts +12 -4
  77. package/corpus/templates/analytics/actions/generate-chart.ts +5 -5
  78. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +30 -1
  79. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/DashboardFilterBar.tsx +3 -0
  80. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +1 -1
  81. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +1 -0
  82. package/corpus/templates/analytics/changelog/2026-07-24-analytics-finds-saved-dashboards-and-queries-far-more-reliab.md +6 -0
  83. package/corpus/templates/analytics/changelog/2026-07-24-notion-access-errors-now-explain-that-a-page-needs-sharing-w.md +6 -0
  84. package/corpus/templates/analytics/server/lib/agent-chat-plan-mode.ts +7 -0
  85. package/corpus/templates/analytics/server/lib/analytics-query-catalog.ts +191 -30
  86. package/corpus/templates/analytics/server/lib/bigquery.ts +11 -1
  87. package/corpus/templates/analytics/server/lib/notion.ts +15 -4
  88. package/corpus/templates/analytics/server/plugins/agent-chat.ts +10 -0
  89. package/corpus/templates/assets/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  90. package/corpus/templates/brain/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  91. package/corpus/templates/brain/_gitignore +1 -0
  92. package/corpus/templates/calendar/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  93. package/corpus/templates/calendar/_gitignore +1 -0
  94. package/corpus/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  95. package/corpus/templates/chat/_gitignore +1 -0
  96. package/corpus/templates/clips/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  97. package/corpus/templates/clips/.agents/skills/video-sharing/SKILL.md +34 -0
  98. package/corpus/templates/clips/AGENTS.md +5 -4
  99. package/corpus/templates/clips/_gitignore +1 -0
  100. package/corpus/templates/clips/actions/cleanup-transcript.ts +5 -0
  101. package/corpus/templates/clips/actions/get-recording-insights.ts +44 -8
  102. package/corpus/templates/clips/actions/get-recording-player-data.ts +39 -70
  103. package/corpus/templates/clips/actions/list-clip-views.ts +2 -4
  104. package/corpus/templates/clips/actions/list-recordings.ts +69 -19
  105. package/corpus/templates/clips/actions/list-viewers.ts +5 -2
  106. package/corpus/templates/clips/actions/regenerate-summary.ts +5 -1
  107. package/corpus/templates/clips/actions/request-transcript.ts +28 -1
  108. package/corpus/templates/clips/app/components/editor/stitch-manager.tsx +21 -1
  109. package/corpus/templates/clips/app/components/meetings/quick-ask-sidebar.tsx +14 -1
  110. package/corpus/templates/clips/app/components/player/insights-panel.tsx +8 -20
  111. package/corpus/templates/clips/app/components/player/recording-views-badge.tsx +335 -0
  112. package/corpus/templates/clips/app/components/player/video-player.tsx +13 -8
  113. package/corpus/templates/clips/app/components/sharing/share-ui.tsx +2 -1
  114. package/corpus/templates/clips/app/i18n/en-US.ts +13 -2
  115. package/corpus/templates/clips/app/lib/capture-permissions.ts +110 -0
  116. package/corpus/templates/clips/app/lib/recording-link.ts +32 -0
  117. package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +27 -0
  118. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +46 -15
  119. package/corpus/templates/clips/app/routes/record.tsx +77 -31
  120. package/corpus/templates/clips/app/routes/share.$shareId.tsx +42 -31
  121. package/corpus/templates/clips/changelog/2026-07-24-clip-pages-now-show-a-view-count-with-viewer-avatars-next-to.md +6 -0
  122. package/corpus/templates/clips/changelog/2026-07-24-clip-summaries-read-like-a-description-you-d-write-yourself-.md +6 -0
  123. package/corpus/templates/clips/changelog/2026-07-24-clip-view-counts-now-separate-human-views-from-agent-views-s.md +6 -0
  124. package/corpus/templates/clips/changelog/2026-07-24-clips-actions-can-now-be-called-by-org-service-tokens-so-ext.md +6 -0
  125. package/corpus/templates/clips/changelog/2026-07-24-clips-no-longer-briefly-shows-a-dock-icon-while-launching.md +6 -0
  126. package/corpus/templates/clips/changelog/2026-07-24-fixed-owner-and-editor-share-links-redirecting-to-the-record.md +6 -0
  127. package/corpus/templates/clips/changelog/2026-07-24-meeting-and-note-recordings-now-start-as-a-compact-pill-on-t.md +6 -0
  128. package/corpus/templates/clips/changelog/2026-07-24-new-clips-now-copy-a-shareable-link-instead-of-the-owner-onl.md +6 -0
  129. package/corpus/templates/clips/changelog/2026-07-24-opening-a-share-link-as-the-clip-s-owner-now-goes-straight-t.md +6 -0
  130. package/corpus/templates/clips/changelog/2026-07-24-permissions-and-rewind-controls-now-use-compact-consistent-h.md +6 -0
  131. package/corpus/templates/clips/changelog/2026-07-24-quitting-the-desktop-app-no-longer-shows-a-false-macos-crash.md +6 -0
  132. package/corpus/templates/clips/changelog/2026-07-24-screen-recording-permission-errors-now-name-the-exact-app-to.md +6 -0
  133. package/corpus/templates/clips/changelog/2026-07-24-the-desktop-app-now-copies-a-new-clip-s-share-link-to-your-c.md +6 -0
  134. package/corpus/templates/clips/changelog/2026-07-24-the-recording-toolbar-now-stays-above-other-apps-including-o.md +6 -0
  135. package/corpus/templates/clips/changelog/2026-07-24-transcript-captions-now-use-real-speech-timings-instead-of-a.md +6 -0
  136. package/corpus/templates/clips/changelog/2026-07-24-video-playback-no-longer-stutters-and-replays-the-last-momen.md +6 -0
  137. package/corpus/templates/clips/chrome-extension/src/background.ts +17 -1
  138. package/corpus/templates/clips/desktop/package.json +2 -0
  139. package/corpus/templates/clips/desktop/src/app.tsx +89 -0
  140. package/corpus/templates/clips/desktop/src/hooks/useMeetingTranscription.ts +9 -3
  141. package/corpus/templates/clips/desktop/src/lib/audio-meter.ts +51 -0
  142. package/corpus/templates/clips/desktop/src/lib/native-notification.ts +44 -0
  143. package/corpus/templates/clips/desktop/src/lib/recording-link.ts +67 -0
  144. package/corpus/templates/clips/desktop/src/overlays/live-audio-bars.tsx +35 -35
  145. package/corpus/templates/clips/desktop/src/overlays/live-transcript.tsx +3 -2
  146. package/corpus/templates/clips/desktop/src/overlays/recording-pill.tsx +47 -46
  147. package/corpus/templates/clips/desktop/src/styles.css +127 -78
  148. package/corpus/templates/clips/desktop/src-tauri/Cargo.toml +7 -0
  149. package/corpus/templates/clips/desktop/src-tauri/Info.plist +6 -0
  150. package/corpus/templates/clips/desktop/src-tauri/capabilities/default.json +1 -0
  151. package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +7 -3
  152. package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +4 -1
  153. package/corpus/templates/clips/desktop/src-tauri/src/main.rs +8 -0
  154. package/corpus/templates/clips/desktop/src-tauri/src/recording_indicator.rs +21 -10
  155. package/corpus/templates/clips/desktop/src-tauri/src/util.rs +40 -0
  156. package/corpus/templates/clips/server/db/schema.ts +25 -0
  157. package/corpus/templates/clips/server/lib/agent-views.ts +145 -0
  158. package/corpus/templates/clips/server/lib/public-agent-context.ts +7 -0
  159. package/corpus/templates/clips/server/lib/recording-share-grant.ts +79 -0
  160. package/corpus/templates/clips/server/lib/recordings.ts +51 -3
  161. package/corpus/templates/clips/server/plugins/db.ts +23 -0
  162. package/corpus/templates/clips/server/routes/api/public-recording.get.ts +49 -17
  163. package/corpus/templates/clips/shared/recording-link.ts +43 -0
  164. package/corpus/templates/clips/shared/share-attribution.ts +4 -0
  165. package/corpus/templates/clips/shared/share-dashboard-redirect.ts +42 -0
  166. package/corpus/templates/clips/shared/view-analytics.ts +26 -0
  167. package/corpus/templates/content/.agents/skills/content/SKILL.md +5 -0
  168. package/corpus/templates/content/.agents/skills/content/references/local-file-mode.md +135 -0
  169. package/corpus/templates/content/.agents/skills/document-editing/SKILL.md +12 -0
  170. package/corpus/templates/content/.agents/skills/document-editing/references/databases.md +238 -0
  171. package/corpus/templates/content/.agents/skills/document-editing/references/document-behavior.md +91 -0
  172. package/corpus/templates/content/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  173. package/corpus/templates/content/AGENTS.md +62 -583
  174. package/corpus/templates/content/_gitignore +1 -0
  175. package/corpus/templates/design/.agents/skills/creative-context/SKILL.md +11 -0
  176. package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +50 -8
  177. package/corpus/templates/design/.agents/skills/design-generation/references/code-layers.md +81 -0
  178. package/corpus/templates/design/.agents/skills/design-generation/references/code-workspace.md +42 -0
  179. package/corpus/templates/design/.agents/skills/design-generation/references/editor-extensions.md +34 -0
  180. package/corpus/templates/design/.agents/skills/responsive-breakpoints/SKILL.md +4 -1
  181. package/corpus/templates/design/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  182. package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +17 -0
  183. package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +8196 -0
  184. package/corpus/templates/design/.generated/bridge/embedded-wheel.generated.ts +265 -0
  185. package/corpus/templates/design/.generated/bridge/hit-test.generated.ts +642 -0
  186. package/corpus/templates/design/.generated/bridge/motion-preview.generated.ts +571 -0
  187. package/corpus/templates/design/.generated/bridge/nav.generated.ts +91 -0
  188. package/corpus/templates/design/.generated/bridge/sample.generated.ts +23 -0
  189. package/corpus/templates/design/.generated/bridge/shader-fill-preview.generated.ts +263 -0
  190. package/corpus/templates/design/.generated/bridge/shader-runtime.generated.ts +518 -0
  191. package/corpus/templates/design/.generated/bridge/tweak.generated.ts +20 -0
  192. package/corpus/templates/design/.generated/bridge/zoom.generated.ts +32 -0
  193. package/corpus/templates/design/AGENTS.md +88 -503
  194. package/corpus/templates/design/_gitignore +1 -0
  195. package/corpus/templates/dispatch/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  196. package/corpus/templates/dispatch/_gitignore +1 -0
  197. package/corpus/templates/dispatch/changelog/2026-07-24-signing-in-now-puts-you-in-your-companys-workspace.md +6 -0
  198. package/corpus/templates/forms/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  199. package/corpus/templates/forms/_gitignore +1 -0
  200. package/corpus/templates/forms/server/lib/public-form-ssr.ts +2 -2
  201. package/corpus/templates/macros/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  202. package/corpus/templates/macros/_gitignore +1 -0
  203. package/corpus/templates/mail/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  204. package/corpus/templates/mail/_gitignore +1 -0
  205. package/corpus/templates/plan/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  206. package/corpus/templates/plan/_gitignore +1 -0
  207. package/corpus/templates/slides/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  208. package/corpus/templates/slides/_gitignore +1 -0
  209. package/corpus/templates/slides/server/plugins/db.ts +4 -0
  210. package/corpus/templates/tasks/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  211. package/corpus/templates/tasks/AGENTS.md +1 -1
  212. package/corpus/templates/tasks/_gitignore +1 -0
  213. package/dist/a2a/activity.d.ts +4 -1
  214. package/dist/a2a/activity.d.ts.map +1 -1
  215. package/dist/a2a/activity.js +27 -16
  216. package/dist/a2a/activity.js.map +1 -1
  217. package/dist/agent/engine/builder-engine.d.ts +1 -0
  218. package/dist/agent/engine/builder-engine.d.ts.map +1 -1
  219. package/dist/agent/engine/builder-engine.js +31 -4
  220. package/dist/agent/engine/builder-engine.js.map +1 -1
  221. package/dist/agent/run-manager.d.ts.map +1 -1
  222. package/dist/agent/run-manager.js +18 -1
  223. package/dist/agent/run-manager.js.map +1 -1
  224. package/dist/agent/run-store.d.ts +1 -0
  225. package/dist/agent/run-store.d.ts.map +1 -1
  226. package/dist/agent/run-store.js +2 -1
  227. package/dist/agent/run-store.js.map +1 -1
  228. package/dist/agent/types.d.ts +12 -1
  229. package/dist/agent/types.d.ts.map +1 -1
  230. package/dist/agent/types.js +21 -1
  231. package/dist/agent/types.js.map +1 -1
  232. package/dist/chat-threads/store.d.ts +10 -0
  233. package/dist/chat-threads/store.d.ts.map +1 -1
  234. package/dist/chat-threads/store.js +41 -0
  235. package/dist/chat-threads/store.js.map +1 -1
  236. package/dist/checkpoints/index.d.ts +1 -0
  237. package/dist/checkpoints/index.d.ts.map +1 -1
  238. package/dist/checkpoints/index.js +1 -0
  239. package/dist/checkpoints/index.js.map +1 -1
  240. package/dist/checkpoints/route-match.d.ts +8 -0
  241. package/dist/checkpoints/route-match.d.ts.map +1 -0
  242. package/dist/checkpoints/route-match.js +13 -0
  243. package/dist/checkpoints/route-match.js.map +1 -0
  244. package/dist/cli/create.d.ts +35 -4
  245. package/dist/cli/create.d.ts.map +1 -1
  246. package/dist/cli/create.js +69 -19
  247. package/dist/cli/create.js.map +1 -1
  248. package/dist/cli/index.js +19 -0
  249. package/dist/cli/index.js.map +1 -1
  250. package/dist/cli/template-baseline.d.ts +54 -0
  251. package/dist/cli/template-baseline.d.ts.map +1 -0
  252. package/dist/cli/template-baseline.js +334 -0
  253. package/dist/cli/template-baseline.js.map +1 -0
  254. package/dist/cli/template-sync.d.ts +57 -0
  255. package/dist/cli/template-sync.d.ts.map +1 -0
  256. package/dist/cli/template-sync.js +787 -0
  257. package/dist/cli/template-sync.js.map +1 -0
  258. package/dist/cli/templates-meta.d.ts.map +1 -1
  259. package/dist/cli/templates-meta.js +1 -0
  260. package/dist/cli/templates-meta.js.map +1 -1
  261. package/dist/client/AssistantChat.d.ts +2 -1
  262. package/dist/client/AssistantChat.d.ts.map +1 -1
  263. package/dist/client/AssistantChat.js +38 -10
  264. package/dist/client/AssistantChat.js.map +1 -1
  265. package/dist/client/NewWorkspaceAppFlow.d.ts.map +1 -1
  266. package/dist/client/NewWorkspaceAppFlow.js +32 -2
  267. package/dist/client/NewWorkspaceAppFlow.js.map +1 -1
  268. package/dist/client/chat/message-components.d.ts +20 -0
  269. package/dist/client/chat/message-components.d.ts.map +1 -1
  270. package/dist/client/chat/message-components.js +81 -46
  271. package/dist/client/chat/message-components.js.map +1 -1
  272. package/dist/client/chat/tool-call-display.d.ts.map +1 -1
  273. package/dist/client/chat/tool-call-display.js +14 -6
  274. package/dist/client/chat/tool-call-display.js.map +1 -1
  275. package/dist/client/error-format.d.ts.map +1 -1
  276. package/dist/client/error-format.js +13 -0
  277. package/dist/client/error-format.js.map +1 -1
  278. package/dist/client/org/OrgSwitcher.d.ts +8 -1
  279. package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
  280. package/dist/client/org/OrgSwitcher.js +3 -2
  281. package/dist/client/org/OrgSwitcher.js.map +1 -1
  282. package/dist/client/org/TeamPage.d.ts.map +1 -1
  283. package/dist/client/org/TeamPage.js +1 -1
  284. package/dist/client/org/TeamPage.js.map +1 -1
  285. package/dist/client/sse-event-processor.d.ts.map +1 -1
  286. package/dist/client/sse-event-processor.js +3 -0
  287. package/dist/client/sse-event-processor.js.map +1 -1
  288. package/dist/collab/awareness.d.ts +2 -2
  289. package/dist/collab/awareness.d.ts.map +1 -1
  290. package/dist/data-widgets/index.d.ts +3 -0
  291. package/dist/data-widgets/index.d.ts.map +1 -1
  292. package/dist/data-widgets/index.js +33 -0
  293. package/dist/data-widgets/index.js.map +1 -1
  294. package/dist/deploy/build.d.ts.map +1 -1
  295. package/dist/deploy/build.js +11 -7
  296. package/dist/deploy/build.js.map +1 -1
  297. package/dist/eject/provider-api-definitions.d.ts +1 -0
  298. package/dist/eject/provider-api-definitions.d.ts.map +1 -1
  299. package/dist/integrations/webhook-handler.d.ts.map +1 -1
  300. package/dist/integrations/webhook-handler.js +46 -9
  301. package/dist/integrations/webhook-handler.js.map +1 -1
  302. package/dist/org/auto-join-domain.d.ts +3 -2
  303. package/dist/org/auto-join-domain.d.ts.map +1 -1
  304. package/dist/org/auto-join-domain.js +1 -1
  305. package/dist/org/auto-join-domain.js.map +1 -1
  306. package/dist/org/context.d.ts.map +1 -1
  307. package/dist/org/context.js +84 -28
  308. package/dist/org/context.js.map +1 -1
  309. package/dist/org/index.d.ts +1 -0
  310. package/dist/org/index.d.ts.map +1 -1
  311. package/dist/org/index.js +1 -0
  312. package/dist/org/index.js.map +1 -1
  313. package/dist/org/service-identity.d.ts +43 -0
  314. package/dist/org/service-identity.d.ts.map +1 -0
  315. package/dist/org/service-identity.js +34 -0
  316. package/dist/org/service-identity.js.map +1 -0
  317. package/dist/provider-api/actions/custom-provider-registration.d.ts +14 -14
  318. package/dist/provider-api/actions/provider-api.d.ts +13 -11
  319. package/dist/provider-api/actions/provider-api.d.ts.map +1 -1
  320. package/dist/provider-api/index.d.ts +4 -0
  321. package/dist/provider-api/index.d.ts.map +1 -1
  322. package/dist/provider-api/index.js +17 -1
  323. package/dist/provider-api/index.js.map +1 -1
  324. package/dist/resources/handlers.d.ts +1 -1
  325. package/dist/scripts/docs/search.d.ts.map +1 -1
  326. package/dist/scripts/docs/search.js +12 -1
  327. package/dist/scripts/docs/search.js.map +1 -1
  328. package/dist/server/agent-chat/context-tools.d.ts.map +1 -1
  329. package/dist/server/agent-chat/context-tools.js +3 -3
  330. package/dist/server/agent-chat/context-tools.js.map +1 -1
  331. package/dist/server/agent-chat/framework-prompts.d.ts +8 -3
  332. package/dist/server/agent-chat/framework-prompts.d.ts.map +1 -1
  333. package/dist/server/agent-chat/framework-prompts.js +33 -62
  334. package/dist/server/agent-chat/framework-prompts.js.map +1 -1
  335. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  336. package/dist/server/agent-chat-plugin.js +16 -10
  337. package/dist/server/agent-chat-plugin.js.map +1 -1
  338. package/dist/server/agents-bundle.d.ts +18 -0
  339. package/dist/server/agents-bundle.d.ts.map +1 -1
  340. package/dist/server/agents-bundle.js +70 -4
  341. package/dist/server/agents-bundle.js.map +1 -1
  342. package/dist/server/auth.d.ts.map +1 -1
  343. package/dist/server/auth.js +4 -3
  344. package/dist/server/auth.js.map +1 -1
  345. package/dist/server/builder-browser.d.ts.map +1 -1
  346. package/dist/server/builder-browser.js +43 -19
  347. package/dist/server/builder-browser.js.map +1 -1
  348. package/dist/server/core-routes-plugin.js +2 -2
  349. package/dist/server/core-routes-plugin.js.map +1 -1
  350. package/dist/server/credential-provider.d.ts +38 -2
  351. package/dist/server/credential-provider.d.ts.map +1 -1
  352. package/dist/server/credential-provider.js +142 -64
  353. package/dist/server/credential-provider.js.map +1 -1
  354. package/dist/server/index.d.ts +1 -1
  355. package/dist/server/index.d.ts.map +1 -1
  356. package/dist/server/index.js +1 -1
  357. package/dist/server/index.js.map +1 -1
  358. package/dist/server/prompts/framework-core-compact.d.ts +1 -1
  359. package/dist/server/prompts/framework-core-compact.d.ts.map +1 -1
  360. package/dist/server/prompts/framework-core-compact.js +7 -13
  361. package/dist/server/prompts/framework-core-compact.js.map +1 -1
  362. package/dist/server/prompts/framework-core.d.ts +1 -1
  363. package/dist/server/prompts/framework-core.d.ts.map +1 -1
  364. package/dist/server/prompts/framework-core.js +10 -21
  365. package/dist/server/prompts/framework-core.js.map +1 -1
  366. package/dist/server/prompts/index.d.ts +1 -1
  367. package/dist/server/prompts/index.d.ts.map +1 -1
  368. package/dist/server/prompts/index.js +1 -1
  369. package/dist/server/prompts/index.js.map +1 -1
  370. package/dist/server/prompts/shared-rules.d.ts +16 -10
  371. package/dist/server/prompts/shared-rules.d.ts.map +1 -1
  372. package/dist/server/prompts/shared-rules.js +19 -10
  373. package/dist/server/prompts/shared-rules.js.map +1 -1
  374. package/dist/server/ssr-handler.d.ts +1 -1
  375. package/dist/server/ssr-handler.d.ts.map +1 -1
  376. package/dist/server/ssr-handler.js +10 -3
  377. package/dist/server/ssr-handler.js.map +1 -1
  378. package/dist/settings/user-settings.d.ts.map +1 -1
  379. package/dist/settings/user-settings.js +13 -1
  380. package/dist/settings/user-settings.js.map +1 -1
  381. package/dist/shared/cache-control.d.ts +52 -0
  382. package/dist/shared/cache-control.d.ts.map +1 -1
  383. package/dist/shared/cache-control.js +107 -0
  384. package/dist/shared/cache-control.js.map +1 -1
  385. package/dist/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  386. package/dist/templates/chat/_gitignore +1 -0
  387. package/dist/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  388. package/dist/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  389. package/dist/templates/workspace-core/.agents/skills/performance/SKILL.md +19 -0
  390. package/dist/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  391. package/dist/templates/workspace-core/.agents/skills/visual-answer/SKILL.md +1 -0
  392. package/dist/vite/agents-bundle-plugin.d.ts.map +1 -1
  393. package/dist/vite/agents-bundle-plugin.js +8 -7
  394. package/dist/vite/agents-bundle-plugin.js.map +1 -1
  395. package/dist/vite/client.d.ts.map +1 -1
  396. package/dist/vite/client.js +2 -0
  397. package/dist/vite/client.js.map +1 -1
  398. package/docs/content/actions.mdx +2 -2
  399. package/docs/content/agent-surfaces.mdx +1 -1
  400. package/docs/content/authentication.mdx +2 -0
  401. package/docs/content/deployment.mdx +36 -0
  402. package/docs/content/http-api.mdx +266 -0
  403. package/docs/content/syncing-template-changes.mdx +159 -0
  404. package/package.json +4 -3
  405. package/src/a2a/activity.ts +38 -27
  406. package/src/agent/engine/builder-engine.ts +35 -4
  407. package/src/agent/run-manager.ts +20 -1
  408. package/src/agent/run-store.ts +4 -1
  409. package/src/agent/types.ts +28 -8
  410. package/src/chat-threads/store.ts +45 -0
  411. package/src/checkpoints/index.ts +2 -0
  412. package/src/checkpoints/route-match.ts +13 -0
  413. package/src/cli/create.ts +105 -17
  414. package/src/cli/index.ts +20 -0
  415. package/src/cli/template-baseline.ts +410 -0
  416. package/src/cli/template-sync.ts +1004 -0
  417. package/src/cli/templates-meta.ts +1 -0
  418. package/src/client/AssistantChat.tsx +38 -12
  419. package/src/client/NewWorkspaceAppFlow.tsx +75 -10
  420. package/src/client/chat/message-components.tsx +127 -66
  421. package/src/client/chat/tool-call-display.tsx +29 -5
  422. package/src/client/error-format.ts +18 -0
  423. package/src/client/org/OrgSwitcher.tsx +30 -8
  424. package/src/client/org/TeamPage.tsx +7 -6
  425. package/src/client/sse-event-processor.ts +3 -0
  426. package/src/data-widgets/index.ts +41 -0
  427. package/src/deploy/build.ts +11 -9
  428. package/src/integrations/webhook-handler.ts +63 -9
  429. package/src/org/auto-join-domain.ts +4 -3
  430. package/src/org/context.ts +108 -39
  431. package/src/org/index.ts +5 -0
  432. package/src/org/service-identity.ts +60 -0
  433. package/src/provider-api/index.ts +22 -1
  434. package/src/scripts/docs/search.ts +12 -1
  435. package/src/server/__snapshots__/agent-chat-plugin.surface.spec.ts.snap +25 -36
  436. package/src/server/agent-chat/context-tools.ts +9 -4
  437. package/src/server/agent-chat/framework-prompts.ts +38 -66
  438. package/src/server/agent-chat-plugin.ts +17 -10
  439. package/src/server/agents-bundle.ts +84 -5
  440. package/src/server/auth.ts +4 -3
  441. package/src/server/builder-browser.ts +47 -19
  442. package/src/server/core-routes-plugin.ts +2 -2
  443. package/src/server/credential-provider.ts +209 -68
  444. package/src/server/index.ts +3 -0
  445. package/src/server/prompts/framework-core-compact.ts +6 -13
  446. package/src/server/prompts/framework-core.ts +9 -21
  447. package/src/server/prompts/index.ts +0 -1
  448. package/src/server/prompts/shared-rules.ts +19 -11
  449. package/src/server/ssr-handler.ts +13 -2
  450. package/src/settings/user-settings.ts +13 -1
  451. package/src/shared/cache-control.ts +141 -0
  452. package/src/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  453. package/src/templates/chat/_gitignore +1 -0
  454. package/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  455. package/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  456. package/src/templates/workspace-core/.agents/skills/performance/SKILL.md +19 -0
  457. package/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  458. package/src/templates/workspace-core/.agents/skills/visual-answer/SKILL.md +1 -0
  459. package/src/vite/agents-bundle-plugin.ts +7 -6
  460. package/src/vite/client.ts +5 -0
@@ -0,0 +1,571 @@
1
+ // AUTO-GENERATED by bridge/codegen.ts — do not edit manually.
2
+ // Run: pnpm exec tsx app/components/design/bridge/codegen.ts
3
+
4
+ /** Compiled IIFE string for motion-preview.bridge.ts — inject into an iframe via srcdoc or a <script> tag. */
5
+ export const motionPreviewBridgeScript: string = `"use strict";
6
+ (() => {
7
+ // app/components/design/bridge/motion-preview.bridge.ts
8
+ (function() {
9
+ var loadedTracks = [];
10
+ var loadedDefaultEase = "ease";
11
+ var loadedTimelineDurationMs = null;
12
+ var touchedProps = {};
13
+ var originalInlineValues = {};
14
+ var elementCache = {};
15
+ function resolveTrackElement(nodeId) {
16
+ var cached = elementCache[nodeId];
17
+ if (cached && document.contains(cached)) return cached;
18
+ var el = document.querySelector(
19
+ '[data-agent-native-node-id="' + nodeId + '"]'
20
+ );
21
+ elementCache[nodeId] = el;
22
+ return el;
23
+ }
24
+ function camelizeProp(prop) {
25
+ return String(prop).replace(/-([a-z])/g, function(_m, c) {
26
+ return c.toUpperCase();
27
+ });
28
+ }
29
+ function formatNum(n) {
30
+ if (!Number.isFinite(n)) return "0";
31
+ return (Math.round(n * 1e4) / 1e4).toString();
32
+ }
33
+ function clamp255(x) {
34
+ return x < 0 ? 0 : x > 255 ? 255 : x;
35
+ }
36
+ function clamp01(x) {
37
+ return x < 0 ? 0 : x > 1 ? 1 : x;
38
+ }
39
+ function parseAlpha(s) {
40
+ if (typeof s === "string" && s.indexOf("%") >= 0)
41
+ return parseFloat(s) / 100;
42
+ return parseFloat(s);
43
+ }
44
+ function hueToRgb(p, q, h) {
45
+ if (h < 0) h += 1;
46
+ if (h > 1) h -= 1;
47
+ if (h < 1 / 6) return p + (q - p) * 6 * h;
48
+ if (h < 1 / 2) return q;
49
+ if (h < 2 / 3) return p + (q - p) * (2 / 3 - h) * 6;
50
+ return p;
51
+ }
52
+ function hslToRgb(h, s, l) {
53
+ h = (h % 360 + 360) % 360 / 360;
54
+ s = clamp01(s);
55
+ l = clamp01(l);
56
+ if (s === 0) return [l * 255, l * 255, l * 255];
57
+ var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
58
+ var p = 2 * l - q;
59
+ return [
60
+ hueToRgb(p, q, h + 1 / 3) * 255,
61
+ hueToRgb(p, q, h) * 255,
62
+ hueToRgb(p, q, h - 1 / 3) * 255
63
+ ];
64
+ }
65
+ function parseColor(str) {
66
+ if (typeof str !== "string") return null;
67
+ var s = str.trim();
68
+ var hex = /^#([0-9a-fA-F]{3,8})$/.exec(s);
69
+ if (hex) {
70
+ var h = hex[1];
71
+ if (h.length === 3 || h.length === 4) {
72
+ return [
73
+ parseInt(h.charAt(0) + h.charAt(0), 16),
74
+ parseInt(h.charAt(1) + h.charAt(1), 16),
75
+ parseInt(h.charAt(2) + h.charAt(2), 16),
76
+ h.length === 4 ? parseInt(h.charAt(3) + h.charAt(3), 16) / 255 : 1
77
+ ];
78
+ }
79
+ if (h.length === 6 || h.length === 8) {
80
+ return [
81
+ parseInt(h.slice(0, 2), 16),
82
+ parseInt(h.slice(2, 4), 16),
83
+ parseInt(h.slice(4, 6), 16),
84
+ h.length === 8 ? parseInt(h.slice(6, 8), 16) / 255 : 1
85
+ ];
86
+ }
87
+ return null;
88
+ }
89
+ var rgb = /^rgba?\\(([^)]+)\\)$/i.exec(s);
90
+ if (rgb) {
91
+ var rp = rgb[1].split(/[\\s,\\/]+/).filter(function(x) {
92
+ return x.length;
93
+ });
94
+ if (rp.length >= 3) {
95
+ return [
96
+ parseFloat(rp[0]),
97
+ parseFloat(rp[1]),
98
+ parseFloat(rp[2]),
99
+ rp.length >= 4 ? parseAlpha(rp[3]) : 1
100
+ ];
101
+ }
102
+ return null;
103
+ }
104
+ var hsl = /^hsla?\\(([^)]+)\\)$/i.exec(s);
105
+ if (hsl) {
106
+ var hp = hsl[1].split(/[\\s,\\/]+/).filter(function(x) {
107
+ return x.length;
108
+ });
109
+ if (hp.length >= 3) {
110
+ var c = hslToRgb(
111
+ parseFloat(hp[0]),
112
+ parseFloat(hp[1]) / 100,
113
+ parseFloat(hp[2]) / 100
114
+ );
115
+ return [c[0], c[1], c[2], hp.length >= 4 ? parseAlpha(hp[3]) : 1];
116
+ }
117
+ return null;
118
+ }
119
+ return null;
120
+ }
121
+ function lerpColorArr(a, b, ratio) {
122
+ return [
123
+ a[0] + (b[0] - a[0]) * ratio,
124
+ a[1] + (b[1] - a[1]) * ratio,
125
+ a[2] + (b[2] - a[2]) * ratio,
126
+ a[3] + (b[3] - a[3]) * ratio
127
+ ];
128
+ }
129
+ function formatColor(c) {
130
+ var r = Math.round(clamp255(c[0]));
131
+ var g = Math.round(clamp255(c[1]));
132
+ var b = Math.round(clamp255(c[2]));
133
+ var a = clamp01(c[3]);
134
+ if (a >= 1) return "rgb(" + r + ", " + g + ", " + b + ")";
135
+ return "rgba(" + r + ", " + g + ", " + b + ", " + Math.round(a * 1e3) / 1e3 + ")";
136
+ }
137
+ function tokenizeSegments(str) {
138
+ if (typeof str !== "string") return null;
139
+ var segs = [];
140
+ var i = 0;
141
+ var n = str.length;
142
+ var litStart = 0;
143
+ var colorRe = /^(#[0-9a-fA-F]{3,8}|rgba?\\([^)]*\\)|hsla?\\([^)]*\\))/i;
144
+ var numRe = /^[+-]?(?:\\d+\\.?\\d*|\\.\\d+)/;
145
+ while (i < n) {
146
+ var rest = str.slice(i);
147
+ var cm = colorRe.exec(rest);
148
+ if (cm) {
149
+ var parsed = parseColor(cm[0]);
150
+ if (parsed) {
151
+ if (i > litStart) segs.push({ lit: str.slice(litStart, i) });
152
+ segs.push({ type: "color", value: parsed });
153
+ i += cm[0].length;
154
+ litStart = i;
155
+ continue;
156
+ }
157
+ }
158
+ var prevCh = i > 0 ? str.charAt(i - 1) : "";
159
+ if (!/[a-zA-Z]/.test(prevCh)) {
160
+ var nm = numRe.exec(rest);
161
+ if (nm) {
162
+ var numText = nm[0];
163
+ var unit = "";
164
+ var um = /^[a-z%]+/i.exec(str.slice(i + numText.length));
165
+ if (um) unit = um[0];
166
+ if (i > litStart) segs.push({ lit: str.slice(litStart, i) });
167
+ segs.push({ type: "num", value: parseFloat(numText), unit });
168
+ i += numText.length + unit.length;
169
+ litStart = i;
170
+ continue;
171
+ }
172
+ }
173
+ i++;
174
+ }
175
+ if (n > litStart) segs.push({ lit: str.slice(litStart, n) });
176
+ return segs;
177
+ }
178
+ function segShape(segs) {
179
+ var parts = [];
180
+ for (var i = 0; i < segs.length; i++) {
181
+ var s = segs[i];
182
+ parts.push("lit" in s ? "L" + s.lit : "T" + s.type);
183
+ }
184
+ return parts.join("");
185
+ }
186
+ function cubicBezierY(x1, y1, x2, y2, x) {
187
+ if (x <= 0) return 0;
188
+ if (x >= 1) return 1;
189
+ var cx = 3 * x1;
190
+ var bx = 3 * (x2 - x1) - cx;
191
+ var ax = 1 - cx - bx;
192
+ var cy = 3 * y1;
193
+ var by = 3 * (y2 - y1) - cy;
194
+ var ay = 1 - cy - by;
195
+ function sampleX(u2) {
196
+ return ((ax * u2 + bx) * u2 + cx) * u2;
197
+ }
198
+ function sampleY(u2) {
199
+ return ((ay * u2 + by) * u2 + cy) * u2;
200
+ }
201
+ function sampleDX(u2) {
202
+ return (3 * ax * u2 + 2 * bx) * u2 + cx;
203
+ }
204
+ var u = x;
205
+ for (var i = 0; i < 8; i++) {
206
+ var err = sampleX(u) - x;
207
+ if (Math.abs(err) < 1e-6) return sampleY(u);
208
+ var d = sampleDX(u);
209
+ if (Math.abs(d) < 1e-6) break;
210
+ u = Math.min(1, Math.max(0, u - err / d));
211
+ }
212
+ var lo = 0;
213
+ var hi = 1;
214
+ u = x;
215
+ while (hi - lo > 1e-6) {
216
+ u = (lo + hi) / 2;
217
+ if (sampleX(u) < x) lo = u;
218
+ else hi = u;
219
+ }
220
+ return sampleY(u);
221
+ }
222
+ function evalEase(ease, x) {
223
+ var clamped = x <= 0 ? 0 : x >= 1 ? 1 : x;
224
+ var raw = String(ease == null ? "ease" : ease).trim().toLowerCase();
225
+ if (raw === "linear") return clamped;
226
+ if (raw === "step-start") return clamped > 0 ? 1 : 0;
227
+ if (raw === "step-end") return clamped >= 1 ? 1 : 0;
228
+ if (raw === "ease") return cubicBezierY(0.25, 0.1, 0.25, 1, clamped);
229
+ if (raw === "ease-in") return cubicBezierY(0.42, 0, 1, 1, clamped);
230
+ if (raw === "ease-out") return cubicBezierY(0, 0, 0.58, 1, clamped);
231
+ if (raw === "ease-in-out") return cubicBezierY(0.42, 0, 0.58, 1, clamped);
232
+ var bezier = /^cubic-bezier\\(([^)]+)\\)$/.exec(raw);
233
+ if (bezier) {
234
+ var parts = bezier[1].split(",");
235
+ if (parts.length === 4) {
236
+ var p0 = parseFloat(parts[0]);
237
+ var p1 = parseFloat(parts[1]);
238
+ var p2 = parseFloat(parts[2]);
239
+ var p3 = parseFloat(parts[3]);
240
+ if (Number.isFinite(p0) && Number.isFinite(p1) && Number.isFinite(p2) && Number.isFinite(p3)) {
241
+ return cubicBezierY(
242
+ Math.min(1, Math.max(0, p0)),
243
+ p1,
244
+ Math.min(1, Math.max(0, p2)),
245
+ p3,
246
+ clamped
247
+ );
248
+ }
249
+ }
250
+ }
251
+ var steps = /^steps\\(([^)]+)\\)$/.exec(raw);
252
+ if (steps) {
253
+ var stepArgs = steps[1].split(",");
254
+ var count = parseInt(stepArgs[0], 10);
255
+ if (Number.isFinite(count) && count > 0) {
256
+ if (clamped >= 1) return 1;
257
+ var pos = (stepArgs[1] || "").trim();
258
+ var jumpStart = pos === "start" || pos === "jump-start";
259
+ return Math.min(
260
+ 1,
261
+ (Math.floor(clamped * count) + (jumpStart ? 1 : 0)) / count
262
+ );
263
+ }
264
+ }
265
+ if (raw.indexOf("spring") === 0) {
266
+ var spr = parseSpringEase(raw);
267
+ if (spr) return sampleSpringAt(spr[0], spr[1], clamped);
268
+ return clamped;
269
+ }
270
+ if (raw.indexOf("linear(") === 0) {
271
+ var lin = evalCssLinear(raw, clamped);
272
+ if (lin !== null) return lin;
273
+ }
274
+ return clamped;
275
+ }
276
+ function parseSpringEase(raw) {
277
+ if (/^spring$/.test(raw)) return [0.25, 1];
278
+ var m = /^spring\\(\\s*([+-]?[\\d.]+)\\s*(?:,\\s*([+-]?[\\d.]+)\\s*)?\\)$/.exec(
279
+ raw
280
+ );
281
+ if (!m) return null;
282
+ var bounce = parseFloat(m[1]);
283
+ if (!Number.isFinite(bounce)) return null;
284
+ var settle = m[2] === void 0 ? 1 : parseFloat(m[2]);
285
+ if (!Number.isFinite(settle)) return null;
286
+ if (settle < 0.05) settle = 0.05;
287
+ if (settle > 1) settle = 1;
288
+ return [clamp01(bounce), settle];
289
+ }
290
+ function sampleSpringAt(bounce, settle, x) {
291
+ if (x <= 0) return 0;
292
+ var u = x / settle;
293
+ if (u >= 1) return 1;
294
+ var zeta = 1 - clamp01(bounce);
295
+ if (zeta < 0.02) zeta = 0.02;
296
+ if (zeta > 1) zeta = 1;
297
+ var omega = Math.log(1 / 1e-3) / zeta;
298
+ if (zeta >= 1) {
299
+ return 1 - Math.exp(-omega * u) * (1 + omega * u);
300
+ }
301
+ var omegaD = omega * Math.sqrt(1 - zeta * zeta);
302
+ var decay = Math.exp(-zeta * omega * u);
303
+ return 1 - decay * (Math.cos(omegaD * u) + zeta * omega / omegaD * Math.sin(omegaD * u));
304
+ }
305
+ function evalCssLinear(raw, x) {
306
+ var m = /^linear\\(([^)]*)\\)$/.exec(raw);
307
+ if (!m) return null;
308
+ var entries = m[1].split(",");
309
+ var values = [];
310
+ var positions = [];
311
+ for (var i = 0; i < entries.length; i++) {
312
+ var entry = entries[i].trim();
313
+ if (!entry) continue;
314
+ var parts = entry.split(/\\s+/);
315
+ var value = parseFloat(parts[0]);
316
+ if (!Number.isFinite(value)) return null;
317
+ var found = 0;
318
+ for (var j = 1; j < parts.length && j <= 2; j++) {
319
+ if (!/%$/.test(parts[j])) return null;
320
+ var pct = parseFloat(parts[j]);
321
+ if (!Number.isFinite(pct)) return null;
322
+ values.push(value);
323
+ positions.push(pct / 100);
324
+ found++;
325
+ }
326
+ if (found === 0) {
327
+ values.push(value);
328
+ positions.push(null);
329
+ }
330
+ }
331
+ if (values.length < 2) return null;
332
+ if (positions[0] === null) positions[0] = 0;
333
+ if (positions[positions.length - 1] === null) {
334
+ positions[positions.length - 1] = 1;
335
+ }
336
+ var runningMax = positions[0];
337
+ for (var k = 0; k < positions.length; k++) {
338
+ var pos = positions[k];
339
+ if (pos !== null) {
340
+ var clampedPos = pos < runningMax ? runningMax : pos;
341
+ positions[k] = clampedPos;
342
+ runningMax = clampedPos;
343
+ continue;
344
+ }
345
+ var nextIdx = k + 1;
346
+ while (nextIdx < positions.length && positions[nextIdx] === null) {
347
+ nextIdx++;
348
+ }
349
+ var prevPos = runningMax;
350
+ var nextPosRaw = positions[nextIdx];
351
+ var nextPos = nextPosRaw < prevPos ? prevPos : nextPosRaw;
352
+ var span = nextIdx - (k - 1);
353
+ for (var q = k; q < nextIdx; q++) {
354
+ positions[q] = prevPos + (q - (k - 1)) / span * (nextPos - prevPos);
355
+ }
356
+ k = nextIdx - 1;
357
+ runningMax = nextPos;
358
+ }
359
+ var cx = clamp01(x);
360
+ if (cx <= positions[0]) return values[0];
361
+ for (var p = 0; p < values.length - 1; p++) {
362
+ var aPos = positions[p];
363
+ var bPos = positions[p + 1];
364
+ if (cx > bPos) continue;
365
+ if (bPos === aPos) return values[p + 1];
366
+ return values[p] + (values[p + 1] - values[p]) * (cx - aPos) / (bPos - aPos);
367
+ }
368
+ return values[values.length - 1];
369
+ }
370
+ function identityForFunctions(value) {
371
+ var fnRe = /([a-zA-Z][a-zA-Z0-9]*)\\(([^)]*)\\)/g;
372
+ var out = "";
373
+ var lastIndex = 0;
374
+ var matched = false;
375
+ var m;
376
+ while ((m = fnRe.exec(value)) !== null) {
377
+ if (value.slice(lastIndex, m.index).trim() !== "") return null;
378
+ var fn = m[1].toLowerCase();
379
+ var args = m[2];
380
+ var identity = null;
381
+ if (/^translate/.test(fn) || /^skew/.test(fn)) {
382
+ identity = args.replace(/[+-]?(?:\\d+\\.?\\d*|\\.\\d+)([a-z%]*)/gi, "0$1");
383
+ } else if (/^scale/.test(fn)) {
384
+ identity = args.replace(/[+-]?(?:\\d+\\.?\\d*|\\.\\d+)/g, "1");
385
+ } else if (/^rotate/.test(fn) || fn === "hue-rotate") {
386
+ identity = args.replace(/[+-]?(?:\\d+\\.?\\d*|\\.\\d+)([a-z%]*)/gi, "0$1");
387
+ } else if (fn === "matrix") {
388
+ identity = "1, 0, 0, 1, 0, 0";
389
+ } else if (fn === "blur" || fn === "grayscale" || fn === "sepia" || fn === "invert") {
390
+ identity = args.replace(/[+-]?(?:\\d+\\.?\\d*|\\.\\d+)([a-z%]*)/gi, "0$1");
391
+ } else if (fn === "brightness" || fn === "contrast" || fn === "saturate" || fn === "opacity") {
392
+ identity = args.indexOf("%") >= 0 ? "100%" : "1";
393
+ } else {
394
+ return null;
395
+ }
396
+ out += (out ? " " : "") + m[1] + "(" + identity + ")";
397
+ lastIndex = m.index + m[0].length;
398
+ matched = true;
399
+ }
400
+ if (!matched) return null;
401
+ if (value.slice(lastIndex).trim() !== "") return null;
402
+ return out;
403
+ }
404
+ function lerp(a, b, ratio) {
405
+ a = a == null ? "" : String(a);
406
+ b = b == null ? "" : String(b);
407
+ if (a === b) return a;
408
+ if (a.trim() === "none") {
409
+ var identA = identityForFunctions(b);
410
+ if (identA) a = identA;
411
+ } else if (b.trim() === "none") {
412
+ var identB = identityForFunctions(a);
413
+ if (identB) b = identB;
414
+ }
415
+ if (a === b) return a;
416
+ var ca = parseColor(a);
417
+ var cb = parseColor(b);
418
+ if (ca && cb) return formatColor(lerpColorArr(ca, cb, ratio));
419
+ var aSegs = tokenizeSegments(a);
420
+ var bSegs = tokenizeSegments(b);
421
+ if (aSegs && bSegs && aSegs.length === bSegs.length && segShape(aSegs) === segShape(bSegs)) {
422
+ var out = "";
423
+ var ok = true;
424
+ var touched = false;
425
+ for (var k = 0; k < aSegs.length; k++) {
426
+ var seg = aSegs[k];
427
+ if ("lit" in seg) {
428
+ out += seg.lit;
429
+ continue;
430
+ }
431
+ var other = bSegs[k];
432
+ if (!other || !("type" in other) || other.type !== seg.type) {
433
+ ok = false;
434
+ break;
435
+ }
436
+ touched = true;
437
+ if (seg.type === "color" && "value" in seg && "value" in other) {
438
+ out += formatColor(
439
+ lerpColorArr(
440
+ seg.value,
441
+ other.value,
442
+ ratio
443
+ )
444
+ );
445
+ } else if ("value" in seg && "value" in other) {
446
+ var unit = ("unit" in seg ? seg.unit : "") || ("unit" in other ? other.unit : "") || "";
447
+ out += formatNum(
448
+ seg.value + (other.value - seg.value) * ratio
449
+ ) + unit;
450
+ }
451
+ }
452
+ if (ok && touched) return out;
453
+ }
454
+ return ratio < 0.5 ? a : b;
455
+ }
456
+ function interpolate(keyframes, t) {
457
+ if (!keyframes || keyframes.length === 0) return "";
458
+ if (keyframes.length === 1) return keyframes[0].value;
459
+ var prev = keyframes[0];
460
+ var next = keyframes[keyframes.length - 1];
461
+ for (var i = 0; i < keyframes.length - 1; i++) {
462
+ if (t >= keyframes[i].t && t <= keyframes[i + 1].t) {
463
+ prev = keyframes[i];
464
+ next = keyframes[i + 1];
465
+ break;
466
+ }
467
+ }
468
+ var span = next.t - prev.t;
469
+ if (span <= 0) return prev.value;
470
+ var ratio = Math.max(0, Math.min(1, (t - prev.t) / span));
471
+ var kfEase = prev.ease == null ? loadedDefaultEase : prev.ease;
472
+ var eased = evalEase(kfEase, ratio);
473
+ return lerp(prev.value, next.value, eased);
474
+ }
475
+ function trackLocalT(track, t) {
476
+ var delay = typeof track.delayMs === "number" && track.delayMs > 0 ? track.delayMs : 0;
477
+ var dur = typeof track.durationMs === "number" && track.durationMs > 0 ? track.durationMs : null;
478
+ if (loadedTimelineDurationMs === null || delay === 0 && dur === null) {
479
+ return t;
480
+ }
481
+ var timeMs = t * loadedTimelineDurationMs;
482
+ var span = dur === null ? loadedTimelineDurationMs : dur;
483
+ if (span <= 0) return 0;
484
+ var local = (timeMs - delay) / span;
485
+ return local < 0 ? 0 : local > 1 ? 1 : local;
486
+ }
487
+ function applyPreview(t) {
488
+ for (var i = 0; i < loadedTracks.length; i++) {
489
+ var track = loadedTracks[i];
490
+ var el = resolveTrackElement(track.targetNodeId);
491
+ if (!el) continue;
492
+ var value = interpolate(track.keyframes, trackLocalT(track, t));
493
+ if (value === "") continue;
494
+ var prop = camelizeProp(track.property);
495
+ if (!originalInlineValues[track.targetNodeId])
496
+ originalInlineValues[track.targetNodeId] = {};
497
+ if (!(prop in originalInlineValues[track.targetNodeId])) {
498
+ originalInlineValues[track.targetNodeId][prop] = el.style[prop] || "";
499
+ }
500
+ el.style[prop] = value;
501
+ if (!touchedProps[track.targetNodeId])
502
+ touchedProps[track.targetNodeId] = [];
503
+ if (touchedProps[track.targetNodeId].indexOf(prop) === -1) {
504
+ touchedProps[track.targetNodeId].push(prop);
505
+ }
506
+ }
507
+ }
508
+ function clearPreview() {
509
+ var nodeIds = Object.keys(touchedProps);
510
+ for (var i = 0; i < nodeIds.length; i++) {
511
+ var el = resolveTrackElement(nodeIds[i]);
512
+ if (!el) continue;
513
+ var props = touchedProps[nodeIds[i]];
514
+ for (var j = 0; j < props.length; j++) {
515
+ var originals = originalInlineValues[nodeIds[i]] || {};
516
+ el.style[props[j]] = Object.prototype.hasOwnProperty.call(originals, props[j]) ? originals[props[j]] : "";
517
+ }
518
+ }
519
+ touchedProps = {};
520
+ originalInlineValues = {};
521
+ loadedTracks = [];
522
+ loadedDefaultEase = "ease";
523
+ loadedTimelineDurationMs = null;
524
+ elementCache = {};
525
+ }
526
+ var lastPreviewT = null;
527
+ window.addEventListener("message", function(e) {
528
+ if (e.source !== window.parent) return;
529
+ if (!e.data || typeof e.data.type !== "string") return;
530
+ if (e.data.type === "motion-load-tracks") {
531
+ clearPreview();
532
+ loadedTracks = Array.isArray(e.data.tracks) ? e.data.tracks : [];
533
+ loadedDefaultEase = typeof e.data.defaultEase === "string" && e.data.defaultEase ? e.data.defaultEase : "ease";
534
+ var loadDur = Number(e.data.durationMs);
535
+ if (Number.isFinite(loadDur) && loadDur > 0) {
536
+ loadedTimelineDurationMs = loadDur;
537
+ }
538
+ for (var i = 0; i < loadedTracks.length; i++) {
539
+ var kfs = loadedTracks[i] && loadedTracks[i].keyframes;
540
+ if (Array.isArray(kfs)) {
541
+ kfs.sort(function(a, b) {
542
+ return (a && a.t) - (b && b.t);
543
+ });
544
+ }
545
+ }
546
+ if (lastPreviewT !== null && loadedTracks.length > 0) {
547
+ applyPreview(lastPreviewT);
548
+ }
549
+ return;
550
+ }
551
+ if (e.data.type === "motion-preview") {
552
+ var t = Number(e.data.t);
553
+ if (!Number.isFinite(t)) return;
554
+ t = Math.max(0, Math.min(1, t));
555
+ var tickDur = Number(e.data.durationMs);
556
+ if (Number.isFinite(tickDur) && tickDur > 0) {
557
+ loadedTimelineDurationMs = tickDur;
558
+ }
559
+ lastPreviewT = t;
560
+ applyPreview(t);
561
+ return;
562
+ }
563
+ if (e.data.type === "motion-preview-clear") {
564
+ clearPreview();
565
+ lastPreviewT = null;
566
+ return;
567
+ }
568
+ });
569
+ })();
570
+ })();
571
+ `;
@@ -0,0 +1,91 @@
1
+ // AUTO-GENERATED by bridge/codegen.ts — do not edit manually.
2
+ // Run: pnpm exec tsx app/components/design/bridge/codegen.ts
3
+
4
+ /** Compiled IIFE string for nav.bridge.ts — inject into an iframe via srcdoc or a <script> tag. */
5
+ export const navBridgeScript: string = `"use strict";
6
+ (() => {
7
+ // app/components/design/bridge/nav.bridge.ts
8
+ (function() {
9
+ function classify(href) {
10
+ var h = (href || "").trim();
11
+ if (!h) return null;
12
+ var lower = h.toLowerCase();
13
+ if (lower.charAt(0) === "#") return null;
14
+ if (lower.indexOf("javascript:") === 0) return null;
15
+ if (lower.indexOf("mailto:") === 0 || lower.indexOf("tel:") === 0) {
16
+ return { external: true, href: h };
17
+ }
18
+ if (/^https?:\\/\\//i.test(h) || /^\\/\\//.test(h)) {
19
+ return { external: true, href: h };
20
+ }
21
+ var screen = h.replace(/^\\.?\\//, "").split(/[?#]/)[0];
22
+ return { external: false, href: h, screen };
23
+ }
24
+ document.addEventListener(
25
+ "click",
26
+ function(e) {
27
+ var t = e.target;
28
+ if (!t || !t.closest) return;
29
+ var a = t.closest("a[href], [data-screen]");
30
+ if (!a) return;
31
+ var ds = a.getAttribute && a.getAttribute("data-screen");
32
+ if (!ds) {
33
+ var rawHref = a.getAttribute("href");
34
+ if (rawHref != null) {
35
+ var hh = rawHref.trim();
36
+ if (hh === "" || hh.charAt(0) === "#") {
37
+ e.preventDefault();
38
+ var fid = hh.charAt(0) === "#" ? hh.slice(1) : "";
39
+ var tgt = fid ? document.getElementById(fid) : null;
40
+ if (tgt && tgt.scrollIntoView) {
41
+ tgt.scrollIntoView({ behavior: "smooth", block: "start" });
42
+ } else {
43
+ window.scrollTo({ top: 0, behavior: "smooth" });
44
+ }
45
+ return;
46
+ }
47
+ }
48
+ }
49
+ var info = ds ? {
50
+ external: false,
51
+ href: ds,
52
+ screen: ds.replace(/^\\.?\\//, "").split(/[?#]/)[0]
53
+ } : classify(a.getAttribute("href") || "");
54
+ if (!info) return;
55
+ if (info.external) {
56
+ try {
57
+ a.setAttribute("target", "_blank");
58
+ a.setAttribute("rel", "noopener noreferrer");
59
+ } catch (_err) {
60
+ }
61
+ return;
62
+ }
63
+ e.preventDefault();
64
+ try {
65
+ window.parent.postMessage(
66
+ {
67
+ type: "prototype-navigate",
68
+ href: info.href,
69
+ screen: info.screen || ""
70
+ },
71
+ "*"
72
+ );
73
+ } catch (_err) {
74
+ }
75
+ },
76
+ true
77
+ );
78
+ document.addEventListener(
79
+ "submit",
80
+ function(e) {
81
+ var f = e.target;
82
+ if (!f || f.tagName !== "FORM") return;
83
+ var action = f.getAttribute("action") || "";
84
+ if (/^https?:\\/\\//i.test(action)) return;
85
+ e.preventDefault();
86
+ },
87
+ true
88
+ );
89
+ })();
90
+ })();
91
+ `;
@@ -0,0 +1,23 @@
1
+ // AUTO-GENERATED by bridge/codegen.ts — do not edit manually.
2
+ // Run: pnpm exec tsx app/components/design/bridge/codegen.ts
3
+
4
+ /** Compiled IIFE string for sample.bridge.ts — inject into an iframe via srcdoc or a <script> tag. */
5
+ export const sampleBridgeScript: string = `"use strict";
6
+ (() => {
7
+ // app/components/design/bridge/sample.bridge.ts
8
+ (function() {
9
+ window.addEventListener("message", function(e) {
10
+ if (e.source !== window.parent) return;
11
+ if (!e.data || e.data.type !== "agent-native:sample-ping") return;
12
+ var correlationId = e.data.correlationId ?? "";
13
+ try {
14
+ window.parent.postMessage(
15
+ { type: "agent-native:sample-pong", correlationId },
16
+ "*"
17
+ );
18
+ } catch (_err) {
19
+ }
20
+ });
21
+ })();
22
+ })();
23
+ `;