@dxos/plugin-script 0.8.4-main.dedc0f3 → 0.8.4-main.ead640a

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 (253) 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-AR7ITBCD.mjs → blueprint-definition-ET5KZ46I.mjs} +3 -3
  9. package/dist/lib/browser/{blueprint-definition-AR7ITBCD.mjs.map → blueprint-definition-ET5KZ46I.mjs.map} +1 -1
  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-6CAH7VIE.mjs → chunk-E7DXDICD.mjs} +18 -19
  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-GZKWMME3.mjs → chunk-I3QSGUFJ.mjs} +122 -32
  19. package/dist/lib/browser/chunk-I3QSGUFJ.mjs.map +7 -0
  20. package/dist/lib/browser/{chunk-NXKU3BNX.mjs → chunk-JO2O7W6J.mjs} +39 -7
  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-YCZPTTFO.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-2HJH34GM.mjs → compiler-G2N2CG63.mjs} +5 -5
  30. package/dist/lib/browser/{compiler-2HJH34GM.mjs.map → compiler-G2N2CG63.mjs.map} +1 -1
  31. package/dist/lib/browser/index.mjs +107 -36
  32. package/dist/lib/browser/index.mjs.map +3 -3
  33. package/dist/lib/browser/{intent-resolver-F4YSRPJI.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-BBHFU6MI.mjs → react-surface-76SDTUYG.mjs} +36 -13
  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-G6EHEPXN.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-TJY4TX6S.mjs → blueprint-definition-AIYFOT7Q.mjs} +3 -3
  50. package/dist/lib/node-esm/{blueprint-definition-TJY4TX6S.mjs.map → blueprint-definition-AIYFOT7Q.mjs.map} +1 -1
  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-ZA36GO4T.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-HUHVIOL5.mjs → chunk-SMFPSKQT.mjs} +122 -32
  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-2GBESIHU.mjs → chunk-VZAFGLD7.mjs} +18 -19
  67. package/dist/lib/node-esm/chunk-VZAFGLD7.mjs.map +7 -0
  68. package/dist/lib/node-esm/{chunk-M642JUOZ.mjs → chunk-YW36TZ7K.mjs} +39 -7
  69. package/dist/lib/node-esm/chunk-YW36TZ7K.mjs.map +7 -0
  70. package/dist/lib/node-esm/{compiler-7SP27RA6.mjs → compiler-PLDAZ5GJ.mjs} +5 -5
  71. package/dist/lib/node-esm/{compiler-7SP27RA6.mjs.map → compiler-PLDAZ5GJ.mjs.map} +1 -1
  72. package/dist/lib/node-esm/index.mjs +107 -36
  73. package/dist/lib/node-esm/index.mjs.map +3 -3
  74. package/dist/lib/node-esm/{intent-resolver-CGQYRWWD.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-UWIWPKZD.mjs → react-surface-SHEBNW4R.mjs} +36 -13
  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.map +1 -1
  86. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  87. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  88. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts +1 -1
  89. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +1 -1
  90. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts +111 -5
  91. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -1
  92. package/dist/types/src/components/NotebookContainer.d.ts +10 -0
  93. package/dist/types/src/components/NotebookContainer.d.ts.map +1 -0
  94. package/dist/types/src/components/NotebookContainer.stories.d.ts +248 -0
  95. package/dist/types/src/components/NotebookContainer.stories.d.ts.map +1 -0
  96. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts +14 -0
  97. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts.map +1 -0
  98. package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts +9 -0
  99. package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts.map +1 -0
  100. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts +14 -0
  101. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts.map +1 -0
  102. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts +248 -0
  103. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts.map +1 -0
  104. package/dist/types/src/components/NotebookStack/index.d.ts +3 -0
  105. package/dist/types/src/components/NotebookStack/index.d.ts.map +1 -0
  106. package/dist/types/src/components/ScriptContainer.d.ts +2 -2
  107. package/dist/types/src/components/ScriptContainer.d.ts.map +1 -1
  108. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  109. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts +239 -1
  110. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -1
  111. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +1 -1
  112. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts +2 -2
  113. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts.map +1 -1
  114. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts +4 -2
  115. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  116. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts +3 -3
  117. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -1
  118. package/dist/types/src/components/index.d.ts +2 -0
  119. package/dist/types/src/components/index.d.ts.map +1 -1
  120. package/dist/types/src/events.d.ts.map +1 -1
  121. package/dist/types/src/hooks/deploy.d.ts +6 -6
  122. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  123. package/dist/types/src/hooks/template.d.ts.map +1 -1
  124. package/dist/types/src/index.d.ts +1 -0
  125. package/dist/types/src/index.d.ts.map +1 -1
  126. package/dist/types/src/meta.d.ts +0 -1
  127. package/dist/types/src/meta.d.ts.map +1 -1
  128. package/dist/types/src/notebook/eval.d.ts +13 -0
  129. package/dist/types/src/notebook/eval.d.ts.map +1 -0
  130. package/dist/types/src/notebook/index.d.ts +2 -0
  131. package/dist/types/src/notebook/index.d.ts.map +1 -0
  132. package/dist/types/src/notebook/notebook.d.ts +35 -0
  133. package/dist/types/src/notebook/notebook.d.ts.map +1 -0
  134. package/dist/types/src/notebook/notebook.test.d.ts +2 -0
  135. package/dist/types/src/notebook/notebook.test.d.ts.map +1 -0
  136. package/dist/types/src/notebook/vfs-parser.d.ts +74 -0
  137. package/dist/types/src/notebook/vfs-parser.d.ts.map +1 -0
  138. package/dist/types/src/notebook/vfs-parser.test.d.ts +2 -0
  139. package/dist/types/src/notebook/vfs-parser.test.d.ts.map +1 -0
  140. package/dist/types/src/templates/chess.d.ts.map +1 -1
  141. package/dist/types/src/templates/data-generator.d.ts.map +1 -1
  142. package/dist/types/src/templates/discord.d.ts.map +1 -1
  143. package/dist/types/src/templates/forex-effect.d.ts.map +1 -1
  144. package/dist/types/src/templates/forex.d.ts.map +1 -1
  145. package/dist/types/src/templates/gmail.d.ts.map +1 -1
  146. package/dist/types/src/templates/index.d.ts +43 -1
  147. package/dist/types/src/templates/index.d.ts.map +1 -1
  148. package/dist/types/src/templates/{echo.d.ts → ping.d.ts} +1 -1
  149. package/dist/types/src/templates/ping.d.ts.map +1 -0
  150. package/dist/types/src/testing/data.d.ts +19 -0
  151. package/dist/types/src/testing/data.d.ts.map +1 -0
  152. package/dist/types/src/testing/index.d.ts +2 -0
  153. package/dist/types/src/testing/index.d.ts.map +1 -0
  154. package/dist/types/src/translations.d.ts +27 -2
  155. package/dist/types/src/translations.d.ts.map +1 -1
  156. package/dist/types/src/types/actions.d.ts +66 -0
  157. package/dist/types/src/types/actions.d.ts.map +1 -0
  158. package/dist/types/src/types/index.d.ts +1 -0
  159. package/dist/types/src/types/index.d.ts.map +1 -1
  160. package/dist/types/src/types/schema.d.ts +54 -31
  161. package/dist/types/src/types/schema.d.ts.map +1 -1
  162. package/dist/types/src/util/functions.d.ts +5 -2
  163. package/dist/types/src/util/functions.d.ts.map +1 -1
  164. package/dist/types/tsconfig.tsbuildinfo +1 -1
  165. package/package.json +67 -63
  166. package/src/ScriptPlugin.tsx +93 -68
  167. package/src/capabilities/app-graph-builder.ts +4 -3
  168. package/src/capabilities/artifact-definition.ts +1 -1
  169. package/src/capabilities/intent-resolver.ts +14 -4
  170. package/src/capabilities/react-surface.tsx +17 -5
  171. package/src/capabilities/settings.ts +3 -3
  172. package/src/components/DeploymentDialog/DeploymentDialog.stories.tsx +6 -4
  173. package/src/components/DeploymentDialog/DeploymentDialog.tsx +11 -17
  174. package/src/components/NotebookContainer.stories.tsx +32 -0
  175. package/src/components/NotebookContainer.tsx +124 -0
  176. package/src/components/NotebookStack/NotebookCell.tsx +217 -0
  177. package/src/components/NotebookStack/NotebookMenu.tsx +47 -0
  178. package/src/components/NotebookStack/NotebookStack.stories.tsx +32 -0
  179. package/src/components/NotebookStack/NotebookStack.tsx +79 -0
  180. package/src/components/NotebookStack/index.ts +6 -0
  181. package/src/components/ScriptContainer.tsx +2 -2
  182. package/src/components/ScriptToolbar/ScriptToolbar.stories.tsx +17 -5
  183. package/src/components/ScriptToolbar/ScriptToolbar.tsx +21 -24
  184. package/src/components/Settings/ScriptObjectSettings.tsx +92 -8
  185. package/src/components/Settings/ScriptPluginSettings.tsx +4 -19
  186. package/src/components/TestPanel/TestPanel.tsx +5 -5
  187. package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +71 -16
  188. package/src/components/TypescriptEditor/TypescriptEditor.tsx +29 -24
  189. package/src/components/index.ts +3 -0
  190. package/src/events.ts +2 -2
  191. package/src/hooks/deploy.ts +8 -9
  192. package/src/hooks/format.ts +2 -2
  193. package/src/hooks/template.ts +4 -3
  194. package/src/hooks/useCreateAndDeployScriptTemplates.ts +3 -3
  195. package/src/index.ts +1 -0
  196. package/src/meta.ts +2 -4
  197. package/src/notebook/eval.ts +105 -0
  198. package/src/notebook/index.ts +5 -0
  199. package/src/notebook/notebook.test.ts +70 -0
  200. package/src/notebook/notebook.ts +183 -0
  201. package/src/notebook/vfs-parser.test.ts +149 -0
  202. package/src/notebook/vfs-parser.ts +451 -0
  203. package/src/templates/chess.ts +2 -0
  204. package/src/templates/data-generator.ts +2 -0
  205. package/src/templates/discord.ts +9 -1
  206. package/src/templates/forex-effect.ts +5 -1
  207. package/src/templates/forex.ts +2 -0
  208. package/src/templates/gmail.ts +21 -9
  209. package/src/templates/index.ts +6 -6
  210. package/src/testing/data.ts +47 -0
  211. package/src/testing/index.ts +5 -0
  212. package/src/translations.ts +30 -4
  213. package/src/types/actions.ts +53 -0
  214. package/src/types/index.ts +1 -0
  215. package/src/types/schema.ts +30 -19
  216. package/src/util/functions.ts +32 -3
  217. package/dist/lib/browser/DeploymentDialog-QZSTVNIS.mjs +0 -12
  218. package/dist/lib/browser/ScriptContainer-DNNA6XC6.mjs +0 -265
  219. package/dist/lib/browser/ScriptContainer-DNNA6XC6.mjs.map +0 -7
  220. package/dist/lib/browser/app-graph-builder-IABOSTBK.mjs.map +0 -7
  221. package/dist/lib/browser/chunk-6CAH7VIE.mjs.map +0 -7
  222. package/dist/lib/browser/chunk-GZKWMME3.mjs.map +0 -7
  223. package/dist/lib/browser/chunk-IS4OG2UW.mjs +0 -39
  224. package/dist/lib/browser/chunk-IS4OG2UW.mjs.map +0 -7
  225. package/dist/lib/browser/chunk-NXKU3BNX.mjs.map +0 -7
  226. package/dist/lib/browser/chunk-QYAREHGH.mjs.map +0 -7
  227. package/dist/lib/browser/chunk-RNGIQIEJ.mjs +0 -88
  228. package/dist/lib/browser/chunk-RNGIQIEJ.mjs.map +0 -7
  229. package/dist/lib/browser/chunk-YCZPTTFO.mjs.map +0 -7
  230. package/dist/lib/browser/intent-resolver-F4YSRPJI.mjs.map +0 -7
  231. package/dist/lib/browser/react-surface-BBHFU6MI.mjs.map +0 -7
  232. package/dist/lib/browser/settings-KCTBK5TY.mjs.map +0 -7
  233. package/dist/lib/node-esm/ScriptContainer-KPYZN2KY.mjs +0 -266
  234. package/dist/lib/node-esm/ScriptContainer-KPYZN2KY.mjs.map +0 -7
  235. package/dist/lib/node-esm/app-graph-builder-CQTTAYHP.mjs.map +0 -7
  236. package/dist/lib/node-esm/chunk-2GBESIHU.mjs.map +0 -7
  237. package/dist/lib/node-esm/chunk-AHXJ6NQU.mjs.map +0 -7
  238. package/dist/lib/node-esm/chunk-GWHLP5LM.mjs +0 -90
  239. package/dist/lib/node-esm/chunk-GWHLP5LM.mjs.map +0 -7
  240. package/dist/lib/node-esm/chunk-HUHVIOL5.mjs.map +0 -7
  241. package/dist/lib/node-esm/chunk-JIPFLBYA.mjs +0 -40
  242. package/dist/lib/node-esm/chunk-JIPFLBYA.mjs.map +0 -7
  243. package/dist/lib/node-esm/chunk-M642JUOZ.mjs.map +0 -7
  244. package/dist/lib/node-esm/chunk-ZA36GO4T.mjs.map +0 -7
  245. package/dist/lib/node-esm/intent-resolver-CGQYRWWD.mjs.map +0 -7
  246. package/dist/lib/node-esm/react-surface-UWIWPKZD.mjs.map +0 -7
  247. package/dist/lib/node-esm/settings-DXZ334A3.mjs.map +0 -7
  248. package/dist/types/src/templates/echo.d.ts.map +0 -1
  249. /package/dist/lib/browser/{DeploymentDialog-QZSTVNIS.mjs.map → DeploymentDialog-65TWT6S5.mjs.map} +0 -0
  250. /package/dist/lib/browser/{chunk-5TVBECWH.mjs.map → chunk-OKXN2N7M.mjs.map} +0 -0
  251. /package/dist/lib/node-esm/{DeploymentDialog-G6EHEPXN.mjs.map → DeploymentDialog-I63ZC2HH.mjs.map} +0 -0
  252. /package/dist/lib/node-esm/{chunk-35M3CHYE.mjs.map → chunk-NUXZQQ6P.mjs.map} +0 -0
  253. /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