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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (426) hide show
  1. package/dist/lib/browser/DeploymentDialog-XUAFCNI7.mjs +14 -0
  2. package/dist/lib/browser/NotebookContainer-UQ4I24R6.mjs +845 -0
  3. package/dist/lib/browser/NotebookContainer-UQ4I24R6.mjs.map +7 -0
  4. package/dist/lib/browser/ScriptContainer-NB76645V.mjs +149 -0
  5. package/dist/lib/browser/ScriptContainer-NB76645V.mjs.map +7 -0
  6. package/dist/lib/browser/app-graph-builder-66ZDI72K.mjs +69 -0
  7. package/dist/lib/browser/app-graph-builder-66ZDI72K.mjs.map +7 -0
  8. package/dist/lib/browser/blueprint-definition-5RFKE7VK.mjs +18 -0
  9. package/dist/lib/browser/blueprint-definition-5RFKE7VK.mjs.map +7 -0
  10. package/dist/lib/browser/blueprints/index.mjs +8 -0
  11. package/dist/lib/browser/chunk-3BSF5BIA.mjs +113 -0
  12. package/dist/lib/browser/chunk-3BSF5BIA.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-4N5TLXEJ.mjs +105 -0
  14. package/dist/lib/browser/chunk-4N5TLXEJ.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-BKGEAUUH.mjs +270 -0
  16. package/dist/lib/browser/chunk-BKGEAUUH.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-BU6CGVU2.mjs +137 -0
  18. package/dist/lib/browser/chunk-BU6CGVU2.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-F3QKSKSF.mjs +35 -0
  20. package/dist/lib/browser/chunk-F3QKSKSF.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-I7CSE6T3.mjs +110 -0
  22. package/dist/lib/browser/chunk-I7CSE6T3.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  24. package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-LYMPME7J.mjs +609 -0
  26. package/dist/lib/browser/chunk-LYMPME7J.mjs.map +7 -0
  27. package/dist/lib/browser/chunk-WWCDIB6Z.mjs +557 -0
  28. package/dist/lib/browser/chunk-WWCDIB6Z.mjs.map +7 -0
  29. package/dist/lib/browser/{chunk-QYAREHGH.mjs → chunk-WYR4QHPE.mjs} +8 -5
  30. package/dist/lib/browser/chunk-WYR4QHPE.mjs.map +7 -0
  31. package/dist/lib/browser/compiler-VPUVTFQD.mjs +161 -0
  32. package/dist/lib/browser/compiler-VPUVTFQD.mjs.map +7 -0
  33. package/dist/lib/browser/index.mjs +139 -103
  34. package/dist/lib/browser/index.mjs.map +4 -4
  35. package/dist/lib/browser/meta.json +1 -1
  36. package/dist/lib/browser/operation-resolver-NYDY7GDT.mjs +83 -0
  37. package/dist/lib/browser/operation-resolver-NYDY7GDT.mjs.map +7 -0
  38. package/dist/lib/browser/react-surface-FYOQSC6S.mjs +140 -0
  39. package/dist/lib/browser/react-surface-FYOQSC6S.mjs.map +7 -0
  40. package/dist/lib/browser/settings-5SF77MRH.mjs +36 -0
  41. package/dist/lib/browser/settings-5SF77MRH.mjs.map +7 -0
  42. package/dist/lib/browser/templates/index.mjs +2 -1
  43. package/dist/lib/browser/types/index.mjs +14 -6
  44. package/dist/lib/node-esm/DeploymentDialog-GGWDQMEB.mjs +15 -0
  45. package/dist/lib/node-esm/DeploymentDialog-GGWDQMEB.mjs.map +7 -0
  46. package/dist/lib/node-esm/NotebookContainer-DQGZ6QHI.mjs +846 -0
  47. package/dist/lib/node-esm/NotebookContainer-DQGZ6QHI.mjs.map +7 -0
  48. package/dist/lib/node-esm/ScriptContainer-PCNJFUWX.mjs +150 -0
  49. package/dist/lib/node-esm/ScriptContainer-PCNJFUWX.mjs.map +7 -0
  50. package/dist/lib/node-esm/app-graph-builder-IGAZTJ45.mjs +70 -0
  51. package/dist/lib/node-esm/app-graph-builder-IGAZTJ45.mjs.map +7 -0
  52. package/dist/lib/node-esm/blueprint-definition-EYL5GNDC.mjs +19 -0
  53. package/dist/lib/node-esm/blueprint-definition-EYL5GNDC.mjs.map +7 -0
  54. package/dist/lib/node-esm/blueprints/index.mjs +9 -0
  55. package/dist/lib/node-esm/blueprints/index.mjs.map +7 -0
  56. package/dist/lib/node-esm/chunk-3CKQUF55.mjs +610 -0
  57. package/dist/lib/node-esm/chunk-3CKQUF55.mjs.map +7 -0
  58. package/dist/lib/node-esm/chunk-3QBXN6QC.mjs +271 -0
  59. package/dist/lib/node-esm/chunk-3QBXN6QC.mjs.map +7 -0
  60. package/dist/lib/node-esm/{chunk-AHXJ6NQU.mjs → chunk-5HSJPAK7.mjs} +8 -5
  61. package/dist/lib/node-esm/chunk-5HSJPAK7.mjs.map +7 -0
  62. package/dist/lib/node-esm/chunk-ECRSTVR6.mjs +558 -0
  63. package/dist/lib/node-esm/chunk-ECRSTVR6.mjs.map +7 -0
  64. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  65. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  66. package/dist/lib/node-esm/chunk-KRVL7UYI.mjs +114 -0
  67. package/dist/lib/node-esm/chunk-KRVL7UYI.mjs.map +7 -0
  68. package/dist/lib/node-esm/chunk-SLU3KRV3.mjs +112 -0
  69. package/dist/lib/node-esm/chunk-SLU3KRV3.mjs.map +7 -0
  70. package/dist/lib/node-esm/chunk-U6PXM2HT.mjs +138 -0
  71. package/dist/lib/node-esm/chunk-U6PXM2HT.mjs.map +7 -0
  72. package/dist/lib/node-esm/chunk-V37R7KB5.mjs +107 -0
  73. package/dist/lib/node-esm/chunk-V37R7KB5.mjs.map +7 -0
  74. package/dist/lib/node-esm/chunk-Y3G5NCTP.mjs +36 -0
  75. package/dist/lib/node-esm/chunk-Y3G5NCTP.mjs.map +7 -0
  76. package/dist/lib/node-esm/compiler-WUOSY6MS.mjs +162 -0
  77. package/dist/lib/node-esm/compiler-WUOSY6MS.mjs.map +7 -0
  78. package/dist/lib/node-esm/index.mjs +139 -103
  79. package/dist/lib/node-esm/index.mjs.map +4 -4
  80. package/dist/lib/node-esm/meta.json +1 -1
  81. package/dist/lib/node-esm/operation-resolver-AJNJXGCE.mjs +84 -0
  82. package/dist/lib/node-esm/operation-resolver-AJNJXGCE.mjs.map +7 -0
  83. package/dist/lib/node-esm/react-surface-LREMOVNJ.mjs +141 -0
  84. package/dist/lib/node-esm/react-surface-LREMOVNJ.mjs.map +7 -0
  85. package/dist/lib/node-esm/settings-ILI762CY.mjs +37 -0
  86. package/dist/lib/node-esm/settings-ILI762CY.mjs.map +7 -0
  87. package/dist/lib/node-esm/templates/index.mjs +2 -1
  88. package/dist/lib/node-esm/types/index.mjs +14 -6
  89. package/dist/types/src/ScriptPlugin.d.ts +2 -1
  90. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  91. package/dist/types/src/blueprints/index.d.ts +2 -0
  92. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  93. package/dist/types/src/blueprints/script-blueprint.d.ts +22 -0
  94. package/dist/types/src/blueprints/script-blueprint.d.ts.map +1 -0
  95. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  96. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  97. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  98. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  99. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts +12 -0
  100. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts.map +1 -0
  101. package/dist/types/src/capabilities/artifact-definition/index.d.ts +3 -0
  102. package/dist/types/src/capabilities/artifact-definition/index.d.ts.map +1 -0
  103. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +10 -0
  104. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -0
  105. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +3 -0
  106. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -0
  107. package/dist/types/src/capabilities/compiler/compiler.d.ts +6 -0
  108. package/dist/types/src/capabilities/compiler/compiler.d.ts.map +1 -0
  109. package/dist/types/src/capabilities/compiler/index.d.ts +3 -0
  110. package/dist/types/src/capabilities/compiler/index.d.ts.map +1 -0
  111. package/dist/types/src/capabilities/index.d.ts +6 -7
  112. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  113. package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
  114. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  115. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
  116. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  117. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  118. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  119. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  120. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  121. package/dist/types/src/capabilities/settings/index.d.ts +7 -0
  122. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
  123. package/dist/types/src/capabilities/settings/settings.d.ts +10 -0
  124. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
  125. package/dist/types/src/compiler/compiler.d.ts +1 -1
  126. package/dist/types/src/compiler/compiler.d.ts.map +1 -1
  127. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts +4 -4
  128. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +1 -1
  129. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts +244 -13
  130. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -1
  131. package/dist/types/src/components/DeploymentDialog/index.d.ts +1 -1
  132. package/dist/types/src/components/DeploymentDialog/index.d.ts.map +1 -1
  133. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts +1 -1
  134. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +1 -1
  135. package/dist/types/src/components/NotebookContainer.d.ts +8 -0
  136. package/dist/types/src/components/NotebookContainer.d.ts.map +1 -0
  137. package/dist/types/src/components/NotebookContainer.stories.d.ts +7 -0
  138. package/dist/types/src/components/NotebookContainer.stories.d.ts.map +1 -0
  139. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts +15 -0
  140. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts.map +1 -0
  141. package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts +9 -0
  142. package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts.map +1 -0
  143. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts +14 -0
  144. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts.map +1 -0
  145. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts +249 -0
  146. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts.map +1 -0
  147. package/dist/types/src/components/NotebookStack/index.d.ts +3 -0
  148. package/dist/types/src/components/NotebookStack/index.d.ts.map +1 -0
  149. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts +5 -0
  150. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts.map +1 -0
  151. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts +13 -0
  152. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts.map +1 -0
  153. package/dist/types/src/components/QueryEditor/index.d.ts +2 -0
  154. package/dist/types/src/components/QueryEditor/index.d.ts.map +1 -0
  155. package/dist/types/src/components/ScriptContainer.d.ts +7 -8
  156. package/dist/types/src/components/ScriptContainer.d.ts.map +1 -1
  157. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts +7 -8
  158. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  159. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts +246 -10
  160. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -1
  161. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts +2 -2
  162. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +1 -1
  163. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts +6 -4
  164. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts.map +1 -1
  165. package/dist/types/src/components/TestPanel/TestContainer.d.ts +3 -3
  166. package/dist/types/src/components/TestPanel/TestContainer.d.ts.map +1 -1
  167. package/dist/types/src/components/TestPanel/TestPanel.d.ts.map +1 -1
  168. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts +5 -2
  169. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  170. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts +11 -4
  171. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -1
  172. package/dist/types/src/components/index.d.ts +4 -5
  173. package/dist/types/src/components/index.d.ts.map +1 -1
  174. package/dist/types/src/e2e/ai.test.d.ts +2 -0
  175. package/dist/types/src/e2e/ai.test.d.ts.map +1 -0
  176. package/dist/types/src/e2e/deploy.test.d.ts +2 -0
  177. package/dist/types/src/e2e/deploy.test.d.ts.map +1 -0
  178. package/dist/types/src/hooks/deploy.d.ts +18 -32
  179. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  180. package/dist/types/src/hooks/format.d.ts +4 -4
  181. package/dist/types/src/hooks/format.d.ts.map +1 -1
  182. package/dist/types/src/hooks/index.d.ts +1 -0
  183. package/dist/types/src/hooks/index.d.ts.map +1 -1
  184. package/dist/types/src/hooks/template.d.ts +6 -16
  185. package/dist/types/src/hooks/template.d.ts.map +1 -1
  186. package/dist/types/src/hooks/useCompiler.d.ts +7 -0
  187. package/dist/types/src/hooks/useCompiler.d.ts.map +1 -0
  188. package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts.map +1 -1
  189. package/dist/types/src/hooks/useToolbarState.d.ts +8 -1
  190. package/dist/types/src/hooks/useToolbarState.d.ts.map +1 -1
  191. package/dist/types/src/index.d.ts +2 -1
  192. package/dist/types/src/index.d.ts.map +1 -1
  193. package/dist/types/src/meta.d.ts +2 -3
  194. package/dist/types/src/meta.d.ts.map +1 -1
  195. package/dist/types/src/notebook/compute-graph.d.ts +58 -0
  196. package/dist/types/src/notebook/compute-graph.d.ts.map +1 -0
  197. package/dist/types/src/notebook/compute-graph.test.d.ts +2 -0
  198. package/dist/types/src/notebook/compute-graph.test.d.ts.map +1 -0
  199. package/dist/types/src/notebook/eval.d.ts +13 -0
  200. package/dist/types/src/notebook/eval.d.ts.map +1 -0
  201. package/dist/types/src/notebook/index.d.ts +2 -0
  202. package/dist/types/src/notebook/index.d.ts.map +1 -0
  203. package/dist/types/src/notebook/vfs-parser.d.ts +74 -0
  204. package/dist/types/src/notebook/vfs-parser.d.ts.map +1 -0
  205. package/dist/types/src/notebook/vfs-parser.test.d.ts +2 -0
  206. package/dist/types/src/notebook/vfs-parser.test.d.ts.map +1 -0
  207. package/dist/types/src/templates/anthropic.d.ts +8 -0
  208. package/dist/types/src/templates/anthropic.d.ts.map +1 -0
  209. package/dist/types/src/templates/chess-bot.d.ts +16 -0
  210. package/dist/types/src/templates/chess-bot.d.ts.map +1 -0
  211. package/dist/types/src/templates/commentary.d.ts +16 -0
  212. package/dist/types/src/templates/commentary.d.ts.map +1 -0
  213. package/dist/types/src/templates/data-generator.d.ts.map +1 -1
  214. package/dist/types/src/templates/discord.d.ts.map +1 -1
  215. package/dist/types/src/templates/forex-effect.d.ts +4 -1
  216. package/dist/types/src/templates/forex-effect.d.ts.map +1 -1
  217. package/dist/types/src/templates/forex.d.ts +4 -1
  218. package/dist/types/src/templates/forex.d.ts.map +1 -1
  219. package/dist/types/src/templates/gmail.d.ts.map +1 -1
  220. package/dist/types/src/templates/index.d.ts +52 -1
  221. package/dist/types/src/templates/index.d.ts.map +1 -1
  222. package/dist/types/src/templates/ping.d.ts +3 -0
  223. package/dist/types/src/templates/ping.d.ts.map +1 -0
  224. package/dist/types/src/testing/data.d.ts +3 -0
  225. package/dist/types/src/testing/data.d.ts.map +1 -0
  226. package/dist/types/src/testing/index.d.ts +2 -0
  227. package/dist/types/src/testing/index.d.ts.map +1 -0
  228. package/dist/types/src/testing/simulator.test.d.ts +2 -0
  229. package/dist/types/src/testing/simulator.test.d.ts.map +1 -0
  230. package/dist/types/src/translations.d.ts +32 -5
  231. package/dist/types/src/translations.d.ts.map +1 -1
  232. package/dist/types/src/types/Notebook.d.ts +100 -0
  233. package/dist/types/src/types/Notebook.d.ts.map +1 -0
  234. package/dist/types/src/types/actions.d.ts +40 -0
  235. package/dist/types/src/types/actions.d.ts.map +1 -0
  236. package/dist/types/src/types/capabilities.d.ts +12 -0
  237. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  238. package/dist/types/src/types/events.d.ts +5 -0
  239. package/dist/types/src/types/events.d.ts.map +1 -0
  240. package/dist/types/src/types/index.d.ts +5 -1
  241. package/dist/types/src/types/index.d.ts.map +1 -1
  242. package/dist/types/src/types/types.d.ts +6 -0
  243. package/dist/types/src/types/types.d.ts.map +1 -0
  244. package/dist/types/src/util/deploy.d.ts +7 -7
  245. package/dist/types/src/util/deploy.d.ts.map +1 -1
  246. package/dist/types/src/util/functions.d.ts +6 -3
  247. package/dist/types/src/util/functions.d.ts.map +1 -1
  248. package/dist/types/tsconfig.tsbuildinfo +1 -1
  249. package/package.json +123 -84
  250. package/src/ScriptPlugin.tsx +57 -76
  251. package/src/blueprints/index.ts +5 -0
  252. package/src/blueprints/script-blueprint.ts +24 -0
  253. package/src/capabilities/app-graph-builder/app-graph-builder.ts +56 -0
  254. package/src/capabilities/app-graph-builder/index.ts +7 -0
  255. package/src/capabilities/{artifact-definition.ts → artifact-definition/artifact-definition.ts} +103 -105
  256. package/src/capabilities/artifact-definition/index.ts +7 -0
  257. package/src/capabilities/blueprint-definition/blueprint-definition.ts +24 -0
  258. package/src/capabilities/blueprint-definition/index.ts +7 -0
  259. package/src/capabilities/compiler/compiler.ts +103 -0
  260. package/src/capabilities/compiler/index.ts +7 -0
  261. package/src/capabilities/index.ts +6 -10
  262. package/src/capabilities/operation-resolver/index.ts +7 -0
  263. package/src/capabilities/operation-resolver/operation-resolver.ts +75 -0
  264. package/src/capabilities/react-surface/index.ts +7 -0
  265. package/src/capabilities/react-surface/react-surface.tsx +119 -0
  266. package/src/capabilities/settings/index.ts +7 -0
  267. package/src/capabilities/settings/settings.ts +33 -0
  268. package/src/compiler/compiler.ts +11 -4
  269. package/src/components/DeploymentDialog/DeploymentDialog.stories.tsx +45 -22
  270. package/src/components/DeploymentDialog/DeploymentDialog.tsx +45 -54
  271. package/src/components/DeploymentDialog/index.ts +1 -1
  272. package/src/components/FrameContainer/FrameContainer.tsx +8 -5
  273. package/src/components/NotebookContainer.stories.tsx +87 -0
  274. package/src/components/NotebookContainer.tsx +271 -0
  275. package/src/components/NotebookStack/NotebookCell.tsx +217 -0
  276. package/src/components/NotebookStack/NotebookMenu.tsx +47 -0
  277. package/src/components/NotebookStack/NotebookStack.stories.tsx +55 -0
  278. package/src/components/NotebookStack/NotebookStack.tsx +86 -0
  279. package/src/components/NotebookStack/index.ts +6 -0
  280. package/src/components/QueryEditor/QueryEditor.stories.tsx +100 -0
  281. package/src/components/QueryEditor/QueryEditor.tsx +47 -0
  282. package/src/components/QueryEditor/index.ts +5 -0
  283. package/src/components/ScriptContainer.tsx +52 -36
  284. package/src/components/ScriptToolbar/ScriptToolbar.stories.tsx +57 -17
  285. package/src/components/ScriptToolbar/ScriptToolbar.tsx +37 -33
  286. package/src/components/Settings/ScriptObjectSettings.tsx +151 -48
  287. package/src/components/Settings/ScriptPluginSettings.tsx +43 -48
  288. package/src/components/TestPanel/TestContainer.tsx +9 -8
  289. package/src/components/TestPanel/TestPanel.tsx +66 -41
  290. package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +86 -33
  291. package/src/components/TypescriptEditor/TypescriptEditor.tsx +84 -81
  292. package/src/components/index.ts +3 -0
  293. package/src/e2e/ai.test.ts +92 -0
  294. package/src/e2e/deploy.test.ts +64 -0
  295. package/src/hooks/deploy.ts +49 -42
  296. package/src/hooks/format.ts +9 -5
  297. package/src/hooks/index.ts +1 -0
  298. package/src/hooks/template.ts +20 -23
  299. package/src/hooks/useCompiler.ts +24 -0
  300. package/src/hooks/useCreateAndDeployScriptTemplates.ts +15 -16
  301. package/src/hooks/useToolbarState.ts +29 -4
  302. package/src/index.ts +2 -1
  303. package/src/meta.ts +9 -7
  304. package/src/notebook/compute-graph.test.ts +82 -0
  305. package/src/notebook/compute-graph.ts +230 -0
  306. package/src/notebook/eval.ts +105 -0
  307. package/src/notebook/index.ts +5 -0
  308. package/src/notebook/vfs-parser.test.ts +149 -0
  309. package/src/notebook/vfs-parser.ts +451 -0
  310. package/src/templates/anthropic.ts +42 -0
  311. package/src/templates/chess-bot.ts +58 -0
  312. package/src/templates/commentary.ts +230 -0
  313. package/src/templates/data-generator.ts +10 -4
  314. package/src/templates/discord.ts +12 -4
  315. package/src/templates/forex-effect.ts +24 -25
  316. package/src/templates/forex.ts +9 -6
  317. package/src/templates/gmail.ts +34 -64
  318. package/src/templates/index.ts +24 -11
  319. package/src/templates/ping.ts +17 -0
  320. package/src/testing/data.ts +72 -0
  321. package/src/testing/index.ts +5 -0
  322. package/src/testing/simulator.test.ts +40 -0
  323. package/src/translations.ts +35 -7
  324. package/src/types/Notebook.ts +41 -0
  325. package/src/types/actions.ts +45 -0
  326. package/src/types/capabilities.ts +17 -0
  327. package/src/types/events.ts +11 -0
  328. package/src/types/index.ts +5 -1
  329. package/src/types/types.ts +15 -0
  330. package/src/util/deploy.ts +38 -61
  331. package/src/util/functions.ts +58 -25
  332. package/src/vite-env.d.ts +2 -0
  333. package/dist/lib/browser/DeploymentDialog-M4QIHTDR.mjs +0 -12
  334. package/dist/lib/browser/ScriptContainer-Z6SIGRRC.mjs +0 -262
  335. package/dist/lib/browser/ScriptContainer-Z6SIGRRC.mjs.map +0 -7
  336. package/dist/lib/browser/app-graph-builder-HLQ7K3BT.mjs +0 -64
  337. package/dist/lib/browser/app-graph-builder-HLQ7K3BT.mjs.map +0 -7
  338. package/dist/lib/browser/artifact-definition-24Q3IHOU.mjs +0 -249
  339. package/dist/lib/browser/artifact-definition-24Q3IHOU.mjs.map +0 -7
  340. package/dist/lib/browser/chunk-3U6DTUH3.mjs +0 -283
  341. package/dist/lib/browser/chunk-3U6DTUH3.mjs.map +0 -7
  342. package/dist/lib/browser/chunk-5TVBECWH.mjs +0 -15
  343. package/dist/lib/browser/chunk-5TVBECWH.mjs.map +0 -7
  344. package/dist/lib/browser/chunk-FIM2MVNJ.mjs +0 -555
  345. package/dist/lib/browser/chunk-FIM2MVNJ.mjs.map +0 -7
  346. package/dist/lib/browser/chunk-FMDXKOP7.mjs +0 -233
  347. package/dist/lib/browser/chunk-FMDXKOP7.mjs.map +0 -7
  348. package/dist/lib/browser/chunk-IS4OG2UW.mjs +0 -39
  349. package/dist/lib/browser/chunk-IS4OG2UW.mjs.map +0 -7
  350. package/dist/lib/browser/chunk-P4HQKUCP.mjs +0 -153
  351. package/dist/lib/browser/chunk-P4HQKUCP.mjs.map +0 -7
  352. package/dist/lib/browser/chunk-QYAREHGH.mjs.map +0 -7
  353. package/dist/lib/browser/chunk-R4R7VOFY.mjs +0 -88
  354. package/dist/lib/browser/chunk-R4R7VOFY.mjs.map +0 -7
  355. package/dist/lib/browser/compiler-CXCUA4UQ.mjs +0 -82
  356. package/dist/lib/browser/compiler-CXCUA4UQ.mjs.map +0 -7
  357. package/dist/lib/browser/intent-resolver-7B77IG3N.mjs +0 -91
  358. package/dist/lib/browser/intent-resolver-7B77IG3N.mjs.map +0 -7
  359. package/dist/lib/browser/react-surface-FYYXZA7C.mjs +0 -104
  360. package/dist/lib/browser/react-surface-FYYXZA7C.mjs.map +0 -7
  361. package/dist/lib/browser/settings-KCTBK5TY.mjs +0 -24
  362. package/dist/lib/browser/settings-KCTBK5TY.mjs.map +0 -7
  363. package/dist/lib/node-esm/DeploymentDialog-3KPRWFE7.mjs +0 -13
  364. package/dist/lib/node-esm/ScriptContainer-KPU75HHI.mjs +0 -263
  365. package/dist/lib/node-esm/ScriptContainer-KPU75HHI.mjs.map +0 -7
  366. package/dist/lib/node-esm/app-graph-builder-7EYIHWH4.mjs +0 -65
  367. package/dist/lib/node-esm/app-graph-builder-7EYIHWH4.mjs.map +0 -7
  368. package/dist/lib/node-esm/artifact-definition-WAJFALUI.mjs +0 -250
  369. package/dist/lib/node-esm/artifact-definition-WAJFALUI.mjs.map +0 -7
  370. package/dist/lib/node-esm/chunk-35M3CHYE.mjs +0 -16
  371. package/dist/lib/node-esm/chunk-35M3CHYE.mjs.map +0 -7
  372. package/dist/lib/node-esm/chunk-7NMI4CEU.mjs +0 -556
  373. package/dist/lib/node-esm/chunk-7NMI4CEU.mjs.map +0 -7
  374. package/dist/lib/node-esm/chunk-AHXJ6NQU.mjs.map +0 -7
  375. package/dist/lib/node-esm/chunk-F5GFJ3PY.mjs +0 -90
  376. package/dist/lib/node-esm/chunk-F5GFJ3PY.mjs.map +0 -7
  377. package/dist/lib/node-esm/chunk-JIPFLBYA.mjs +0 -40
  378. package/dist/lib/node-esm/chunk-JIPFLBYA.mjs.map +0 -7
  379. package/dist/lib/node-esm/chunk-QKK3NDHW.mjs +0 -154
  380. package/dist/lib/node-esm/chunk-QKK3NDHW.mjs.map +0 -7
  381. package/dist/lib/node-esm/chunk-RT43MACC.mjs +0 -284
  382. package/dist/lib/node-esm/chunk-RT43MACC.mjs.map +0 -7
  383. package/dist/lib/node-esm/chunk-XJPK3IYI.mjs +0 -234
  384. package/dist/lib/node-esm/chunk-XJPK3IYI.mjs.map +0 -7
  385. package/dist/lib/node-esm/compiler-EPFKQXPE.mjs +0 -83
  386. package/dist/lib/node-esm/compiler-EPFKQXPE.mjs.map +0 -7
  387. package/dist/lib/node-esm/intent-resolver-FRZGS4TB.mjs +0 -92
  388. package/dist/lib/node-esm/intent-resolver-FRZGS4TB.mjs.map +0 -7
  389. package/dist/lib/node-esm/react-surface-V32NWHKN.mjs +0 -105
  390. package/dist/lib/node-esm/react-surface-V32NWHKN.mjs.map +0 -7
  391. package/dist/lib/node-esm/settings-DXZ334A3.mjs +0 -25
  392. package/dist/lib/node-esm/settings-DXZ334A3.mjs.map +0 -7
  393. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  394. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  395. package/dist/types/src/capabilities/artifact-definition.d.ts +0 -11
  396. package/dist/types/src/capabilities/artifact-definition.d.ts.map +0 -1
  397. package/dist/types/src/capabilities/capabilities.d.ts +0 -5
  398. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  399. package/dist/types/src/capabilities/compiler.d.ts +0 -4
  400. package/dist/types/src/capabilities/compiler.d.ts.map +0 -1
  401. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  402. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  403. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  404. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  405. package/dist/types/src/capabilities/settings.d.ts +0 -4
  406. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  407. package/dist/types/src/events.d.ts +0 -4
  408. package/dist/types/src/events.d.ts.map +0 -1
  409. package/dist/types/src/templates/chess.d.ts +0 -3
  410. package/dist/types/src/templates/chess.d.ts.map +0 -1
  411. package/dist/types/src/templates/echo.d.ts +0 -6
  412. package/dist/types/src/templates/echo.d.ts.map +0 -1
  413. package/dist/types/src/types/schema.d.ts +0 -38
  414. package/dist/types/src/types/schema.d.ts.map +0 -1
  415. package/src/capabilities/app-graph-builder.ts +0 -64
  416. package/src/capabilities/capabilities.ts +0 -12
  417. package/src/capabilities/compiler.ts +0 -33
  418. package/src/capabilities/intent-resolver.ts +0 -80
  419. package/src/capabilities/react-surface.tsx +0 -89
  420. package/src/capabilities/settings.ts +0 -21
  421. package/src/events.ts +0 -11
  422. package/src/templates/chess.ts +0 -47
  423. package/src/templates/echo.ts +0 -8
  424. package/src/types/schema.ts +0 -37
  425. /package/dist/lib/browser/{DeploymentDialog-M4QIHTDR.mjs.map → DeploymentDialog-XUAFCNI7.mjs.map} +0 -0
  426. /package/dist/lib/{node-esm/DeploymentDialog-3KPRWFE7.mjs.map → browser/blueprints/index.mjs.map} +0 -0
