@dxos/plugin-script 0.8.4-main.c4373fc → 0.8.4-main.c85a9c8dae

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 (512) hide show
  1. package/README.md +15 -13
  2. package/dist/lib/browser/DeploymentDialog-IIOXAS47.mjs +138 -0
  3. package/dist/lib/browser/DeploymentDialog-IIOXAS47.mjs.map +7 -0
  4. package/dist/lib/browser/NotebookContainer-VVZOKGRC.mjs +850 -0
  5. package/dist/lib/browser/NotebookContainer-VVZOKGRC.mjs.map +7 -0
  6. package/dist/lib/browser/ScriptContainer-A5SSIUH6.mjs +93 -0
  7. package/dist/lib/browser/ScriptContainer-A5SSIUH6.mjs.map +7 -0
  8. package/dist/lib/browser/ScriptObjectSettings-HYYC7KXC.mjs +294 -0
  9. package/dist/lib/browser/ScriptObjectSettings-HYYC7KXC.mjs.map +7 -0
  10. package/dist/lib/browser/ScriptPluginSettings-UTWA7CBT.mjs +55 -0
  11. package/dist/lib/browser/ScriptPluginSettings-UTWA7CBT.mjs.map +7 -0
  12. package/dist/lib/browser/ScriptProperties-HREPUE65.mjs +28 -0
  13. package/dist/lib/browser/ScriptProperties-HREPUE65.mjs.map +7 -0
  14. package/dist/lib/browser/TestContainer-D4Y2K2TT.mjs +39 -0
  15. package/dist/lib/browser/TestContainer-D4Y2K2TT.mjs.map +7 -0
  16. package/dist/lib/browser/app-graph-builder-66ZDI72K.mjs +69 -0
  17. package/dist/lib/browser/app-graph-builder-66ZDI72K.mjs.map +7 -0
  18. package/dist/lib/browser/blueprint-definition-YMZEJBAZ.mjs +17 -0
  19. package/dist/lib/browser/blueprint-definition-YMZEJBAZ.mjs.map +7 -0
  20. package/dist/lib/browser/blueprints/index.mjs +8 -0
  21. package/dist/lib/browser/chunk-6IXFDTAI.mjs +113 -0
  22. package/dist/lib/browser/chunk-6IXFDTAI.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-ATTZUDT7.mjs +67 -0
  24. package/dist/lib/browser/chunk-ATTZUDT7.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-G3XIOLLI.mjs +174 -0
  26. package/dist/lib/browser/chunk-G3XIOLLI.mjs.map +7 -0
  27. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  28. package/dist/lib/browser/chunk-J7PGML5B.mjs +105 -0
  29. package/dist/lib/browser/chunk-J7PGML5B.mjs.map +7 -0
  30. package/dist/lib/browser/chunk-MUEVLYXJ.mjs +397 -0
  31. package/dist/lib/browser/chunk-MUEVLYXJ.mjs.map +7 -0
  32. package/dist/lib/browser/chunk-PLDBKKYO.mjs +789 -0
  33. package/dist/lib/browser/chunk-PLDBKKYO.mjs.map +7 -0
  34. package/dist/lib/browser/chunk-Q66L5EUR.mjs +20 -0
  35. package/dist/lib/browser/chunk-Q66L5EUR.mjs.map +7 -0
  36. package/dist/lib/browser/chunk-TW27W3EL.mjs +29 -0
  37. package/dist/lib/browser/chunk-TW27W3EL.mjs.map +7 -0
  38. package/dist/lib/browser/{chunk-EZVXV6DA.mjs → chunk-WYR4QHPE.mjs} +7 -2
  39. package/dist/lib/browser/chunk-WYR4QHPE.mjs.map +7 -0
  40. package/dist/lib/browser/chunk-ZYU2LP6U.mjs +11 -0
  41. package/dist/lib/browser/chunk-ZYU2LP6U.mjs.map +7 -0
  42. package/dist/lib/browser/compiler-53G6ZHQM.mjs +99 -0
  43. package/dist/lib/browser/compiler-53G6ZHQM.mjs.map +7 -0
  44. package/dist/lib/browser/index.mjs +120 -136
  45. package/dist/lib/browser/index.mjs.map +4 -4
  46. package/dist/lib/browser/meta.json +1 -1
  47. package/dist/lib/browser/operation-resolver-CYEISDDK.mjs +79 -0
  48. package/dist/lib/browser/operation-resolver-CYEISDDK.mjs.map +7 -0
  49. package/dist/lib/browser/react-surface-26P6HAFD.mjs +141 -0
  50. package/dist/lib/browser/react-surface-26P6HAFD.mjs.map +7 -0
  51. package/dist/lib/browser/settings-76UM7442.mjs +36 -0
  52. package/dist/lib/browser/settings-76UM7442.mjs.map +7 -0
  53. package/dist/lib/browser/templates/index.mjs +2 -1
  54. package/dist/lib/browser/types/index.mjs +12 -6
  55. package/dist/lib/node-esm/DeploymentDialog-ZHPHEV2H.mjs +139 -0
  56. package/dist/lib/node-esm/DeploymentDialog-ZHPHEV2H.mjs.map +7 -0
  57. package/dist/lib/node-esm/NotebookContainer-ZLWTNMQA.mjs +851 -0
  58. package/dist/lib/node-esm/NotebookContainer-ZLWTNMQA.mjs.map +7 -0
  59. package/dist/lib/node-esm/ScriptContainer-S4UKQAWP.mjs +94 -0
  60. package/dist/lib/node-esm/ScriptContainer-S4UKQAWP.mjs.map +7 -0
  61. package/dist/lib/node-esm/ScriptObjectSettings-C5QBRERY.mjs +295 -0
  62. package/dist/lib/node-esm/ScriptObjectSettings-C5QBRERY.mjs.map +7 -0
  63. package/dist/lib/node-esm/ScriptPluginSettings-MFACDW4R.mjs +56 -0
  64. package/dist/lib/node-esm/ScriptPluginSettings-MFACDW4R.mjs.map +7 -0
  65. package/dist/lib/node-esm/ScriptProperties-FMNIX3KU.mjs +29 -0
  66. package/dist/lib/node-esm/ScriptProperties-FMNIX3KU.mjs.map +7 -0
  67. package/dist/lib/node-esm/TestContainer-AO45YPGV.mjs +40 -0
  68. package/dist/lib/node-esm/TestContainer-AO45YPGV.mjs.map +7 -0
  69. package/dist/lib/node-esm/app-graph-builder-IGAZTJ45.mjs +70 -0
  70. package/dist/lib/node-esm/app-graph-builder-IGAZTJ45.mjs.map +7 -0
  71. package/dist/lib/node-esm/blueprint-definition-5MGY6BRQ.mjs +18 -0
  72. package/dist/lib/node-esm/blueprint-definition-5MGY6BRQ.mjs.map +7 -0
  73. package/dist/lib/node-esm/blueprints/index.mjs +9 -0
  74. package/dist/lib/node-esm/blueprints/index.mjs.map +7 -0
  75. package/dist/lib/node-esm/chunk-5BG7OJGQ.mjs +176 -0
  76. package/dist/lib/node-esm/chunk-5BG7OJGQ.mjs.map +7 -0
  77. package/dist/lib/node-esm/{chunk-OG2SIKHE.mjs → chunk-5HSJPAK7.mjs} +7 -2
  78. package/dist/lib/node-esm/chunk-5HSJPAK7.mjs.map +7 -0
  79. package/dist/lib/node-esm/chunk-H46R2RS5.mjs +790 -0
  80. package/dist/lib/node-esm/chunk-H46R2RS5.mjs.map +7 -0
  81. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  82. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  83. package/dist/lib/node-esm/chunk-JGN7TDJH.mjs +69 -0
  84. package/dist/lib/node-esm/chunk-JGN7TDJH.mjs.map +7 -0
  85. package/dist/lib/node-esm/{chunk-OQGBKNYU.mjs → chunk-QG6ANK4B.mjs} +34 -17
  86. package/dist/lib/node-esm/chunk-QG6ANK4B.mjs.map +7 -0
  87. package/dist/lib/node-esm/chunk-S7DSCLOW.mjs +31 -0
  88. package/dist/lib/node-esm/chunk-S7DSCLOW.mjs.map +7 -0
  89. package/dist/lib/node-esm/chunk-TZ2EBTPQ.mjs +22 -0
  90. package/dist/lib/node-esm/chunk-TZ2EBTPQ.mjs.map +7 -0
  91. package/dist/lib/node-esm/chunk-UFBVE33O.mjs +12 -0
  92. package/dist/lib/node-esm/chunk-UFBVE33O.mjs.map +7 -0
  93. package/dist/lib/node-esm/chunk-WWD5LUU6.mjs +114 -0
  94. package/dist/lib/node-esm/chunk-WWD5LUU6.mjs.map +7 -0
  95. package/dist/lib/node-esm/chunk-ZDJ2FI7E.mjs +398 -0
  96. package/dist/lib/node-esm/chunk-ZDJ2FI7E.mjs.map +7 -0
  97. package/dist/lib/node-esm/compiler-HHQW7EP3.mjs +100 -0
  98. package/dist/lib/node-esm/compiler-HHQW7EP3.mjs.map +7 -0
  99. package/dist/lib/node-esm/index.mjs +120 -136
  100. package/dist/lib/node-esm/index.mjs.map +4 -4
  101. package/dist/lib/node-esm/meta.json +1 -1
  102. package/dist/lib/node-esm/operation-resolver-HFFDXWND.mjs +80 -0
  103. package/dist/lib/node-esm/operation-resolver-HFFDXWND.mjs.map +7 -0
  104. package/dist/lib/node-esm/react-surface-THCIK266.mjs +142 -0
  105. package/dist/lib/node-esm/react-surface-THCIK266.mjs.map +7 -0
  106. package/dist/lib/node-esm/settings-CCHDPLFJ.mjs +37 -0
  107. package/dist/lib/node-esm/settings-CCHDPLFJ.mjs.map +7 -0
  108. package/dist/lib/node-esm/templates/index.mjs +2 -1
  109. package/dist/lib/node-esm/types/index.mjs +12 -6
  110. package/dist/types/src/ScriptPlugin.d.ts +2 -1
  111. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  112. package/dist/types/src/blueprints/index.d.ts +2 -0
  113. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  114. package/dist/types/src/blueprints/script-blueprint.d.ts +4 -0
  115. package/dist/types/src/blueprints/script-blueprint.d.ts.map +1 -0
  116. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  117. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  118. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  119. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  120. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts +12 -0
  121. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts.map +1 -0
  122. package/dist/types/src/capabilities/artifact-definition/index.d.ts +3 -0
  123. package/dist/types/src/capabilities/artifact-definition/index.d.ts.map +1 -0
  124. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +6 -0
  125. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -0
  126. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +3 -0
  127. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -0
  128. package/dist/types/src/capabilities/compiler/compiler.d.ts +6 -0
  129. package/dist/types/src/capabilities/compiler/compiler.d.ts.map +1 -0
  130. package/dist/types/src/capabilities/compiler/index.d.ts +3 -0
  131. package/dist/types/src/capabilities/compiler/index.d.ts.map +1 -0
  132. package/dist/types/src/capabilities/index.d.ts +6 -7
  133. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  134. package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
  135. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  136. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
  137. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  138. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  139. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  140. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  141. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  142. package/dist/types/src/capabilities/settings/index.d.ts +7 -0
  143. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
  144. package/dist/types/src/capabilities/settings/settings.d.ts +10 -0
  145. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
  146. package/dist/types/src/compiler/compiler.d.ts +1 -1
  147. package/dist/types/src/compiler/compiler.d.ts.map +1 -1
  148. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts +1 -1
  149. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +1 -1
  150. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts +15 -0
  151. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts.map +1 -0
  152. package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts +9 -0
  153. package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts.map +1 -0
  154. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts +8 -10
  155. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts.map +1 -1
  156. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts +26 -8
  157. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts.map +1 -1
  158. package/dist/types/src/components/NotebookStack/index.d.ts +1 -0
  159. package/dist/types/src/components/NotebookStack/index.d.ts.map +1 -1
  160. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts +5 -0
  161. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts.map +1 -0
  162. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts +13 -0
  163. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts.map +1 -0
  164. package/dist/types/src/components/QueryEditor/index.d.ts +2 -0
  165. package/dist/types/src/components/QueryEditor/index.d.ts.map +1 -0
  166. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts +8 -8
  167. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  168. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts +27 -8
  169. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -1
  170. package/dist/types/src/components/TestPanel/TestPanel.d.ts.map +1 -1
  171. package/dist/types/src/components/TestPanel/index.d.ts +0 -1
  172. package/dist/types/src/components/TestPanel/index.d.ts.map +1 -1
  173. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts +3 -2
  174. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  175. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts +1 -7
  176. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -1
  177. package/dist/types/src/components/index.d.ts +4 -5
  178. package/dist/types/src/components/index.d.ts.map +1 -1
  179. package/dist/types/src/constants.d.ts +2 -0
  180. package/dist/types/src/constants.d.ts.map +1 -0
  181. package/dist/types/src/{components → containers}/DeploymentDialog/DeploymentDialog.d.ts +2 -4
  182. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.d.ts.map +1 -0
  183. package/dist/types/src/{components → containers}/DeploymentDialog/DeploymentDialog.stories.d.ts +25 -6
  184. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -0
  185. package/dist/types/src/containers/DeploymentDialog/index.d.ts +3 -0
  186. package/dist/types/src/containers/DeploymentDialog/index.d.ts.map +1 -0
  187. package/dist/types/src/containers/NotebookContainer/NotebookContainer.d.ts +7 -0
  188. package/dist/types/src/containers/NotebookContainer/NotebookContainer.d.ts.map +1 -0
  189. package/dist/types/src/containers/NotebookContainer/NotebookContainer.stories.d.ts +7 -0
  190. package/dist/types/src/containers/NotebookContainer/NotebookContainer.stories.d.ts.map +1 -0
  191. package/dist/types/src/containers/NotebookContainer/index.d.ts +3 -0
  192. package/dist/types/src/containers/NotebookContainer/index.d.ts.map +1 -0
  193. package/dist/types/src/containers/ScriptContainer/ScriptContainer.d.ts +10 -0
  194. package/dist/types/src/containers/ScriptContainer/ScriptContainer.d.ts.map +1 -0
  195. package/dist/types/src/containers/ScriptContainer/index.d.ts +3 -0
  196. package/dist/types/src/containers/ScriptContainer/index.d.ts.map +1 -0
  197. package/dist/types/src/containers/ScriptObjectSettings/ScriptObjectSettings.d.ts +7 -0
  198. package/dist/types/src/containers/ScriptObjectSettings/ScriptObjectSettings.d.ts.map +1 -0
  199. package/dist/types/src/containers/ScriptObjectSettings/index.d.ts +3 -0
  200. package/dist/types/src/containers/ScriptObjectSettings/index.d.ts.map +1 -0
  201. package/dist/types/src/containers/ScriptPluginSettings/ScriptPluginSettings.d.ts +8 -0
  202. package/dist/types/src/containers/ScriptPluginSettings/ScriptPluginSettings.d.ts.map +1 -0
  203. package/dist/types/src/containers/ScriptPluginSettings/index.d.ts +3 -0
  204. package/dist/types/src/containers/ScriptPluginSettings/index.d.ts.map +1 -0
  205. package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts +7 -0
  206. package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts.map +1 -0
  207. package/dist/types/src/containers/ScriptProperties/index.d.ts +3 -0
  208. package/dist/types/src/containers/ScriptProperties/index.d.ts.map +1 -0
  209. package/dist/types/src/containers/TestContainer/TestContainer.d.ts +8 -0
  210. package/dist/types/src/containers/TestContainer/TestContainer.d.ts.map +1 -0
  211. package/dist/types/src/containers/TestContainer/index.d.ts +3 -0
  212. package/dist/types/src/containers/TestContainer/index.d.ts.map +1 -0
  213. package/dist/types/src/containers/index.d.ts +9 -0
  214. package/dist/types/src/containers/index.d.ts.map +1 -0
  215. package/dist/types/src/e2e/ai.test.d.ts +2 -0
  216. package/dist/types/src/e2e/ai.test.d.ts.map +1 -0
  217. package/dist/types/src/e2e/deploy.test.d.ts +2 -0
  218. package/dist/types/src/e2e/deploy.test.d.ts.map +1 -0
  219. package/dist/types/src/hooks/deploy.d.ts +17 -31
  220. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  221. package/dist/types/src/hooks/format.d.ts +5 -4
  222. package/dist/types/src/hooks/format.d.ts.map +1 -1
  223. package/dist/types/src/hooks/index.d.ts +1 -0
  224. package/dist/types/src/hooks/index.d.ts.map +1 -1
  225. package/dist/types/src/hooks/template.d.ts +7 -16
  226. package/dist/types/src/hooks/template.d.ts.map +1 -1
  227. package/dist/types/src/hooks/useCompiler.d.ts +7 -0
  228. package/dist/types/src/hooks/useCompiler.d.ts.map +1 -0
  229. package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts.map +1 -1
  230. package/dist/types/src/hooks/useToolbarState.d.ts +8 -1
  231. package/dist/types/src/hooks/useToolbarState.d.ts.map +1 -1
  232. package/dist/types/src/index.d.ts +2 -1
  233. package/dist/types/src/index.d.ts.map +1 -1
  234. package/dist/types/src/meta.d.ts +2 -2
  235. package/dist/types/src/meta.d.ts.map +1 -1
  236. package/dist/types/src/notebook/compute-graph.d.ts +58 -0
  237. package/dist/types/src/notebook/compute-graph.d.ts.map +1 -0
  238. package/dist/types/src/notebook/compute-graph.test.d.ts +2 -0
  239. package/dist/types/src/notebook/compute-graph.test.d.ts.map +1 -0
  240. package/dist/types/src/notebook/eval.d.ts +13 -0
  241. package/dist/types/src/notebook/eval.d.ts.map +1 -0
  242. package/dist/types/src/notebook/index.d.ts +1 -1
  243. package/dist/types/src/notebook/index.d.ts.map +1 -1
  244. package/dist/types/src/notebook/vfs-parser.d.ts.map +1 -1
  245. package/dist/types/src/templates/anthropic.d.ts +8 -0
  246. package/dist/types/src/templates/anthropic.d.ts.map +1 -0
  247. package/dist/types/src/templates/chess-bot.d.ts +16 -0
  248. package/dist/types/src/templates/chess-bot.d.ts.map +1 -0
  249. package/dist/types/src/templates/commentary.d.ts +16 -0
  250. package/dist/types/src/templates/commentary.d.ts.map +1 -0
  251. package/dist/types/src/templates/forex-effect.d.ts +4 -1
  252. package/dist/types/src/templates/forex-effect.d.ts.map +1 -1
  253. package/dist/types/src/templates/forex.d.ts +4 -1
  254. package/dist/types/src/templates/forex.d.ts.map +1 -1
  255. package/dist/types/src/templates/index.d.ts +52 -1
  256. package/dist/types/src/templates/index.d.ts.map +1 -1
  257. package/dist/types/src/templates/ping.d.ts +3 -0
  258. package/dist/types/src/templates/ping.d.ts.map +1 -0
  259. package/dist/types/src/testing/data.d.ts +2 -9
  260. package/dist/types/src/testing/data.d.ts.map +1 -1
  261. package/dist/types/src/testing/simulator.test.d.ts +2 -0
  262. package/dist/types/src/testing/simulator.test.d.ts.map +1 -0
  263. package/dist/types/src/translations.d.ts +11 -3
  264. package/dist/types/src/translations.d.ts.map +1 -1
  265. package/dist/types/src/types/Notebook.d.ts +108 -0
  266. package/dist/types/src/types/Notebook.d.ts.map +1 -0
  267. package/dist/types/src/types/actions.d.ts +30 -48
  268. package/dist/types/src/types/actions.d.ts.map +1 -1
  269. package/dist/types/src/types/capabilities.d.ts +12 -0
  270. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  271. package/dist/types/src/types/events.d.ts +5 -0
  272. package/dist/types/src/types/events.d.ts.map +1 -0
  273. package/dist/types/src/types/index.d.ts +4 -1
  274. package/dist/types/src/types/index.d.ts.map +1 -1
  275. package/dist/types/src/types/types.d.ts +6 -0
  276. package/dist/types/src/types/types.d.ts.map +1 -0
  277. package/dist/types/src/util/deploy.d.ts +4 -4
  278. package/dist/types/src/util/deploy.d.ts.map +1 -1
  279. package/dist/types/src/util/functions.d.ts +3 -3
  280. package/dist/types/src/util/functions.d.ts.map +1 -1
  281. package/dist/types/tsconfig.tsbuildinfo +1 -1
  282. package/package.json +114 -79
  283. package/src/ScriptPlugin.tsx +44 -85
  284. package/src/blueprints/index.ts +5 -0
  285. package/src/blueprints/script-blueprint.ts +31 -0
  286. package/src/capabilities/app-graph-builder/app-graph-builder.ts +56 -0
  287. package/src/capabilities/app-graph-builder/index.ts +7 -0
  288. package/src/capabilities/{artifact-definition.ts → artifact-definition/artifact-definition.ts} +97 -95
  289. package/src/capabilities/artifact-definition/index.ts +7 -0
  290. package/src/capabilities/blueprint-definition/blueprint-definition.ts +17 -0
  291. package/src/capabilities/blueprint-definition/index.ts +7 -0
  292. package/src/capabilities/compiler/compiler.ts +103 -0
  293. package/src/capabilities/compiler/index.ts +7 -0
  294. package/src/capabilities/index.ts +6 -10
  295. package/src/capabilities/operation-resolver/index.ts +7 -0
  296. package/src/capabilities/operation-resolver/operation-resolver.ts +75 -0
  297. package/src/capabilities/react-surface/index.ts +7 -0
  298. package/src/capabilities/react-surface/react-surface.tsx +121 -0
  299. package/src/capabilities/settings/index.ts +7 -0
  300. package/src/capabilities/settings/settings.ts +33 -0
  301. package/src/compiler/compiler.ts +10 -3
  302. package/src/components/FrameContainer/FrameContainer.tsx +6 -5
  303. package/src/components/FrameContainer/frame.html +21 -21
  304. package/src/components/NotebookStack/NotebookCell.tsx +215 -0
  305. package/src/components/NotebookStack/NotebookMenu.tsx +47 -0
  306. package/src/components/NotebookStack/NotebookStack.stories.tsx +33 -15
  307. package/src/components/NotebookStack/NotebookStack.tsx +55 -82
  308. package/src/components/NotebookStack/index.ts +1 -0
  309. package/src/components/QueryEditor/QueryEditor.stories.tsx +102 -0
  310. package/src/components/QueryEditor/QueryEditor.tsx +47 -0
  311. package/src/components/QueryEditor/index.ts +5 -0
  312. package/src/components/ScriptToolbar/ScriptToolbar.stories.tsx +46 -23
  313. package/src/components/ScriptToolbar/ScriptToolbar.tsx +28 -31
  314. package/src/components/TestPanel/TestPanel.tsx +61 -36
  315. package/src/components/TestPanel/index.ts +0 -1
  316. package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +26 -25
  317. package/src/components/TypescriptEditor/TypescriptEditor.tsx +70 -74
  318. package/src/components/index.ts +4 -9
  319. package/src/constants.ts +7 -0
  320. package/src/containers/DeploymentDialog/DeploymentDialog.stories.tsx +61 -0
  321. package/src/containers/DeploymentDialog/DeploymentDialog.tsx +99 -0
  322. package/src/containers/DeploymentDialog/index.ts +7 -0
  323. package/src/containers/NotebookContainer/NotebookContainer.stories.tsx +87 -0
  324. package/src/containers/NotebookContainer/NotebookContainer.tsx +268 -0
  325. package/src/containers/NotebookContainer/index.ts +7 -0
  326. package/src/containers/ScriptContainer/ScriptContainer.tsx +84 -0
  327. package/src/containers/ScriptContainer/index.ts +7 -0
  328. package/src/{components/Settings → containers/ScriptObjectSettings}/ScriptObjectSettings.tsx +55 -50
  329. package/src/containers/ScriptObjectSettings/index.ts +7 -0
  330. package/src/{components/Settings → containers/ScriptPluginSettings}/ScriptPluginSettings.tsx +19 -14
  331. package/src/containers/ScriptPluginSettings/index.ts +7 -0
  332. package/src/containers/ScriptProperties/ScriptProperties.tsx +33 -0
  333. package/src/containers/ScriptProperties/index.ts +7 -0
  334. package/src/containers/TestContainer/TestContainer.tsx +28 -0
  335. package/src/containers/TestContainer/index.ts +7 -0
  336. package/src/containers/index.ts +13 -0
  337. package/src/e2e/ai.test.ts +92 -0
  338. package/src/e2e/deploy.test.ts +64 -0
  339. package/src/hooks/deploy.ts +43 -35
  340. package/src/hooks/format.ts +8 -3
  341. package/src/hooks/index.ts +1 -0
  342. package/src/hooks/template.ts +22 -26
  343. package/src/hooks/useCompiler.ts +24 -0
  344. package/src/hooks/useCreateAndDeployScriptTemplates.ts +14 -16
  345. package/src/hooks/useToolbarState.ts +29 -4
  346. package/src/index.ts +2 -1
  347. package/src/meta.ts +8 -4
  348. package/src/notebook/compute-graph.test.ts +82 -0
  349. package/src/notebook/{notebook.ts → compute-graph.ts} +75 -33
  350. package/src/notebook/eval.ts +105 -0
  351. package/src/notebook/index.ts +1 -1
  352. package/src/notebook/vfs-parser.ts +43 -82
  353. package/src/templates/anthropic.ts +42 -0
  354. package/src/templates/chess-bot.ts +58 -0
  355. package/src/templates/commentary.ts +231 -0
  356. package/src/templates/data-generator.ts +1 -1
  357. package/src/templates/forex-effect.ts +22 -27
  358. package/src/templates/forex.ts +7 -6
  359. package/src/templates/gmail.ts +1 -2
  360. package/src/templates/index.ts +24 -11
  361. package/src/templates/ping.ts +17 -0
  362. package/src/testing/data.ts +43 -8
  363. package/src/testing/simulator.test.ts +40 -0
  364. package/src/translations.ts +11 -3
  365. package/src/types/Notebook.ts +41 -0
  366. package/src/types/actions.ts +23 -27
  367. package/src/types/capabilities.ts +17 -0
  368. package/src/types/events.ts +11 -0
  369. package/src/types/index.ts +4 -1
  370. package/src/types/types.ts +15 -0
  371. package/src/util/deploy.ts +30 -40
  372. package/src/util/functions.ts +32 -28
  373. package/src/vite-env.d.ts +2 -0
  374. package/dist/lib/browser/DeploymentDialog-7FNPALCV.mjs +0 -12
  375. package/dist/lib/browser/NotebookContainer-ZSXYRRZB.mjs +0 -578
  376. package/dist/lib/browser/NotebookContainer-ZSXYRRZB.mjs.map +0 -7
  377. package/dist/lib/browser/ScriptContainer-24LLLTLB.mjs +0 -149
  378. package/dist/lib/browser/ScriptContainer-24LLLTLB.mjs.map +0 -7
  379. package/dist/lib/browser/app-graph-builder-DPYULSME.mjs +0 -65
  380. package/dist/lib/browser/app-graph-builder-DPYULSME.mjs.map +0 -7
  381. package/dist/lib/browser/blueprint-definition-ET5KZ46I.mjs +0 -28
  382. package/dist/lib/browser/blueprint-definition-ET5KZ46I.mjs.map +0 -7
  383. package/dist/lib/browser/chunk-DXWTBOND.mjs +0 -282
  384. package/dist/lib/browser/chunk-DXWTBOND.mjs.map +0 -7
  385. package/dist/lib/browser/chunk-ETFBQURU.mjs +0 -254
  386. package/dist/lib/browser/chunk-ETFBQURU.mjs.map +0 -7
  387. package/dist/lib/browser/chunk-EZVXV6DA.mjs.map +0 -7
  388. package/dist/lib/browser/chunk-I3THDIT5.mjs +0 -90
  389. package/dist/lib/browser/chunk-I3THDIT5.mjs.map +0 -7
  390. package/dist/lib/browser/chunk-N6M34EUC.mjs +0 -112
  391. package/dist/lib/browser/chunk-N6M34EUC.mjs.map +0 -7
  392. package/dist/lib/browser/chunk-NNYSARXK.mjs +0 -153
  393. package/dist/lib/browser/chunk-NNYSARXK.mjs.map +0 -7
  394. package/dist/lib/browser/chunk-OKXN2N7M.mjs +0 -15
  395. package/dist/lib/browser/chunk-OKXN2N7M.mjs.map +0 -7
  396. package/dist/lib/browser/chunk-SRSEZWDY.mjs +0 -646
  397. package/dist/lib/browser/chunk-SRSEZWDY.mjs.map +0 -7
  398. package/dist/lib/browser/chunk-SWBZUZDX.mjs +0 -80
  399. package/dist/lib/browser/chunk-SWBZUZDX.mjs.map +0 -7
  400. package/dist/lib/browser/chunk-VFJJA4WR.mjs +0 -88
  401. package/dist/lib/browser/chunk-VFJJA4WR.mjs.map +0 -7
  402. package/dist/lib/browser/compiler-G2N2CG63.mjs +0 -98
  403. package/dist/lib/browser/compiler-G2N2CG63.mjs.map +0 -7
  404. package/dist/lib/browser/intent-resolver-FYZRLYNT.mjs +0 -105
  405. package/dist/lib/browser/intent-resolver-FYZRLYNT.mjs.map +0 -7
  406. package/dist/lib/browser/react-surface-CFRYAL2P.mjs +0 -127
  407. package/dist/lib/browser/react-surface-CFRYAL2P.mjs.map +0 -7
  408. package/dist/lib/browser/settings-L3HCZRBP.mjs +0 -24
  409. package/dist/lib/browser/settings-L3HCZRBP.mjs.map +0 -7
  410. package/dist/lib/node-esm/DeploymentDialog-AKAGR37W.mjs +0 -13
  411. package/dist/lib/node-esm/NotebookContainer-2O3N3XPE.mjs +0 -579
  412. package/dist/lib/node-esm/NotebookContainer-2O3N3XPE.mjs.map +0 -7
  413. package/dist/lib/node-esm/ScriptContainer-IKOB6FHQ.mjs +0 -150
  414. package/dist/lib/node-esm/ScriptContainer-IKOB6FHQ.mjs.map +0 -7
  415. package/dist/lib/node-esm/app-graph-builder-UXJGHXSL.mjs +0 -66
  416. package/dist/lib/node-esm/app-graph-builder-UXJGHXSL.mjs.map +0 -7
  417. package/dist/lib/node-esm/blueprint-definition-AIYFOT7Q.mjs +0 -30
  418. package/dist/lib/node-esm/blueprint-definition-AIYFOT7Q.mjs.map +0 -7
  419. package/dist/lib/node-esm/chunk-5IKGUOMI.mjs +0 -154
  420. package/dist/lib/node-esm/chunk-5IKGUOMI.mjs.map +0 -7
  421. package/dist/lib/node-esm/chunk-7MR2L4T3.mjs +0 -283
  422. package/dist/lib/node-esm/chunk-7MR2L4T3.mjs.map +0 -7
  423. package/dist/lib/node-esm/chunk-C33FKUSC.mjs +0 -91
  424. package/dist/lib/node-esm/chunk-C33FKUSC.mjs.map +0 -7
  425. package/dist/lib/node-esm/chunk-NUXZQQ6P.mjs +0 -16
  426. package/dist/lib/node-esm/chunk-NUXZQQ6P.mjs.map +0 -7
  427. package/dist/lib/node-esm/chunk-OG2SIKHE.mjs.map +0 -7
  428. package/dist/lib/node-esm/chunk-OQGBKNYU.mjs.map +0 -7
  429. package/dist/lib/node-esm/chunk-PMQ3D535.mjs +0 -647
  430. package/dist/lib/node-esm/chunk-PMQ3D535.mjs.map +0 -7
  431. package/dist/lib/node-esm/chunk-U4CZGISN.mjs +0 -255
  432. package/dist/lib/node-esm/chunk-U4CZGISN.mjs.map +0 -7
  433. package/dist/lib/node-esm/chunk-VRSDE4CI.mjs +0 -114
  434. package/dist/lib/node-esm/chunk-VRSDE4CI.mjs.map +0 -7
  435. package/dist/lib/node-esm/chunk-ZF5ULKED.mjs +0 -81
  436. package/dist/lib/node-esm/chunk-ZF5ULKED.mjs.map +0 -7
  437. package/dist/lib/node-esm/compiler-PLDAZ5GJ.mjs +0 -99
  438. package/dist/lib/node-esm/compiler-PLDAZ5GJ.mjs.map +0 -7
  439. package/dist/lib/node-esm/intent-resolver-6J3CFL5T.mjs +0 -106
  440. package/dist/lib/node-esm/intent-resolver-6J3CFL5T.mjs.map +0 -7
  441. package/dist/lib/node-esm/react-surface-NPKEO7SA.mjs +0 -128
  442. package/dist/lib/node-esm/react-surface-NPKEO7SA.mjs.map +0 -7
  443. package/dist/lib/node-esm/settings-YWGZP4EW.mjs +0 -25
  444. package/dist/lib/node-esm/settings-YWGZP4EW.mjs.map +0 -7
  445. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  446. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  447. package/dist/types/src/capabilities/artifact-definition.d.ts +0 -11
  448. package/dist/types/src/capabilities/artifact-definition.d.ts.map +0 -1
  449. package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -5
  450. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
  451. package/dist/types/src/capabilities/capabilities.d.ts +0 -5
  452. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  453. package/dist/types/src/capabilities/compiler.d.ts +0 -4
  454. package/dist/types/src/capabilities/compiler.d.ts.map +0 -1
  455. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  456. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  457. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  458. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  459. package/dist/types/src/capabilities/settings.d.ts +0 -4
  460. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  461. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +0 -1
  462. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +0 -1
  463. package/dist/types/src/components/DeploymentDialog/index.d.ts +0 -4
  464. package/dist/types/src/components/DeploymentDialog/index.d.ts.map +0 -1
  465. package/dist/types/src/components/NotebookContainer.d.ts +0 -10
  466. package/dist/types/src/components/NotebookContainer.d.ts.map +0 -1
  467. package/dist/types/src/components/NotebookContainer.stories.d.ts +0 -231
  468. package/dist/types/src/components/NotebookContainer.stories.d.ts.map +0 -1
  469. package/dist/types/src/components/ScriptContainer.d.ts +0 -12
  470. package/dist/types/src/components/ScriptContainer.d.ts.map +0 -1
  471. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts +0 -8
  472. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +0 -1
  473. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts +0 -6
  474. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts.map +0 -1
  475. package/dist/types/src/components/Settings/index.d.ts +0 -3
  476. package/dist/types/src/components/Settings/index.d.ts.map +0 -1
  477. package/dist/types/src/components/TestPanel/TestContainer.d.ts +0 -8
  478. package/dist/types/src/components/TestPanel/TestContainer.d.ts.map +0 -1
  479. package/dist/types/src/events.d.ts +0 -4
  480. package/dist/types/src/events.d.ts.map +0 -1
  481. package/dist/types/src/notebook/notebook.d.ts +0 -39
  482. package/dist/types/src/notebook/notebook.d.ts.map +0 -1
  483. package/dist/types/src/notebook/notebook.test.d.ts +0 -2
  484. package/dist/types/src/notebook/notebook.test.d.ts.map +0 -1
  485. package/dist/types/src/templates/chess.d.ts +0 -3
  486. package/dist/types/src/templates/chess.d.ts.map +0 -1
  487. package/dist/types/src/templates/echo.d.ts +0 -6
  488. package/dist/types/src/templates/echo.d.ts.map +0 -1
  489. package/dist/types/src/types/schema.d.ts +0 -35
  490. package/dist/types/src/types/schema.d.ts.map +0 -1
  491. package/src/capabilities/app-graph-builder.ts +0 -65
  492. package/src/capabilities/blueprint-definition.ts +0 -30
  493. package/src/capabilities/capabilities.ts +0 -12
  494. package/src/capabilities/compiler.ts +0 -34
  495. package/src/capabilities/intent-resolver.ts +0 -87
  496. package/src/capabilities/react-surface.tsx +0 -102
  497. package/src/capabilities/settings.ts +0 -21
  498. package/src/components/DeploymentDialog/DeploymentDialog.stories.tsx +0 -53
  499. package/src/components/DeploymentDialog/DeploymentDialog.tsx +0 -106
  500. package/src/components/DeploymentDialog/index.ts +0 -9
  501. package/src/components/NotebookContainer.stories.tsx +0 -36
  502. package/src/components/NotebookContainer.tsx +0 -82
  503. package/src/components/ScriptContainer.tsx +0 -69
  504. package/src/components/Settings/index.ts +0 -6
  505. package/src/components/TestPanel/TestContainer.tsx +0 -27
  506. package/src/events.ts +0 -11
  507. package/src/notebook/notebook.test.ts +0 -38
  508. package/src/templates/chess.ts +0 -49
  509. package/src/templates/echo.ts +0 -8
  510. package/src/types/schema.ts +0 -42
  511. /package/dist/lib/browser/{DeploymentDialog-7FNPALCV.mjs.map → blueprints/index.mjs.map} +0 -0
  512. /package/dist/lib/{node-esm/DeploymentDialog-AKAGR37W.mjs.map → browser/chunk-J5LGTIGS.mjs.map} +0 -0
