@dxos/plugin-script 0.8.4-main.3c1ae3b → 0.8.4-main.3eb6e50203

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 (346) hide show
  1. package/dist/lib/browser/DeploymentDialog-XUAFCNI7.mjs +14 -0
  2. package/dist/lib/browser/{NotebookContainer-GL2Z5I5Q.mjs → NotebookContainer-UQ4I24R6.mjs} +266 -238
  3. package/dist/lib/browser/NotebookContainer-UQ4I24R6.mjs.map +7 -0
  4. package/dist/lib/browser/ScriptContainer-NB76645V.mjs +149 -0
  5. package/dist/lib/browser/ScriptContainer-NB76645V.mjs.map +7 -0
  6. package/dist/lib/browser/app-graph-builder-66ZDI72K.mjs +69 -0
  7. package/dist/lib/browser/app-graph-builder-66ZDI72K.mjs.map +7 -0
  8. package/dist/lib/browser/blueprint-definition-5RFKE7VK.mjs +18 -0
  9. package/dist/lib/browser/blueprint-definition-5RFKE7VK.mjs.map +7 -0
  10. package/dist/lib/browser/blueprints/index.mjs +8 -0
  11. package/dist/lib/browser/chunk-3BSF5BIA.mjs +113 -0
  12. package/dist/lib/browser/chunk-3BSF5BIA.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-S22N3BUR.mjs → chunk-4N5TLXEJ.mjs} +26 -9
  14. package/dist/lib/browser/chunk-4N5TLXEJ.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-BKGEAUUH.mjs +270 -0
  16. package/dist/lib/browser/chunk-BKGEAUUH.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-BU6CGVU2.mjs +137 -0
  18. package/dist/lib/browser/chunk-BU6CGVU2.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-F3QKSKSF.mjs +35 -0
  20. package/dist/lib/browser/chunk-F3QKSKSF.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-I7CSE6T3.mjs +110 -0
  22. package/dist/lib/browser/chunk-I7CSE6T3.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-LYMPME7J.mjs +609 -0
  24. package/dist/lib/browser/chunk-LYMPME7J.mjs.map +7 -0
  25. package/dist/lib/browser/{chunk-UGDRMROB.mjs → chunk-WWCDIB6Z.mjs} +160 -145
  26. package/dist/lib/browser/chunk-WWCDIB6Z.mjs.map +7 -0
  27. package/dist/lib/browser/{chunk-EB6AXFXO.mjs → chunk-WYR4QHPE.mjs} +1 -1
  28. package/dist/lib/browser/chunk-WYR4QHPE.mjs.map +7 -0
  29. package/dist/lib/browser/{compiler-2HV5KXV4.mjs → compiler-VPUVTFQD.mjs} +40 -22
  30. package/dist/lib/browser/compiler-VPUVTFQD.mjs.map +7 -0
  31. package/dist/lib/browser/index.mjs +93 -103
  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-NYDY7GDT.mjs +83 -0
  35. package/dist/lib/browser/operation-resolver-NYDY7GDT.mjs.map +7 -0
  36. package/dist/lib/browser/{react-surface-ASV2KBRA.mjs → react-surface-FYOQSC6S.mjs} +48 -36
  37. package/dist/lib/browser/react-surface-FYOQSC6S.mjs.map +7 -0
  38. package/dist/lib/browser/settings-5SF77MRH.mjs +36 -0
  39. package/dist/lib/browser/settings-5SF77MRH.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-5EN2KZE5.mjs → DeploymentDialog-GGWDQMEB.mjs} +6 -7
  43. package/dist/lib/node-esm/DeploymentDialog-GGWDQMEB.mjs.map +7 -0
  44. package/dist/lib/node-esm/{NotebookContainer-7RCEXND7.mjs → NotebookContainer-DQGZ6QHI.mjs} +266 -238
  45. package/dist/lib/node-esm/NotebookContainer-DQGZ6QHI.mjs.map +7 -0
  46. package/dist/lib/node-esm/ScriptContainer-PCNJFUWX.mjs +150 -0
  47. package/dist/lib/node-esm/ScriptContainer-PCNJFUWX.mjs.map +7 -0
  48. package/dist/lib/node-esm/app-graph-builder-IGAZTJ45.mjs +70 -0
  49. package/dist/lib/node-esm/app-graph-builder-IGAZTJ45.mjs.map +7 -0
  50. package/dist/lib/node-esm/blueprint-definition-EYL5GNDC.mjs +19 -0
  51. package/dist/lib/node-esm/blueprint-definition-EYL5GNDC.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-3CKQUF55.mjs +610 -0
  55. package/dist/lib/node-esm/chunk-3CKQUF55.mjs.map +7 -0
  56. package/dist/lib/node-esm/chunk-3QBXN6QC.mjs +271 -0
  57. package/dist/lib/node-esm/chunk-3QBXN6QC.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-4VVV5L5A.mjs → chunk-ECRSTVR6.mjs} +160 -145
  61. package/dist/lib/node-esm/chunk-ECRSTVR6.mjs.map +7 -0
  62. package/dist/lib/node-esm/chunk-KRVL7UYI.mjs +114 -0
  63. package/dist/lib/node-esm/chunk-KRVL7UYI.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-U6PXM2HT.mjs +138 -0
  67. package/dist/lib/node-esm/chunk-U6PXM2HT.mjs.map +7 -0
  68. package/dist/lib/node-esm/{chunk-2S43VHAM.mjs → chunk-V37R7KB5.mjs} +26 -9
  69. package/dist/lib/node-esm/chunk-V37R7KB5.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-KPEZKEHC.mjs → compiler-WUOSY6MS.mjs} +40 -22
  73. package/dist/lib/node-esm/compiler-WUOSY6MS.mjs.map +7 -0
  74. package/dist/lib/node-esm/index.mjs +93 -103
  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-AJNJXGCE.mjs +84 -0
  78. package/dist/lib/node-esm/operation-resolver-AJNJXGCE.mjs.map +7 -0
  79. package/dist/lib/node-esm/{react-surface-NXBO7VYB.mjs → react-surface-LREMOVNJ.mjs} +48 -36
  80. package/dist/lib/node-esm/react-surface-LREMOVNJ.mjs.map +7 -0
  81. package/dist/lib/node-esm/settings-ILI762CY.mjs +37 -0
  82. package/dist/lib/node-esm/settings-ILI762CY.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 +10 -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 +10 -0
  120. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
  121. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +1 -1
  122. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts +1 -3
  123. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -1
  124. package/dist/types/src/components/NotebookContainer.d.ts +3 -5
  125. package/dist/types/src/components/NotebookContainer.d.ts.map +1 -1
  126. package/dist/types/src/components/NotebookContainer.stories.d.ts +3 -250
  127. package/dist/types/src/components/NotebookContainer.stories.d.ts.map +1 -1
  128. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts +3 -3
  129. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts.map +1 -1
  130. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts +1 -1
  131. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts.map +1 -1
  132. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts +2 -1
  133. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts.map +1 -1
  134. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts.map +1 -1
  135. package/dist/types/src/components/ScriptContainer.d.ts +4 -5
  136. package/dist/types/src/components/ScriptContainer.d.ts.map +1 -1
  137. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts +2 -2
  138. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  139. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts +2 -1
  140. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -1
  141. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +1 -1
  142. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts +4 -2
  143. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts.map +1 -1
  144. package/dist/types/src/components/TestPanel/TestContainer.d.ts +1 -1
  145. package/dist/types/src/components/TestPanel/TestContainer.d.ts.map +1 -1
  146. package/dist/types/src/components/TestPanel/TestPanel.d.ts.map +1 -1
  147. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts +3 -2
  148. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  149. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts +1 -1
  150. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -1
  151. package/dist/types/src/components/index.d.ts +2 -2
  152. package/dist/types/src/components/index.d.ts.map +1 -1
  153. package/dist/types/src/e2e/ai.test.d.ts +2 -0
  154. package/dist/types/src/e2e/ai.test.d.ts.map +1 -0
  155. package/dist/types/src/hooks/deploy.d.ts +7 -6
  156. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  157. package/dist/types/src/hooks/format.d.ts +2 -2
  158. package/dist/types/src/hooks/format.d.ts.map +1 -1
  159. package/dist/types/src/hooks/template.d.ts +2 -2
  160. package/dist/types/src/hooks/template.d.ts.map +1 -1
  161. package/dist/types/src/hooks/useCompiler.d.ts.map +1 -1
  162. package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts.map +1 -1
  163. package/dist/types/src/hooks/useToolbarState.d.ts +8 -1
  164. package/dist/types/src/hooks/useToolbarState.d.ts.map +1 -1
  165. package/dist/types/src/index.d.ts +1 -1
  166. package/dist/types/src/index.d.ts.map +1 -1
  167. package/dist/types/src/meta.d.ts +2 -2
  168. package/dist/types/src/meta.d.ts.map +1 -1
  169. package/dist/types/src/notebook/compute-graph.d.ts +24 -11
  170. package/dist/types/src/notebook/compute-graph.d.ts.map +1 -1
  171. package/dist/types/src/templates/anthropic.d.ts +8 -0
  172. package/dist/types/src/templates/anthropic.d.ts.map +1 -0
  173. package/dist/types/src/templates/chess-bot.d.ts +16 -0
  174. package/dist/types/src/templates/chess-bot.d.ts.map +1 -0
  175. package/dist/types/src/templates/commentary.d.ts +16 -0
  176. package/dist/types/src/templates/commentary.d.ts.map +1 -0
  177. package/dist/types/src/templates/index.d.ts +12 -3
  178. package/dist/types/src/templates/index.d.ts.map +1 -1
  179. package/dist/types/src/templates/ping.d.ts +1 -4
  180. package/dist/types/src/templates/ping.d.ts.map +1 -1
  181. package/dist/types/src/types/Notebook.d.ts +88 -19
  182. package/dist/types/src/types/Notebook.d.ts.map +1 -1
  183. package/dist/types/src/types/actions.d.ts +30 -44
  184. package/dist/types/src/types/actions.d.ts.map +1 -1
  185. package/dist/types/src/types/capabilities.d.ts +12 -0
  186. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  187. package/dist/types/src/types/events.d.ts +5 -0
  188. package/dist/types/src/types/events.d.ts.map +1 -0
  189. package/dist/types/src/types/index.d.ts +2 -0
  190. package/dist/types/src/types/index.d.ts.map +1 -1
  191. package/dist/types/src/util/deploy.d.ts.map +1 -1
  192. package/dist/types/src/util/functions.d.ts.map +1 -1
  193. package/dist/types/tsconfig.tsbuildinfo +1 -1
  194. package/package.json +113 -90
  195. package/src/ScriptPlugin.tsx +38 -61
  196. package/src/blueprints/index.ts +5 -0
  197. package/src/blueprints/script-blueprint.ts +24 -0
  198. package/src/capabilities/app-graph-builder/app-graph-builder.ts +56 -0
  199. package/src/capabilities/app-graph-builder/index.ts +7 -0
  200. package/src/capabilities/{artifact-definition.ts → artifact-definition/artifact-definition.ts} +88 -85
  201. package/src/capabilities/artifact-definition/index.ts +7 -0
  202. package/src/capabilities/blueprint-definition/blueprint-definition.ts +24 -0
  203. package/src/capabilities/blueprint-definition/index.ts +7 -0
  204. package/src/capabilities/compiler/compiler.ts +103 -0
  205. package/src/capabilities/compiler/index.ts +7 -0
  206. package/src/capabilities/index.ts +6 -10
  207. package/src/capabilities/operation-resolver/index.ts +7 -0
  208. package/src/capabilities/operation-resolver/operation-resolver.ts +75 -0
  209. package/src/capabilities/react-surface/index.ts +7 -0
  210. package/src/capabilities/react-surface/react-surface.tsx +119 -0
  211. package/src/capabilities/settings/index.ts +7 -0
  212. package/src/capabilities/settings/settings.ts +33 -0
  213. package/src/components/DeploymentDialog/DeploymentDialog.stories.tsx +28 -24
  214. package/src/components/DeploymentDialog/DeploymentDialog.tsx +22 -42
  215. package/src/components/FrameContainer/FrameContainer.tsx +1 -1
  216. package/src/components/NotebookContainer.stories.tsx +24 -20
  217. package/src/components/NotebookContainer.tsx +49 -38
  218. package/src/components/NotebookStack/NotebookCell.tsx +18 -17
  219. package/src/components/NotebookStack/NotebookStack.stories.tsx +20 -19
  220. package/src/components/NotebookStack/NotebookStack.tsx +4 -4
  221. package/src/components/QueryEditor/QueryEditor.stories.tsx +18 -7
  222. package/src/components/ScriptContainer.tsx +46 -32
  223. package/src/components/ScriptToolbar/ScriptToolbar.stories.tsx +39 -16
  224. package/src/components/ScriptToolbar/ScriptToolbar.tsx +14 -17
  225. package/src/components/Settings/ScriptObjectSettings.tsx +40 -29
  226. package/src/components/Settings/ScriptPluginSettings.tsx +19 -14
  227. package/src/components/TestPanel/TestContainer.tsx +5 -5
  228. package/src/components/TestPanel/TestPanel.tsx +25 -23
  229. package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +12 -7
  230. package/src/components/TypescriptEditor/TypescriptEditor.tsx +69 -68
  231. package/src/e2e/ai.test.ts +92 -0
  232. package/src/hooks/deploy.ts +33 -26
  233. package/src/hooks/format.ts +5 -1
  234. package/src/hooks/template.ts +15 -9
  235. package/src/hooks/useCompiler.ts +5 -4
  236. package/src/hooks/useCreateAndDeployScriptTemplates.ts +13 -19
  237. package/src/hooks/useToolbarState.ts +29 -4
  238. package/src/index.ts +1 -1
  239. package/src/meta.ts +2 -2
  240. package/src/notebook/compute-graph.test.ts +20 -8
  241. package/src/notebook/compute-graph.ts +45 -21
  242. package/src/templates/anthropic.ts +42 -0
  243. package/src/templates/chess-bot.ts +58 -0
  244. package/src/templates/commentary.ts +230 -0
  245. package/src/templates/forex-effect.ts +1 -1
  246. package/src/templates/index.ts +18 -5
  247. package/src/templates/ping.ts +14 -5
  248. package/src/types/Notebook.ts +7 -8
  249. package/src/types/actions.ts +17 -25
  250. package/src/types/capabilities.ts +17 -0
  251. package/src/types/events.ts +11 -0
  252. package/src/types/index.ts +2 -0
  253. package/src/types/types.ts +1 -1
  254. package/src/util/deploy.ts +6 -2
  255. package/src/util/functions.ts +24 -22
  256. package/dist/lib/browser/DeploymentDialog-FIHD4UVK.mjs +0 -15
  257. package/dist/lib/browser/NotebookContainer-GL2Z5I5Q.mjs.map +0 -7
  258. package/dist/lib/browser/ScriptContainer-F4OK3OG6.mjs +0 -149
  259. package/dist/lib/browser/ScriptContainer-F4OK3OG6.mjs.map +0 -7
  260. package/dist/lib/browser/app-graph-builder-2WR2ATTJ.mjs +0 -66
  261. package/dist/lib/browser/app-graph-builder-2WR2ATTJ.mjs.map +0 -7
  262. package/dist/lib/browser/blueprint-definition-6PZWZM2Y.mjs +0 -30
  263. package/dist/lib/browser/blueprint-definition-6PZWZM2Y.mjs.map +0 -7
  264. package/dist/lib/browser/chunk-2SXDKBM7.mjs +0 -304
  265. package/dist/lib/browser/chunk-2SXDKBM7.mjs.map +0 -7
  266. package/dist/lib/browser/chunk-6X7QVTRB.mjs +0 -112
  267. package/dist/lib/browser/chunk-6X7QVTRB.mjs.map +0 -7
  268. package/dist/lib/browser/chunk-75RTLLH4.mjs +0 -155
  269. package/dist/lib/browser/chunk-75RTLLH4.mjs.map +0 -7
  270. package/dist/lib/browser/chunk-7WFISUBY.mjs +0 -647
  271. package/dist/lib/browser/chunk-7WFISUBY.mjs.map +0 -7
  272. package/dist/lib/browser/chunk-EB6AXFXO.mjs.map +0 -7
  273. package/dist/lib/browser/chunk-MQHBMJLH.mjs +0 -103
  274. package/dist/lib/browser/chunk-MQHBMJLH.mjs.map +0 -7
  275. package/dist/lib/browser/chunk-S22N3BUR.mjs.map +0 -7
  276. package/dist/lib/browser/chunk-UGDRMROB.mjs.map +0 -7
  277. package/dist/lib/browser/chunk-UOQ6NCH3.mjs +0 -15
  278. package/dist/lib/browser/chunk-UOQ6NCH3.mjs.map +0 -7
  279. package/dist/lib/browser/compiler-2HV5KXV4.mjs.map +0 -7
  280. package/dist/lib/browser/intent-resolver-3B4ESSCU.mjs +0 -105
  281. package/dist/lib/browser/intent-resolver-3B4ESSCU.mjs.map +0 -7
  282. package/dist/lib/browser/react-surface-ASV2KBRA.mjs.map +0 -7
  283. package/dist/lib/browser/settings-4NKLTJTT.mjs +0 -26
  284. package/dist/lib/browser/settings-4NKLTJTT.mjs.map +0 -7
  285. package/dist/lib/node-esm/NotebookContainer-7RCEXND7.mjs.map +0 -7
  286. package/dist/lib/node-esm/ScriptContainer-763IAKOD.mjs +0 -150
  287. package/dist/lib/node-esm/ScriptContainer-763IAKOD.mjs.map +0 -7
  288. package/dist/lib/node-esm/app-graph-builder-NCVLUL5R.mjs +0 -67
  289. package/dist/lib/node-esm/app-graph-builder-NCVLUL5R.mjs.map +0 -7
  290. package/dist/lib/node-esm/blueprint-definition-5R6YCSZZ.mjs +0 -31
  291. package/dist/lib/node-esm/blueprint-definition-5R6YCSZZ.mjs.map +0 -7
  292. package/dist/lib/node-esm/chunk-2S43VHAM.mjs.map +0 -7
  293. package/dist/lib/node-esm/chunk-32AMTGGN.mjs +0 -104
  294. package/dist/lib/node-esm/chunk-32AMTGGN.mjs.map +0 -7
  295. package/dist/lib/node-esm/chunk-4VVV5L5A.mjs.map +0 -7
  296. package/dist/lib/node-esm/chunk-535YDI5V.mjs +0 -156
  297. package/dist/lib/node-esm/chunk-535YDI5V.mjs.map +0 -7
  298. package/dist/lib/node-esm/chunk-55JZVM6K.mjs +0 -16
  299. package/dist/lib/node-esm/chunk-55JZVM6K.mjs.map +0 -7
  300. package/dist/lib/node-esm/chunk-6H4FYMCX.mjs +0 -114
  301. package/dist/lib/node-esm/chunk-6H4FYMCX.mjs.map +0 -7
  302. package/dist/lib/node-esm/chunk-DKS2EQW6.mjs +0 -648
  303. package/dist/lib/node-esm/chunk-DKS2EQW6.mjs.map +0 -7
  304. package/dist/lib/node-esm/chunk-IBV2DR36.mjs.map +0 -7
  305. package/dist/lib/node-esm/chunk-NQN3JE2R.mjs +0 -305
  306. package/dist/lib/node-esm/chunk-NQN3JE2R.mjs.map +0 -7
  307. package/dist/lib/node-esm/compiler-KPEZKEHC.mjs.map +0 -7
  308. package/dist/lib/node-esm/intent-resolver-GIACMXI4.mjs +0 -106
  309. package/dist/lib/node-esm/intent-resolver-GIACMXI4.mjs.map +0 -7
  310. package/dist/lib/node-esm/react-surface-NXBO7VYB.mjs.map +0 -7
  311. package/dist/lib/node-esm/settings-PW5NXWLW.mjs +0 -27
  312. package/dist/lib/node-esm/settings-PW5NXWLW.mjs.map +0 -7
  313. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  314. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  315. package/dist/types/src/capabilities/artifact-definition.d.ts +0 -11
  316. package/dist/types/src/capabilities/artifact-definition.d.ts.map +0 -1
  317. package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -5
  318. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
  319. package/dist/types/src/capabilities/capabilities.d.ts +0 -5
  320. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  321. package/dist/types/src/capabilities/compiler.d.ts +0 -4
  322. package/dist/types/src/capabilities/compiler.d.ts.map +0 -1
  323. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  324. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  325. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  326. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  327. package/dist/types/src/capabilities/settings.d.ts +0 -4
  328. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  329. package/dist/types/src/events.d.ts +0 -4
  330. package/dist/types/src/events.d.ts.map +0 -1
  331. package/dist/types/src/templates/chess.d.ts +0 -8
  332. package/dist/types/src/templates/chess.d.ts.map +0 -1
  333. package/dist/types/src/testing/deploy.test.d.ts +0 -2
  334. package/dist/types/src/testing/deploy.test.d.ts.map +0 -1
  335. package/src/capabilities/app-graph-builder.ts +0 -65
  336. package/src/capabilities/blueprint-definition.ts +0 -30
  337. package/src/capabilities/capabilities.ts +0 -12
  338. package/src/capabilities/compiler.ts +0 -84
  339. package/src/capabilities/intent-resolver.ts +0 -86
  340. package/src/capabilities/react-surface.tsx +0 -102
  341. package/src/capabilities/settings.ts +0 -21
  342. package/src/events.ts +0 -11
  343. package/src/templates/chess.ts +0 -50
  344. package/src/testing/deploy.test.ts +0 -63
  345. /package/dist/lib/browser/{DeploymentDialog-FIHD4UVK.mjs.map → DeploymentDialog-XUAFCNI7.mjs.map} +0 -0
  346. /package/dist/lib/{node-esm/DeploymentDialog-5EN2KZE5.mjs.map → browser/blueprints/index.mjs.map} +0 -0