@@ -2,20 +2,23 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Schema } from 'effect';
5
+ // ISSUE(burdon): defineArtifact
6
+ // @ts-nocheck
6
7
 
7
- import { createTool, ToolResult } from '@dxos/ai';
8
- import { Capabilities, contributes, createIntent, type PromiseIntentDispatcher } from '@dxos/app-framework';
9
- import { createArtifactElement, ArtifactId } from '@dxos/assistant';
8
+ import * as Effect from 'effect/Effect';
9
+ import * as Schema from 'effect/Schema';
10
+
11
+ import { ToolResult, createTool } from '@dxos/ai';
12
+ import { Capabilities, Capability, type PromiseIntentDispatcher, createIntent } from '@dxos/app-framework';
13
+ import { ArtifactId, createArtifactElement } from '@dxos/assistant';
10
14
  import { defineArtifact } from '@dxos/blueprints';
11
15
  import { Filter, Obj, Ref } from '@dxos/echo';
12
16
  import { ScriptType } from '@dxos/functions';
13
17
  import { invariant } from '@dxos/invariant';
14
18
  import { SpaceAction } from '@dxos/plugin-space/types';
15
19
  import { type Space } from '@dxos/react-client/echo';
16
- import { DataType } from '@dxos/schema';
17
20
 
