@dxos/plugin-script 0.8.4-main.28f8d3d → 0.8.4-main.406dc2a

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 (269) hide show
  1. package/dist/lib/browser/DeploymentDialog-65TWT6S5.mjs +13 -0
  2. package/dist/lib/browser/NotebookContainer-LVGRPFY3.mjs +683 -0
  3. package/dist/lib/browser/NotebookContainer-LVGRPFY3.mjs.map +7 -0
  4. package/dist/lib/browser/ScriptContainer-LRTRN7JW.mjs +149 -0
  5. package/dist/lib/browser/ScriptContainer-LRTRN7JW.mjs.map +7 -0
  6. package/dist/lib/browser/{app-graph-builder-IABOSTBK.mjs → app-graph-builder-DPYULSME.mjs} +8 -7
  7. package/dist/lib/browser/app-graph-builder-DPYULSME.mjs.map +7 -0
  8. package/dist/lib/browser/blueprint-definition-ET5KZ46I.mjs +28 -0
  9. package/dist/lib/browser/blueprint-definition-ET5KZ46I.mjs.map +7 -0
  10. package/dist/lib/browser/chunk-5CYLWXRH.mjs +89 -0
  11. package/dist/lib/browser/chunk-5CYLWXRH.mjs.map +7 -0
  12. package/dist/lib/browser/chunk-75LH4EUR.mjs +326 -0
  13. package/dist/lib/browser/chunk-75LH4EUR.mjs.map +7 -0
  14. package/dist/lib/browser/{chunk-MWZDJNCQ.mjs → chunk-E7DXDICD.mjs} +27 -28
  15. package/dist/lib/browser/chunk-E7DXDICD.mjs.map +7 -0
  16. package/dist/lib/browser/{chunk-QYAREHGH.mjs → chunk-EZVXV6DA.mjs} +3 -5
  17. package/dist/lib/browser/chunk-EZVXV6DA.mjs.map +7 -0
  18. package/dist/lib/browser/{chunk-OULPWKXN.mjs → chunk-I3QSGUFJ.mjs} +157 -66
  19. package/dist/lib/browser/chunk-I3QSGUFJ.mjs.map +7 -0
  20. package/dist/lib/browser/{chunk-SUOLJH55.mjs → chunk-JO2O7W6J.mjs} +71 -50
  21. package/dist/lib/browser/chunk-JO2O7W6J.mjs.map +7 -0
  22. package/dist/lib/browser/chunk-N6M34EUC.mjs +112 -0
  23. package/dist/lib/browser/chunk-N6M34EUC.mjs.map +7 -0
  24. package/dist/lib/browser/{chunk-OAVS36Q3.mjs → chunk-NM4WQS4F.mjs} +14 -14
  25. package/dist/lib/browser/chunk-NM4WQS4F.mjs.map +7 -0
  26. package/dist/lib/browser/{chunk-5TVBECWH.mjs → chunk-OKXN2N7M.mjs} +2 -2
  27. package/dist/lib/browser/chunk-ST3ACVUC.mjs +88 -0
  28. package/dist/lib/browser/chunk-ST3ACVUC.mjs.map +7 -0
  29. package/dist/lib/browser/{compiler-RIWQVBPX.mjs → compiler-G2N2CG63.mjs} +24 -11
  30. package/dist/lib/browser/{compiler-RIWQVBPX.mjs.map → compiler-G2N2CG63.mjs.map} +2 -2
  31. package/dist/lib/browser/index.mjs +113 -37
  32. package/dist/lib/browser/index.mjs.map +3 -3
  33. package/dist/lib/browser/{intent-resolver-SAL2TM7U.mjs → intent-resolver-JLU7DVLQ.mjs} +31 -15
  34. package/dist/lib/browser/intent-resolver-JLU7DVLQ.mjs.map +7 -0
  35. package/dist/lib/browser/meta.json +1 -1
  36. package/dist/lib/browser/{react-surface-E3SXU6ON.mjs → react-surface-76SDTUYG.mjs} +38 -15
  37. package/dist/lib/browser/react-surface-76SDTUYG.mjs.map +7 -0
  38. package/dist/lib/browser/{settings-KCTBK5TY.mjs → settings-ERFKVNUK.mjs} +9 -8
  39. package/dist/lib/browser/settings-ERFKVNUK.mjs.map +7 -0
  40. package/dist/lib/browser/templates/index.mjs +1 -1
  41. package/dist/lib/browser/types/index.mjs +7 -4
  42. package/dist/lib/node-esm/{DeploymentDialog-O2XZVRLU.mjs → DeploymentDialog-I63ZC2HH.mjs} +6 -5
  43. package/dist/lib/node-esm/NotebookContainer-QY5NJGJI.mjs +684 -0
  44. package/dist/lib/node-esm/NotebookContainer-QY5NJGJI.mjs.map +7 -0
  45. package/dist/lib/node-esm/ScriptContainer-SVXCSLNH.mjs +150 -0
  46. package/dist/lib/node-esm/ScriptContainer-SVXCSLNH.mjs.map +7 -0
  47. package/dist/lib/node-esm/{app-graph-builder-CQTTAYHP.mjs → app-graph-builder-UXJGHXSL.mjs} +8 -7
  48. package/dist/lib/node-esm/app-graph-builder-UXJGHXSL.mjs.map +7 -0
  49. package/dist/lib/node-esm/blueprint-definition-AIYFOT7Q.mjs +30 -0
  50. package/dist/lib/node-esm/blueprint-definition-AIYFOT7Q.mjs.map +7 -0
  51. package/dist/lib/node-esm/chunk-2GVTWESW.mjs +90 -0
  52. package/dist/lib/node-esm/chunk-2GVTWESW.mjs.map +7 -0
  53. package/dist/lib/node-esm/chunk-4X375PGY.mjs +90 -0
  54. package/dist/lib/node-esm/chunk-4X375PGY.mjs.map +7 -0
  55. package/dist/lib/node-esm/chunk-67OVZHI3.mjs +327 -0
  56. package/dist/lib/node-esm/chunk-67OVZHI3.mjs.map +7 -0
  57. package/dist/lib/node-esm/{chunk-IO6T72KY.mjs → chunk-C2ORIPKH.mjs} +14 -14
  58. package/dist/lib/node-esm/chunk-C2ORIPKH.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-35M3CHYE.mjs → chunk-NUXZQQ6P.mjs} +2 -2
  60. package/dist/lib/node-esm/{chunk-AHXJ6NQU.mjs → chunk-OG2SIKHE.mjs} +3 -5
  61. package/dist/lib/node-esm/chunk-OG2SIKHE.mjs.map +7 -0
  62. package/dist/lib/node-esm/{chunk-6WMFL3JL.mjs → chunk-SMFPSKQT.mjs} +157 -66
  63. package/dist/lib/node-esm/chunk-SMFPSKQT.mjs.map +7 -0
  64. package/dist/lib/node-esm/chunk-VRSDE4CI.mjs +114 -0
  65. package/dist/lib/node-esm/chunk-VRSDE4CI.mjs.map +7 -0
  66. package/dist/lib/node-esm/{chunk-7L4JDSXJ.mjs → chunk-VZAFGLD7.mjs} +27 -28
  67. package/dist/lib/node-esm/chunk-VZAFGLD7.mjs.map +7 -0
  68. package/dist/lib/node-esm/{chunk-PACUN7RS.mjs → chunk-YW36TZ7K.mjs} +71 -50
  69. package/dist/lib/node-esm/chunk-YW36TZ7K.mjs.map +7 -0
  70. package/dist/lib/node-esm/{compiler-S52P5P3F.mjs → compiler-PLDAZ5GJ.mjs} +24 -11
  71. package/dist/lib/node-esm/{compiler-S52P5P3F.mjs.map → compiler-PLDAZ5GJ.mjs.map} +2 -2
  72. package/dist/lib/node-esm/index.mjs +113 -37
  73. package/dist/lib/node-esm/index.mjs.map +3 -3
  74. package/dist/lib/node-esm/{intent-resolver-GO53JOPL.mjs → intent-resolver-SFGTIFOG.mjs} +31 -15
  75. package/dist/lib/node-esm/intent-resolver-SFGTIFOG.mjs.map +7 -0
  76. package/dist/lib/node-esm/meta.json +1 -1
  77. package/dist/lib/node-esm/{react-surface-W3NRCS5O.mjs → react-surface-SHEBNW4R.mjs} +38 -15
  78. package/dist/lib/node-esm/react-surface-SHEBNW4R.mjs.map +7 -0
  79. package/dist/lib/node-esm/{settings-DXZ334A3.mjs → settings-5TYXQ42N.mjs} +9 -8
  80. package/dist/lib/node-esm/settings-5TYXQ42N.mjs.map +7 -0
  81. package/dist/lib/node-esm/templates/index.mjs +1 -1
  82. package/dist/lib/node-esm/types/index.mjs +7 -4
  83. package/dist/types/src/ScriptPlugin.d.ts +1 -1
  84. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  85. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  86. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  87. package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -0
  88. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  89. package/dist/types/src/capabilities/compiler.d.ts +1 -1
  90. package/dist/types/src/capabilities/index.d.ts +6 -5
  91. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  92. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  93. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  94. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  95. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  96. package/dist/types/src/capabilities/settings.d.ts +1 -1
  97. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts +2 -2
  98. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +1 -1
  99. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts +246 -13
  100. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -1
  101. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +1 -1
  102. package/dist/types/src/components/NotebookContainer.d.ts +10 -0
  103. package/dist/types/src/components/NotebookContainer.d.ts.map +1 -0
  104. package/dist/types/src/components/NotebookContainer.stories.d.ts +248 -0
  105. package/dist/types/src/components/NotebookContainer.stories.d.ts.map +1 -0
  106. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts +14 -0
  107. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts.map +1 -0
  108. package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts +9 -0
  109. package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts.map +1 -0
  110. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts +14 -0
  111. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts.map +1 -0
  112. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts +248 -0
  113. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts.map +1 -0
  114. package/dist/types/src/components/NotebookStack/index.d.ts +3 -0
  115. package/dist/types/src/components/NotebookStack/index.d.ts.map +1 -0
  116. package/dist/types/src/components/ScriptContainer.d.ts +2 -2
  117. package/dist/types/src/components/ScriptContainer.d.ts.map +1 -1
  118. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  119. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts +245 -10
  120. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -1
  121. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +1 -1
  122. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts +2 -2
  123. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts.map +1 -1
  124. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts +4 -2
  125. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  126. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts +11 -4
  127. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -1
  128. package/dist/types/src/components/index.d.ts +3 -4
  129. package/dist/types/src/components/index.d.ts.map +1 -1
  130. package/dist/types/src/events.d.ts.map +1 -1
  131. package/dist/types/src/hooks/deploy.d.ts +12 -11
  132. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  133. package/dist/types/src/hooks/template.d.ts.map +1 -1
  134. package/dist/types/src/index.d.ts +1 -0
  135. package/dist/types/src/index.d.ts.map +1 -1
  136. package/dist/types/src/meta.d.ts +0 -1
  137. package/dist/types/src/meta.d.ts.map +1 -1
  138. package/dist/types/src/notebook/eval.d.ts +13 -0
  139. package/dist/types/src/notebook/eval.d.ts.map +1 -0
  140. package/dist/types/src/notebook/index.d.ts +2 -0
  141. package/dist/types/src/notebook/index.d.ts.map +1 -0
  142. package/dist/types/src/notebook/notebook.d.ts +35 -0
  143. package/dist/types/src/notebook/notebook.d.ts.map +1 -0
  144. package/dist/types/src/notebook/notebook.test.d.ts +2 -0
  145. package/dist/types/src/notebook/notebook.test.d.ts.map +1 -0
  146. package/dist/types/src/notebook/vfs-parser.d.ts +74 -0
  147. package/dist/types/src/notebook/vfs-parser.d.ts.map +1 -0
  148. package/dist/types/src/notebook/vfs-parser.test.d.ts +2 -0
  149. package/dist/types/src/notebook/vfs-parser.test.d.ts.map +1 -0
  150. package/dist/types/src/templates/chess.d.ts.map +1 -1
  151. package/dist/types/src/templates/data-generator.d.ts.map +1 -1
  152. package/dist/types/src/templates/discord.d.ts.map +1 -1
  153. package/dist/types/src/templates/forex-effect.d.ts.map +1 -1
  154. package/dist/types/src/templates/forex.d.ts.map +1 -1
  155. package/dist/types/src/templates/gmail.d.ts.map +1 -1
  156. package/dist/types/src/templates/index.d.ts +43 -1
  157. package/dist/types/src/templates/index.d.ts.map +1 -1
  158. package/dist/types/src/templates/{echo.d.ts → ping.d.ts} +1 -1
  159. package/dist/types/src/templates/ping.d.ts.map +1 -0
  160. package/dist/types/src/testing/data.d.ts +19 -0
  161. package/dist/types/src/testing/data.d.ts.map +1 -0
  162. package/dist/types/src/testing/index.d.ts +2 -0
  163. package/dist/types/src/testing/index.d.ts.map +1 -0
  164. package/dist/types/src/translations.d.ts +28 -2
  165. package/dist/types/src/translations.d.ts.map +1 -1
  166. package/dist/types/src/types/actions.d.ts +66 -0
  167. package/dist/types/src/types/actions.d.ts.map +1 -0
  168. package/dist/types/src/types/index.d.ts +1 -0
  169. package/dist/types/src/types/index.d.ts.map +1 -1
  170. package/dist/types/src/types/schema.d.ts +54 -31
  171. package/dist/types/src/types/schema.d.ts.map +1 -1
  172. package/dist/types/src/util/deploy.d.ts +3 -3
  173. package/dist/types/src/util/deploy.d.ts.map +1 -1
  174. package/dist/types/src/util/functions.d.ts +5 -2
  175. package/dist/types/src/util/functions.d.ts.map +1 -1
  176. package/dist/types/tsconfig.tsbuildinfo +1 -1
  177. package/package.json +72 -68
  178. package/src/ScriptPlugin.tsx +99 -64
  179. package/src/capabilities/app-graph-builder.ts +4 -3
  180. package/src/capabilities/artifact-definition.ts +1 -1
  181. package/src/capabilities/blueprint-definition.ts +30 -0
  182. package/src/capabilities/index.ts +1 -0
  183. package/src/capabilities/intent-resolver.ts +14 -4
  184. package/src/capabilities/react-surface.tsx +17 -5
  185. package/src/capabilities/settings.ts +3 -3
  186. package/src/components/DeploymentDialog/DeploymentDialog.stories.tsx +34 -20
  187. package/src/components/DeploymentDialog/DeploymentDialog.tsx +12 -18
  188. package/src/components/FrameContainer/FrameContainer.tsx +3 -2
  189. package/src/components/NotebookContainer.stories.tsx +32 -0
  190. package/src/components/NotebookContainer.tsx +124 -0
  191. package/src/components/NotebookStack/NotebookCell.tsx +217 -0
  192. package/src/components/NotebookStack/NotebookMenu.tsx +47 -0
  193. package/src/components/NotebookStack/NotebookStack.stories.tsx +32 -0
  194. package/src/components/NotebookStack/NotebookStack.tsx +79 -0
  195. package/src/components/NotebookStack/index.ts +6 -0
  196. package/src/components/ScriptContainer.tsx +2 -2
  197. package/src/components/ScriptToolbar/ScriptToolbar.stories.tsx +34 -18
  198. package/src/components/ScriptToolbar/ScriptToolbar.tsx +29 -22
  199. package/src/components/Settings/ScriptObjectSettings.tsx +109 -29
  200. package/src/components/Settings/ScriptPluginSettings.tsx +37 -47
  201. package/src/components/TestPanel/TestPanel.tsx +6 -6
  202. package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +74 -27
  203. package/src/components/TypescriptEditor/TypescriptEditor.tsx +30 -24
  204. package/src/components/index.ts +3 -0
  205. package/src/events.ts +2 -2
  206. package/src/hooks/deploy.ts +17 -18
  207. package/src/hooks/format.ts +2 -2
  208. package/src/hooks/template.ts +4 -3
  209. package/src/hooks/useCreateAndDeployScriptTemplates.ts +3 -3
  210. package/src/index.ts +1 -0
  211. package/src/meta.ts +2 -4
  212. package/src/notebook/eval.ts +105 -0
  213. package/src/notebook/index.ts +5 -0
  214. package/src/notebook/notebook.test.ts +70 -0
  215. package/src/notebook/notebook.ts +183 -0
  216. package/src/notebook/vfs-parser.test.ts +149 -0
  217. package/src/notebook/vfs-parser.ts +451 -0
  218. package/src/templates/chess.ts +2 -0
  219. package/src/templates/data-generator.ts +2 -0
  220. package/src/templates/discord.ts +11 -3
  221. package/src/templates/forex-effect.ts +6 -2
  222. package/src/templates/forex.ts +2 -0
  223. package/src/templates/gmail.ts +31 -60
  224. package/src/templates/index.ts +6 -6
  225. package/src/testing/data.ts +47 -0
  226. package/src/testing/index.ts +5 -0
  227. package/src/translations.ts +31 -4
  228. package/src/types/actions.ts +53 -0
  229. package/src/types/index.ts +1 -0
  230. package/src/types/schema.ts +30 -19
  231. package/src/util/deploy.ts +20 -33
  232. package/src/util/functions.ts +35 -6
  233. package/dist/lib/browser/DeploymentDialog-C3XH2Z56.mjs +0 -12
  234. package/dist/lib/browser/ScriptContainer-FUBR4OZE.mjs +0 -263
  235. package/dist/lib/browser/ScriptContainer-FUBR4OZE.mjs.map +0 -7
  236. package/dist/lib/browser/app-graph-builder-IABOSTBK.mjs.map +0 -7
  237. package/dist/lib/browser/chunk-G4A2MGAL.mjs +0 -88
  238. package/dist/lib/browser/chunk-G4A2MGAL.mjs.map +0 -7
  239. package/dist/lib/browser/chunk-IS4OG2UW.mjs +0 -39
  240. package/dist/lib/browser/chunk-IS4OG2UW.mjs.map +0 -7
  241. package/dist/lib/browser/chunk-MWZDJNCQ.mjs.map +0 -7
  242. package/dist/lib/browser/chunk-OAVS36Q3.mjs.map +0 -7
  243. package/dist/lib/browser/chunk-OULPWKXN.mjs.map +0 -7
  244. package/dist/lib/browser/chunk-QYAREHGH.mjs.map +0 -7
  245. package/dist/lib/browser/chunk-SUOLJH55.mjs.map +0 -7
  246. package/dist/lib/browser/intent-resolver-SAL2TM7U.mjs.map +0 -7
  247. package/dist/lib/browser/react-surface-E3SXU6ON.mjs.map +0 -7
  248. package/dist/lib/browser/settings-KCTBK5TY.mjs.map +0 -7
  249. package/dist/lib/node-esm/ScriptContainer-VJ75TM24.mjs +0 -264
  250. package/dist/lib/node-esm/ScriptContainer-VJ75TM24.mjs.map +0 -7
  251. package/dist/lib/node-esm/app-graph-builder-CQTTAYHP.mjs.map +0 -7
  252. package/dist/lib/node-esm/chunk-3BBEM2U7.mjs +0 -90
  253. package/dist/lib/node-esm/chunk-3BBEM2U7.mjs.map +0 -7
  254. package/dist/lib/node-esm/chunk-6WMFL3JL.mjs.map +0 -7
  255. package/dist/lib/node-esm/chunk-7L4JDSXJ.mjs.map +0 -7
  256. package/dist/lib/node-esm/chunk-AHXJ6NQU.mjs.map +0 -7
  257. package/dist/lib/node-esm/chunk-IO6T72KY.mjs.map +0 -7
  258. package/dist/lib/node-esm/chunk-JIPFLBYA.mjs +0 -40
  259. package/dist/lib/node-esm/chunk-JIPFLBYA.mjs.map +0 -7
  260. package/dist/lib/node-esm/chunk-PACUN7RS.mjs.map +0 -7
  261. package/dist/lib/node-esm/intent-resolver-GO53JOPL.mjs.map +0 -7
  262. package/dist/lib/node-esm/react-surface-W3NRCS5O.mjs.map +0 -7
  263. package/dist/lib/node-esm/settings-DXZ334A3.mjs.map +0 -7
  264. package/dist/types/src/templates/echo.d.ts.map +0 -1
  265. /package/dist/lib/browser/{DeploymentDialog-C3XH2Z56.mjs.map → DeploymentDialog-65TWT6S5.mjs.map} +0 -0
  266. /package/dist/lib/browser/{chunk-5TVBECWH.mjs.map → chunk-OKXN2N7M.mjs.map} +0 -0
  267. /package/dist/lib/node-esm/{DeploymentDialog-O2XZVRLU.mjs.map → DeploymentDialog-I63ZC2HH.mjs.map} +0 -0
  268. /package/dist/lib/node-esm/{chunk-35M3CHYE.mjs.map → chunk-NUXZQQ6P.mjs.map} +0 -0
  269. /package/src/templates/{echo.ts → ping.ts} +0 -0
