@agent-native/core 0.98.4 → 0.98.6

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 (314) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +28 -0
  3. package/corpus/core/docs/content/durable-background-runs.mdx +37 -0
  4. package/corpus/core/docs/content/external-agents.mdx +62 -7
  5. package/corpus/core/docs/content/locales/ar-SA/external-agents.mdx +38 -7
  6. package/corpus/core/docs/content/locales/ar-SA/tracking.mdx +2 -0
  7. package/corpus/core/docs/content/locales/de-DE/external-agents.mdx +39 -7
  8. package/corpus/core/docs/content/locales/de-DE/tracking.mdx +2 -0
  9. package/corpus/core/docs/content/locales/es-ES/external-agents.mdx +39 -7
  10. package/corpus/core/docs/content/locales/es-ES/tracking.mdx +2 -0
  11. package/corpus/core/docs/content/locales/fr-FR/external-agents.mdx +39 -7
  12. package/corpus/core/docs/content/locales/fr-FR/tracking.mdx +4 -2
  13. package/corpus/core/docs/content/locales/hi-IN/external-agents.mdx +38 -7
  14. package/corpus/core/docs/content/locales/hi-IN/tracking.mdx +2 -0
  15. package/corpus/core/docs/content/locales/ja-JP/external-agents.mdx +38 -7
  16. package/corpus/core/docs/content/locales/ja-JP/tracking.mdx +2 -0
  17. package/corpus/core/docs/content/locales/ko-KR/external-agents.mdx +38 -7
  18. package/corpus/core/docs/content/locales/ko-KR/tracking.mdx +2 -0
  19. package/corpus/core/docs/content/locales/pt-BR/external-agents.mdx +39 -7
  20. package/corpus/core/docs/content/locales/pt-BR/tracking.mdx +2 -0
  21. package/corpus/core/docs/content/locales/zh-CN/external-agents.mdx +37 -7
  22. package/corpus/core/docs/content/locales/zh-CN/tracking.mdx +2 -0
  23. package/corpus/core/docs/content/locales/zh-TW/durable-background-runs.mdx +14 -0
  24. package/corpus/core/docs/content/locales/zh-TW/external-agents.mdx +37 -7
  25. package/corpus/core/docs/content/locales/zh-TW/tracking.mdx +2 -0
  26. package/corpus/core/docs/content/tracking.mdx +2 -0
  27. package/corpus/core/package.json +1 -1
  28. package/corpus/core/src/a2a/handlers.ts +95 -21
  29. package/corpus/core/src/a2a/task-store.ts +65 -3
  30. package/corpus/core/src/agent/durable-background.ts +16 -16
  31. package/corpus/core/src/agent/engine/ai-sdk-engine.ts +25 -8
  32. package/corpus/core/src/agent/engine/anthropic-engine.ts +17 -3
  33. package/corpus/core/src/agent/engine/output-tokens.ts +6 -6
  34. package/corpus/core/src/agent/production-agent.ts +200 -27
  35. package/corpus/core/src/agent/run-manager.ts +81 -1
  36. package/corpus/core/src/agent/run-store.ts +301 -41
  37. package/corpus/core/src/client/AgentPanel.tsx +6 -2
  38. package/corpus/core/src/client/AssistantChat.tsx +364 -69
  39. package/corpus/core/src/client/agent-chat-adapter.ts +169 -1
  40. package/corpus/core/src/client/chat/message-components.tsx +3 -0
  41. package/corpus/core/src/client/chat/tool-call-display.tsx +20 -36
  42. package/corpus/core/src/client/conversation/use-near-bottom-autoscroll.ts +7 -0
  43. package/corpus/core/src/client/extensions/AgentNativeExtensionFrame.tsx +2 -0
  44. package/corpus/core/src/client/extensions/EmbeddedExtension.tsx +2 -0
  45. package/corpus/core/src/client/extensions/ExtensionEditor.tsx +9 -2
  46. package/corpus/core/src/client/extensions/ExtensionViewer.tsx +2 -0
  47. package/corpus/core/src/client/extensions/InlineExtensionFrame.tsx +2 -0
  48. package/corpus/core/src/client/extensions/portable-extension.ts +2 -0
  49. package/corpus/core/src/client/session-replay.ts +361 -29
  50. package/corpus/core/src/client/sse-event-processor.ts +43 -1
  51. package/corpus/core/src/demo/actions/toggle-demo-mode.ts +1 -1
  52. package/corpus/core/src/demo/config.ts +6 -6
  53. package/corpus/core/src/demo/fetch-interceptor.ts +13 -4
  54. package/corpus/core/src/demo/redact.ts +13 -149
  55. package/corpus/core/src/extensions/html-shell.ts +3 -0
  56. package/corpus/core/src/extensions/session-replay-iframe.ts +131 -0
  57. package/corpus/core/src/integrations/adapters/slack.ts +123 -13
  58. package/corpus/core/src/integrations/identity-links-store.ts +210 -0
  59. package/corpus/core/src/integrations/identity.ts +132 -0
  60. package/corpus/core/src/integrations/index.ts +6 -0
  61. package/corpus/core/src/integrations/plugin.ts +58 -1
  62. package/corpus/core/src/integrations/types.ts +7 -0
  63. package/corpus/core/src/mcp/build-server.ts +127 -22
  64. package/corpus/core/src/mcp/external-agent-policy.ts +18 -0
  65. package/corpus/core/src/mcp/index.ts +1 -0
  66. package/corpus/core/src/scripts/agent-engines/list-agent-engines.ts +1 -20
  67. package/corpus/core/src/server/agent-chat/plugin-options.ts +12 -1
  68. package/corpus/core/src/server/agent-chat/script-entries.ts +20 -3
  69. package/corpus/core/src/server/agent-chat-plugin.ts +3 -0
  70. package/corpus/core/src/session-replay-iframe-protocol.ts +58 -0
  71. package/corpus/core/src/shared/reasoning-effort.ts +35 -0
  72. package/corpus/core/src/styles/agent-conversation.css +26 -0
  73. package/corpus/core/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +34 -5
  74. package/corpus/core/src/templates/workspace-core/.agents/skills/observability/SKILL.md +0 -15
  75. package/corpus/templates/analytics/.agents/skills/session-replay/SKILL.md +30 -21
  76. package/corpus/templates/analytics/AGENTS.md +27 -0
  77. package/corpus/templates/analytics/actions/create-session-replay-agent-link.ts +0 -1
  78. package/corpus/templates/analytics/actions/get-error-issue.ts +1 -0
  79. package/corpus/templates/analytics/actions/get-session-replay-summary.ts +1 -0
  80. package/corpus/templates/analytics/actions/get-session-replay-timeline.ts +40 -0
  81. package/corpus/templates/analytics/actions/list-error-issues.ts +13 -0
  82. package/corpus/templates/analytics/actions/list-session-recordings.ts +1 -0
  83. package/corpus/templates/analytics/actions/query-agent-native-analytics.ts +4 -0
  84. package/corpus/templates/analytics/app/global.css +2 -2
  85. package/corpus/templates/analytics/app/hooks/use-dashboard-chat-context.ts +41 -4
  86. package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +52 -203
  87. package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +69 -16
  88. package/corpus/templates/analytics/changelog/2026-07-12-analytics-chat-retries-before-showing-a-generic-no-data-mess.md +6 -0
  89. package/corpus/templates/analytics/changelog/2026-07-12-analytics-sessions-search-no-longer-loses-fast-keystrokes-an.md +6 -0
  90. package/corpus/templates/analytics/changelog/2026-07-12-chart-selection-respects-chat-state.md +6 -0
  91. package/corpus/templates/analytics/changelog/2026-07-12-connected-external-agents-can-now-look-up-sessions-error-iss.md +6 -0
  92. package/corpus/templates/analytics/changelog/2026-07-12-demo-mode-anonymizes-error-reporting-emails.md +6 -0
  93. package/corpus/templates/analytics/changelog/2026-07-12-session-identities-stay-visible-when-demo-mode-is-off.md +6 -0
  94. package/corpus/templates/analytics/changelog/2026-07-12-session-replays-show-iframe-content.md +6 -0
  95. package/corpus/templates/analytics/netlify.toml +0 -3
  96. package/corpus/templates/analytics/server/lib/analytics-connector-catalog.ts +14 -0
  97. package/corpus/templates/analytics/server/lib/error-capture.ts +101 -2
  98. package/corpus/templates/analytics/server/lib/real-data-actions.ts +24 -0
  99. package/corpus/templates/analytics/server/lib/session-replay-agent-context.ts +49 -17
  100. package/corpus/templates/analytics/server/lib/session-replay.ts +18 -16
  101. package/corpus/templates/analytics/server/plugins/agent-chat.ts +43 -6
  102. package/corpus/templates/analytics/server/plugins/db.ts +15 -0
  103. package/corpus/templates/assets/app/global.css +1 -1
  104. package/corpus/templates/brain/app/global.css +2 -2
  105. package/corpus/templates/brain/changelog/2026-07-12-fix-long-response-progress.md +6 -0
  106. package/corpus/templates/forms/app/components/CloudUpgrade.tsx +1 -1
  107. package/corpus/templates/forms/app/components/ThemeToggle.tsx +22 -6
  108. package/corpus/templates/forms/app/components/builder/FieldPropertiesPanel.tsx +5 -5
  109. package/corpus/templates/forms/app/components/builder/FieldRenderer.tsx +3 -3
  110. package/corpus/templates/forms/app/components/layout/Sidebar.tsx +16 -16
  111. package/corpus/templates/forms/app/global.css +164 -13
  112. package/corpus/templates/forms/app/pages/AskPage.tsx +35 -13
  113. package/corpus/templates/forms/app/pages/FormBuilderPage.tsx +143 -67
  114. package/corpus/templates/forms/app/pages/FormFillPage.tsx +44 -11
  115. package/corpus/templates/forms/app/pages/FormsListPage.tsx +42 -24
  116. package/corpus/templates/forms/app/pages/ResponseInsightsPage.tsx +28 -15
  117. package/corpus/templates/forms/app/pages/ResponsesPage.tsx +46 -20
  118. package/corpus/templates/forms/app/routes/_app.settings.tsx +1 -1
  119. package/corpus/templates/forms/changelog/2026-07-12-ask-forms-suggestions-now-sit-beneath-the-composer-for-a-tig.md +6 -0
  120. package/corpus/templates/forms/changelog/2026-07-12-builder-response-tables-now-fill-the-view-without-a-redundan.md +6 -0
  121. package/corpus/templates/forms/changelog/2026-07-12-form-builder-surfaces-are-calmer-fields-stay-stable-on-hover.md +6 -0
  122. package/corpus/templates/forms/changelog/2026-07-12-response-tables-now-fill-the-available-pane-with-a-flexible-.md +6 -0
  123. package/corpus/templates/forms/changelog/2026-07-12-smoother-more-tactile-controls-throughout-animated-icon-and-.md +6 -0
  124. package/corpus/templates/mail/AGENTS.md +3 -1
  125. package/corpus/templates/mail/app/components/email/EmailThread.tsx +21 -13
  126. package/corpus/templates/mail/app/components/email/email-iframe-document.ts +18 -0
  127. package/corpus/templates/mail/server/lib/mail-integrations.ts +3 -0
  128. package/dist/a2a/handlers.d.ts.map +1 -1
  129. package/dist/a2a/handlers.js +84 -15
  130. package/dist/a2a/handlers.js.map +1 -1
  131. package/dist/a2a/task-store.d.ts +20 -1
  132. package/dist/a2a/task-store.d.ts.map +1 -1
  133. package/dist/a2a/task-store.js +57 -4
  134. package/dist/a2a/task-store.js.map +1 -1
  135. package/dist/agent/durable-background.d.ts +10 -10
  136. package/dist/agent/durable-background.d.ts.map +1 -1
  137. package/dist/agent/durable-background.js +16 -16
  138. package/dist/agent/durable-background.js.map +1 -1
  139. package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
  140. package/dist/agent/engine/ai-sdk-engine.js +19 -8
  141. package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
  142. package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
  143. package/dist/agent/engine/anthropic-engine.js +11 -3
  144. package/dist/agent/engine/anthropic-engine.js.map +1 -1
  145. package/dist/agent/engine/output-tokens.js +6 -6
  146. package/dist/agent/engine/output-tokens.js.map +1 -1
  147. package/dist/agent/production-agent.d.ts +52 -0
  148. package/dist/agent/production-agent.d.ts.map +1 -1
  149. package/dist/agent/production-agent.js +154 -26
  150. package/dist/agent/production-agent.js.map +1 -1
  151. package/dist/agent/run-manager.d.ts +9 -0
  152. package/dist/agent/run-manager.d.ts.map +1 -1
  153. package/dist/agent/run-manager.js +71 -1
  154. package/dist/agent/run-manager.js.map +1 -1
  155. package/dist/agent/run-store.d.ts +9 -0
  156. package/dist/agent/run-store.d.ts.map +1 -1
  157. package/dist/agent/run-store.js +243 -48
  158. package/dist/agent/run-store.js.map +1 -1
  159. package/dist/client/AgentPanel.d.ts.map +1 -1
  160. package/dist/client/AgentPanel.js +6 -2
  161. package/dist/client/AgentPanel.js.map +1 -1
  162. package/dist/client/AssistantChat.d.ts +21 -0
  163. package/dist/client/AssistantChat.d.ts.map +1 -1
  164. package/dist/client/AssistantChat.js +298 -67
  165. package/dist/client/AssistantChat.js.map +1 -1
  166. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  167. package/dist/client/agent-chat-adapter.js +146 -1
  168. package/dist/client/agent-chat-adapter.js.map +1 -1
  169. package/dist/client/chat/message-components.d.ts.map +1 -1
  170. package/dist/client/chat/message-components.js +2 -1
  171. package/dist/client/chat/message-components.js.map +1 -1
  172. package/dist/client/chat/tool-call-display.d.ts +3 -1
  173. package/dist/client/chat/tool-call-display.d.ts.map +1 -1
  174. package/dist/client/chat/tool-call-display.js +13 -37
  175. package/dist/client/chat/tool-call-display.js.map +1 -1
  176. package/dist/client/conversation/use-near-bottom-autoscroll.d.ts +1 -0
  177. package/dist/client/conversation/use-near-bottom-autoscroll.d.ts.map +1 -1
  178. package/dist/client/conversation/use-near-bottom-autoscroll.js +6 -0
  179. package/dist/client/conversation/use-near-bottom-autoscroll.js.map +1 -1
  180. package/dist/client/extensions/AgentNativeExtensionFrame.d.ts.map +1 -1
  181. package/dist/client/extensions/AgentNativeExtensionFrame.js +2 -1
  182. package/dist/client/extensions/AgentNativeExtensionFrame.js.map +1 -1
  183. package/dist/client/extensions/EmbeddedExtension.d.ts.map +1 -1
  184. package/dist/client/extensions/EmbeddedExtension.js +2 -1
  185. package/dist/client/extensions/EmbeddedExtension.js.map +1 -1
  186. package/dist/client/extensions/ExtensionEditor.d.ts.map +1 -1
  187. package/dist/client/extensions/ExtensionEditor.js +5 -2
  188. package/dist/client/extensions/ExtensionEditor.js.map +1 -1
  189. package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
  190. package/dist/client/extensions/ExtensionViewer.js +2 -1
  191. package/dist/client/extensions/ExtensionViewer.js.map +1 -1
  192. package/dist/client/extensions/InlineExtensionFrame.d.ts.map +1 -1
  193. package/dist/client/extensions/InlineExtensionFrame.js +2 -1
  194. package/dist/client/extensions/InlineExtensionFrame.js.map +1 -1
  195. package/dist/client/extensions/portable-extension.d.ts.map +1 -1
  196. package/dist/client/extensions/portable-extension.js +2 -0
  197. package/dist/client/extensions/portable-extension.js.map +1 -1
  198. package/dist/client/session-replay.d.ts.map +1 -1
  199. package/dist/client/session-replay.js +308 -29
  200. package/dist/client/session-replay.js.map +1 -1
  201. package/dist/client/sse-event-processor.d.ts +5 -0
  202. package/dist/client/sse-event-processor.d.ts.map +1 -1
  203. package/dist/client/sse-event-processor.js +37 -1
  204. package/dist/client/sse-event-processor.js.map +1 -1
  205. package/dist/collab/routes.d.ts +1 -1
  206. package/dist/demo/actions/toggle-demo-mode.js +1 -1
  207. package/dist/demo/actions/toggle-demo-mode.js.map +1 -1
  208. package/dist/demo/config.js +6 -6
  209. package/dist/demo/config.js.map +1 -1
  210. package/dist/demo/fetch-interceptor.d.ts.map +1 -1
  211. package/dist/demo/fetch-interceptor.js +13 -4
  212. package/dist/demo/fetch-interceptor.js.map +1 -1
  213. package/dist/demo/redact.d.ts +7 -7
  214. package/dist/demo/redact.d.ts.map +1 -1
  215. package/dist/demo/redact.js +8 -145
  216. package/dist/demo/redact.js.map +1 -1
  217. package/dist/extensions/html-shell.d.ts.map +1 -1
  218. package/dist/extensions/html-shell.js +2 -0
  219. package/dist/extensions/html-shell.js.map +1 -1
  220. package/dist/extensions/session-replay-iframe.d.ts +10 -0
  221. package/dist/extensions/session-replay-iframe.d.ts.map +1 -0
  222. package/dist/extensions/session-replay-iframe.js +121 -0
  223. package/dist/extensions/session-replay-iframe.js.map +1 -0
  224. package/dist/file-upload/actions/upload-image.d.ts +1 -1
  225. package/dist/integrations/adapters/slack.d.ts.map +1 -1
  226. package/dist/integrations/adapters/slack.js +98 -13
  227. package/dist/integrations/adapters/slack.js.map +1 -1
  228. package/dist/integrations/identity-links-store.d.ts +23 -0
  229. package/dist/integrations/identity-links-store.d.ts.map +1 -0
  230. package/dist/integrations/identity-links-store.js +158 -0
  231. package/dist/integrations/identity-links-store.js.map +1 -0
  232. package/dist/integrations/identity.d.ts +11 -0
  233. package/dist/integrations/identity.d.ts.map +1 -0
  234. package/dist/integrations/identity.js +100 -0
  235. package/dist/integrations/identity.js.map +1 -0
  236. package/dist/integrations/index.d.ts +2 -0
  237. package/dist/integrations/index.d.ts.map +1 -1
  238. package/dist/integrations/index.js +2 -0
  239. package/dist/integrations/index.js.map +1 -1
  240. package/dist/integrations/plugin.d.ts.map +1 -1
  241. package/dist/integrations/plugin.js +43 -1
  242. package/dist/integrations/plugin.js.map +1 -1
  243. package/dist/integrations/types.d.ts +6 -0
  244. package/dist/integrations/types.d.ts.map +1 -1
  245. package/dist/integrations/types.js.map +1 -1
  246. package/dist/mcp/build-server.d.ts +9 -2
  247. package/dist/mcp/build-server.d.ts.map +1 -1
  248. package/dist/mcp/build-server.js +97 -20
  249. package/dist/mcp/build-server.js.map +1 -1
  250. package/dist/mcp/external-agent-policy.d.ts +19 -0
  251. package/dist/mcp/external-agent-policy.d.ts.map +1 -0
  252. package/dist/mcp/external-agent-policy.js +2 -0
  253. package/dist/mcp/external-agent-policy.js.map +1 -0
  254. package/dist/mcp/index.d.ts +1 -0
  255. package/dist/mcp/index.d.ts.map +1 -1
  256. package/dist/mcp/index.js.map +1 -1
  257. package/dist/notifications/routes.d.ts +1 -1
  258. package/dist/scripts/agent-engines/list-agent-engines.d.ts.map +1 -1
  259. package/dist/scripts/agent-engines/list-agent-engines.js +1 -19
  260. package/dist/scripts/agent-engines/list-agent-engines.js.map +1 -1
  261. package/dist/server/agent-chat/plugin-options.d.ts +11 -1
  262. package/dist/server/agent-chat/plugin-options.d.ts.map +1 -1
  263. package/dist/server/agent-chat/plugin-options.js.map +1 -1
  264. package/dist/server/agent-chat/script-entries.d.ts.map +1 -1
  265. package/dist/server/agent-chat/script-entries.js +16 -2
  266. package/dist/server/agent-chat/script-entries.js.map +1 -1
  267. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  268. package/dist/server/agent-chat-plugin.js +3 -0
  269. package/dist/server/agent-chat-plugin.js.map +1 -1
  270. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  271. package/dist/server/transcribe-voice.d.ts +1 -1
  272. package/dist/session-replay-iframe-protocol.d.ts +36 -0
  273. package/dist/session-replay-iframe-protocol.d.ts.map +1 -0
  274. package/dist/session-replay-iframe-protocol.js +24 -0
  275. package/dist/session-replay-iframe-protocol.js.map +1 -0
  276. package/dist/shared/reasoning-effort.d.ts +11 -0
  277. package/dist/shared/reasoning-effort.d.ts.map +1 -1
  278. package/dist/shared/reasoning-effort.js +36 -0
  279. package/dist/shared/reasoning-effort.js.map +1 -1
  280. package/dist/styles/agent-conversation.css +26 -0
  281. package/dist/templates/workspace-core/.agents/skills/external-agents/SKILL.md +34 -5
  282. package/dist/templates/workspace-core/.agents/skills/observability/SKILL.md +0 -15
  283. package/docs/content/durable-background-runs.mdx +37 -0
  284. package/docs/content/external-agents.mdx +62 -7
  285. package/docs/content/locales/ar-SA/external-agents.mdx +38 -7
  286. package/docs/content/locales/ar-SA/tracking.mdx +2 -0
  287. package/docs/content/locales/de-DE/external-agents.mdx +39 -7
  288. package/docs/content/locales/de-DE/tracking.mdx +2 -0
  289. package/docs/content/locales/es-ES/external-agents.mdx +39 -7
  290. package/docs/content/locales/es-ES/tracking.mdx +2 -0
  291. package/docs/content/locales/fr-FR/external-agents.mdx +39 -7
  292. package/docs/content/locales/fr-FR/tracking.mdx +4 -2
  293. package/docs/content/locales/hi-IN/external-agents.mdx +38 -7
  294. package/docs/content/locales/hi-IN/tracking.mdx +2 -0
  295. package/docs/content/locales/ja-JP/external-agents.mdx +38 -7
  296. package/docs/content/locales/ja-JP/tracking.mdx +2 -0
  297. package/docs/content/locales/ko-KR/external-agents.mdx +38 -7
  298. package/docs/content/locales/ko-KR/tracking.mdx +2 -0
  299. package/docs/content/locales/pt-BR/external-agents.mdx +39 -7
  300. package/docs/content/locales/pt-BR/tracking.mdx +2 -0
  301. package/docs/content/locales/zh-CN/external-agents.mdx +37 -7
  302. package/docs/content/locales/zh-CN/tracking.mdx +2 -0
  303. package/docs/content/locales/zh-TW/durable-background-runs.mdx +14 -0
  304. package/docs/content/locales/zh-TW/external-agents.mdx +37 -7
  305. package/docs/content/locales/zh-TW/tracking.mdx +2 -0
  306. package/docs/content/tracking.mdx +2 -0
  307. package/package.json +2 -2
  308. package/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +34 -5
  309. package/src/templates/workspace-core/.agents/skills/observability/SKILL.md +0 -15
  310. package/corpus/core/src/observability/hosted-model-experiment.ts +0 -118
  311. package/dist/observability/hosted-model-experiment.d.ts +0 -39
  312. package/dist/observability/hosted-model-experiment.d.ts.map +0 -1
  313. package/dist/observability/hosted-model-experiment.js +0 -90
  314. package/dist/observability/hosted-model-experiment.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"InlineExtensionFrame.js","sourceRoot":"","sources":["../../../src/client/extensions/InlineExtensionFrame.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { buildExtensionHtml } from \"../../extensions/html-shell.js\";\nimport { getThemeVars } from \"../../extensions/theme.js\";\nimport { sendToAgentChat } from \"../agent-chat.js\";\nimport { agentNativePath } from \"../api-path.js\";\nimport {\n isAllowedExtensionPath,\n sanitizeExtensionRequestOptions,\n checkBridgePolicy,\n type BridgePolicyContext,\n type ExtensionBridgeRole,\n} from \"./iframe-bridge.js\";\nimport { normalizeAgentNativeExtensionSandbox } from \"./portable-extension.js\";\n\nconst THEME_CSS_VARS = [\n \"--background\",\n \"--foreground\",\n \"--card\",\n \"--card-foreground\",\n \"--popover\",\n \"--popover-foreground\",\n \"--primary\",\n \"--primary-foreground\",\n \"--secondary\",\n \"--secondary-foreground\",\n \"--muted\",\n \"--muted-foreground\",\n \"--accent\",\n \"--accent-foreground\",\n \"--destructive\",\n \"--destructive-foreground\",\n \"--border\",\n \"--input\",\n \"--ring\",\n \"--radius\",\n \"--sidebar-background\",\n \"--sidebar-foreground\",\n \"--sidebar-primary\",\n \"--sidebar-primary-foreground\",\n \"--sidebar-accent\",\n \"--sidebar-accent-foreground\",\n \"--sidebar-border\",\n \"--sidebar-ring\",\n];\n\nconst EXTENSION_IFRAME_SANDBOX =\n normalizeAgentNativeExtensionSandbox(undefined);\n\ninterface InlineExtensionSource {\n mode?: \"database\" | \"local-files\";\n permissions?: BridgePolicyContext[\"permissions\"];\n}\n\nexport interface InlineExtensionDefinition {\n id: string;\n name: string;\n description?: string;\n content?: string;\n updatedAt?: string;\n mode?: \"transient\" | \"persisted\";\n source?: InlineExtensionSource;\n}\n\nexport interface InlineExtensionFrameProps {\n extensionId?: string;\n extension?: InlineExtensionDefinition;\n slotId?: string;\n context?: Record<string, unknown> | null;\n className?: string;\n initialHeight?: number;\n}\n\nfunction getParentThemeVars(): Record<string, string> {\n if (typeof document === \"undefined\") return {};\n const computed = getComputedStyle(document.documentElement);\n const vars: Record<string, string> = {};\n for (const name of THEME_CSS_VARS) {\n const val = computed.getPropertyValue(name).trim();\n if (val) vars[name] = val;\n }\n return vars;\n}\n\nfunction normalizeRole(value: unknown): ExtensionBridgeRole {\n return value === \"owner\" ||\n value === \"admin\" ||\n value === \"editor\" ||\n value === \"viewer\"\n ? value\n : \"viewer\";\n}\n\nfunction serializeChatValue(value: unknown): string | undefined {\n if (value === undefined || value === null) return undefined;\n if (typeof value === \"string\") return value;\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n\nfunction transientDataKey(\n extensionId: string,\n collection: string,\n scope: string,\n): string {\n return `agent-native:inline-extension-data:${extensionId}:${scope}:${collection}`;\n}\n\ninterface TransientDataRow {\n id: string;\n extensionId: string;\n toolId: string;\n collection: string;\n data: string;\n ownerEmail: string;\n scope: string;\n orgId: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nfunction readTransientRows(\n extensionId: string,\n collection: string,\n scope: string,\n): TransientDataRow[] {\n if (typeof localStorage === \"undefined\") return [];\n try {\n const parsed = JSON.parse(\n localStorage.getItem(transientDataKey(extensionId, collection, scope)) ??\n \"[]\",\n );\n return Array.isArray(parsed) ? parsed : [];\n } catch {\n return [];\n }\n}\n\nfunction writeTransientRows(\n extensionId: string,\n collection: string,\n scope: string,\n rows: TransientDataRow[],\n): void {\n if (typeof localStorage === \"undefined\") return;\n localStorage.setItem(\n transientDataKey(extensionId, collection, scope),\n JSON.stringify(rows),\n );\n}\n\nfunction parseTransientDataPath(\n extensionId: string,\n path: string,\n): { collection: string; itemId?: string; scope: string } | null {\n try {\n const url = new URL(path, \"http://agent-native.local\");\n const parts = url.pathname.split(\"/\");\n if (\n parts.length < 6 ||\n parts.length > 7 ||\n parts[1] !== \"_agent-native\" ||\n parts[2] !== \"extensions\" ||\n parts[3] !== \"data\" ||\n decodeURIComponent(parts[4]) !== extensionId\n ) {\n return null;\n }\n return {\n collection: decodeURIComponent(parts[5] ?? \"\"),\n itemId: parts[6] ? decodeURIComponent(parts[6]) : undefined,\n scope: url.searchParams.get(\"scope\") || \"user\",\n };\n } catch {\n return null;\n }\n}\n\nasync function handleTransientExtensionData(\n extensionId: string,\n path: string,\n options: RequestInit,\n): Promise<Record<string, unknown> | null> {\n const parsed = parseTransientDataPath(extensionId, path);\n if (!parsed?.collection) return null;\n\n const method = String(options.method ?? \"GET\").toUpperCase();\n if (method === \"GET\" || method === \"HEAD\") {\n const rows = readTransientRows(\n extensionId,\n parsed.collection,\n parsed.scope,\n );\n return {\n response: {\n ok: true,\n status: 200,\n statusText: \"OK\",\n body: rows,\n },\n };\n }\n\n if (method === \"POST\") {\n const bodyText = typeof options.body === \"string\" ? options.body : \"{}\";\n let body: Record<string, unknown>;\n try {\n body = JSON.parse(bodyText);\n } catch {\n body = {};\n }\n if (body.data === undefined) {\n return {\n response: {\n ok: false,\n status: 400,\n statusText: \"Bad Request\",\n body: { error: \"data is required\" },\n },\n };\n }\n const itemId =\n typeof body.id === \"string\" && body.id.trim()\n ? body.id.trim()\n : `item-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;\n const requestedScope =\n body.scope === \"org\" || parsed.scope === \"org\" ? \"org\" : \"user\";\n const now = new Date().toISOString();\n const rows = readTransientRows(\n extensionId,\n parsed.collection,\n requestedScope,\n );\n const existing = rows.find((row) => row.id === itemId);\n const row: TransientDataRow = {\n id: itemId,\n extensionId,\n toolId: extensionId,\n collection: parsed.collection,\n data:\n typeof body.data === \"string\" ? body.data : JSON.stringify(body.data),\n ownerEmail: \"\",\n scope: requestedScope,\n orgId: requestedScope === \"org\" ? \"inline\" : null,\n createdAt: existing?.createdAt ?? now,\n updatedAt: now,\n };\n writeTransientRows(extensionId, parsed.collection, requestedScope, [\n row,\n ...rows.filter((item) => item.id !== itemId),\n ]);\n return {\n response: {\n ok: true,\n status: 200,\n statusText: \"OK\",\n body: row,\n },\n };\n }\n\n if (method === \"DELETE\" && parsed.itemId) {\n const rows = readTransientRows(\n extensionId,\n parsed.collection,\n parsed.scope,\n );\n writeTransientRows(\n extensionId,\n parsed.collection,\n parsed.scope,\n rows.filter((row) => row.id !== parsed.itemId),\n );\n return {\n response: {\n ok: true,\n status: 200,\n statusText: \"OK\",\n body: { ok: true },\n },\n };\n }\n\n return {\n response: {\n ok: false,\n status: 405,\n statusText: \"Method Not Allowed\",\n body: { error: \"Unsupported transient extensionData request\" },\n },\n };\n}\n\nfunction buildTransientSrcDoc(\n extension: InlineExtensionDefinition,\n isDark: boolean,\n): string {\n return buildExtensionHtml(\n extension.content ?? \"\",\n getThemeVars(isDark),\n isDark,\n extension.id,\n {\n authorEmail: \"\",\n viewerEmail: \"\",\n isAuthor: true,\n role: \"owner\",\n },\n );\n}\n\nexport function InlineExtensionFrame({\n extensionId,\n extension: providedExtension,\n slotId = \"agent-chat.inline\",\n context,\n className,\n initialHeight = 260,\n}: InlineExtensionFrameProps) {\n const providedId = providedExtension?.id ?? extensionId ?? \"\";\n const iframeRef = useRef<HTMLIFrameElement | null>(null);\n const [height, setHeight] = useState<number>(initialHeight);\n const [isDark, setIsDark] = useState(() =>\n typeof document === \"undefined\"\n ? false\n : document.documentElement.classList.contains(\"dark\"),\n );\n const bridgeContextRef = useRef<BridgePolicyContext>({\n role: providedExtension?.content ? \"owner\" : \"viewer\",\n isAuthor: !!providedExtension?.content,\n });\n const bindingLatchedRef = useRef(false);\n const [fetchedExtension, setFetchedExtension] =\n useState<InlineExtensionDefinition | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n setIsDark(document.documentElement.classList.contains(\"dark\"));\n const observer = new MutationObserver(() => {\n setIsDark(document.documentElement.classList.contains(\"dark\"));\n });\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"class\"],\n });\n return () => observer.disconnect();\n }, []);\n\n useEffect(() => {\n if (!providedId || providedExtension) {\n setFetchedExtension(null);\n setIsLoading(false);\n return;\n }\n let cancelled = false;\n setIsLoading(true);\n fetch(agentNativePath(`/_agent-native/extensions/${providedId}`))\n .then(async (res) => {\n if (!res.ok) return null;\n return (await res.json()) as InlineExtensionDefinition;\n })\n .then((row) => {\n if (!cancelled) setFetchedExtension(row);\n })\n .catch(() => {\n if (!cancelled) setFetchedExtension(null);\n })\n .finally(() => {\n if (!cancelled) setIsLoading(false);\n });\n return () => {\n cancelled = true;\n };\n }, [providedExtension, providedId]);\n\n const extension = providedExtension ?? fetchedExtension ?? null;\n const resolvedId = extension?.id ?? providedId;\n const isTransient =\n extension?.mode === \"transient\" ||\n (!!extension?.content && !extensionId && extension?.mode !== \"persisted\");\n\n const initialDarkRef = useRef(isDark);\n const iframeSrc = useMemo(() => {\n if (!resolvedId || isTransient) return undefined;\n const v = encodeURIComponent(extension?.updatedAt ?? \"\");\n return agentNativePath(\n `/_agent-native/extensions/${resolvedId}/render?slot=${encodeURIComponent(slotId)}&dark=${initialDarkRef.current}&v=${v}`,\n );\n }, [extension?.updatedAt, isTransient, resolvedId, slotId]);\n\n const srcDoc = useMemo(() => {\n if (!extension || !isTransient) return undefined;\n return buildTransientSrcDoc(extension, initialDarkRef.current);\n }, [extension, isTransient]);\n\n useEffect(() => {\n bridgeContextRef.current = isTransient\n ? { role: \"owner\", isAuthor: true }\n : { role: \"viewer\", isAuthor: false };\n bindingLatchedRef.current = false;\n setHeight(initialHeight);\n }, [initialHeight, isTransient, resolvedId, extension?.updatedAt]);\n\n const sendThemeToIframe = () => {\n const win = iframeRef.current?.contentWindow;\n if (!win) return;\n win.postMessage(\n {\n type: \"agent-native-theme-update\",\n isDark,\n vars: getParentThemeVars(),\n },\n \"*\",\n );\n };\n\n useEffect(() => {\n sendThemeToIframe();\n }, [isDark, srcDoc, iframeSrc]);\n\n const contextJson = JSON.stringify(context ?? {});\n const sendContextToIframe = () => {\n const win = iframeRef.current?.contentWindow;\n if (!win) return;\n win.postMessage(\n { type: \"agent-native-slot-context\", context: context ?? {} },\n \"*\",\n );\n };\n\n useEffect(() => {\n sendContextToIframe();\n }, [contextJson, srcDoc, iframeSrc]);\n\n useEffect(() => {\n const handleMessage = async (event: MessageEvent) => {\n if (event.source !== iframeRef.current?.contentWindow) return;\n const message = event.data;\n if (!message || typeof message !== \"object\") return;\n\n if (message.type === \"agent-native-extension-binding\") {\n if (bindingLatchedRef.current) return;\n bindingLatchedRef.current = true;\n const binding = (message as any).binding ?? {};\n const role = normalizeRole(binding.role);\n bridgeContextRef.current = {\n role,\n isAuthor: !!binding.isAuthor,\n source: binding.source === \"local-files\" ? \"local-files\" : \"database\",\n permissions:\n binding && typeof binding.permissions === \"object\"\n ? binding.permissions\n : undefined,\n };\n return;\n }\n\n if (message.type === \"agent-native-extension-resize\") {\n const h = Number((message as any).height);\n if (Number.isFinite(h) && h > 0) {\n setHeight(Math.ceil(Math.min(Math.max(h, 96), 1000)));\n }\n return;\n }\n\n if (message.type === \"agent-native-extension-keydown\") {\n document.dispatchEvent(\n new KeyboardEvent(\"keydown\", {\n key: (message as any).key,\n code: (message as any).code,\n metaKey: !!(message as any).metaKey,\n ctrlKey: !!(message as any).ctrlKey,\n shiftKey: !!(message as any).shiftKey,\n altKey: !!(message as any).altKey,\n bubbles: true,\n cancelable: true,\n }),\n );\n return;\n }\n\n if (message.type === \"agent-native-send-to-chat\") {\n const text = serializeChatValue((message as any).message);\n if (!text?.trim()) return;\n sendToAgentChat({\n message: text,\n context: serializeChatValue((message as any).context),\n submit: (message as any).submit !== false,\n openSidebar: (message as any).openSidebar !== false,\n });\n return;\n }\n\n if (message.type === \"agent-native-ui-output\") {\n window.dispatchEvent(\n new CustomEvent(\"agentNative.inlineUiOutput\", {\n detail: {\n extensionId: resolvedId,\n key:\n typeof (message as any).key === \"string\"\n ? (message as any).key\n : undefined,\n value: (message as any).value,\n output: (message as any).output,\n },\n }),\n );\n return;\n }\n\n if (message.type === \"agent-native-extension-error-fix\") {\n const errors: string[] = Array.isArray((message as any).errors)\n ? (message as any).errors\n : [];\n sendToAgentChat({\n message: `Fix runtime errors in the inline extension \"${extension?.name ?? resolvedId}\".\\n\\nErrors:\\n${errors.join(\"\\n\")}`,\n context: [\n `The user is viewing an inline generated extension named \"${extension?.name ?? resolvedId}\".`,\n isTransient\n ? \"This is a transient chat-only extension. Re-render it with render-inline-extension instead of update-extension.\"\n : `This is saved as extension id ${resolvedId}. Use get-extension/update-extension for durable edits.`,\n extension?.content\n ? `\\nCurrent inline content:\\n\\`\\`\\`html\\n${extension.content}\\n\\`\\`\\``\n : \"\",\n ]\n .filter(Boolean)\n .join(\"\\n\"),\n submit: true,\n openSidebar: true,\n });\n return;\n }\n\n if (message.type !== \"agent-native-extension-request\") return;\n\n const requestId = String((message as any).requestId ?? \"\");\n const path = String((message as any).path ?? \"\");\n const respond = (payload: Record<string, unknown>) => {\n iframeRef.current?.contentWindow?.postMessage(\n {\n type: \"agent-native-extension-response\",\n requestId,\n ...payload,\n },\n \"*\",\n );\n };\n\n if (\n !requestId ||\n !resolvedId ||\n !isAllowedExtensionPath(path, resolvedId)\n ) {\n respond({ error: \"Extension request path is not allowed\" });\n return;\n }\n\n try {\n const options = sanitizeExtensionRequestOptions(\n (message as any).options,\n );\n const policy = checkBridgePolicy(path, options.method ?? \"GET\", {\n ...bridgeContextRef.current,\n extensionId: resolvedId,\n });\n if (!policy.ok) {\n respond({\n response: {\n ok: false,\n status: 403,\n statusText: \"Forbidden\",\n body: { error: policy.error },\n },\n });\n return;\n }\n\n if (isTransient) {\n const localData = await handleTransientExtensionData(\n resolvedId,\n path,\n options,\n );\n if (localData) {\n respond(localData);\n return;\n }\n }\n\n const finalHeaders = new Headers(options.headers ?? undefined);\n finalHeaders.set(\"X-Agent-Native-Extension-Bridge\", \"1\");\n finalHeaders.set(\"X-Agent-Native-Extension-Id\", resolvedId);\n finalHeaders.set(\"X-Agent-Native-Tool-Bridge\", \"1\");\n finalHeaders.set(\"X-Agent-Native-Tool-Id\", resolvedId);\n const res = await fetch(agentNativePath(path), {\n ...options,\n headers: finalHeaders,\n credentials: \"same-origin\",\n });\n const text = await res.text();\n let body: unknown = text;\n if (text) {\n try {\n body = JSON.parse(text);\n } catch {\n body = text;\n }\n }\n respond({\n response: {\n ok: res.ok,\n status: res.status,\n statusText: res.statusText,\n body,\n },\n });\n } catch (err: any) {\n respond({ error: err?.message ?? \"Extension host request failed\" });\n }\n };\n\n window.addEventListener(\"message\", handleMessage);\n return () => window.removeEventListener(\"message\", handleMessage);\n }, [extension, isTransient, resolvedId]);\n\n if (!extension) {\n if (!isLoading) return null;\n return (\n <div\n className={className}\n style={{ height: initialHeight }}\n aria-busy=\"true\"\n />\n );\n }\n\n return (\n <div className={`relative ${className ?? \"\"}`}>\n <iframe\n ref={iframeRef}\n key={`${resolvedId}-${extension.updatedAt ?? \"inline\"}-${isTransient ? \"transient\" : \"persisted\"}`}\n src={iframeSrc}\n srcDoc={srcDoc}\n title={extension.name}\n sandbox={EXTENSION_IFRAME_SANDBOX}\n style={{ width: \"100%\", border: 0, height, display: \"block\" }}\n onLoad={() => {\n sendThemeToIframe();\n sendContextToIframe();\n }}\n />\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"InlineExtensionFrame.js","sourceRoot":"","sources":["../../../src/client/extensions/InlineExtensionFrame.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { buildExtensionHtml } from \"../../extensions/html-shell.js\";\nimport { getThemeVars } from \"../../extensions/theme.js\";\nimport { SESSION_REPLAY_IFRAME_ATTRIBUTE } from \"../../session-replay-iframe-protocol.js\";\nimport { sendToAgentChat } from \"../agent-chat.js\";\nimport { agentNativePath } from \"../api-path.js\";\nimport {\n isAllowedExtensionPath,\n sanitizeExtensionRequestOptions,\n checkBridgePolicy,\n type BridgePolicyContext,\n type ExtensionBridgeRole,\n} from \"./iframe-bridge.js\";\nimport { normalizeAgentNativeExtensionSandbox } from \"./portable-extension.js\";\n\nconst THEME_CSS_VARS = [\n \"--background\",\n \"--foreground\",\n \"--card\",\n \"--card-foreground\",\n \"--popover\",\n \"--popover-foreground\",\n \"--primary\",\n \"--primary-foreground\",\n \"--secondary\",\n \"--secondary-foreground\",\n \"--muted\",\n \"--muted-foreground\",\n \"--accent\",\n \"--accent-foreground\",\n \"--destructive\",\n \"--destructive-foreground\",\n \"--border\",\n \"--input\",\n \"--ring\",\n \"--radius\",\n \"--sidebar-background\",\n \"--sidebar-foreground\",\n \"--sidebar-primary\",\n \"--sidebar-primary-foreground\",\n \"--sidebar-accent\",\n \"--sidebar-accent-foreground\",\n \"--sidebar-border\",\n \"--sidebar-ring\",\n];\n\nconst EXTENSION_IFRAME_SANDBOX =\n normalizeAgentNativeExtensionSandbox(undefined);\n\ninterface InlineExtensionSource {\n mode?: \"database\" | \"local-files\";\n permissions?: BridgePolicyContext[\"permissions\"];\n}\n\nexport interface InlineExtensionDefinition {\n id: string;\n name: string;\n description?: string;\n content?: string;\n updatedAt?: string;\n mode?: \"transient\" | \"persisted\";\n source?: InlineExtensionSource;\n}\n\nexport interface InlineExtensionFrameProps {\n extensionId?: string;\n extension?: InlineExtensionDefinition;\n slotId?: string;\n context?: Record<string, unknown> | null;\n className?: string;\n initialHeight?: number;\n}\n\nfunction getParentThemeVars(): Record<string, string> {\n if (typeof document === \"undefined\") return {};\n const computed = getComputedStyle(document.documentElement);\n const vars: Record<string, string> = {};\n for (const name of THEME_CSS_VARS) {\n const val = computed.getPropertyValue(name).trim();\n if (val) vars[name] = val;\n }\n return vars;\n}\n\nfunction normalizeRole(value: unknown): ExtensionBridgeRole {\n return value === \"owner\" ||\n value === \"admin\" ||\n value === \"editor\" ||\n value === \"viewer\"\n ? value\n : \"viewer\";\n}\n\nfunction serializeChatValue(value: unknown): string | undefined {\n if (value === undefined || value === null) return undefined;\n if (typeof value === \"string\") return value;\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n\nfunction transientDataKey(\n extensionId: string,\n collection: string,\n scope: string,\n): string {\n return `agent-native:inline-extension-data:${extensionId}:${scope}:${collection}`;\n}\n\ninterface TransientDataRow {\n id: string;\n extensionId: string;\n toolId: string;\n collection: string;\n data: string;\n ownerEmail: string;\n scope: string;\n orgId: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nfunction readTransientRows(\n extensionId: string,\n collection: string,\n scope: string,\n): TransientDataRow[] {\n if (typeof localStorage === \"undefined\") return [];\n try {\n const parsed = JSON.parse(\n localStorage.getItem(transientDataKey(extensionId, collection, scope)) ??\n \"[]\",\n );\n return Array.isArray(parsed) ? parsed : [];\n } catch {\n return [];\n }\n}\n\nfunction writeTransientRows(\n extensionId: string,\n collection: string,\n scope: string,\n rows: TransientDataRow[],\n): void {\n if (typeof localStorage === \"undefined\") return;\n localStorage.setItem(\n transientDataKey(extensionId, collection, scope),\n JSON.stringify(rows),\n );\n}\n\nfunction parseTransientDataPath(\n extensionId: string,\n path: string,\n): { collection: string; itemId?: string; scope: string } | null {\n try {\n const url = new URL(path, \"http://agent-native.local\");\n const parts = url.pathname.split(\"/\");\n if (\n parts.length < 6 ||\n parts.length > 7 ||\n parts[1] !== \"_agent-native\" ||\n parts[2] !== \"extensions\" ||\n parts[3] !== \"data\" ||\n decodeURIComponent(parts[4]) !== extensionId\n ) {\n return null;\n }\n return {\n collection: decodeURIComponent(parts[5] ?? \"\"),\n itemId: parts[6] ? decodeURIComponent(parts[6]) : undefined,\n scope: url.searchParams.get(\"scope\") || \"user\",\n };\n } catch {\n return null;\n }\n}\n\nasync function handleTransientExtensionData(\n extensionId: string,\n path: string,\n options: RequestInit,\n): Promise<Record<string, unknown> | null> {\n const parsed = parseTransientDataPath(extensionId, path);\n if (!parsed?.collection) return null;\n\n const method = String(options.method ?? \"GET\").toUpperCase();\n if (method === \"GET\" || method === \"HEAD\") {\n const rows = readTransientRows(\n extensionId,\n parsed.collection,\n parsed.scope,\n );\n return {\n response: {\n ok: true,\n status: 200,\n statusText: \"OK\",\n body: rows,\n },\n };\n }\n\n if (method === \"POST\") {\n const bodyText = typeof options.body === \"string\" ? options.body : \"{}\";\n let body: Record<string, unknown>;\n try {\n body = JSON.parse(bodyText);\n } catch {\n body = {};\n }\n if (body.data === undefined) {\n return {\n response: {\n ok: false,\n status: 400,\n statusText: \"Bad Request\",\n body: { error: \"data is required\" },\n },\n };\n }\n const itemId =\n typeof body.id === \"string\" && body.id.trim()\n ? body.id.trim()\n : `item-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;\n const requestedScope =\n body.scope === \"org\" || parsed.scope === \"org\" ? \"org\" : \"user\";\n const now = new Date().toISOString();\n const rows = readTransientRows(\n extensionId,\n parsed.collection,\n requestedScope,\n );\n const existing = rows.find((row) => row.id === itemId);\n const row: TransientDataRow = {\n id: itemId,\n extensionId,\n toolId: extensionId,\n collection: parsed.collection,\n data:\n typeof body.data === \"string\" ? body.data : JSON.stringify(body.data),\n ownerEmail: \"\",\n scope: requestedScope,\n orgId: requestedScope === \"org\" ? \"inline\" : null,\n createdAt: existing?.createdAt ?? now,\n updatedAt: now,\n };\n writeTransientRows(extensionId, parsed.collection, requestedScope, [\n row,\n ...rows.filter((item) => item.id !== itemId),\n ]);\n return {\n response: {\n ok: true,\n status: 200,\n statusText: \"OK\",\n body: row,\n },\n };\n }\n\n if (method === \"DELETE\" && parsed.itemId) {\n const rows = readTransientRows(\n extensionId,\n parsed.collection,\n parsed.scope,\n );\n writeTransientRows(\n extensionId,\n parsed.collection,\n parsed.scope,\n rows.filter((row) => row.id !== parsed.itemId),\n );\n return {\n response: {\n ok: true,\n status: 200,\n statusText: \"OK\",\n body: { ok: true },\n },\n };\n }\n\n return {\n response: {\n ok: false,\n status: 405,\n statusText: \"Method Not Allowed\",\n body: { error: \"Unsupported transient extensionData request\" },\n },\n };\n}\n\nfunction buildTransientSrcDoc(\n extension: InlineExtensionDefinition,\n isDark: boolean,\n): string {\n return buildExtensionHtml(\n extension.content ?? \"\",\n getThemeVars(isDark),\n isDark,\n extension.id,\n {\n authorEmail: \"\",\n viewerEmail: \"\",\n isAuthor: true,\n role: \"owner\",\n },\n );\n}\n\nexport function InlineExtensionFrame({\n extensionId,\n extension: providedExtension,\n slotId = \"agent-chat.inline\",\n context,\n className,\n initialHeight = 260,\n}: InlineExtensionFrameProps) {\n const providedId = providedExtension?.id ?? extensionId ?? \"\";\n const iframeRef = useRef<HTMLIFrameElement | null>(null);\n const [height, setHeight] = useState<number>(initialHeight);\n const [isDark, setIsDark] = useState(() =>\n typeof document === \"undefined\"\n ? false\n : document.documentElement.classList.contains(\"dark\"),\n );\n const bridgeContextRef = useRef<BridgePolicyContext>({\n role: providedExtension?.content ? \"owner\" : \"viewer\",\n isAuthor: !!providedExtension?.content,\n });\n const bindingLatchedRef = useRef(false);\n const [fetchedExtension, setFetchedExtension] =\n useState<InlineExtensionDefinition | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n setIsDark(document.documentElement.classList.contains(\"dark\"));\n const observer = new MutationObserver(() => {\n setIsDark(document.documentElement.classList.contains(\"dark\"));\n });\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"class\"],\n });\n return () => observer.disconnect();\n }, []);\n\n useEffect(() => {\n if (!providedId || providedExtension) {\n setFetchedExtension(null);\n setIsLoading(false);\n return;\n }\n let cancelled = false;\n setIsLoading(true);\n fetch(agentNativePath(`/_agent-native/extensions/${providedId}`))\n .then(async (res) => {\n if (!res.ok) return null;\n return (await res.json()) as InlineExtensionDefinition;\n })\n .then((row) => {\n if (!cancelled) setFetchedExtension(row);\n })\n .catch(() => {\n if (!cancelled) setFetchedExtension(null);\n })\n .finally(() => {\n if (!cancelled) setIsLoading(false);\n });\n return () => {\n cancelled = true;\n };\n }, [providedExtension, providedId]);\n\n const extension = providedExtension ?? fetchedExtension ?? null;\n const resolvedId = extension?.id ?? providedId;\n const isTransient =\n extension?.mode === \"transient\" ||\n (!!extension?.content && !extensionId && extension?.mode !== \"persisted\");\n\n const initialDarkRef = useRef(isDark);\n const iframeSrc = useMemo(() => {\n if (!resolvedId || isTransient) return undefined;\n const v = encodeURIComponent(extension?.updatedAt ?? \"\");\n return agentNativePath(\n `/_agent-native/extensions/${resolvedId}/render?slot=${encodeURIComponent(slotId)}&dark=${initialDarkRef.current}&v=${v}`,\n );\n }, [extension?.updatedAt, isTransient, resolvedId, slotId]);\n\n const srcDoc = useMemo(() => {\n if (!extension || !isTransient) return undefined;\n return buildTransientSrcDoc(extension, initialDarkRef.current);\n }, [extension, isTransient]);\n\n useEffect(() => {\n bridgeContextRef.current = isTransient\n ? { role: \"owner\", isAuthor: true }\n : { role: \"viewer\", isAuthor: false };\n bindingLatchedRef.current = false;\n setHeight(initialHeight);\n }, [initialHeight, isTransient, resolvedId, extension?.updatedAt]);\n\n const sendThemeToIframe = () => {\n const win = iframeRef.current?.contentWindow;\n if (!win) return;\n win.postMessage(\n {\n type: \"agent-native-theme-update\",\n isDark,\n vars: getParentThemeVars(),\n },\n \"*\",\n );\n };\n\n useEffect(() => {\n sendThemeToIframe();\n }, [isDark, srcDoc, iframeSrc]);\n\n const contextJson = JSON.stringify(context ?? {});\n const sendContextToIframe = () => {\n const win = iframeRef.current?.contentWindow;\n if (!win) return;\n win.postMessage(\n { type: \"agent-native-slot-context\", context: context ?? {} },\n \"*\",\n );\n };\n\n useEffect(() => {\n sendContextToIframe();\n }, [contextJson, srcDoc, iframeSrc]);\n\n useEffect(() => {\n const handleMessage = async (event: MessageEvent) => {\n if (event.source !== iframeRef.current?.contentWindow) return;\n const message = event.data;\n if (!message || typeof message !== \"object\") return;\n\n if (message.type === \"agent-native-extension-binding\") {\n if (bindingLatchedRef.current) return;\n bindingLatchedRef.current = true;\n const binding = (message as any).binding ?? {};\n const role = normalizeRole(binding.role);\n bridgeContextRef.current = {\n role,\n isAuthor: !!binding.isAuthor,\n source: binding.source === \"local-files\" ? \"local-files\" : \"database\",\n permissions:\n binding && typeof binding.permissions === \"object\"\n ? binding.permissions\n : undefined,\n };\n return;\n }\n\n if (message.type === \"agent-native-extension-resize\") {\n const h = Number((message as any).height);\n if (Number.isFinite(h) && h > 0) {\n setHeight(Math.ceil(Math.min(Math.max(h, 96), 1000)));\n }\n return;\n }\n\n if (message.type === \"agent-native-extension-keydown\") {\n document.dispatchEvent(\n new KeyboardEvent(\"keydown\", {\n key: (message as any).key,\n code: (message as any).code,\n metaKey: !!(message as any).metaKey,\n ctrlKey: !!(message as any).ctrlKey,\n shiftKey: !!(message as any).shiftKey,\n altKey: !!(message as any).altKey,\n bubbles: true,\n cancelable: true,\n }),\n );\n return;\n }\n\n if (message.type === \"agent-native-send-to-chat\") {\n const text = serializeChatValue((message as any).message);\n if (!text?.trim()) return;\n sendToAgentChat({\n message: text,\n context: serializeChatValue((message as any).context),\n submit: (message as any).submit !== false,\n openSidebar: (message as any).openSidebar !== false,\n });\n return;\n }\n\n if (message.type === \"agent-native-ui-output\") {\n window.dispatchEvent(\n new CustomEvent(\"agentNative.inlineUiOutput\", {\n detail: {\n extensionId: resolvedId,\n key:\n typeof (message as any).key === \"string\"\n ? (message as any).key\n : undefined,\n value: (message as any).value,\n output: (message as any).output,\n },\n }),\n );\n return;\n }\n\n if (message.type === \"agent-native-extension-error-fix\") {\n const errors: string[] = Array.isArray((message as any).errors)\n ? (message as any).errors\n : [];\n sendToAgentChat({\n message: `Fix runtime errors in the inline extension \"${extension?.name ?? resolvedId}\".\\n\\nErrors:\\n${errors.join(\"\\n\")}`,\n context: [\n `The user is viewing an inline generated extension named \"${extension?.name ?? resolvedId}\".`,\n isTransient\n ? \"This is a transient chat-only extension. Re-render it with render-inline-extension instead of update-extension.\"\n : `This is saved as extension id ${resolvedId}. Use get-extension/update-extension for durable edits.`,\n extension?.content\n ? `\\nCurrent inline content:\\n\\`\\`\\`html\\n${extension.content}\\n\\`\\`\\``\n : \"\",\n ]\n .filter(Boolean)\n .join(\"\\n\"),\n submit: true,\n openSidebar: true,\n });\n return;\n }\n\n if (message.type !== \"agent-native-extension-request\") return;\n\n const requestId = String((message as any).requestId ?? \"\");\n const path = String((message as any).path ?? \"\");\n const respond = (payload: Record<string, unknown>) => {\n iframeRef.current?.contentWindow?.postMessage(\n {\n type: \"agent-native-extension-response\",\n requestId,\n ...payload,\n },\n \"*\",\n );\n };\n\n if (\n !requestId ||\n !resolvedId ||\n !isAllowedExtensionPath(path, resolvedId)\n ) {\n respond({ error: \"Extension request path is not allowed\" });\n return;\n }\n\n try {\n const options = sanitizeExtensionRequestOptions(\n (message as any).options,\n );\n const policy = checkBridgePolicy(path, options.method ?? \"GET\", {\n ...bridgeContextRef.current,\n extensionId: resolvedId,\n });\n if (!policy.ok) {\n respond({\n response: {\n ok: false,\n status: 403,\n statusText: \"Forbidden\",\n body: { error: policy.error },\n },\n });\n return;\n }\n\n if (isTransient) {\n const localData = await handleTransientExtensionData(\n resolvedId,\n path,\n options,\n );\n if (localData) {\n respond(localData);\n return;\n }\n }\n\n const finalHeaders = new Headers(options.headers ?? undefined);\n finalHeaders.set(\"X-Agent-Native-Extension-Bridge\", \"1\");\n finalHeaders.set(\"X-Agent-Native-Extension-Id\", resolvedId);\n finalHeaders.set(\"X-Agent-Native-Tool-Bridge\", \"1\");\n finalHeaders.set(\"X-Agent-Native-Tool-Id\", resolvedId);\n const res = await fetch(agentNativePath(path), {\n ...options,\n headers: finalHeaders,\n credentials: \"same-origin\",\n });\n const text = await res.text();\n let body: unknown = text;\n if (text) {\n try {\n body = JSON.parse(text);\n } catch {\n body = text;\n }\n }\n respond({\n response: {\n ok: res.ok,\n status: res.status,\n statusText: res.statusText,\n body,\n },\n });\n } catch (err: any) {\n respond({ error: err?.message ?? \"Extension host request failed\" });\n }\n };\n\n window.addEventListener(\"message\", handleMessage);\n return () => window.removeEventListener(\"message\", handleMessage);\n }, [extension, isTransient, resolvedId]);\n\n if (!extension) {\n if (!isLoading) return null;\n return (\n <div\n className={className}\n style={{ height: initialHeight }}\n aria-busy=\"true\"\n />\n );\n }\n\n return (\n <div className={`relative ${className ?? \"\"}`}>\n <iframe\n {...{ [SESSION_REPLAY_IFRAME_ATTRIBUTE]: \"\" }}\n ref={iframeRef}\n key={`${resolvedId}-${extension.updatedAt ?? \"inline\"}-${isTransient ? \"transient\" : \"persisted\"}`}\n src={iframeSrc}\n srcDoc={srcDoc}\n title={extension.name}\n sandbox={EXTENSION_IFRAME_SANDBOX}\n style={{ width: \"100%\", border: 0, height, display: \"block\" }}\n onLoad={() => {\n sendThemeToIframe();\n sendContextToIframe();\n }}\n />\n </div>\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"portable-extension.d.ts","sourceRoot":"","sources":["../../../src/client/extensions/portable-extension.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,oCAAoC;aAC/C,eAAe,EAAE,+BAA+B;aAChD,gBAAgB,EAAE,qCAAqC;aACvD,MAAM,EAAE,8BAA8B;aACtC,YAAY,EAAE,mCAAmC;CACzC,CAAC;AAEX,MAAM,MAAM,+BAA+B,GACzC,CAAC,OAAO,oCAAoC,CAAC,CAAC,MAAM,OAAO,oCAAoC,CAAC,CAAC;AAEnG,MAAM,MAAM,gCAAgC,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAE/E,MAAM,WAAW,4BAA4B;IAC3C,4EAA4E;IAC5E,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,4FAA4F;IAC5F,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,6FAA6F;IAC7F,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,wFAAwF;IACxF,aAAa,CAAC,EAAE,SAAS,gCAAgC,EAAE,CAAC;CAC7D;AAED,MAAM,WAAW,8BAA8B;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,4BAA4B,CAAC;IACxC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,aAAa,CAAC,EAAE,SAAS,gCAAgC,EAAE,CAAC;IAC5D,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kCAAkC;IACjD,KAAK,CAAC,EAAE,gCAAgC,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kCAAkC;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,8BAA8B,CAAC,KAAK,GAAG,OAAO;IAC7D,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,CACF,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,kCAAkC,GAAG,SAAS,EACvD,OAAO,EAAE,kCAAkC,GAEzC,8BAA8B,EAAE,GAChC,OAAO,CAAC,8BAA8B,EAAE,CAAC,CAAC;IAC9C,GAAG,CACD,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,kCAAkC,GAAG,SAAS,EACvD,OAAO,EAAE,kCAAkC,GAEzC,8BAA8B,GAC9B,IAAI,GACJ,OAAO,CAAC,8BAA8B,GAAG,IAAI,CAAC,CAAC;IACnD,GAAG,CACD,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,kCAAkC,GAAG,SAAS,EACvD,OAAO,EAAE,kCAAkC,GAC1C,8BAA8B,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC5E,MAAM,CACJ,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,kCAAkC,GAAG,SAAS,EACvD,OAAO,EAAE,kCAAkC,GAC1C;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,4CAA4C;IAC3D,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,OAAO,CAAC,EACJ,WAAW,GACX,CAAC,CACC,OAAO,EAAE,kCAAkC,KACxC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAC7C,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC;AAED,MAAM,WAAW,oCAAoC;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAQD,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,8BAA8B,GACxC,4BAA4B,CAgB9B;AAED,wBAAgB,mCAAmC,CACjD,SAAS,EAAE,8BAA8B,EACzC,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,OAAO,CAKT;AAoGD,wBAAgB,6CAA6C,CAC3D,SAAS,SAAY,GACpB,2BAA2B,CAmE7B;AAoCD,wBAAgB,qCAAqC,CAAC,EACpD,QAAQ,EACR,KAAK,EAAE,SAAS,EAChB,OAAO,EACP,WAA2B,GAC5B,EAAE,4CAA4C,GAAG,2BAA2B,CA0E5E;AAED,wBAAgB,oCAAoC,CAClD,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,MAAM,CAUR;AAED,wBAAgB,6BAA6B,CAAC,EAC5C,WAAW,EACX,OAAO,EACP,KAAK,EACL,MAAM,EACN,WAAW,EACX,QAAa,EACb,MAAc,GACf,EAAE,oCAAoC,GAAG,MAAM,CAwP/C"}
1
+ {"version":3,"file":"portable-extension.d.ts","sourceRoot":"","sources":["../../../src/client/extensions/portable-extension.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { EXTENSION_IFRAME_META_CSP } from "../../extensions/html-shell.js";
2
+ import { buildSessionReplayIframeBootstrap } from "../../extensions/session-replay-iframe.js";
2
3
  import { AGENT_NATIVE_HOST_MESSAGE_TYPES } from "../host-bridge.js";
3
4
  export const AGENT_NATIVE_EXTENSION_MESSAGE_TYPES = {
4
5
  STORAGE_REQUEST: "agentNative.extension.storage",
@@ -472,6 +473,7 @@ export function buildAgentNativeExtensionHtml({ extensionId, content, title, slo
472
473
  }, '*');
473
474
  })();
474
475
  </script>
476
+ ${buildSessionReplayIframeBootstrap()}
475
477
  </head>
476
478
  <body>
477
479
  ${content}
@@ -1 +1 @@
1
- {"version":3,"file":"portable-extension.js","sourceRoot":"","sources":["../../../src/client/extensions/portable-extension.ts"],"names":[],"mappings":"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","sourcesContent":["import { EXTENSION_IFRAME_META_CSP } from \"../../extensions/html-shell.js\";\nimport { AGENT_NATIVE_HOST_MESSAGE_TYPES } from \"../host-bridge.js\";\n\nexport const AGENT_NATIVE_EXTENSION_MESSAGE_TYPES = {\n STORAGE_REQUEST: \"agentNative.extension.storage\",\n STORAGE_RESPONSE: \"agentNative.extension.storageResult\",\n RESIZE: \"agentNative.extension.resize\",\n SLOT_CONTEXT: \"agentNative.extension.slotContext\",\n} as const;\n\nexport type AgentNativeExtensionMessageType =\n (typeof AGENT_NATIVE_EXTENSION_MESSAGE_TYPES)[keyof typeof AGENT_NATIVE_EXTENSION_MESSAGE_TYPES];\n\nexport type AgentNativeExtensionStorageScope = \"user\" | \"org\" | \"all\" | string;\n\nexport interface AgentNativeExtensionManifest {\n /** Slot IDs this extension may render into. Omit to let the host decide. */\n slots?: readonly string[];\n /** Host action names this extension is allowed to call. Omit to inherit the slot policy. */\n requestedActions?: readonly string[];\n /** Host command names this extension is allowed to call. Omit to inherit the slot policy. */\n requestedCommands?: readonly string[];\n /** Storage scopes this extension is allowed to use. Omit to inherit the slot policy. */\n storageScopes?: readonly AgentNativeExtensionStorageScope[];\n}\n\nexport interface AgentNativeExtensionDefinition {\n id: string;\n name: string;\n content: string;\n description?: string;\n updatedAt?: string;\n manifest?: AgentNativeExtensionManifest;\n slots?: readonly string[];\n requestedActions?: readonly string[];\n requestedCommands?: readonly string[];\n storageScopes?: readonly AgentNativeExtensionStorageScope[];\n [key: string]: unknown;\n}\n\nexport interface AgentNativeExtensionStorageOptions {\n scope?: AgentNativeExtensionStorageScope;\n limit?: number;\n [key: string]: unknown;\n}\n\nexport interface AgentNativeExtensionStorageContext {\n extensionId: string;\n slotId?: string;\n scope?: Exclude<AgentNativeExtensionStorageScope, \"all\">;\n userId?: string;\n organizationId?: string;\n [key: string]: unknown;\n}\n\nexport interface AgentNativeExtensionStorageRow<TData = unknown> {\n id: string;\n extensionId: string;\n collection: string;\n data: TData;\n scope: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface AgentNativeExtensionStorage {\n list(\n collection: string,\n options: AgentNativeExtensionStorageOptions | undefined,\n context: AgentNativeExtensionStorageContext,\n ):\n | AgentNativeExtensionStorageRow[]\n | Promise<AgentNativeExtensionStorageRow[]>;\n get(\n collection: string,\n id: string,\n options: AgentNativeExtensionStorageOptions | undefined,\n context: AgentNativeExtensionStorageContext,\n ):\n | AgentNativeExtensionStorageRow\n | null\n | Promise<AgentNativeExtensionStorageRow | null>;\n set(\n collection: string,\n id: string,\n data: unknown,\n options: AgentNativeExtensionStorageOptions | undefined,\n context: AgentNativeExtensionStorageContext,\n ): AgentNativeExtensionStorageRow | Promise<AgentNativeExtensionStorageRow>;\n remove(\n collection: string,\n id: string,\n options: AgentNativeExtensionStorageOptions | undefined,\n context: AgentNativeExtensionStorageContext,\n ): { removed: boolean } | Promise<{ removed: boolean }>;\n}\n\nexport interface CreateHttpAgentNativeExtensionStorageOptions {\n /** Endpoint that receives storage operation POSTs. */\n endpoint: string;\n fetch?: typeof fetch;\n headers?:\n | HeadersInit\n | ((\n context: AgentNativeExtensionStorageContext,\n ) => HeadersInit | Promise<HeadersInit>);\n credentials?: RequestCredentials;\n}\n\nexport interface BuildAgentNativeExtensionHtmlOptions {\n extensionId: string;\n content: string;\n title?: string;\n slotId?: string;\n slotContext?: Record<string, unknown> | null;\n themeCss?: string;\n isDark?: boolean;\n}\n\nfunction firstList<T>(\n ...values: Array<readonly T[] | undefined>\n): readonly T[] | undefined {\n return values.find((value) => Array.isArray(value));\n}\n\nexport function getAgentNativeExtensionManifest(\n extension: AgentNativeExtensionDefinition,\n): AgentNativeExtensionManifest {\n return {\n slots: firstList(extension.manifest?.slots, extension.slots),\n requestedActions: firstList(\n extension.manifest?.requestedActions,\n extension.requestedActions,\n ),\n requestedCommands: firstList(\n extension.manifest?.requestedCommands,\n extension.requestedCommands,\n ),\n storageScopes: firstList(\n extension.manifest?.storageScopes,\n extension.storageScopes,\n ),\n };\n}\n\nexport function isAgentNativeExtensionAllowedInSlot(\n extension: AgentNativeExtensionDefinition,\n slotId: string | undefined,\n): boolean {\n if (!slotId) return true;\n const slots = getAgentNativeExtensionManifest(extension).slots;\n if (!slots) return true;\n return slots.includes(slotId);\n}\n\nfunction escapeHtmlAttribute(value: string): string {\n return value\n .replace(/&/g, \"&amp;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\");\n}\n\nfunction safeJson(value: unknown): string {\n try {\n const json = JSON.stringify(value);\n return typeof json === \"string\" ? json.replace(/</g, \"\\\\u003c\") : \"null\";\n } catch {\n return \"null\";\n }\n}\n\nfunction encodedSegment(value: string): string {\n return encodeURIComponent(value);\n}\n\nfunction storageScope(\n options: AgentNativeExtensionStorageOptions | undefined,\n context: AgentNativeExtensionStorageContext,\n): string {\n const scope = options?.scope ?? context.scope ?? \"user\";\n return typeof scope === \"string\" && scope ? scope : \"user\";\n}\n\nfunction localStorageRef(): Storage {\n if (typeof window === \"undefined\" || !window.localStorage) {\n throw new Error(\"Extension localStorage is not available\");\n }\n return window.localStorage;\n}\n\nfunction bucketKey(\n namespace: string,\n extensionId: string,\n scope: string,\n collection: string,\n): string {\n return [\n \"agent-native\",\n \"extension-data\",\n encodedSegment(namespace),\n encodedSegment(extensionId),\n encodedSegment(scope),\n encodedSegment(collection),\n ].join(\":\");\n}\n\nfunction readBucket(\n storage: Storage,\n key: string,\n): Record<string, AgentNativeExtensionStorageRow> {\n const raw = storage.getItem(key);\n if (!raw) return {};\n try {\n const parsed = JSON.parse(raw);\n return parsed && typeof parsed === \"object\" && !Array.isArray(parsed)\n ? (parsed as Record<string, AgentNativeExtensionStorageRow>)\n : {};\n } catch {\n return {};\n }\n}\n\nfunction writeBucket(\n storage: Storage,\n key: string,\n value: Record<string, AgentNativeExtensionStorageRow>,\n) {\n storage.setItem(key, JSON.stringify(value));\n}\n\nfunction listLocalStorageBuckets(\n storage: Storage,\n namespace: string,\n extensionId: string,\n collection: string,\n): string[] {\n const prefix = [\n \"agent-native\",\n \"extension-data\",\n encodedSegment(namespace),\n encodedSegment(extensionId),\n \"\",\n ].join(\":\");\n const suffix = `:${encodedSegment(collection)}`;\n const keys: string[] = [];\n for (let index = 0; index < storage.length; index += 1) {\n const key = storage.key(index);\n if (key?.startsWith(prefix) && key.endsWith(suffix)) keys.push(key);\n }\n return keys;\n}\n\nexport function createLocalStorageAgentNativeExtensionStorage(\n namespace = \"default\",\n): AgentNativeExtensionStorage {\n return {\n list(collection, options, context) {\n const storage = localStorageRef();\n const scope = storageScope(options, context);\n const keys =\n scope === \"all\"\n ? listLocalStorageBuckets(\n storage,\n namespace,\n context.extensionId,\n collection,\n )\n : [bucketKey(namespace, context.extensionId, scope, collection)];\n const rows = keys.flatMap((key) =>\n Object.values(readBucket(storage, key)),\n );\n const limit = options?.limit ?? 100;\n return rows\n .sort((a, b) => b.updatedAt.localeCompare(a.updatedAt))\n .slice(0, Math.max(0, limit));\n },\n get(collection, id, options, context) {\n const rows = this.list(collection, options, context);\n if (rows instanceof Promise) {\n return rows.then(\n (resolved) => resolved.find((row) => row.id === id) ?? null,\n );\n }\n return rows.find((row) => row.id === id) ?? null;\n },\n set(collection, id, data, options, context) {\n const storage = localStorageRef();\n const scope = storageScope(options, context);\n if (scope === \"all\") {\n throw new Error('Extension data writes cannot use scope \"all\"');\n }\n const key = bucketKey(namespace, context.extensionId, scope, collection);\n const bucket = readBucket(storage, key);\n const now = new Date().toISOString();\n const row: AgentNativeExtensionStorageRow = {\n id,\n extensionId: context.extensionId,\n collection,\n data,\n scope,\n createdAt: bucket[id]?.createdAt ?? now,\n updatedAt: now,\n };\n bucket[id] = row;\n writeBucket(storage, key, bucket);\n return row;\n },\n remove(collection, id, options, context) {\n const storage = localStorageRef();\n const scope = storageScope(options, context);\n if (scope === \"all\") {\n throw new Error('Extension data deletes cannot use scope \"all\"');\n }\n const key = bucketKey(namespace, context.extensionId, scope, collection);\n const bucket = readBucket(storage, key);\n const removed = Boolean(bucket[id]);\n delete bucket[id];\n writeBucket(storage, key, bucket);\n return { removed };\n },\n };\n}\n\nasync function resolveHttpStorageHeaders(\n headers: CreateHttpAgentNativeExtensionStorageOptions[\"headers\"],\n context: AgentNativeExtensionStorageContext,\n): Promise<HeadersInit | undefined> {\n return typeof headers === \"function\" ? headers(context) : headers;\n}\n\nasync function readHttpStorageResponse<TResult>(\n response: Response,\n): Promise<TResult> {\n const text = await response.text();\n let body: unknown = text;\n if (text) {\n try {\n body = JSON.parse(text);\n } catch {\n body = text;\n }\n }\n\n if (!response.ok) {\n const message =\n body && typeof body === \"object\" && \"error\" in body\n ? String((body as { error: unknown }).error)\n : `Extension storage request failed: ${response.status}`;\n throw new Error(message);\n }\n\n if (body && typeof body === \"object\" && \"result\" in body) {\n return (body as { result: TResult }).result;\n }\n return body as TResult;\n}\n\nexport function createHttpAgentNativeExtensionStorage({\n endpoint,\n fetch: fetchImpl,\n headers,\n credentials = \"same-origin\",\n}: CreateHttpAgentNativeExtensionStorageOptions): AgentNativeExtensionStorage {\n const run = async <TResult>(\n operation: \"list\" | \"get\" | \"set\" | \"remove\",\n collection: string,\n context: AgentNativeExtensionStorageContext,\n options?: AgentNativeExtensionStorageOptions,\n id?: string,\n data?: unknown,\n ): Promise<TResult> => {\n const requestFetch = fetchImpl ?? fetch;\n if (typeof requestFetch !== \"function\") {\n throw new Error(\"fetch is not available for extension storage\");\n }\n const resolvedHeaders = new Headers(\n await resolveHttpStorageHeaders(headers, context),\n );\n resolvedHeaders.set(\"Content-Type\", \"application/json\");\n\n const response = await requestFetch(endpoint, {\n method: \"POST\",\n credentials,\n headers: resolvedHeaders,\n body: JSON.stringify({\n operation,\n extensionId: context.extensionId,\n slotId: context.slotId,\n collection,\n id,\n data,\n options: options ?? {},\n context,\n }),\n });\n return readHttpStorageResponse<TResult>(response);\n };\n\n return {\n list(collection, options, context) {\n return run<AgentNativeExtensionStorageRow[]>(\n \"list\",\n collection,\n context,\n options,\n );\n },\n get(collection, id, options, context) {\n return run<AgentNativeExtensionStorageRow | null>(\n \"get\",\n collection,\n context,\n options,\n id,\n );\n },\n set(collection, id, data, options, context) {\n return run<AgentNativeExtensionStorageRow>(\n \"set\",\n collection,\n context,\n options,\n id,\n data,\n );\n },\n remove(collection, id, options, context) {\n return run<{ removed: boolean }>(\n \"remove\",\n collection,\n context,\n options,\n id,\n );\n },\n };\n}\n\nexport function normalizeAgentNativeExtensionSandbox(\n sandbox: string | undefined,\n): string {\n const tokens = new Set(\n (sandbox ?? \"allow-scripts allow-forms allow-popups allow-downloads\")\n .split(/\\s+/)\n .filter(Boolean),\n );\n tokens.delete(\"allow-same-origin\");\n tokens.add(\"allow-scripts\");\n tokens.add(\"allow-downloads\");\n return Array.from(tokens).join(\" \");\n}\n\nexport function buildAgentNativeExtensionHtml({\n extensionId,\n content,\n title,\n slotId,\n slotContext,\n themeCss = \"\",\n isDark = false,\n}: BuildAgentNativeExtensionHtmlOptions): string {\n const extensionIdJson = safeJson(extensionId);\n const slotIdJson = safeJson(slotId ?? \"\");\n const slotContextJson = safeJson(slotContext ?? {});\n const messageTypesJson = safeJson({\n host: AGENT_NATIVE_HOST_MESSAGE_TYPES,\n extension: AGENT_NATIVE_EXTENSION_MESSAGE_TYPES,\n });\n const titleText = title ?? \"Agent Native extension\";\n\n return `<!DOCTYPE html>\n<html lang=\"en\"${isDark ? ' class=\"dark\"' : \"\"}>\n<head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <meta http-equiv=\"Content-Security-Policy\" content=\"${escapeHtmlAttribute(EXTENSION_IFRAME_META_CSP)}\" />\n <title>${escapeHtmlAttribute(titleText)}</title>\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\" />\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin />\n <link href=\"https://fonts.googleapis.com/css2?family=Inter:wght@300..700&display=swap\" rel=\"stylesheet\" />\n <script\n src=\"https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4.2.4\"\n integrity=\"sha384-yNSZBFvuOWcmww494a9+1zNuvgUGEXoWkein7cxP8wHUTi3iXCU4vJ7hr3tzBCml\"\n crossorigin=\"anonymous\"\n ></script>\n <script\n defer\n src=\"https://cdn.jsdelivr.net/npm/alpinejs@3.15.11/dist/cdn.min.js\"\n integrity=\"sha384-WPtu0YHhJ3arcykfnv1JgUffWDSKRnqnDeTpJUbOc2os2moEmLkIdaeR0trPN4be\"\n crossorigin=\"anonymous\"\n ></script>\n <style>${themeCss}</style>\n <style type=\"text/tailwindcss\">\n @custom-variant dark (&:where(.dark, .dark *));\n @theme {\n --color-border: hsl(var(--border, 214 32% 91%));\n --color-background: hsl(var(--background, 0 0% 100%));\n --color-foreground: hsl(var(--foreground, 222 47% 11%));\n --color-primary: hsl(var(--primary, 222 47% 11%));\n --color-primary-foreground: hsl(var(--primary-foreground, 210 40% 98%));\n --color-muted: hsl(var(--muted, 210 40% 96%));\n --color-muted-foreground: hsl(var(--muted-foreground, 215 16% 47%));\n --color-card: hsl(var(--card, 0 0% 100%));\n --color-card-foreground: hsl(var(--card-foreground, 222 47% 11%));\n --radius-lg: var(--radius, .5rem);\n --radius-md: calc(var(--radius, .5rem) - 2px);\n --radius-sm: calc(var(--radius, .5rem) - 4px);\n }\n </style>\n <style>\n *, *::before, *::after { box-sizing: border-box; border-color: hsl(var(--border, 214 32% 91%)); }\n html, body { margin: 0; min-height: 100%; background: transparent; color: hsl(var(--foreground, 222 47% 11%)); }\n body {\n --agent-native-extension-padding: clamp(12px, 2vw, 20px);\n font-family: Inter, ui-sans-serif, system-ui, sans-serif;\n padding: var(--agent-native-extension-padding);\n }\n body:has(> [data-extension-layout=\"full-bleed\"]),\n body:has(> [data-extension-padding=\"none\"]),\n body:has(> .agent-native-extension-bleed) {\n padding: 0;\n }\n </style>\n <script>\n (function() {\n var messageTypes = ${messageTypesJson};\n var extensionId = ${extensionIdJson};\n var slotId = ${slotIdJson};\n var slotContext = ${slotContextJson};\n var requestSeq = 0;\n var pending = {};\n\n function nextRequestId(prefix) {\n requestSeq += 1;\n return prefix + '-' + Date.now() + '-' + requestSeq;\n }\n\n function failMessage(message, fallback) {\n return typeof message.error === 'string' ? message.error : fallback;\n }\n\n function requestParent(message, responseType, timeoutMs) {\n timeoutMs = timeoutMs || 30000;\n return new Promise(function(resolve, reject) {\n var requestId = message.requestId || nextRequestId('extension');\n var timer = setTimeout(function() {\n delete pending[requestId];\n reject(new Error('Timed out waiting for host response'));\n }, timeoutMs);\n pending[requestId] = {\n responseType: responseType,\n resolve: resolve,\n reject: reject,\n timer: timer,\n };\n window.parent.postMessage(Object.assign({}, message, { requestId: requestId }), '*');\n });\n }\n\n window.addEventListener('message', function(event) {\n if (event.source !== window.parent) return;\n var message = event.data || {};\n\n if (message.type === messageTypes.host.INIT) {\n agentNative.init = message;\n agentNative.contextSnapshot = message.context || null;\n agentNative.actionsSnapshot = message.actions || [];\n window.dispatchEvent(new CustomEvent('agentNative:init', { detail: message }));\n return;\n }\n\n if (message.type === messageTypes.extension.SLOT_CONTEXT) {\n slotContext = message.context || {};\n agentNative.slotContext = slotContext;\n window.slotContext = slotContext;\n window.dispatchEvent(new CustomEvent('agentNative:slot-context', { detail: slotContext }));\n return;\n }\n\n var entry = pending[message.requestId];\n if (!entry || message.type !== entry.responseType) return;\n delete pending[message.requestId];\n clearTimeout(entry.timer);\n if (message.ok === false) {\n entry.reject(new Error(failMessage(message, 'Host request failed')));\n } else {\n entry.resolve(message);\n }\n });\n\n function hostContext() {\n return requestParent(\n { type: messageTypes.host.GET_CONTEXT },\n messageTypes.host.CONTEXT,\n ).then(function(message) { return message.context || {}; });\n }\n\n function hostActions() {\n return requestParent(\n { type: messageTypes.host.LIST_ACTIONS },\n messageTypes.host.ACTIONS,\n ).then(function(message) { return message.actions || []; });\n }\n\n function hostAction(name, args) {\n return requestParent(\n { type: messageTypes.host.RUN_ACTION, name: name, args: args || {} },\n messageTypes.host.ACTION_RESULT,\n ).then(function(message) { return message.result; });\n }\n\n function hostCommand(command, payload) {\n return requestParent(\n { type: messageTypes.host.COMMAND, command: command, payload: payload },\n messageTypes.host.COMMAND_RESULT,\n ).then(function(message) { return message.result; });\n }\n\n function storageRequest(op, collection, id, data, options) {\n return requestParent(\n {\n type: messageTypes.extension.STORAGE_REQUEST,\n op: op,\n collection: collection,\n id: id,\n data: data,\n options: options || {},\n },\n messageTypes.extension.STORAGE_RESPONSE,\n ).then(function(message) { return message.result; });\n }\n\n var extensionData = {\n list: function(collection, options) {\n return storageRequest('list', collection, undefined, undefined, options);\n },\n get: function(collection, id, options) {\n return storageRequest('get', collection, id, undefined, options);\n },\n set: function(collection, id, data, options) {\n return storageRequest('set', collection, id, data, options);\n },\n remove: function(collection, id, options) {\n return storageRequest('remove', collection, id, undefined, options);\n },\n };\n\n var agentNative = {\n version: '0.1.0',\n extensionId: extensionId,\n slotId: slotId,\n slotContext: slotContext,\n contextSnapshot: null,\n actionsSnapshot: [],\n init: null,\n context: hostContext,\n listActions: hostActions,\n action: hostAction,\n command: hostCommand,\n refresh: function(payload) { return hostCommand('refreshData', payload); },\n data: extensionData,\n };\n\n window.agentNative = agentNative;\n window.appAction = hostAction;\n window.extensionData = extensionData;\n window.toolData = extensionData;\n window.extensionId = extensionId;\n window.toolId = extensionId;\n window.slotContext = slotContext;\n\n function reportHeight() {\n try {\n var doc = document.documentElement;\n var body = document.body;\n var height = Math.max(\n doc ? doc.scrollHeight : 0,\n doc ? doc.offsetHeight : 0,\n body ? body.scrollHeight : 0,\n body ? body.offsetHeight : 0,\n );\n window.parent.postMessage({\n type: messageTypes.extension.RESIZE,\n extensionId: extensionId,\n slotId: slotId,\n height: height,\n }, '*');\n } catch (_) {}\n }\n\n window.addEventListener('load', reportHeight);\n if (typeof ResizeObserver !== 'undefined') {\n new ResizeObserver(reportHeight).observe(document.documentElement);\n } else {\n setInterval(reportHeight, 1000);\n }\n\n window.parent.postMessage({\n type: messageTypes.host.READY,\n requestId: nextRequestId('ready'),\n }, '*');\n })();\n </script>\n</head>\n<body>\n${content}\n</body>\n</html>`;\n}\n"]}
1
+ {"version":3,"file":"portable-extension.js","sourceRoot":"","sources":["../../../src/client/extensions/portable-extension.ts"],"names":[],"mappings":"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","sourcesContent":["import { EXTENSION_IFRAME_META_CSP } from \"../../extensions/html-shell.js\";\nimport { buildSessionReplayIframeBootstrap } from \"../../extensions/session-replay-iframe.js\";\nimport { AGENT_NATIVE_HOST_MESSAGE_TYPES } from \"../host-bridge.js\";\n\nexport const AGENT_NATIVE_EXTENSION_MESSAGE_TYPES = {\n STORAGE_REQUEST: \"agentNative.extension.storage\",\n STORAGE_RESPONSE: \"agentNative.extension.storageResult\",\n RESIZE: \"agentNative.extension.resize\",\n SLOT_CONTEXT: \"agentNative.extension.slotContext\",\n} as const;\n\nexport type AgentNativeExtensionMessageType =\n (typeof AGENT_NATIVE_EXTENSION_MESSAGE_TYPES)[keyof typeof AGENT_NATIVE_EXTENSION_MESSAGE_TYPES];\n\nexport type AgentNativeExtensionStorageScope = \"user\" | \"org\" | \"all\" | string;\n\nexport interface AgentNativeExtensionManifest {\n /** Slot IDs this extension may render into. Omit to let the host decide. */\n slots?: readonly string[];\n /** Host action names this extension is allowed to call. Omit to inherit the slot policy. */\n requestedActions?: readonly string[];\n /** Host command names this extension is allowed to call. Omit to inherit the slot policy. */\n requestedCommands?: readonly string[];\n /** Storage scopes this extension is allowed to use. Omit to inherit the slot policy. */\n storageScopes?: readonly AgentNativeExtensionStorageScope[];\n}\n\nexport interface AgentNativeExtensionDefinition {\n id: string;\n name: string;\n content: string;\n description?: string;\n updatedAt?: string;\n manifest?: AgentNativeExtensionManifest;\n slots?: readonly string[];\n requestedActions?: readonly string[];\n requestedCommands?: readonly string[];\n storageScopes?: readonly AgentNativeExtensionStorageScope[];\n [key: string]: unknown;\n}\n\nexport interface AgentNativeExtensionStorageOptions {\n scope?: AgentNativeExtensionStorageScope;\n limit?: number;\n [key: string]: unknown;\n}\n\nexport interface AgentNativeExtensionStorageContext {\n extensionId: string;\n slotId?: string;\n scope?: Exclude<AgentNativeExtensionStorageScope, \"all\">;\n userId?: string;\n organizationId?: string;\n [key: string]: unknown;\n}\n\nexport interface AgentNativeExtensionStorageRow<TData = unknown> {\n id: string;\n extensionId: string;\n collection: string;\n data: TData;\n scope: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface AgentNativeExtensionStorage {\n list(\n collection: string,\n options: AgentNativeExtensionStorageOptions | undefined,\n context: AgentNativeExtensionStorageContext,\n ):\n | AgentNativeExtensionStorageRow[]\n | Promise<AgentNativeExtensionStorageRow[]>;\n get(\n collection: string,\n id: string,\n options: AgentNativeExtensionStorageOptions | undefined,\n context: AgentNativeExtensionStorageContext,\n ):\n | AgentNativeExtensionStorageRow\n | null\n | Promise<AgentNativeExtensionStorageRow | null>;\n set(\n collection: string,\n id: string,\n data: unknown,\n options: AgentNativeExtensionStorageOptions | undefined,\n context: AgentNativeExtensionStorageContext,\n ): AgentNativeExtensionStorageRow | Promise<AgentNativeExtensionStorageRow>;\n remove(\n collection: string,\n id: string,\n options: AgentNativeExtensionStorageOptions | undefined,\n context: AgentNativeExtensionStorageContext,\n ): { removed: boolean } | Promise<{ removed: boolean }>;\n}\n\nexport interface CreateHttpAgentNativeExtensionStorageOptions {\n /** Endpoint that receives storage operation POSTs. */\n endpoint: string;\n fetch?: typeof fetch;\n headers?:\n | HeadersInit\n | ((\n context: AgentNativeExtensionStorageContext,\n ) => HeadersInit | Promise<HeadersInit>);\n credentials?: RequestCredentials;\n}\n\nexport interface BuildAgentNativeExtensionHtmlOptions {\n extensionId: string;\n content: string;\n title?: string;\n slotId?: string;\n slotContext?: Record<string, unknown> | null;\n themeCss?: string;\n isDark?: boolean;\n}\n\nfunction firstList<T>(\n ...values: Array<readonly T[] | undefined>\n): readonly T[] | undefined {\n return values.find((value) => Array.isArray(value));\n}\n\nexport function getAgentNativeExtensionManifest(\n extension: AgentNativeExtensionDefinition,\n): AgentNativeExtensionManifest {\n return {\n slots: firstList(extension.manifest?.slots, extension.slots),\n requestedActions: firstList(\n extension.manifest?.requestedActions,\n extension.requestedActions,\n ),\n requestedCommands: firstList(\n extension.manifest?.requestedCommands,\n extension.requestedCommands,\n ),\n storageScopes: firstList(\n extension.manifest?.storageScopes,\n extension.storageScopes,\n ),\n };\n}\n\nexport function isAgentNativeExtensionAllowedInSlot(\n extension: AgentNativeExtensionDefinition,\n slotId: string | undefined,\n): boolean {\n if (!slotId) return true;\n const slots = getAgentNativeExtensionManifest(extension).slots;\n if (!slots) return true;\n return slots.includes(slotId);\n}\n\nfunction escapeHtmlAttribute(value: string): string {\n return value\n .replace(/&/g, \"&amp;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\");\n}\n\nfunction safeJson(value: unknown): string {\n try {\n const json = JSON.stringify(value);\n return typeof json === \"string\" ? json.replace(/</g, \"\\\\u003c\") : \"null\";\n } catch {\n return \"null\";\n }\n}\n\nfunction encodedSegment(value: string): string {\n return encodeURIComponent(value);\n}\n\nfunction storageScope(\n options: AgentNativeExtensionStorageOptions | undefined,\n context: AgentNativeExtensionStorageContext,\n): string {\n const scope = options?.scope ?? context.scope ?? \"user\";\n return typeof scope === \"string\" && scope ? scope : \"user\";\n}\n\nfunction localStorageRef(): Storage {\n if (typeof window === \"undefined\" || !window.localStorage) {\n throw new Error(\"Extension localStorage is not available\");\n }\n return window.localStorage;\n}\n\nfunction bucketKey(\n namespace: string,\n extensionId: string,\n scope: string,\n collection: string,\n): string {\n return [\n \"agent-native\",\n \"extension-data\",\n encodedSegment(namespace),\n encodedSegment(extensionId),\n encodedSegment(scope),\n encodedSegment(collection),\n ].join(\":\");\n}\n\nfunction readBucket(\n storage: Storage,\n key: string,\n): Record<string, AgentNativeExtensionStorageRow> {\n const raw = storage.getItem(key);\n if (!raw) return {};\n try {\n const parsed = JSON.parse(raw);\n return parsed && typeof parsed === \"object\" && !Array.isArray(parsed)\n ? (parsed as Record<string, AgentNativeExtensionStorageRow>)\n : {};\n } catch {\n return {};\n }\n}\n\nfunction writeBucket(\n storage: Storage,\n key: string,\n value: Record<string, AgentNativeExtensionStorageRow>,\n) {\n storage.setItem(key, JSON.stringify(value));\n}\n\nfunction listLocalStorageBuckets(\n storage: Storage,\n namespace: string,\n extensionId: string,\n collection: string,\n): string[] {\n const prefix = [\n \"agent-native\",\n \"extension-data\",\n encodedSegment(namespace),\n encodedSegment(extensionId),\n \"\",\n ].join(\":\");\n const suffix = `:${encodedSegment(collection)}`;\n const keys: string[] = [];\n for (let index = 0; index < storage.length; index += 1) {\n const key = storage.key(index);\n if (key?.startsWith(prefix) && key.endsWith(suffix)) keys.push(key);\n }\n return keys;\n}\n\nexport function createLocalStorageAgentNativeExtensionStorage(\n namespace = \"default\",\n): AgentNativeExtensionStorage {\n return {\n list(collection, options, context) {\n const storage = localStorageRef();\n const scope = storageScope(options, context);\n const keys =\n scope === \"all\"\n ? listLocalStorageBuckets(\n storage,\n namespace,\n context.extensionId,\n collection,\n )\n : [bucketKey(namespace, context.extensionId, scope, collection)];\n const rows = keys.flatMap((key) =>\n Object.values(readBucket(storage, key)),\n );\n const limit = options?.limit ?? 100;\n return rows\n .sort((a, b) => b.updatedAt.localeCompare(a.updatedAt))\n .slice(0, Math.max(0, limit));\n },\n get(collection, id, options, context) {\n const rows = this.list(collection, options, context);\n if (rows instanceof Promise) {\n return rows.then(\n (resolved) => resolved.find((row) => row.id === id) ?? null,\n );\n }\n return rows.find((row) => row.id === id) ?? null;\n },\n set(collection, id, data, options, context) {\n const storage = localStorageRef();\n const scope = storageScope(options, context);\n if (scope === \"all\") {\n throw new Error('Extension data writes cannot use scope \"all\"');\n }\n const key = bucketKey(namespace, context.extensionId, scope, collection);\n const bucket = readBucket(storage, key);\n const now = new Date().toISOString();\n const row: AgentNativeExtensionStorageRow = {\n id,\n extensionId: context.extensionId,\n collection,\n data,\n scope,\n createdAt: bucket[id]?.createdAt ?? now,\n updatedAt: now,\n };\n bucket[id] = row;\n writeBucket(storage, key, bucket);\n return row;\n },\n remove(collection, id, options, context) {\n const storage = localStorageRef();\n const scope = storageScope(options, context);\n if (scope === \"all\") {\n throw new Error('Extension data deletes cannot use scope \"all\"');\n }\n const key = bucketKey(namespace, context.extensionId, scope, collection);\n const bucket = readBucket(storage, key);\n const removed = Boolean(bucket[id]);\n delete bucket[id];\n writeBucket(storage, key, bucket);\n return { removed };\n },\n };\n}\n\nasync function resolveHttpStorageHeaders(\n headers: CreateHttpAgentNativeExtensionStorageOptions[\"headers\"],\n context: AgentNativeExtensionStorageContext,\n): Promise<HeadersInit | undefined> {\n return typeof headers === \"function\" ? headers(context) : headers;\n}\n\nasync function readHttpStorageResponse<TResult>(\n response: Response,\n): Promise<TResult> {\n const text = await response.text();\n let body: unknown = text;\n if (text) {\n try {\n body = JSON.parse(text);\n } catch {\n body = text;\n }\n }\n\n if (!response.ok) {\n const message =\n body && typeof body === \"object\" && \"error\" in body\n ? String((body as { error: unknown }).error)\n : `Extension storage request failed: ${response.status}`;\n throw new Error(message);\n }\n\n if (body && typeof body === \"object\" && \"result\" in body) {\n return (body as { result: TResult }).result;\n }\n return body as TResult;\n}\n\nexport function createHttpAgentNativeExtensionStorage({\n endpoint,\n fetch: fetchImpl,\n headers,\n credentials = \"same-origin\",\n}: CreateHttpAgentNativeExtensionStorageOptions): AgentNativeExtensionStorage {\n const run = async <TResult>(\n operation: \"list\" | \"get\" | \"set\" | \"remove\",\n collection: string,\n context: AgentNativeExtensionStorageContext,\n options?: AgentNativeExtensionStorageOptions,\n id?: string,\n data?: unknown,\n ): Promise<TResult> => {\n const requestFetch = fetchImpl ?? fetch;\n if (typeof requestFetch !== \"function\") {\n throw new Error(\"fetch is not available for extension storage\");\n }\n const resolvedHeaders = new Headers(\n await resolveHttpStorageHeaders(headers, context),\n );\n resolvedHeaders.set(\"Content-Type\", \"application/json\");\n\n const response = await requestFetch(endpoint, {\n method: \"POST\",\n credentials,\n headers: resolvedHeaders,\n body: JSON.stringify({\n operation,\n extensionId: context.extensionId,\n slotId: context.slotId,\n collection,\n id,\n data,\n options: options ?? {},\n context,\n }),\n });\n return readHttpStorageResponse<TResult>(response);\n };\n\n return {\n list(collection, options, context) {\n return run<AgentNativeExtensionStorageRow[]>(\n \"list\",\n collection,\n context,\n options,\n );\n },\n get(collection, id, options, context) {\n return run<AgentNativeExtensionStorageRow | null>(\n \"get\",\n collection,\n context,\n options,\n id,\n );\n },\n set(collection, id, data, options, context) {\n return run<AgentNativeExtensionStorageRow>(\n \"set\",\n collection,\n context,\n options,\n id,\n data,\n );\n },\n remove(collection, id, options, context) {\n return run<{ removed: boolean }>(\n \"remove\",\n collection,\n context,\n options,\n id,\n );\n },\n };\n}\n\nexport function normalizeAgentNativeExtensionSandbox(\n sandbox: string | undefined,\n): string {\n const tokens = new Set(\n (sandbox ?? \"allow-scripts allow-forms allow-popups allow-downloads\")\n .split(/\\s+/)\n .filter(Boolean),\n );\n tokens.delete(\"allow-same-origin\");\n tokens.add(\"allow-scripts\");\n tokens.add(\"allow-downloads\");\n return Array.from(tokens).join(\" \");\n}\n\nexport function buildAgentNativeExtensionHtml({\n extensionId,\n content,\n title,\n slotId,\n slotContext,\n themeCss = \"\",\n isDark = false,\n}: BuildAgentNativeExtensionHtmlOptions): string {\n const extensionIdJson = safeJson(extensionId);\n const slotIdJson = safeJson(slotId ?? \"\");\n const slotContextJson = safeJson(slotContext ?? {});\n const messageTypesJson = safeJson({\n host: AGENT_NATIVE_HOST_MESSAGE_TYPES,\n extension: AGENT_NATIVE_EXTENSION_MESSAGE_TYPES,\n });\n const titleText = title ?? \"Agent Native extension\";\n\n return `<!DOCTYPE html>\n<html lang=\"en\"${isDark ? ' class=\"dark\"' : \"\"}>\n<head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <meta http-equiv=\"Content-Security-Policy\" content=\"${escapeHtmlAttribute(EXTENSION_IFRAME_META_CSP)}\" />\n <title>${escapeHtmlAttribute(titleText)}</title>\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\" />\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin />\n <link href=\"https://fonts.googleapis.com/css2?family=Inter:wght@300..700&display=swap\" rel=\"stylesheet\" />\n <script\n src=\"https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4.2.4\"\n integrity=\"sha384-yNSZBFvuOWcmww494a9+1zNuvgUGEXoWkein7cxP8wHUTi3iXCU4vJ7hr3tzBCml\"\n crossorigin=\"anonymous\"\n ></script>\n <script\n defer\n src=\"https://cdn.jsdelivr.net/npm/alpinejs@3.15.11/dist/cdn.min.js\"\n integrity=\"sha384-WPtu0YHhJ3arcykfnv1JgUffWDSKRnqnDeTpJUbOc2os2moEmLkIdaeR0trPN4be\"\n crossorigin=\"anonymous\"\n ></script>\n <style>${themeCss}</style>\n <style type=\"text/tailwindcss\">\n @custom-variant dark (&:where(.dark, .dark *));\n @theme {\n --color-border: hsl(var(--border, 214 32% 91%));\n --color-background: hsl(var(--background, 0 0% 100%));\n --color-foreground: hsl(var(--foreground, 222 47% 11%));\n --color-primary: hsl(var(--primary, 222 47% 11%));\n --color-primary-foreground: hsl(var(--primary-foreground, 210 40% 98%));\n --color-muted: hsl(var(--muted, 210 40% 96%));\n --color-muted-foreground: hsl(var(--muted-foreground, 215 16% 47%));\n --color-card: hsl(var(--card, 0 0% 100%));\n --color-card-foreground: hsl(var(--card-foreground, 222 47% 11%));\n --radius-lg: var(--radius, .5rem);\n --radius-md: calc(var(--radius, .5rem) - 2px);\n --radius-sm: calc(var(--radius, .5rem) - 4px);\n }\n </style>\n <style>\n *, *::before, *::after { box-sizing: border-box; border-color: hsl(var(--border, 214 32% 91%)); }\n html, body { margin: 0; min-height: 100%; background: transparent; color: hsl(var(--foreground, 222 47% 11%)); }\n body {\n --agent-native-extension-padding: clamp(12px, 2vw, 20px);\n font-family: Inter, ui-sans-serif, system-ui, sans-serif;\n padding: var(--agent-native-extension-padding);\n }\n body:has(> [data-extension-layout=\"full-bleed\"]),\n body:has(> [data-extension-padding=\"none\"]),\n body:has(> .agent-native-extension-bleed) {\n padding: 0;\n }\n </style>\n <script>\n (function() {\n var messageTypes = ${messageTypesJson};\n var extensionId = ${extensionIdJson};\n var slotId = ${slotIdJson};\n var slotContext = ${slotContextJson};\n var requestSeq = 0;\n var pending = {};\n\n function nextRequestId(prefix) {\n requestSeq += 1;\n return prefix + '-' + Date.now() + '-' + requestSeq;\n }\n\n function failMessage(message, fallback) {\n return typeof message.error === 'string' ? message.error : fallback;\n }\n\n function requestParent(message, responseType, timeoutMs) {\n timeoutMs = timeoutMs || 30000;\n return new Promise(function(resolve, reject) {\n var requestId = message.requestId || nextRequestId('extension');\n var timer = setTimeout(function() {\n delete pending[requestId];\n reject(new Error('Timed out waiting for host response'));\n }, timeoutMs);\n pending[requestId] = {\n responseType: responseType,\n resolve: resolve,\n reject: reject,\n timer: timer,\n };\n window.parent.postMessage(Object.assign({}, message, { requestId: requestId }), '*');\n });\n }\n\n window.addEventListener('message', function(event) {\n if (event.source !== window.parent) return;\n var message = event.data || {};\n\n if (message.type === messageTypes.host.INIT) {\n agentNative.init = message;\n agentNative.contextSnapshot = message.context || null;\n agentNative.actionsSnapshot = message.actions || [];\n window.dispatchEvent(new CustomEvent('agentNative:init', { detail: message }));\n return;\n }\n\n if (message.type === messageTypes.extension.SLOT_CONTEXT) {\n slotContext = message.context || {};\n agentNative.slotContext = slotContext;\n window.slotContext = slotContext;\n window.dispatchEvent(new CustomEvent('agentNative:slot-context', { detail: slotContext }));\n return;\n }\n\n var entry = pending[message.requestId];\n if (!entry || message.type !== entry.responseType) return;\n delete pending[message.requestId];\n clearTimeout(entry.timer);\n if (message.ok === false) {\n entry.reject(new Error(failMessage(message, 'Host request failed')));\n } else {\n entry.resolve(message);\n }\n });\n\n function hostContext() {\n return requestParent(\n { type: messageTypes.host.GET_CONTEXT },\n messageTypes.host.CONTEXT,\n ).then(function(message) { return message.context || {}; });\n }\n\n function hostActions() {\n return requestParent(\n { type: messageTypes.host.LIST_ACTIONS },\n messageTypes.host.ACTIONS,\n ).then(function(message) { return message.actions || []; });\n }\n\n function hostAction(name, args) {\n return requestParent(\n { type: messageTypes.host.RUN_ACTION, name: name, args: args || {} },\n messageTypes.host.ACTION_RESULT,\n ).then(function(message) { return message.result; });\n }\n\n function hostCommand(command, payload) {\n return requestParent(\n { type: messageTypes.host.COMMAND, command: command, payload: payload },\n messageTypes.host.COMMAND_RESULT,\n ).then(function(message) { return message.result; });\n }\n\n function storageRequest(op, collection, id, data, options) {\n return requestParent(\n {\n type: messageTypes.extension.STORAGE_REQUEST,\n op: op,\n collection: collection,\n id: id,\n data: data,\n options: options || {},\n },\n messageTypes.extension.STORAGE_RESPONSE,\n ).then(function(message) { return message.result; });\n }\n\n var extensionData = {\n list: function(collection, options) {\n return storageRequest('list', collection, undefined, undefined, options);\n },\n get: function(collection, id, options) {\n return storageRequest('get', collection, id, undefined, options);\n },\n set: function(collection, id, data, options) {\n return storageRequest('set', collection, id, data, options);\n },\n remove: function(collection, id, options) {\n return storageRequest('remove', collection, id, undefined, options);\n },\n };\n\n var agentNative = {\n version: '0.1.0',\n extensionId: extensionId,\n slotId: slotId,\n slotContext: slotContext,\n contextSnapshot: null,\n actionsSnapshot: [],\n init: null,\n context: hostContext,\n listActions: hostActions,\n action: hostAction,\n command: hostCommand,\n refresh: function(payload) { return hostCommand('refreshData', payload); },\n data: extensionData,\n };\n\n window.agentNative = agentNative;\n window.appAction = hostAction;\n window.extensionData = extensionData;\n window.toolData = extensionData;\n window.extensionId = extensionId;\n window.toolId = extensionId;\n window.slotContext = slotContext;\n\n function reportHeight() {\n try {\n var doc = document.documentElement;\n var body = document.body;\n var height = Math.max(\n doc ? doc.scrollHeight : 0,\n doc ? doc.offsetHeight : 0,\n body ? body.scrollHeight : 0,\n body ? body.offsetHeight : 0,\n );\n window.parent.postMessage({\n type: messageTypes.extension.RESIZE,\n extensionId: extensionId,\n slotId: slotId,\n height: height,\n }, '*');\n } catch (_) {}\n }\n\n window.addEventListener('load', reportHeight);\n if (typeof ResizeObserver !== 'undefined') {\n new ResizeObserver(reportHeight).observe(document.documentElement);\n } else {\n setInterval(reportHeight, 1000);\n }\n\n window.parent.postMessage({\n type: messageTypes.host.READY,\n requestId: nextRequestId('ready'),\n }, '*');\n })();\n </script>\n${buildSessionReplayIframeBootstrap()}\n</head>\n<body>\n${content}\n</body>\n</html>`;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../src/client/session-replay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../src/client/session-replay.ts"],"names":[],"mappings":"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"}