@@ -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
- withTheme,
24
- withLayout({ container: 'column', classNames: 'is-prose' }),
25
- // TODO(burdon): Factor out Surface to avoid dependency on app-framework.
30
+ withTheme(),
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
  );
@@ -9,10 +9,10 @@ import { createDocAccessor } from '@dxos/echo-db';
9
9
  import { QuerySandbox } from '@dxos/echo-query';
10
10
  import { createObject } from '@dxos/react-client/echo';
11
11
  import { Toolbar, useAsyncEffect } from '@dxos/react-ui';
12
+ import { Layout } from '@dxos/react-ui';
12
13
  import { withLayout, withTheme } from '@dxos/react-ui/testing';
13
- import { createDataExtensions } from '@dxos/react-ui-editor';
14
- import { StackItem } from '@dxos/react-ui-stack';
15
14
  import { Json } from '@dxos/react-ui-syntax-highlighter';
15
+ import { createDataExtensions } from '@dxos/ui-editor';
16
16
  import { trim } from '@dxos/util';
17
17
 
18
18
  import { QueryEditor, type QueryEditorProps } from './QueryEditor';
@@ -37,7 +37,12 @@ const DefaultStory = (props: QueryEditorProps) => {
37
37
  }, []);
38
38
 
39
39
  const extensions = useMemo(
40
- () => [createDataExtensions({ id: object.id, text: createDocAccessor(object, ['content']) })],
40
+ () => [
41
+ createDataExtensions({
42
+ id: object.id,
43
+ text: createDocAccessor(object, ['content']),
44
+ }),
45
+ ],
41
46
  [],
42
47
  );
