@dxos/plugin-script 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/dist/lib/ScriptPlugin.mjs +25 -0
  2. package/dist/lib/ScriptPlugin.mjs.map +1 -0
  3. package/dist/lib/ScriptPlugin.node.mjs +11 -0
  4. package/dist/lib/ScriptPlugin.node.mjs.map +1 -0
  5. package/dist/lib/ScriptPlugin.workerd.mjs +11 -0
  6. package/dist/lib/ScriptPlugin.workerd.mjs.map +1 -0
  7. package/dist/lib/capabilities/node.mjs +11 -0
  8. package/dist/lib/capabilities/node.mjs.map +1 -0
  9. package/dist/lib/capabilities.mjs +13 -0
  10. package/dist/lib/capabilities.mjs.map +1 -0
  11. package/dist/lib/chunk-DeploymentDialog.mjs +85 -0
  12. package/dist/lib/chunk-DeploymentDialog.mjs.map +1 -0
  13. package/dist/lib/chunk-NotebookArticle.mjs +719 -0
  14. package/dist/lib/chunk-NotebookArticle.mjs.map +1 -0
  15. package/dist/lib/chunk-ScriptArticle.mjs +67 -0
  16. package/dist/lib/chunk-ScriptArticle.mjs.map +1 -0
  17. package/dist/lib/chunk-ScriptProperties.mjs +240 -0
  18. package/dist/lib/chunk-ScriptProperties.mjs.map +1 -0
  19. package/dist/lib/chunk-ScriptSettings.mjs +40 -0
  20. package/dist/lib/chunk-ScriptSettings.mjs.map +1 -0
  21. package/dist/lib/chunk-TestContainer.mjs +40 -0
  22. package/dist/lib/chunk-TestContainer.mjs.map +1 -0
  23. package/dist/lib/chunk-app-graph-builder.mjs +33 -0
  24. package/dist/lib/chunk-app-graph-builder.mjs.map +1 -0
  25. package/dist/lib/chunk-compiler.mjs +60 -0
  26. package/dist/lib/chunk-compiler.mjs.map +1 -0
  27. package/dist/lib/chunk-compiler2.mjs +76 -0
  28. package/dist/lib/chunk-compiler2.mjs.map +1 -0
  29. package/dist/lib/chunk-create-object.mjs +36 -0
  30. package/dist/lib/chunk-create-object.mjs.map +1 -0
  31. package/dist/lib/chunk-create-script.mjs +32 -0
  32. package/dist/lib/chunk-create-script.mjs.map +1 -0
  33. package/dist/lib/chunk-create.mjs +34 -0
  34. package/dist/lib/chunk-create.mjs.map +1 -0
  35. package/dist/lib/chunk-delete.mjs +15 -0
  36. package/dist/lib/chunk-delete.mjs.map +1 -0
  37. package/dist/lib/chunk-deploy.mjs +53 -0
  38. package/dist/lib/chunk-deploy.mjs.map +1 -0
  39. package/dist/lib/chunk-functions.mjs +238 -0
  40. package/dist/lib/chunk-functions.mjs.map +1 -0
  41. package/dist/lib/chunk-inspect-invocations.mjs +42 -0
  42. package/dist/lib/chunk-inspect-invocations.mjs.map +1 -0
  43. package/dist/lib/chunk-install-function.mjs +40 -0
  44. package/dist/lib/chunk-install-function.mjs.map +1 -0
  45. package/dist/lib/chunk-invoke.mjs +25 -0
  46. package/dist/lib/chunk-invoke.mjs.map +1 -0
  47. package/dist/lib/chunk-meta.mjs +33 -0
  48. package/dist/lib/chunk-meta.mjs.map +1 -0
  49. package/dist/lib/chunk-operation-handler.mjs +13 -0
  50. package/dist/lib/chunk-operation-handler.mjs.map +1 -0
  51. package/dist/lib/chunk-query-deployed-functions.mjs +31 -0
  52. package/dist/lib/chunk-query-deployed-functions.mjs.map +1 -0
  53. package/dist/lib/chunk-react-surface.mjs +140 -0
  54. package/dist/lib/chunk-react-surface.mjs.map +1 -0
  55. package/dist/lib/chunk-read.mjs +20 -0
  56. package/dist/lib/chunk-read.mjs.map +1 -0
  57. package/dist/lib/chunk-settings.mjs +23 -0
  58. package/dist/lib/chunk-settings.mjs.map +1 -0
  59. package/dist/lib/chunk-skill-definition.mjs +10 -0
  60. package/dist/lib/chunk-skill-definition.mjs.map +1 -0
  61. package/dist/lib/chunk-skills.mjs +35 -0
  62. package/dist/lib/chunk-skills.mjs.map +1 -0
  63. package/dist/lib/{neutral/chunk-WAGQ77UQ.mjs → chunk-templates.mjs} +82 -84
  64. package/dist/lib/chunk-templates.mjs.map +1 -0
  65. package/dist/lib/chunk-types.mjs +90 -0
  66. package/dist/lib/chunk-types.mjs.map +1 -0
  67. package/dist/lib/chunk-update.mjs +27 -0
  68. package/dist/lib/chunk-update.mjs.map +1 -0
  69. package/dist/lib/chunk-util.mjs +146 -0
  70. package/dist/lib/chunk-util.mjs.map +1 -0
  71. package/dist/lib/components.mjs +618 -0
  72. package/dist/lib/components.mjs.map +1 -0
  73. package/dist/lib/containers.mjs +12 -0
  74. package/dist/lib/containers.mjs.map +1 -0
  75. package/dist/lib/hooks.mjs +307 -0
  76. package/dist/lib/hooks.mjs.map +1 -0
  77. package/dist/lib/index.mjs +5 -0
  78. package/dist/lib/meta.mjs +2 -0
  79. package/dist/lib/operations.mjs +7 -0
  80. package/dist/lib/operations.mjs.map +1 -0
  81. package/dist/lib/plugin.mjs +9 -0
  82. package/dist/lib/plugin.mjs.map +1 -0
  83. package/dist/lib/skills.mjs +2 -0
  84. package/dist/lib/templates.mjs +2 -0
  85. package/dist/lib/testing.mjs +75 -0
  86. package/dist/lib/testing.mjs.map +1 -0
  87. package/dist/lib/translations.mjs +98 -0
  88. package/dist/lib/translations.mjs.map +1 -0
  89. package/dist/lib/types.mjs +2 -0
  90. package/dist/types/src/capabilities/ScriptSurfaces.d.ts +28 -0
  91. package/dist/types/src/capabilities/ScriptSurfaces.d.ts.map +1 -0
  92. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  93. package/dist/types/src/capabilities/compiler.d.ts +1 -1
  94. package/dist/types/src/capabilities/create-object.d.ts +1 -1
  95. package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
  96. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  97. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  98. package/dist/types/src/capabilities/settings.d.ts +1 -1
  99. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts +1 -1
  100. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts.map +1 -1
  101. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts.map +1 -1
  102. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts.map +1 -1
  103. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts +1 -1
  104. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  105. package/dist/types/src/components/TestPanel/TestPanel.d.ts +1 -1
  106. package/dist/types/src/components/TestPanel/TestPanel.d.ts.map +1 -1
  107. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts +1 -1
  108. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  109. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts +1 -1
  110. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.d.ts +5 -2
  111. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.d.ts.map +1 -1
  112. package/dist/types/src/containers/NotebookArticle/NotebookArticle.d.ts +4 -1
  113. package/dist/types/src/containers/NotebookArticle/NotebookArticle.d.ts.map +1 -1
  114. package/dist/types/src/containers/ScriptArticle/ScriptArticle.d.ts +4 -1
  115. package/dist/types/src/containers/ScriptArticle/ScriptArticle.d.ts.map +1 -1
  116. package/dist/types/src/containers/ScriptArticle/ScriptArticle.stories.d.ts.map +1 -1
  117. package/dist/types/src/containers/ScriptProperties/FunctionBinding.d.ts +4 -1
  118. package/dist/types/src/containers/ScriptProperties/FunctionBinding.d.ts.map +1 -1
  119. package/dist/types/src/containers/ScriptProperties/FunctionPublishing.d.ts +4 -1
  120. package/dist/types/src/containers/ScriptProperties/FunctionPublishing.d.ts.map +1 -1
  121. package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts +4 -1
  122. package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts.map +1 -1
  123. package/dist/types/src/containers/ScriptProperties/ScriptProperties.stories.d.ts.map +1 -1
  124. package/dist/types/src/containers/ScriptProperties/SkillEditor.d.ts +4 -1
  125. package/dist/types/src/containers/ScriptProperties/SkillEditor.d.ts.map +1 -1
  126. package/dist/types/src/containers/ScriptSettings/ScriptSettings.d.ts +4 -1
  127. package/dist/types/src/containers/ScriptSettings/ScriptSettings.d.ts.map +1 -1
  128. package/dist/types/src/containers/ScriptSettings/ScriptSettings.stories.d.ts +4 -1
  129. package/dist/types/src/containers/ScriptSettings/ScriptSettings.stories.d.ts.map +1 -1
  130. package/dist/types/src/containers/TestContainer/TestContainer.d.ts +4 -1
  131. package/dist/types/src/containers/TestContainer/TestContainer.d.ts.map +1 -1
  132. package/dist/types/src/hooks/deploy.d.ts +2 -35
  133. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  134. package/dist/types/src/hooks/format.d.ts +2 -23
  135. package/dist/types/src/hooks/format.d.ts.map +1 -1
  136. package/dist/types/src/hooks/template.d.ts +2 -18
  137. package/dist/types/src/hooks/template.d.ts.map +1 -1
  138. package/dist/types/src/hooks/useToolbarState.d.ts +1 -1
  139. package/dist/types/src/hooks/useToolbarState.d.ts.map +1 -1
  140. package/dist/types/src/notebook/compute-graph.d.ts +1 -1
  141. package/dist/types/src/notebook/compute-graph.d.ts.map +1 -1
  142. package/dist/types/src/skills/functions/deploy.d.ts.map +1 -1
  143. package/dist/types/src/skills/functions/inspect-invocations.d.ts.map +1 -1
  144. package/dist/types/src/templates/chess-bot.d.ts +2 -2
  145. package/dist/types/src/templates/chess-bot.d.ts.map +1 -1
  146. package/dist/types/src/templates/commentary.d.ts +2 -2
  147. package/dist/types/src/templates/commentary.d.ts.map +1 -1
  148. package/dist/types/src/types/ScriptCapabilities.d.ts +1 -1
  149. package/dist/types/src/types/ScriptCapabilities.d.ts.map +1 -1
  150. package/dist/types/tsconfig.tsbuildinfo +1 -1
  151. package/package.json +88 -82
  152. package/src/capabilities/ScriptSurfaces.tsx +96 -0
  153. package/src/capabilities/app-graph-builder.ts +2 -2
  154. package/src/capabilities/compiler.ts +1 -1
  155. package/src/capabilities/react-surface.ts +82 -0
  156. package/src/components/NotebookStack/NotebookCell.tsx +9 -2
  157. package/src/components/NotebookStack/NotebookStack.stories.tsx +2 -0
  158. package/src/components/NotebookStack/NotebookStack.tsx +22 -14
  159. package/src/components/QueryEditor/QueryEditor.stories.tsx +1 -1
  160. package/src/components/QueryEditor/QueryEditor.tsx +1 -0
  161. package/src/components/ScriptToolbar/ScriptToolbar.stories.tsx +1 -1
  162. package/src/components/ScriptToolbar/ScriptToolbar.tsx +1 -1
  163. package/src/components/TestPanel/TestPanel.tsx +2 -2
  164. package/src/components/TypescriptEditor/TypescriptEditor.tsx +1 -1
  165. package/src/containers/DeploymentDialog/DeploymentDialog.stories.tsx +1 -1
  166. package/src/containers/DeploymentDialog/DeploymentDialog.tsx +3 -1
  167. package/src/containers/NotebookArticle/NotebookArticle.stories.tsx +1 -1
  168. package/src/containers/NotebookArticle/NotebookArticle.tsx +4 -2
  169. package/src/containers/ScriptArticle/ScriptArticle.stories.tsx +2 -1
  170. package/src/containers/ScriptArticle/ScriptArticle.tsx +3 -1
  171. package/src/containers/ScriptProperties/FunctionBinding.tsx +5 -3
  172. package/src/containers/ScriptProperties/FunctionPublishing.tsx +4 -2
  173. package/src/containers/ScriptProperties/ScriptProperties.stories.tsx +2 -1
  174. package/src/containers/ScriptProperties/ScriptProperties.tsx +2 -0
  175. package/src/containers/ScriptProperties/SkillEditor.tsx +3 -1
  176. package/src/containers/ScriptSettings/ScriptSettings.tsx +2 -0
  177. package/src/containers/TestContainer/TestContainer.tsx +4 -2
  178. package/src/e2e/ai.test.ts +2 -2
  179. package/src/e2e/deploy.test.ts +2 -2
  180. package/src/hooks/deploy.ts +13 -4
  181. package/src/hooks/format.ts +2 -2
  182. package/src/hooks/template.ts +3 -3
  183. package/src/hooks/useToolbarState.ts +1 -1
  184. package/src/notebook/compute-graph.test.ts +1 -1
  185. package/src/notebook/compute-graph.ts +1 -1
  186. package/src/skills/functions/deploy.ts +5 -6
  187. package/src/skills/functions/inspect-invocations.ts +2 -2
  188. package/src/skills/functions/install-function.ts +1 -1
  189. package/src/skills/functions/invoke.ts +1 -1
  190. package/src/skills/functions/query-deployed-functions.ts +1 -1
  191. package/src/templates/chess-bot.ts +3 -3
  192. package/src/templates/commentary.ts +3 -3
  193. package/src/testing/simulator.test.ts +1 -1
  194. package/src/types/ScriptCapabilities.ts +1 -1
  195. package/src/util/deploy.ts +3 -3
  196. package/src/util/functions.ts +2 -2
  197. package/dist/lib/neutral/DeploymentDialog-7OIIL7LB.mjs +0 -114
  198. package/dist/lib/neutral/DeploymentDialog-7OIIL7LB.mjs.map +0 -7
  199. package/dist/lib/neutral/NotebookArticle-AOBB3XGD.mjs +0 -745
  200. package/dist/lib/neutral/NotebookArticle-AOBB3XGD.mjs.map +0 -7
  201. package/dist/lib/neutral/ScriptArticle-I3DOJARR.mjs +0 -79
  202. package/dist/lib/neutral/ScriptArticle-I3DOJARR.mjs.map +0 -7
  203. package/dist/lib/neutral/ScriptPlugin.mjs +0 -51
  204. package/dist/lib/neutral/ScriptPlugin.mjs.map +0 -7
  205. package/dist/lib/neutral/ScriptPlugin.node.mjs +0 -27
  206. package/dist/lib/neutral/ScriptPlugin.node.mjs.map +0 -7
  207. package/dist/lib/neutral/ScriptPlugin.workerd.mjs +0 -21
  208. package/dist/lib/neutral/ScriptPlugin.workerd.mjs.map +0 -7
  209. package/dist/lib/neutral/ScriptProperties-RHDQGMGT.mjs +0 -296
  210. package/dist/lib/neutral/ScriptProperties-RHDQGMGT.mjs.map +0 -7
  211. package/dist/lib/neutral/ScriptSettings-NS3ZY7ZR.mjs +0 -35
  212. package/dist/lib/neutral/ScriptSettings-NS3ZY7ZR.mjs.map +0 -7
  213. package/dist/lib/neutral/TestContainer-AFVTBYSJ.mjs +0 -44
  214. package/dist/lib/neutral/TestContainer-AFVTBYSJ.mjs.map +0 -7
  215. package/dist/lib/neutral/app-graph-builder-POP3CX6G.mjs +0 -52
  216. package/dist/lib/neutral/app-graph-builder-POP3CX6G.mjs.map +0 -7
  217. package/dist/lib/neutral/capabilities/index.mjs +0 -21
  218. package/dist/lib/neutral/capabilities/index.mjs.map +0 -7
  219. package/dist/lib/neutral/capabilities/node.mjs +0 -17
  220. package/dist/lib/neutral/capabilities/node.mjs.map +0 -7
  221. package/dist/lib/neutral/chunk-2REUEDUA.mjs +0 -56
  222. package/dist/lib/neutral/chunk-2REUEDUA.mjs.map +0 -7
  223. package/dist/lib/neutral/chunk-652CIABA.mjs +0 -124
  224. package/dist/lib/neutral/chunk-652CIABA.mjs.map +0 -7
  225. package/dist/lib/neutral/chunk-6DOWVKIW.mjs +0 -344
  226. package/dist/lib/neutral/chunk-6DOWVKIW.mjs.map +0 -7
  227. package/dist/lib/neutral/chunk-CHNFYLKW.mjs +0 -52
  228. package/dist/lib/neutral/chunk-CHNFYLKW.mjs.map +0 -7
  229. package/dist/lib/neutral/chunk-INFWOSTM.mjs +0 -156
  230. package/dist/lib/neutral/chunk-INFWOSTM.mjs.map +0 -7
  231. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +0 -10
  232. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +0 -7
  233. package/dist/lib/neutral/chunk-KSVKXCTX.mjs +0 -8
  234. package/dist/lib/neutral/chunk-KSVKXCTX.mjs.map +0 -7
  235. package/dist/lib/neutral/chunk-NVV5UYY4.mjs +0 -50
  236. package/dist/lib/neutral/chunk-NVV5UYY4.mjs.map +0 -7
  237. package/dist/lib/neutral/chunk-USJ44FIU.mjs +0 -8
  238. package/dist/lib/neutral/chunk-USJ44FIU.mjs.map +0 -7
  239. package/dist/lib/neutral/chunk-WAGQ77UQ.mjs.map +0 -7
  240. package/dist/lib/neutral/compiler-ODK4UA2N.mjs +0 -101
  241. package/dist/lib/neutral/compiler-ODK4UA2N.mjs.map +0 -7
  242. package/dist/lib/neutral/components/index.mjs +0 -695
  243. package/dist/lib/neutral/components/index.mjs.map +0 -7
  244. package/dist/lib/neutral/containers/index.mjs +0 -19
  245. package/dist/lib/neutral/containers/index.mjs.map +0 -7
  246. package/dist/lib/neutral/create-SGHWWTET.mjs +0 -46
  247. package/dist/lib/neutral/create-SGHWWTET.mjs.map +0 -7
  248. package/dist/lib/neutral/create-object-QW66KQWS.mjs +0 -43
  249. package/dist/lib/neutral/create-object-QW66KQWS.mjs.map +0 -7
  250. package/dist/lib/neutral/create-script-CIEJOBIU.mjs +0 -45
  251. package/dist/lib/neutral/create-script-CIEJOBIU.mjs.map +0 -7
  252. package/dist/lib/neutral/delete-72RXVLVI.mjs +0 -21
  253. package/dist/lib/neutral/delete-72RXVLVI.mjs.map +0 -7
  254. package/dist/lib/neutral/deploy-PJTJAQZY.mjs +0 -67
  255. package/dist/lib/neutral/deploy-PJTJAQZY.mjs.map +0 -7
  256. package/dist/lib/neutral/hooks/index.mjs +0 -369
  257. package/dist/lib/neutral/hooks/index.mjs.map +0 -7
  258. package/dist/lib/neutral/index.mjs +0 -41
  259. package/dist/lib/neutral/index.mjs.map +0 -7
  260. package/dist/lib/neutral/inspect-invocations-ZUXVUAML.mjs +0 -59
  261. package/dist/lib/neutral/inspect-invocations-ZUXVUAML.mjs.map +0 -7
  262. package/dist/lib/neutral/install-function-YFDZLVMJ.mjs +0 -49
  263. package/dist/lib/neutral/install-function-YFDZLVMJ.mjs.map +0 -7
  264. package/dist/lib/neutral/invoke-CDRBQ2WA.mjs +0 -32
  265. package/dist/lib/neutral/invoke-CDRBQ2WA.mjs.map +0 -7
  266. package/dist/lib/neutral/meta.json +0 -1
  267. package/dist/lib/neutral/meta.mjs +0 -10
  268. package/dist/lib/neutral/meta.mjs.map +0 -7
  269. package/dist/lib/neutral/operation-handler-M3B6IRMV.mjs +0 -18
  270. package/dist/lib/neutral/operation-handler-M3B6IRMV.mjs.map +0 -7
  271. package/dist/lib/neutral/operations/index.mjs +0 -8
  272. package/dist/lib/neutral/operations/index.mjs.map +0 -7
  273. package/dist/lib/neutral/plugin.mjs +0 -16
  274. package/dist/lib/neutral/plugin.mjs.map +0 -7
  275. package/dist/lib/neutral/query-deployed-functions-RBQMGON2.mjs +0 -34
  276. package/dist/lib/neutral/query-deployed-functions-RBQMGON2.mjs.map +0 -7
  277. package/dist/lib/neutral/react-surface-GEXOZLBC.mjs +0 -120
  278. package/dist/lib/neutral/react-surface-GEXOZLBC.mjs.map +0 -7
  279. package/dist/lib/neutral/read-OY3K5R3V.mjs +0 -26
  280. package/dist/lib/neutral/read-OY3K5R3V.mjs.map +0 -7
  281. package/dist/lib/neutral/settings-FD7HXEY6.mjs +0 -30
  282. package/dist/lib/neutral/settings-FD7HXEY6.mjs.map +0 -7
  283. package/dist/lib/neutral/skill-definition-JZ7UYBT7.mjs +0 -15
  284. package/dist/lib/neutral/skill-definition-JZ7UYBT7.mjs.map +0 -7
  285. package/dist/lib/neutral/skills/index.mjs +0 -10
  286. package/dist/lib/neutral/skills/index.mjs.map +0 -7
  287. package/dist/lib/neutral/templates/index.mjs +0 -10
  288. package/dist/lib/neutral/templates/index.mjs.map +0 -7
  289. package/dist/lib/neutral/translations.mjs +0 -104
  290. package/dist/lib/neutral/translations.mjs.map +0 -7
  291. package/dist/lib/neutral/types/index.mjs +0 -17
  292. package/dist/lib/neutral/types/index.mjs.map +0 -7
  293. package/dist/lib/neutral/update-Z5VGOLBN.mjs +0 -44
  294. package/dist/lib/neutral/update-Z5VGOLBN.mjs.map +0 -7
  295. package/src/capabilities/react-surface.tsx +0 -132
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-script",
3
- "version": "0.10.0",
3
+ "version": "0.11.0",
4
4
  "description": "Braneframe notebook plugin",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -16,7 +16,7 @@
