@dxos/plugin-script 0.8.4-main.ae835ea → 0.8.4-main.bc674ce

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 (386) hide show
  1. package/dist/lib/browser/DeploymentDialog-OSL6RMPA.mjs +14 -0
  2. package/dist/lib/browser/{NotebookContainer-C36N7AFF.mjs → NotebookContainer-NBAXYESH.mjs} +267 -239
  3. package/dist/lib/browser/NotebookContainer-NBAXYESH.mjs.map +7 -0
  4. package/dist/lib/browser/ScriptContainer-WD33CJMI.mjs +149 -0
  5. package/dist/lib/browser/ScriptContainer-WD33CJMI.mjs.map +7 -0
  6. package/dist/lib/browser/app-graph-builder-7VO7AUI6.mjs +68 -0
  7. package/dist/lib/browser/app-graph-builder-7VO7AUI6.mjs.map +7 -0
  8. package/dist/lib/browser/blueprint-definition-OSOUYI7A.mjs +17 -0
  9. package/dist/lib/browser/blueprint-definition-OSOUYI7A.mjs.map +7 -0
  10. package/dist/lib/browser/blueprints/index.mjs +8 -0
  11. package/dist/lib/browser/chunk-BTWHM6FH.mjs +270 -0
  12. package/dist/lib/browser/chunk-BTWHM6FH.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-C53UJGSU.mjs +557 -0
  14. package/dist/lib/browser/chunk-C53UJGSU.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-F3QKSKSF.mjs +35 -0
  16. package/dist/lib/browser/chunk-F3QKSKSF.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-I7CSE6T3.mjs +110 -0
  18. package/dist/lib/browser/chunk-I7CSE6T3.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-TWX2NMZN.mjs +137 -0
  20. package/dist/lib/browser/chunk-TWX2NMZN.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-UUR4JNNB.mjs +113 -0
  22. package/dist/lib/browser/chunk-UUR4JNNB.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-ST3ACVUC.mjs → chunk-UX4GHJ5E.mjs} +29 -12
  24. package/dist/lib/browser/chunk-UX4GHJ5E.mjs.map +7 -0
  25. package/dist/lib/browser/{chunk-EB6AXFXO.mjs → chunk-WYR4QHPE.mjs} +1 -1
  26. package/dist/lib/browser/chunk-WYR4QHPE.mjs.map +7 -0
  27. package/dist/lib/browser/chunk-XCN4D3Z5.mjs +606 -0
  28. package/dist/lib/browser/chunk-XCN4D3Z5.mjs.map +7 -0
  29. package/dist/lib/browser/compiler-76F3QAXC.mjs +161 -0
  30. package/dist/lib/browser/compiler-76F3QAXC.mjs.map +7 -0
  31. package/dist/lib/browser/index.mjs +96 -126
  32. package/dist/lib/browser/index.mjs.map +4 -4
  33. package/dist/lib/browser/meta.json +1 -1
  34. package/dist/lib/browser/operation-resolver-HUILPPKT.mjs +82 -0
  35. package/dist/lib/browser/operation-resolver-HUILPPKT.mjs.map +7 -0
  36. package/dist/lib/browser/{react-surface-X4NATU6B.mjs → react-surface-O6GKHB2J.mjs} +52 -41
  37. package/dist/lib/browser/react-surface-O6GKHB2J.mjs.map +7 -0
  38. package/dist/lib/browser/settings-3ENI25PI.mjs +35 -0
  39. package/dist/lib/browser/settings-3ENI25PI.mjs.map +7 -0
  40. package/dist/lib/browser/templates/index.mjs +1 -1
  41. package/dist/lib/browser/types/index.mjs +9 -5
  42. package/dist/lib/node-esm/{DeploymentDialog-OSHHSEBH.mjs → DeploymentDialog-OGBJPVIX.mjs} +6 -6
  43. package/dist/lib/node-esm/DeploymentDialog-OGBJPVIX.mjs.map +7 -0
  44. package/dist/lib/node-esm/{NotebookContainer-FOVFGJQR.mjs → NotebookContainer-IUAYVJSD.mjs} +267 -239
  45. package/dist/lib/node-esm/NotebookContainer-IUAYVJSD.mjs.map +7 -0
  46. package/dist/lib/node-esm/ScriptContainer-K7JCEU5Z.mjs +150 -0
  47. package/dist/lib/node-esm/ScriptContainer-K7JCEU5Z.mjs.map +7 -0
  48. package/dist/lib/node-esm/app-graph-builder-NVE3EVBG.mjs +69 -0
  49. package/dist/lib/node-esm/app-graph-builder-NVE3EVBG.mjs.map +7 -0
  50. package/dist/lib/node-esm/blueprint-definition-NC7NNJGI.mjs +18 -0
  51. package/dist/lib/node-esm/blueprint-definition-NC7NNJGI.mjs.map +7 -0
  52. package/dist/lib/node-esm/blueprints/index.mjs +9 -0
  53. package/dist/lib/node-esm/blueprints/index.mjs.map +7 -0
  54. package/dist/lib/node-esm/{chunk-2GVTWESW.mjs → chunk-4F5FJZ36.mjs} +29 -12
  55. package/dist/lib/node-esm/chunk-4F5FJZ36.mjs.map +7 -0
  56. package/dist/lib/node-esm/chunk-4QNZMXW6.mjs +607 -0
  57. package/dist/lib/node-esm/chunk-4QNZMXW6.mjs.map +7 -0
  58. package/dist/lib/node-esm/{chunk-IBV2DR36.mjs → chunk-5HSJPAK7.mjs} +1 -1
  59. package/dist/lib/node-esm/chunk-5HSJPAK7.mjs.map +7 -0
  60. package/dist/lib/node-esm/chunk-BX5PP6AW.mjs +558 -0
  61. package/dist/lib/node-esm/chunk-BX5PP6AW.mjs.map +7 -0
  62. package/dist/lib/node-esm/chunk-G3J76DWP.mjs +114 -0
  63. package/dist/lib/node-esm/chunk-G3J76DWP.mjs.map +7 -0
  64. package/dist/lib/node-esm/chunk-SLU3KRV3.mjs +112 -0
  65. package/dist/lib/node-esm/chunk-SLU3KRV3.mjs.map +7 -0
  66. package/dist/lib/node-esm/chunk-VQPIA4VF.mjs +138 -0
  67. package/dist/lib/node-esm/chunk-VQPIA4VF.mjs.map +7 -0
  68. package/dist/lib/node-esm/chunk-VWOLKNMO.mjs +271 -0
  69. package/dist/lib/node-esm/chunk-VWOLKNMO.mjs.map +7 -0
  70. package/dist/lib/node-esm/chunk-Y3G5NCTP.mjs +36 -0
  71. package/dist/lib/node-esm/chunk-Y3G5NCTP.mjs.map +7 -0
  72. package/dist/lib/node-esm/compiler-FNZH6TFN.mjs +162 -0
  73. package/dist/lib/node-esm/compiler-FNZH6TFN.mjs.map +7 -0
  74. package/dist/lib/node-esm/index.mjs +96 -126
  75. package/dist/lib/node-esm/index.mjs.map +4 -4
  76. package/dist/lib/node-esm/meta.json +1 -1
  77. package/dist/lib/node-esm/operation-resolver-JTCIY6HU.mjs +83 -0
  78. package/dist/lib/node-esm/operation-resolver-JTCIY6HU.mjs.map +7 -0
  79. package/dist/lib/node-esm/{react-surface-LVGLBSTE.mjs → react-surface-RLANMVMB.mjs} +52 -41
  80. package/dist/lib/node-esm/react-surface-RLANMVMB.mjs.map +7 -0
  81. package/dist/lib/node-esm/settings-7AYC5VXN.mjs +36 -0
  82. package/dist/lib/node-esm/settings-7AYC5VXN.mjs.map +7 -0
  83. package/dist/lib/node-esm/templates/index.mjs +1 -1
  84. package/dist/lib/node-esm/types/index.mjs +9 -5
  85. package/dist/types/src/ScriptPlugin.d.ts +2 -1
  86. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  87. package/dist/types/src/blueprints/index.d.ts +2 -0
  88. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  89. package/dist/types/src/blueprints/script-blueprint.d.ts +22 -0
  90. package/dist/types/src/blueprints/script-blueprint.d.ts.map +1 -0
  91. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  92. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  93. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  94. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  95. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts +12 -0
  96. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts.map +1 -0
  97. package/dist/types/src/capabilities/artifact-definition/index.d.ts +3 -0
  98. package/dist/types/src/capabilities/artifact-definition/index.d.ts.map +1 -0
  99. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +9 -0
  100. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -0
  101. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +3 -0
  102. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -0
  103. package/dist/types/src/capabilities/compiler/compiler.d.ts +6 -0
  104. package/dist/types/src/capabilities/compiler/compiler.d.ts.map +1 -0
  105. package/dist/types/src/capabilities/compiler/index.d.ts +3 -0
  106. package/dist/types/src/capabilities/compiler/index.d.ts.map +1 -0
  107. package/dist/types/src/capabilities/index.d.ts +6 -7
  108. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  109. package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
  110. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  111. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
  112. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  113. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  114. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  115. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  116. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  117. package/dist/types/src/capabilities/settings/index.d.ts +7 -0
  118. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
  119. package/dist/types/src/capabilities/settings/settings.d.ts +9 -0
  120. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
  121. package/dist/types/src/compiler/compiler.d.ts +1 -1
  122. package/dist/types/src/compiler/compiler.d.ts.map +1 -1
  123. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts +2 -2
  124. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +1 -1
  125. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts +4 -3
  126. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -1
  127. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts +1 -1
  128. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +1 -1
  129. package/dist/types/src/components/NotebookContainer.d.ts +3 -5
  130. package/dist/types/src/components/NotebookContainer.d.ts.map +1 -1
  131. package/dist/types/src/components/NotebookContainer.stories.d.ts +3 -247
  132. package/dist/types/src/components/NotebookContainer.stories.d.ts.map +1 -1
  133. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts +3 -3
  134. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts.map +1 -1
  135. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts +1 -1
  136. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts.map +1 -1
  137. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts +5 -1
  138. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts.map +1 -1
  139. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts +5 -0
  140. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts.map +1 -0
  141. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts +13 -0
  142. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts.map +1 -0
  143. package/dist/types/src/components/QueryEditor/index.d.ts +2 -0
  144. package/dist/types/src/components/QueryEditor/index.d.ts.map +1 -0
  145. package/dist/types/src/components/ScriptContainer.d.ts +4 -5
  146. package/dist/types/src/components/ScriptContainer.d.ts.map +1 -1
  147. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts +2 -2
  148. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  149. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts +5 -1
  150. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -1
  151. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +1 -1
  152. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts +4 -2
  153. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts.map +1 -1
  154. package/dist/types/src/components/TestPanel/TestContainer.d.ts +1 -1
  155. package/dist/types/src/components/TestPanel/TestContainer.d.ts.map +1 -1
  156. package/dist/types/src/components/TestPanel/TestPanel.d.ts.map +1 -1
  157. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts +3 -2
  158. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  159. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts +1 -1
  160. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -1
  161. package/dist/types/src/components/index.d.ts +2 -2
  162. package/dist/types/src/components/index.d.ts.map +1 -1
  163. package/dist/types/src/e2e/ai.test.d.ts +2 -0
  164. package/dist/types/src/e2e/ai.test.d.ts.map +1 -0
  165. package/dist/types/src/e2e/deploy.test.d.ts +2 -0
  166. package/dist/types/src/e2e/deploy.test.d.ts.map +1 -0
  167. package/dist/types/src/hooks/deploy.d.ts +10 -25
  168. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  169. package/dist/types/src/hooks/format.d.ts +2 -2
  170. package/dist/types/src/hooks/format.d.ts.map +1 -1
  171. package/dist/types/src/hooks/index.d.ts +1 -0
  172. package/dist/types/src/hooks/index.d.ts.map +1 -1
  173. package/dist/types/src/hooks/template.d.ts +2 -2
  174. package/dist/types/src/hooks/template.d.ts.map +1 -1
  175. package/dist/types/src/hooks/useCompiler.d.ts +7 -0
  176. package/dist/types/src/hooks/useCompiler.d.ts.map +1 -0
  177. package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts.map +1 -1
  178. package/dist/types/src/hooks/useToolbarState.d.ts +8 -1
  179. package/dist/types/src/hooks/useToolbarState.d.ts.map +1 -1
  180. package/dist/types/src/index.d.ts +1 -1
  181. package/dist/types/src/index.d.ts.map +1 -1
  182. package/dist/types/src/meta.d.ts +2 -2
  183. package/dist/types/src/meta.d.ts.map +1 -1
  184. package/dist/types/src/notebook/compute-graph.d.ts +24 -11
  185. package/dist/types/src/notebook/compute-graph.d.ts.map +1 -1
  186. package/dist/types/src/templates/anthropic.d.ts +8 -0
  187. package/dist/types/src/templates/anthropic.d.ts.map +1 -0
  188. package/dist/types/src/templates/chess-bot.d.ts +16 -0
  189. package/dist/types/src/templates/chess-bot.d.ts.map +1 -0
  190. package/dist/types/src/templates/commentary.d.ts +16 -0
  191. package/dist/types/src/templates/commentary.d.ts.map +1 -0
  192. package/dist/types/src/templates/forex-effect.d.ts +4 -1
  193. package/dist/types/src/templates/forex-effect.d.ts.map +1 -1
  194. package/dist/types/src/templates/forex.d.ts +4 -1
  195. package/dist/types/src/templates/forex.d.ts.map +1 -1
  196. package/dist/types/src/templates/index.d.ts +12 -3
  197. package/dist/types/src/templates/index.d.ts.map +1 -1
  198. package/dist/types/src/templates/ping.d.ts +1 -4
  199. package/dist/types/src/templates/ping.d.ts.map +1 -1
  200. package/dist/types/src/testing/simulator.test.d.ts +2 -0
  201. package/dist/types/src/testing/simulator.test.d.ts.map +1 -0
  202. package/dist/types/src/translations.d.ts +2 -0
  203. package/dist/types/src/translations.d.ts.map +1 -1
  204. package/dist/types/src/types/Notebook.d.ts +91 -22
  205. package/dist/types/src/types/Notebook.d.ts.map +1 -1
  206. package/dist/types/src/types/actions.d.ts +30 -44
  207. package/dist/types/src/types/actions.d.ts.map +1 -1
  208. package/dist/types/src/types/capabilities.d.ts +12 -0
  209. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  210. package/dist/types/src/types/events.d.ts +5 -0
  211. package/dist/types/src/types/events.d.ts.map +1 -0
  212. package/dist/types/src/types/index.d.ts +2 -0
  213. package/dist/types/src/types/index.d.ts.map +1 -1
  214. package/dist/types/src/util/deploy.d.ts.map +1 -1
  215. package/dist/types/src/util/functions.d.ts.map +1 -1
  216. package/dist/types/tsconfig.tsbuildinfo +1 -1
  217. package/package.json +113 -85
  218. package/src/ScriptPlugin.tsx +36 -75
  219. package/src/blueprints/index.ts +5 -0
  220. package/src/blueprints/script-blueprint.ts +24 -0
  221. package/src/capabilities/app-graph-builder/app-graph-builder.ts +55 -0
  222. package/src/capabilities/app-graph-builder/index.ts +7 -0
  223. package/src/capabilities/{artifact-definition.ts → artifact-definition/artifact-definition.ts} +97 -95
  224. package/src/capabilities/artifact-definition/index.ts +7 -0
  225. package/src/capabilities/blueprint-definition/blueprint-definition.ts +23 -0
  226. package/src/capabilities/blueprint-definition/index.ts +7 -0
  227. package/src/capabilities/compiler/compiler.ts +103 -0
  228. package/src/capabilities/compiler/index.ts +7 -0
  229. package/src/capabilities/index.ts +6 -10
  230. package/src/capabilities/operation-resolver/index.ts +7 -0
  231. package/src/capabilities/operation-resolver/operation-resolver.ts +74 -0
  232. package/src/capabilities/react-surface/index.ts +7 -0
  233. package/src/capabilities/react-surface/react-surface.tsx +118 -0
  234. package/src/capabilities/settings/index.ts +7 -0
  235. package/src/capabilities/settings/settings.ts +32 -0
  236. package/src/compiler/compiler.ts +10 -3
  237. package/src/components/DeploymentDialog/DeploymentDialog.stories.tsx +28 -24
  238. package/src/components/DeploymentDialog/DeploymentDialog.tsx +38 -41
  239. package/src/components/FrameContainer/FrameContainer.tsx +6 -4
  240. package/src/components/NotebookContainer.stories.tsx +23 -19
  241. package/src/components/NotebookContainer.tsx +69 -61
  242. package/src/components/NotebookStack/NotebookCell.tsx +36 -27
  243. package/src/components/NotebookStack/NotebookStack.stories.tsx +19 -18
  244. package/src/components/NotebookStack/NotebookStack.tsx +4 -4
  245. package/src/components/QueryEditor/QueryEditor.stories.tsx +100 -0
  246. package/src/components/QueryEditor/QueryEditor.tsx +47 -0
  247. package/src/components/QueryEditor/index.ts +5 -0
  248. package/src/components/ScriptContainer.tsx +48 -33
  249. package/src/components/ScriptToolbar/ScriptToolbar.stories.tsx +38 -15
  250. package/src/components/ScriptToolbar/ScriptToolbar.tsx +18 -21
  251. package/src/components/Settings/ScriptObjectSettings.tsx +54 -31
  252. package/src/components/Settings/ScriptPluginSettings.tsx +8 -3
  253. package/src/components/TestPanel/TestContainer.tsx +5 -5
  254. package/src/components/TestPanel/TestPanel.tsx +36 -13
  255. package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +14 -9
  256. package/src/components/TypescriptEditor/TypescriptEditor.tsx +69 -69
  257. package/src/e2e/ai.test.ts +92 -0
  258. package/src/e2e/deploy.test.ts +64 -0
  259. package/src/hooks/deploy.ts +36 -28
  260. package/src/hooks/format.ts +5 -1
  261. package/src/hooks/index.ts +1 -0
  262. package/src/hooks/template.ts +15 -9
  263. package/src/hooks/useCompiler.ts +24 -0
  264. package/src/hooks/useCreateAndDeployScriptTemplates.ts +13 -15
  265. package/src/hooks/useToolbarState.ts +29 -5
  266. package/src/index.ts +1 -1
  267. package/src/meta.ts +2 -2
  268. package/src/notebook/compute-graph.test.ts +20 -8
  269. package/src/notebook/compute-graph.ts +45 -21
  270. package/src/templates/anthropic.ts +42 -0
  271. package/src/templates/chess-bot.ts +58 -0
  272. package/src/templates/commentary.ts +232 -0
  273. package/src/templates/data-generator.ts +1 -1
  274. package/src/templates/forex-effect.ts +22 -27
  275. package/src/templates/forex.ts +7 -6
  276. package/src/templates/gmail.ts +1 -2
  277. package/src/templates/index.ts +18 -5
  278. package/src/templates/ping.ts +14 -5
  279. package/src/testing/data.ts +7 -7
  280. package/src/testing/simulator.test.ts +40 -0
  281. package/src/translations.ts +2 -0
  282. package/src/types/Notebook.ts +12 -12
  283. package/src/types/actions.ts +17 -25
  284. package/src/types/capabilities.ts +17 -0
  285. package/src/types/events.ts +11 -0
  286. package/src/types/index.ts +2 -0
  287. package/src/types/types.ts +1 -1
  288. package/src/util/deploy.ts +23 -29
  289. package/src/util/functions.ts +29 -25
  290. package/src/vite-env.d.ts +2 -0
  291. package/dist/lib/browser/DeploymentDialog-E5NXT4UQ.mjs +0 -14
  292. package/dist/lib/browser/NotebookContainer-C36N7AFF.mjs.map +0 -7
  293. package/dist/lib/browser/ScriptContainer-4YPRUM3C.mjs +0 -148
  294. package/dist/lib/browser/ScriptContainer-4YPRUM3C.mjs.map +0 -7
  295. package/dist/lib/browser/app-graph-builder-LEOPGBJD.mjs +0 -66
  296. package/dist/lib/browser/app-graph-builder-LEOPGBJD.mjs.map +0 -7
  297. package/dist/lib/browser/blueprint-definition-6PZWZM2Y.mjs +0 -30
  298. package/dist/lib/browser/blueprint-definition-6PZWZM2Y.mjs.map +0 -7
  299. package/dist/lib/browser/chunk-5S5YQNJZ.mjs +0 -304
  300. package/dist/lib/browser/chunk-5S5YQNJZ.mjs.map +0 -7
  301. package/dist/lib/browser/chunk-A5K3TXYA.mjs +0 -269
  302. package/dist/lib/browser/chunk-A5K3TXYA.mjs.map +0 -7
  303. package/dist/lib/browser/chunk-EB6AXFXO.mjs.map +0 -7
  304. package/dist/lib/browser/chunk-HCURXADW.mjs +0 -102
  305. package/dist/lib/browser/chunk-HCURXADW.mjs.map +0 -7
  306. package/dist/lib/browser/chunk-HHTOAI2J.mjs +0 -644
  307. package/dist/lib/browser/chunk-HHTOAI2J.mjs.map +0 -7
  308. package/dist/lib/browser/chunk-IQMYIWHG.mjs +0 -153
  309. package/dist/lib/browser/chunk-IQMYIWHG.mjs.map +0 -7
  310. package/dist/lib/browser/chunk-LI4P25M5.mjs +0 -111
  311. package/dist/lib/browser/chunk-LI4P25M5.mjs.map +0 -7
  312. package/dist/lib/browser/chunk-Q2DGRQRN.mjs +0 -255
  313. package/dist/lib/browser/chunk-Q2DGRQRN.mjs.map +0 -7
  314. package/dist/lib/browser/chunk-ST3ACVUC.mjs.map +0 -7
  315. package/dist/lib/browser/chunk-UOQ6NCH3.mjs +0 -15
  316. package/dist/lib/browser/chunk-UOQ6NCH3.mjs.map +0 -7
  317. package/dist/lib/browser/compiler-Q4UY2COU.mjs +0 -86
  318. package/dist/lib/browser/compiler-Q4UY2COU.mjs.map +0 -7
  319. package/dist/lib/browser/intent-resolver-AMMHATM7.mjs +0 -105
  320. package/dist/lib/browser/intent-resolver-AMMHATM7.mjs.map +0 -7
  321. package/dist/lib/browser/react-surface-X4NATU6B.mjs.map +0 -7
  322. package/dist/lib/browser/settings-6UXY7F7D.mjs +0 -26
  323. package/dist/lib/browser/settings-6UXY7F7D.mjs.map +0 -7
  324. package/dist/lib/node-esm/NotebookContainer-FOVFGJQR.mjs.map +0 -7
  325. package/dist/lib/node-esm/ScriptContainer-EW24D5II.mjs +0 -149
  326. package/dist/lib/node-esm/ScriptContainer-EW24D5II.mjs.map +0 -7
  327. package/dist/lib/node-esm/app-graph-builder-XJ3MY5BM.mjs +0 -67
  328. package/dist/lib/node-esm/app-graph-builder-XJ3MY5BM.mjs.map +0 -7
  329. package/dist/lib/node-esm/blueprint-definition-5R6YCSZZ.mjs +0 -31
  330. package/dist/lib/node-esm/blueprint-definition-5R6YCSZZ.mjs.map +0 -7
  331. package/dist/lib/node-esm/chunk-2GVTWESW.mjs.map +0 -7
  332. package/dist/lib/node-esm/chunk-55JZVM6K.mjs +0 -16
  333. package/dist/lib/node-esm/chunk-55JZVM6K.mjs.map +0 -7
  334. package/dist/lib/node-esm/chunk-EJLYOSD7.mjs +0 -113
  335. package/dist/lib/node-esm/chunk-EJLYOSD7.mjs.map +0 -7
  336. package/dist/lib/node-esm/chunk-GA27XSEY.mjs +0 -270
  337. package/dist/lib/node-esm/chunk-GA27XSEY.mjs.map +0 -7
  338. package/dist/lib/node-esm/chunk-IBV2DR36.mjs.map +0 -7
  339. package/dist/lib/node-esm/chunk-N2XLVOFB.mjs +0 -103
  340. package/dist/lib/node-esm/chunk-N2XLVOFB.mjs.map +0 -7
  341. package/dist/lib/node-esm/chunk-O7HXE72S.mjs +0 -256
  342. package/dist/lib/node-esm/chunk-O7HXE72S.mjs.map +0 -7
  343. package/dist/lib/node-esm/chunk-OZ6LCME4.mjs +0 -645
  344. package/dist/lib/node-esm/chunk-OZ6LCME4.mjs.map +0 -7
  345. package/dist/lib/node-esm/chunk-TUGLYZDT.mjs +0 -305
  346. package/dist/lib/node-esm/chunk-TUGLYZDT.mjs.map +0 -7
  347. package/dist/lib/node-esm/chunk-UEGPBCSF.mjs +0 -154
  348. package/dist/lib/node-esm/chunk-UEGPBCSF.mjs.map +0 -7
  349. package/dist/lib/node-esm/compiler-I6A4KE6E.mjs +0 -87
  350. package/dist/lib/node-esm/compiler-I6A4KE6E.mjs.map +0 -7
  351. package/dist/lib/node-esm/intent-resolver-YKLZQR7U.mjs +0 -106
  352. package/dist/lib/node-esm/intent-resolver-YKLZQR7U.mjs.map +0 -7
  353. package/dist/lib/node-esm/react-surface-LVGLBSTE.mjs.map +0 -7
  354. package/dist/lib/node-esm/settings-O4EZPUE3.mjs +0 -27
  355. package/dist/lib/node-esm/settings-O4EZPUE3.mjs.map +0 -7
  356. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  357. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  358. package/dist/types/src/capabilities/artifact-definition.d.ts +0 -11
  359. package/dist/types/src/capabilities/artifact-definition.d.ts.map +0 -1
  360. package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -5
  361. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
  362. package/dist/types/src/capabilities/capabilities.d.ts +0 -5
  363. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  364. package/dist/types/src/capabilities/compiler.d.ts +0 -4
  365. package/dist/types/src/capabilities/compiler.d.ts.map +0 -1
  366. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  367. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  368. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  369. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  370. package/dist/types/src/capabilities/settings.d.ts +0 -4
  371. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  372. package/dist/types/src/events.d.ts +0 -4
  373. package/dist/types/src/events.d.ts.map +0 -1
  374. package/dist/types/src/templates/chess.d.ts +0 -3
  375. package/dist/types/src/templates/chess.d.ts.map +0 -1
  376. package/src/capabilities/app-graph-builder.ts +0 -65
  377. package/src/capabilities/blueprint-definition.ts +0 -30
  378. package/src/capabilities/capabilities.ts +0 -12
  379. package/src/capabilities/compiler.ts +0 -34
  380. package/src/capabilities/intent-resolver.ts +0 -86
  381. package/src/capabilities/react-surface.tsx +0 -102
  382. package/src/capabilities/settings.ts +0 -21
  383. package/src/events.ts +0 -11
  384. package/src/templates/chess.ts +0 -49
  385. /package/dist/lib/browser/{DeploymentDialog-E5NXT4UQ.mjs.map → DeploymentDialog-OSL6RMPA.mjs.map} +0 -0
  386. /package/dist/lib/{node-esm/DeploymentDialog-OSHHSEBH.mjs.map → browser/blueprints/index.mjs.map} +0 -0