43
48
 
@@ -58,16 +63,16 @@ const DefaultStory = (props: QueryEditorProps) => {
58
63
  }, [object, sandbox]);
59
64
 
60
65
  return (
61
- <StackItem.Content toolbar>
66
+ <Layout.Main toolbar>
62
67
  {/* <ScriptToolbar script={script} state={{}} /> */}
63
68
  <Toolbar.Root>
64
69
  <Toolbar.Button onClick={handleRun}>Run</Toolbar.Button>
65
70
  </Toolbar.Root>
66
71
  <div role='none' className='grid grid-rows-[1fr_min-content] bs-full overflow-hidden text-sm'>
67
72
  <QueryEditor {...props} initialValue={object.content} extensions={extensions} />
68
- <Json data={result} classNames='shrink-0 p-2 border-t border-subduedSeparator' />
73
+ <Json data={result} classNames='shrink-0 p-2 border-bs border-subduedSeparator' />
69
74
  </div>
70
- </StackItem.Content>
75
+ </Layout.Main>
71
76
  );
72
77
  };
73
78
 
@@ -75,7 +80,13 @@ const meta = {
75
80
  title: 'plugins/plugin-script/QueryEditor',
76
81
  component: QueryEditor,
77
82
  render: DefaultStory,
78
- decorators: [withTheme, withLayout({ container: 'column', classNames: 'is-prose' })],
83
+ decorators: [
84
+ withTheme(),
85
+ withLayout({
86
+ layout: 'column',
87
+ classNames: 'is-proseMaxWidth',
88
+ }),
89
+ ],
79
90
  } satisfies Meta<typeof DefaultStory>;