16
16
  "#skills": {
17
17
  "source": "./src/skills/index.ts",
18
18
  "types": "./dist/types/src/skills/index.d.ts",
19
- "default": "./dist/lib/neutral/skills/index.mjs"
19
+ "default": "./dist/lib/skills.mjs"
20
20
  },
21
21
  "#capabilities": {
22
22
  "source": {
@@ -24,33 +24,33 @@
24
24
  "default": "./src/capabilities/index.ts"
25
25
  },
26
26
  "types": "./dist/types/src/capabilities/index.d.ts",
27
- "node": "./dist/lib/neutral/capabilities/node.mjs",
28
- "default": "./dist/lib/neutral/capabilities/index.mjs"
27
+ "node": "./dist/lib/capabilities/node.mjs",
28
+ "default": "./dist/lib/capabilities.mjs"
29
29
  },
30
30
  "#components": {
31
31
  "source": "./src/components/index.ts",
32
32
  "types": "./dist/types/src/components/index.d.ts",
33
- "default": "./dist/lib/neutral/components/index.mjs"
33
+ "default": "./dist/lib/components.mjs"
34
34
  },
35
35
  "#containers": {
36
36
  "source": "./src/containers/index.ts",
37
37
  "types": "./dist/types/src/containers/index.d.ts",
38
- "default": "./dist/lib/neutral/containers/index.mjs"
38
+ "default": "./dist/lib/containers.mjs"
39
39
  },