@@ -0,0 +1,268 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { RegistryContext } from '@effect-atom/atom-react';
6
+ import * as Cause from 'effect/Cause';
7
+ import * as Effect from 'effect/Effect';
8
+ import * as Exit from 'effect/Exit';
9
+ import type * as Types from 'effect/Types';
10
+ import React, { useCallback, useContext, useMemo, useState } from 'react';
11
+
12
+ import { type SurfaceComponentProps } from '@dxos/app-toolkit/ui';
13
+ import { AgentFunctions } from '@dxos/assistant-toolkit';
14
+ import { Blueprint, Prompt } from '@dxos/blueprints';
15
+ import { Filter, Obj, Query, Ref } from '@dxos/echo';
16
+ import { QueryBuilder } from '@dxos/echo-query';
17
+ import { type FunctionDefinition, FunctionInvocationService, TracingService } from '@dxos/functions';
18
+ import { invariant } from '@dxos/invariant';
19
+ import { log } from '@dxos/log';
20
+ import { useComputeRuntimeCallback } from '@dxos/plugin-automation';
21
+ import { Graph } from '@dxos/plugin-explorer/types';
22
+ import { DropdownMenu, IconButton, Panel, Toolbar, useTranslation } from '@dxos/react-ui';
23
+ import { useAttention } from '@dxos/react-ui-attention';
24
+ import { Text, ViewModel } from '@dxos/schema';
25
+ import { isNonNullable } from '@dxos/util';
26
+
27
+ import { NotebookMenu, NotebookStack, type NotebookStackProps, type TypescriptEditorProps } from '../../components';
28
+ import { meta } from '../../meta';
29
+ import { ComputeGraph } from '../../notebook';
30
+ import { type Notebook } from '../../types';
31
+
32
+ const INCLUDE_BLUEPRINTS = [
33
+ 'dxos.org/blueprint/assistant',
34
+ 'dxos.org/blueprint/database',
35
+ 'dxos.org/blueprint/markdown',
36
+ ];
37
+
38
+ // TODO(burdon): Support calling named deployed functions (as with sheet).
39
+
40
+ export type NotebookContainerProps = SurfaceComponentProps<Notebook.Notebook, Pick<TypescriptEditorProps, 'env'>>;
41
+
42
+ export const NotebookContainer = ({ role, subject: notebook, env }: NotebookContainerProps) => {
43
+ const { t } = useTranslation(meta.id);
44
+ const registry = useContext(RegistryContext);
45
+ const db = notebook && Obj.getDatabase(notebook);
46
+ const attendableId = notebook ? Obj.getDXN(notebook).toString() : '';
47
+ const { hasAttention } = useAttention(attendableId);
48
+
49
+ // TODO(burdon): Consolidate execution and state (with graph).
50
+ // Generalize ComputeGraph evaluation function (using effects).
51
+ const graph = useMemo(() => notebook && new ComputeGraph(notebook, registry), [notebook, registry]);
52
+
53
+ const [queryValues, setQueryValues] = useState<Record<string, any>>({});
54
+ const handleExecQueries = useCallback(async () => {
55
+ invariant(db);
56
+
57
+ const builder = new QueryBuilder();
58
+ for (const cell of notebook?.cells ?? []) {
59
+ if (cell.type === 'query') {
60
+ if (cell.source?.target) {
61
+ const source = cell.source.target.content;
62
+ const { name, filter } = builder.build(source);
63
+ if (filter) {
64
+ const ast = Query.select(filter).ast;
65
+ const graph = cell.graph?.target;
66
+ if (!graph) {
67
+ const { view } = await ViewModel.makeFromDatabase({ db });
68
+ const newGraph = Graph.make({ query: { ast }, view });
69
+ Obj.change(notebook!, (n) => {
70
+ const c = n.cells.find((c) => c.id === cell.id);
71
+ if (c) {
72
+ c.graph = Ref.make(newGraph);
73
+ c.name = name;
74
+ }
75
+ });
76
+ } else {
77
+ Obj.change(graph, (g) => {
78
+ g.query.ast = ast as Obj.Mutable<typeof ast>;
79
+ });
80
+ }
81
+ }
82
+ }
83
+
84
+ if (cell.name && cell.graph?.target) {
85
+ const graph = Obj.getSnapshot(cell.graph?.target);
86
+ const query = Query.fromAst(graph.query.ast);
87
+ const objects = await db.query(query).run();
88
+ const objectIds = objects?.map((obj) => obj.id);
89
+ setQueryValues((prev) => ({ ...prev, [cell.name!]: objectIds }));
90
+ }
91
+ }
92
+ }
93
+ }, [db, notebook, graph]);
94
+
95
+ const [promptResults, setPromptResults] = useState<Record<string, string>>({});
96
+ const handleExecPrompts = useComputeRuntimeCallback(
97
+ db?.spaceId,
98
+ Effect.fnUntraced(function* () {
99
+ invariant(graph);
100
+
101
+ const prompts =
102
+ notebook?.cells
103
+ .filter((cell) => cell.type === 'prompt')
104
+ .map((cell) => cell.prompt)
105
+ .filter(isNonNullable) ?? [];
106
+
107
+ for (const prompt of prompts) {
108
+ yield* runPrompt({
109
+ prompt,
110
+ input: { ...queryValues, ...graph.getValuesByName() },
111
+ onResult: (result) =>
112
+ setPromptResults((prev) => ({
113
+ ...prev,
114
+ [prompt.dxn.toString()]: result,
115
+ })),
116
+ });
117
+ }
118
+ }),
119
+ [notebook, graph, queryValues],
120
+ );
121
+
122
+ // TODO(burdon): Cache values in context (preserve when switched).
123
+ const handleCompute = useCallback(async () => {
124
+ // TODO(burdon): Generalize executors (dependencies).
125
+ await graph?.evaluate();
126
+ await handleExecQueries();
127
+ await handleExecPrompts();
128
+ }, [graph, handleExecQueries, handleExecPrompts]);
129
+
130
+ const handleRearrange = useCallback<NonNullable<NotebookStackProps['onRearrange']>>(
131
+ (source, target) => {
132
+ invariant(notebook);
133
+ const from = notebook.cells.findIndex((cell) => cell.id === source.id);
134
+ const to = notebook.cells.findIndex((cell) => cell.id === target.id);
135
+ if (from != null && to != null) {
136
+ Obj.change(notebook, (n) => {
137
+ const cell = n.cells.splice(from, 1)[0];
138
+ if (cell) {
139
+ n.cells.splice(to, 0, cell);
140
+ }
141
+ });
142
+ }
143
+ },
144
+ [notebook],
145
+ );
146
+
147
+ const handleCellInsert = useCallback<NonNullable<NotebookStackProps['onCellInsert']>>(
148
+ async (type, after) => {
149
+ invariant(notebook);
150
+ const cell: Types.Mutable<Notebook.Cell> = { id: crypto.randomUUID(), type };
151
+ switch (type) {
152
+ case 'markdown':
153
+ case 'script':
154
+ case 'query': {
155
+ cell.source = Ref.make(Text.make());
156
+ break;
157
+ }
158
+
159
+ case 'prompt': {
160
+ if (db) {
161
+ const objects = await db.query(Query.select(Filter.type(Blueprint.Blueprint))).run();
162
+ const blueprints = objects
163
+ .filter((blueprint) => INCLUDE_BLUEPRINTS.includes(blueprint.key))
164
+ .map((blueprint) => Ref.make(blueprint));
165
+ cell.prompt = Ref.make(Prompt.make({ instructions: '', blueprints }));
166
+ }
167
+ break;
168
+ }
169
+ }
170
+
171
+ const idx = after ? notebook.cells.findIndex((cell) => cell.id === after) : notebook.cells.length;
172
+ Obj.change(notebook, (n) => {
173
+ n.cells.splice(idx, 0, cell);
174
+ });
175
+ },
176
+ [db, notebook],
177
+ );
178
+
179
+ const handleCellDelete = useCallback<NonNullable<NotebookStackProps['onCellDelete']>>(
180
+ (id) => {
181
+ invariant(notebook);
182
+ const idx = notebook.cells.findIndex((cell) => cell.id === id);
183
+ if (idx !== -1) {
184
+ Obj.change(notebook, (n) => {
185
+ n.cells.splice(idx, 1);
186
+ });
187
+ }
188
+ },
189
+ [notebook],
190
+ );
191
+
192
+ return (
193
+ <Panel.Root role={role} className='dx-article'>
194
+ <Panel.Toolbar asChild>
195
+ <Toolbar.Root disabled={!hasAttention} textBlockWidth>
196
+ <DropdownMenu.Root>
197
+ <DropdownMenu.Trigger asChild>
198
+ <IconButton icon='ph--plus--regular' iconOnly label={t('notebook cell insert label')} />
199
+ </DropdownMenu.Trigger>
200
+ <NotebookMenu onCellInsert={handleCellInsert} />
201
+ </DropdownMenu.Root>
202
+ <Toolbar.IconButton
203
+ icon='ph--play--fill'
204
+ iconOnly
205
+ label={t('compute label')}
206
+ classNames='text-green-500'
207
+ onClick={handleCompute}
208
+ />
209
+ </Toolbar.Root>
210
+ </Panel.Toolbar>
211
+ <Panel.Content asChild>
212
+ <NotebookStack
213
+ db={db}
214
+ notebook={notebook}
215
+ graph={graph}
216
+ env={env}
217
+ promptResults={promptResults}
218
+ onRearrange={handleRearrange}
219
+ onCellInsert={handleCellInsert}
220
+ onCellDelete={handleCellDelete}
221
+ />
222
+ </Panel.Content>
223
+ </Panel.Root>
224
+ );
225
+ };
226
+
227
+ // TODO(wittjosiah): Factor out. Copied from PromptArticle in plugin-assistant.
228
+ const runPrompt = Effect.fn(function* ({
229
+ prompt,
230
+ input,
231
+ onResult,
232
+ }: {
233
+ prompt: Ref.Ref<Prompt.Prompt>;
234
+ input: Record<string, any>;
235
+ onResult: (result: string) => void;
236
+ }) {
237
+ const inputData: FunctionDefinition.Input<typeof AgentFunctions.Prompt> = { prompt, input };
238
+ const tracer = yield* TracingService;
239
+ const trace = yield* tracer.traceInvocationStart({
240
+ target: undefined,
241
+ payload: {
242
+ data: {},
243
+ },
244
+ });
245
+
246
+ // Invoke the function.
247
+ const result = yield* FunctionInvocationService.invokeFunction(AgentFunctions.Prompt, inputData).pipe(
248
+ Effect.provide(trace.invocationTraceQueue ? TracingService.layerInvocation(trace) : TracingService.layerNoop),
249
+ Effect.exit,
250
+ );
251
+
252
+ Exit.match(result, {
253
+ onFailure: (cause) => {
254
+ const error = Cause.prettyErrors(cause)[0];
255
+ log.error(error.message, error.cause ?? error.stack);
256
+ onResult(error.message);
257
+ },
258
+ onSuccess: (result: any) => {
259
+ onResult(result.note);
260
+ },
261
+ });
262
+
263
+ yield* tracer.traceInvocationEnd({
264
+ trace,
265
+ // TODO(dmaretskyi): Might miss errors.
266
+ exception: Exit.isFailure(result) ? Cause.prettyErrors(result.cause)[0] : undefined,
267
+ });
268
+ });
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { NotebookContainer } from './NotebookContainer';
6
+
7
+ export default NotebookContainer;
@@ -0,0 +1,84 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import React, { useMemo } from 'react';
6
+
7
+ import { type SurfaceComponentProps } from '@dxos/app-toolkit/ui';
8
+ import { Obj } from '@dxos/echo';
9
+ import { createDocAccessor } from '@dxos/echo-db';
10
+ import { type Script } from '@dxos/functions';
11
+ import { getSpace } from '@dxos/react-client/echo';
12
+ import { useIdentity } from '@dxos/react-client/halo';
13
+ import { Panel } from '@dxos/react-ui';
14
+ import { createDataExtensions, listener, stackItemContentEditorClassNames } from '@dxos/ui-editor';
15
+
16
+ import { ScriptToolbar, TypescriptEditor, type TypescriptEditorProps } from '../../components';
17
+ import { useDeployState, useToolbarState } from '../../hooks';
18
+ import { type ScriptSettings } from '../../types';
19
+
20
+ export type ScriptEditorProps = SurfaceComponentProps<
21
+ Script.Script,
22
+ {
23
+ settings?: ScriptSettings;
24
+ } & Pick<TypescriptEditorProps, 'env'>
25
+ >;
26
+
27
+ export const ScriptContainer = ({
28
+ role,
29
+ subject: script,
30
+ settings = { editorInputMode: 'vscode' },
31
+ env,
32
+ }: ScriptEditorProps) => {
33
+ const identity = useIdentity();
34
+ const space = getSpace(script);
35
+ const state = useToolbarState();
36
+ useDeployState({ script, state });
37
+
38
+ const extensions = useMemo(() => {
39
+ if (!script.source.target) {
40
+ return [];
41
+ }
42
+
43
+ return [
44
+ createDataExtensions({
45
+ id: script.id,
46
+ text: createDocAccessor(script.source.target, ['content']),
47
+ messenger: space,
48
+ identity,
49
+ }),
50
+ listener({
51
+ onChange: ({ text }) => {
52
+ if (script.source.target?.content !== text) {
53
+ Obj.change(script, (s) => {
54
+ s.changed = true;
55
+ });
56
+ }
57
+ },
58
+ }),
59
+ ];
60
+ }, [identity, space, script, script.source.target]);
61
+
62
+ if (!extensions.length) {
63
+ return null;
64
+ }
65
+
66
+ return (
67
+ <Panel.Root role={role} className='dx-article'>
68
+ <Panel.Toolbar asChild>
69
+ <ScriptToolbar state={state} role={role} script={script} />
70
+ </Panel.Toolbar>
71
+ <Panel.Content asChild>
72
+ <TypescriptEditor
73
+ id={script.id}
74
+ env={env}
75
+ initialValue={script.source?.target?.content}
76
+ extensions={extensions}
77
+ classNames={stackItemContentEditorClassNames(role)}
78
+ inputMode={settings.editorInputMode}
79
+ toolbar
80
+ />
81
+ </Panel.Content>
82
+ </Panel.Root>
83
+ );
84
+ };
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { ScriptContainer } from './ScriptContainer';
6
+
7
+ export default ScriptContainer;
@@ -6,20 +6,23 @@ 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, useIntentDispatcher } from '@dxos/app-framework';
9
+ import { useOperationInvoker } from '@dxos/app-framework/ui';
10
+ import { SettingsOperation } from '@dxos/app-toolkit';
10
11
  import { Blueprint, Template } from '@dxos/blueprints';