80
91
 
81
92
  export default meta;
@@ -4,12 +4,14 @@
4
4
 
5
5
  import React, { useMemo } from 'react';
6
6
 
7
+ import { type SurfaceComponentProps } from '@dxos/app-toolkit/ui';
8
+ import { Obj } from '@dxos/echo';
7
9
  import { createDocAccessor } from '@dxos/echo-db';
8
10
  import { type Script } from '@dxos/functions';
9
11
  import { getSpace } from '@dxos/react-client/echo';
10
12
  import { useIdentity } from '@dxos/react-client/halo';
11
- import { createDataExtensions, listener, stackItemContentEditorClassNames } from '@dxos/react-ui-editor';
12
- import { StackItem } from '@dxos/react-ui-stack';
13
+ import { Layout } from '@dxos/react-ui';
14
+ import { createDataExtensions, listener, stackItemContentEditorClassNames } from '@dxos/ui-editor';
13
15
 
14
16
  import { useDeployState, useToolbarState } from '../hooks';
15
17
  import { type ScriptSettings } from '../types';
@@ -17,42 +19,54 @@ import { type ScriptSettings } from '../types';
17
19
  import { ScriptToolbar } from './ScriptToolbar';
18
20
  import { TypescriptEditor, type TypescriptEditorProps } from './TypescriptEditor';