@@ -0,0 +1,684 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ NotebookMenu,
4
+ NotebookStack
5
+ } from "./chunk-67OVZHI3.mjs";
6
+ import "./chunk-VRSDE4CI.mjs";
7
+ import {
8
+ meta
9
+ } from "./chunk-OG2SIKHE.mjs";
10
+
11
+ // src/components/NotebookContainer.tsx
12
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
13
+ import React, { useCallback, useMemo } from "react";
14
+ import { Ref } from "@dxos/echo";
15
+ import { invariant as invariant2 } from "@dxos/invariant";
16
+ import { Assistant } from "@dxos/plugin-assistant";
17
+ import { getSpace } from "@dxos/react-client/echo";
18
+ import { DropdownMenu, IconButton, Toolbar, useTranslation } from "@dxos/react-ui";
19
+ import { StackItem } from "@dxos/react-ui-stack";
20
+ import { DataType } from "@dxos/schema";
21
+
22
+ // src/notebook/notebook.ts
23
+ import { signal } from "@preact/signals-core";
24
+ import { log } from "@dxos/log";
25
+
26
+ // src/notebook/eval.ts
27
+ import { trim } from "@dxos/util";
28
+ var evalScript = (code, deps = {}) => {
29
+ const sandbox = {
30
+ ...deps,
31
+ // Block access to global objects.
32
+ console: void 0,
33
+ document: void 0,
34
+ global: void 0,
35
+ globalThis: void 0,
36
+ self: void 0,
37
+ window: void 0,
38
+ // Allow some safe globals.
39
+ Array,
40
+ Boolean,
41
+ Date,
42
+ Error,
43
+ JSON,
44
+ Map,
45
+ Math,
46
+ Number,
47
+ Object,
48
+ Promise,
49
+ RegExp,
50
+ Set,
51
+ String,
52
+ // Functions.
53
+ isFinite,
54
+ isNaN,
55
+ parseFloat,
56
+ parseInt
57
+ };
58
+ const sandboxKeys = Object.keys(sandbox);
59
+ const sandboxValues = Object.values(sandbox);
60
+ const fn = new Function(...sandboxKeys, trim`
61
+ 'use strict';
62
+ return ${code};
63
+ `);
64
+ return fn(...sandboxValues);
65
+ };
66
+ var builtIns = /* @__PURE__ */ new Set([
67
+ // Types.
68
+ "Array",
69
+ "Date",
70
+ "Error",
71
+ "JSON",
72
+ "Map",
73
+ "Math",
74
+ "Number",
75
+ "Object",
76
+ "Promise",
77
+ "RegExp",
78
+ "Set",
79
+ "String",
80
+ // Functions.
81
+ "isFinite",
82
+ "isNaN",
83
+ "parseFloat",
84
+ "parseInt"
85
+ ]);
86
+ var systemDefinitions = trim`
87
+ interface Array<T> { length: number; [n: number]: T; }
88
+ interface Boolean {}
89
+ interface Function {}
90
+ interface IArguments {}
91
+ interface Number {}
92
+ interface Object {}
93
+ interface RegExp {}
94
+ interface String { length: number; }
95
+
96
+ interface CallableFunction extends Function {}
97
+ interface NewableFunction extends Function {}
98
+
99
+ declare var console: { log(...args: any[]): void };
100
+ `;
101
+
102
+ // src/notebook/vfs-parser.ts
103
+ import { createSystem, createVirtualTypeScriptEnvironment } from "@typescript/vfs";
104
+ import ts from "typescript";
105
+ import { invariant } from "@dxos/invariant";
106
+ function _define_property(obj, key, value) {
107
+ if (key in obj) {
108
+ Object.defineProperty(obj, key, {
109
+ value,
110
+ enumerable: true,
111
+ configurable: true,
112
+ writable: true
113
+ });
114
+ } else {
115
+ obj[key] = value;
116
+ }
117
+ return obj;
118
+ }
119
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-script/src/notebook/vfs-parser.ts";
120
+ var systemFiles = [
121
+ {
122
+ filename: "/lib.d.ts",
123
+ content: systemDefinitions
124
+ }
125
+ ];
126
+ var VirtualTypeScriptParser = class {
127
+ /**
128
+ * Parse a single expression or statement.
129
+ */
130
+ parseExpression(input) {
131
+ invariant(input.trim() !== "", "input must not be empty", {
132
+ F: __dxlog_file,
133
+ L: 57,
134
+ S: this,
135
+ A: [
136
+ "input.trim() !== ''",
137
+ "'input must not be empty'"
138
+ ]
139
+ });
140
+ const files = [
141
+ {
142
+ filename: "/temp.ts",
143
+ content: input
144
+ }
145
+ ];
146
+ const analysis = this.analyzeFiles(files);
147
+ if (analysis.length === 0) {
148
+ const sourcefilename = "/temp.ts";
149
+ const env = this.createEnvironment([
150
+ {
151
+ filename: sourcefilename,
152
+ content: input
153
+ }
154
+ ]);
155
+ const sourceFile = env.getSourceFile(sourcefilename);
156
+ const typeChecker = env.languageService.getProgram()?.getTypeChecker();
157
+ if (sourceFile && typeChecker) {
158
+ const assignmentInfo = this.findAssignmentExpression(sourceFile, typeChecker);
159
+ if (assignmentInfo) {
160
+ return assignmentInfo;
161
+ }
162
+ const references = this.findAllReferences(sourceFile, typeChecker);
163
+ return {
164
+ references
165
+ };
166
+ }
167
+ }
168
+ return analysis[0];
169
+ }
170
+ /**
171
+ * Analyze multiple files with full type information.
172
+ */
173
+ analyzeFiles(files) {
174
+ const env = this.createEnvironment(files);
175
+ const results = [];
176
+ const typeChecker = env.languageService.getProgram()?.getTypeChecker();
177
+ files.forEach((file) => {
178
+ const sourceFile = env.getSourceFile(file.filename);
179
+ if (!sourceFile || !typeChecker) return;
180
+ const fileResults = this.analyzeSourceFile(sourceFile, typeChecker);
181
+ results.push(...fileResults);
182
+ });
183
+ return results;
184
+ }
185
+ /**
186
+ * Analyze a source file with type information.
187
+ */
188
+ analyzeSourceFile(sourceFile, typeChecker) {
189
+ const results = [];
190
+ const visit = (node) => {
191
+ if (ts.isFunctionDeclaration(node) && node.name) {
192
+ const symbol = typeChecker.getSymbolAtLocation(node.name);
193
+ const type = symbol && typeChecker.getTypeOfSymbolAtLocation(symbol, node);
194
+ const signature = type && typeChecker.getSignaturesOfType(type, ts.SignatureKind.Call)[0];
195
+ results.push({
196
+ name: node.name.text,
197
+ type: "function",
198
+ parameters: this.extractParameters(signature, typeChecker),
199
+ returnType: signature ? typeChecker.typeToString(signature.getReturnType()) : "any",
200
+ references: this.findReferences(node, sourceFile, typeChecker)
201
+ });
202
+ } else if (ts.isVariableStatement(node)) {
203
+ node.declarationList.declarations.forEach((declaration) => {
204
+ if (ts.isIdentifier(declaration.name)) {
205
+ const symbol = typeChecker.getSymbolAtLocation(declaration.name);
206
+ const type = symbol && typeChecker.getTypeOfSymbolAtLocation(symbol, declaration);
207
+ let kind = "variable";
208
+ let parameters;
209
+ let returnType;
210
+ let value;
211
+ const typeString = type ? typeChecker.typeToString(type) : "any";
212
+ if (declaration.initializer) {
213
+ if (ts.isArrowFunction(declaration.initializer) || ts.isFunctionExpression(declaration.initializer)) {
214
+ kind = "function";
215
+ const funcType = typeChecker.getTypeAtLocation(declaration.initializer);
216
+ const signature = typeChecker.getSignaturesOfType(funcType, ts.SignatureKind.Call)[0];
217
+ if (signature) {
218
+ parameters = this.extractParameters(signature, typeChecker);
219
+ returnType = typeChecker.typeToString(signature.getReturnType());
220
+ }
221
+ } else {
222
+ if (ts.isNumericLiteral(declaration.initializer)) {
223
+ value = Number(declaration.initializer.text);
224
+ } else if (ts.isStringLiteral(declaration.initializer)) {
225
+ value = declaration.initializer.text;
226
+ }
227
+ }
228
+ }
229
+ const refs = declaration.initializer ? this.findReferences(declaration.initializer, sourceFile, typeChecker) : [];
230
+ results.push({
231
+ name: declaration.name.text,
232
+ type: kind,
233
+ valueType: typeString,
234
+ value,
235
+ parameters,
236
+ returnType,
237
+ references: refs
238
+ });
239
+ }
240
+ });
241
+ } else if (ts.isClassDeclaration(node) && node.name) {
242
+ results.push({
243
+ name: node.name.text,
244
+ type: "class",
245
+ references: this.findReferences(node, sourceFile, typeChecker)
246
+ });
247
+ } else if (ts.isInterfaceDeclaration(node)) {
248
+ results.push({
249
+ name: node.name.text,
250
+ type: "interface",
251
+ references: this.findReferences(node, sourceFile, typeChecker)
252
+ });
253
+ }
254
+ ts.forEachChild(node, visit);
255
+ };
256
+ visit(sourceFile);
257
+ return results;
258
+ }
259
+ /**
260
+ * Extract parameter information from a signature.
261
+ */
262
+ extractParameters(signature, typeChecker) {
263
+ if (!signature) return [];
264
+ return signature.parameters.map((param) => ({
265
+ name: param.getName(),
266
+ type: typeChecker.typeToString(typeChecker.getTypeOfSymbolAtLocation(param, param.valueDeclaration))
267
+ }));
268
+ }
269
+ /**
270
+ * Find all references to variables used in a node.
271
+ */
272
+ findReferences(node, _sourceFile, _typeChecker) {
273
+ const references = /* @__PURE__ */ new Set();
274
+ const localSymbols = /* @__PURE__ */ new Set();
275
+ const collectLocalSymbols = (node2) => {
276
+ if (ts.isFunctionDeclaration(node2) || ts.isArrowFunction(node2) || ts.isFunctionExpression(node2)) {
277
+ node2.parameters.forEach((param) => {
278
+ if (ts.isIdentifier(param.name)) {
279
+ localSymbols.add(param.name.text);
280
+ }
281
+ });
282
+ }
283
+ if (ts.isVariableDeclaration(node2) && ts.isIdentifier(node2.name)) {
284
+ localSymbols.add(node2.name.text);
285
+ }
286
+ ts.forEachChild(node2, collectLocalSymbols);
287
+ };
288
+ collectLocalSymbols(node);
289
+ const findRefs = (node2) => {
290
+ if (ts.isIdentifier(node2)) {
291
+ if (!localSymbols.has(node2.text)) {
292
+ const parent = node2.parent;
293
+ const isDeclaration = ts.isVariableDeclaration(parent) && parent.name === node2 || ts.isFunctionDeclaration(parent) && parent.name === node2 || ts.isParameter(parent) && parent.name === node2;
294
+ if (!isDeclaration && !this.isBuiltIn(node2.text)) {
295
+ references.add(node2.text);
296
+ }
297
+ }
298
+ }
299
+ ts.forEachChild(node2, findRefs);
300
+ };
301
+ findRefs(node);
302
+ return Array.from(references);
303
+ }
304
+ /**
305
+ * Check if a name is a built-in global.
306
+ */
307
+ isBuiltIn(name) {
308
+ return builtIns.has(name);
309
+ }
310
+ /**
311
+ * Find assignment expressions in a source file.
312
+ */
313
+ findAssignmentExpression(sourceFile, typeChecker) {
314
+ let result = null;
315
+ const visit = (node) => {
316
+ if (ts.isExpressionStatement(node) && ts.isBinaryExpression(node.expression)) {
317
+ const expr = node.expression;
318
+ if (expr.operatorToken.kind === ts.SyntaxKind.EqualsToken && ts.isIdentifier(expr.left)) {
319
+ const type = typeChecker.getTypeAtLocation(expr.right);
320
+ const typeString = typeChecker.typeToString(type);
321
+ let value;
322
+ if (ts.isNumericLiteral(expr.right)) {
323
+ value = Number(expr.right.text);
324
+ } else if (ts.isStringLiteral(expr.right)) {
325
+ value = expr.right.text;
326
+ }
327
+ const references = this.findReferences(expr.right, sourceFile, typeChecker);
328
+ result = {
329
+ name: expr.left.text,
330
+ type: "variable",
331
+ valueType: typeString,
332
+ value,
333
+ references
334
+ };
335
+ }
336
+ }
337
+ if (!result) {
338
+ ts.forEachChild(node, visit);
339
+ }
340
+ };
341
+ visit(sourceFile);
342
+ return result;
343
+ }
344
+ /**
345
+ * Find all identifier references in a source file.
346
+ */
347
+ findAllReferences(sourceFile, _typeChecker) {
348
+ const references = /* @__PURE__ */ new Set();
349
+ const visit = (node) => {
350
+ if (ts.isIdentifier(node)) {
351
+ const parent = node.parent;
352
+ const isDeclaration = ts.isVariableDeclaration(parent) && parent.name === node || ts.isFunctionDeclaration(parent) && parent.name === node || ts.isParameter(parent) && parent.name === node;
353
+ const isAssignmentTarget = ts.isBinaryExpression(parent) && parent.operatorToken.kind === ts.SyntaxKind.EqualsToken && parent.left === node;
354
+ if (!isDeclaration && !isAssignmentTarget && !this.isBuiltIn(node.text)) {
355
+ references.add(node.text);
356
+ }
357
+ }
358
+ ts.forEachChild(node, visit);
359
+ };
360
+ visit(sourceFile);
361
+ return Array.from(references);
362
+ }
363
+ createEnvironment(files) {
364
+ const allFiles = [
365
+ ...systemFiles,
366
+ ...files
367
+ ];
368
+ const fileMap = /* @__PURE__ */ new Map();
369
+ allFiles.forEach(({ filename, content }) => {
370
+ fileMap.set(filename, content);
371
+ });
372
+ const system = createSystem(fileMap);
373
+ return createVirtualTypeScriptEnvironment(system, allFiles.map(({ filename }) => filename), ts, this.compilerOptions);
374
+ }
375
+ constructor() {
376
+ _define_property(this, "compilerOptions", {
377
+ target: ts.ScriptTarget.ES2020,
378
+ module: ts.ModuleKind.ESNext,
379
+ strict: true,
380
+ esModuleInterop: true,
381
+ skipLibCheck: true,
382
+ forceConsistentCasingInfilenames: true,
383
+ jsx: ts.JsxEmit.React,
384
+ noLib: true
385
+ });
386
+ }
387
+ };
388
+
389
+ // src/notebook/notebook.ts
390
+ function _define_property2(obj, key, value) {
391
+ if (key in obj) {
392
+ Object.defineProperty(obj, key, {
393
+ value,
394
+ enumerable: true,
395
+ configurable: true,
396
+ writable: true
397
+ });
398
+ } else {
399
+ obj[key] = value;
400
+ }
401
+ return obj;
402
+ }
403
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-script/src/notebook/notebook.ts";
404
+ var ComputeGraph = class {
405
+ /**
406
+ * Parsed expressions by cell ID.
407
+ */
408
+ get expressions() {
409
+ return this._expressions;
410
+ }
411
+ /**
412
+ * Computed values by cell ID.
413
+ */
414
+ get values() {
415
+ return this._values;
416
+ }
417
+ /**
418
+ * Compute values.
419
+ */
420
+ evaluate() {
421
+ const { expressions, dependencyGraph } = this.parse();
422
+ this._values.value = {};
423
+ const cellExpressions = /* @__PURE__ */ new Map();
424
+ Object.entries(expressions).forEach(([id, expr]) => {
425
+ cellExpressions.set(id, expr);
426
+ });
427
+ const evaluationOrder = this.topologicalSort(Object.keys(expressions), dependencyGraph);
428
+ const valuesByName = {};
429
+ const valuesByCellId = {};
430
+ for (const cellId of evaluationOrder) {
431
+ const expr = cellExpressions.get(cellId);
432
+ if (!expr) {
433
+ log.error("no expression for cell", {
434
+ cellId
435
+ }, {
436
+ F: __dxlog_file2,
437
+ L: 64,
438
+ S: this,
439
+ C: (f, a) => f(...a)
440
+ });
441
+ continue;
442
+ }
443
+ const cellSource = this._notebook.cells.find((cell) => cell.id === cellId)?.script?.target?.content;
444
+ if (!cellSource) {
445
+ log.error("no source for cell", {
446
+ cellId
447
+ }, {
448
+ F: __dxlog_file2,
449
+ L: 70,
450
+ S: this,
451
+ C: (f, a) => f(...a)
452
+ });
453
+ continue;
454
+ }
455
+ try {
456
+ if (expr.name && expr.value !== void 0) {
457
+ valuesByName[expr.name] = expr.value;
458
+ valuesByCellId[cellId] = expr.value;
459
+ } else if (expr.name) {
460
+ const equalIndex = cellSource.indexOf("=");
461
+ if (equalIndex !== -1) {
462
+ let rhs = cellSource.substring(equalIndex + 1).trim();
463
+ if (rhs.endsWith(";")) {
464
+ rhs = rhs.slice(0, -1).trim();
465
+ }
466
+ const result = evalScript(rhs, valuesByName);
467
+ valuesByName[expr.name] = result;
468
+ if (typeof result !== "function") {
469
+ valuesByCellId[cellId] = result;
470
+ }
471
+ }
472
+ } else {
473
+ const result = evalScript(cellSource, valuesByName);
474
+ valuesByCellId[cellId] = result;
475
+ }
476
+ } catch (error) {
477
+ log.error("error evaluating cell", {
478
+ cellId,
479
+ error
480
+ }, {
481
+ F: __dxlog_file2,
482
+ L: 105,
483
+ S: this,
484
+ C: (f, a) => f(...a)
485
+ });
486
+ }
487
+ }
488
+ this._values.value = valuesByCellId;
489
+ return valuesByCellId;
490
+ }
491
+ /**
492
+ * Parse expressions.
493
+ */
494
+ parse() {
495
+ const expressions = this._notebook.cells.filter((cell) => cell.type === "script").reduce((acc, cell) => {
496
+ const text = cell.script?.target?.content.trim();
497
+ if (text) {
498
+ const parsed = this._parser.parseExpression(text);
499
+ acc[cell.id] = parsed;
500
+ }
501
+ return acc;
502
+ }, {});
503
+ const dependencyGraph = this.buildDependencyGraph(expressions);
504
+ this._expressions.value = expressions;
505
+ return {
506
+ expressions,
507
+ dependencyGraph
508
+ };
509
+ }
510
+ topologicalSort(nodes, dependencies) {
511
+ const visited = /* @__PURE__ */ new Set();
512
+ const result = [];
513
+ const visit = (node) => {
514
+ if (visited.has(node)) {
515
+ return;
516
+ }
517
+ visited.add(node);
518
+ const deps = dependencies[node] || [];
519
+ deps.forEach((dep) => visit(dep));
520
+ result.push(node);
521
+ };
522
+ nodes.forEach((node) => visit(node));
523
+ return result;
524
+ }
525
+ buildDependencyGraph(expressions) {
526
+ const nameToCellId = /* @__PURE__ */ new Map();
527
+ Object.entries(expressions).forEach(([id, expr]) => {
528
+ if (expr.name) {
529
+ nameToCellId.set(expr.name, id);
530
+ }
531
+ });
532
+ const graph = {};
533
+ Object.entries(expressions).forEach(([id, expr]) => {
534
+ if (expr.references && expr.references.length > 0) {
535
+ const dependencyCellIds = expr.references.map((ref) => nameToCellId.get(ref)).filter((cellId) => cellId !== void 0 && cellId !== id);
536
+ if (dependencyCellIds.length > 0) {
537
+ graph[id] = dependencyCellIds;
538
+ }
539
+ }
540
+ });
541
+ return graph;
542
+ }
543
+ constructor(_notebook) {
544
+ _define_property2(this, "_notebook", void 0);
545
+ _define_property2(this, "_parser", void 0);
546
+ _define_property2(this, "_expressions", void 0);
547
+ _define_property2(this, "_values", void 0);
548
+ this._notebook = _notebook;
549
+ this._parser = new VirtualTypeScriptParser();
550
+ this._expressions = signal({});
551
+ this._values = signal({});
552
+ }
553
+ };
554
+
555
+ // src/components/NotebookContainer.tsx
556
+ var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-script/src/components/NotebookContainer.tsx";
557
+ var NotebookContainer = ({ notebook, env }) => {
558
+ var _effect = _useSignals();
559
+ try {
560
+ const { t } = useTranslation(meta.id);
561
+ const space = getSpace(notebook);
562
+ const graph = useMemo(() => notebook && new ComputeGraph(notebook), [
563
+ notebook
564
+ ]);
565
+ const handleCompute = useCallback(() => {
566
+ graph?.evaluate();
567
+ }, [
568
+ graph
569
+ ]);
570
+ const handleRearrange = useCallback((source, target) => {
571
+ invariant2(notebook, void 0, {
572
+ F: __dxlog_file3,
573
+ L: 41,
574
+ S: void 0,
575
+ A: [
576
+ "notebook",
577
+ ""
578
+ ]
579
+ });
580
+ const from = notebook.cells.findIndex((cell) => cell.id === source.id);
581
+ const to = notebook.cells.findIndex((cell) => cell.id === target.id);
582
+ if (from != null && to != null) {
583
+ const cell = notebook.cells.splice(from, 1)[0];
584
+ if (cell) {
585
+ notebook.cells.splice(to, 0, cell);
586
+ }
587
+ }
588
+ }, [
589
+ notebook
590
+ ]);
591
+ const handleCellInsert = useCallback((type, after) => {
592
+ invariant2(notebook, void 0, {
593
+ F: __dxlog_file3,
594
+ L: 56,
595
+ S: void 0,
596
+ A: [
597
+ "notebook",
598
+ ""
599
+ ]
600
+ });
601
+ const cell = {
602
+ id: crypto.randomUUID(),
603
+ type
604
+ };
605
+ switch (type) {
606
+ case "markdown":
607
+ case "script":
608
+ case "query": {
609
+ cell.script = Ref.make(DataType.makeText());
610
+ break;
611
+ }
612
+ case "prompt": {
613
+ if (space) {
614
+ cell.chat = Ref.make(Assistant.makeChat({
615
+ queue: space.queues.create()
616
+ }));
617
+ }
618
+ break;
619
+ }
620
+ }
621
+ const idx = after ? notebook.cells.findIndex((cell2) => cell2.id === after) : notebook.cells.length;
622
+ notebook.cells.splice(idx, 0, cell);
623
+ }, [
624
+ space,
625
+ notebook
626
+ ]);
627
+ const handleCellDelete = useCallback((id) => {
628
+ invariant2(notebook, void 0, {
629
+ F: __dxlog_file3,
630
+ L: 82,
631
+ S: void 0,
632
+ A: [
633
+ "notebook",
634
+ ""
635
+ ]
636
+ });
637
+ const idx = notebook.cells.findIndex((cell) => cell.id === id);
638
+ if (idx !== -1) {
639
+ notebook.cells.splice(idx, 1);
640
+ }
641
+ }, [
642
+ notebook
643
+ ]);
644
+ return /* @__PURE__ */ React.createElement(StackItem.Content, {
645
+ toolbar: true
646
+ }, /* @__PURE__ */ React.createElement(Toolbar.Root, {
647
+ textBlockWidth: true
648
+ }, /* @__PURE__ */ React.createElement(DropdownMenu.Root, null, /* @__PURE__ */ React.createElement(DropdownMenu.Trigger, {
649
+ asChild: true
650
+ }, /* @__PURE__ */ React.createElement(IconButton, {
651
+ icon: "ph--plus--regular",
652
+ iconOnly: true,
653
+ label: t("notebook cell insert label")
654
+ })), /* @__PURE__ */ React.createElement(NotebookMenu, {
655
+ onCellInsert: handleCellInsert
656
+ })), /* @__PURE__ */ React.createElement(Toolbar.IconButton, {
657
+ icon: "ph--play--fill",
658
+ iconOnly: true,
659
+ label: t("compute label"),
660
+ classNames: "text-green-500",
661
+ onClick: handleCompute
662
+ })), /* @__PURE__ */ React.createElement("div", {
663
+ role: "none",
664
+ className: "flex bs-full overflow-hidden -mis-[1px] -mie-[1px]"
665
+ }, /* @__PURE__ */ React.createElement(NotebookStack, {
666
+ classNames: "container-max-width border-l border-r border-subduedSeparator",
667
+ space,
668
+ notebook,
669
+ graph,
670
+ env,
671
+ onRearrange: handleRearrange,
672
+ onCellInsert: handleCellInsert,
673
+ onCellDelete: handleCellDelete
674
+ })));
675
+ } finally {
676
+ _effect.f();
677
+ }
678
+ };
679
+ var NotebookContainer_default = NotebookContainer;
680
+ export {
681
+ NotebookContainer,
682
+ NotebookContainer_default as default
683
+ };
684
+ //# sourceMappingURL=NotebookContainer-QY5NJGJI.mjs.map