@@ -2,33 +2,27 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ import { RegistryContext } from '@effect-atom/atom-react';
5
6
  import * as Cause from 'effect/Cause';
6
7
  import * as Effect from 'effect/Effect';
7
8
  import * as Exit from 'effect/Exit';
8
- import * as Layer from 'effect/Layer';
9
- import React, { useCallback, useMemo, useState } from 'react';
9
+ import type * as Types from 'effect/Types';
10
+ import React, { useCallback, useContext, useMemo, useState } from 'react';
10
11
 
12
+ import { type SurfaceComponentProps } from '@dxos/app-framework/react';
11
13
  import { Agent } from '@dxos/assistant-toolkit';
12
14
  import { Blueprint, Prompt } from '@dxos/blueprints';
13
15
  import { Filter, Obj, Query, Ref } from '@dxos/echo';
14
16
  import { QueryBuilder } from '@dxos/echo-query';
15
- import {
16
- ComputeEventLogger,
17
- type FunctionDefinition,
18
- FunctionInvocationService,
19
- InvocationTracer,
20
- TracingService,
21
- } from '@dxos/functions';
17
+ import { type FunctionDefinition, FunctionInvocationService, TracingService } from '@dxos/functions';
22
18
  import { invariant } from '@dxos/invariant';
23
19
  import { log } from '@dxos/log';