40
40
  "#hooks": {
41
41
  "source": "./src/hooks/index.ts",
42
42
  "types": "./dist/types/src/hooks/index.d.ts",
43
- "default": "./dist/lib/neutral/hooks/index.mjs"
43
+ "default": "./dist/lib/hooks.mjs"
44
44
  },
45
45
  "#meta": {
46
46
  "source": "./src/meta.ts",
47
47
  "types": "./dist/types/src/meta.d.ts",
48
- "default": "./dist/lib/neutral/meta.mjs"
48
+ "default": "./dist/lib/meta.mjs"
49
49
  },
50
50
  "#operations": {
51
51
  "source": "./src/operations/index.ts",
52
52
  "types": "./dist/types/src/operations/index.d.ts",
53
- "default": "./dist/lib/neutral/operations/index.mjs"
53
+ "default": "./dist/lib/operations.mjs"
54
54
  },
55
55
  "#plugin": {
56
56
  "source": {
@@ -59,58 +59,58 @@
59
59
  "default": "./src/ScriptPlugin.tsx"
60
60
  },
61
61
  "types": "./dist/types/src/ScriptPlugin.d.ts",
62
- "workerd": "./dist/lib/neutral/ScriptPlugin.workerd.mjs",
63
- "node": "./dist/lib/neutral/ScriptPlugin.node.mjs",
64
- "default": "./dist/lib/neutral/ScriptPlugin.mjs"
62
+ "workerd": "./dist/lib/ScriptPlugin.workerd.mjs",
63
+ "node": "./dist/lib/ScriptPlugin.node.mjs",
64
+ "default": "./dist/lib/ScriptPlugin.mjs"
65
65
  },
