@opengeni/react 0.57.0 → 1.0.2-canary.37191796234001

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 (629) hide show
  1. package/README.md +654 -22
  2. package/dist/accounts.d.ts +64 -0
  3. package/dist/accounts.js +822 -0
  4. package/dist/accounts.js.map +1 -0
  5. package/dist/approvals.d.ts +2 -1
  6. package/dist/artifacts-document.js +3 -2
  7. package/dist/artifacts-presentation.js +3 -2
  8. package/dist/artifacts-spreadsheet.js +2 -2
  9. package/dist/artifacts.d.ts +4 -1
  10. package/dist/artifacts.js +518 -42
  11. package/dist/artifacts.js.map +1 -1
  12. package/dist/browser-viewer-GTR5XQ7X.js +16 -0
  13. package/dist/capability-catalog-row.d.ts +20 -0
  14. package/dist/capability-logo-fallback.d.ts +3 -0
  15. package/dist/chat-interactive-block-UGBTNB3L.js +11 -0
  16. package/dist/chat-interactive-block-UGBTNB3L.js.map +1 -0
  17. package/dist/{chunk-5UQPNLIO.js → chunk-23J2ZNXT.js} +4117 -3896
  18. package/dist/chunk-23J2ZNXT.js.map +1 -0
  19. package/dist/chunk-447JLCBU.js +209 -0
  20. package/dist/chunk-447JLCBU.js.map +1 -0
  21. package/dist/chunk-4RVYOY4O.js +379 -0
  22. package/dist/chunk-4RVYOY4O.js.map +1 -0
  23. package/dist/chunk-5CVXZA3Y.js +292 -0
  24. package/dist/chunk-5CVXZA3Y.js.map +1 -0
  25. package/dist/chunk-5J4FOW6Q.js +108 -0
  26. package/dist/chunk-5J4FOW6Q.js.map +1 -0
  27. package/dist/chunk-A2PI6UMY.js +41 -0
  28. package/dist/chunk-A2PI6UMY.js.map +1 -0
  29. package/dist/{chunk-7WCLAEFV.js → chunk-A4UJB2MM.js} +37 -27
  30. package/dist/chunk-A4UJB2MM.js.map +1 -0
  31. package/dist/chunk-B3V6TG77.js +41 -0
  32. package/dist/chunk-B3V6TG77.js.map +1 -0
  33. package/dist/chunk-BRM6FVZA.js +302 -0
  34. package/dist/chunk-BRM6FVZA.js.map +1 -0
  35. package/dist/chunk-C5X5AJXK.js +182 -0
  36. package/dist/chunk-C5X5AJXK.js.map +1 -0
  37. package/dist/chunk-CR7U7HAR.js +453 -0
  38. package/dist/chunk-CR7U7HAR.js.map +1 -0
  39. package/dist/{chunk-R3AZOAB5.js → chunk-DYWBUX5Q.js} +29 -123
  40. package/dist/chunk-DYWBUX5Q.js.map +1 -0
  41. package/dist/chunk-E3G7SAYZ.js +3124 -0
  42. package/dist/chunk-E3G7SAYZ.js.map +1 -0
  43. package/dist/chunk-ELCE5SXV.js +359 -0
  44. package/dist/chunk-ELCE5SXV.js.map +1 -0
  45. package/dist/chunk-ERGYJIBB.js +21 -0
  46. package/dist/chunk-ERGYJIBB.js.map +1 -0
  47. package/dist/chunk-FFA2OVOV.js +319 -0
  48. package/dist/chunk-FFA2OVOV.js.map +1 -0
  49. package/dist/chunk-FZCP527Y.js +116 -0
  50. package/dist/chunk-FZCP527Y.js.map +1 -0
  51. package/dist/chunk-GIMRELBW.js +14 -0
  52. package/dist/chunk-GIMRELBW.js.map +1 -0
  53. package/dist/{chunk-6KLX2RH5.js → chunk-H2NJQORO.js} +1069 -79
  54. package/dist/chunk-H2NJQORO.js.map +1 -0
  55. package/dist/chunk-I7IWRQLN.js +1608 -0
  56. package/dist/chunk-I7IWRQLN.js.map +1 -0
  57. package/dist/{chunk-HA46CYQK.js → chunk-IQUCRAT7.js} +792 -537
  58. package/dist/chunk-IQUCRAT7.js.map +1 -0
  59. package/dist/chunk-IWIDV7SB.js +1 -0
  60. package/dist/chunk-IWIDV7SB.js.map +1 -0
  61. package/dist/chunk-J2QWVSQY.js +312 -0
  62. package/dist/chunk-J2QWVSQY.js.map +1 -0
  63. package/dist/chunk-JFNEV4LU.js +2733 -0
  64. package/dist/chunk-JFNEV4LU.js.map +1 -0
  65. package/dist/chunk-JT4JW7BC.js +54 -0
  66. package/dist/chunk-JT4JW7BC.js.map +1 -0
  67. package/dist/chunk-K3HQAKQX.js +24 -0
  68. package/dist/chunk-K3HQAKQX.js.map +1 -0
  69. package/dist/{chunk-C5ZPSSS5.js → chunk-NEXLLTP4.js} +2 -1
  70. package/dist/{chunk-C5ZPSSS5.js.map → chunk-NEXLLTP4.js.map} +1 -1
  71. package/dist/chunk-NZUI76EM.js +371 -0
  72. package/dist/chunk-NZUI76EM.js.map +1 -0
  73. package/dist/{chunk-PEI6RANI.js → chunk-PNY3JKBJ.js} +309 -74
  74. package/dist/chunk-PNY3JKBJ.js.map +1 -0
  75. package/dist/{chunk-IGC6A2ZI.js → chunk-Q5QBEZIQ.js} +777 -246
  76. package/dist/chunk-Q5QBEZIQ.js.map +1 -0
  77. package/dist/chunk-RHREZ7BO.js +11 -0
  78. package/dist/chunk-RHREZ7BO.js.map +1 -0
  79. package/dist/chunk-SCOTPE2I.js +589 -0
  80. package/dist/chunk-SCOTPE2I.js.map +1 -0
  81. package/dist/{chunk-B6WPZSTT.js → chunk-SJZDKVW2.js} +1331 -1163
  82. package/dist/chunk-SJZDKVW2.js.map +1 -0
  83. package/dist/chunk-TMJRG4YC.js +12803 -0
  84. package/dist/chunk-TMJRG4YC.js.map +1 -0
  85. package/dist/chunk-TMYGL6X5.js +742 -0
  86. package/dist/chunk-TMYGL6X5.js.map +1 -0
  87. package/dist/chunk-UGLEYEMP.js +33 -0
  88. package/dist/chunk-UGLEYEMP.js.map +1 -0
  89. package/dist/chunk-UK4TINKT.js +27 -0
  90. package/dist/chunk-UK4TINKT.js.map +1 -0
  91. package/dist/chunk-UTRTG6LH.js +220 -0
  92. package/dist/chunk-UTRTG6LH.js.map +1 -0
  93. package/dist/chunk-WEHMPOXK.js +39 -0
  94. package/dist/chunk-WEHMPOXK.js.map +1 -0
  95. package/dist/chunk-WRHIZYZF.js +988 -0
  96. package/dist/chunk-WRHIZYZF.js.map +1 -0
  97. package/dist/{chunk-HUIKIDM5.js → chunk-WUISZ3WU.js} +223 -115
  98. package/dist/chunk-WUISZ3WU.js.map +1 -0
  99. package/dist/chunk-XCHWDJ22.js +107 -0
  100. package/dist/chunk-XCHWDJ22.js.map +1 -0
  101. package/dist/chunk-XOAMRDDK.js +481 -0
  102. package/dist/chunk-XOAMRDDK.js.map +1 -0
  103. package/dist/chunk-XUW2UWQM.js +299 -0
  104. package/dist/chunk-XUW2UWQM.js.map +1 -0
  105. package/dist/{chunk-KCGXPP5V.js → chunk-Y2PRMYLC.js} +11 -6
  106. package/dist/chunk-Y2PRMYLC.js.map +1 -0
  107. package/dist/chunk-YBXQDQFX.js +1772 -0
  108. package/dist/chunk-YBXQDQFX.js.map +1 -0
  109. package/dist/{chunk-KZ73RL76.js → chunk-YQEAA6LT.js} +7 -3
  110. package/dist/chunk-YQEAA6LT.js.map +1 -0
  111. package/dist/chunk-YV4L3ILF.js +9 -0
  112. package/dist/chunk-YV4L3ILF.js.map +1 -0
  113. package/dist/{chunk-LLOLUHVG.js → chunk-YWFG7ZX7.js} +1358 -2746
  114. package/dist/chunk-YWFG7ZX7.js.map +1 -0
  115. package/dist/chunk-ZYRGEKWS.js +216 -0
  116. package/dist/chunk-ZYRGEKWS.js.map +1 -0
  117. package/dist/client.d.ts +7 -4
  118. package/dist/clipboard.js +1 -0
  119. package/dist/commands/types.d.ts +2 -0
  120. package/dist/components/anthropic-mark.d.ts +3 -0
  121. package/dist/components/approval-surface.d.ts +15 -0
  122. package/dist/components/artifacts/artifact-chrome.d.ts +120 -0
  123. package/dist/components/artifacts/artifact-sandbox.d.ts +27 -0
  124. package/dist/components/artifacts/artifact-surface.d.ts +3 -1
  125. package/dist/components/artifacts/chat-interactive-block.d.ts +29 -0
  126. package/dist/components/artifacts/deferred-chat-media.d.ts +15 -0
  127. package/dist/components/artifacts/document-editor.d.ts +4 -2
  128. package/dist/components/artifacts/editable-artifact-ui.d.ts +2 -1
  129. package/dist/components/artifacts/editable-artifact-view.d.ts +46 -0
  130. package/dist/components/artifacts/editable-document.d.ts +1 -1
  131. package/dist/components/artifacts/editable-presentation.d.ts +2 -2
  132. package/dist/components/artifacts/editable-spreadsheet.d.ts +2 -1
  133. package/dist/components/artifacts/index.d.ts +8 -1
  134. package/dist/components/artifacts/inline-html-document.d.ts +2 -0
  135. package/dist/components/artifacts/latest-task-runner.d.ts +15 -0
  136. package/dist/components/artifacts/presentation-editor.d.ts +6 -2
  137. package/dist/components/artifacts/published-html-artifact-frame.d.ts +48 -3
  138. package/dist/components/artifacts/session-artifact-viewer.d.ts +39 -0
  139. package/dist/components/artifacts/site-view.d.ts +23 -0
  140. package/dist/components/artifacts/spreadsheet-general-display.d.ts +24 -0
  141. package/dist/components/artifacts/visualization-assets.gen.d.ts +2 -0
  142. package/dist/components/browser-select-control.d.ts +16 -0
  143. package/dist/components/browser-viewer.d.ts +10 -1
  144. package/dist/components/chat-composer.d.ts +21 -3
  145. package/dist/components/child-session-link.d.ts +5 -0
  146. package/dist/components/claude-mark.d.ts +3 -0
  147. package/dist/components/code-editor.d.ts +1 -4
  148. package/dist/components/composer.d.ts +45 -4
  149. package/dist/components/computer-viewer.d.ts +4 -1
  150. package/dist/components/copy-button.d.ts +3 -1
  151. package/dist/components/desktop-viewer.d.ts +1 -1
  152. package/dist/components/enrollment-consent.d.ts +6 -3
  153. package/dist/components/file-browser.d.ts +10 -1
  154. package/dist/components/fleet-tile.d.ts +2 -2
  155. package/dist/components/grok-mark.d.ts +26 -0
  156. package/dist/components/human-input-form.d.ts +21 -2
  157. package/dist/components/human-input-surface.d.ts +6 -3
  158. package/dist/components/machine-card.d.ts +4 -1
  159. package/dist/components/machines/machine-detail.d.ts +4 -1
  160. package/dist/components/machines/machine-operation-policy.d.ts +11 -0
  161. package/dist/components/machines-dashboard.d.ts +3 -1
  162. package/dist/components/markdown-table-layout.d.ts +12 -0
  163. package/dist/components/markdown.d.ts +47 -3
  164. package/dist/components/message-timeline.d.ts +72 -9
  165. package/dist/components/model-mark.d.ts +29 -0
  166. package/dist/components/model-policy-picker-menu.d.ts +9 -0
  167. package/dist/components/model-policy-picker.d.ts +62 -13
  168. package/dist/components/open-geni-chat.d.ts +55 -0
  169. package/dist/components/open-geni-links.d.ts +68 -0
  170. package/dist/components/openrouter-mark.d.ts +6 -0
  171. package/dist/components/pierre-file.d.ts +1 -1
  172. package/dist/components/preview-loading.d.ts +2 -0
  173. package/dist/components/queue-item-content.d.ts +9 -0
  174. package/dist/components/sandbox-files.d.ts +13 -2
  175. package/dist/components/sandbox-workspace.d.ts +43 -3
  176. package/dist/components/session-capability-frame.d.ts +35 -0
  177. package/dist/components/session-chrome.d.ts +66 -8
  178. package/dist/components/session-commands-panel.d.ts +6 -0
  179. package/dist/components/session-commands.d.ts +6 -0
  180. package/dist/components/session-connection-request.d.ts +8 -0
  181. package/dist/components/session-conversation.d.ts +86 -0
  182. package/dist/components/session-list.d.ts +36 -0
  183. package/dist/components/session-mcp-capability-card.d.ts +41 -0
  184. package/dist/components/timeline-anchor.d.ts +24 -0
  185. package/dist/components/timeline-annotation-chrome.d.ts +25 -0
  186. package/dist/components/timeline-annotation-layout.d.ts +42 -0
  187. package/dist/components/timeline-annotation-markers.d.ts +8 -0
  188. package/dist/components/timeline-annotation-reveal-context.d.ts +4 -0
  189. package/dist/components/timeline-annotation-shared.d.ts +31 -0
  190. package/dist/components/timeline-annotations-dialog.d.ts +3 -2
  191. package/dist/components/timeline-annotations.d.ts +13 -3
  192. package/dist/components/timeline-reading-progress.d.ts +11 -0
  193. package/dist/components/timeline-search.d.ts +34 -0
  194. package/dist/components/timeline-settlement.d.ts +16 -0
  195. package/dist/components/tip-follow.d.ts +16 -0
  196. package/dist/components/usage-limit-notice.d.ts +49 -0
  197. package/dist/components/usage-member-list.d.ts +91 -0
  198. package/dist/components/usage-meter.d.ts +73 -0
  199. package/dist/components/use-viewer-menu-dismiss.d.ts +2 -0
  200. package/dist/components/user-message-body.d.ts +10 -1
  201. package/dist/components/workspace-dock.d.ts +6 -2
  202. package/dist/composer.d.ts +5 -4
  203. package/dist/composer.js +15 -9
  204. package/dist/computer-viewer-ENHVAZ2Q.js +19 -0
  205. package/dist/computer-viewer-ENHVAZ2Q.js.map +1 -0
  206. package/dist/connect-account-identity.d.ts +8 -0
  207. package/dist/connect-accounts.d.ts +15 -0
  208. package/dist/connect-chooser.d.ts +18 -0
  209. package/dist/connect-panel.d.ts +18 -0
  210. package/dist/connect-setup.d.ts +16 -0
  211. package/dist/connect.d.ts +21 -0
  212. package/dist/connect.js +2129 -0
  213. package/dist/connect.js.map +1 -0
  214. package/dist/connection-catalog.d.ts +38 -0
  215. package/dist/connection-discovery.d.ts +12 -0
  216. package/dist/connection-installed.d.ts +17 -0
  217. package/dist/connection-logo.d.ts +9 -0
  218. package/dist/connection-service-logo.d.ts +8 -0
  219. package/dist/connection-service-presentation.d.ts +13 -0
  220. package/dist/connection-skeleton.d.ts +5 -0
  221. package/dist/connection-type-picker.d.ts +6 -0
  222. package/dist/conversation-timeline.d.ts +5 -0
  223. package/dist/desktop.d.ts +7 -0
  224. package/dist/desktop.js +26 -0
  225. package/dist/desktop.js.map +1 -0
  226. package/dist/device-authorization.d.ts +23 -0
  227. package/dist/diffs.d.ts +8 -0
  228. package/dist/diffs.js +14 -0
  229. package/dist/diffs.js.map +1 -0
  230. package/dist/discovery-cache.d.ts +5 -0
  231. package/dist/editor.d.ts +7 -0
  232. package/dist/editor.js +21 -0
  233. package/dist/editor.js.map +1 -0
  234. package/dist/embedded-session-client.d.ts +23 -0
  235. package/dist/file-node-visibility.d.ts +15 -0
  236. package/dist/{fleet-decision-row-GGCAT4E4.js → fleet-decision-row-YZ3ZKWMM.js} +2 -1
  237. package/dist/fleet-decision-row-YZ3ZKWMM.js.map +1 -0
  238. package/dist/hooks/channel-cache.d.ts +23 -0
  239. package/dist/hooks/latest-question.d.ts +25 -0
  240. package/dist/hooks/shared-machines-list.d.ts +14 -0
  241. package/dist/hooks/use-attached-browsers.d.ts +2 -1
  242. package/dist/hooks/use-browser-frame-stream.d.ts +1 -1
  243. package/dist/hooks/use-browser-session.d.ts +12 -1
  244. package/dist/hooks/use-channels.d.ts +1 -0
  245. package/dist/hooks/use-codex-accounts.d.ts +25 -7
  246. package/dist/hooks/use-composer.d.ts +45 -9
  247. package/dist/hooks/use-computer-frame-stream.d.ts +1 -1
  248. package/dist/hooks/use-computer-input-posture.d.ts +13 -0
  249. package/dist/hooks/use-computer-session.d.ts +2 -0
  250. package/dist/hooks/use-connect.d.ts +22 -0
  251. package/dist/hooks/use-desktop-stream.d.ts +1 -1
  252. package/dist/hooks/use-file-attachments.d.ts +21 -2
  253. package/dist/hooks/use-machine-chip.d.ts +3 -3
  254. package/dist/hooks/use-machines.d.ts +19 -1
  255. package/dist/hooks/use-sandbox-files.d.ts +5 -1
  256. package/dist/hooks/use-session-background-commands.d.ts +14 -0
  257. package/dist/hooks/use-session-events.d.ts +30 -8
  258. package/dist/hooks/use-session-lineage.d.ts +4 -0
  259. package/dist/hooks/use-session-mcp-approval-policy.d.ts +2 -2
  260. package/dist/hooks/use-session.d.ts +6 -0
  261. package/dist/hooks/use-turn-queue.d.ts +12 -0
  262. package/dist/hooks/use-usage.d.ts +40 -0
  263. package/dist/hooks/use-workspace-edit.d.ts +4 -0
  264. package/dist/hooks/use-workspace-sessions.d.ts +27 -5
  265. package/dist/human-input.d.ts +3 -1
  266. package/dist/identity-link-accounts.d.ts +11 -0
  267. package/dist/identity-link-consent.d.ts +18 -0
  268. package/dist/index.d.ts +60 -17
  269. package/dist/index.js +2237 -6200
  270. package/dist/index.js.map +1 -1
  271. package/dist/interaction.d.ts +1 -1
  272. package/dist/interaction.js +35 -184
  273. package/dist/interaction.js.map +1 -1
  274. package/dist/latest-question-755OW5DS.js +117 -0
  275. package/dist/latest-question-755OW5DS.js.map +1 -0
  276. package/dist/lib/error-message.d.ts +7 -0
  277. package/dist/lib/format.d.ts +36 -2
  278. package/dist/lib/host-theme.d.ts +70 -0
  279. package/dist/lib/interaction-errors.d.ts +6 -0
  280. package/dist/lib/menu-styles.d.ts +22 -0
  281. package/dist/lib/pierre-diffs-loader.d.ts +20 -0
  282. package/dist/lib/workbench-peers.d.ts +36 -0
  283. package/dist/lib/xterm-theme.d.ts +7 -5
  284. package/dist/machines.d.ts +4 -2
  285. package/dist/machines.js +14 -4
  286. package/dist/markdown-table-layout-QXSLK4BY.js +106 -0
  287. package/dist/markdown-table-layout-QXSLK4BY.js.map +1 -0
  288. package/dist/mcp-connection-status.d.ts +14 -0
  289. package/dist/model-policy-picker-menu-PWRI7R2X.js +14 -0
  290. package/dist/model-policy-picker-menu-PWRI7R2X.js.map +1 -0
  291. package/dist/model-policy.d.ts +19 -3
  292. package/dist/model-policy.js +9 -1
  293. package/dist/older-history.d.ts +30 -0
  294. package/dist/platform-activity-row-627BFZ46.js +182 -0
  295. package/dist/platform-activity-row-627BFZ46.js.map +1 -0
  296. package/dist/plugin-details.d.ts +14 -0
  297. package/dist/plugin-discovery.d.ts +25 -0
  298. package/dist/provider.d.ts +13 -1
  299. package/dist/{queue-surface-implementation-2KVJTYXH.js → queue-surface-implementation-ZHFI5JBP.js} +131 -44
  300. package/dist/queue-surface-implementation-ZHFI5JBP.js.map +1 -0
  301. package/dist/realtime/realtime-control.d.ts +10 -3
  302. package/dist/realtime.js +229 -83
  303. package/dist/realtime.js.map +1 -1
  304. package/dist/sandbox-files-BBC47SLD.js +20 -0
  305. package/dist/sandbox-files-BBC47SLD.js.map +1 -0
  306. package/dist/session-auth-recommendation.d.ts +5 -0
  307. package/dist/session-capability-policy.d.ts +12 -0
  308. package/dist/session-ui.d.ts +30 -2
  309. package/dist/session-ui.js +85 -7
  310. package/dist/session-ui.js.map +1 -1
  311. package/dist/session.d.ts +8 -2
  312. package/dist/session.js +30 -19
  313. package/dist/sites-ui.d.ts +34 -0
  314. package/dist/sites.d.ts +3 -0
  315. package/dist/sites.js +11 -0
  316. package/dist/sites.js.map +1 -0
  317. package/dist/skill-discovery.d.ts +47 -0
  318. package/dist/terminal.d.ts +8 -0
  319. package/dist/terminal.js +31 -0
  320. package/dist/terminal.js.map +1 -0
  321. package/dist/timeline/activity-rail.d.ts +11 -2
  322. package/dist/timeline/allowance-exhausted-row.d.ts +24 -0
  323. package/dist/timeline/compaction-copy.d.ts +10 -0
  324. package/dist/timeline/entrance.d.ts +13 -1
  325. package/dist/timeline/genie-loading.d.ts +34 -0
  326. package/dist/timeline/index.d.ts +6 -2
  327. package/dist/timeline/knowledge-receipt.d.ts +17 -0
  328. package/dist/timeline/platform-activity-row.d.ts +14 -0
  329. package/dist/timeline/presented-image.d.ts +6 -0
  330. package/dist/timeline/projection.d.ts +31 -2
  331. package/dist/timeline/registry.d.ts +2 -0
  332. package/dist/timeline/retained-image.d.ts +18 -0
  333. package/dist/timeline/rolling-activity.d.ts +11 -0
  334. package/dist/timeline/screenshot-lightbox.d.ts +16 -1
  335. package/dist/timeline/shared.d.ts +8 -3
  336. package/dist/timeline/startup-preference.d.ts +3 -0
  337. package/dist/timeline/startup-timings.d.ts +4 -0
  338. package/dist/timeline/tool-display-name.d.ts +2 -1
  339. package/dist/timeline/turn-summary.d.ts +32 -3
  340. package/dist/timeline/types.d.ts +141 -7
  341. package/dist/timeline-annotation-markers-GNDHTGBD.js +165 -0
  342. package/dist/timeline-annotation-markers-GNDHTGBD.js.map +1 -0
  343. package/dist/timeline-annotation-selection-DMLMM2TX.js +241 -0
  344. package/dist/timeline-annotation-selection-DMLMM2TX.js.map +1 -0
  345. package/dist/timeline-annotations-dialog-ELRDBHTS.js +273 -0
  346. package/dist/timeline-annotations-dialog-ELRDBHTS.js.map +1 -0
  347. package/dist/types/machines.d.ts +2 -2
  348. package/dist/usage/allowance-copy.d.ts +25 -0
  349. package/dist/usage/summary.d.ts +35 -0
  350. package/dist/usage.d.ts +13 -0
  351. package/dist/usage.js +1074 -0
  352. package/dist/usage.js.map +1 -0
  353. package/package.json +44 -4
  354. package/src/accounts.tsx +1072 -0
  355. package/src/approvals.ts +8 -1
  356. package/src/artifacts.ts +42 -0
  357. package/src/assets/README.md +8 -0
  358. package/src/assets/gmail.ico +0 -0
  359. package/src/assets/outlook.ico +0 -0
  360. package/src/capability-catalog-row.tsx +94 -0
  361. package/src/capability-logo-fallback.ts +22 -0
  362. package/src/client.ts +22 -13
  363. package/src/commands/registry.ts +18 -15
  364. package/src/commands/types.ts +2 -0
  365. package/src/components/anthropic-mark.tsx +10 -0
  366. package/src/components/approval-surface.tsx +171 -37
  367. package/src/components/artifacts/artifact-chrome.tsx +413 -0
  368. package/src/components/artifacts/artifact-sandbox.tsx +185 -0
  369. package/src/components/artifacts/artifact-surface.tsx +39 -19
  370. package/src/components/artifacts/chat-interactive-block.tsx +260 -0
  371. package/src/components/artifacts/deferred-chat-media.tsx +67 -0
  372. package/src/components/artifacts/document-editor.tsx +141 -16
  373. package/src/components/artifacts/editable-artifact-ui.tsx +4 -2
  374. package/src/components/artifacts/editable-artifact-view.tsx +187 -0
  375. package/src/components/artifacts/editable-artifact-workbench.tsx +5 -2
  376. package/src/components/artifacts/editable-document.tsx +37 -36
  377. package/src/components/artifacts/editable-presentation.tsx +36 -18
  378. package/src/components/artifacts/editable-spreadsheet.tsx +5 -2
  379. package/src/components/artifacts/index.ts +44 -0
  380. package/src/components/artifacts/inline-html-document.ts +24 -0
  381. package/src/components/artifacts/latest-task-runner.ts +49 -0
  382. package/src/components/artifacts/presentation-editor.tsx +323 -67
  383. package/src/components/artifacts/published-html-artifact-frame.tsx +338 -5
  384. package/src/components/artifacts/session-artifact-viewer.tsx +376 -0
  385. package/src/components/artifacts/site-view.tsx +116 -0
  386. package/src/components/artifacts/spreadsheet-canvas.ts +5 -10
  387. package/src/components/artifacts/spreadsheet-general-display.ts +43 -0
  388. package/src/components/artifacts/spreadsheet-grid.tsx +12 -13
  389. package/src/components/artifacts/visualization-assets/base.css +1015 -0
  390. package/src/components/artifacts/visualization-assets/helpers.html +349 -0
  391. package/src/components/artifacts/visualization-assets.gen.ts +3 -0
  392. package/src/components/browser-select-control.tsx +312 -0
  393. package/src/components/browser-viewer.tsx +1054 -314
  394. package/src/components/chat-composer.tsx +131 -85
  395. package/src/components/child-session-link.tsx +27 -0
  396. package/src/components/claude-mark.tsx +10 -0
  397. package/src/components/code-editor.tsx +13 -16
  398. package/src/components/composer-transcription-control.tsx +7 -5
  399. package/src/components/composer.tsx +376 -49
  400. package/src/components/computer-viewer.tsx +1041 -329
  401. package/src/components/copy-button.tsx +13 -5
  402. package/src/components/desktop-viewer.tsx +1 -1
  403. package/src/components/enrollment-consent.tsx +65 -7
  404. package/src/components/enrollment-device-flow.tsx +1 -1
  405. package/src/components/file-browser.tsx +158 -34
  406. package/src/components/fleet-tile.tsx +8 -16
  407. package/src/components/generated-video-player.tsx +4 -2
  408. package/src/components/grok-mark.tsx +33 -0
  409. package/src/components/human-input-form.tsx +455 -114
  410. package/src/components/human-input-surface.tsx +18 -7
  411. package/src/components/interaction-intervention-banner.tsx +2 -2
  412. package/src/components/machine-card.tsx +119 -4
  413. package/src/components/machine-dock-bar.tsx +1 -1
  414. package/src/components/machine-input-display.ts +23 -2
  415. package/src/components/machines/machine-detail.tsx +52 -2
  416. package/src/components/machines/machine-operation-policy.tsx +179 -0
  417. package/src/components/machines-dashboard.tsx +8 -17
  418. package/src/components/markdown-table-layout.ts +132 -0
  419. package/src/components/markdown.tsx +473 -44
  420. package/src/components/message-timeline.tsx +2498 -663
  421. package/src/components/model-mark.tsx +90 -0
  422. package/src/components/model-picker.tsx +15 -4
  423. package/src/components/model-policy-picker-menu.tsx +424 -0
  424. package/src/components/model-policy-picker.tsx +337 -381
  425. package/src/components/open-geni-chat.tsx +319 -0
  426. package/src/components/open-geni-links.tsx +179 -0
  427. package/src/components/openrouter-mark.tsx +13 -0
  428. package/src/components/pierre-diff.tsx +41 -16
  429. package/src/components/pierre-file.tsx +36 -11
  430. package/src/components/preview-loading.tsx +154 -0
  431. package/src/components/queue-item-content.ts +14 -0
  432. package/src/components/queue-surface-implementation.tsx +132 -42
  433. package/src/components/queue-surface-state.tsx +3 -1
  434. package/src/components/sandbox-files.tsx +267 -35
  435. package/src/components/sandbox-terminal.tsx +48 -11
  436. package/src/components/sandbox-workspace.tsx +337 -135
  437. package/src/components/session-capability-frame.tsx +192 -0
  438. package/src/components/session-chrome.tsx +1027 -328
  439. package/src/components/session-commands-panel.tsx +126 -0
  440. package/src/components/session-commands.tsx +18 -0
  441. package/src/components/session-connection-request.tsx +97 -0
  442. package/src/components/session-conversation.tsx +512 -0
  443. package/src/components/session-list.tsx +250 -0
  444. package/src/components/session-mcp-capability-card.tsx +680 -0
  445. package/src/components/session-status.tsx +1 -1
  446. package/src/components/timeline-anchor.tsx +119 -0
  447. package/src/components/timeline-annotation-chrome.tsx +196 -0
  448. package/src/components/timeline-annotation-layout.ts +268 -0
  449. package/src/components/timeline-annotation-markers.tsx +185 -0
  450. package/src/components/timeline-annotation-reveal-context.ts +9 -0
  451. package/src/components/timeline-annotation-selection.tsx +106 -54
  452. package/src/components/timeline-annotation-shared.ts +245 -0
  453. package/src/components/timeline-annotations-dialog.tsx +185 -128
  454. package/src/components/timeline-annotations.tsx +189 -45
  455. package/src/components/timeline-reading-progress.ts +80 -0
  456. package/src/components/timeline-search.tsx +168 -0
  457. package/src/components/timeline-settlement.ts +60 -0
  458. package/src/components/tip-follow.ts +70 -7
  459. package/src/components/tooltip.tsx +38 -5
  460. package/src/components/usage-limit-notice.tsx +179 -0
  461. package/src/components/usage-member-list.tsx +792 -0
  462. package/src/components/usage-meter.tsx +382 -0
  463. package/src/components/use-viewer-menu-dismiss.ts +33 -0
  464. package/src/components/user-message-body.tsx +194 -49
  465. package/src/components/workspace-dock.tsx +141 -175
  466. package/src/composer.ts +6 -1
  467. package/src/connect-account-identity.tsx +34 -0
  468. package/src/connect-accounts.tsx +233 -0
  469. package/src/connect-chooser.tsx +336 -0
  470. package/src/connect-panel.tsx +99 -0
  471. package/src/connect-setup.tsx +307 -0
  472. package/src/connect.ts +60 -0
  473. package/src/connection-assets.d.ts +4 -0
  474. package/src/connection-catalog.tsx +162 -0
  475. package/src/connection-discovery.tsx +235 -0
  476. package/src/connection-installed.tsx +51 -0
  477. package/src/connection-logo.tsx +37 -0
  478. package/src/connection-service-logo.tsx +55 -0
  479. package/src/connection-service-presentation.ts +46 -0
  480. package/src/connection-skeleton.tsx +16 -0
  481. package/src/connection-type-picker.tsx +36 -0
  482. package/src/conversation-timeline.ts +92 -0
  483. package/src/desktop.ts +24 -0
  484. package/src/device-authorization.tsx +98 -0
  485. package/src/diffs.ts +16 -0
  486. package/src/discovery-cache.ts +42 -0
  487. package/src/editor.ts +13 -0
  488. package/src/embedded-session-client.ts +104 -0
  489. package/src/file-node-visibility.ts +66 -0
  490. package/src/hooks/channel-cache.ts +104 -0
  491. package/src/hooks/internal.ts +3 -2
  492. package/src/hooks/latest-question.ts +164 -0
  493. package/src/hooks/shared-machines-list.ts +239 -0
  494. package/src/hooks/use-attached-browsers.ts +5 -1
  495. package/src/hooks/use-available-models.ts +20 -14
  496. package/src/hooks/use-browser-frame-stream.ts +25 -3
  497. package/src/hooks/use-browser-session.ts +271 -71
  498. package/src/hooks/use-browser-sessions.ts +7 -1
  499. package/src/hooks/use-channels.ts +32 -10
  500. package/src/hooks/use-codex-accounts.ts +78 -21
  501. package/src/hooks/use-composer.ts +1034 -320
  502. package/src/hooks/use-computer-frame-stream.ts +39 -16
  503. package/src/hooks/use-computer-input-posture.ts +94 -0
  504. package/src/hooks/use-computer-session.ts +110 -32
  505. package/src/hooks/use-computer-sessions.ts +8 -1
  506. package/src/hooks/use-connect.ts +23 -0
  507. package/src/hooks/use-desktop-stream.ts +19 -28
  508. package/src/hooks/use-file-attachments.ts +118 -10
  509. package/src/hooks/use-goal.ts +36 -9
  510. package/src/hooks/use-human-input.ts +31 -4
  511. package/src/hooks/use-last-started-turn-policy.ts +15 -13
  512. package/src/hooks/use-machine-chip.ts +23 -6
  513. package/src/hooks/use-machines.ts +104 -6
  514. package/src/hooks/use-sandbox-files.ts +253 -150
  515. package/src/hooks/use-sandbox-git.ts +58 -29
  516. package/src/hooks/use-session-background-commands.ts +67 -0
  517. package/src/hooks/use-session-capabilities.ts +21 -2
  518. package/src/hooks/use-session-events.ts +759 -433
  519. package/src/hooks/use-session-lineage.ts +28 -6
  520. package/src/hooks/use-session-mcp-approval-policy.ts +13 -5
  521. package/src/hooks/use-session.ts +75 -16
  522. package/src/hooks/use-slash-commands.ts +6 -11
  523. package/src/hooks/use-turn-queue.ts +113 -13
  524. package/src/hooks/use-usage.ts +100 -0
  525. package/src/hooks/use-voice-input.ts +12 -1
  526. package/src/hooks/use-workspace-capture.ts +3 -2
  527. package/src/hooks/use-workspace-edit.ts +23 -5
  528. package/src/hooks/use-workspace-sessions.ts +99 -11
  529. package/src/human-input.ts +12 -1
  530. package/src/identity-link-accounts.tsx +148 -0
  531. package/src/identity-link-consent.tsx +192 -0
  532. package/src/index.ts +157 -12
  533. package/src/interaction.ts +1 -0
  534. package/src/lib/error-message.ts +37 -0
  535. package/src/lib/format.ts +150 -14
  536. package/src/lib/host-theme.ts +511 -0
  537. package/src/lib/interaction-errors.ts +33 -0
  538. package/src/lib/menu-styles.ts +44 -0
  539. package/src/lib/pierre-diffs-loader.ts +53 -0
  540. package/src/lib/workbench-peers.ts +62 -0
  541. package/src/lib/xterm-theme.ts +23 -21
  542. package/src/machines.ts +9 -1
  543. package/src/mcp-connection-status.ts +35 -0
  544. package/src/model-policy.ts +223 -69
  545. package/src/older-history.ts +87 -0
  546. package/src/plugin-details.tsx +185 -0
  547. package/src/plugin-discovery.tsx +196 -0
  548. package/src/provider.tsx +55 -14
  549. package/src/realtime/dropdown-menu.tsx +19 -12
  550. package/src/realtime/realtime-control.tsx +274 -60
  551. package/src/session-auth-recommendation.ts +48 -0
  552. package/src/session-capability-policy.ts +83 -0
  553. package/src/session-context.ts +1 -0
  554. package/src/session-ui.ts +66 -2
  555. package/src/session.ts +18 -1
  556. package/src/sites-ui.tsx +402 -0
  557. package/src/sites.ts +3 -0
  558. package/src/skill-discovery.tsx +208 -0
  559. package/src/terminal.ts +26 -0
  560. package/src/timeline/activity-rail.tsx +171 -80
  561. package/src/timeline/allowance-exhausted-row.tsx +86 -0
  562. package/src/timeline/compaction-copy.ts +42 -0
  563. package/src/timeline/entrance.tsx +28 -3
  564. package/src/timeline/fleet-decision-projection.ts +2 -1
  565. package/src/timeline/fleet-decision-row.tsx +1 -0
  566. package/src/timeline/genie-loading.tsx +136 -0
  567. package/src/timeline/index.ts +11 -0
  568. package/src/timeline/knowledge-receipt.tsx +100 -0
  569. package/src/timeline/parsers.ts +2 -2
  570. package/src/timeline/platform-activity-row.tsx +216 -0
  571. package/src/timeline/presented-image.ts +49 -0
  572. package/src/timeline/projection.ts +1600 -84
  573. package/src/timeline/registry.ts +15 -3
  574. package/src/timeline/retained-image.ts +97 -0
  575. package/src/timeline/rolling-activity.tsx +92 -0
  576. package/src/timeline/screenshot-lightbox.tsx +115 -17
  577. package/src/timeline/shared.tsx +47 -15
  578. package/src/timeline/startup-preference.ts +33 -0
  579. package/src/timeline/startup-timings.tsx +145 -0
  580. package/src/timeline/tool-display-name.ts +8 -6
  581. package/src/timeline/tool-renderers.tsx +497 -128
  582. package/src/timeline/turn-summary.tsx +208 -44
  583. package/src/timeline/types.ts +186 -7
  584. package/src/types/machines.ts +10 -0
  585. package/src/usage/allowance-copy.ts +64 -0
  586. package/src/usage/summary.ts +93 -0
  587. package/src/usage.ts +50 -0
  588. package/styles/compiled.css +2098 -757
  589. package/styles/connect.css +284 -0
  590. package/styles/connect.d.ts +1 -0
  591. package/styles/effective-tokens.css +1 -0
  592. package/styles/index.css +201 -9
  593. package/styles/responsive.css +27 -1
  594. package/styles/session-capability.css +44 -0
  595. package/styles/tokens.css +135 -65
  596. package/dist/chunk-5UQPNLIO.js.map +0 -1
  597. package/dist/chunk-6KLX2RH5.js.map +0 -1
  598. package/dist/chunk-7WCLAEFV.js.map +0 -1
  599. package/dist/chunk-B6WPZSTT.js.map +0 -1
  600. package/dist/chunk-FK6VG4LL.js +0 -90
  601. package/dist/chunk-FK6VG4LL.js.map +0 -1
  602. package/dist/chunk-HA46CYQK.js.map +0 -1
  603. package/dist/chunk-HUIKIDM5.js.map +0 -1
  604. package/dist/chunk-IGC6A2ZI.js.map +0 -1
  605. package/dist/chunk-KCGXPP5V.js.map +0 -1
  606. package/dist/chunk-KZ73RL76.js.map +0 -1
  607. package/dist/chunk-LAKLF4PA.js +0 -141
  608. package/dist/chunk-LAKLF4PA.js.map +0 -1
  609. package/dist/chunk-LLOLUHVG.js.map +0 -1
  610. package/dist/chunk-MKPIAGVL.js +0 -465
  611. package/dist/chunk-MKPIAGVL.js.map +0 -1
  612. package/dist/chunk-PEI6RANI.js.map +0 -1
  613. package/dist/chunk-R3AZOAB5.js.map +0 -1
  614. package/dist/chunk-WSK7G5LE.js +0 -170
  615. package/dist/chunk-WSK7G5LE.js.map +0 -1
  616. package/dist/chunk-XBZWOM2K.js +0 -218
  617. package/dist/chunk-XBZWOM2K.js.map +0 -1
  618. package/dist/chunk-Y7OEDUJ5.js +0 -8810
  619. package/dist/chunk-Y7OEDUJ5.js.map +0 -1
  620. package/dist/fleet-decision-row-GGCAT4E4.js.map +0 -1
  621. package/dist/hooks/use-packs.d.ts +0 -32
  622. package/dist/interactive-workbench-viewers-TOHBXJEE.js +0 -15
  623. package/dist/queue-surface-implementation-2KVJTYXH.js.map +0 -1
  624. package/dist/timeline-annotation-selection-3L7LHGG2.js +0 -187
  625. package/dist/timeline-annotation-selection-3L7LHGG2.js.map +0 -1
  626. package/dist/timeline-annotations-dialog-U7EVLR75.js +0 -196
  627. package/dist/timeline-annotations-dialog-U7EVLR75.js.map +0 -1
  628. package/src/hooks/use-packs.ts +0 -157
  629. /package/dist/{interactive-workbench-viewers-TOHBXJEE.js.map → browser-viewer-GTR5XQ7X.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/artifacts/published-html-artifact-frame.tsx","../src/components/artifacts/editable-artifact-workbench.tsx"],"sourcesContent":["import type { CSSProperties } from \"react\";\n\nexport const PUBLISHED_HTML_ARTIFACT_IFRAME_SANDBOX = [\n \"allow-downloads\",\n \"allow-forms\",\n \"allow-modals\",\n \"allow-orientation-lock\",\n \"allow-pointer-lock\",\n \"allow-popups\",\n \"allow-popups-to-escape-sandbox\",\n \"allow-presentation\",\n \"allow-scripts\",\n].join(\" \");\n\nexport type PublishedHtmlArtifactFrameProps = {\n html: string;\n title: string;\n className?: string;\n style?: CSSProperties;\n};\n\n/**\n * Render exact published HTML in an opaque-origin iframe. Artifact scripts,\n * external resources, forms, popups, and downloads work without granting\n * parent-origin authority, shared cookies/storage, or top-level navigation.\n */\nexport function PublishedHtmlArtifactFrame(props: PublishedHtmlArtifactFrameProps) {\n return (\n <iframe\n title={props.title}\n sandbox={PUBLISHED_HTML_ARTIFACT_IFRAME_SANDBOX}\n referrerPolicy=\"no-referrer\"\n srcDoc={props.html}\n className={props.className}\n style={props.style}\n />\n );\n}\n","import {\n createBrowserEditableArtifactSession,\n type CreateBrowserEditableArtifactSessionOptions,\n type EditableArtifactBrowserRuntime,\n type EditableArtifactSession,\n} from \"@opengeni/sdk/editable-artifacts\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n\nimport { EditableArtifactMessage } from \"./editable-artifact-ui\";\nimport {\n EditableDocumentArtifactSurface,\n type EditableDocumentArtifactSurfaceProps,\n} from \"./editable-document\";\nimport {\n EditablePresentationArtifactSurface,\n type EditablePresentationArtifactSurfaceProps,\n} from \"./editable-presentation\";\nimport {\n EditableSpreadsheetArtifactSurface,\n type EditableSpreadsheetArtifactSurfaceProps,\n} from \"./editable-spreadsheet\";\n\nexport type EditableArtifactWorkbenchProps = Readonly<{\n session: EditableArtifactSession;\n document?: Omit<EditableDocumentArtifactSurfaceProps, \"session\">;\n spreadsheet?: Omit<EditableSpreadsheetArtifactSurfaceProps, \"session\">;\n presentation?: Omit<EditablePresentationArtifactSurfaceProps, \"session\">;\n}>;\n\nexport type EditableArtifactWorkbenchHostProps = Omit<EditableArtifactWorkbenchProps, \"session\"> &\n Readonly<{\n /**\n * Complete identity of the browser session authority. Change this when the\n * artifact, deployment, principal, or authorization epoch changes.\n */\n sessionKey: string;\n /** Called for the active keyed lifecycle and again only after replacement or retry. */\n createSession: () => EditableArtifactSession;\n }>;\n\ntype DefaultBrowserArtifactTransport = Omit<\n NonNullable<CreateBrowserEditableArtifactSessionOptions[\"transport\"]>,\n \"apiKey\" | \"fetch\" | \"headers\" | \"webSocketFactory\"\n> &\n Readonly<{\n /** Static deployment auth headers; rotate authorizationEpoch when they change. */\n headers?: Readonly<Record<string, string>>;\n }>;\n\nexport type BrowserEditableArtifactWorkbenchOptions = Omit<\n CreateBrowserEditableArtifactSessionOptions,\n \"runtime\" | \"storage\" | \"transport\"\n> &\n Readonly<{\n /** Default module Worker only; custom Worker hosts use EditableArtifactWorkbenchHost. */\n runtime: Omit<EditableArtifactBrowserRuntime, \"workerFactory\">;\n /** Default fetch/WebSocket only; static deployment auth headers are supported. */\n transport?: DefaultBrowserArtifactTransport;\n }>;\n\nexport type BrowserEditableArtifactWorkbenchProps = Omit<\n EditableArtifactWorkbenchProps,\n \"session\"\n> &\n Readonly<{ options: BrowserEditableArtifactWorkbenchOptions }>;\n\n/**\n * One modality-neutral SDK workbench. Embedding hosts keep one route/component;\n * each artifact still renders through its complete first-party editor surface.\n */\nexport function EditableArtifactWorkbench({\n session,\n document,\n spreadsheet,\n presentation,\n}: EditableArtifactWorkbenchProps) {\n switch (session.modality) {\n case \"document\":\n return (\n <EditableDocumentArtifactSurface\n {...document}\n session={session}\n title={document?.title ?? \"Document\"}\n />\n );\n case \"spreadsheet\":\n return <EditableSpreadsheetArtifactSurface {...spreadsheet} session={session} />;\n case \"presentation\":\n return <EditablePresentationArtifactSurface {...presentation} session={session} />;\n }\n}\n\n/**\n * Route/embed composition that owns exactly one SDK session. The host supplies\n * the authenticated SDK factory; React guarantees replacement and teardown.\n */\nexport function EditableArtifactWorkbenchHost({\n sessionKey,\n createSession,\n document,\n spreadsheet,\n presentation,\n}: EditableArtifactWorkbenchHostProps) {\n const createSessionRef = useRef(createSession);\n const [retryEpoch, setRetryEpoch] = useState(0);\n const [state, setState] = useState<\n | Readonly<{ key: string; session: EditableArtifactSession; error: null }>\n | Readonly<{ key: string | null; session: null; error: Error | null }>\n >({ key: null, session: null, error: null });\n\n useEffect(() => {\n createSessionRef.current = createSession;\n }, [createSession]);\n\n useEffect(() => {\n let owned: EditableArtifactSession | null = null;\n setState({ key: sessionKey, session: null, error: null });\n try {\n owned = createSessionRef.current();\n setState({ key: sessionKey, session: owned, error: null });\n } catch (cause) {\n setState({\n key: sessionKey,\n session: null,\n error: cause instanceof Error ? cause : new Error(\"Could not create artifact session\"),\n });\n }\n return () => {\n const closing = owned;\n owned = null;\n if (closing) void closing.close().catch(() => undefined);\n };\n }, [retryEpoch, sessionKey]);\n\n const retry = useCallback(() => setRetryEpoch((value) => value + 1), []);\n const currentError = state.key === sessionKey ? state.error : null;\n if (state.key === sessionKey && state.session) {\n return (\n <EditableArtifactWorkbench\n session={state.session}\n {...(document ? { document } : {})}\n {...(spreadsheet ? { spreadsheet } : {})}\n {...(presentation ? { presentation } : {})}\n />\n );\n }\n return (\n <EditableArtifactMessage\n title={currentError ? \"Could not open this artifact\" : \"Opening artifact\"}\n detail={currentError?.message ?? \"Starting the secure editing session…\"}\n retry={currentError ? retry : undefined}\n />\n );\n}\n\n/**\n * Complete default-browser composition for embedders: verified WASM Worker,\n * durable IndexedDB state, authenticated live sync, teardown, and the matching\n * first-party editor. Advanced/custom transports compose the lower-level host.\n */\nexport function BrowserEditableArtifactWorkbench({\n options,\n document,\n spreadsheet,\n presentation,\n}: BrowserEditableArtifactWorkbenchProps) {\n const sessionKey = browserSessionKey(options);\n const createSession = useCallback(() => createBrowserEditableArtifactSession(options), [options]);\n return (\n <EditableArtifactWorkbenchHost\n sessionKey={sessionKey}\n createSession={createSession}\n {...(document ? { document } : {})}\n {...(spreadsheet ? { spreadsheet } : {})}\n {...(presentation ? { presentation } : {})}\n />\n );\n}\n\nfunction browserSessionKey(options: BrowserEditableArtifactWorkbenchOptions): string {\n const transport = options.transport\n ? {\n ...options.transport,\n // Credentials must not be copied into React lifecycle keys. The\n // authorization epoch is the explicit credential/grant rotation fence.\n headers: options.transport.headers\n ? Object.keys(options.transport.headers).sort()\n : undefined,\n }\n : null;\n return JSON.stringify(\n {\n baseUrl: options.baseUrl,\n workspaceId: options.workspaceId,\n artifact: { id: options.artifact.id, modality: options.artifact.modality },\n storageAuthority: options.storageAuthority,\n runtime: options.runtime,\n replicaId: options.replicaId ?? null,\n transport,\n },\n (_key, value: unknown) => (value instanceof URL ? value.href : value),\n );\n}\n"],"mappings":"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","names":["jsx"]}