19
21
 
20
- export type ScriptEditorProps = {
21
- role: string;
22
- script: Script.Script;
23
- settings?: ScriptSettings;
24
- } & Pick<TypescriptEditorProps, 'env'>;
22
+ export type ScriptEditorProps = SurfaceComponentProps<
23
+ Script.Script,
24
+ {
25
+ settings?: ScriptSettings;
26
+ } & Pick<TypescriptEditorProps, 'env'>
27
+ >;
25
28
 
26
- export const ScriptContainer = ({ role, script, settings = { editorInputMode: 'vscode' }, env }: ScriptEditorProps) => {
29
+ export const ScriptContainer = ({
30
+ role,
31
+ subject: script,
32
+ settings = { editorInputMode: 'vscode' },
33
+ env,
34
+ }: ScriptEditorProps) => {
27
35
  const identity = useIdentity();
28
36
  const space = getSpace(script);
29
37
  const state = useToolbarState();
30
- useDeployState({ state, script });
38
+ useDeployState({ script, state });
31
39
 
32
- const extensions = useMemo(
33
- () =>
34
- script.source.target
35
- ? [
36
- listener({
37
- onChange: ({ text }) => {
38
- if (script.source.target?.content !== text) {
39
- script.changed = true;
40
- }
41
- },
42
- }),
43
- createDataExtensions({
44
- id: script.id,
45
- text: createDocAccessor(script.source.target, ['content']),
46
- messenger: space,
47
- identity,
48
- }),
49
- ]
50
- : [],
51
- [identity, space, script, script.source.target],
52
- );
40
+ const extensions = useMemo(() => {
41
+ if (!script.source.target) {
42
+ return [];
43
+ }
44
+
45
+ return [
46
+ createDataExtensions({
47
+ id: script.id,
48
+ text: createDocAccessor(script.source.target, ['content']),
49
+ messenger: space,
50
+ identity,
51
+ }),
52
+ listener({
53
+ onChange: ({ text }) => {
54
+ if (script.source.target?.content !== text) {
55
+ Obj.change(script, (s) => {
56
+ s.changed = true;
57
+ });
58
+ }
59
+ },
60
+ }),
61
+ ];
62
+ }, [identity, space, script, script.source.target]);
63
+
64
+ if (!extensions.length) {
65
+ return null;
66
+ }
53
67
 
54
68
  return (
55
- <StackItem.Content toolbar>
69
+ <Layout.Main role={role} toolbar>
56
70
  <ScriptToolbar state={state} role={role} script={script} />
57
71
  <TypescriptEditor
58
72
  id={script.id}
@@ -63,7 +77,7 @@ export const ScriptContainer = ({ role, script, settings = { editorInputMode: 'v
63
77
  inputMode={settings.editorInputMode}
64
78
  toolbar
65
79
  />
66
- </StackItem.Content>
80
+ </Layout.Main>
67
81
  );
68
82
  };
69
83
 
@@ -2,46 +2,69 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
+ import { Atom, Registry } from '@effect-atom/atom-react';
5
6
  import { type Meta, type StoryObj } from '@storybook/react-vite';
7
+ import React, { useMemo } from 'react';
6
8
 
7
- import { IntentPlugin } from '@dxos/app-framework';
9
+ import { OperationPlugin } from '@dxos/app-framework';
8
10
  import { withPluginManager } from '@dxos/app-framework/testing';
9
11
  import { Script } from '@dxos/functions';
10
12
  import { ClientPlugin } from '@dxos/plugin-client';
11
13
  import { withLayout, withTheme } from '@dxos/react-ui/testing';
12
14
 
15
+ import { type ScriptToolbarState, type ScriptToolbarStateStore } from '../../hooks';
13
16
  import { translations } from '../../translations';
14
17
 
15
18
  import { ScriptToolbar } from './ScriptToolbar';
16
19
 
20
+ // Create a mock store for stories.
21
+ const createMockStore = (initialState: ScriptToolbarState = {}): ScriptToolbarStateStore => {
22
+ const registry = Registry.make();
23
+ const atom = Atom.make<ScriptToolbarState>(initialState);
24
+ return {
25
+ atom,
26
+ get value() {
27
+ return registry.get(atom);
28
+ },
29
+ update: (updater) => registry.set(atom, updater(registry.get(atom))),
30
+ set: (key, value) => registry.set(atom, { ...registry.get(atom), [key]: value }),
31
+ };
32
+ };
33
+
34
+ // TODO(wittjosiah): ECHO objects don't work when passed via Storybook args.
35
+ const ScriptToolbarStory = () => {
36
+ const state = useMemo(() => createMockStore(), []);
37
+ const script = useMemo(
38
+ () =>
39
+ Script.make({
40
+ name: 'test',
41
+ description: 'test',
42
+ source: 'test',
43
+ }),
44
+ [],
45
+ );
46
+ return <ScriptToolbar state={state} script={script} />;
47
+ };
48
+
17
49
  const meta = {
18
50
  title: 'plugins/plugin-script/Toolbar',
19
- component: ScriptToolbar,
51
+ component: ScriptToolbarStory,
20
52
  // TODO(wittjosiah): Try to write story which does not depend on plugin manager.
21
53
  decorators: [
22
- withTheme,
23
- withLayout({ classNames: 'is-prose' }),
54
+ withTheme(),
55
+ withLayout({ classNames: 'is-proseMaxWidth' }),
24
56
  withPluginManager({
25
- plugins: [IntentPlugin(), ClientPlugin({})],
57
+ plugins: [OperationPlugin(), ClientPlugin({})],
26
58
  }),
27
59
  ],
28
60
  parameters: {
29
61
  layout: 'centered',
30
62
  translations,
31
63
  },
32
- } satisfies Meta<typeof ScriptToolbar>;
64
+ } satisfies Meta<typeof ScriptToolbarStory>;
33
65
 
34
66
  export default meta;
35
67
 
36
68
  type Story = StoryObj<typeof meta>;
37
69
 
38
- export const Default: Story = {
39
- args: {
40
- state: {},
41
- script: Script.make({
42
- name: 'test',
43
- description: 'test',
44
- source: 'test',
45
- }),
46
- },
47
- };
70
+ export const Default: Story = {};
@@ -12,14 +12,13 @@ import {
12
12
  type ActionGraphProps,
13
13
  MenuProvider,
14
14
  ToolbarMenu,
15
- atomFromSignal,
16
15
  createGapSeparator,
17
16
  useMenuActions,
18
17
  } from '@dxos/react-ui-menu';
19
18
 
20
19
  import {
21
20
  type CreateDeployOptions,
22
- type ScriptToolbarState,
21
+ type ScriptToolbarStateStore,
23
22
  createDeploy,
24
23
  createFormat,
25
24
  createTemplateSelect,
@@ -30,7 +29,7 @@ import { meta } from '../../meta';
30
29
  export type ScriptToolbarProps = {
31
30
  role?: string;
32
31
  script: Script.Script;
33
- state: ScriptToolbarState;
32
+ state: ScriptToolbarStateStore;
34
33
  };
35
34
 
36
35
  export const ScriptToolbar = ({ script, role, state }: ScriptToolbarProps) => {
@@ -49,17 +48,15 @@ export const ScriptToolbar = ({ script, role, state }: ScriptToolbarProps) => {
49
48
  };
50
49
 
51
50
  const createToolbarActions = ({ state, script, ...options }: CreateDeployOptions): Atom.Atom<ActionGraphProps> =>
52
- Atom.make((get) =>
53
- get(
54
- atomFromSignal(() => {
55
- const templateSelect = createTemplateSelect(script);
56
- const format = createFormat(script);
57
- const gap = createGapSeparator();
58
- const deploy = createDeploy({ state, script, ...options });
59
- return {
60
- nodes: [...templateSelect.nodes, ...format.nodes, ...gap.nodes, ...deploy.nodes],
61
- edges: [...templateSelect.edges, ...format.edges, ...gap.edges, ...deploy.edges],
62
- };
63
- }),
64
- ),
65
- );
51
+ Atom.make((get) => {
52
+ // Subscribe to state changes.
53
+ get(state.atom);
54
+ const templateSelect = createTemplateSelect(script);
55
+ const format = createFormat(script);
56
+ const gap = createGapSeparator();
57
+ const deploy = createDeploy({ state, script, ...options });
58
+ return {
59
+ nodes: [...templateSelect.nodes, ...format.nodes, ...gap.nodes, ...deploy.nodes],
60
+ edges: [...templateSelect.edges, ...format.edges, ...gap.edges, ...deploy.edges],
61
+ };
62
+ });
@@ -6,15 +6,15 @@ import { Octokit } from '@octokit/core';
6
6
  import React, { type ChangeEvent, useCallback, useState } from 'react';
7
7
 
8
8
  import { ToolId } from '@dxos/ai';
9
- import { SettingsAction, createIntent } from '@dxos/app-framework';
10
- import { useIntentDispatcher } from '@dxos/app-framework/react';
9
+ import { useOperationInvoker } from '@dxos/app-framework/ui';
10
+ import { SettingsOperation } from '@dxos/app-toolkit';
11
11
  import { Blueprint, Template } from '@dxos/blueprints';
12
12
  import { Filter, Obj, Ref } from '@dxos/echo';
13
13
  import { Function, type Script, getUserFunctionIdInMetadata } from '@dxos/functions';
14
14
  import { getInvocationUrl } from '@dxos/functions-runtime';
15
15
  import { log } from '@dxos/log';
16
16
  import { useClient } from '@dxos/react-client';
17
- import { getSpace, useQuery } from '@dxos/react-client/echo';
17
+ import { useQuery } from '@dxos/react-client/echo';
18
18
  import { Button, Clipboard, Input, useAsyncEffect, useControlledState, useTranslation } from '@dxos/react-ui';
19
19
  import { AccessToken } from '@dxos/types';
20
20
  import { kebabize } from '@dxos/util';
@@ -44,7 +44,9 @@ export const ScriptProperties = ({ object }: ScriptObjectSettingsProps) => {
44
44
  placeholder={t('description placeholder')}
45
45
  value={object.description ?? ''}
46
46
  onChange={(event) => {
47
- object.description = event.target.value;
47
+ Obj.change(object, (o) => {
48
+ o.description = event.target.value;
49
+ });
48
50
  }}
49
51
  />
50
52
  </Input.Root>
@@ -53,9 +55,9 @@ export const ScriptProperties = ({ object }: ScriptObjectSettingsProps) => {
53
55
 
54
56
  const BlueprintEditor = ({ object }: ScriptObjectSettingsProps) => {
55
57
  const { t } = useTranslation(meta.id);
56
- const space = getSpace(object);
57
- const [fn] = useQuery(space, Filter.type(Function.Function, { source: Ref.make(object) }));
58
- const blueprints = useQuery(space, Filter.type(Blueprint.Blueprint));
58
+ const db = Obj.getDatabase(object);
59
+ const [fn] = useQuery(db, Filter.type(Function.Function, { source: Ref.make(object) }));
60
+ const blueprints = useQuery(db, Filter.type(Blueprint.Blueprint));
59
61
 
60
62
  const [creating, setCreating] = useState(false);
61
63
  const [instructions, setInstructions] = useState<string>(`You can run the script "${object.name ?? 'script'}".`);
@@ -71,7 +73,7 @@ const BlueprintEditor = ({ object }: ScriptObjectSettingsProps) => {
71
73
  }, [existingBlueprint]);
72
74
 
73
75
  const handleSave = useCallback(async () => {
74
- if (!space) {
76
+ if (!db) {
75
77
  return;
76
78
  }
77
79
 
@@ -79,15 +81,19 @@ const BlueprintEditor = ({ object }: ScriptObjectSettingsProps) => {
79
81
  try {
80
82
  if (existingBlueprint) {
81
83
  const text = await existingBlueprint.instructions.source.load();
82
- text.content = instructions;
84
+ Obj.change(text, (t) => {
85
+ t.content = instructions;
86
+ });
83
87
  if (fn?.key) {
84
88
  const toolId = ToolId.make(fn.key);
85
89
  if (!existingBlueprint.tools?.includes(toolId)) {
86
- existingBlueprint.tools = [...(existingBlueprint.tools ?? []), toolId];
90
+ Obj.change(existingBlueprint, (b) => {
91
+ b.tools = [...(b.tools ?? []), toolId];
92
+ });
87
93
  }
88
94
  }
89
95
  } else if (fn?.key) {
90
- space.db.add(
96
+ db.add(
91
97
  Blueprint.make({
92
98
  key: blueprintKey,
93
99
  name: object.name ?? 'Script',
@@ -98,11 +104,11 @@ const BlueprintEditor = ({ object }: ScriptObjectSettingsProps) => {
98
104
  }),
99
105
  );
100
106
  }
101
- await space.db.flush();
107
+ await db.flush();
102
108
  } finally {
103
109
  setCreating(false);
104
110
  }
105
- }, [space, existingBlueprint, fn, blueprintKey, object.name, instructions]);
111
+ }, [db, existingBlueprint, fn, blueprintKey, object.name, instructions]);
106
112
 
107
113
  return (
108
114
  <div className='flex flex-col gap-4 mlb-cardSpacingBlock'>
@@ -142,14 +148,14 @@ const BlueprintEditor = ({ object }: ScriptObjectSettingsProps) => {
142
148
  const Binding = ({ object }: ScriptObjectSettingsProps) => {
143
149
  const { t } = useTranslation(meta.id);
144
150
  const client = useClient();
145
- const space = getSpace(object);
146
- const [fn] = useQuery(space, Filter.type(Function.Function, { source: Ref.make(object) }));
151
+ const db = Obj.getDatabase(object);
152
+ const [fn] = useQuery(db, Filter.type(Function.Function, { source: Ref.make(object) }));
147
153
 
148
154
  const functionId = fn && getUserFunctionIdInMetadata(Obj.getMeta(fn));
149
155
  const functionUrl =
150
156
  functionId &&
151
157
  getInvocationUrl(functionId, client.config.values.runtime?.services?.edge?.url ?? '', {
152
- spaceId: space?.id,
158
+ spaceId: db?.spaceId,
153
159
  });
154
160
 
155
161
  const [binding, setBinding] = useControlledState(fn?.binding ?? '');
@@ -161,7 +167,9 @@ const Binding = ({ object }: ScriptObjectSettingsProps) => {
161
167
  );
162
168
 
163
169
  const handleBindingBlur = useCallback(() => {
164
- fn.binding = binding;
170
+ Obj.change(fn, (f) => {
171
+ f.binding = binding;
172
+ });
165
173
  }, [fn, binding]);
166
174
 
167
175
  if (!fn || !functionUrl) {
@@ -180,7 +188,9 @@ const Binding = ({ object }: ScriptObjectSettingsProps) => {
180
188
  disabled
181
189
  value={functionUrl}
182
190
  onChange={(event) => {
183
- fn.name = event.target.value;
191
+ Obj.change(fn, (f) => {
192
+ f.name = event.target.value;
193
+ });
184
194
  }}
185
195
  />
186
196
  <Clipboard.IconButton value={functionUrl} />
@@ -205,9 +215,9 @@ const Binding = ({ object }: ScriptObjectSettingsProps) => {
205
215
  // TODO(burdon): Move to separate tab?
206
216
  const Publishing = ({ object }: ScriptObjectSettingsProps) => {
207
217
  const { t } = useTranslation(meta.id);
208
- const { dispatchPromise: dispatch } = useIntentDispatcher();
209
- const space = getSpace(object);
210
- const [githubToken] = useQuery(space, Filter.type(AccessToken.AccessToken, { source: 'github.com' }));
218
+ const { invokePromise } = useOperationInvoker();
219
+ const db = Obj.getDatabase(object);
220
+ const [githubToken] = useQuery(db, Filter.type(AccessToken.AccessToken, { source: 'github.com' }));
211
221
  const gistKey = Obj.getMeta(object).keys.find(({ source }) => source === 'github.com');
212
222
  const [gistUrl, setGistUrl] = useState<string | undefined>();
213
223
 
@@ -233,12 +243,10 @@ const Publishing = ({ object }: ScriptObjectSettingsProps) => {
233
243
 
234
244
  const handleOpenTokenManager = useCallback(
235
245
  () =>
236
- dispatch(
237
- createIntent(SettingsAction.Open, {
238
- plugin: 'dxos.org/plugin/token-manager',
239
- }),
240
- ),
241
- [],
246
+ invokePromise(SettingsOperation.Open, {
247
+ plugin: 'dxos.org/plugin/token-manager',
248
+ }),
249
+ [invokePromise],
242
250
  );
243
251
 
244
252
  const [publishing, setPublishing] = useState(false);
@@ -264,8 +272,11 @@ const Publishing = ({ object }: ScriptObjectSettingsProps) => {
264
272
  public: true,
265
273
  files,
266
274
  });
267
- if (response.data.id) {
268
- meta.keys.push({ source: 'github.com', id: response.data.id });
275
+ const gistId = response.data.id;
276
+ if (gistId) {
277
+ Obj.change(object, (obj) => {
278
+ Obj.getMeta(obj).keys.push({ source: 'github.com', id: gistId });
279
+ });
269
280
  }
270
281
  }
271
282
  } finally {
@@ -6,14 +6,19 @@ import React from 'react';
6
6
 
7
7
  import { useClient } from '@dxos/react-client';
8
8
  import { Button, Select, useTranslation } from '@dxos/react-ui';
9
- import { type EditorInputMode, EditorInputModes } from '@dxos/react-ui-editor';
10
- import { ControlGroup, ControlItemInput, ControlPage, ControlSection } from '@dxos/react-ui-form';
9
+ import { Settings } from '@dxos/react-ui-form';
10
+ import { type EditorInputMode, EditorInputModes } from '@dxos/ui-editor';
11
11
 
12
12
  import { meta } from '../../meta';
13
13
  import { type ScriptSettings } from '../../types';
14
14
  import { getAccessCredential } from '../../util';
15
15
 
16
- export const ScriptPluginSettings = ({ settings }: { settings: ScriptSettings }) => {
16
+ export type ScriptPluginSettingsComponentProps = {
17
+ settings: ScriptSettings;
18
+ onSettingsChange: (fn: (current: ScriptSettings) => ScriptSettings) => void;
19
+ };
20
+
21
+ export const ScriptPluginSettings = ({ settings, onSettingsChange }: ScriptPluginSettingsComponentProps) => {
17
22
  const { t } = useTranslation(meta.id);
18
23
  const client = useClient();
19
24
 
@@ -24,19 +29,19 @@ export const ScriptPluginSettings = ({ settings }: { settings: ScriptSettings })
24
29
  };
25
30
 
26
31
  return (
27
- <ControlPage>
28
- <ControlSection title={t('settings title', { ns: meta.id })}>
29
- <ControlGroup>
32
+ <Settings.Root>
33
+ <Settings.Section title={t('settings title', { ns: meta.id })}>
34
+ <Settings.Group>
30
35
  {/* TODO(wittjosiah): Hide outside of dev environments. */}
31
- <ControlItemInput title={t('authenticate action label')}>
36
+ <Settings.ItemInput title={t('authenticate action label')}>
32
37
  <Button onClick={handleAuthenticate}>{t('authenticate button label')}</Button>
33
- </ControlItemInput>
38
+ </Settings.ItemInput>
34
39
 
35
- <ControlItemInput title={t('editor input mode label')}>
40
+ <Settings.ItemInput title={t('editor input mode label')}>
36
41
  <Select.Root
37
42
  value={settings.editorInputMode ?? 'default'}
38
43
  onValueChange={(value) => {
39
- settings.editorInputMode = value as EditorInputMode;
44
+ onSettingsChange((s) => ({ ...s, editorInputMode: value as EditorInputMode }));
40
45
  }}
41
46
  >
42
47
  <Select.TriggerButton placeholder={t('select editor input mode placeholder')} />
@@ -53,9 +58,9 @@ export const ScriptPluginSettings = ({ settings }: { settings: ScriptSettings })
53
58
  </Select.Content>
54
59
  </Select.Portal>
55
60
  </Select.Root>
56
- </ControlItemInput>
57
- </ControlGroup>
58
- </ControlSection>
59
- </ControlPage>
61
+ </Settings.ItemInput>
62
+ </Settings.Group>
63
+ </Settings.Section>
64
+ </Settings.Root>
60
65
  );
61
66
  };