66
66
  "#testing": "./src/testing/index.ts",
67
67
  "#translations": {
68
68
  "source": "./src/translations.ts",
69
69
  "types": "./dist/types/src/translations.d.ts",
70
- "default": "./dist/lib/neutral/translations.mjs"
70
+ "default": "./dist/lib/translations.mjs"
71
71
  },
72
72
  "#types": {
73
73
  "source": "./src/types/index.ts",
74
74
  "types": "./dist/types/src/types/index.d.ts",
75
- "default": "./dist/lib/neutral/types/index.mjs"
75
+ "default": "./dist/lib/types.mjs"
76
76
  }
77
77
  },
78
78
  "exports": {
79
79
  ".": {
80
80
  "source": "./src/index.ts",
81
81
  "types": "./dist/types/src/index.d.ts",
82
- "default": "./dist/lib/neutral/index.mjs"
82
+ "import": "./dist/lib/index.mjs"
83
83
  },
84
84
  "./assets/PLUGIN.mdl": "./PLUGIN.mdl",
85
85
  "./skills": {
86
86
  "source": "./src/skills/index.ts",
87
87
  "types": "./dist/types/src/skills/index.d.ts",
88
- "default": "./dist/lib/neutral/skills/index.mjs"
88
+ "import": "./dist/lib/skills.mjs"
89
89
  },
90
90
  "./containers": {
91
91
  "source": "./src/containers/index.ts",
92
92
  "types": "./dist/types/src/containers/index.d.ts",
93
- "default": "./dist/lib/neutral/containers/index.mjs"
93
+ "import": "./dist/lib/containers.mjs"
94
94
  },
95
95
  "./plugin": {
96
96
  "source": "./src/plugin.ts",
97
97
  "types": "./dist/types/src/plugin.d.ts",
98
- "default": "./dist/lib/neutral/plugin.mjs"
98
+ "import": "./dist/lib/plugin.mjs"
99
99
  },
100
100
  "./templates": {
101
101
  "source": "./src/templates/index.ts",
102
102
  "types": "./dist/types/src/templates/index.d.ts",
103
- "default": "./dist/lib/neutral/templates/index.mjs"
103
+ "import": "./dist/lib/templates.mjs"
104
104
  },
105
105
  "./translations": {
106
106
  "source": "./src/translations.ts",
107
107
  "types": "./dist/types/src/translations.d.ts",
108
- "default": "./dist/lib/neutral/translations.mjs"
108
+ "import": "./dist/lib/translations.mjs"
109
109
  },
110
110
  "./types": {
111
111
  "source": "./src/types/index.ts",
112
112
  "types": "./dist/types/src/types/index.d.ts",
113
- "default": "./dist/lib/neutral/types/index.mjs"
113
+ "import": "./dist/lib/types.mjs"
114
114
  }
115
115
  },