11
- import { FunctionType, type ScriptType, getInvocationUrl, getUserFunctionIdInMetadata } from '@dxos/functions';
12
+ import { Filter, Obj, Ref } from '@dxos/echo';
13
+ import { Function, type Script, getUserFunctionIdInMetadata } from '@dxos/functions';
14
+ import { getInvocationUrl } from '@dxos/functions-runtime';
12
15
  import { log } from '@dxos/log';
13
16
  import { useClient } from '@dxos/react-client';
14
- import { Filter, Ref, getMeta, getSpace, useQuery } from '@dxos/react-client/echo';
17
+ import { useQuery } from '@dxos/react-client/echo';
15
18
  import { Button, Clipboard, Input, useAsyncEffect, useControlledState, useTranslation } from '@dxos/react-ui';
16
- import { DataType } from '@dxos/schema';
19
+ import { AccessToken } from '@dxos/types';
17
20
  import { kebabize } from '@dxos/util';
18
21
 
19
22
  import { meta } from '../../meta';
20
23
 
21
24
  export type ScriptObjectSettingsProps = {
22
- object: ScriptType;
25
+ object: Script.Script;
23
26
  };
24
27
 
25
28
  export const ScriptObjectSettings = ({ object }: ScriptObjectSettingsProps) => {
@@ -32,27 +35,11 @@ export const ScriptObjectSettings = ({ object }: ScriptObjectSettingsProps) => {
32
35
  );
33
36
  };