18
- import { meta } from '../meta';
21
+ import { meta } from '../../meta';
19
22
 
20
23
  // TODO(burdon): Factor out.
21
24
  declare global {
@@ -25,14 +28,15 @@ declare global {
25
28
  }
26
29
  }
27
30
 
28
- export default () => {
29
- const definition = defineArtifact({
30
- id: `artifact:${meta.id}`,
31
- name: meta.name,
32
- // TODO(dmaretskyi): Since writing scripts requires a lot of domain knowledge,
33
- // we should offload the work of synthesizing the code to a separate model.
34
- // The main reasoning model will give it a concrete task and the script model will synthesize the code, knowing all the docs.
35
- instructions: `
31
+ export default Capability.makeModule(() =>
32
+ Effect.sync(() => {
33
+ const definition = defineArtifact({
34
+ id: `artifact:${meta.id}`,
35
+ name: meta.name,
36
+ // TODO(dmaretskyi): Since writing scripts requires a lot of domain knowledge,
37
+ // we should offload the work of synthesizing the code to a separate model.
38
+ // The main reasoning model will give it a concrete task and the script model will synthesize the code, knowing all the docs.
39
+ instructions: `
36
40
  If the user explicitly requests you to write a script, you can create one.
37
41
  If the user requests you to change one of the existing script, you can update it.
38
42
  You must not create a script unless the user explicitly requests it.
@@ -52,7 +56,7 @@ export default () => {
52
56
  The description is used by AI to understand the script and its purpose.
53
57
  The description must provide cases on when the script should be used.
54
58
 
55
- Schema:
59
+ Schema:
56
60
  The schema is defined using a schema-DSL library called Effect Schema.
57
61
  The input schema describes the arguments that the script accepts.
58
62
  The output schema describes the result that the script produces.
@@ -73,18 +77,18 @@ export default () => {
73
77
  - Detailed output schema
74
78
 
75
79
  <apis>
76
- export function defineFunction(params: {
77
- description: string,
78
- inputSchema: Schema.Schema,
79
- outputSchema: Schema.Schema,
80
- handler: (params: { event: { data: TInput } }) => Promise<TOutput>
80
+ export function defineFunction(params: {
81
+ description: string,
82
+ inputSchema: Schema.Schema,
83
+ outputSchema: Schema.Schema,
84
+ handler: (params: { event: { data: TInput } }) => Promise<TOutput>
81
85
  }): FunctionDefinition
82
86
  /**
83
87
  * Effect Schema
84
88
  */
85
- export const Schema;
89
+ export const Schema;
86
90
 
87
- // Examples:
91
+ // Examples:
88
92
 
89
93
  Schema.String
90
94
  Schema.Number
@@ -102,7 +106,7 @@ export default () => {
102
106
  <handler_function>
103
107
  Async function that takes the argument in the form of:
104
108
 
105
- type HandlerFunctionParam = {
109
+ type HandlerFunctionProp = {
106
110
  event: {
107
111
  data: T // The input schema
108
112
  },
@@ -110,7 +114,7 @@ export default () => {
110
114
 
111
115
  The function must return the result that matches the output schema.
112
116
  </handler_function>
113
-
117
+
114
118
  <example>
115
119
  import { defineFunction, S } from 'dxos:functions';
116
120
 
@@ -141,89 +145,83 @@ export default () => {
141
145
  });
142
146
  </example>
143
147
  `,
144
- schema: ScriptType,
145
- tools: [
146
- createTool(meta.id, {
147
- name: 'create',
148
- description: 'Create a new script. Returns the artifact definition for the script',
149
- caption: 'Creating script...',
150
- schema: Schema.Struct({
151
- name: Schema.String.annotations({ description: 'The name of the script' }),
152
- code: Schema.String.annotations({
153
- description: 'The full code of the script in JavaScript or TypeScript. Must be valid executable code.',
148
+ schema: ScriptType,
149
+ tools: [
150
+ createTool(meta.id, {
151
+ name: 'create',
152
+ description: 'Create a new script. Returns the artifact definition for the script',
153
+ caption: 'Creating script...',
154
+ schema: Schema.Struct({
155
+ name: Schema.String.annotations({ description: 'The name of the script' }),
156
+ code: Schema.String.annotations({
157
+ description: 'The full code of the script in JavaScript or TypeScript. Must be valid executable code.',
158
+ }),
154
159
  }),
160
+ execute: async ({ name, code }, { extensions }) => {
161
+ invariant(extensions?.space, 'No space');
162
+ invariant(extensions?.dispatch, 'No intent dispatcher');
163
+ const script = Obj.make(ScriptType, { name, source: Ref.make(Text.make(code)) });
164
+ extensions.space.db.add(script);
165
+ await extensions.space.db.flush();
166
+
167
+ const intent = createIntent(SpaceAction.AddObject, { target: extensions.space, object: script });
168
+ const { data, error } = await extensions.dispatch(intent);
169
+ if (!data || error) {
170
+ return ToolResult.Error(error?.message ?? 'Failed to create chess game');
171
+ }
172
+
173
+ return ToolResult.Success(createArtifactElement(script.id));
174
+ },
155
175
  }),
156
- execute: async ({ name, code }, { extensions }) => {
157
- invariant(extensions?.space, 'No space');
158
- invariant(extensions?.dispatch, 'No intent dispatcher');
159
- const script = Obj.make(ScriptType, {
160
- name,
161
- source: Ref.make(
162
- Obj.make(DataType.Text, {
163
- content: code,
164
- }),
165
- ),
166
- });
167
- extensions.space.db.add(script);
168
- await extensions.space.db.flush();
169
-
170
- const intent = createIntent(SpaceAction.AddObject, { target: extensions.space, object: script });
171
- const { data, error } = await extensions.dispatch(intent);
172
- if (!data || error) {
173
- return ToolResult.Error(error?.message ?? 'Failed to create chess game');
174
- }
175
-
176
- return ToolResult.Success(createArtifactElement(script.id));
177
- },
178
- }),
179
- createTool(meta.id, {
180
- name: 'inspect',
181
- description: 'Inspect a script. Returns the artifact definition for the script',
182
- caption: 'Inspecting script...',
183
- schema: Schema.Struct({
184
- id: ArtifactId,
176
+ createTool(meta.id, {
177
+ name: 'inspect',
178
+ description: 'Inspect a script. Returns the artifact definition for the script',
179
+ caption: 'Inspecting script...',
180
+ schema: Schema.Struct({
181
+ id: ArtifactId,
182
+ }),
183
+ execute: async ({ id }, { extensions }) => {
184
+ invariant(extensions?.space, 'No space');
185
+
186
+ const script = (await extensions.space.db.query(Filter.id(id)).first()) as ScriptType;
187
+ const { content } = await script.source.load();
188
+
189
+ return ToolResult.Success({
190
+ name: script.name,
191
+ code: content,
192
+ });
193
+ },
185
194
  }),
186
- execute: async ({ id }, { extensions }) => {
187
- invariant(extensions?.space, 'No space');
188
-
189
- const script = (await extensions.space.db.query(Filter.ids(id)).first()) as ScriptType;
190
- const { content } = await script.source.load();
191
-
192
- return ToolResult.Success({
193
- name: script.name,
194
- code: content,
195
- });
196
- },
197
- }),
198
- createTool(meta.id, {
199
- name: 'update',
200
- description: 'Update a script. Returns the artifact definition for the script',
201
- caption: 'Updating script...',
202
- schema: Schema.Struct({
203
- id: ArtifactId,
204
- code: Schema.String.annotations({
205
- description: 'The full code of the script in JavaScript or TypeScript. Must be valid executable code.',
195
+ createTool(meta.id, {
196
+ name: 'update',
197
+ description: 'Update a script. Returns the artifact definition for the script',
198
+ caption: 'Updating script...',
199
+ schema: Schema.Struct({
200
+ id: ArtifactId,
201
+ code: Schema.String.annotations({
202
+ description: 'The full code of the script in JavaScript or TypeScript. Must be valid executable code.',
203
+ }),
206
204
  }),
205
+ execute: async ({ id, code }, { extensions }) => {
206
+ invariant(extensions?.space, 'No space');
207
+
208
+ const script = (await extensions.space.db.query(Filter.id(id)).first()) as ScriptType;
209
+ const source = await script.source.load();
210
+ if (!source) {
211
+ return ToolResult.Error('Script not found');
212
+ }
213
+
214
+ source.content = code;
215
+ await extensions.space?.db.flush();
216
+
217
+ return ToolResult.Success({
218
+ name: script.name,
219
+ });
220
+ },
207
221
  }),
208
- execute: async ({ id, code }, { extensions }) => {
209
- invariant(extensions?.space, 'No space');
210
-
211
- const script = (await extensions.space.db.query(Filter.ids(id)).first()) as ScriptType;
212
- const source = await script.source.load();
213
- if (!source) {
214
- return ToolResult.Error('Script not found');
215
- }
216
-
217
- source.content = code;
218
- await extensions.space?.db.flush();
219
-
220
- return ToolResult.Success({
221
- name: script.name,
222
- });
223
- },
224
- }),
225
- ],
226
- });
227
-
228
- return contributes(Capabilities.ArtifactDefinition, definition);
229
- };
222
+ ],
223
+ });
224
+
225
+ return Capability.contributes(Capabilities.ArtifactDefinition, definition);
226
+ }),
227
+ );
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Capability } from '@dxos/app-framework';
6
+
7
+ export const ArtifactDefinition = Capability.lazy('ArtifactDefinition', () => import('./artifact-definition'));
@@ -0,0 +1,24 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Effect from 'effect/Effect';
6
+
7
+ import { Capability } from '@dxos/app-framework';
8
+ import { AppCapabilities } from '@dxos/app-toolkit';
9
+
10
+ import { ScriptBlueprint } from '../../blueprints';
11
+
12
+ export type BlueprintCapabilities = [
13
+ Capability.Capability<typeof AppCapabilities.Functions>,
14
+ Capability.Capability<typeof AppCapabilities.BlueprintDefinition>,
15
+ ];
16
+
17
+ const blueprintDefinition = Capability.makeModule<[], BlueprintCapabilities>(() =>
18
+ Effect.succeed([
19
+ Capability.contributes(AppCapabilities.Functions, ScriptBlueprint.functions),
20
+ Capability.contributes(AppCapabilities.BlueprintDefinition, ScriptBlueprint.make()),
21
+ ]),
22
+ );
23
+
24
+ export default blueprintDefinition;
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Capability } from '@dxos/app-framework';
6
+
7
+ export const BlueprintDefinition = Capability.lazy('BlueprintDefinition', () => import('./blueprint-definition'));
@@ -0,0 +1,103 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as FetchHttpClient from '@effect/platform/FetchHttpClient';
6
+ import * as HttpClient from '@effect/platform/HttpClient';
7
+ import * as Effect from 'effect/Effect';
8
+ import * as Schedule from 'effect/Schedule';
9
+ import * as Schema from 'effect/Schema';
10
+ import wasmUrl from 'esbuild-wasm/esbuild.wasm?url';
11
+ import * as ts from 'typescript';
12
+
13
+ import { Capability } from '@dxos/app-framework';
14
+ import { initializeBundler } from '@dxos/functions-runtime/bundler';
15
+ import { log } from '@dxos/log';
16
+ import { trim } from '@dxos/util';
17
+
18
+ import { Compiler } from '../../compiler';
19
+ import { ScriptCapabilities } from '../../types';
20
+
21
+ // TODO(burdon): Document.
22
+ const SCRIPT_PACKAGES_BUCKET = 'https://pub-5745ae82e450484aa28f75fc6a175935.r2.dev/dev/';
23
+ const DECLARATION_EXTS = ['.d.ts', '.d.mts'];
24
+ const NO_TYPES = true; // Types temopararly disabled due to compiler erorrs.
25
+
26
+ export default Capability.makeModule(() =>
27
+ Effect.gen(function* () {
28
+ yield* Effect.tryPromise(() => initializeBundler({ wasmUrl }));
29
+
30
+ const runtimeModules = yield* fetchRuntimeModules().pipe(Effect.provide(FetchHttpClient.layer));
31
+
32
+ const compiler = new Compiler({
33
+ skipLibCheck: true,
34
+ moduleResolution: ts.ModuleResolutionKind.Bundler,
35
+ allowImportingTsExtensions: true,
36
+ noEmit: true,
37
+ strict: true,
38
+ esModuleInterop: true,
39
+ paths: Object.fromEntries(runtimeModules.map((mod: any) => [mod.moduleName, [`./src/${mod.filename}`]])),
40
+ });
41
+
42
+ yield* Effect.tryPromise(() =>
43
+ compiler.initialize(trim`
44
+ declare module 'https://*';
45
+ ${NO_TYPES ? '' : 'declare module "*";'}
46
+ `),
47
+ );
48
+ if (!NO_TYPES) {
49
+ for (const mod of runtimeModules) {
50
+ compiler.setFile(`/src/${mod.filename}`, mod.content);
51
+ }
52
+ }
53
+
54
+ return Capability.contributes(ScriptCapabilities.Compiler, compiler);
55
+ }),
56
+ );
57
+
58
+ const fetchRuntimeModules = Effect.fnUntraced(function* () {
59
+ // { key, size, contentType }
60
+ const manifest = yield* HttpClient.get(new URL('manifest.json', SCRIPT_PACKAGES_BUCKET)).pipe(
61
+ Effect.flatMap((_) => _.json),
62
+ Effect.flatMap(
63
+ Schema.decodeUnknown(
64
+ Schema.Struct({
65
+ files: Schema.Array(
66
+ Schema.Struct({
67
+ key: Schema.String,
68
+ }),
69
+ ),
70
+ }),
71
+ ),
72
+ ),
73
+ Effect.map((manifest) => ({ ...manifest, files: manifest.files.map((f) => f.key) })),
74
+ );
75
+
76
+ const declarationFiles = manifest.files.filter((file) => DECLARATION_EXTS.some((ext) => file.endsWith(ext)));
77
+
78
+ let fetched = 0;
79
+ const modules = yield* Effect.forEach(
80
+ declarationFiles,
81
+ Effect.fnUntraced(
82
+ function* (filename) {
83
+ const response = yield* HttpClient.get(new URL(filename, SCRIPT_PACKAGES_BUCKET)).pipe(
84
+ Effect.retry(Schedule.exponential(1_000).pipe(Schedule.compose(Schedule.recurs(3)))),
85
+ );
86
+ const content = yield* response.text;
87
+ const moduleName = filename.replace(/\.d\.(ts|mts)$/, '');
88
+ fetched++;
89
+
90
+ return {
91
+ moduleName,
92
+ filename,
93
+ content,
94
+ };
95
+ },
96
+ Effect.retry(Schedule.exponential(1_000).pipe(Schedule.compose(Schedule.recurs(3)))),
97
+ ),
98
+ { concurrency: 20 },
99
+ );
100
+
101
+ log.info('runtime modules', { manifest: manifest.files.length, files: declarationFiles.length, fetched });
102
+ return modules;
103
+ });
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Capability } from '@dxos/app-framework';
6
+
7
+ export const Compiler = Capability.lazy('Compiler', () => import('./compiler'));
@@ -2,13 +2,9 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { lazy } from '@dxos/app-framework';
6
-
7
- export const AppGraphBuilder = lazy(() => import('./app-graph-builder'));
8
- export const ArtifactDefinition = lazy(() => import('./artifact-definition'));
9
- export const Compiler = lazy(() => import('./compiler'));
10
- export const IntentResolver = lazy(() => import('./intent-resolver'));
11
- export const ReactSurface = lazy(() => import('./react-surface'));
12
- export const ScriptSettings = lazy(() => import('./settings'));
13
-
14
- export * from './capabilities';
5
+ export * from './app-graph-builder';
6
+ export * from './blueprint-definition';
7
+ export * from './compiler';
8
+ export * from './operation-resolver';
9
+ export * from './react-surface';
10
+ export * from './settings';
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Capability } from '@dxos/app-framework';
6
+
7
+ export const OperationResolver = Capability.lazy('OperationResolver', () => import('./operation-resolver'));
@@ -0,0 +1,75 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Octokit } from '@octokit/core';
6
+ import * as Effect from 'effect/Effect';
7
+ import * as Predicate from 'effect/Predicate';
8
+
9
+ import { Capabilities, Capability } from '@dxos/app-framework';
10
+ import { LayoutOperation } from '@dxos/app-toolkit';
11
+ import { Script } from '@dxos/functions';
12
+ import { Operation, OperationResolver } from '@dxos/operation';
13
+ import { TokenManagerOperation } from '@dxos/plugin-token-manager/types';
14
+
15
+ import { DEPLOYMENT_DIALOG } from '../../components';
16
+ import { defaultScriptsForIntegration } from '../../meta';
17
+ import { templates } from '../../templates';
18
+ import { ScriptOperation } from '../../types';
19
+
20
+ export default Capability.makeModule(
21
+ Effect.fnUntraced(function* () {
22
+ return Capability.contributes(Capabilities.OperationResolver, [
23
+ OperationResolver.make({
24
+ operation: ScriptOperation.CreateScript,
25
+ handler: Effect.fnUntraced(function* ({ name, gistUrl, initialTemplateId }) {
26
+ let source = templates[0].source;
27
+ let scriptName = name;
28
+
29
+ const gistId = gistUrl?.split('/').at(-1);
30
+ if (gistId) {
31
+ // TODO(wittjosiah): Capability which contributes Octokit?
32
+ // NOTE: AccessToken not needed to read public gists.
33
+ const octokit = new Octokit();
34
+ const response = yield* Effect.promise(() =>
35
+ octokit.request('GET /gists/{gist_id}', {
36
+ gist_id: gistId,
37
+ }),
38
+ );
39
+ const gistContent = Object.values(response.data.files ?? {})[0]?.content;
40
+ if (gistContent) {
41
+ source = gistContent;
42
+ }
43
+ }
44
+
45
+ if (initialTemplateId) {
46
+ const template = templates.find((template) => template.id === initialTemplateId);
47
+ if (template) {
48
+ source = template.source;
49
+ scriptName = scriptName || template.name;
50
+ }
51
+ }
52
+
53
+ return { object: Script.make({ name: scriptName, source }) };
54
+ }),
55
+ }),
56
+ OperationResolver.make({
57
+ operation: TokenManagerOperation.AccessTokenCreated,
58
+ handler: Effect.fnUntraced(function* ({ accessToken }) {
59
+ const scriptTemplates = (defaultScriptsForIntegration[accessToken.source] ?? [])
60
+ .map((id) => templates.find((t) => t.id === id))
61
+ .filter(Predicate.isNotNullable);
62
+
63
+ if (scriptTemplates.length > 0) {
64
+ yield* Operation.invoke(LayoutOperation.UpdateDialog, {
65
+ subject: DEPLOYMENT_DIALOG,
66
+ blockAlign: 'start',
67
+ state: true,
68
+ props: { accessToken, scriptTemplates },
69
+ });
70
+ }
71
+ }),
72
+ }),
73
+ ]);
74
+ }),
75
+ );
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Capability } from '@dxos/app-framework';
6
+
7
+ export const ReactSurface = Capability.lazy('ReactSurface', () => import('./react-surface'));
@@ -0,0 +1,119 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Effect from 'effect/Effect';
6
+ import React from 'react';
7
+
8
+ import { Capabilities, Capability } from '@dxos/app-framework';
9
+ import { Surface, useAtomCapability, useSettingsState } from '@dxos/app-framework/ui';
10
+ import { AppCapabilities } from '@dxos/app-toolkit';
11
+ import { InvocationTraceContainer } from '@dxos/devtools';
12
+ import { Obj } from '@dxos/echo';
13
+ import { Script } from '@dxos/functions';
14
+ import { getSpace } from '@dxos/react-client/echo';
15
+ import { Layout } from '@dxos/react-ui';
16
+ import { type AccessToken } from '@dxos/types';
17
+
18
+ import {
19
+ DEPLOYMENT_DIALOG,
20
+ DeploymentDialog,
21
+ NotebookContainer,
22
+ ScriptContainer,
23
+ ScriptObjectSettings,
24
+ ScriptPluginSettings,
25
+ ScriptProperties,
26
+ TestContainer,
27
+ } from '../../components';
28
+ import { useCompiler } from '../../hooks';
29
+ import { meta } from '../../meta';
30
+ import { Notebook, ScriptCapabilities, type ScriptSettings } from '../../types';
31
+
32
+ export default Capability.makeModule(() =>
33
+ Effect.succeed(
34
+ Capability.contributes(Capabilities.ReactSurface, [
35
+ Surface.create({
36
+ id: `${meta.id}/plugin-settings`,
37
+ role: 'article',
38
+ filter: (data): data is { subject: AppCapabilities.Settings } =>
39
+ AppCapabilities.isSettings(data.subject) && data.subject.prefix === meta.id,
40
+ component: ({ data: { subject } }) => {
41
+ const { settings, updateSettings } = useSettingsState<ScriptSettings>(subject.atom);
42
+ return <ScriptPluginSettings settings={settings} onSettingsChange={updateSettings} />;
43
+ },
44
+ }),
45
+ Surface.create({
46
+ id: `${meta.id}/script/article`,
47
+ role: ['article', 'section'],
48
+ filter: (data): data is { subject: Script.Script } => Obj.instanceOf(Script.Script, data.subject),
49
+ component: ({ data, role }) => {
50
+ const compiler = useCompiler();
51
+ const settings = useAtomCapability(ScriptCapabilities.Settings);
52
+ // TODO(wittjosiah): Why? The editor should be allow to render even if the environment is not ready.
53
+ if (!compiler?.environment) {
54
+ return null;
55
+ }
56
+
57
+ return <ScriptContainer role={role} subject={data.subject} settings={settings} env={compiler?.environment} />;
58
+ },
59
+ }),
60
+ Surface.create({
61
+ id: `${meta.id}/notebook/article`,
62
+ role: 'article',
63
+ filter: (data): data is { subject: Notebook.Notebook } => Obj.instanceOf(Notebook.Notebook, data.subject),
64
+ component: ({ data, role }) => {
65
+ const compiler = useCompiler();
66
+ return <NotebookContainer role={role} subject={data.subject} env={compiler?.environment} />;
67
+ },
68
+ }),
69
+ // TODO(burdon): Standardize PluginSettings vs ObjectSettings.
70
+ // TODO(burdon): Why is ScriptProperties different from ScriptObjectSettings?
71
+ Surface.create({
72
+ id: `${meta.id}/companion/base-settings`,
73
+ role: 'base-object-settings',
74
+ filter: (data): data is { subject: Script.Script } => Obj.instanceOf(Script.Script, data.subject),
75
+ component: ({ data }) => <ScriptProperties object={data.subject} />,
76
+ }),
77
+ Surface.create({
78
+ id: `${meta.id}/companion/settings`,
79
+ role: 'object-settings',
80
+ filter: (data): data is { subject: Script.Script } => Obj.instanceOf(Script.Script, data.subject),
81
+ component: ({ data }) => <ScriptObjectSettings object={data.subject} />,
82
+ }),
83
+ Surface.create({
84
+ id: `${meta.id}/companion/execute`,
85
+ role: 'article',
86
+ filter: (data): data is { companionTo: Script.Script } =>
87
+ Obj.instanceOf(Script.Script, data.companionTo) && data.subject === 'execute',
88
+ component: ({ data, role }) => <TestContainer script={data.companionTo} role={role} />,
89
+ }),
90
+ Surface.create({
91
+ id: `${meta.id}/companion/logs`,
92
+ role: 'article',
93
+ filter: (data): data is { companionTo: Script.Script } =>
94
+ Obj.instanceOf(Script.Script, data.companionTo) && data.subject === 'logs',
95
+ component: ({ data, role }) => {
96
+ const space = getSpace(data.companionTo);
97
+ const queueDxn = space?.properties.invocationTraceQueue?.dxn;
98
+ return (
99
+ <Layout.Main role={role}>
100
+ <InvocationTraceContainer
101
+ db={space?.db}
102
+ queueDxn={queueDxn}
103
+ target={data.companionTo}
104
+ detailAxis='block'
105
+ />
106
+ </Layout.Main>
107
+ );
108
+ },
109
+ }),
110
+ Surface.create({
111
+ id: DEPLOYMENT_DIALOG,
112
+ role: 'dialog',
113
+ filter: (data): data is { props: { accessToken: AccessToken.AccessToken; scriptTemplates: any } } =>
114
+ data.component === DEPLOYMENT_DIALOG,
115
+ component: ({ data }) => <DeploymentDialog {...data.props} />,
116
+ }),
117
+ ]),
118
+ ),
119
+ );
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Capability } from '@dxos/app-framework';
6
+
7
+ export const ScriptSettings = Capability.lazy('ScriptSettings', () => import('./settings'));