116
116
  "types": "dist/types/src/index.d.ts",
@@ -122,12 +122,13 @@
122
122
  ],
123
123
  "dependencies": {
124
124
  "@automerge/automerge": "3.3.0-fragments.2",
125
- "@codemirror/autocomplete": "^6.20.2",
125
+ "@codemirror/autocomplete": "^6.20.3",
126
126
  "@codemirror/lang-javascript": "^6.2.5",
127
- "@codemirror/language": "^6.12.3",
127
+ "@codemirror/language": "^6.12.4",
128
128
  "@codemirror/lint": "6.9.7",
129
- "@codemirror/state": "^6.6.0",
130
- "@codemirror/view": "^6.43.0",
129
+ "@codemirror/state": "^6.7.1",
130
+ "@codemirror/view": "^6.43.6",
131
+ "@effect-atom/atom": "^0.5.3",
131
132
  "@effect-atom/atom-react": "^0.5.0",
132
133
  "@lezer/common": "^1.5.2",
133
134
  "@lezer/highlight": "^1.2.3",
@@ -141,52 +142,56 @@
141
142
  "esbuild-wasm": "^0.28.0",
142
143
  "prettier": "^3.6.2",
143
144
  "typescript": "^6.0.3",
144
- "@dxos/ai": "0.10.0",
145
- "@dxos/app-toolkit": "0.10.0",
146
- "@dxos/assistant": "0.10.0",
147
- "@dxos/app-framework": "0.10.0",
148
- "@dxos/client": "0.10.0",
149
- "@dxos/client-protocol": "0.10.0",
150
- "@dxos/context": "0.10.0",
151
- "@dxos/compute": "0.10.0",
152
- "@dxos/config": "0.10.0",
153
- "@dxos/echo": "0.10.0",
154
- "@dxos/echo-client": "0.10.0",
155
- "@dxos/echo-doc": "0.10.0",
156
- "@dxos/assistant-toolkit": "0.10.0",
157
- "@dxos/effect": "0.10.0",
158
- "@dxos/functions": "0.10.0",
159
- "@dxos/echo-query": "0.10.0",
160
- "@dxos/functions-runtime": "0.10.0",
161
- "@dxos/functions-simulator-cloudflare": "0.10.0",
162
- "@dxos/invariant": "0.10.0",
163
- "@dxos/keys": "0.10.0",
164
- "@dxos/devtools": "0.10.0",
165
- "@dxos/log": "0.10.0",
166
- "@dxos/plugin-client": "0.10.0",
167
- "@dxos/plugin-assistant": "0.10.0",
168
- "@dxos/plugin-explorer": "0.10.0",
169
- "@dxos/plugin-graph": "0.10.0",
170
- "@dxos/plugin-routine": "0.10.0",
171
- "@dxos/plugin-space": "0.10.0",
172
- "@dxos/plugin-markdown": "0.10.0",
173
- "@dxos/protocols": "0.10.0",
174
- "@dxos/react-client": "0.10.0",
175
- "@dxos/react-ui-attention": "0.10.0",
176
- "@dxos/react-ui-editor": "0.10.0",
177
- "@dxos/react-ui-menu": "0.10.0",
178
- "@dxos/react-ui-form": "0.10.0",
179
- "@dxos/react-ui-components": "0.10.0",
180
- "@dxos/react-ui-mosaic": "0.10.0",
181
- "@dxos/react-ui-syntax-highlighter": "0.10.0",
182
- "@dxos/rpc": "0.10.0",
183
- "@dxos/rpc-tunnel": "0.10.0",
184
- "@dxos/schema": "0.10.0",
185
- "@dxos/plugin-game": "0.10.0",
186
- "@dxos/ui": "0.10.0",
187
- "@dxos/types": "0.10.0",
188
- "@dxos/ui-editor": "0.10.0",
189
- "@dxos/util": "0.10.0"
145
+ "@dxos/ai": "0.11.0",
146
+ "@dxos/assistant": "0.11.0",
147
+ "@dxos/app-framework": "0.11.0",
148
+ "@dxos/assistant-toolkit": "0.11.0",
149
+ "@dxos/app-toolkit": "0.11.0",
150
+ "@dxos/client": "0.11.0",
151
+ "@dxos/client-protocol": "0.11.0",
152
+ "@dxos/compute": "0.11.0",
153
+ "@dxos/config": "0.11.0",
154
+ "@dxos/context": "0.11.0",
155
+ "@dxos/devtools": "0.11.0",
156
+ "@dxos/compute-runtime": "0.11.0",
157
+ "@dxos/echo": "0.11.0",
158
+ "@dxos/echo-client": "0.11.0",
159
+ "@dxos/echo-doc": "0.11.0",
160
+ "@dxos/echo-query": "0.11.0",
161
+ "@dxos/echo-react": "0.11.0",
162
+ "@dxos/edge-compute": "0.11.0",
163
+ "@dxos/halo": "0.11.0",
164
+ "@dxos/keys": "0.11.0",
165
+ "@dxos/effect": "0.11.0",
166
+ "@dxos/link": "0.11.0",
167
+ "@dxos/log": "0.11.0",
168
+ "@dxos/plugin-assistant": "0.11.0",
169
+ "@dxos/plugin-client": "0.11.0",
170
+ "@dxos/plugin-game": "0.11.0",
171
+ "@dxos/plugin-explorer": "0.11.0",
172
+ "@dxos/plugin-graph": "0.11.0",
173
+ "@dxos/plugin-markdown": "0.11.0",
174
+ "@dxos/protocols": "0.11.0",
175
+ "@dxos/plugin-space": "0.11.0",
176
+ "@dxos/react-client": "0.11.0",
177
+ "@dxos/react-ui-attention": "0.11.0",
178
+ "@dxos/react-ui-components": "0.11.0",
179
+ "@dxos/react-ui-dnd": "0.11.0",
180
+ "@dxos/react-ui-editor": "0.11.0",
181
+ "@dxos/react-ui-form": "0.11.0",
182
+ "@dxos/react-ui-menu": "0.11.0",
183
+ "@dxos/react-ui-mosaic": "0.11.0",
184
+ "@dxos/react-ui-syntax-highlighter": "0.11.0",
185
+ "@dxos/rpc": "0.11.0",
186
+ "@dxos/rpc-tunnel": "0.11.0",
187
+ "@dxos/schema": "0.11.0",
188
+ "@dxos/ui-editor": "0.11.0",
189
+ "@dxos/ui": "0.11.0",
190
+ "@dxos/types": "0.11.0",
191
+ "@dxos/util": "0.11.0",
192
+ "@dxos/plugin-routine": "0.11.0",
193
+ "@dxos/invariant": "0.11.0",
194
+ "@dxos/halo-react": "0.11.0"
190
195
  },