34
37
 
35
- export const ScriptProperties = ({ object }: ScriptObjectSettingsProps) => {
36
- const { t } = useTranslation(meta.id);
37
- return (
38
- <Input.Root>
39
- <Input.Label>{t('description label')}</Input.Label>
40
- <Input.TextInput
41
- placeholder={t('description placeholder')}
42
- value={object.description ?? ''}
43
- onChange={(event) => {
44
- object.description = event.target.value;
45
- }}
46
- />
47
- </Input.Root>
48
- );
49
- };
50
-
51
38
  const BlueprintEditor = ({ object }: ScriptObjectSettingsProps) => {
52
39
  const { t } = useTranslation(meta.id);
53
- const space = getSpace(object);
54
- const [fn] = useQuery(space, Filter.type(FunctionType, { source: Ref.make(object) }));
55
- const blueprints = useQuery(space, Filter.type(Blueprint.Blueprint));
40
+ const db = Obj.getDatabase(object);
41
+ const [fn] = useQuery(db, Filter.type(Function.Function, { source: Ref.make(object) }));
42
+ const blueprints = useQuery(db, Filter.type(Blueprint.Blueprint));
56
43
 
57
44
  const [creating, setCreating] = useState(false);
58
45
  const [instructions, setInstructions] = useState<string>(`You can run the script "${object.name ?? 'script'}".`);
@@ -68,7 +55,7 @@ const BlueprintEditor = ({ object }: ScriptObjectSettingsProps) => {
68
55
  }, [existingBlueprint]);