1
+ {"version":3,"sources":["../src/components/artifacts/site-view.tsx","../src/components/artifacts/editable-artifact-view.tsx","../src/components/artifacts/editable-artifact-workbench.tsx","../src/components/artifacts/session-artifact-viewer.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { loadSiteSnapshot } from \"../../sites-ui\";\nimport {\n ArtifactLoading,\n ArtifactProblem,\n artifactLoadErrorView,\n useArtifactLabels,\n} from \"./artifact-chrome\";\nimport { ArtifactSandbox } from \"./artifact-sandbox\";\nimport type { SiteSnapshotClient, SiteToolBridgeFactory } from \"./chat-interactive-block\";\n\ntype Snapshot = Awaited<ReturnType<typeof loadSiteSnapshot>>;\n\nexport type SiteViewProps = {\n client: SiteSnapshotClient;\n workspaceId: string;\n siteId: string;\n /** Host-owned Site API access. Omit it and the Site renders without workspace tools. */\n toolBridge?: SiteToolBridgeFactory | undefined;\n theme?: \"light\" | \"dark\" | undefined;\n /** Shown instead of the archived notice; the console links to its full page. */\n archivedMessage?: string | undefined;\n /** Show the Site title in the frame bar; hide it under a host header that already does. */\n showTitle?: boolean | undefined;\n /** Loading copy; defaults to \"Loading Site…\". */\n loadingLabel?: string | undefined;\n /** Called with the loaded title, for a host header. */\n onTitle?: ((title: string) => void) | undefined;\n className?: string | undefined;\n};\n\n/**\n * A published Site filling its container: the console's session dock and an\n * embedding host's artifact viewer render the same view.\n */\nexport function SiteView({\n client,\n workspaceId,\n siteId,\n toolBridge,\n theme,\n archivedMessage,\n showTitle = true,\n loadingLabel,\n onTitle,\n className,\n}: SiteViewProps) {\n const labels = useArtifactLabels();\n const [snapshot, setSnapshot] = useState<Snapshot | null>(null);\n const [error, setError] = useState<unknown>(null);\n const readAbort = useRef<AbortController | null>(null);\n const onTitleRef = useRef(onTitle);\n onTitleRef.current = onTitle;\n const load = useCallback(async () => {\n readAbort.current?.abort();\n const abort = new AbortController();\n readAbort.current = abort;\n try {\n setError(null);\n const next = await loadSiteSnapshot(client, workspaceId, siteId, {\n signal: abort.signal,\n includeArchivedContent: true,\n });\n if (abort.signal.aborted) return;\n setSnapshot(next);\n onTitleRef.current?.(next.detail.artifact.title);\n } catch (nextError) {\n if (abort.signal.aborted) return;\n setSnapshot(null);\n setError(nextError);\n }\n }, [client, siteId, workspaceId]);\n useEffect(() => {\n setSnapshot(null);\n void load();\n return () => readAbort.current?.abort();\n }, [load]);\n const content = snapshot?.content;\n const bridge = useMemo(\n () =>\n content\n ? toolBridge?.({\n artifactId: siteId,\n siteVersionId: content.versionId,\n requestedTools: content.requestedTools,\n })\n : undefined,\n [content, siteId, toolBridge],\n );\n if (error)\n return (\n <ArtifactProblem\n view={artifactLoadErrorView(error, \"site\", labels)}\n onRetry={() => void load()}\n />\n );\n if (!snapshot || !content) return <ArtifactLoading label={loadingLabel ?? labels.loadingSite} />;\n if (snapshot.detail.artifact.status === \"archived\")\n return (\n <div className=\"p-4 text-sm text-fg-muted\">{archivedMessage ?? labels.siteArchived}</div>\n );\n return (\n <ArtifactSandbox\n html={content.html}\n title={snapshot.detail.artifact.title}\n showTitle={showTitle}\n versionLabel={`v${snapshot.detail.artifact.currentVersion?.revision}`}\n toolBridge={bridge}\n connectedToolCount={content.requestedTools.length}\n theme={theme}\n fill\n className={className ?? \"h-full rounded-none border-0\"}\n />\n );\n}\n","import type { EditableArtifactResource } from \"@opengeni/sdk/artifacts\";\nimport {\n createBrowserEditableArtifactSession,\n type CreateBrowserEditableArtifactSessionOptions,\n type EditableArtifactBrowserRuntime,\n type EditableArtifactCacheAuthority,\n type EditableArtifactModality,\n} from \"@opengeni/sdk/editable-artifacts\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport {\n ArtifactLoading,\n ArtifactProblem,\n artifactLoadErrorView,\n useArtifactLabels,\n type ArtifactLoadErrorView,\n} from \"./artifact-chrome\";\nimport { EditableArtifactWorkbenchHost } from \"./editable-artifact-workbench\";\n\n/**\n * The browser kernels an editor needs, one per modality, plus the host-built\n * Worker URL (for Vite: `@opengeni/sdk/editable-artifacts/worker?worker&url`).\n * Kernels come from `@opengeni/artifact-kernel-wasm-{document,spreadsheet,presentation}`.\n */\nexport type EditableArtifactRuntimes = Readonly<{\n document: Omit<EditableArtifactBrowserRuntime, \"workerUrl\" | \"workerFactory\">;\n spreadsheet: Omit<EditableArtifactBrowserRuntime, \"workerUrl\" | \"workerFactory\">;\n presentation: Omit<EditableArtifactBrowserRuntime, \"workerUrl\" | \"workerFactory\">;\n workerUrl: string;\n applicationOrigin?: string | undefined;\n /** Loopback development only. */\n allowInsecureDevelopmentAssets?: boolean | undefined;\n}>;\n\n/** Everything needed to open one artifact for the current principal. */\nexport type OpenedEditableArtifact = Readonly<{\n artifact: EditableArtifactResource;\n authority: EditableArtifactCacheAuthority;\n replicaId: string;\n}>;\n\nexport type EditableArtifactViewProps = Readonly<{\n /** Absolute API (or session proxy) base the live transport talks to. */\n baseUrl: URL;\n workspaceId: string;\n artifactId: string;\n /** Resolve metadata, cache authority, and replica; called again on retry. */\n open: (signal: AbortSignal) => Promise<OpenedEditableArtifact>;\n runtimes: EditableArtifactRuntimes;\n transport?: CreateBrowserEditableArtifactSessionOptions[\"transport\"];\n /** Show the editor's own title header (hosts with their own header hide it). */\n showHeader?: boolean | undefined;\n /** Re-open when this changes (for example the host's credential version). */\n authorityKey?: string | undefined;\n describeError?: ((error: unknown) => ArtifactLoadErrorView) | undefined;\n onTitle?: ((title: string) => void) | undefined;\n /** Loading copy; defaults to the `opening` label. */\n loadingLabel?: string | undefined;\n}>;\n\ntype LoadState =\n | Readonly<{ key: string | null; kind: \"loading\" }>\n | Readonly<{ key: string; kind: \"ready\"; value: OpenedEditableArtifact }>\n | Readonly<{ key: string; kind: \"error\"; error: unknown }>;\n\n/**\n * One editable document, spreadsheet, or presentation with its first-party\n * editor. The console dock/page and embedding hosts supply only data access.\n */\nexport function EditableArtifactView({\n baseUrl,\n workspaceId,\n artifactId,\n open,\n runtimes,\n transport,\n showHeader = true,\n authorityKey,\n describeError,\n onTitle,\n loadingLabel,\n}: EditableArtifactViewProps) {\n const [loadEpoch, setLoadEpoch] = useState(0);\n const labels = useArtifactLabels();\n const loadKey = JSON.stringify([artifactId, authorityKey, baseUrl.href, workspaceId, loadEpoch]);\n const [state, setState] = useState<LoadState>({ key: null, kind: \"loading\" });\n const current = state.key === loadKey ? state : null;\n const openRef = useRef(open);\n openRef.current = open;\n const onTitleRef = useRef(onTitle);\n onTitleRef.current = onTitle;\n useEffect(() => {\n const abort = new AbortController();\n setState({ key: loadKey, kind: \"loading\" });\n void openRef\n .current(abort.signal)\n .then((value) => {\n if (abort.signal.aborted) return;\n setState({ key: loadKey, kind: \"ready\", value });\n onTitleRef.current?.(value.artifact.title);\n })\n .catch((error: unknown) => {\n if (!abort.signal.aborted) setState({ key: loadKey, kind: \"error\", error });\n });\n return () => abort.abort();\n }, [loadKey]);\n\n const ready = current?.kind === \"ready\" ? current.value : null;\n const transportRef = useRef(transport);\n transportRef.current = transport;\n const sessionKey = useMemo(\n () =>\n ready\n ? JSON.stringify({\n baseUrl: baseUrl.href,\n authorityKey,\n workspaceId,\n artifact: { id: ready.artifact.id, modality: ready.artifact.modality },\n authority: ready.authority,\n replicaId: ready.replicaId,\n workerUrl: runtimes.workerUrl,\n })\n : \"\",\n [authorityKey, baseUrl.href, ready, runtimes.workerUrl, workspaceId],\n );\n const createSession = useCallback(() => {\n if (!ready) throw new Error(\"Artifact is not open\");\n return createBrowserEditableArtifactSession({\n baseUrl,\n workspaceId,\n artifact: ready.artifact,\n storageAuthority: ready.authority,\n replicaId: ready.replicaId,\n runtime: {\n ...runtimeFor(runtimes, ready.artifact.modality),\n workerUrl: runtimes.workerUrl,\n ...(runtimes.applicationOrigin ? { applicationOrigin: runtimes.applicationOrigin } : {}),\n ...(runtimes.allowInsecureDevelopmentAssets\n ? { allowInsecureDevelopmentAssets: true }\n : {}),\n },\n ...(transportRef.current ? { transport: transportRef.current } : {}),\n });\n }, [baseUrl, ready, runtimes, workspaceId]);\n\n if (!current || current.kind === \"loading\")\n return <ArtifactLoading label={loadingLabel ?? labels.opening} />;\n if (current.kind === \"error\") {\n return (\n <ArtifactProblem\n view={\n describeError\n ? describeError(current.error)\n : artifactLoadErrorView(current.error, \"editable\", labels)\n }\n onRetry={() => setLoadEpoch((value) => value + 1)}\n />\n );\n }\n const { artifact } = current.value;\n const surface = { title: artifact.title, showHeader };\n return (\n <div className=\"h-full min-h-0 bg-og-bg text-og-fg\">\n <EditableArtifactWorkbenchHost\n sessionKey={sessionKey}\n createSession={createSession}\n document={surface}\n spreadsheet={surface}\n presentation={surface}\n />\n </div>\n );\n}\n\nfunction runtimeFor(\n runtimes: EditableArtifactRuntimes,\n modality: EditableArtifactModality,\n): Omit<EditableArtifactBrowserRuntime, \"workerUrl\" | \"workerFactory\"> {\n switch (modality) {\n case \"document\":\n return runtimes.document;\n case \"spreadsheet\":\n return runtimes.spreadsheet;\n case \"presentation\":\n return runtimes.presentation;\n }\n}\n","import {\n createBrowserEditableArtifactSession,\n type CreateBrowserEditableArtifactSessionOptions,\n type EditableArtifactBrowserRuntime,\n type EditableArtifactSession,\n} from \"@opengeni/sdk/editable-artifacts\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n\nimport { useArtifactLabels } from \"./artifact-chrome\";\nimport { EditableArtifactMessage } from \"./editable-artifact-ui\";\nimport {\n EditableDocumentArtifactSurface,\n type EditableDocumentArtifactSurfaceProps,\n} from \"./editable-document\";\nimport {\n EditablePresentationArtifactSurface,\n type EditablePresentationArtifactSurfaceProps,\n} from \"./editable-presentation\";\nimport {\n EditableSpreadsheetArtifactSurface,\n type EditableSpreadsheetArtifactSurfaceProps,\n} from \"./editable-spreadsheet\";\n\nexport type EditableArtifactWorkbenchProps = Readonly<{\n session: EditableArtifactSession;\n document?: Omit<EditableDocumentArtifactSurfaceProps, \"session\">;\n spreadsheet?: Omit<EditableSpreadsheetArtifactSurfaceProps, \"session\">;\n presentation?: Omit<EditablePresentationArtifactSurfaceProps, \"session\">;\n}>;\n\nexport type EditableArtifactWorkbenchHostProps = Omit<EditableArtifactWorkbenchProps, \"session\"> &\n Readonly<{\n /**\n * Complete identity of the browser session authority. Change this when the\n * artifact, deployment, principal, or authorization epoch changes.\n */\n sessionKey: string;\n /** Called for the active keyed lifecycle and again only after replacement or retry. */\n createSession: () => EditableArtifactSession;\n }>;\n\ntype DefaultBrowserArtifactTransport = Omit<\n NonNullable<CreateBrowserEditableArtifactSessionOptions[\"transport\"]>,\n \"apiKey\" | \"fetch\" | \"headers\" | \"webSocketFactory\"\n> &\n Readonly<{\n /** Static deployment auth headers; rotate authorizationEpoch when they change. */\n headers?: Readonly<Record<string, string>>;\n }>;\n\nexport type BrowserEditableArtifactWorkbenchOptions = Omit<\n CreateBrowserEditableArtifactSessionOptions,\n \"runtime\" | \"storage\" | \"transport\"\n> &\n Readonly<{\n /** Default module Worker only; custom Worker hosts use EditableArtifactWorkbenchHost. */\n runtime: Omit<EditableArtifactBrowserRuntime, \"workerFactory\">;\n /** Default fetch/WebSocket only; static deployment auth headers are supported. */\n transport?: DefaultBrowserArtifactTransport;\n }>;\n\nexport type BrowserEditableArtifactWorkbenchProps = Omit<\n EditableArtifactWorkbenchProps,\n \"session\"\n> &\n Readonly<{ options: BrowserEditableArtifactWorkbenchOptions }>;\n\n/**\n * One modality-neutral SDK workbench. Embedding hosts keep one route/component;\n * each artifact still renders through its complete first-party editor surface.\n */\nexport function EditableArtifactWorkbench({\n session,\n document,\n spreadsheet,\n presentation,\n}: EditableArtifactWorkbenchProps) {\n switch (session.modality) {\n case \"document\":\n return (\n <EditableDocumentArtifactSurface\n {...document}\n session={session}\n title={document?.title ?? \"Document\"}\n />\n );\n case \"spreadsheet\":\n return <EditableSpreadsheetArtifactSurface {...spreadsheet} session={session} />;\n case \"presentation\":\n return <EditablePresentationArtifactSurface {...presentation} session={session} />;\n }\n}\n\n/**\n * Route/embed composition that owns exactly one SDK session. The host supplies\n * the authenticated SDK factory; React guarantees replacement and teardown.\n */\nexport function EditableArtifactWorkbenchHost({\n sessionKey,\n createSession,\n document,\n spreadsheet,\n presentation,\n}: EditableArtifactWorkbenchHostProps) {\n const createSessionRef = useRef(createSession);\n const [retryEpoch, setRetryEpoch] = useState(0);\n const [state, setState] = useState<\n | Readonly<{ key: string; session: EditableArtifactSession; error: null }>\n | Readonly<{ key: string | null; session: null; error: Error | null }>\n >({ key: null, session: null, error: null });\n\n useEffect(() => {\n createSessionRef.current = createSession;\n }, [createSession]);\n\n useEffect(() => {\n let owned: EditableArtifactSession | null = null;\n setState({ key: sessionKey, session: null, error: null });\n try {\n owned = createSessionRef.current();\n setState({ key: sessionKey, session: owned, error: null });\n } catch (cause) {\n setState({\n key: sessionKey,\n session: null,\n error: cause instanceof Error ? cause : new Error(\"Could not create artifact session\"),\n });\n }\n return () => {\n const closing = owned;\n owned = null;\n if (closing) void closing.close().catch(() => undefined);\n };\n }, [retryEpoch, sessionKey]);\n\n const retry = useCallback(() => setRetryEpoch((value) => value + 1), []);\n const labels = useArtifactLabels();\n const currentError = state.key === sessionKey ? state.error : null;\n if (state.key === sessionKey && state.session) {\n return (\n <EditableArtifactWorkbench\n session={state.session}\n {...(document ? { document } : {})}\n {...(spreadsheet ? { spreadsheet } : {})}\n {...(presentation ? { presentation } : {})}\n />\n );\n }\n return (\n <EditableArtifactMessage\n title={currentError ? labels.editableErrors.transient.title : labels.opening}\n detail={currentError?.message ?? labels.startingEditor}\n retry={currentError ? retry : undefined}\n retryLabel={labels.retry}\n />\n );\n}\n\n/**\n * Complete default-browser composition for embedders: verified WASM Worker,\n * durable IndexedDB state, authenticated live sync, teardown, and the matching\n * first-party editor. Advanced/custom transports compose the lower-level host.\n */\nexport function BrowserEditableArtifactWorkbench({\n options,\n document,\n spreadsheet,\n presentation,\n}: BrowserEditableArtifactWorkbenchProps) {\n const sessionKey = browserSessionKey(options);\n const createSession = useCallback(() => createBrowserEditableArtifactSession(options), [options]);\n return (\n <EditableArtifactWorkbenchHost\n sessionKey={sessionKey}\n createSession={createSession}\n {...(document ? { document } : {})}\n {...(spreadsheet ? { spreadsheet } : {})}\n {...(presentation ? { presentation } : {})}\n />\n );\n}\n\nfunction browserSessionKey(options: BrowserEditableArtifactWorkbenchOptions): string {\n const transport = options.transport\n ? {\n ...options.transport,\n // Credentials must not be copied into React lifecycle keys. The\n // authorization epoch is the explicit credential/grant rotation fence.\n headers: options.transport.headers\n ? Object.keys(options.transport.headers).sort()\n : undefined,\n }\n : null;\n return JSON.stringify(\n {\n baseUrl: options.baseUrl,\n workspaceId: options.workspaceId,\n artifact: { id: options.artifact.id, modality: options.artifact.modality },\n storageAuthority: options.storageAuthority,\n runtime: options.runtime,\n replicaId: options.replicaId ?? null,\n transport,\n },\n (_key, value: unknown) => (value instanceof URL ? value.href : value),\n );\n}\n","import { SESSION_SCOPE_HEADER, type ClientConfig, type OpenGeniClient } from \"@opengeni/sdk\";\nimport { createEditableArtifactReplicaId } from \"@opengeni/sdk/editable-artifacts\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { useOpenGeni, type ClientOverride } from \"../../session-context\";\nimport {\n ArtifactLabelsProvider,\n ArtifactLoading,\n ArtifactProblem,\n ArtifactViewerHeader,\n artifactLoadErrorView,\n useArtifactLabels,\n type ArtifactKind,\n type ArtifactLabels,\n} from \"./artifact-chrome\";\nimport { EditableArtifactView, type EditableArtifactRuntimes } from \"./editable-artifact-view\";\nimport type { SiteToolBridgeFactory } from \"./chat-interactive-block\";\nimport { SiteView } from \"./site-view\";\n\n/** An artifact opened from a session: the targets agent links and Site previews name. */\nexport type SessionArtifactTarget = Readonly<\n | { kind: \"editable-artifact\"; artifactId: string; title?: string | undefined }\n | { kind: \"site\"; artifactId: string; title?: string | undefined }\n>;\n\n/** Every string the viewer shows, including its Site frame and states. */\nexport type SessionArtifactViewerLabels = Partial<ArtifactLabels>;\n\nexport type SessionArtifactViewerProps = ClientOverride &\n Readonly<{\n /** The conversation the artifact belongs to; the proxy only serves its artifacts. */\n sessionId: string;\n target: SessionArtifactTarget;\n onClose: () => void;\n /** Show a Back control, for example to return to the conversation on phones. */\n onBack?: (() => void) | undefined;\n /** Browser kernels and Worker for documents, spreadsheets, and presentations. */\n editableRuntimes?: EditableArtifactRuntimes | undefined;\n theme?: \"light\" | \"dark\" | undefined;\n /** Host-owned Site API access; omit it and Sites render without workspace tools. */\n siteToolBridge?: SiteToolBridgeFactory | undefined;\n labels?: SessionArtifactViewerLabels | undefined;\n className?: string | undefined;\n }>;\n\ntype ViewerClient = Pick<\n OpenGeniClient,\n | \"withHeaders\"\n | \"apiUrl\"\n | \"fetchApi\"\n | \"getClientConfig\"\n | \"getEditableArtifact\"\n | \"getWorkspaceArtifact\"\n | \"getWorkspaceArtifactHtml\"\n>;\n\nconst viewerClientKeys = new WeakMap<ViewerClient, string>();\n\nfunction viewerClientKey(client: ViewerClient): string {\n let key = viewerClientKeys.get(client);\n if (!key) {\n key = crypto.randomUUID();\n viewerClientKeys.set(client, key);\n }\n return key;\n}\n\n/**\n * A host-mountable viewer for one editable artifact or Site from a session,\n * with its own header (title, Back, Close). Mount it in any sized container\n * (a side panel, a sheet); it fills it. Data flows through the provider's\n * client and `createSessionProxyHandler({ artifacts: true })`, scoped to\n * `sessionId`.\n */\nexport function SessionArtifactViewer({ labels, ...props }: SessionArtifactViewerProps) {\n return (\n <ArtifactLabelsProvider labels={labels}>\n <Viewer {...props} />\n </ArtifactLabelsProvider>\n );\n}\n\nfunction Viewer({\n client: clientOverride,\n workspaceId: workspaceOverride,\n sessionId,\n target,\n onClose,\n onBack,\n editableRuntimes,\n theme,\n siteToolBridge,\n className,\n}: Omit<SessionArtifactViewerProps, \"labels\">) {\n const labels = useArtifactLabels();\n const context = useOpenGeni({ client: clientOverride, workspaceId: workspaceOverride });\n const base = context.client as unknown as ViewerClient;\n const workspaceId = context.workspaceId;\n const client = useMemo(\n () => base.withHeaders({ [SESSION_SCOPE_HEADER]: sessionId }),\n [base, sessionId],\n );\n const [loaded, setLoaded] = useState<{\n key: string;\n client: ViewerClient;\n workspaceId: string;\n title: string;\n kind: ArtifactKind | null;\n } | null>(null);\n const targetKey = `${target.kind}:${target.artifactId}`;\n const current =\n loaded?.key === targetKey && loaded.client === client && loaded.workspaceId === workspaceId\n ? loaded\n : null;\n const kind: ArtifactKind | null = target.kind === \"site\" ? \"site\" : (current?.kind ?? null);\n const [unavailable, setUnavailable] = useState<{\n key: string;\n client: ViewerClient;\n workspaceId: string;\n } | null>(null);\n const markUnavailable = useCallback(\n () => setUnavailable({ key: targetKey, client, workspaceId }),\n [client, targetKey, workspaceId],\n );\n const title =\n current?.title ??\n target.title ??\n (unavailable?.key === targetKey &&\n unavailable.client === client &&\n unavailable.workspaceId === workspaceId\n ? labels.artifact\n : labels.opening);\n return (\n <section\n aria-label={title}\n data-og-artifact-viewer={target.kind}\n className={cn(\"og-root flex h-full min-h-0 w-full min-w-0 flex-col bg-bg text-fg\", className)}\n >\n <ArtifactViewerHeader\n kind={kind}\n title={title}\n onBack={onBack}\n backLabel={labels.back}\n onClose={onClose}\n closeLabel={labels.close}\n />\n <div className=\"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden\">\n {target.kind === \"site\" ? (\n <SiteView\n key={targetKey}\n client={client}\n workspaceId={workspaceId}\n siteId={target.artifactId}\n theme={theme}\n toolBridge={siteToolBridge}\n showTitle={false}\n onTitle={(next) =>\n setLoaded({ key: targetKey, client, workspaceId, title: next, kind: \"site\" })\n }\n />\n ) : (\n <EditableBody\n key={targetKey}\n client={client}\n workspaceId={workspaceId}\n sessionId={sessionId}\n artifactId={target.artifactId}\n runtimes={editableRuntimes}\n onOpened={(next, modality) =>\n setLoaded({ key: targetKey, client, workspaceId, title: next, kind: modality })\n }\n onUnavailable={markUnavailable}\n />\n )}\n </div>\n </section>\n );\n}\n\nfunction EditableBody({\n client,\n workspaceId,\n sessionId,\n artifactId,\n runtimes,\n onOpened,\n onUnavailable,\n}: {\n client: ViewerClient;\n workspaceId: string;\n sessionId: string;\n artifactId: string;\n runtimes: EditableArtifactRuntimes | undefined;\n onOpened: (title: string, modality: ArtifactKind) => void;\n onUnavailable: () => void;\n}) {\n const labels = useArtifactLabels();\n const clientKey = viewerClientKey(client);\n const [retryEpoch, setRetryEpoch] = useState(0);\n const [configState, setConfigState] = useState<{\n client: ViewerClient;\n workspaceId: string;\n sessionId: string;\n result:\n | { kind: \"ready\"; config: NonNullable<ClientConfig[\"artifacts\"]> }\n | { kind: \"unavailable\" }\n | { kind: \"error\"; error: unknown };\n } | null>(null);\n const current =\n configState?.client === client &&\n configState.workspaceId === workspaceId &&\n configState.sessionId === sessionId\n ? configState.result\n : null;\n const config = current?.kind === \"ready\" ? current.config : null;\n const scopeRef = useRef({ client, workspaceId, sessionId });\n scopeRef.current = { client, workspaceId, sessionId };\n useEffect(() => {\n let live = true;\n setConfigState(null);\n client.getClientConfig().then(\n (value) =>\n live &&\n setConfigState({\n client,\n workspaceId,\n sessionId,\n result: value.artifacts\n ? { kind: \"ready\", config: value.artifacts }\n : { kind: \"unavailable\" },\n }),\n (error: unknown) =>\n live &&\n setConfigState({ client, workspaceId, sessionId, result: { kind: \"error\", error } }),\n );\n return () => {\n live = false;\n };\n }, [client, retryEpoch, sessionId, workspaceId]);\n const baseUrl = useMemo(\n () => new URL(client.apiUrl(\"/\"), globalThis.location?.href ?? \"http://localhost/\"),\n [client],\n );\n const transport = useMemo(() => {\n if (!config) return undefined;\n const socket = new URL(config.editableLiveUrl);\n let scope = new AbortController();\n const checkCurrent = (signal: AbortSignal) => {\n signal.throwIfAborted();\n if (\n scopeRef.current.client !== client ||\n scopeRef.current.workspaceId !== workspaceId ||\n scopeRef.current.sessionId !== sessionId\n ) {\n throw new DOMException(\"Artifact viewer scope changed\", \"AbortError\");\n }\n };\n return {\n activate: () => {\n if (scope.signal.aborted) scope = new AbortController();\n },\n abort: () => scope.abort(),\n fetch: (async (input: RequestInfo | URL, init?: RequestInit) => {\n const signal = AbortSignal.any([scope.signal, ...(init?.signal ? [init.signal] : [])]);\n checkCurrent(signal);\n const url = new URL(input instanceof Request ? input.url : input, baseUrl);\n if (\n init?.method === \"POST\" &&\n url.pathname ===\n new URL(\n `v1/workspaces/${encodeURIComponent(workspaceId)}/editable-artifacts/${encodeURIComponent(artifactId)}/live-ticket`,\n baseUrl,\n ).pathname\n ) {\n // A reconnect must revalidate the current host principal before\n // minting a ticket for the editor's retained cache partition.\n const next = (await client.getClientConfig({ signal })).artifacts;\n checkCurrent(signal);\n if (!next || artifactCapabilityKey(next) !== artifactCapabilityKey(config)) {\n setConfigState({\n client,\n workspaceId,\n sessionId,\n result: next ? { kind: \"ready\", config: next } : { kind: \"unavailable\" },\n });\n scope.abort();\n signal.throwIfAborted();\n }\n const { replicaId } = (await new Request(input, init).json()) as {\n replicaId?: unknown;\n };\n if (typeof replicaId !== \"string\") throw new TypeError(\"Artifact replica is required\");\n await client.getEditableArtifact(workspaceId, artifactId, { replicaId, signal });\n checkCurrent(signal);\n }\n return client.fetchApi(url, { ...init, signal });\n }) as typeof fetch,\n webSocketUrl: socket,\n ...(isLoopback(baseUrl) && isLoopback(socket)\n ? { allowInsecureDevelopmentTransport: true }\n : {}),\n };\n }, [artifactId, baseUrl, client, config, sessionId, workspaceId]);\n useEffect(() => {\n transport?.activate();\n return () => transport?.abort();\n }, [transport]);\n const blocked = current !== null && (current.kind !== \"ready\" || !runtimes);\n useEffect(() => {\n if (blocked) onUnavailable();\n }, [blocked, onUnavailable]);\n if (!current) return <ArtifactLoading label={labels.opening} />;\n if (current.kind === \"error\") {\n return (\n <ArtifactProblem\n view={artifactLoadErrorView(current.error, \"editable\", labels)}\n onRetry={() => setRetryEpoch((value) => value + 1)}\n />\n );\n }\n if (!config || !transport) {\n return <ArtifactProblem view={{ ...labels.viewingDisabled, retryable: false }} />;\n }\n if (!runtimes) {\n return <ArtifactProblem view={{ ...labels.editorsMissing, retryable: false }} />;\n }\n return (\n <EditableArtifactView\n baseUrl={baseUrl}\n workspaceId={workspaceId}\n artifactId={artifactId}\n authorityKey={JSON.stringify([clientKey, sessionId, artifactCapabilityKey(config)])}\n runtimes={{\n ...runtimes,\n ...(isLoopback(baseUrl) ? { allowInsecureDevelopmentAssets: true } : {}),\n }}\n transport={transport}\n showHeader={false}\n open={async (signal) => {\n const replicaId = createEditableArtifactReplicaId();\n const artifact = await client.getEditableArtifact(workspaceId, artifactId, {\n replicaId,\n signal,\n });\n signal.throwIfAborted();\n onOpened(artifact.title, artifact.modality);\n return {\n artifact,\n replicaId,\n authority: {\n deploymentOrigin: baseUrl.origin,\n workspaceId,\n ...config.cachePartition,\n },\n };\n }}\n />\n );\n}\n\nfunction artifactCapabilityKey(config: NonNullable<ClientConfig[\"artifacts\"]>): string {\n return JSON.stringify([\n config.editableLiveUrl,\n config.cachePartition.accountId,\n config.cachePartition.principalId,\n config.cachePartition.authorizationEpoch,\n ]);\n}\n\nfunction isLoopback(url: URL): boolean {\n return (\n (url.protocol === \"http:\" || url.protocol === \"ws:\") &&\n (url.hostname === \"localhost\" || url.hostname === \"127.0.0.1\" || url.hostname === \"[::1]\")\n );\n}\n"],"mappings":"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","names":["createBrowserEditableArtifactSession","useCallback","useEffect","useMemo","useRef","useState","useCallback","useEffect","useRef","useState","jsx","useRef","useState","useEffect","useCallback","jsx","useState","useRef","useEffect","useMemo","useCallback","createBrowserEditableArtifactSession","useCallback","useEffect","useMemo","useRef","useState","jsx","useMemo","useState","useCallback","useRef","useEffect"]}
@@ -0,0 +1,16 @@
1
+ import {
2
+ BrowserViewer
3
+ } from "./chunk-YWFG7ZX7.js";
4
+ import "./chunk-NZUI76EM.js";
5
+ import "./chunk-JVYQRRC4.js";
6
+ import "./chunk-RHREZ7BO.js";
7
+ import "./chunk-UTRTG6LH.js";
8
+ import "./chunk-5J4FOW6Q.js";
9
+ import "./chunk-YQEAA6LT.js";
10
+ import "./chunk-UGLEYEMP.js";
11
+ import "./chunk-NEXLLTP4.js";
12
+ import "./chunk-22KP6LR5.js";
13
+ export {
14
+ BrowserViewer
15
+ };
16
+ //# sourceMappingURL=browser-viewer-GTR5XQ7X.js.map
@@ -0,0 +1,20 @@
1
+ import type { ComponentPropsWithoutRef, ReactNode } from "react";
2
+ export type CapabilityCatalogStatus = "available" | "added" | "attention" | "unavailable" | "loading";
3
+ export type CapabilityCatalogRowProps = Omit<ComponentPropsWithoutRef<"button">, "children" | "onClick" | "name"> & {
4
+ name: string;
5
+ description?: string | undefined;
6
+ icon?: ReactNode;
7
+ status?: CapabilityCatalogStatus;
8
+ statusLabel?: string | undefined;
9
+ /** Preserve opaque host status text when adopting this row without typed health. */
10
+ showStatusLabel?: boolean;
11
+ onOpen: () => void;
12
+ };
13
+ /** A display-only state. The entire catalog row is the action, never this glyph. */
14
+ export declare function CapabilityCatalogIndicator({ status, label, showLabel, }: {
15
+ status?: CapabilityCatalogStatus;
16
+ label?: string | undefined;
17
+ showLabel?: boolean;
18
+ }): import("react").JSX.Element;
19
+ /** Shared by connections, skills, and plugins: one row, one focus target, one action. */
20
+ export declare function CapabilityCatalogRow({ name, description, icon, status, statusLabel, showStatusLabel, onOpen, className, ...props }: CapabilityCatalogRowProps): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import type { CapabilityCatalogItem } from "@opengeni/sdk";
2
+ /** Passive catalogue identity, shared by embedded and console surfaces. */
3
+ export declare function capabilityLogoFallback(item: Pick<CapabilityCatalogItem, "id"> & Partial<Pick<CapabilityCatalogItem, "metadata" | "mcpUrl">>): string | null;
@@ -0,0 +1,11 @@
1
+ import {
2
+ ChatInteractiveBlock
3
+ } from "./chunk-YBXQDQFX.js";
4
+ import "./chunk-5CVXZA3Y.js";
5
+ import "./chunk-XCHWDJ22.js";
6
+ import "./chunk-SCOTPE2I.js";
7
+ import "./chunk-22KP6LR5.js";
8
+ export {
9
+ ChatInteractiveBlock
10
+ };
11
+ //# sourceMappingURL=chat-interactive-block-UGBTNB3L.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}