191
196
  "devDependencies": {
192
197
  "@effect-atom/atom-react": "^0.5.0",
@@ -199,15 +204,16 @@
199
204
  "effect": "3.21.4",
200
205
  "react": "~19.2.7",
201
206
  "react-dom": "~19.2.7",
202
- "vite": "^8.0.16",
203
- "@dxos/config": "0.10.0",
204
- "@dxos/plugin-chess": "0.10.0",
205
- "@dxos/plugin-routine": "0.10.0",
206
- "@dxos/plugin-testing": "0.10.0",
207
- "@dxos/random": "0.10.0",
208
- "@dxos/storybook-utils": "0.10.0",
209
- "@dxos/react-ui": "0.10.0",
210
- "@dxos/ui-theme": "0.10.0"
207
+ "vite": "^8.1.4",
208
+ "@dxos/config": "0.11.0",
209
+ "@dxos/plugin-chess": "0.11.0",
210
+ "@dxos/plugin-routine": "0.11.0",
211
+ "@dxos/plugin-testing": "0.11.0",
212
+ "@dxos/random": "0.11.0",
213
+ "@dxos/react-ui": "0.11.0",
214
+ "@dxos/ui-theme": "0.11.0",
215
+ "@dxos/storybook-utils": "0.11.0",
216
+ "@dxos/functions-simulator-cloudflare": "0.11.0"
211
217
  },
212
218
  "peerDependencies": {
213
219
  "@effect-atom/atom-react": "^0.5.0",
@@ -215,8 +221,8 @@
215
221
  "effect": "3.21.4",
216
222
  "react": "~19.2.7",
217
223
  "react-dom": "~19.2.7",
218
- "@dxos/react-ui": "0.10.0",
219
- "@dxos/ui-theme": "0.10.0"
224
+ "@dxos/react-ui": "^0.11.0",
225
+ "@dxos/ui-theme": "^0.11.0"
220
226
  },