69
56
 
70
57
  const handleSave = useCallback(async () => {
71
- if (!space) {
58
+ if (!db) {
72
59
  return;
73
60
  }
74
61
 
@@ -76,15 +63,19 @@ const BlueprintEditor = ({ object }: ScriptObjectSettingsProps) => {
76
63
  try {
77
64
  if (existingBlueprint) {
78
65
  const text = await existingBlueprint.instructions.source.load();
79
- text.content = instructions;
66
+ Obj.change(text, (t) => {
67
+ t.content = instructions;
68
+ });
80
69
  if (fn?.key) {
81
70
  const toolId = ToolId.make(fn.key);
82
71
  if (!existingBlueprint.tools?.includes(toolId)) {
83
- existingBlueprint.tools = [...(existingBlueprint.tools ?? []), toolId];
72
+ Obj.change(existingBlueprint, (b) => {
73
+ b.tools = [...(b.tools ?? []), toolId];
74
+ });
84
75
  }
85
76
  }
86
77
  } else if (fn?.key) {
87
- space.db.add(
78
+ db.add(
88
79
  Blueprint.make({
89
80
  key: blueprintKey,
90
81
  name: object.name ?? 'Script',
@@ -95,25 +86,29 @@ const BlueprintEditor = ({ object }: ScriptObjectSettingsProps) => {
95
86
  }),
96
87
  );
97
88
  }
98
- await space.db.flush();
89
+ await db.flush();
99
90
  } finally {
100
91
  setCreating(false);
101
92
  }
102
- }, [space, existingBlueprint, fn, blueprintKey, object.name, instructions]);
93
+ }, [db, existingBlueprint, fn, blueprintKey, object.name, instructions]);
103
94
 
104
95
  return (
105
- <div className='flex flex-col gap-4 mlb-cardSpacingBlock'>
96
+ <div className='flex flex-col gap-4 my-form-padding'>
106
97
  <div>
107
98
  <h2>{t('blueprint editor label', { default: 'Blueprint' })}</h2>
108
99
  <p className='text-description text-sm'>
109
- {t('blueprint editor description', { default: 'Create a blueprint that exposes this script as a tool.' })}
100
+ {t('blueprint editor description', {
101
+ default: 'Create a blueprint that exposes this script as a tool.',
102
+ })}
110
103
  </p>
111
104
  </div>
112
105
  <Input.Root>
113
106
  <div role='none' className='flex flex-col gap-1'>
114
107
  <Input.Label>{t('blueprint instructions label', { default: 'Instructions' })}</Input.Label>
115
108
  <Input.TextArea
116
- placeholder={t('blueprint instructions placeholder', { default: 'Describe how this tool should be used.' })}
109
+ placeholder={t('blueprint instructions placeholder', {
110
+ default: 'Describe how this tool should be used.',
111
+ })}
117
112
  rows={6}
118
113
  value={instructions}
119
114
  onChange={(event) => setInstructions(event.target.value)}
@@ -135,14 +130,14 @@ const BlueprintEditor = ({ object }: ScriptObjectSettingsProps) => {
135
130
  const Binding = ({ object }: ScriptObjectSettingsProps) => {
136
131
  const { t } = useTranslation(meta.id);
137
132
  const client = useClient();
138
- const space = getSpace(object);
139
- const [fn] = useQuery(space, Filter.type(FunctionType, { source: Ref.make(object) }));
133
+ const db = Obj.getDatabase(object);
134
+ const [fn] = useQuery(db, Filter.type(Function.Function, { source: Ref.make(object) }));
140
135
 
141
- const functionId = fn && getUserFunctionIdInMetadata(getMeta(fn));
136
+ const functionId = fn && getUserFunctionIdInMetadata(Obj.getMeta(fn));
142
137
  const functionUrl =
143
138
  functionId &&
144
139
  getInvocationUrl(functionId, client.config.values.runtime?.services?.edge?.url ?? '', {
145
- spaceId: space?.id,
140
+ spaceId: db?.spaceId,
146
141
  });
147
142
 
148
143
  const [binding, setBinding] = useControlledState(fn?.binding ?? '');
@@ -154,7 +149,9 @@ const Binding = ({ object }: ScriptObjectSettingsProps) => {
154
149
  );
155
150
 
156
151
  const handleBindingBlur = useCallback(() => {
157
- fn.binding = binding;
152
+ Obj.change(fn, (f) => {
153
+ f.binding = binding;
154
+ });
158
155
  }, [fn, binding]);
159
156
 
160
157
  if (!fn || !functionUrl) {
@@ -163,7 +160,7 @@ const Binding = ({ object }: ScriptObjectSettingsProps) => {
163
160
 
164
161
  // TODO(burdon): Use form.
165
162
  return (
166
- <div role='form' className='flex flex-col gap-2 mlb-cardSpacingBlock'>
163
+ <div role='form' className='flex flex-col gap-2 my-form-padding'>
167
164
  <h2>{t('remote function settings heading')}</h2>
168
165
  <Input.Root>
169
166
  <div role='none' className='flex flex-col gap-1'>
@@ -173,7 +170,9 @@ const Binding = ({ object }: ScriptObjectSettingsProps) => {
173
170
  disabled
174
171
  value={functionUrl}
175
172
  onChange={(event) => {
176
- fn.name = event.target.value;
173
+ Obj.change(fn, (f) => {
174
+ f.name = event.target.value;
175
+ });
177
176
  }}
178
177
  />
179
178
  <Clipboard.IconButton value={functionUrl} />
@@ -198,10 +197,10 @@ const Binding = ({ object }: ScriptObjectSettingsProps) => {
198
197
  // TODO(burdon): Move to separate tab?
199
198
  const Publishing = ({ object }: ScriptObjectSettingsProps) => {
200
199
  const { t } = useTranslation(meta.id);
201
- const { dispatchPromise: dispatch } = useIntentDispatcher();
202
- const space = getSpace(object);
203
- const [githubToken] = useQuery(space, Filter.type(DataType.AccessToken, { source: 'github.com' }));
204
- const gistKey = getMeta(object).keys.find(({ source }) => source === 'github.com');
200
+ const { invokePromise } = useOperationInvoker();
201
+ const db = Obj.getDatabase(object);
202
+ const [githubToken] = useQuery(db, Filter.type(AccessToken.AccessToken, { source: 'github.com' }));
203
+ const gistKey = Obj.getMeta(object).keys.find(({ source }) => source === 'github.com');
205
204
  const [gistUrl, setGistUrl] = useState<string | undefined>();
206
205
 
207
206
  useAsyncEffect(async () => {
@@ -225,8 +224,11 @@ const Publishing = ({ object }: ScriptObjectSettingsProps) => {
225
224
  }, [githubToken, gistKey]);
226
225
 
227
226
  const handleOpenTokenManager = useCallback(
228
- () => dispatch(createIntent(SettingsAction.Open, { plugin: 'dxos.org/plugin/token-manager' })),
229
- [],
227
+ () =>
228
+ invokePromise(SettingsOperation.Open, {
229
+ plugin: 'dxos.org/plugin/token-manager',
230
+ }),
231
+ [invokePromise],
230
232
  );
231
233
 
232
234
  const [publishing, setPublishing] = useState(false);
@@ -239,7 +241,7 @@ const Publishing = ({ object }: ScriptObjectSettingsProps) => {
239
241
 
240
242
  try {
241
243
  // TODO(wittjosiah): Factor out to intent.
242
- const meta = getMeta(object);
244
+ const meta = Obj.getMeta(object);
243
245
  const githubKey = meta.keys.find(({ source }) => source === 'github.com');
244
246
  const gistId = githubKey?.id;
245
247
  if (gistId) {
@@ -252,8 +254,11 @@ const Publishing = ({ object }: ScriptObjectSettingsProps) => {
252
254
  public: true,
253
255
  files,
254
256
  });
255
- if (response.data.id) {
256
- meta.keys.push({ source: 'github.com', id: response.data.id });
257
+ const gistId = response.data.id;
258
+ if (gistId) {
259
+ Obj.change(object, (obj) => {
260
+ Obj.getMeta(obj).keys.push({ source: 'github.com', id: gistId });
261
+ });
257
262
  }
258
263
  }
259
264
  } finally {
@@ -262,7 +267,7 @@ const Publishing = ({ object }: ScriptObjectSettingsProps) => {
262
267
  }, [object, githubToken]);
263
268
 
264
269
  return (
265
- <div className='flex flex-col gap-4 mlb-cardSpacingBlock'>
270
+ <div className='flex flex-col gap-4 my-form-padding'>
266
271
  <div>
267
272
  <h2>{t('script publish settings label')}</h2>
268
273
  <p className='text-description text-sm'>{t('script publish settings description')}</p>
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ import { ScriptObjectSettings } from './ScriptObjectSettings';
6
+
7
+ export default ScriptObjectSettings;
@@ -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
  };