@dxos/plugin-script 0.9.1-staging.ee54ba693a → 0.11.0

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 (295) hide show
  1. package/dist/lib/ScriptPlugin.mjs +25 -0
  2. package/dist/lib/ScriptPlugin.mjs.map +1 -0
  3. package/dist/lib/ScriptPlugin.node.mjs +11 -0
  4. package/dist/lib/ScriptPlugin.node.mjs.map +1 -0
  5. package/dist/lib/ScriptPlugin.workerd.mjs +11 -0
  6. package/dist/lib/ScriptPlugin.workerd.mjs.map +1 -0
  7. package/dist/lib/capabilities/node.mjs +11 -0
  8. package/dist/lib/capabilities/node.mjs.map +1 -0
  9. package/dist/lib/capabilities.mjs +13 -0
  10. package/dist/lib/capabilities.mjs.map +1 -0
  11. package/dist/lib/chunk-DeploymentDialog.mjs +85 -0
  12. package/dist/lib/chunk-DeploymentDialog.mjs.map +1 -0
  13. package/dist/lib/chunk-NotebookArticle.mjs +719 -0
  14. package/dist/lib/chunk-NotebookArticle.mjs.map +1 -0
  15. package/dist/lib/chunk-ScriptArticle.mjs +67 -0
  16. package/dist/lib/chunk-ScriptArticle.mjs.map +1 -0
  17. package/dist/lib/chunk-ScriptProperties.mjs +240 -0
  18. package/dist/lib/chunk-ScriptProperties.mjs.map +1 -0
  19. package/dist/lib/chunk-ScriptSettings.mjs +40 -0
  20. package/dist/lib/chunk-ScriptSettings.mjs.map +1 -0
  21. package/dist/lib/chunk-TestContainer.mjs +40 -0
  22. package/dist/lib/chunk-TestContainer.mjs.map +1 -0
  23. package/dist/lib/chunk-app-graph-builder.mjs +33 -0
  24. package/dist/lib/chunk-app-graph-builder.mjs.map +1 -0
  25. package/dist/lib/chunk-compiler.mjs +60 -0
  26. package/dist/lib/chunk-compiler.mjs.map +1 -0
  27. package/dist/lib/chunk-compiler2.mjs +76 -0
  28. package/dist/lib/chunk-compiler2.mjs.map +1 -0
  29. package/dist/lib/chunk-create-object.mjs +36 -0
  30. package/dist/lib/chunk-create-object.mjs.map +1 -0
  31. package/dist/lib/chunk-create-script.mjs +32 -0
  32. package/dist/lib/chunk-create-script.mjs.map +1 -0
  33. package/dist/lib/chunk-create.mjs +34 -0
  34. package/dist/lib/chunk-create.mjs.map +1 -0
  35. package/dist/lib/chunk-delete.mjs +15 -0
  36. package/dist/lib/chunk-delete.mjs.map +1 -0
  37. package/dist/lib/chunk-deploy.mjs +53 -0
  38. package/dist/lib/chunk-deploy.mjs.map +1 -0
  39. package/dist/lib/chunk-functions.mjs +238 -0
  40. package/dist/lib/chunk-functions.mjs.map +1 -0
  41. package/dist/lib/chunk-inspect-invocations.mjs +42 -0
  42. package/dist/lib/chunk-inspect-invocations.mjs.map +1 -0
  43. package/dist/lib/chunk-install-function.mjs +40 -0
  44. package/dist/lib/chunk-install-function.mjs.map +1 -0
  45. package/dist/lib/chunk-invoke.mjs +25 -0
  46. package/dist/lib/chunk-invoke.mjs.map +1 -0
  47. package/dist/lib/chunk-meta.mjs +33 -0
  48. package/dist/lib/chunk-meta.mjs.map +1 -0
  49. package/dist/lib/chunk-operation-handler.mjs +13 -0
  50. package/dist/lib/chunk-operation-handler.mjs.map +1 -0
  51. package/dist/lib/chunk-query-deployed-functions.mjs +31 -0
  52. package/dist/lib/chunk-query-deployed-functions.mjs.map +1 -0
  53. package/dist/lib/chunk-react-surface.mjs +140 -0
  54. package/dist/lib/chunk-react-surface.mjs.map +1 -0
  55. package/dist/lib/chunk-read.mjs +20 -0
  56. package/dist/lib/chunk-read.mjs.map +1 -0
  57. package/dist/lib/chunk-settings.mjs +23 -0
  58. package/dist/lib/chunk-settings.mjs.map +1 -0
  59. package/dist/lib/chunk-skill-definition.mjs +10 -0
  60. package/dist/lib/chunk-skill-definition.mjs.map +1 -0
  61. package/dist/lib/chunk-skills.mjs +35 -0
  62. package/dist/lib/chunk-skills.mjs.map +1 -0
  63. package/dist/lib/{neutral/chunk-WAGQ77UQ.mjs → chunk-templates.mjs} +82 -84
  64. package/dist/lib/chunk-templates.mjs.map +1 -0
  65. package/dist/lib/chunk-types.mjs +90 -0
  66. package/dist/lib/chunk-types.mjs.map +1 -0
  67. package/dist/lib/chunk-update.mjs +27 -0
  68. package/dist/lib/chunk-update.mjs.map +1 -0
  69. package/dist/lib/chunk-util.mjs +146 -0
  70. package/dist/lib/chunk-util.mjs.map +1 -0
  71. package/dist/lib/components.mjs +618 -0
  72. package/dist/lib/components.mjs.map +1 -0
  73. package/dist/lib/containers.mjs +12 -0
  74. package/dist/lib/containers.mjs.map +1 -0
  75. package/dist/lib/hooks.mjs +307 -0
  76. package/dist/lib/hooks.mjs.map +1 -0
  77. package/dist/lib/index.mjs +5 -0
  78. package/dist/lib/meta.mjs +2 -0
  79. package/dist/lib/operations.mjs +7 -0
  80. package/dist/lib/operations.mjs.map +1 -0
  81. package/dist/lib/plugin.mjs +9 -0
  82. package/dist/lib/plugin.mjs.map +1 -0
  83. package/dist/lib/skills.mjs +2 -0
  84. package/dist/lib/templates.mjs +2 -0
  85. package/dist/lib/testing.mjs +75 -0
  86. package/dist/lib/testing.mjs.map +1 -0
  87. package/dist/lib/translations.mjs +98 -0
  88. package/dist/lib/translations.mjs.map +1 -0
  89. package/dist/lib/types.mjs +2 -0
  90. package/dist/types/src/capabilities/ScriptSurfaces.d.ts +28 -0
  91. package/dist/types/src/capabilities/ScriptSurfaces.d.ts.map +1 -0
  92. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  93. package/dist/types/src/capabilities/compiler.d.ts +1 -1
  94. package/dist/types/src/capabilities/create-object.d.ts +1 -1
  95. package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
  96. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  97. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  98. package/dist/types/src/capabilities/settings.d.ts +1 -1
  99. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts +1 -1
  100. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts.map +1 -1
  101. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts.map +1 -1
  102. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts.map +1 -1
  103. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts +1 -1
  104. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  105. package/dist/types/src/components/TestPanel/TestPanel.d.ts +1 -1
  106. package/dist/types/src/components/TestPanel/TestPanel.d.ts.map +1 -1
  107. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts +1 -1
  108. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  109. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts +1 -1
  110. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.d.ts +5 -2
  111. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.d.ts.map +1 -1
  112. package/dist/types/src/containers/NotebookArticle/NotebookArticle.d.ts +4 -1
  113. package/dist/types/src/containers/NotebookArticle/NotebookArticle.d.ts.map +1 -1
  114. package/dist/types/src/containers/ScriptArticle/ScriptArticle.d.ts +4 -1
  115. package/dist/types/src/containers/ScriptArticle/ScriptArticle.d.ts.map +1 -1
  116. package/dist/types/src/containers/ScriptArticle/ScriptArticle.stories.d.ts.map +1 -1
  117. package/dist/types/src/containers/ScriptProperties/FunctionBinding.d.ts +4 -1
  118. package/dist/types/src/containers/ScriptProperties/FunctionBinding.d.ts.map +1 -1
  119. package/dist/types/src/containers/ScriptProperties/FunctionPublishing.d.ts +4 -1
  120. package/dist/types/src/containers/ScriptProperties/FunctionPublishing.d.ts.map +1 -1
  121. package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts +4 -1
  122. package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts.map +1 -1
  123. package/dist/types/src/containers/ScriptProperties/ScriptProperties.stories.d.ts.map +1 -1
  124. package/dist/types/src/containers/ScriptProperties/SkillEditor.d.ts +4 -1
  125. package/dist/types/src/containers/ScriptProperties/SkillEditor.d.ts.map +1 -1
  126. package/dist/types/src/containers/ScriptSettings/ScriptSettings.d.ts +4 -1
  127. package/dist/types/src/containers/ScriptSettings/ScriptSettings.d.ts.map +1 -1
  128. package/dist/types/src/containers/ScriptSettings/ScriptSettings.stories.d.ts +4 -1
  129. package/dist/types/src/containers/ScriptSettings/ScriptSettings.stories.d.ts.map +1 -1
  130. package/dist/types/src/containers/TestContainer/TestContainer.d.ts +4 -1
  131. package/dist/types/src/containers/TestContainer/TestContainer.d.ts.map +1 -1
  132. package/dist/types/src/hooks/deploy.d.ts +2 -35
  133. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  134. package/dist/types/src/hooks/format.d.ts +2 -23
  135. package/dist/types/src/hooks/format.d.ts.map +1 -1
  136. package/dist/types/src/hooks/template.d.ts +2 -18
  137. package/dist/types/src/hooks/template.d.ts.map +1 -1
  138. package/dist/types/src/hooks/useToolbarState.d.ts +1 -1
  139. package/dist/types/src/hooks/useToolbarState.d.ts.map +1 -1
  140. package/dist/types/src/notebook/compute-graph.d.ts +1 -1
  141. package/dist/types/src/notebook/compute-graph.d.ts.map +1 -1
  142. package/dist/types/src/skills/functions/deploy.d.ts.map +1 -1
  143. package/dist/types/src/skills/functions/inspect-invocations.d.ts.map +1 -1
  144. package/dist/types/src/templates/chess-bot.d.ts +2 -2
  145. package/dist/types/src/templates/chess-bot.d.ts.map +1 -1
  146. package/dist/types/src/templates/commentary.d.ts +2 -2
  147. package/dist/types/src/templates/commentary.d.ts.map +1 -1
  148. package/dist/types/src/types/ScriptCapabilities.d.ts +1 -1
  149. package/dist/types/src/types/ScriptCapabilities.d.ts.map +1 -1
  150. package/dist/types/tsconfig.tsbuildinfo +1 -1
  151. package/package.json +88 -82
  152. package/src/capabilities/ScriptSurfaces.tsx +96 -0
  153. package/src/capabilities/app-graph-builder.ts +2 -2
  154. package/src/capabilities/compiler.ts +1 -1
  155. package/src/capabilities/react-surface.ts +82 -0
  156. package/src/components/NotebookStack/NotebookCell.tsx +9 -2
  157. package/src/components/NotebookStack/NotebookStack.stories.tsx +2 -0
  158. package/src/components/NotebookStack/NotebookStack.tsx +22 -14
  159. package/src/components/QueryEditor/QueryEditor.stories.tsx +1 -1
  160. package/src/components/QueryEditor/QueryEditor.tsx +1 -0
  161. package/src/components/ScriptToolbar/ScriptToolbar.stories.tsx +1 -1
  162. package/src/components/ScriptToolbar/ScriptToolbar.tsx +1 -1
  163. package/src/components/TestPanel/TestPanel.tsx +2 -2
  164. package/src/components/TypescriptEditor/TypescriptEditor.tsx +1 -1
  165. package/src/containers/DeploymentDialog/DeploymentDialog.stories.tsx +1 -1
  166. package/src/containers/DeploymentDialog/DeploymentDialog.tsx +3 -1
  167. package/src/containers/NotebookArticle/NotebookArticle.stories.tsx +1 -1
  168. package/src/containers/NotebookArticle/NotebookArticle.tsx +4 -2
  169. package/src/containers/ScriptArticle/ScriptArticle.stories.tsx +2 -1
  170. package/src/containers/ScriptArticle/ScriptArticle.tsx +3 -1
  171. package/src/containers/ScriptProperties/FunctionBinding.tsx +5 -3
  172. package/src/containers/ScriptProperties/FunctionPublishing.tsx +4 -2
  173. package/src/containers/ScriptProperties/ScriptProperties.stories.tsx +2 -1
  174. package/src/containers/ScriptProperties/ScriptProperties.tsx +2 -0
  175. package/src/containers/ScriptProperties/SkillEditor.tsx +3 -1
  176. package/src/containers/ScriptSettings/ScriptSettings.tsx +2 -0
  177. package/src/containers/TestContainer/TestContainer.tsx +4 -2
  178. package/src/e2e/ai.test.ts +2 -2
  179. package/src/e2e/deploy.test.ts +2 -2
  180. package/src/hooks/deploy.ts +13 -4
  181. package/src/hooks/format.ts +2 -2
  182. package/src/hooks/template.ts +3 -3
  183. package/src/hooks/useToolbarState.ts +1 -1
  184. package/src/notebook/compute-graph.test.ts +1 -1
  185. package/src/notebook/compute-graph.ts +1 -1
  186. package/src/skills/functions/deploy.ts +5 -6
  187. package/src/skills/functions/inspect-invocations.ts +2 -2
  188. package/src/skills/functions/install-function.ts +1 -1
  189. package/src/skills/functions/invoke.ts +1 -1
  190. package/src/skills/functions/query-deployed-functions.ts +1 -1
  191. package/src/templates/chess-bot.ts +3 -3
  192. package/src/templates/commentary.ts +3 -3
  193. package/src/testing/simulator.test.ts +1 -1
  194. package/src/types/ScriptCapabilities.ts +1 -1
  195. package/src/util/deploy.ts +3 -3
  196. package/src/util/functions.ts +2 -2
  197. package/dist/lib/neutral/DeploymentDialog-7OIIL7LB.mjs +0 -114
  198. package/dist/lib/neutral/DeploymentDialog-7OIIL7LB.mjs.map +0 -7
  199. package/dist/lib/neutral/NotebookArticle-AOBB3XGD.mjs +0 -745
  200. package/dist/lib/neutral/NotebookArticle-AOBB3XGD.mjs.map +0 -7
  201. package/dist/lib/neutral/ScriptArticle-I3DOJARR.mjs +0 -79
  202. package/dist/lib/neutral/ScriptArticle-I3DOJARR.mjs.map +0 -7
  203. package/dist/lib/neutral/ScriptPlugin.mjs +0 -51
  204. package/dist/lib/neutral/ScriptPlugin.mjs.map +0 -7
  205. package/dist/lib/neutral/ScriptPlugin.node.mjs +0 -27
  206. package/dist/lib/neutral/ScriptPlugin.node.mjs.map +0 -7
  207. package/dist/lib/neutral/ScriptPlugin.workerd.mjs +0 -21
  208. package/dist/lib/neutral/ScriptPlugin.workerd.mjs.map +0 -7
  209. package/dist/lib/neutral/ScriptProperties-RHDQGMGT.mjs +0 -296
  210. package/dist/lib/neutral/ScriptProperties-RHDQGMGT.mjs.map +0 -7
  211. package/dist/lib/neutral/ScriptSettings-NS3ZY7ZR.mjs +0 -35
  212. package/dist/lib/neutral/ScriptSettings-NS3ZY7ZR.mjs.map +0 -7
  213. package/dist/lib/neutral/TestContainer-AFVTBYSJ.mjs +0 -44
  214. package/dist/lib/neutral/TestContainer-AFVTBYSJ.mjs.map +0 -7
  215. package/dist/lib/neutral/app-graph-builder-POP3CX6G.mjs +0 -52
  216. package/dist/lib/neutral/app-graph-builder-POP3CX6G.mjs.map +0 -7
  217. package/dist/lib/neutral/capabilities/index.mjs +0 -21
  218. package/dist/lib/neutral/capabilities/index.mjs.map +0 -7
  219. package/dist/lib/neutral/capabilities/node.mjs +0 -17
  220. package/dist/lib/neutral/capabilities/node.mjs.map +0 -7
  221. package/dist/lib/neutral/chunk-2REUEDUA.mjs +0 -56
  222. package/dist/lib/neutral/chunk-2REUEDUA.mjs.map +0 -7
  223. package/dist/lib/neutral/chunk-652CIABA.mjs +0 -124
  224. package/dist/lib/neutral/chunk-652CIABA.mjs.map +0 -7
  225. package/dist/lib/neutral/chunk-6DOWVKIW.mjs +0 -344
  226. package/dist/lib/neutral/chunk-6DOWVKIW.mjs.map +0 -7
  227. package/dist/lib/neutral/chunk-CHNFYLKW.mjs +0 -52
  228. package/dist/lib/neutral/chunk-CHNFYLKW.mjs.map +0 -7
  229. package/dist/lib/neutral/chunk-INFWOSTM.mjs +0 -156
  230. package/dist/lib/neutral/chunk-INFWOSTM.mjs.map +0 -7
  231. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +0 -10
  232. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +0 -7
  233. package/dist/lib/neutral/chunk-KSVKXCTX.mjs +0 -8
  234. package/dist/lib/neutral/chunk-KSVKXCTX.mjs.map +0 -7
  235. package/dist/lib/neutral/chunk-NVV5UYY4.mjs +0 -50
  236. package/dist/lib/neutral/chunk-NVV5UYY4.mjs.map +0 -7
  237. package/dist/lib/neutral/chunk-USJ44FIU.mjs +0 -8
  238. package/dist/lib/neutral/chunk-USJ44FIU.mjs.map +0 -7
  239. package/dist/lib/neutral/chunk-WAGQ77UQ.mjs.map +0 -7
  240. package/dist/lib/neutral/compiler-ODK4UA2N.mjs +0 -101
  241. package/dist/lib/neutral/compiler-ODK4UA2N.mjs.map +0 -7
  242. package/dist/lib/neutral/components/index.mjs +0 -695
  243. package/dist/lib/neutral/components/index.mjs.map +0 -7
  244. package/dist/lib/neutral/containers/index.mjs +0 -19
  245. package/dist/lib/neutral/containers/index.mjs.map +0 -7
  246. package/dist/lib/neutral/create-SGHWWTET.mjs +0 -46
  247. package/dist/lib/neutral/create-SGHWWTET.mjs.map +0 -7
  248. package/dist/lib/neutral/create-object-QW66KQWS.mjs +0 -43
  249. package/dist/lib/neutral/create-object-QW66KQWS.mjs.map +0 -7
  250. package/dist/lib/neutral/create-script-CIEJOBIU.mjs +0 -45
  251. package/dist/lib/neutral/create-script-CIEJOBIU.mjs.map +0 -7
  252. package/dist/lib/neutral/delete-72RXVLVI.mjs +0 -21
  253. package/dist/lib/neutral/delete-72RXVLVI.mjs.map +0 -7
  254. package/dist/lib/neutral/deploy-PJTJAQZY.mjs +0 -67
  255. package/dist/lib/neutral/deploy-PJTJAQZY.mjs.map +0 -7
  256. package/dist/lib/neutral/hooks/index.mjs +0 -369
  257. package/dist/lib/neutral/hooks/index.mjs.map +0 -7
  258. package/dist/lib/neutral/index.mjs +0 -41
  259. package/dist/lib/neutral/index.mjs.map +0 -7
  260. package/dist/lib/neutral/inspect-invocations-ZUXVUAML.mjs +0 -59
  261. package/dist/lib/neutral/inspect-invocations-ZUXVUAML.mjs.map +0 -7
  262. package/dist/lib/neutral/install-function-YFDZLVMJ.mjs +0 -49
  263. package/dist/lib/neutral/install-function-YFDZLVMJ.mjs.map +0 -7
  264. package/dist/lib/neutral/invoke-CDRBQ2WA.mjs +0 -32
  265. package/dist/lib/neutral/invoke-CDRBQ2WA.mjs.map +0 -7
  266. package/dist/lib/neutral/meta.json +0 -1
  267. package/dist/lib/neutral/meta.mjs +0 -10
  268. package/dist/lib/neutral/meta.mjs.map +0 -7
  269. package/dist/lib/neutral/operation-handler-M3B6IRMV.mjs +0 -18
  270. package/dist/lib/neutral/operation-handler-M3B6IRMV.mjs.map +0 -7
  271. package/dist/lib/neutral/operations/index.mjs +0 -8
  272. package/dist/lib/neutral/operations/index.mjs.map +0 -7
  273. package/dist/lib/neutral/plugin.mjs +0 -16
  274. package/dist/lib/neutral/plugin.mjs.map +0 -7
  275. package/dist/lib/neutral/query-deployed-functions-RBQMGON2.mjs +0 -34
  276. package/dist/lib/neutral/query-deployed-functions-RBQMGON2.mjs.map +0 -7
  277. package/dist/lib/neutral/react-surface-GEXOZLBC.mjs +0 -120
  278. package/dist/lib/neutral/react-surface-GEXOZLBC.mjs.map +0 -7
  279. package/dist/lib/neutral/read-OY3K5R3V.mjs +0 -26
  280. package/dist/lib/neutral/read-OY3K5R3V.mjs.map +0 -7
  281. package/dist/lib/neutral/settings-FD7HXEY6.mjs +0 -30
  282. package/dist/lib/neutral/settings-FD7HXEY6.mjs.map +0 -7
  283. package/dist/lib/neutral/skill-definition-JZ7UYBT7.mjs +0 -15
  284. package/dist/lib/neutral/skill-definition-JZ7UYBT7.mjs.map +0 -7
  285. package/dist/lib/neutral/skills/index.mjs +0 -10
  286. package/dist/lib/neutral/skills/index.mjs.map +0 -7
  287. package/dist/lib/neutral/templates/index.mjs +0 -10
  288. package/dist/lib/neutral/templates/index.mjs.map +0 -7
  289. package/dist/lib/neutral/translations.mjs +0 -104
  290. package/dist/lib/neutral/translations.mjs.map +0 -7
  291. package/dist/lib/neutral/types/index.mjs +0 -17
  292. package/dist/lib/neutral/types/index.mjs.map +0 -7
  293. package/dist/lib/neutral/update-Z5VGOLBN.mjs +0 -44
  294. package/dist/lib/neutral/update-Z5VGOLBN.mjs.map +0 -7
  295. package/src/capabilities/react-surface.tsx +0 -132
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/components/NotebookStack/NotebookMenu.tsx", "../../../../src/components/NotebookStack/NotebookStack.tsx", "../../../../src/components/NotebookStack/NotebookCell.tsx", "../../../../src/components/TypescriptEditor/TypescriptEditor.tsx", "../../../../src/components/QueryEditor/QueryEditor.tsx", "../../../../src/components/ScriptToolbar/ScriptToolbar.tsx", "../../../../src/components/TestPanel/TestPanel.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { DropdownMenu, useTranslation } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\nimport { type Notebook } from '#types';\n\nexport type NotebookMenuProps = {\n cell?: Notebook.Cell;\n onCellInsert?: (type: Notebook.CellType, after: string | undefined) => void;\n onCellDelete?: (id: string) => void;\n};\n\n// TODO(burdon): Better way to organize menu?\nexport const NotebookMenu = ({ cell, onCellInsert, onCellDelete }: NotebookMenuProps) => {\n const { t } = useTranslation(meta.profile.key);\n return (\n <DropdownMenu.Portal>\n <DropdownMenu.Content>\n <DropdownMenu.Viewport>\n <DropdownMenu.Item onClick={() => onCellInsert?.('script', cell?.id)}>\n {t('notebook-cell-insert-script.label')}\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onCellInsert?.('prompt', cell?.id)}>\n {t('notebook-cell-insert-prompt.label')}\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onCellInsert?.('query', cell?.id)}>\n {t('notebook-cell-insert-query.label')}\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onCellInsert?.('markdown', cell?.id)}>\n {t('notebook-cell-insert-markdown.label')}\n </DropdownMenu.Item>\n {cell && onCellDelete && (\n <DropdownMenu.Item onClick={() => onCellDelete?.(cell.id)}>\n {t('notebook-cell-delete.label')}\n </DropdownMenu.Item>\n )}\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo, useState } from 'react';\n\nimport { Obj } from '@dxos/echo';\nimport { DropdownMenu, IconButton, ScrollArea, type ThemedClassName, useTranslation } from '@dxos/react-ui';\nimport { composable, composableProps } from '@dxos/react-ui';\nimport { Mosaic, type MosaicEventHandler, type MosaicTileProps } from '@dxos/react-ui-mosaic';\nimport { mx } from '@dxos/ui-theme';\nimport { arrayMove } from '@dxos/util';\n\nimport { meta } from '#meta';\nimport { type Notebook } from '#types';\n\nimport { type TypescriptEditorProps } from '../TypescriptEditor';\nimport { NotebookCell, type NotebookCellProps } from './NotebookCell';\nimport { NotebookMenu } from './NotebookMenu';\n\nconst minSectionHeight = 'min-h-[16rem]';\n\nconst getCellId = (cell: Notebook.Cell) => cell.id;\n\nexport type NotebookStackProps = ThemedClassName<\n {\n notebook?: Notebook.Notebook;\n } & (Pick<NotebookSectionProps, 'db' | 'graph' | 'promptResults' | 'onCellInsert' | 'onCellDelete'> &\n Pick<TypescriptEditorProps, 'env'>)\n>;\n\nexport const NotebookStack = composable<HTMLDivElement, NotebookStackProps>(\n ({ notebook, db, graph, promptResults, onCellInsert, onCellDelete, env, ...props }, forwardedRef) => {\n const [viewport, setViewport] = useState<HTMLElement | null>(null);\n\n // Stable Tile identity: an inline component is a new type each render, so Mosaic would unmount and\n // remount every cell (losing editor state) whenever this component re-renders.\n const Tile = useCallback(\n (tileProps: MosaicTileProps<Notebook.Cell>) => (\n <NotebookSection\n {...tileProps}\n db={db}\n graph={graph}\n promptResults={promptResults}\n onCellInsert={onCellInsert}\n onCellDelete={onCellDelete}\n env={env}\n />\n ),\n [db, graph, promptResults, onCellInsert, onCellDelete, env],\n );\n\n // Reorder cells in place; placeholder/tile locations are 1-based with half-step placeholders between\n // tiles, so the floor of the drop location is the destination array index (see Mosaic.Stack).\n const eventHandler = useMemo<MosaicEventHandler<Notebook.Cell>>(\n () => ({\n id: notebook?.id ?? 'notebook',\n // Only the notebook's own cells are droppable; onDrop only reorders within this notebook.\n canDrop: ({ source }) => !!notebook && notebook.cells.some((cell) => cell.id === source.id),\n onDrop: ({ source, target }) => {\n if (!notebook || !target) {\n return;\n }\n\n const to =\n target.type === 'tile' || target.type === 'placeholder'\n ? target.location\n : target.type === 'container'\n ? notebook.cells.length\n : -1;\n const insertIndex = typeof to === 'number' && to >= 0 ? Math.floor(to) : -1;\n if (insertIndex < 0) {\n return;\n }\n\n Obj.update(notebook, (notebook) => {\n const from = notebook.cells.findIndex((cell) => cell.id === source.id);\n if (from !== -1) {\n arrayMove(notebook.cells, from, insertIndex);\n }\n });\n },\n }),\n [notebook],\n );\n\n return (\n <Mosaic.Root ref={forwardedRef}>\n <Mosaic.Container asChild orientation='vertical' autoScroll={viewport} eventHandler={eventHandler}>\n <ScrollArea.Root orientation='vertical' padding {...composableProps(props)}>\n <ScrollArea.Viewport ref={setViewport}>\n <Mosaic.Stack orientation='vertical' items={notebook?.cells ?? []} getId={getCellId} Tile={Tile} />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n </Mosaic.Container>\n </Mosaic.Root>\n );\n },\n);\n\ntype NotebookSectionProps = MosaicTileProps<Notebook.Cell> &\n Pick<NotebookCellProps, 'db' | 'graph' | 'promptResults' | 'onCellInsert' | 'onCellDelete' | 'env'>;\n\n// TODO(burdon): Option for narrow rail (with compact buttons that align with first button in toolbar).\n// TODO(burdon): Reinstate a Mosaic-native resize affordance for query cells (currently a fixed min-height).\nconst NotebookSection = ({\n data: cell,\n db,\n env,\n graph,\n promptResults,\n onCellInsert,\n onCellDelete,\n ...tileProps\n}: NotebookSectionProps) => {\n const { t } = useTranslation(meta.profile.key);\n const resizable = cell.type === 'query';\n const [dragHandle, setDragHandle] = useState<HTMLButtonElement | null>(null);\n\n return (\n <Mosaic.Tile\n {...tileProps}\n data={cell}\n dragHandle={dragHandle}\n classNames={mx(\n 'grid grid-cols-[min-content_1fr] overflow-visible border border-subdued-separator',\n resizable && minSectionHeight,\n )}\n >\n {/* Side rail */}\n <div className='flex flex-col p-1 border-e border-subdued-separator dx-attention-surface'>\n <IconButton\n ref={setDragHandle}\n variant='ghost'\n icon='ph--dots-six-vertical--regular'\n iconOnly\n label='Drag handle'\n />\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <IconButton\n variant='ghost'\n icon='ph--dots-three--regular'\n iconOnly\n label={t('notebook-cell-insert.label')}\n />\n </DropdownMenu.Trigger>\n <NotebookMenu cell={cell} onCellInsert={onCellInsert} onCellDelete={onCellDelete} />\n </DropdownMenu.Root>\n </div>\n\n <NotebookCell db={db} cell={cell} env={env} graph={graph} promptResults={promptResults} />\n </Mosaic.Tile>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { AppSurface } from '@dxos/app-toolkit/ui';\nimport { type Database, Obj } from '@dxos/echo';\nimport { Doc } from '@dxos/echo-doc';\nimport { invariant } from '@dxos/invariant';\nimport { TemplateEditor } from '@dxos/plugin-routine/components';\nimport { useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { QueryEditor, type QueryEditorProps } from '@dxos/react-ui-components';\nimport { Editor, type EditorViewProps } from '@dxos/react-ui-editor';\nimport {\n type BasicExtensionsOptions,\n createBasicExtensions,\n createDataExtensions,\n createMarkdownExtensions,\n createThemeExtensions,\n decorateMarkdown,\n} from '@dxos/ui-editor';\nimport { mx } from '@dxos/ui-theme';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta } from '#meta';\nimport { type Notebook } from '#types';\n\nimport { type ComputeGraph } from '../../notebook';\nimport { TypescriptEditor, type TypescriptEditorProps } from '../TypescriptEditor';\nimport { type NotebookMenuProps } from './NotebookMenu';\n\nconst editorStyles = 'p-2 ps-3';\nconst valueStyles = 'p-1 ps-3';\n\nexport type NotebookCellProps = {\n db?: Database.Database;\n graph?: ComputeGraph;\n dragging?: boolean;\n cell: Notebook.Cell;\n promptResults?: Record<string, string>;\n} & (Pick<NotebookMenuProps, 'onCellInsert' | 'onCellDelete'> & Pick<TypescriptEditorProps, 'env'>);\n\n// TODO(burdon): Show evaluation errors.\nexport const NotebookCell = ({ db, graph, dragging, cell, promptResults, env }: NotebookCellProps) => {\n const { t } = useTranslation(meta.profile.key);\n\n const extensions = useMemo(() => {\n return cell.source?.target\n ? [createDataExtensions({ id: cell.id, text: Doc.createAccessor(cell.source.target, ['content']) })]\n : [];\n }, [cell.source?.target]);\n\n const explorerGraph = cell.graph?.target;\n\n const handleQueryChange = useCallback<NonNullable<QueryEditorProps['onChange']>>(\n (value: string) => {\n invariant(cell.source?.target);\n Obj.update(cell.source.target, (obj) => {\n obj.content = value;\n });\n },\n [cell],\n );\n\n switch (cell.type) {\n case 'markdown':\n if (!cell.source?.target) {\n return null;\n }\n\n return (\n <NotebookTextEditor\n id={cell.id}\n classNames={editorStyles}\n initialValue={cell.source.target.content}\n extensions={extensions}\n />\n );\n\n case 'script':\n if (!cell.source?.target) {\n return null;\n }\n\n return (\n <div className='flex flex-col divide-y divide-subdued-separator'>\n <TypescriptEditor\n id={cell.id}\n role='section'\n classNames={editorStyles}\n initialValue={cell.source.target.content}\n extensions={extensions}\n env={env}\n options={{\n placeholder: t('notebook-cell.placeholder'),\n highlightActiveLine: false,\n lineNumbers: false,\n }}\n />\n <NotebookCellValue cell={cell} graph={graph} />\n </div>\n );\n\n case 'query':\n if (!cell.source?.target) {\n return null;\n }\n\n // TODO(burdon): Remove app-framework deps (via render prop).\n return (\n <div className={mx('h-full overflow-hidden grid', explorerGraph && !dragging && 'grid-rows-[min-content_1fr]')}>\n <QueryEditor\n id={cell.id}\n classNames={editorStyles}\n db={db}\n value={cell.source.target.content}\n onChange={handleQueryChange}\n />\n {explorerGraph && !dragging && (\n <Surface.Surface\n type={AppSurface.Section}\n limit={1}\n data={{ subject: explorerGraph, attendableId: cell.id }}\n />\n )}\n </div>\n );\n\n // TODO(burdon): Use streaming response from Chat.\n case 'prompt':\n if (!cell.prompt?.target) {\n return null;\n }\n\n return (\n <>\n <TemplateEditor id={cell.id} source={cell.prompt.target.text} lineNumbers={false} classNames={editorStyles} />\n <NotebookPromptResult cell={cell} promptResults={promptResults} />\n </>\n );\n\n default:\n return null;\n }\n};\n\nconst NotebookCellValue = ({ cell, graph }: NotebookCellProps) => {\n const name = graph?.getExpressions()[cell.id]?.name;\n const value = graph?.getValue(cell.id);\n if (value == null) {\n return null;\n }\n\n return (\n <div className={mx('flex w-full bg-group-surface text-description font-mono', valueStyles)}>\n {name && (\n <>\n <span className='text-success-text'>{name}</span>\n <span className='text-description'>&nbsp;=&nbsp;</span>\n </>\n )}\n <span>{value}</span>\n </div>\n );\n};\n\nconst NotebookPromptResult = ({ cell, promptResults }: NotebookCellProps) => {\n if (!cell.prompt) {\n return null;\n }\n\n const value = promptResults?.[cell.prompt.uri];\n if (value == null) {\n return null;\n }\n\n return (\n <div className={mx('flex w-full bg-group-surface text-description border-y border-subdued-separator', valueStyles)}>\n <NotebookTextEditor readOnly value={value} />\n </div>\n );\n};\n\nconst NotebookTextEditor = ({\n extensions: extensionsProp,\n readOnly,\n ...props\n}: EditorViewProps & Pick<BasicExtensionsOptions, 'readOnly'>) => {\n const { t } = useTranslation(meta.profile.key);\n const { themeMode } = useThemeContext();\n const extensions = useMemo(() => {\n return [\n createThemeExtensions({ themeMode, syntaxHighlighting: true }),\n createBasicExtensions({ placeholder: t('notebook-markdown.placeholder'), readOnly }),\n createMarkdownExtensions(),\n decorateMarkdown(),\n extensionsProp,\n ].filter(isNonNullable);\n }, [extensionsProp, readOnly, themeMode, t]);\n\n return (\n <Editor.Root>\n <Editor.View classNames='border' {...props} extensions={extensions} selectionEnd />\n </Editor.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { autocompletion, completionKeymap } from '@codemirror/autocomplete';\nimport { javascript } from '@codemirror/lang-javascript';\nimport { HighlightStyle } from '@codemirror/language';\nimport { lintKeymap } from '@codemirror/lint';\nimport { Prec } from '@codemirror/state';\nimport { keymap } from '@codemirror/view';\nimport { tags } from '@lezer/highlight';\nimport { composeRefs } from '@radix-ui/react-compose-refs';\nimport { type VirtualTypeScriptEnvironment } from '@typescript/vfs';\nimport { continueKeymap } from '@valtown/codemirror-continue';\nimport { type HoverInfo, tsAutocomplete, tsFacet, tsHover, tsLinter, tsSync } from '@valtown/codemirror-ts';\nimport React from 'react';\n\nimport { type ThemedClassName, type ThemeMode, useThemeContext } from '@dxos/react-ui';\nimport { composable, composableProps } from '@dxos/react-ui';\nimport { type UseTextEditorProps, useTextEditor } from '@dxos/react-ui-editor';\nimport { Domino } from '@dxos/ui';\nimport {\n type BasicExtensionsOptions,\n InputModeExtensions,\n createBasicExtensions,\n createThemeExtensions,\n defaultStyles,\n} from '@dxos/ui-editor';\nimport { type EditorInputMode } from '@dxos/ui-editor/types';\nimport { isNonNullable } from '@dxos/util';\n\nexport type TypescriptEditorProps = ThemedClassName<\n {\n id: string;\n role?: string;\n inputMode?: EditorInputMode;\n toolbar?: boolean;\n env?: VirtualTypeScriptEnvironment;\n options?: BasicExtensionsOptions;\n } & Pick<UseTextEditorProps, 'initialValue' | 'extensions' | 'scrollTo' | 'selection'>\n>;\n\nexport const TypescriptEditor = composable<HTMLDivElement, TypescriptEditorProps>(\n (\n {\n classNames,\n id,\n role = 'article',\n inputMode = 'vscode',\n env,\n options,\n initialValue,\n extensions,\n scrollTo,\n selection,\n ...props\n },\n forwardedRef,\n ) => {\n const { themeMode } = useThemeContext();\n const { parentRef, focusAttributes } = useTextEditor(\n () => ({\n id,\n initialValue,\n selection,\n scrollTo,\n extensions: [\n extensions,\n createThemeExtensions({\n monospace: true,\n themeMode,\n syntaxHighlighting: true,\n }),\n createBasicExtensions({\n highlightActiveLine: true,\n indentWithTab: true,\n lineNumbers: true,\n lineWrapping: false,\n scrollPastEnd: role === 'article',\n search: true,\n ...options,\n }),\n\n InputModeExtensions[inputMode],\n javascript({ typescript: true }),\n autocompletion({ override: env ? [tsAutocomplete()] : undefined }),\n\n // Continues block comments when pressing Enter.\n Prec.high(keymap.of(continueKeymap)),\n keymap.of(completionKeymap),\n keymap.of(lintKeymap),\n\n // https://github.com/val-town/codemirror-ts\n env && [\n // TODO(burdon): Fix type.\n tsFacet.of({ env: env as any, path: `./src/${id}.ts` }),\n tsSync(),\n tsLinter(),\n tsHover({ renderTooltip: createTooltipRenderer(themeMode) }),\n ],\n ].filter(isNonNullable),\n }),\n [themeMode, id, extensions, inputMode, selection, scrollTo, env],\n );\n\n return (\n <div {...composableProps(props, { classNames, ...focusAttributes })} ref={composeRefs(parentRef, forwardedRef)} />\n );\n },\n);\n\n// TODO(burdon): Factor out (react-ui-editor).\nconst createTooltipRenderer = (themeMode: ThemeMode) => {\n const theme = HighlightStyle.define(themeMode === 'dark' ? defaultStyles.dark : defaultStyles.light);\n\n const classFromKind = (_kind: string) => {\n // E.g., localName, methodName, parameterName, etc.\n const kind = _kind.endsWith('Name') ? 'name' : _kind;\n const validTag = kind in tags;\n if (!validTag) {\n return '';\n }\n\n const tag = tags[kind as keyof typeof tags];\n if (typeof tag === 'function') {\n return '';\n }\n\n return theme.style([tag]) ?? '';\n };\n\n return (info: HoverInfo) => {\n const children =\n info.quickInfo?.displayParts?.map(({ kind, text }) =>\n Domino.of('span').classNames(classFromKind(kind)).text(text),\n ) ?? [];\n return {\n dom: Domino.of('div')\n .classNames('xs:max-w-80 max-w-lg p-1 bg-base-surface rounded-sm border border-separator')\n .append(...children).root,\n };\n };\n};\n\nexport default TypescriptEditor;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useState } from 'react';\nimport { ModuleResolutionKind, ScriptTarget } from 'typescript';\n\nimport queryApi from '@dxos/echo-query/api.d.ts?raw';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\nimport { Compiler } from '../../compiler';\nimport { TypescriptEditor, type TypescriptEditorProps } from '../TypescriptEditor';\n\nconst GLOBALS = `\n namespace QueryAPI {\n ${queryApi}\n }\n\n declare global {\n const Query: typeof QueryAPI.Query;\n const Filter: typeof QueryAPI.Filter;\n const Order: typeof QueryAPI.Order;\n }\n\n export {};\n`;\n\nexport type QueryEditorProps = Omit<TypescriptEditorProps, 'env'>;\n\nexport const QueryEditor = (props: QueryEditorProps) => {\n const [compiler, setCompiler] = useState<Compiler>();\n\n useAsyncEffect(async () => {\n const compiler = new Compiler({\n lib: ['ES5'],\n target: ScriptTarget.ES2022,\n // Avoid `@typescript/vfs`'s deprecated `node10` default (rejected by TS 6).\n moduleResolution: ModuleResolutionKind.Bundler,\n });\n await compiler.initialize(GLOBALS);\n setCompiler(compiler);\n }, []);\n\n if (!compiler) {\n return null;\n }\n\n return <TypescriptEditor {...props} env={compiler.environment} />;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\nimport React, { useMemo } from 'react';\n\nimport { AppSurface } from '@dxos/app-toolkit/ui';\nimport { type Script } from '@dxos/compute';\nimport { ElevationProvider, useTranslation } from '@dxos/react-ui';\nimport { composable, composableProps } from '@dxos/react-ui';\nimport { type ActionGraphProps, Menu, MenuRootProps, createGapSeparator, useMenuActions } from '@dxos/react-ui-menu';\n\nimport {\n type CreateDeployOptions,\n type ScriptToolbarStateStore,\n createDeploy,\n createFormat,\n createTemplateSelect,\n useDeployDeps,\n} from '#hooks';\nimport { meta } from '#meta';\n\nexport type ScriptToolbarProps = Pick<MenuRootProps, 'attendableId'> & {\n script: Script.Script;\n state: ScriptToolbarStateStore;\n};\n\nexport const ScriptToolbar = composable<HTMLDivElement, ScriptToolbarProps>(\n ({ script, attendableId, role, state, ...props }, forwardedRef) => {\n const { t } = useTranslation(meta.profile.key);\n const options = useDeployDeps({ script });\n const menuCreator = useMemo(\n () => createToolbarActions({ state, script, t, ...options }),\n [state, script, options, t],\n );\n const menuActions = useMenuActions(menuCreator);\n\n return (\n <ElevationProvider elevation={role === AppSurface.Section.role ? 'positioned' : 'base'}>\n <Menu.Root {...menuActions} attendableId={attendableId}>\n <Menu.Toolbar {...composableProps(props)} ref={forwardedRef} />\n </Menu.Root>\n </ElevationProvider>\n );\n },\n);\n\nconst createToolbarActions = ({ state, script, ...options }: CreateDeployOptions): Atom.Atom<ActionGraphProps> =>\n Atom.make((get) => {\n // Subscribe to state changes.\n get(state.atom);\n const templateSelect = createTemplateSelect(script);\n const format = createFormat(script);\n const gap = createGapSeparator();\n const deploy = createDeploy({ state, script, ...options });\n return {\n nodes: [...templateSelect.nodes, ...format.nodes, ...gap.nodes, ...deploy.nodes],\n edges: [...templateSelect.edges, ...format.edges, ...gap.edges, ...deploy.edges],\n };\n });\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { forwardRef, useRef, useState } from 'react';\n\nimport { log } from '@dxos/log';\nimport { Avatar, Icon, Input, ScrollArea, type ThemedClassName, Toolbar, useTranslation } from '@dxos/react-ui';\nimport { composable, composableProps } from '@dxos/react-ui';\nimport { JsonHighlighter } from '@dxos/react-ui-syntax-highlighter';\nimport { mx } from '@dxos/ui-theme';\n\nimport { meta } from '#meta';\n\ntype State = 'pending';\n\n/**\n * Request or response.\n */\ntype Message = {\n type: 'request' | 'response';\n text?: string;\n data?: any;\n error?: Error;\n};\n\nexport type TestPanelProps = ThemedClassName<{\n onInvoke?: (input: unknown) => Promise<unknown>;\n}>;\n\n// TODO(burdon): Need persistent history (currently lost when switching tabs).\nexport const TestPanel = composable<HTMLDivElement, TestPanelProps>(\n ({ classNames, onInvoke, ...props }, forwardedRef) => {\n const { t } = useTranslation(meta.profile.key);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const [input, setInput] = useState('');\n const [state, setState] = useState<State | null>(null);\n\n // TODO(burdon): Persistent history (thread).\n const [history, setHistory] = useState<Message[]>([]);\n\n const scrollerRef = useRef<HTMLDivElement>(null);\n const handleScroll = () => {\n if (scrollerRef.current) {\n scrollerRef.current.scrollTop = scrollerRef.current.scrollHeight;\n }\n };\n\n const handleClear = () => {\n setInput('');\n setHistory([]);\n inputRef.current?.focus();\n };\n\n const handleResponse = ({\n text,\n data,\n error,\n }: {\n text?: string;\n data?: any;\n error?: Error;\n } = {}) => {\n setHistory((history) => [...history, { type: 'response', text, data, error } satisfies Message]);\n setState(null);\n handleScroll();\n };\n\n const handleRequest = async (input: string) => {\n if (!onInvoke) {\n handleResponse({ error: new Error('Function not deployed') });\n return;\n }\n\n let data: unknown = input;\n let displayText = input;\n if (input.charAt(0) === '{') {\n try {\n const validJsonString = input.replace(/'/g, '\"').replace(/([{,]\\s*)([a-zA-Z0-9_]+)(\\s*:)/g, '$1\"$2\"$3');\n data = JSON.parse(validJsonString);\n displayText = JSON.stringify(data, null, 2);\n } catch (err) {\n handleResponse({ error: new Error('Invalid JSON input') });\n return;\n }\n }\n\n try {\n setState('pending');\n setInput('');\n setHistory((history) => [...history, { type: 'request', text: displayText }]);\n setTimeout(handleScroll);\n\n const result = await onInvoke(data);\n\n if (typeof result === 'string') {\n handleResponse({ text: result });\n } else {\n handleResponse({ data: result });\n }\n } catch (err: any) {\n const error = err instanceof Error ? err : new Error(String(err));\n handleResponse({ error });\n log.catch(err);\n }\n };\n\n return (\n <div\n {...composableProps(props, { classNames: ['flex flex-col h-full overflow-hidden', classNames] })}\n ref={forwardedRef}\n >\n {/* TODO(burdon): Replace with Thread. */}\n <MessageThread ref={scrollerRef} state={state} history={history} />\n {/* TODO(burdon): Replace with Form based on the function's input schema. */}\n <Toolbar.Root>\n <Input.Root>\n <Input.TextInput\n ref={inputRef}\n autoFocus\n placeholder={t('function-request.placeholder')}\n value={input}\n onChange={(ev) => setInput(ev.target.value)}\n onKeyDown={(ev) => ev.key === 'Enter' && handleRequest(input)}\n />\n </Input.Root>\n <Toolbar.IconButton icon='ph--play--regular' label='Execute' iconOnly onClick={() => handleRequest(input)} />\n <Toolbar.IconButton icon='ph--trash--regular' label='Clear' iconOnly onClick={handleClear} />\n </Toolbar.Root>\n </div>\n );\n },\n);\n\n// TODO(burdon): Replace with thread?\n// TODO(burdon): Button to edit/re-run question.\ntype MessageThreadProps = {\n state: State | null;\n history: Message[];\n};\n\nconst MessageThread = forwardRef<HTMLDivElement, MessageThreadProps>(\n ({ state, history }: MessageThreadProps, forwardedRef) => {\n return (\n <ScrollArea.Root orientation='vertical' classNames='h-full' ref={forwardedRef}>\n <ScrollArea.Viewport classNames='gap-6 p-2'>\n {history.map((message, i) => (\n <div key={i} className='grid grid-cols-[2rem_1fr_2rem]'>\n <div className='p-1'>{message.type === 'response' && <RobotAvatar />}</div>\n <div className='overflow-auto'>\n <MessageItem message={message} />\n </div>\n </div>\n ))}\n\n {state === 'pending' && (\n <div className='grid grid-cols-[2rem_1fr_2rem]'>\n <div className='p-1'>\n <Icon icon='ph--spinner--regular' size={6} classNames='animate-spin' />\n </div>\n </div>\n )}\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n );\n },\n);\n\nconst MessageItem = ({ classNames, message }: ThemedClassName<{ message: Message }>) => {\n const { type, text, data, error } = message;\n const wrapper = 'p-1 px-2 rounded-md bg-hover-surface overflow-auto';\n return (\n <div className={mx('flex', type === 'request' ? 'ml-[1rem] justify-end' : 'mr-[1rem]', classNames)}>\n {error && <div className={mx(wrapper, 'whitespace-pre text-error-text')}>{String(error)}</div>}\n\n {text !== undefined && (\n <div className={mx(wrapper, type === 'request' && 'bg-primary-500 dark:bg-primary-600')}>\n {text || '\\u00D8'}\n </div>\n )}\n\n {data && <JsonHighlighter data={data} classNames={mx(wrapper, 'text-xs')} />}\n </div>\n );\n};\n\nconst RobotAvatar = () => (\n <Avatar.Root>\n <Avatar.Content size={6} variant='circle' icon='ph--drone--regular' />\n </Avatar.Root>\n);\n"],
5
- "mappings": "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",
6
- "names": ["React", "DropdownMenu", "useTranslation", "meta", "NotebookMenu", "cell", "onCellInsert", "onCellDelete", "t", "profile", "key", "Portal", "Content", "Viewport", "Item", "onClick", "id", "Arrow", "React", "useCallback", "useMemo", "useState", "Obj", "DropdownMenu", "IconButton", "ScrollArea", "useTranslation", "composable", "composableProps", "Mosaic", "mx", "arrayMove", "meta", "React", "useCallback", "useMemo", "Surface", "AppSurface", "Obj", "Doc", "invariant", "TemplateEditor", "useThemeContext", "useTranslation", "QueryEditor", "Editor", "createBasicExtensions", "createDataExtensions", "createMarkdownExtensions", "createThemeExtensions", "decorateMarkdown", "mx", "isNonNullable", "meta", "autocompletion", "completionKeymap", "javascript", "HighlightStyle", "lintKeymap", "Prec", "keymap", "tags", "composeRefs", "continueKeymap", "tsAutocomplete", "tsFacet", "tsHover", "tsLinter", "tsSync", "React", "useThemeContext", "composable", "composableProps", "useTextEditor", "Domino", "InputModeExtensions", "createBasicExtensions", "createThemeExtensions", "defaultStyles", "isNonNullable", "TypescriptEditor", "classNames", "id", "role", "inputMode", "env", "options", "initialValue", "extensions", "scrollTo", "selection", "props", "forwardedRef", "themeMode", "parentRef", "focusAttributes", "monospace", "syntaxHighlighting", "highlightActiveLine", "indentWithTab", "lineNumbers", "lineWrapping", "scrollPastEnd", "search", "typescript", "override", "undefined", "high", "of", "path", "renderTooltip", "createTooltipRenderer", "filter", "div", "ref", "theme", "define", "dark", "light", "classFromKind", "_kind", "kind", "endsWith", "validTag", "tag", "style", "info", "children", "quickInfo", "displayParts", "map", "text", "dom", "append", "root", "editorStyles", "NotebookCell", "extensions", "useMemo", "cell", "target", "createDataExtensions", "createAccessor", "source", "explorerGraph", "invariant", "Obj", "obj", "content", "value", "initialValue", "React", "TypescriptEditor", "id", "classNames", "env", "options", "highlightActiveLine", "lineNumbers", "graph", "QueryEditor", "db", "onChange", "dragging", "type", "AppSurface", "limit", "data", "subject", "attendableId", "prompt", "promptResults", "getValue", "name", "className", "span", "NotebookPromptResult", "NotebookTextEditor", "readOnly", "useThemeContext", "meta", "createThemeExtensions", "syntaxHighlighting", "createBasicExtensions", "createMarkdownExtensions", "decorateMarkdown", "extensionsProp", "filter", "isNonNullable", "themeMode", "t", "selectionEnd", "minSectionHeight", "getCellId", "cell", "id", "NotebookStack", "composable", "notebook", "db", "graph", "promptResults", "onCellInsert", "onCellDelete", "env", "props", "forwardedRef", "viewport", "setViewport", "useState", "Tile", "useCallback", "tileProps", "React", "NotebookSection", "eventHandler", "useMemo", "canDrop", "source", "cells", "some", "onDrop", "target", "to", "type", "location", "length", "insertIndex", "Math", "floor", "Obj", "update", "from", "findIndex", "arrayMove", "Mosaic", "Root", "ref", "Container", "asChild", "orientation", "autoScroll", "ScrollArea", "padding", "composableProps", "Viewport", "Stack", "items", "getId", "data", "t", "useTranslation", "meta", "profile", "key", "resizable", "dragHandle", "setDragHandle", "classNames", "mx", "div", "className", "IconButton", "variant", "icon", "iconOnly", "label", "DropdownMenu", "Trigger", "NotebookMenu", "NotebookCell", "React", "useState", "ModuleResolutionKind", "ScriptTarget", "queryApi", "useAsyncEffect", "GLOBALS", "queryApi", "QueryEditor", "props", "compiler", "setCompiler", "useState", "useAsyncEffect", "Compiler", "lib", "target", "ScriptTarget", "ES2022", "moduleResolution", "ModuleResolutionKind", "Bundler", "initialize", "React", "TypescriptEditor", "env", "environment", "Atom", "React", "useMemo", "AppSurface", "ElevationProvider", "useTranslation", "composable", "composableProps", "Menu", "createGapSeparator", "useMenuActions", "createDeploy", "createFormat", "createTemplateSelect", "useDeployDeps", "meta", "ScriptToolbar", "script", "attendableId", "role", "state", "props", "forwardedRef", "t", "profile", "key", "options", "menuCreator", "createToolbarActions", "menuActions", "elevation", "Section", "Root", "Toolbar", "ref", "make", "get", "atom", "templateSelect", "format", "gap", "deploy", "nodes", "edges", "React", "forwardRef", "useRef", "useState", "log", "Avatar", "Icon", "Input", "ScrollArea", "Toolbar", "useTranslation", "composable", "composableProps", "JsonHighlighter", "mx", "meta", "__dxlog_file", "inputRef", "input", "setInput", "setState", "history", "setHistory", "handleScroll", "current", "handleResponse", "text", "data", "error", "handleRequest", "charAt", "validJsonString", "displayText", "stringify", "err", "setTimeout", "result", "catch", "classNames", "ref", "scrollerRef", "state", "autoFocus", "placeholder", "value", "onChange", "ev", "onKeyDown", "icon", "iconOnly", "onClick", "MessageThread", "forwardedRef", "message", "i", "className", "MessageItem", "div", "wrapper", "String", "undefined", "type", "RobotAvatar"]
7
- }
@@ -1,19 +0,0 @@
1
- import "../chunk-J5LGTIGS.mjs";
2
-
3
- // src/containers/index.ts
4
- import { lazy } from "react";
5
- var DeploymentDialog = lazy(() => import("../DeploymentDialog-7OIIL7LB.mjs"));
6
- var NotebookArticle = lazy(() => import("../NotebookArticle-AOBB3XGD.mjs"));
7
- var ScriptArticle = lazy(() => import("../ScriptArticle-I3DOJARR.mjs"));
8
- var ScriptProperties = lazy(() => import("../ScriptProperties-RHDQGMGT.mjs"));
9
- var ScriptSettings = lazy(() => import("../ScriptSettings-NS3ZY7ZR.mjs"));
10
- var TestContainer = lazy(() => import("../TestContainer-AFVTBYSJ.mjs"));
11
- export {
12
- DeploymentDialog,
13
- NotebookArticle,
14
- ScriptArticle,
15
- ScriptProperties,
16
- ScriptSettings,
17
- TestContainer
18
- };
19
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/containers/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ComponentType, lazy } from 'react';\n\nexport const DeploymentDialog: ComponentType<any> = lazy(() => import('./DeploymentDialog'));\nexport const NotebookArticle: ComponentType<any> = lazy(() => import('./NotebookArticle'));\nexport const ScriptArticle: ComponentType<any> = lazy(() => import('./ScriptArticle'));\nexport const ScriptProperties: ComponentType<any> = lazy(() => import('./ScriptProperties'));\nexport const ScriptSettings: ComponentType<any> = lazy(() => import('./ScriptSettings'));\nexport const TestContainer: ComponentType<any> = lazy(() => import('./TestContainer'));\n"],
5
- "mappings": ";;;AAIA,SAA6BA,YAAY;AAElC,IAAMC,mBAAuCD,KAAK,MAAM,OAAO,kCAAA,CAAA;AAC/D,IAAME,kBAAsCF,KAAK,MAAM,OAAO,iCAAA,CAAA;AAC9D,IAAMG,gBAAoCH,KAAK,MAAM,OAAO,+BAAA,CAAA;AAC5D,IAAMI,mBAAuCJ,KAAK,MAAM,OAAO,kCAAA,CAAA;AAC/D,IAAMK,iBAAqCL,KAAK,MAAM,OAAO,gCAAA,CAAA;AAC7D,IAAMM,gBAAoCN,KAAK,MAAM,OAAO,+BAAA,CAAA;",
6
- "names": ["lazy", "DeploymentDialog", "NotebookArticle", "ScriptArticle", "ScriptProperties", "ScriptSettings", "TestContainer"]
7
- }
@@ -1,46 +0,0 @@
1
- import {
2
- Create
3
- } from "./chunk-6DOWVKIW.mjs";
4
- import "./chunk-J5LGTIGS.mjs";
5
-
6
- // src/skills/functions/create.ts
7
- import * as Effect from "effect/Effect";
8
- import { CollectionModel } from "@dxos/app-toolkit";
9
- import { Operation, Script } from "@dxos/compute";
10
- import { Database, Obj, Ref } from "@dxos/echo";
11
- var create_default = Create.pipe(Operation.withHandler(Effect.fn(function* ({ name, source, templateId }) {
12
- let scriptSource = source ?? "";
13
- if (templateId) {
14
- const template = yield* findTemplate(templateId);
15
- if (template) {
16
- scriptSource = template.source;
17
- }
18
- }
19
- const script = Script.make({
20
- name,
21
- source: scriptSource
22
- });
23
- const { db } = yield* Database.Service;
24
- db.add(script);
25
- const fn2 = Obj.make(Operation.PersistentOperation, {
26
- [Obj.Meta]: {
27
- version: "0.0.0"
28
- },
29
- name,
30
- source: Ref.make(script)
31
- });
32
- yield* CollectionModel.add({
33
- object: fn2
34
- });
35
- return {
36
- function: Obj.getURI(fn2)
37
- };
38
- })));
39
- var findTemplate = (templateId) => Effect.promise(async () => {
40
- const { templates } = await import("./templates/index.mjs");
41
- return templates.find((template) => template.id === templateId);
42
- });
43
- export {
44
- create_default as default
45
- };
46
- //# sourceMappingURL=create-SGHWWTET.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/skills/functions/create.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { CollectionModel } from '@dxos/app-toolkit';\nimport { Operation, Script } from '@dxos/compute';\nimport { Database, Obj, Ref } from '@dxos/echo';\n\nimport { Create } from './definitions';\n\nexport default Create.pipe(\n Operation.withHandler(\n Effect.fn(function* ({ name, source, templateId }) {\n let scriptSource = source ?? '';\n\n if (templateId) {\n const template = yield* findTemplate(templateId);\n if (template) {\n scriptSource = template.source;\n }\n }\n\n const script = Script.make({ name, source: scriptSource });\n const { db } = yield* Database.Service;\n db.add(script);\n\n const fn = Obj.make(Operation.PersistentOperation, {\n [Obj.Meta]: { version: '0.0.0' },\n name,\n source: Ref.make(script),\n });\n yield* CollectionModel.add({ object: fn });\n\n return {\n function: Obj.getURI(fn),\n };\n }),\n ),\n);\n\nconst findTemplate = (templateId: string) =>\n Effect.promise(async () => {\n const { templates } = await import('../../templates');\n return templates.find((template) => template.id === templateId);\n });\n"],
5
- "mappings": ";;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,uBAAuB;AAChC,SAASC,WAAWC,cAAc;AAClC,SAASC,UAAUC,KAAKC,WAAW;AAInC,IAAA,iBAAeC,OAAOC,KACpBC,UAAUC,YACDC,UAAG,WAAW,EAAEC,MAAMC,QAAQC,WAAU,GAAE;AAC/C,MAAIC,eAAeF,UAAU;AAE7B,MAAIC,YAAY;AACd,UAAME,WAAW,OAAOC,aAAaH,UAAAA;AACrC,QAAIE,UAAU;AACZD,qBAAeC,SAASH;IAC1B;EACF;AAEA,QAAMK,SAASC,OAAOC,KAAK;IAAER;IAAMC,QAAQE;EAAa,CAAA;AACxD,QAAM,EAAEM,GAAE,IAAK,OAAOC,SAASC;AAC/BF,KAAGG,IAAIN,MAAAA;AAEP,QAAMP,MAAKc,IAAIL,KAAKX,UAAUiB,qBAAqB;IACjD,CAACD,IAAIE,IAAI,GAAG;MAAEC,SAAS;IAAQ;IAC/BhB;IACAC,QAAQgB,IAAIT,KAAKF,MAAAA;EACnB,CAAA;AACA,SAAOY,gBAAgBN,IAAI;IAAEO,QAAQpB;EAAG,CAAA;AAExC,SAAO;IACLqB,UAAUP,IAAIQ,OAAOtB,GAAAA;EACvB;AACF,CAAA,CAAA,CAAA;AAIJ,IAAMM,eAAe,CAACH,eACboB,eAAQ,YAAA;AACb,QAAM,EAAEC,UAAS,IAAK,MAAM,OAAO,uBAAA;AACnC,SAAOA,UAAUC,KAAK,CAACpB,aAAaA,SAASqB,OAAOvB,UAAAA;AACtD,CAAA;",
6
- "names": ["Effect", "CollectionModel", "Operation", "Script", "Database", "Obj", "Ref", "Create", "pipe", "Operation", "withHandler", "fn", "name", "source", "templateId", "scriptSource", "template", "findTemplate", "script", "Script", "make", "db", "Database", "Service", "add", "Obj", "PersistentOperation", "Meta", "version", "Ref", "CollectionModel", "object", "function", "getURI", "promise", "templates", "find", "id"]
7
- }
@@ -1,43 +0,0 @@
1
- import "./chunk-J5LGTIGS.mjs";
2
-
3
- // src/capabilities/create-object.ts
4
- import * as Effect from "effect/Effect";
5
- import { Capability } from "@dxos/app-framework";
6
- import { Operation, Script } from "@dxos/compute";
7
- import { Type } from "@dxos/echo";
8
- import { SpaceOperation } from "@dxos/plugin-space";
9
- import { SpaceCapabilities } from "@dxos/plugin-space";
10
- import { ScriptOperation } from "#types";
11
- import { Notebook } from "#types";
12
- var create_object_default = Capability.makeModule(Effect.fnUntraced(function* () {
13
- return [
14
- Capability.contributes(SpaceCapabilities.CreateObjectEntry, {
15
- id: Type.getTypename(Script.Script),
16
- inputSchema: ScriptOperation.ScriptProps,
17
- createObject: (props, options) => Effect.gen(function* () {
18
- const { object } = yield* Operation.invoke(ScriptOperation.CreateScript, props);
19
- return yield* Operation.invoke(SpaceOperation.AddObject, {
20
- object,
21
- target: options.target,
22
- targetNodeId: options.targetNodeId
23
- });
24
- })
25
- }),
26
- Capability.contributes(SpaceCapabilities.CreateObjectEntry, {
27
- id: Type.getTypename(Notebook.Notebook),
28
- inputSchema: ScriptOperation.NotebookProps,
29
- createObject: (props, options) => Effect.gen(function* () {
30
- const object = Notebook.make(props);
31
- return yield* Operation.invoke(SpaceOperation.AddObject, {
32
- object,
33
- target: options.target,
34
- targetNodeId: options.targetNodeId
35
- });
36
- })
37
- })
38
- ];
39
- }));
40
- export {
41
- create_object_default as default
42
- };
43
- //# sourceMappingURL=create-object-QW66KQWS.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/create-object.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { Operation, Script } from '@dxos/compute';\nimport { Type } from '@dxos/echo';\nimport { SpaceOperation } from '@dxos/plugin-space';\nimport { SpaceCapabilities } from '@dxos/plugin-space';\n\nimport { ScriptOperation } from '#types';\nimport { Notebook } from '#types';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n return [\n Capability.contributes(SpaceCapabilities.CreateObjectEntry, {\n id: Type.getTypename(Script.Script),\n inputSchema: ScriptOperation.ScriptProps,\n createObject: (props, options) =>\n Effect.gen(function* () {\n const { object } = yield* Operation.invoke(ScriptOperation.CreateScript, props);\n return yield* Operation.invoke(SpaceOperation.AddObject, {\n object,\n target: options.target,\n targetNodeId: options.targetNodeId,\n });\n }),\n }),\n Capability.contributes(SpaceCapabilities.CreateObjectEntry, {\n id: Type.getTypename(Notebook.Notebook),\n inputSchema: ScriptOperation.NotebookProps,\n createObject: (props, options) =>\n Effect.gen(function* () {\n const object = Notebook.make(props);\n return yield* Operation.invoke(SpaceOperation.AddObject, {\n object,\n target: options.target,\n targetNodeId: options.targetNodeId,\n });\n }),\n }),\n ];\n }),\n);\n"],
5
- "mappings": ";;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,WAAWC,cAAc;AAClC,SAASC,YAAY;AACrB,SAASC,sBAAsB;AAC/B,SAASC,yBAAyB;AAElC,SAASC,uBAAuB;AAChC,SAASC,gBAAgB;AAEzB,IAAA,wBAAeP,WAAWQ,WACjBC,kBAAW,aAAA;AAChB,SAAO;IACLT,WAAWU,YAAYL,kBAAkBM,mBAAmB;MAC1DC,IAAIT,KAAKU,YAAYX,OAAOA,MAAM;MAClCY,aAAaR,gBAAgBS;MAC7BC,cAAc,CAACC,OAAOC,YACbC,WAAI,aAAA;AACT,cAAM,EAAEC,OAAM,IAAK,OAAOnB,UAAUoB,OAAOf,gBAAgBgB,cAAcL,KAAAA;AACzE,eAAO,OAAOhB,UAAUoB,OAAOjB,eAAemB,WAAW;UACvDH;UACAI,QAAQN,QAAQM;UAChBC,cAAcP,QAAQO;QACxB,CAAA;MACF,CAAA;IACJ,CAAA;IACAzB,WAAWU,YAAYL,kBAAkBM,mBAAmB;MAC1DC,IAAIT,KAAKU,YAAYN,SAASA,QAAQ;MACtCO,aAAaR,gBAAgBoB;MAC7BV,cAAc,CAACC,OAAOC,YACbC,WAAI,aAAA;AACT,cAAMC,SAASb,SAASoB,KAAKV,KAAAA;AAC7B,eAAO,OAAOhB,UAAUoB,OAAOjB,eAAemB,WAAW;UACvDH;UACAI,QAAQN,QAAQM;UAChBC,cAAcP,QAAQO;QACxB,CAAA;MACF,CAAA;IACJ,CAAA;;AAEJ,CAAA,CAAA;",
6
- "names": ["Effect", "Capability", "Operation", "Script", "Type", "SpaceOperation", "SpaceCapabilities", "ScriptOperation", "Notebook", "makeModule", "fnUntraced", "contributes", "CreateObjectEntry", "id", "getTypename", "inputSchema", "ScriptProps", "createObject", "props", "options", "gen", "object", "invoke", "CreateScript", "AddObject", "target", "targetNodeId", "NotebookProps", "make"]
7
- }
@@ -1,45 +0,0 @@
1
- import {
2
- ScriptOperation_exports
3
- } from "./chunk-652CIABA.mjs";
4
- import {
5
- templates
6
- } from "./chunk-WAGQ77UQ.mjs";
7
- import "./chunk-J5LGTIGS.mjs";
8
-
9
- // src/operations/create-script.ts
10
- import { Octokit } from "@octokit/core";
11
- import * as Effect from "effect/Effect";
12
- import { Operation, Script } from "@dxos/compute";
13
- var handler = ScriptOperation_exports.CreateScript.pipe(Operation.withHandler(Effect.fnUntraced(function* ({ name, gistUrl, initialTemplateId }) {
14
- let source = templates[0].source;
15
- let scriptName = name;
16
- const gistId = gistUrl?.split("/").at(-1);
17
- if (gistId) {
18
- const octokit = new Octokit();
19
- const response = yield* Effect.promise(() => octokit.request("GET /gists/{gist_id}", {
20
- gist_id: gistId
21
- }));
22
- const gistContent = Object.values(response.data.files ?? {})[0]?.content;
23
- if (gistContent) {
24
- source = gistContent;
25
- }
26
- }
27
- if (initialTemplateId) {
28
- const template = templates.find((template2) => template2.id === initialTemplateId);
29
- if (template) {
30
- source = template.source;
31
- scriptName = scriptName || template.name;
32
- }
33
- }
34
- return {
35
- object: Script.make({
36
- name: scriptName,
37
- source
38
- })
39
- };
40
- })));
41
- var create_script_default = handler;
42
- export {
43
- create_script_default as default
44
- };
45
- //# sourceMappingURL=create-script-CIEJOBIU.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/operations/create-script.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Octokit } from '@octokit/core';\nimport * as Effect from 'effect/Effect';\n\nimport { Operation, Script } from '@dxos/compute';\n\nimport { templates } from '../templates';\nimport { ScriptOperation } from '../types';\n\nconst handler: Operation.WithHandler<typeof ScriptOperation.CreateScript> = ScriptOperation.CreateScript.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* ({ name, gistUrl, initialTemplateId }) {\n let source = templates[0].source;\n let scriptName = name;\n\n const gistId = gistUrl?.split('/').at(-1);\n if (gistId) {\n const octokit = new Octokit();\n const response = yield* Effect.promise(() =>\n octokit.request('GET /gists/{gist_id}', {\n gist_id: gistId,\n }),\n );\n const gistContent = Object.values(response.data.files ?? {})[0]?.content;\n if (gistContent) {\n source = gistContent;\n }\n }\n\n if (initialTemplateId) {\n const template = templates.find((template) => template.id === initialTemplateId);\n if (template) {\n source = template.source;\n scriptName = scriptName || template.name;\n }\n }\n\n return { object: Script.make({ name: scriptName, source }) };\n }),\n ),\n);\n\nexport default handler;\n"],
5
- "mappings": ";;;;;;;;;AAIA,SAASA,eAAe;AACxB,YAAYC,YAAY;AAExB,SAASC,WAAWC,cAAc;AAKlC,IAAMC,UAAsEC,wBAAgBC,aAAaC,KACvGC,UAAUC,YACDC,kBAAW,WAAW,EAAEC,MAAMC,SAASC,kBAAiB,GAAE;AAC/D,MAAIC,SAASC,UAAU,CAAA,EAAGD;AAC1B,MAAIE,aAAaL;AAEjB,QAAMM,SAASL,SAASM,MAAM,GAAA,EAAKC,GAAG,EAAC;AACvC,MAAIF,QAAQ;AACV,UAAMG,UAAU,IAAIC,QAAAA;AACpB,UAAMC,WAAW,OAAcC,eAAQ,MACrCH,QAAQI,QAAQ,wBAAwB;MACtCC,SAASR;IACX,CAAA,CAAA;AAEF,UAAMS,cAAcC,OAAOC,OAAON,SAASO,KAAKC,SAAS,CAAC,CAAA,EAAG,CAAA,GAAIC;AACjE,QAAIL,aAAa;AACfZ,eAASY;IACX;EACF;AAEA,MAAIb,mBAAmB;AACrB,UAAMmB,WAAWjB,UAAUkB,KAAK,CAACD,cAAaA,UAASE,OAAOrB,iBAAAA;AAC9D,QAAImB,UAAU;AACZlB,eAASkB,SAASlB;AAClBE,mBAAaA,cAAcgB,SAASrB;IACtC;EACF;AAEA,SAAO;IAAEwB,QAAQC,OAAOC,KAAK;MAAE1B,MAAMK;MAAYF;IAAO,CAAA;EAAG;AAC7D,CAAA,CAAA,CAAA;AAIJ,IAAA,wBAAeV;",
6
- "names": ["Octokit", "Effect", "Operation", "Script", "handler", "ScriptOperation", "CreateScript", "pipe", "Operation", "withHandler", "fnUntraced", "name", "gistUrl", "initialTemplateId", "source", "templates", "scriptName", "gistId", "split", "at", "octokit", "Octokit", "response", "promise", "request", "gist_id", "gistContent", "Object", "values", "data", "files", "content", "template", "find", "id", "object", "Script", "make"]
7
- }
@@ -1,21 +0,0 @@
1
- import {
2
- Delete
3
- } from "./chunk-6DOWVKIW.mjs";
4
- import "./chunk-J5LGTIGS.mjs";
5
-
6
- // src/skills/functions/delete.ts
7
- import * as Effect from "effect/Effect";
8
- import { Operation } from "@dxos/compute";
9
- import { Database } from "@dxos/echo";
10
- var delete_default = Delete.pipe(Operation.withHandler(Effect.fn(function* ({ function: fn2 }) {
11
- const { db } = yield* Database.Service;
12
- const loaded = yield* Database.load(fn2);
13
- if (loaded.source?.target) {
14
- db.remove(loaded.source.target);
15
- }
16
- db.remove(loaded);
17
- })));
18
- export {
19
- delete_default as default
20
- };
21
- //# sourceMappingURL=delete-72RXVLVI.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/skills/functions/delete.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Operation } from '@dxos/compute';\nimport { Database } from '@dxos/echo';\n\nimport { Delete } from './definitions';\n\nexport default Delete.pipe(\n Operation.withHandler(\n Effect.fn(function* ({ function: fn }) {\n const { db } = yield* Database.Service;\n const loaded = yield* Database.load(fn);\n if (loaded.source?.target) {\n db.remove(loaded.source.target);\n }\n db.remove(loaded);\n }),\n ),\n);\n"],
5
- "mappings": ";;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,iBAAiB;AAC1B,SAASC,gBAAgB;AAIzB,IAAA,iBAAeC,OAAOC,KACpBC,UAAUC,YACDC,UAAG,WAAW,EAAEC,UAAUD,IAAE,GAAE;AACnC,QAAM,EAAEE,GAAE,IAAK,OAAOC,SAASC;AAC/B,QAAMC,SAAS,OAAOF,SAASG,KAAKN,GAAAA;AACpC,MAAIK,OAAOE,QAAQC,QAAQ;AACzBN,OAAGO,OAAOJ,OAAOE,OAAOC,MAAM;EAChC;AACAN,KAAGO,OAAOJ,MAAAA;AACZ,CAAA,CAAA,CAAA;",
6
- "names": ["Effect", "Operation", "Database", "Delete", "pipe", "Operation", "withHandler", "fn", "function", "db", "Database", "Service", "loaded", "load", "source", "target", "remove"]
7
- }
@@ -1,67 +0,0 @@
1
- import {
2
- Deploy
3
- } from "./chunk-6DOWVKIW.mjs";
4
- import "./chunk-J5LGTIGS.mjs";
5
-
6
- // src/skills/functions/deploy.ts
7
- import * as Effect from "effect/Effect";
8
- import wasmUrl from "esbuild-wasm/esbuild.wasm?url";
9
- import { ClientService } from "@dxos/client";
10
- import { Operation } from "@dxos/compute";
11
- import { Context } from "@dxos/context";
12
- import { Database, Obj } from "@dxos/echo";
13
- import { getUserFunctionIdInMetadata } from "@dxos/functions";
14
- import { bundleFunction, initializeBundler } from "@dxos/functions-runtime/bundler";
15
- import { FunctionsServiceClient, incrementSemverPatch } from "@dxos/functions-runtime/edge";
16
- import { FunctionRuntimeKind } from "@dxos/protocols";
17
- import { getSpace } from "@dxos/react-client/echo";
18
- var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-script/src/skills/functions/deploy.ts";
19
- var deploy_default = Deploy.pipe(Operation.withHandler(Effect.fn(function* ({ function: fn2 }) {
20
- const loaded = yield* Database.load(fn2);
21
- const client = yield* ClientService;
22
- if (!loaded.source) {
23
- return yield* Effect.fail(new Error("Function has no source script."));
24
- }
25
- const script = yield* Database.load(loaded.source);
26
- const space = getSpace(loaded);
27
- if (!space || !script.source?.target?.content) {
28
- return yield* Effect.fail(new Error("Script source or space not available"));
29
- }
30
- yield* Effect.promise(() => initializeBundler({
31
- wasmUrl
32
- }));
33
- const buildResult = yield* Effect.promise(() => bundleFunction({
34
- source: script.source.target.content
35
- }));
36
- if ("error" in buildResult) {
37
- return yield* Effect.fail(buildResult.error ?? new Error("Bundle creation failed"));
38
- }
39
- const existingFunctionId = getUserFunctionIdInMetadata(Obj.getMeta(loaded));
40
- const currentVersion = Obj.getMeta(loaded).version;
41
- const identity = client.halo.identity.get();
42
- if (!identity) {
43
- return yield* Effect.fail(new Error("Identity not available."));
44
- }
45
- const functionsService = FunctionsServiceClient.fromClient(client);
46
- const newFunction = yield* Effect.promise(() => functionsService.deploy(Context.default(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 43 }), {
47
- ownerUri: identity.did,
48
- version: currentVersion ? incrementSemverPatch(currentVersion) : "0.0.1",
49
- functionId: existingFunctionId,
50
- entryPoint: buildResult.entryPoint,
51
- assets: buildResult.assets,
52
- runtime: FunctionRuntimeKind.enums.WORKER_LOADER
53
- }));
54
- Operation.setFrom(loaded, newFunction);
55
- Obj.update(script, (script2) => {
56
- script2.changed = false;
57
- });
58
- const edgeFunctionId = getUserFunctionIdInMetadata(Obj.getMeta(loaded));
59
- return {
60
- function: Obj.getURI(loaded),
61
- functionUrl: edgeFunctionId ? `${client.config.values.runtime?.services?.edge?.url ?? ""}/functions/${edgeFunctionId}` : void 0
62
- };
63
- })));
64
- export {
65
- deploy_default as default
66
- };
67
- //# sourceMappingURL=deploy-PJTJAQZY.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/skills/functions/deploy.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport wasmUrl from 'esbuild-wasm/esbuild.wasm?url';\n\nimport { ClientService } from '@dxos/client';\nimport { Operation, Script } from '@dxos/compute';\nimport { Context } from '@dxos/context';\nimport { Database, Obj } from '@dxos/echo';\nimport { getUserFunctionIdInMetadata } from '@dxos/functions';\nimport { bundleFunction, initializeBundler } from '@dxos/functions-runtime/bundler';\nimport { FunctionsServiceClient, incrementSemverPatch } from '@dxos/functions-runtime/edge';\nimport { FunctionRuntimeKind } from '@dxos/protocols';\nimport { getSpace } from '@dxos/react-client/echo';\n\nimport { Deploy } from './definitions';\n\nexport default Deploy.pipe(\n Operation.withHandler(\n Effect.fn(function* ({ function: fn }) {\n const loaded = yield* Database.load(fn);\n const client = yield* ClientService;\n if (!loaded.source) {\n return yield* Effect.fail(new Error('Function has no source script.'));\n }\n const script = (yield* Database.load(loaded.source)) as Script.Script;\n\n const space = getSpace(loaded);\n if (!space || !script.source?.target?.content) {\n return yield* Effect.fail(new Error('Script source or space not available'));\n }\n\n yield* Effect.promise(() => initializeBundler({ wasmUrl }));\n const buildResult = yield* Effect.promise(() => bundleFunction({ source: script.source!.target!.content }));\n if ('error' in buildResult) {\n return yield* Effect.fail(buildResult.error ?? new Error('Bundle creation failed'));\n }\n\n const existingFunctionId = getUserFunctionIdInMetadata(Obj.getMeta(loaded));\n const currentVersion = Obj.getMeta(loaded).version;\n\n const identity = client.halo.identity.get();\n if (!identity) {\n return yield* Effect.fail(new Error('Identity not available.'));\n }\n\n const functionsService = FunctionsServiceClient.fromClient(client);\n const newFunction = yield* Effect.promise(() =>\n functionsService.deploy(Context.default(), {\n ownerUri: identity.did,\n version: currentVersion ? incrementSemverPatch(currentVersion) : '0.0.1',\n functionId: existingFunctionId,\n entryPoint: buildResult.entryPoint,\n assets: buildResult.assets,\n runtime: FunctionRuntimeKind.enums.WORKER_LOADER,\n }),\n );\n\n Operation.setFrom(loaded, newFunction);\n\n Obj.update(script, (script) => {\n script.changed = false;\n });\n\n const edgeFunctionId = getUserFunctionIdInMetadata(Obj.getMeta(loaded));\n return {\n function: Obj.getURI(loaded),\n functionUrl: edgeFunctionId\n ? `${client.config.values.runtime?.services?.edge?.url ?? ''}/functions/${edgeFunctionId}`\n : undefined,\n };\n }),\n ),\n);\n"],
5
- "mappings": ";;;;;;AAIA,YAAYA,YAAY;AACxB,OAAOC,aAAa;AAEpB,SAASC,qBAAqB;AAC9B,SAASC,iBAAyB;AAClC,SAASC,eAAe;AACxB,SAASC,UAAUC,WAAW;AAC9B,SAASC,mCAAmC;AAC5C,SAASC,gBAAgBC,yBAAyB;AAClD,SAASC,wBAAwBC,4BAA4B;AAC7D,SAASC,2BAA2B;AACpC,SAASC,gBAAgB;AAIzB,IAAA,eAAeC;IAIT,iBAAMC,OAAS,KAAOC,UAAAA,YAAAA,UAAAA,WAAAA,EAAAA,UAAAA,IAAAA,GAAAA;AACtB,QAAKC,SAAOC,OAAQ,SAAA,KAAAC,GAAA;QAClB,SAAO,OAAOC;AAChB,MAAA,CAAA,OAAA,QAAA;AACA,WAAMC,OAAiBC,YAAAA,IAASC,MAAKN,gCAAa,CAAA;EAElD;AACA,QAAKO,SAAUH,OAAOH,SAAQO,KAAAA,OAAQC,MAAS;QAC7C,QAAO,SAAON,MAAW;AAC3B,MAAA,CAAA,SAAA,CAAA,OAAA,QAAA,QAAA,SAAA;AAEA,WAAOA,OAAe,YAAMO,IAAAA,MAAAA,sCAAkB,CAAA;;SAAU,eAAA,MAAA,kBAAA;IAClDC;;QAAkG,cAAA,OAAA,eAAA,MAAA,eAAA;IACpG,QAAWA,OAAAA,OAAa,OAAA;EAC1B,CAAA,CAAA;AACF,MAAA,WAAA,aAAA;AAEA,WAAMC,OAAAA,YAAqBC,YAAAA,SAAAA,IAA4BC,MAAIC,wBAAQf,CAAAA;EACnE;AAEA,QAAMgB,qBAAkBC,4BAAiB,IAAA,QAAA,MAAA,CAAA;AACzC,QAAKD,iBAAU,IAAA,QAAA,MAAA,EAAA;QACb,WAAO,OAAOb,KAAW,SAAKe,IAAM;AACtC,MAAA,CAAA,UAAA;AAEA,WAAMC,OAAmBC,YAAAA,IAAAA,MAAAA,yBAAkCtB,CAAAA;EAC3D;2BAEckB,uBAAY,WAAA,MAAA;sBACbK,OAAiBC,eAAAA,MAAAA,iBAAqBD,OAAAA,QAAkB,QAAA,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,GAAA,CAAA,GAAA;IACjEE,UAAAA,SAAYX;IACZY,SAAAA,iBAAwBA,qBAAU,cAAA,IAAA;IAClCC,YAAQd;IACRe,YAASC,YAAAA;IACX,QAAA,YAAA;IAGFC,SAAiB,oBAASC,MAAAA;EAEtBC,CAAAA,CAAAA;YACF1B,QAAc,QAAG,WAAA;AACnB,MAAA,OAAA,QAAA,CAAAA,YAAA;AAEA,IAAAA,QAAM2B,UAAAA;EACN,CAAA;QACEC,iBAAcC,4BAAOjC,IAAAA,QAAAA,MAAAA,CAAAA;SACrBkC;IAGF,UAAA,IAAA,OAAA,MAAA;IAGJ,aAAA,iBAAA,GAAA,OAAA,OAAA,OAAA,SAAA,UAAA,MAAA,OAAA,EAAA,cAAA,cAAA,KAAA;;;",
6
- "names": ["Effect", "wasmUrl", "ClientService", "Operation", "Context", "Database", "Obj", "getUserFunctionIdInMetadata", "bundleFunction", "initializeBundler", "FunctionsServiceClient", "incrementSemverPatch", "FunctionRuntimeKind", "getSpace", "Deploy", "client", "ClientService", "loaded", "source", "fn", "Effect", "script", "Database", "load", "space", "target", "content", "initializeBundler", "buildResult", "existingFunctionId", "getUserFunctionIdInMetadata", "Obj", "getMeta", "identity", "halo", "Error", "functionsService", "FunctionsServiceClient", "currentVersion", "incrementSemverPatch", "functionId", "entryPoint", "assets", "runtime", "FunctionRuntimeKind", "Operation", "newFunction", "update", "edgeFunctionId", "function", "getURI", "functionUrl"]
7
- }