221
227
  "publishConfig": {
222
228
  "access": "public"
@@ -0,0 +1,96 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ // Surface components that cannot be expressed as a `props` mapper, because they call hooks.
6
+
7
+ import React from 'react';
8
+
9
+ import { useAtomCapability, useSettingsState } from '@dxos/app-framework/ui';
10
+ import { type AppCapabilities } from '@dxos/app-toolkit';
11
+ import { type Script } from '@dxos/compute';
12
+ import { InvocationTraceContainer } from '@dxos/devtools';
13
+ import { Feed } from '@dxos/echo';
14
+ import { useClient } from '@dxos/react-client';
15
+ import { getSpace } from '@dxos/react-client/echo';
16
+ import { Panel } from '@dxos/react-ui';
17
+
18
+ import { NotebookArticle, ScriptArticle, ScriptSettings } from '#containers';
19
+ import { useCompiler } from '#hooks';
20
+ import { type Notebook, ScriptCapabilities, type Settings } from '#types';
21
+
22
+ import { getAccessCredential } from '../util';
23
+
24
+ export type ScriptSettingsSurfaceProps = {
25
+ subject: AppCapabilities.Settings;
26
+ };
27
+
28
+ export const ScriptSettingsSurface = ({ subject }: ScriptSettingsSurfaceProps) => {
29
+ const { settings, updateSettings } = useSettingsState<Settings.Settings>(subject.atom);
30
+ const client = useClient();
31
+ // TODO(burdon): Check token.
32
+ const handleAuthenticate = async () => {
33
+ const identity = client.halo.identity.get();
34
+ if (!identity) {
35
+ return;
36
+ }
37
+
38
+ await client.halo.writeCredentials([getAccessCredential(identity.identityKey)]);
39
+ };
40
+
41
+ return <ScriptSettings settings={settings} onSettingsChange={updateSettings} onAuthenticate={handleAuthenticate} />;
42
+ };
43
+
44
+ export type ScriptArticleSurfaceProps = {
45
+ role: string;
46
+ subject: Script.Script;
47
+ attendableId?: string;
48
+ };
49
+
50
+ /** The compiler environment and settings are ambient, so they are resolved here rather than mapped. */
51
+ export const ScriptArticleSurface = ({ role, subject, attendableId }: ScriptArticleSurfaceProps) => {
52
+ const compiler = useCompiler();
53
+ const settings = useAtomCapability(ScriptCapabilities.Settings);
54
+
55
+ return (
56
+ <ScriptArticle
57
+ role={role}
58
+ subject={subject}
59
+ attendableId={attendableId}
60
+ settings={settings}
61
+ env={compiler?.environment}
62
+ />
63
+ );
64
+ };
65
+
66
+ export type NotebookArticleSurfaceProps = {
67
+ role: string;
68
+ subject: Notebook.Notebook;
69
+ attendableId?: string;
70
+ };
71
+
72
+ export const NotebookArticleSurface = ({ role, subject, attendableId }: NotebookArticleSurfaceProps) => {
73
+ const compiler = useCompiler();
74
+
75
+ return <NotebookArticle role={role} subject={subject} attendableId={attendableId} env={compiler?.environment} />;
76
+ };
77
+
78
+ export type ScriptLogsSurfaceProps = {
79
+ role: string;
80
+ script: Script.Script;
81
+ };
82
+
83
+ /** Resolves the space's invocation-trace feed for the selected script. */
84
+ export const ScriptLogsSurface = ({ role, script }: ScriptLogsSurfaceProps) => {
85
+ const space = getSpace(script);
86
+ const feed = space?.properties.invocationTraceFeed?.target;
87
+ const feedDXN = feed ? Feed.getFeedUri(feed) : undefined;
88
+
89
+ return (
90
+ <Panel.Root role={role}>
91
+ <Panel.Content asChild>
92
+ <InvocationTraceContainer db={space?.db} feedDXN={feedDXN} target={script} detailAxis='block' />
93
+ </Panel.Content>
94
+ </Panel.Root>
95
+ );
96
+ };
@@ -20,7 +20,7 @@ export default Capability.makeModule(
20
20
  connector: () =>
21
21
  Effect.succeed([
22
22
  AppNode.makeCompanion({
23
- id: 'execute',
23
+ variant: 'execute',
24
24
  label: ['script-test.label', { ns: meta.profile.key }],
25
25
  icon: 'ph--terminal--regular',
26
26
  data: 'execute',
@@ -33,7 +33,7 @@ export default Capability.makeModule(
33
33
  connector: () =>
34
34
  Effect.succeed([
35
35
  AppNode.makeCompanion({
36
- id: 'logs',
36
+ variant: 'logs',
37
37
  label: ['script-logs.label', { ns: meta.profile.key }],
38
38
  icon: 'ph--clock-countdown--regular',
39
39
  data: 'logs',
@@ -11,7 +11,7 @@ import wasmUrl from 'esbuild-wasm/esbuild.wasm?url';
11
11
  import * as ts from 'typescript';
12
12
 
13
13
  import { Capability } from '@dxos/app-framework';
14
- import { initializeBundler } from '@dxos/functions-runtime/bundler';
14
+ import { initializeBundler } from '@dxos/edge-compute/bundler';
15
15
  import { log } from '@dxos/log';
16
16
  import { trim } from '@dxos/util';
17
17
 
@@ -0,0 +1,82 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Effect from 'effect/Effect';
6
+ import { type ComponentProps } from 'react';
7
+
8
+ import { Capabilities, Capability } from '@dxos/app-framework';
9
+ import { Surface } from '@dxos/app-framework/ui';
10
+ import { AppSurface } from '@dxos/app-toolkit/ui';
11
+ import { Script } from '@dxos/compute';
12
+
13
+ import { DeploymentDialog, ScriptProperties, TestContainer } from '#containers';
14
+ import { meta } from '#meta';
15
+ import { Notebook } from '#types';
16
+
17
+ import { DEPLOYMENT_DIALOG } from '../constants';
18
+ import {
19
+ NotebookArticleSurface,
20
+ ScriptArticleSurface,
21
+ ScriptLogsSurface,
22
+ ScriptSettingsSurface,
23
+ } from './ScriptSurfaces';
24
+
25
+ export default Capability.makeModule(() =>
26
+ Effect.succeed(
27
+ Capability.contributes(Capabilities.ReactSurface, [
28
+ Surface.create({
29
+ id: 'pluginSettings',
30
+ filter: AppSurface.settings(AppSurface.Article, meta.profile.key),
31
+ component: ScriptSettingsSurface,
32
+ props: ({ data: { subject } }) => ({ subject }),
33
+ }),
34
+ Surface.create({
35
+ id: 'script.article',
36
+ // TODO(wittjosiah): Split into multiple surfaces if this filter proves too strict for non-article roles.
37
+ filter: AppSurface.oneOf(
38
+ AppSurface.object(AppSurface.Article, Script.Script),
39
+ AppSurface.object(AppSurface.Section, Script.Script),
40
+ ),
41
+ component: ScriptArticleSurface,
42
+ props: ({ role, data: { subject, attendableId } }) => ({ role, subject, attendableId }),
43
+ }),
44
+ Surface.create({
45
+ id: 'notebook.article',
46
+ filter: AppSurface.object(AppSurface.Article, Notebook.Notebook),
47
+ component: NotebookArticleSurface,
48
+ props: ({ role, data: { subject, attendableId } }) => ({ role, subject, attendableId }),
49
+ }),
50
+ Surface.create({
51
+ id: 'objectProperties',
52
+ filter: AppSurface.object(AppSurface.ObjectProperties, Script.Script),
53
+ component: ScriptProperties,
54
+ props: ({ role, data: { subject } }) => ({ role, subject }),
55
+ }),
56
+ Surface.create({
57
+ id: 'companion.execute',
58
+ filter: AppSurface.allOf(
59
+ AppSurface.literal(AppSurface.Article, 'execute'),
60
+ AppSurface.companion(AppSurface.Article, Script.Script),
61
+ ),
62
+ component: TestContainer,
63
+ props: ({ role, data: { companionTo } }) => ({ role, script: companionTo }),
64
+ }),
65
+ Surface.create({
66
+ id: 'companion.logs',
67
+ filter: AppSurface.allOf(
68
+ AppSurface.literal(AppSurface.Article, 'logs'),
69
+ AppSurface.companion(AppSurface.Article, Script.Script),
70
+ ),
71
+ component: ScriptLogsSurface,
72
+ props: ({ role, data: { companionTo } }) => ({ role, script: companionTo }),
73
+ }),
74
+ Surface.create({
75
+ id: DEPLOYMENT_DIALOG,
76
+ filter: AppSurface.component<ComponentProps<typeof DeploymentDialog>>(AppSurface.Dialog, DEPLOYMENT_DIALOG),
77
+ component: DeploymentDialog,
78
+ props: ({ data: { props } }) => ({ ...props }),
79
+ }),
80
+ ]),
81
+ ),
82
+ );
@@ -177,13 +177,14 @@ const NotebookPromptResult = ({ cell, promptResults }: NotebookCellProps) => {
177
177
  }
178
178
 
179
179
  return (
180
- <div className={mx('flex w-full bg-group-surface text-description border-y border-subdued-separator', valueStyles)}>
180
+ <div className={mx('flex w-full dx-group-surface text-description border-y border-subdued-separator', valueStyles)}>
181
181
  <NotebookTextEditor readOnly value={value} />
182
182
  </div>
183
183
  );
184
184
  };
185
185
 
186
186
  const NotebookTextEditor = ({
187
+ classNames,
187
188
  extensions: extensionsProp,
188
189
  readOnly,
189
190
  ...props
@@ -202,7 +203,13 @@ const NotebookTextEditor = ({
202
203
 
203
204
  return (
204
205
  <Editor.Root>
205
- <Editor.View classNames='border' {...props} extensions={extensions} selectionEnd />
206
+ {/* Focused-cell affordance: Editor.View no longer applies a focus border by default. */}
207
+ <Editor.View
208
+ {...props}
209
+ classNames={mx('border focus-within:border-focus-ring-subtle', classNames)}
210
+ extensions={extensions}
211
+ selectionEnd
212
+ />
206
213
  </Editor.Root>
207
214
  );
208
215
  };
@@ -11,6 +11,7 @@ import { ClientPlugin } from '@dxos/plugin-client/testing';
11
11
  import { initializeIdentity } from '@dxos/plugin-client/testing';
12
12
  import { RoutinePlugin } from '@dxos/plugin-routine/testing';
13
13
  import { corePlugins } from '@dxos/plugin-testing';
14
+ import { withMosaic } from '@dxos/react-ui-mosaic/testing';
14
15
  import { withLayout } from '@dxos/react-ui/testing';
15
16
 
16
17
  import { createNotebook } from '#testing';
@@ -27,6 +28,7 @@ const meta = {
27
28
  title: 'plugins/plugin-script/components/NotebookStack',
28
29
  component: NotebookStackStory,
29
30
  decorators: [
31
+ withMosaic(),
30
32
  withLayout({ layout: 'column', classNames: 'dx-document' }),
31
33
  withPluginManager({
32
34
  plugins: [
@@ -2,12 +2,13 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import React, { useCallback, useMemo, useState } from 'react';
5
+ import React, { useCallback, useId, useMemo, useState } from 'react';
6
6
 
7
7
  import { Obj } from '@dxos/echo';
8
8
  import { DropdownMenu, IconButton, ScrollArea, type ThemedClassName, useTranslation } from '@dxos/react-ui';
9
9
  import { composable, composableProps } from '@dxos/react-ui';
10
- import { Mosaic, type MosaicEventHandler, type MosaicTileProps } from '@dxos/react-ui-mosaic';
10
+ import { type DndContainerHandler } from '@dxos/react-ui-dnd';
11
+ import { Mosaic, type MosaicTileProps } from '@dxos/react-ui-mosaic';
11
12
  import { mx } from '@dxos/ui-theme';
12
13
  import { arrayMove } from '@dxos/util';
13
14
 
@@ -50,11 +51,14 @@ export const NotebookStack = composable<HTMLDivElement, NotebookStackProps>(
50
51
  [db, graph, promptResults, onCellInsert, onCellDelete, env],
51
52
  );
52
53
 
54
+ // Per-instance discriminator so the same notebook opened twice doesn't collide in the Mosaic registry.
55
+ const instanceId = useId();
56
+
53
57
  // Reorder cells in place; placeholder/tile locations are 1-based with half-step placeholders between
54
58
  // tiles, so the floor of the drop location is the destination array index (see Mosaic.Stack).
55
- const eventHandler = useMemo<MosaicEventHandler<Notebook.Cell>>(
59
+ const eventHandler = useMemo<DndContainerHandler<Notebook.Cell>>(
56
60
  () => ({
57
- id: notebook?.id ?? 'notebook',
61
+ id: `notebook:${notebook?.id ?? 'anon'}:${instanceId}`,
58
62
  // Only the notebook's own cells are droppable; onDrop only reorders within this notebook.
59
63
  canDrop: ({ source }) => !!notebook && notebook.cells.some((cell) => cell.id === source.id),
60
64
  onDrop: ({ source, target }) => {
@@ -81,19 +85,23 @@ export const NotebookStack = composable<HTMLDivElement, NotebookStackProps>(
81
85
  });
82
86
  },
83
87
  }),
84
- [notebook],
88
+ [notebook, instanceId],
85
89
  );
86
90
 
87
91
  return (
88
- <Mosaic.Root ref={forwardedRef}>
89
- <Mosaic.Container asChild orientation='vertical' autoScroll={viewport} eventHandler={eventHandler}>
90
- <ScrollArea.Root orientation='vertical' padding {...composableProps(props)}>
91
- <ScrollArea.Viewport ref={setViewport}>
92
- <Mosaic.Stack orientation='vertical' items={notebook?.cells ?? []} getId={getCellId} Tile={Tile} />
93
- </ScrollArea.Viewport>
94
- </ScrollArea.Root>
95
- </Mosaic.Container>
96
- </Mosaic.Root>
92
+ <Mosaic.Container
93
+ asChild
94
+ orientation='vertical'
95
+ autoScroll={viewport}
96
+ eventHandler={eventHandler}
97
+ ref={forwardedRef}
98
+ >
99
+ <ScrollArea.Root orientation='vertical' padding {...composableProps(props)}>
100
+ <ScrollArea.Viewport ref={setViewport}>
101
+ <Mosaic.Stack orientation='vertical' items={notebook?.cells ?? []} getId={getCellId} Tile={Tile} />
102
+ </ScrollArea.Viewport>
103
+ </ScrollArea.Root>
104
+ </Mosaic.Container>
97
105
  );
98
106
  },
99
107
  );
@@ -6,7 +6,7 @@ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import React, { useCallback, useMemo, useState } from 'react';
7
7
 
8
8
  import { Doc } from '@dxos/echo-doc';
9
- import { QuerySandbox } from '@dxos/echo-query';
9
+ import { QuerySandbox } from '@dxos/echo-query/sandbox';
10
10
  import { createObject } from '@dxos/react-client/echo';
11
11
  import { Panel, Toolbar, useAsyncEffect } from '@dxos/react-ui';
12
12
  import { JsonHighlighter } from '@dxos/react-ui-syntax-highlighter';
@@ -5,6 +5,7 @@
5
5
  import React, { useState } from 'react';
6
6
  import { ModuleResolutionKind, ScriptTarget } from 'typescript';
7
7
 
8
+ // TODO(burdon): Document.
8
9
  import queryApi from '@dxos/echo-query/api.d.ts?raw';
9
10
  import { useAsyncEffect } from '@dxos/react-ui';
10
11
 
@@ -2,7 +2,7 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { Atom, Registry } from '@effect-atom/atom-react';
5
+ import { Atom, Registry } from '@effect-atom/atom';
6
6
  import { type Meta, type StoryObj } from '@storybook/react-vite';
7
7
  import React, { useMemo } from 'react';
8
8
 
@@ -2,7 +2,7 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { Atom } from '@effect-atom/atom-react';
5
+ import { Atom } from '@effect-atom/atom';
6
6
  import React, { useMemo } from 'react';
7
7
 
8
8
  import { AppSurface } from '@dxos/app-toolkit/ui';