24
20
  import { useComputeRuntimeCallback } from '@dxos/plugin-automation';
25
21
  import { Graph } from '@dxos/plugin-explorer/types';
26
- import { fullyQualifiedId } from '@dxos/react-client/echo';
27
- import { getSpace } from '@dxos/react-client/echo';
28
22
  import { DropdownMenu, IconButton, Toolbar, useTranslation } from '@dxos/react-ui';
29
23
  import { useAttention } from '@dxos/react-ui-attention';
30
- import { StackItem } from '@dxos/react-ui-stack';
31
- import { DataType } from '@dxos/schema';
24
+ import { Layout } from '@dxos/react-ui-mosaic';
25
+ import { Text, View } from '@dxos/schema';
32
26
  import { isNonNullable } from '@dxos/util';
33
27
 
34
28
  import { meta } from '../meta';
@@ -42,24 +36,22 @@ const INCLUDE_BLUEPRINTS = ['dxos.org/blueprint/assistant', 'dxos.org/blueprint/
42
36
 
43
37
  // TODO(burdon): Support calling named deployed functions (as with sheet).
44
38
 
45
- export type NotebookContainerProps = {
46
- role?: string;
47
- notebook?: Notebook.Notebook;
48
- } & Pick<TypescriptEditorProps, 'env'>;
39
+ export type NotebookContainerProps = SurfaceComponentProps<Notebook.Notebook, Pick<TypescriptEditorProps, 'env'>>;
49
40
 
50
- export const NotebookContainer = ({ notebook, env }: NotebookContainerProps) => {
41
+ export const NotebookContainer = ({ role, subject: notebook, env }: NotebookContainerProps) => {
51
42
  const { t } = useTranslation(meta.id);
52
- const space = getSpace(notebook);
53
- const attendableId = fullyQualifiedId(notebook);
43
+ const registry = useContext(RegistryContext);
44
+ const db = notebook && Obj.getDatabase(notebook);
45
+ const attendableId = notebook ? Obj.getDXN(notebook).toString() : '';
54
46
  const { hasAttention } = useAttention(attendableId);
55
47
 
56
48
  // TODO(burdon): Consolidate execution and state (with graph).
57
49
  // Generalize ComputeGraph evaluation function (using effects).
58
- const graph = useMemo(() => notebook && new ComputeGraph(notebook), [notebook]);
50
+ const graph = useMemo(() => notebook && new ComputeGraph(notebook, registry), [notebook, registry]);
59
51
 
60
52
  const [queryValues, setQueryValues] = useState<Record<string, any>>({});
61
53
  const handleExecQueries = useCallback(async () => {
62
- invariant(space);
54
+ invariant(db);
63
55
 
64
56
  const builder = new QueryBuilder();
65
57
  for (const cell of notebook?.cells ?? []) {
@@ -69,32 +61,39 @@ export const NotebookContainer = ({ notebook, env }: NotebookContainerProps) =>
69
61
  const { name, filter } = builder.build(source);
70
62
  if (filter) {
71
63
  const ast = Query.select(filter).ast;
72
- const view = cell.view?.target;
73
- if (!view) {
74
- const graph = Graph.make({ query: { ast } });
75
- const { view } = await Graph.makeView({ space, presentation: graph });
76
- cell.view = Ref.make(view);
77
- cell.name = name;
64
+ const graph = cell.graph?.target;
65
+ if (!graph) {
66
+ const { view } = await View.makeFromDatabase({ db });
67
+ const newGraph = Graph.make({ query: { ast }, view });
68
+ Obj.change(notebook!, (n) => {
69
+ const c = n.cells.find((c) => c.id === cell.id);
70
+ if (c) {
71
+ c.graph = Ref.make(newGraph);
72
+ c.name = name;
73
+ }
74
+ });
78
75
  } else {
79
- view.query.ast = ast;
76
+ Obj.change(graph, (g) => {
77
+ g.query.ast = ast as Obj.Mutable<typeof ast>;
78
+ });
80
79
  }
81
80
  }
82
81
  }
83
82
 
84
- if (cell.name && cell.view?.target) {
85
- const view = Obj.getSnapshot(cell.view?.target);
86
- const query = Query.fromAst(view.query.ast);
87
- const result = await space?.db.query(query).run();
88
- const objectIds = result?.objects?.map((obj) => obj.id);
83
+ if (cell.name && cell.graph?.target) {
84
+ const graph = Obj.getSnapshot(cell.graph?.target);
85
+ const query = Query.fromAst(graph.query.ast);
86
+ const objects = await db.query(query).run();
87
+ const objectIds = objects?.map((obj) => obj.id);
89
88
  setQueryValues((prev) => ({ ...prev, [cell.name!]: objectIds }));
90
89
  }
91
90
  }
92
91
  }
93
- }, [space, notebook, graph]);
92
+ }, [db, notebook, graph]);
94
93
 
95
94
  const [promptResults, setPromptResults] = useState<Record<string, string>>({});
96
95
  const handleExecPrompts = useComputeRuntimeCallback(
97
- space,
96
+ db?.spaceId,
98
97
  Effect.fnUntraced(function* () {
99
98
  invariant(graph);
100
99
 
@@ -107,8 +106,12 @@ export const NotebookContainer = ({ notebook, env }: NotebookContainerProps) =>
107
106
  for (const prompt of prompts) {
108
107
  yield* runPrompt({
109
108
  prompt,
110
- input: { ...queryValues, ...graph.valuesByName.value },
111
- onResult: (result) => setPromptResults((prev) => ({ ...prev, [prompt.dxn.toString()]: result })),
109
+ input: { ...queryValues, ...graph.getValuesByName() },
110
+ onResult: (result) =>
111
+ setPromptResults((prev) => ({
112
+ ...prev,
113
+ [prompt.dxn.toString()]: result,
114
+ })),
112
115
  });
113
116
  }
114
117
  }),
@@ -129,10 +132,12 @@ export const NotebookContainer = ({ notebook, env }: NotebookContainerProps) =>
129
132
  const from = notebook.cells.findIndex((cell) => cell.id === source.id);
130
133
  const to = notebook.cells.findIndex((cell) => cell.id === target.id);
131
134
  if (from != null && to != null) {
132
- const cell = notebook.cells.splice(from, 1)[0];
133
- if (cell) {
134
- notebook.cells.splice(to, 0, cell);
135
- }
135
+ Obj.change(notebook, (n) => {
136
+ const cell = n.cells.splice(from, 1)[0];
137
+ if (cell) {
138
+ n.cells.splice(to, 0, cell);
139
+ }
140
+ });
136
141
  }
137
142
  },
138
143
  [notebook],
@@ -141,19 +146,19 @@ export const NotebookContainer = ({ notebook, env }: NotebookContainerProps) =>
141
146
  const handleCellInsert = useCallback<NonNullable<NotebookStackProps['onCellInsert']>>(
142
147
  async (type, after) => {
143
148
  invariant(notebook);
144
- const cell: Notebook.Cell = { id: crypto.randomUUID(), type };
149
+ const cell: Types.Mutable<Notebook.Cell> = { id: crypto.randomUUID(), type };
145
150
  switch (type) {
146
151
  case 'markdown':
147
152
  case 'script':
148
153
  case 'query': {
149
- cell.source = Ref.make(DataType.makeText());
154
+ cell.source = Ref.make(Text.make());
150
155
  break;
151
156
  }
152
157
 
153
158
  case 'prompt': {
154
- if (space) {
155
- const result = await space.db.query(Query.select(Filter.type(Blueprint.Blueprint))).run();
156
- const blueprints = result.objects
159
+ if (db) {
160
+ const objects = await db.query(Query.select(Filter.type(Blueprint.Blueprint))).run();
161
+ const blueprints = objects
157
162
  .filter((blueprint) => INCLUDE_BLUEPRINTS.includes(blueprint.key))
158
163
  .map((blueprint) => Ref.make(blueprint));
159
164
  cell.prompt = Ref.make(Prompt.make({ instructions: '', blueprints }));
@@ -163,9 +168,11 @@ export const NotebookContainer = ({ notebook, env }: NotebookContainerProps) =>
163
168
  }
164
169
 
165
170
  const idx = after ? notebook.cells.findIndex((cell) => cell.id === after) : notebook.cells.length;
166
- notebook.cells.splice(idx, 0, cell);
171
+ Obj.change(notebook, (n) => {
172
+ n.cells.splice(idx, 0, cell);
173
+ });
167
174
  },
168
- [space, notebook],
175
+ [db, notebook],
169
176
  );
170
177
 
171
178
  const handleCellDelete = useCallback<NonNullable<NotebookStackProps['onCellDelete']>>(
@@ -173,14 +180,16 @@ export const NotebookContainer = ({ notebook, env }: NotebookContainerProps) =>
173
180
  invariant(notebook);
174
181
  const idx = notebook.cells.findIndex((cell) => cell.id === id);
175
182
  if (idx !== -1) {
176
- notebook.cells.splice(idx, 1);
183
+ Obj.change(notebook, (n) => {
184
+ n.cells.splice(idx, 1);
185
+ });
177
186
  }
178
187
  },
179
188
  [notebook],
180
189
  );
181
190
 
182
191
  return (
183
- <StackItem.Content toolbar>
192
+ <Layout.Main role={role} toolbar>
184
193
  <Toolbar.Root disabled={!hasAttention} textBlockWidth>
185
194
  <DropdownMenu.Root>
186
195
  <DropdownMenu.Trigger asChild>
@@ -199,7 +208,7 @@ export const NotebookContainer = ({ notebook, env }: NotebookContainerProps) =>
199
208
  <div role='none' className='flex bs-full overflow-hidden -mis-[1px] -mie-[1px]'>
200
209
  <NotebookStack
201
210
  classNames='container-max-width border-l border-r border-subduedSeparator'
202
- space={space}
211
+ db={db}
203
212
  notebook={notebook}
204
213
  graph={graph}
205
214
  env={env}
@@ -209,13 +218,13 @@ export const NotebookContainer = ({ notebook, env }: NotebookContainerProps) =>
209
218
  onCellDelete={handleCellDelete}
210
219
  />
211
220
  </div>
212
- </StackItem.Content>
221
+ </Layout.Main>
213
222
  );
214
223
  };
215
224
 
216
225
  export default NotebookContainer;
217
226
 
218
- // TODO(wittjosiah): Factor out. Copied from PromptContainer in stories-assistant.
227
+ // TODO(wittjosiah): Factor out. Copied from PromptArticle in plugin-assistant.
219
228
  const runPrompt = Effect.fn(function* ({
220
229
  prompt,
221
230
  input,
@@ -225,8 +234,11 @@ const runPrompt = Effect.fn(function* ({
225
234
  input: Record<string, any>;
226
235
  onResult: (result: string) => void;
227
236
  }) {
228
- const inputData: FunctionDefinition.Input<typeof Agent.prompt> = { prompt, input };
229
- const tracer = yield* InvocationTracer;
237
+ const inputData: FunctionDefinition.Input<typeof Agent.prompt> = {
238
+ prompt,
239
+ input,
240
+ };
241
+ const tracer = yield* TracingService;
230
242
  const trace = yield* tracer.traceInvocationStart({
231
243
  target: undefined,
232
244
  payload: {
@@ -236,11 +248,7 @@ const runPrompt = Effect.fn(function* ({
236
248
 
237
249
  // Invoke the function.
238
250
  const result = yield* FunctionInvocationService.invokeFunction(Agent.prompt, inputData).pipe(
239
- Effect.provide(
240
- ComputeEventLogger.layerFromTracing.pipe(
241
- Layer.provideMerge(TracingService.layerQueue(trace.invocationTraceQueue)),
242
- ),
243
- ),
251
+ Effect.provide(trace.invocationTraceQueue ? TracingService.layerInvocation(trace) : TracingService.layerNoop),
244
252
  Effect.exit,
245
253
  );
246
254
 
@@ -4,24 +4,23 @@
4
4
 
5
5
  import React, { useCallback, useMemo } from 'react';
6
6
 
7
- import { Surface } from '@dxos/app-framework';
7
+ import { Surface } from '@dxos/app-framework/react';
8
+ import { type Database, Obj } from '@dxos/echo';
9
+ import { createDocAccessor } from '@dxos/echo-db';
8
10
  import { invariant } from '@dxos/invariant';
9
11
  import { TemplateEditor } from '@dxos/plugin-assistant';
10
- import { createDocAccessor } from '@dxos/react-client/echo';
11
- import { type Space } from '@dxos/react-client/echo';
12
12
  import { useThemeContext, useTranslation } from '@dxos/react-ui';
13
13
  import { QueryEditor, type QueryEditorProps } from '@dxos/react-ui-components';
14
+ import { EditorContent, type EditorContentProps } from '@dxos/react-ui-editor';
14
15
  import {
15
16
  type BasicExtensionsOptions,
16
- Editor,
17
- type EditorProps,
18
17
  createBasicExtensions,
19
18
  createDataExtensions,
20
19
  createMarkdownExtensions,
21
20
  createThemeExtensions,
22
21
  decorateMarkdown,
23
- } from '@dxos/react-ui-editor';
24
- import { mx } from '@dxos/react-ui-theme';
22
+ } from '@dxos/ui-editor';
23
+ import { mx } from '@dxos/ui-theme';
25
24
  import { isNonNullable } from '@dxos/util';
26
25
 
27
26
  import { meta } from '../../meta';
@@ -35,7 +34,7 @@ const editorStyles = 'p-2 pis-3';
35
34
  const valueStyles = 'p-1 pis-3';
36
35
 
37
36
  export type NotebookCellProps = {
38
- space?: Space;
37
+ db?: Database.Database;
39
38
  graph?: ComputeGraph;
40
39
  dragging?: boolean;
41
40
  cell: Notebook.Cell;
@@ -43,23 +42,28 @@ export type NotebookCellProps = {
43
42
  } & (Pick<NotebookMenuProps, 'onCellInsert' | 'onCellDelete'> & Pick<TypescriptEditorProps, 'env'>);
44
43
 
45
44
  // TODO(burdon): Show evaluation errors.
46
- export const NotebookCell = ({ space, graph, dragging, cell, promptResults, env }: NotebookCellProps) => {
45
+ export const NotebookCell = ({ db, graph, dragging, cell, promptResults, env }: NotebookCellProps) => {
47
46
  const { t } = useTranslation(meta.id);
48
47
 
49
48
  const extensions = useMemo(() => {
50
49
  return cell.source?.target
51
- ? [createDataExtensions({ id: cell.id, text: createDocAccessor(cell.source.target, ['content']) })].filter(
52
- isNonNullable,
53
- )
50
+ ? [
51
+ createDataExtensions({
52
+ id: cell.id,
53
+ text: createDocAccessor(cell.source.target, ['content']),
54
+ }),
55
+ ].filter(isNonNullable)
54
56
  : [];
55
57
  }, [cell.source?.target]);
56
58
 
57
- const view = cell.view?.target;
59
+ const explorerGraph = cell.graph?.target;
58
60
 
59
61
  const handleQueryChange = useCallback<NonNullable<QueryEditorProps['onChange']>>(
60
62
  (value: string) => {
61
63
  invariant(cell.source?.target);
62
- cell.source.target.content = value;
64
+ Obj.change(cell.source.target, (s) => {
65
+ s.content = value;
66
+ });
63
67
  },
64
68
  [cell],
65
69
  );
@@ -110,15 +114,17 @@ export const NotebookCell = ({ space, graph, dragging, cell, promptResults, env
110
114
 
111
115
  // TODO(burdon): Remove app-framework deps (via render prop).
112
116
  return (
113
- <div className={mx('bs-full overflow-hidden grid', view && !dragging && 'grid-rows-[min-content_1fr]')}>
117
+ <div
118
+ className={mx('bs-full overflow-hidden grid', explorerGraph && !dragging && 'grid-rows-[min-content_1fr]')}
119
+ >
114
120
  <QueryEditor
115
121
  id={cell.id}
116
- classNames={[editorStyles, 'border-b border-subduedSeparator']}
117
- db={space?.db}
122
+ classNames={[editorStyles, 'border-be border-subduedSeparator']}
123
+ db={db}
118
124
  value={cell.source.target.content}
119
125
  onChange={handleQueryChange}
120
126
  />
121
- {view && !dragging && <Surface role='section' limit={1} data={{ subject: view }} />}
127
+ {explorerGraph && !dragging && <Surface role='section' limit={1} data={{ subject: explorerGraph }} />}
122
128
  </div>
123
129
  );
124
130
 
@@ -146,7 +152,7 @@ export const NotebookCell = ({ space, graph, dragging, cell, promptResults, env
146
152
  };
147
153
 
148
154
  const NotebookCellValue = ({ cell, graph }: NotebookCellProps) => {
149
- const name = graph?.expressions.value[cell.id]?.name;
155
+ const name = graph?.getExpressions()[cell.id]?.name;
150
156
  const value = graph?.getValue(cell.id);
151
157
  if (value == null) {
152
158
  return null;
@@ -155,7 +161,7 @@ const NotebookCellValue = ({ cell, graph }: NotebookCellProps) => {
155
161
  return (
156
162
  <div
157
163
  className={mx(
158
- 'flex is-full bg-groupSurface border-t border-subduedSeparator text-description font-mono',
164
+ 'flex is-full bg-groupSurface border-bs border-subduedSeparator text-description font-mono',
159
165
  valueStyles,
160
166
  )}
161
167
  >
@@ -181,28 +187,31 @@ const NotebookPromptResult = ({ cell, promptResults }: NotebookCellProps) => {
181
187
  }
182
188
 
183
189
  return (
184
- <div className={mx('flex is-full bg-groupSurface text-description border-t border-subduedSeparator', valueStyles)}>
190
+ <div className={mx('flex is-full bg-groupSurface text-description border-bs border-subduedSeparator', valueStyles)}>
185
191
  <NotebookTextEditor readOnly value={value} />
186
192
  </div>
187
193
  );
188
194
  };
189
195
 
190
196
  const NotebookTextEditor = ({
191
- extensions: extensionsParam,
197
+ extensions: extensionsProp,
192
198
  readOnly,
193
199
  ...props
194
- }: EditorProps & Pick<BasicExtensionsOptions, 'readOnly'>) => {
200
+ }: EditorContentProps & Pick<BasicExtensionsOptions, 'readOnly'>) => {
195
201
  const { t } = useTranslation(meta.id);
196
202
  const { themeMode } = useThemeContext();
197
203
  const extensions = useMemo(() => {
198
204
  return [
199
- createBasicExtensions({ placeholder: t('notebook markdown placeholder'), readOnly }),
205
+ createBasicExtensions({
206
+ placeholder: t('notebook markdown placeholder'),
207
+ readOnly,
208
+ }),
200
209
  createThemeExtensions({ themeMode, syntaxHighlighting: true }),
201
210
  createMarkdownExtensions(),
202
211
  decorateMarkdown(),
203
- extensionsParam,
212
+ extensionsProp,
204
213
  ].filter(isNonNullable);
205
- }, [extensionsParam]);
214
+ }, [extensionsProp]);
206
215
 
207
- return <Editor {...props} extensions={extensions} moveToEnd />;
216
+ return <EditorContent {...props} extensions={extensions} selectionEnd />;
208
217
  };
@@ -3,12 +3,13 @@
3
3
  //
4
4
 
5
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import * as Effect from 'effect/Effect';
7
+ import React, { useMemo } from 'react';
6
8
 
7
- import { IntentPlugin, SettingsPlugin } from '@dxos/app-framework';
8
9
  import { withPluginManager } from '@dxos/app-framework/testing';
9
10
  import { AutomationPlugin } from '@dxos/plugin-automation';
10
11
  import { ClientPlugin } from '@dxos/plugin-client';
11
- import { SpacePlugin } from '@dxos/plugin-space';
12
+ import { corePlugins } from '@dxos/plugin-testing';
12
13
  import { withLayout, withTheme } from '@dxos/react-ui/testing';
13
14
 
14
15
  import { createNotebook } from '../../testing';
@@ -16,24 +17,28 @@ import { translations } from '../../translations';
16
17
 
17
18
  import { NotebookStack } from './NotebookStack';
18
19
 
20
+ // TODO(wittjosiah): ECHO objects don't work when passed via Storybook args.
21
+ const NotebookStackStory = () => {
22
+ const notebook = useMemo(() => createNotebook(), []);
23
+ return <NotebookStack notebook={notebook} />;
24
+ };
25
+
19
26
  const meta = {
20
27
  title: 'plugins/plugin-script/NotebookStack',
21
- component: NotebookStack,
28
+ component: NotebookStackStory,
22
29
  decorators: [
23
30
  withTheme,
24
- withLayout({ container: 'column', classNames: 'is-prose' }),
25
- // TODO(burdon): Factor out Surface to avoid dependency on app-framework.
31
+ withLayout({ layout: 'column', classNames: 'is-proseMaxWidth' }),
26
32
  withPluginManager({
27
33
  plugins: [
34
+ ...corePlugins(),
28
35
  ClientPlugin({
29
- onClientInitialized: async ({ client }) => {
30
- await client.halo.createIdentity();
31
- await client.spaces.waitUntilReady();
32
- },
36
+ onClientInitialized: ({ client }) =>
37
+ Effect.gen(function* () {
38
+ yield* Effect.promise(() => client.halo.createIdentity());
39
+ yield* Effect.promise(() => client.spaces.waitUntilReady());
40
+ }),
33
41
  }),
34
- SpacePlugin({}),
35
- SettingsPlugin(),
36
- IntentPlugin(),
37
42
  AutomationPlugin(),
38
43
  ],
39
44
  }),
@@ -41,14 +46,10 @@ const meta = {
41
46
  parameters: {
42
47
  translations,
43
48
  },
44
- } satisfies Meta<typeof NotebookStack>;
49
+ } satisfies Meta<typeof NotebookStackStory>;
45
50
 
46
51
  export default meta;
47
52
 
48
53
  type Story = StoryObj<typeof meta>;
49
54
 
50
- export const Default: Story = {
51
- args: {
52
- notebook: createNotebook(),
53
- },
54
- };
55
+ export const Default: Story = {};
@@ -20,7 +20,7 @@ export type NotebookStackProps = ThemedClassName<
20
20
  {
21
21
  notebook?: Notebook.Notebook;
22
22
  onRearrange?: StackProps['onRearrange'];
23
- } & (Pick<NotebookSectionProps, 'space' | 'graph' | 'promptResults' | 'onCellInsert' | 'onCellDelete'> &
23
+ } & (Pick<NotebookSectionProps, 'db' | 'graph' | 'promptResults' | 'onCellInsert' | 'onCellDelete'> &
24
24
  Pick<TypescriptEditorProps, 'env'>)
25
25
  >;
26
26
 
@@ -39,7 +39,7 @@ type NotebookSectionProps = NotebookCellProps;
39
39
 
40
40
  const NotebookSection = ({
41
41
  cell,
42
- space,
42
+ db,
43
43
  env,
44
44
  promptResults,
45
45
  onCellInsert,
@@ -73,13 +73,13 @@ const NotebookSection = ({
73
73
  <StackItem.DragPreview>
74
74
  {({ item: cell }) => (
75
75
  <StackItem.Content classNames='overflow-visible bg-groupSurface border border-subduedSeparator'>
76
- <NotebookCell space={space} cell={cell} env={env} dragging />
76
+ <NotebookCell db={db} cell={cell} env={env} dragging />
77
77
  </StackItem.Content>
78
78
  )}
79
79
  </StackItem.DragPreview>
80
80
 
81
81
  <StackItem.Content classNames='overflow-visible'>
82
- <NotebookCell space={space} cell={cell} env={env} promptResults={promptResults} {...props} />
82
+ <NotebookCell db={db} cell={cell} env={env} promptResults={promptResults} {...props} />
83
83
  </StackItem.Content>
84
84
  </StackItem.Root>
85
85
  );
@@ -0,0 +1,100 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import React, { useCallback, useMemo, useState } from 'react';
7
+
8
+ import { createDocAccessor } from '@dxos/echo-db';
9
+ import { QuerySandbox } from '@dxos/echo-query';
10
+ import { createObject } from '@dxos/react-client/echo';
11
+ import { Toolbar, useAsyncEffect } from '@dxos/react-ui';
12
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
13
+ import { Layout } from '@dxos/react-ui-mosaic';
14
+ import { Json } from '@dxos/react-ui-syntax-highlighter';
15
+ import { createDataExtensions } from '@dxos/ui-editor';
16
+ import { trim } from '@dxos/util';
17
+
18
+ import { QueryEditor, type QueryEditorProps } from './QueryEditor';
19
+
20
+ const SCRIPT = trim`
21
+ Query.select(Filter.type('dxos.org/type/Person'))
22
+ `;
23
+
24
+ const DefaultStory = (props: QueryEditorProps) => {
25
+ const object = useMemo(() => createObject({ content: SCRIPT }), []);
26
+ const [result, setResult] = useState<object | undefined>({});
27
+ const [sandbox, setSandbox] = useState<QuerySandbox>();
28
+
29
+ useAsyncEffect(async () => {
30
+ const sandbox = new QuerySandbox();
31
+ await sandbox.open();
32
+ setSandbox(sandbox);
33
+
34
+ return () => {
35
+ void sandbox.close();
36
+ };
37
+ }, []);
38
+
39
+ const extensions = useMemo(
40
+ () => [
41
+ createDataExtensions({
42
+ id: object.id,
43
+ text: createDocAccessor(object, ['content']),
44
+ }),
45
+ ],
46
+ [],
47
+ );
48
+
49
+ const handleRun = useCallback(async () => {
50
+ try {
51
+ const result = sandbox?.eval(object.content);
52
+
53
+ setResult({
54
+ timestamp: Date.now(),
55
+ result,
56
+ });
57
+ } catch (err) {
58
+ setResult({
59
+ timestamp: Date.now(),
60
+ error: String(err),
61
+ });
62
+ }
63
+ }, [object, sandbox]);
64
+
65
+ return (
66
+ <Layout.Main toolbar>
67
+ {/* <ScriptToolbar script={script} state={{}} /> */}
68
+ <Toolbar.Root>
69
+ <Toolbar.Button onClick={handleRun}>Run</Toolbar.Button>
70
+ </Toolbar.Root>
71
+ <div role='none' className='grid grid-rows-[1fr_min-content] bs-full overflow-hidden text-sm'>
72
+ <QueryEditor {...props} initialValue={object.content} extensions={extensions} />
73
+ <Json data={result} classNames='shrink-0 p-2 border-bs border-subduedSeparator' />
74
+ </div>
75
+ </Layout.Main>
76
+ );
77
+ };
78
+
79
+ const meta = {
80
+ title: 'plugins/plugin-script/QueryEditor',
81
+ component: QueryEditor,
82
+ render: DefaultStory,
83
+ decorators: [
84
+ withTheme,
85
+ withLayout({
86
+ layout: 'column',
87
+ classNames: 'is-proseMaxWidth',
88
+ }),
89
+ ],
90
+ } satisfies Meta<typeof DefaultStory>;
91
+
92
+ export default meta;
93
+
94
+ type Story = StoryObj<typeof meta>;
95
+
96
+ export const Default: Story = {
97
+ args: {
98
+ id: 'test',
99
+ },
100
+ };
@@ -0,0 +1,47 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ import React, { useState } from 'react';
6
+ import { ScriptTarget } from 'typescript';
7
+
8
+ import queryApi from '@dxos/echo-query/api.d.ts?raw';
9
+ import { useAsyncEffect } from '@dxos/react-ui';
10
+
11
+ import { Compiler } from '../../compiler';
12
+ import { TypescriptEditor, type TypescriptEditorProps } from '../TypescriptEditor';
13
+
14
+ const GLOBALS = `
15
+ namespace QueryAPI {
16
+ ${queryApi}
17
+ }
18
+
19
+ declare global {
20
+ const Query: typeof QueryAPI.Query;
21
+ const Filter: typeof QueryAPI.Filter;
22
+ const Order: typeof QueryAPI.Order;
23
+ }
24
+
25
+ export {};
26
+ `;
27
+
28
+ export type QueryEditorProps = Omit<TypescriptEditorProps, 'env'>;
29
+
30
+ export const QueryEditor = (props: QueryEditorProps) => {
31
+ const [compiler, setCompiler] = useState<Compiler>();
32
+
33
+ useAsyncEffect(async () => {
34
+ const compiler = new Compiler({
35
+ lib: ['ES5'],
36
+ target: ScriptTarget.ES2022,
37
+ });
38
+ await compiler.initialize(GLOBALS);
39
+ setCompiler(compiler);
40
+ }, []);
41
+
42
+ if (!compiler) {
43
+ return null;
44
+ }
45
+
46
+ return <TypescriptEditor {...props} env={compiler.environment} />;
47
+ };
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ export * from './QueryEditor';