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

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 (556) hide show
  1. package/README.md +15 -13
  2. package/dist/lib/neutral/DeploymentDialog-6DBF3V6C.mjs +112 -0
  3. package/dist/lib/neutral/DeploymentDialog-6DBF3V6C.mjs.map +7 -0
  4. package/dist/lib/neutral/NotebookContainer-FIAQI3A2.mjs +760 -0
  5. package/dist/lib/neutral/NotebookContainer-FIAQI3A2.mjs.map +7 -0
  6. package/dist/lib/neutral/ScriptContainer-2OPBAXFB.mjs +79 -0
  7. package/dist/lib/neutral/ScriptContainer-2OPBAXFB.mjs.map +7 -0
  8. package/dist/lib/neutral/ScriptPlugin.mjs +39 -0
  9. package/dist/lib/neutral/ScriptPlugin.mjs.map +7 -0
  10. package/dist/lib/neutral/ScriptPlugin.node.mjs +27 -0
  11. package/dist/lib/neutral/ScriptPlugin.node.mjs.map +7 -0
  12. package/dist/lib/neutral/ScriptPluginSettings-T4JMUSHN.mjs +31 -0
  13. package/dist/lib/neutral/ScriptPluginSettings-T4JMUSHN.mjs.map +7 -0
  14. package/dist/lib/neutral/ScriptProperties-F6NE6M4H.mjs +296 -0
  15. package/dist/lib/neutral/ScriptProperties-F6NE6M4H.mjs.map +7 -0
  16. package/dist/lib/neutral/TestContainer-JNFPLAJX.mjs +44 -0
  17. package/dist/lib/neutral/TestContainer-JNFPLAJX.mjs.map +7 -0
  18. package/dist/lib/neutral/access-token-created-ENMCEGVU.mjs +34 -0
  19. package/dist/lib/neutral/access-token-created-ENMCEGVU.mjs.map +7 -0
  20. package/dist/lib/neutral/app-graph-builder-7AWFCEQF.mjs +52 -0
  21. package/dist/lib/neutral/app-graph-builder-7AWFCEQF.mjs.map +7 -0
  22. package/dist/lib/neutral/blueprint-definition-T33SBPP2.mjs +15 -0
  23. package/dist/lib/neutral/blueprint-definition-T33SBPP2.mjs.map +7 -0
  24. package/dist/lib/neutral/blueprints/index.mjs +10 -0
  25. package/dist/lib/neutral/capabilities/index.mjs +21 -0
  26. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  27. package/dist/lib/neutral/capabilities/node.mjs +17 -0
  28. package/dist/lib/neutral/capabilities/node.mjs.map +7 -0
  29. package/dist/lib/neutral/chunk-2DMPFVUM.mjs +8 -0
  30. package/dist/lib/neutral/chunk-2DMPFVUM.mjs.map +7 -0
  31. package/dist/lib/neutral/chunk-4RJALG6K.mjs +151 -0
  32. package/dist/lib/neutral/chunk-4RJALG6K.mjs.map +7 -0
  33. package/dist/lib/neutral/chunk-B4FVQEHV.mjs +8 -0
  34. package/dist/lib/neutral/chunk-B4FVQEHV.mjs.map +7 -0
  35. package/dist/lib/neutral/chunk-BDRB6ZX2.mjs +52 -0
  36. package/dist/lib/neutral/chunk-BDRB6ZX2.mjs.map +7 -0
  37. package/dist/lib/neutral/chunk-BUKQITZT.mjs +105 -0
  38. package/dist/lib/neutral/chunk-BUKQITZT.mjs.map +7 -0
  39. package/dist/lib/neutral/chunk-D7DFASAE.mjs +52 -0
  40. package/dist/lib/neutral/chunk-D7DFASAE.mjs.map +7 -0
  41. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  42. package/dist/lib/neutral/chunk-MI6X5CTJ.mjs +336 -0
  43. package/dist/lib/neutral/chunk-MI6X5CTJ.mjs.map +7 -0
  44. package/dist/lib/neutral/chunk-P2F3STZN.mjs +8 -0
  45. package/dist/lib/neutral/chunk-P2F3STZN.mjs.map +7 -0
  46. package/dist/lib/neutral/chunk-PDB6UOSB.mjs +125 -0
  47. package/dist/lib/neutral/chunk-PDB6UOSB.mjs.map +7 -0
  48. package/dist/lib/{browser/chunk-QYAREHGH.mjs → neutral/chunk-UYR3YH4Q.mjs} +9 -6
  49. package/dist/lib/neutral/chunk-UYR3YH4Q.mjs.map +7 -0
  50. package/dist/lib/neutral/compiler-SMVIP5UN.mjs +101 -0
  51. package/dist/lib/neutral/compiler-SMVIP5UN.mjs.map +7 -0
  52. package/dist/lib/neutral/components/index.mjs +719 -0
  53. package/dist/lib/neutral/components/index.mjs.map +7 -0
  54. package/dist/lib/neutral/containers/index.mjs +17 -0
  55. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  56. package/dist/lib/neutral/create-OZRIZ7RN.mjs +44 -0
  57. package/dist/lib/neutral/create-OZRIZ7RN.mjs.map +7 -0
  58. package/dist/lib/neutral/create-object-F2NWICFV.mjs +44 -0
  59. package/dist/lib/neutral/create-object-F2NWICFV.mjs.map +7 -0
  60. package/dist/lib/neutral/create-script-VBA3SLSU.mjs +45 -0
  61. package/dist/lib/neutral/create-script-VBA3SLSU.mjs.map +7 -0
  62. package/dist/lib/neutral/delete-PAUWA2QM.mjs +21 -0
  63. package/dist/lib/neutral/delete-PAUWA2QM.mjs.map +7 -0
  64. package/dist/lib/neutral/deploy-CXVW54JJ.mjs +62 -0
  65. package/dist/lib/neutral/deploy-CXVW54JJ.mjs.map +7 -0
  66. package/dist/lib/neutral/hooks/index.mjs +369 -0
  67. package/dist/lib/neutral/hooks/index.mjs.map +7 -0
  68. package/dist/lib/neutral/index.mjs +41 -0
  69. package/dist/lib/neutral/inspect-invocations-LEOEP5I2.mjs +59 -0
  70. package/dist/lib/neutral/inspect-invocations-LEOEP5I2.mjs.map +7 -0
  71. package/dist/lib/neutral/install-function-5N24Q45W.mjs +51 -0
  72. package/dist/lib/neutral/install-function-5N24Q45W.mjs.map +7 -0
  73. package/dist/lib/neutral/invoke-5QVEZ3X5.mjs +33 -0
  74. package/dist/lib/neutral/invoke-5QVEZ3X5.mjs.map +7 -0
  75. package/dist/lib/neutral/meta.json +1 -0
  76. package/dist/lib/neutral/meta.mjs +10 -0
  77. package/dist/lib/neutral/operation-handler-OTCWYDFI.mjs +18 -0
  78. package/dist/lib/neutral/operation-handler-OTCWYDFI.mjs.map +7 -0
  79. package/dist/lib/neutral/operations/index.mjs +8 -0
  80. package/dist/lib/neutral/plugin.mjs +16 -0
  81. package/dist/lib/neutral/plugin.mjs.map +7 -0
  82. package/dist/lib/neutral/query-deployed-functions-FVD7NYPA.mjs +30 -0
  83. package/dist/lib/neutral/query-deployed-functions-FVD7NYPA.mjs.map +7 -0
  84. package/dist/lib/neutral/react-surface-JH2AOK7V.mjs +117 -0
  85. package/dist/lib/neutral/react-surface-JH2AOK7V.mjs.map +7 -0
  86. package/dist/lib/neutral/read-FFOSK6A3.mjs +26 -0
  87. package/dist/lib/neutral/read-FFOSK6A3.mjs.map +7 -0
  88. package/dist/lib/neutral/settings-VJBW4OMK.mjs +30 -0
  89. package/dist/lib/neutral/settings-VJBW4OMK.mjs.map +7 -0
  90. package/dist/lib/{browser → neutral}/templates/index.mjs +2 -1
  91. package/dist/lib/neutral/translations.mjs +104 -0
  92. package/dist/lib/neutral/translations.mjs.map +7 -0
  93. package/dist/lib/neutral/types/index.mjs +17 -0
  94. package/dist/lib/neutral/types/index.mjs.map +7 -0
  95. package/dist/lib/neutral/update-PJS5GG3Y.mjs +63 -0
  96. package/dist/lib/neutral/update-PJS5GG3Y.mjs.map +7 -0
  97. package/dist/types/src/ScriptPlugin.d.ts +3 -1
  98. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  99. package/dist/types/src/ScriptPlugin.node.d.ts +4 -0
  100. package/dist/types/src/ScriptPlugin.node.d.ts.map +1 -0
  101. package/dist/types/src/ScriptPlugin.test.d.ts +2 -0
  102. package/dist/types/src/ScriptPlugin.test.d.ts.map +1 -0
  103. package/dist/types/src/blueprints/functions/create.d.ts +11 -0
  104. package/dist/types/src/blueprints/functions/create.d.ts.map +1 -0
  105. package/dist/types/src/blueprints/functions/definitions.d.ts +141 -0
  106. package/dist/types/src/blueprints/functions/definitions.d.ts.map +1 -0
  107. package/dist/types/src/blueprints/functions/delete.d.ts +18 -0
  108. package/dist/types/src/blueprints/functions/delete.d.ts.map +1 -0
  109. package/dist/types/src/blueprints/functions/deploy.d.ts +22 -0
  110. package/dist/types/src/blueprints/functions/deploy.d.ts.map +1 -0
  111. package/dist/types/src/blueprints/functions/index.d.ts +4 -0
  112. package/dist/types/src/blueprints/functions/index.d.ts.map +1 -0
  113. package/dist/types/src/blueprints/functions/inspect-invocations.d.ts +29 -0
  114. package/dist/types/src/blueprints/functions/inspect-invocations.d.ts.map +1 -0
  115. package/dist/types/src/blueprints/functions/install-function.d.ts +11 -0
  116. package/dist/types/src/blueprints/functions/install-function.d.ts.map +1 -0
  117. package/dist/types/src/blueprints/functions/invoke.d.ts +22 -0
  118. package/dist/types/src/blueprints/functions/invoke.d.ts.map +1 -0
  119. package/dist/types/src/blueprints/functions/query-deployed-functions.d.ts +13 -0
  120. package/dist/types/src/blueprints/functions/query-deployed-functions.d.ts.map +1 -0
  121. package/dist/types/src/blueprints/functions/read.d.ts +22 -0
  122. package/dist/types/src/blueprints/functions/read.d.ts.map +1 -0
  123. package/dist/types/src/blueprints/functions/update.d.ts +27 -0
  124. package/dist/types/src/blueprints/functions/update.d.ts.map +1 -0
  125. package/dist/types/src/blueprints/index.d.ts +2 -0
  126. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  127. package/dist/types/src/blueprints/script-blueprint.d.ts +4 -0
  128. package/dist/types/src/blueprints/script-blueprint.d.ts.map +1 -0
  129. package/dist/types/src/capabilities/app-graph-builder.d.ts +4 -2
  130. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  131. package/dist/types/src/capabilities/artifact-definition.d.ts +3 -2
  132. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  133. package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -4
  134. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  135. package/dist/types/src/capabilities/compiler.d.ts +3 -1
  136. package/dist/types/src/capabilities/compiler.d.ts.map +1 -1
  137. package/dist/types/src/capabilities/create-object.d.ts +16 -0
  138. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  139. package/dist/types/src/capabilities/index.d.ts +19 -7
  140. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  141. package/dist/types/src/capabilities/node.d.ts +18 -0
  142. package/dist/types/src/capabilities/node.d.ts.map +1 -0
  143. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  144. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  145. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  146. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  147. package/dist/types/src/capabilities/settings.d.ts +5 -2
  148. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  149. package/dist/types/src/compiler/compiler.d.ts +1 -1
  150. package/dist/types/src/compiler/compiler.d.ts.map +1 -1
  151. package/dist/types/src/components/FramePanel/FramePanel.d.ts +12 -0
  152. package/dist/types/src/components/FramePanel/FramePanel.d.ts.map +1 -0
  153. package/dist/types/src/components/FramePanel/index.d.ts +2 -0
  154. package/dist/types/src/components/FramePanel/index.d.ts.map +1 -0
  155. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts +15 -0
  156. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts.map +1 -0
  157. package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts +9 -0
  158. package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts.map +1 -0
  159. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts +16 -0
  160. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts.map +1 -0
  161. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts +240 -0
  162. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts.map +1 -0
  163. package/dist/types/src/components/NotebookStack/index.d.ts +3 -0
  164. package/dist/types/src/components/NotebookStack/index.d.ts.map +1 -0
  165. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts +5 -0
  166. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts.map +1 -0
  167. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts +13 -0
  168. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts.map +1 -0
  169. package/dist/types/src/components/QueryEditor/index.d.ts +2 -0
  170. package/dist/types/src/components/QueryEditor/index.d.ts.map +1 -0
  171. package/dist/types/src/components/ScriptPluginSettings/ScriptPluginSettings.d.ts +8 -0
  172. package/dist/types/src/components/ScriptPluginSettings/ScriptPluginSettings.d.ts.map +1 -0
  173. package/dist/types/src/components/ScriptPluginSettings/ScriptPluginSettings.stories.d.ts +241 -0
  174. package/dist/types/src/components/ScriptPluginSettings/ScriptPluginSettings.stories.d.ts.map +1 -0
  175. package/dist/types/src/components/ScriptPluginSettings/index.d.ts +2 -0
  176. package/dist/types/src/components/ScriptPluginSettings/index.d.ts.map +1 -0
  177. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts +10 -9
  178. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  179. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts +232 -2
  180. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -1
  181. package/dist/types/src/components/TestPanel/TestPanel.d.ts +4 -2
  182. package/dist/types/src/components/TestPanel/TestPanel.d.ts.map +1 -1
  183. package/dist/types/src/components/TestPanel/index.d.ts +0 -1
  184. package/dist/types/src/components/TestPanel/index.d.ts.map +1 -1
  185. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts +8 -2
  186. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  187. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts +5 -3
  188. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -1
  189. package/dist/types/src/components/index.d.ts +7 -4
  190. package/dist/types/src/components/index.d.ts.map +1 -1
  191. package/dist/types/src/constants.d.ts +2 -0
  192. package/dist/types/src/constants.d.ts.map +1 -0
  193. package/dist/types/src/{components → containers}/DeploymentDialog/DeploymentDialog.d.ts +2 -4
  194. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.d.ts.map +1 -0
  195. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.stories.d.ts +240 -0
  196. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -0
  197. package/dist/types/src/containers/DeploymentDialog/index.d.ts +2 -0
  198. package/dist/types/src/containers/DeploymentDialog/index.d.ts.map +1 -0
  199. package/dist/types/src/containers/NotebookContainer/NotebookContainer.d.ts +7 -0
  200. package/dist/types/src/containers/NotebookContainer/NotebookContainer.d.ts.map +1 -0
  201. package/dist/types/src/containers/NotebookContainer/NotebookContainer.stories.d.ts +7 -0
  202. package/dist/types/src/containers/NotebookContainer/NotebookContainer.stories.d.ts.map +1 -0
  203. package/dist/types/src/containers/NotebookContainer/index.d.ts +2 -0
  204. package/dist/types/src/containers/NotebookContainer/index.d.ts.map +1 -0
  205. package/dist/types/src/containers/ScriptContainer/ScriptContainer.d.ts +10 -0
  206. package/dist/types/src/containers/ScriptContainer/ScriptContainer.d.ts.map +1 -0
  207. package/dist/types/src/containers/ScriptContainer/ScriptContainer.stories.d.ts +242 -0
  208. package/dist/types/src/containers/ScriptContainer/ScriptContainer.stories.d.ts.map +1 -0
  209. package/dist/types/src/containers/ScriptContainer/index.d.ts +2 -0
  210. package/dist/types/src/containers/ScriptContainer/index.d.ts.map +1 -0
  211. package/dist/types/src/containers/ScriptProperties/BlueprintEditor.d.ts +7 -0
  212. package/dist/types/src/containers/ScriptProperties/BlueprintEditor.d.ts.map +1 -0
  213. package/dist/types/src/containers/ScriptProperties/FunctionBinding.d.ts +7 -0
  214. package/dist/types/src/containers/ScriptProperties/FunctionBinding.d.ts.map +1 -0
  215. package/dist/types/src/containers/ScriptProperties/FunctionPublishing.d.ts +7 -0
  216. package/dist/types/src/containers/ScriptProperties/FunctionPublishing.d.ts.map +1 -0
  217. package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts +6 -0
  218. package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts.map +1 -0
  219. package/dist/types/src/containers/ScriptProperties/ScriptProperties.stories.d.ts +242 -0
  220. package/dist/types/src/containers/ScriptProperties/ScriptProperties.stories.d.ts.map +1 -0
  221. package/dist/types/src/containers/ScriptProperties/index.d.ts +2 -0
  222. package/dist/types/src/containers/ScriptProperties/index.d.ts.map +1 -0
  223. package/dist/types/src/containers/TestContainer/TestContainer.d.ts +8 -0
  224. package/dist/types/src/containers/TestContainer/TestContainer.d.ts.map +1 -0
  225. package/dist/types/src/containers/TestContainer/index.d.ts +2 -0
  226. package/dist/types/src/containers/TestContainer/index.d.ts.map +1 -0
  227. package/dist/types/src/containers/index.d.ts +7 -0
  228. package/dist/types/src/containers/index.d.ts.map +1 -0
  229. package/dist/types/src/e2e/ai.test.d.ts +2 -0
  230. package/dist/types/src/e2e/ai.test.d.ts.map +1 -0
  231. package/dist/types/src/e2e/deploy.test.d.ts +2 -0
  232. package/dist/types/src/e2e/deploy.test.d.ts.map +1 -0
  233. package/dist/types/src/hooks/deploy.d.ts +28 -30
  234. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  235. package/dist/types/src/hooks/format.d.ts +5 -4
  236. package/dist/types/src/hooks/format.d.ts.map +1 -1
  237. package/dist/types/src/hooks/index.d.ts +1 -0
  238. package/dist/types/src/hooks/index.d.ts.map +1 -1
  239. package/dist/types/src/hooks/template.d.ts +7 -16
  240. package/dist/types/src/hooks/template.d.ts.map +1 -1
  241. package/dist/types/src/hooks/useCompiler.d.ts +7 -0
  242. package/dist/types/src/hooks/useCompiler.d.ts.map +1 -0
  243. package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts.map +1 -1
  244. package/dist/types/src/hooks/useToolbarState.d.ts +8 -1
  245. package/dist/types/src/hooks/useToolbarState.d.ts.map +1 -1
  246. package/dist/types/src/index.d.ts +3 -3
  247. package/dist/types/src/index.d.ts.map +1 -1
  248. package/dist/types/src/meta.d.ts +2 -3
  249. package/dist/types/src/meta.d.ts.map +1 -1
  250. package/dist/types/src/notebook/compute-graph.d.ts +58 -0
  251. package/dist/types/src/notebook/compute-graph.d.ts.map +1 -0
  252. package/dist/types/src/notebook/compute-graph.test.d.ts +2 -0
  253. package/dist/types/src/notebook/compute-graph.test.d.ts.map +1 -0
  254. package/dist/types/src/notebook/eval.d.ts +13 -0
  255. package/dist/types/src/notebook/eval.d.ts.map +1 -0
  256. package/dist/types/src/notebook/index.d.ts +2 -0
  257. package/dist/types/src/notebook/index.d.ts.map +1 -0
  258. package/dist/types/src/notebook/vfs-parser.d.ts +74 -0
  259. package/dist/types/src/notebook/vfs-parser.d.ts.map +1 -0
  260. package/dist/types/src/notebook/vfs-parser.test.d.ts +2 -0
  261. package/dist/types/src/notebook/vfs-parser.test.d.ts.map +1 -0
  262. package/dist/types/src/operations/access-token-created.d.ts +5 -0
  263. package/dist/types/src/operations/access-token-created.d.ts.map +1 -0
  264. package/dist/types/src/operations/create-script.d.ts +5 -0
  265. package/dist/types/src/operations/create-script.d.ts.map +1 -0
  266. package/dist/types/src/operations/index.d.ts +3 -0
  267. package/dist/types/src/operations/index.d.ts.map +1 -0
  268. package/dist/types/src/plugin.d.ts +4 -0
  269. package/dist/types/src/plugin.d.ts.map +1 -0
  270. package/dist/types/src/templates/anthropic.d.ts +7 -0
  271. package/dist/types/src/templates/anthropic.d.ts.map +1 -0
  272. package/dist/types/src/templates/chat.d.ts.map +1 -1
  273. package/dist/types/src/templates/chess-bot.d.ts +12 -0
  274. package/dist/types/src/templates/chess-bot.d.ts.map +1 -0
  275. package/dist/types/src/templates/commentary.d.ts +13 -0
  276. package/dist/types/src/templates/commentary.d.ts.map +1 -0
  277. package/dist/types/src/templates/data-generator.d.ts.map +1 -1
  278. package/dist/types/src/templates/discord.d.ts.map +1 -1
  279. package/dist/types/src/templates/email.d.ts.map +1 -1
  280. package/dist/types/src/templates/forex-effect.d.ts +5 -1
  281. package/dist/types/src/templates/forex-effect.d.ts.map +1 -1
  282. package/dist/types/src/templates/forex.d.ts +5 -1
  283. package/dist/types/src/templates/forex.d.ts.map +1 -1
  284. package/dist/types/src/templates/gmail.d.ts.map +1 -1
  285. package/dist/types/src/templates/index.d.ts +52 -1
  286. package/dist/types/src/templates/index.d.ts.map +1 -1
  287. package/dist/types/src/templates/ping.d.ts +4 -0
  288. package/dist/types/src/templates/ping.d.ts.map +1 -0
  289. package/dist/types/src/testing/index.d.ts +3 -0
  290. package/dist/types/src/testing/index.d.ts.map +1 -0
  291. package/dist/types/src/testing/simulator.test.d.ts +2 -0
  292. package/dist/types/src/testing/simulator.test.d.ts.map +1 -0
  293. package/dist/types/src/testing/test-notebook.d.ts +3 -0
  294. package/dist/types/src/testing/test-notebook.d.ts.map +1 -0
  295. package/dist/types/src/testing/test-script.d.ts +7 -0
  296. package/dist/types/src/testing/test-script.d.ts.map +1 -0
  297. package/dist/types/src/translations.d.ts +222 -66
  298. package/dist/types/src/translations.d.ts.map +1 -1
  299. package/dist/types/src/types/Notebook.d.ts +120 -0
  300. package/dist/types/src/types/Notebook.d.ts.map +1 -0
  301. package/dist/types/src/types/ScriptCapabilities.d.ts +6 -0
  302. package/dist/types/src/types/ScriptCapabilities.d.ts.map +1 -0
  303. package/dist/types/src/types/ScriptEvents.d.ts +3 -0
  304. package/dist/types/src/types/ScriptEvents.d.ts.map +1 -0
  305. package/dist/types/src/types/ScriptOperation.d.ts +29 -0
  306. package/dist/types/src/types/ScriptOperation.d.ts.map +1 -0
  307. package/dist/types/src/types/Settings.d.ts +7 -0
  308. package/dist/types/src/types/Settings.d.ts.map +1 -0
  309. package/dist/types/src/types/index.d.ts +5 -1
  310. package/dist/types/src/types/index.d.ts.map +1 -1
  311. package/dist/types/src/types/types.d.ts +2 -0
  312. package/dist/types/src/types/types.d.ts.map +1 -0
  313. package/dist/types/src/util/deploy.d.ts +4 -4
  314. package/dist/types/src/util/deploy.d.ts.map +1 -1
  315. package/dist/types/src/util/functions.d.ts +6 -3
  316. package/dist/types/src/util/functions.d.ts.map +1 -1
  317. package/dist/types/tsconfig.tsbuildinfo +1 -1
  318. package/package.json +175 -90
  319. package/src/ScriptPlugin.node.ts +21 -0
  320. package/src/ScriptPlugin.test.ts +31 -0
  321. package/src/ScriptPlugin.tsx +29 -80
  322. package/src/blueprints/functions/create.ts +47 -0
  323. package/src/blueprints/functions/definitions.ts +323 -0
  324. package/src/blueprints/functions/delete.ts +23 -0
  325. package/src/blueprints/functions/deploy.ts +70 -0
  326. package/src/blueprints/functions/index.ts +19 -0
  327. package/src/blueprints/functions/inspect-invocations.ts +56 -0
  328. package/src/blueprints/functions/install-function.ts +56 -0
  329. package/src/blueprints/functions/invoke.ts +35 -0
  330. package/src/blueprints/functions/query-deployed-functions.ts +31 -0
  331. package/src/blueprints/functions/read.ts +29 -0
  332. package/src/blueprints/functions/update.ts +68 -0
  333. package/src/blueprints/index.ts +5 -0
  334. package/src/blueprints/script-blueprint.ts +55 -0
  335. package/src/capabilities/app-graph-builder.ts +40 -57
  336. package/src/capabilities/artifact-definition.ts +100 -99
  337. package/src/capabilities/blueprint-definition.ts +13 -24
  338. package/src/capabilities/compiler.ts +100 -23
  339. package/src/capabilities/create-object.ts +48 -0
  340. package/src/capabilities/index.ts +13 -9
  341. package/src/capabilities/node.ts +16 -0
  342. package/src/capabilities/operation-handler.ts +21 -0
  343. package/src/capabilities/react-surface.tsx +120 -80
  344. package/src/capabilities/settings.ts +26 -14
  345. package/src/compiler/compiler.ts +17 -3
  346. package/src/components/{FrameContainer/FrameContainer.tsx → FramePanel/FramePanel.tsx} +8 -7
  347. package/src/components/{FrameContainer → FramePanel}/index.ts +1 -1
  348. package/src/components/NotebookStack/NotebookCell.tsx +226 -0
  349. package/src/components/NotebookStack/NotebookMenu.tsx +47 -0
  350. package/src/components/NotebookStack/NotebookStack.stories.tsx +53 -0
  351. package/src/components/NotebookStack/NotebookStack.tsx +97 -0
  352. package/src/components/NotebookStack/index.ts +6 -0
  353. package/src/components/QueryEditor/QueryEditor.stories.tsx +96 -0
  354. package/src/components/QueryEditor/QueryEditor.tsx +47 -0
  355. package/src/components/QueryEditor/index.ts +5 -0
  356. package/src/components/ScriptPluginSettings/ScriptPluginSettings.stories.tsx +32 -0
  357. package/src/components/ScriptPluginSettings/ScriptPluginSettings.tsx +42 -0
  358. package/src/components/ScriptPluginSettings/index.ts +5 -0
  359. package/src/components/ScriptToolbar/ScriptToolbar.stories.tsx +54 -20
  360. package/src/components/ScriptToolbar/ScriptToolbar.tsx +43 -51
  361. package/src/components/TestPanel/TestPanel.tsx +124 -185
  362. package/src/components/TestPanel/index.ts +0 -1
  363. package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +80 -18
  364. package/src/components/TypescriptEditor/TypescriptEditor.tsx +85 -77
  365. package/src/components/index.ts +7 -5
  366. package/src/constants.ts +7 -0
  367. package/src/containers/DeploymentDialog/DeploymentDialog.stories.tsx +63 -0
  368. package/src/containers/DeploymentDialog/DeploymentDialog.tsx +99 -0
  369. package/src/containers/DeploymentDialog/index.ts +5 -0
  370. package/src/containers/NotebookContainer/NotebookContainer.stories.tsx +85 -0
  371. package/src/containers/NotebookContainer/NotebookContainer.tsx +254 -0
  372. package/src/containers/NotebookContainer/index.ts +5 -0
  373. package/src/containers/ScriptContainer/ScriptContainer.stories.tsx +106 -0
  374. package/src/containers/ScriptContainer/ScriptContainer.tsx +85 -0
  375. package/src/containers/ScriptContainer/index.ts +5 -0
  376. package/src/containers/ScriptProperties/BlueprintEditor.tsx +101 -0
  377. package/src/containers/ScriptProperties/FunctionBinding.tsx +83 -0
  378. package/src/containers/ScriptProperties/FunctionPublishing.tsx +121 -0
  379. package/src/containers/ScriptProperties/ScriptProperties.stories.tsx +75 -0
  380. package/src/containers/ScriptProperties/ScriptProperties.tsx +24 -0
  381. package/src/containers/ScriptProperties/index.ts +5 -0
  382. package/src/containers/TestContainer/TestContainer.tsx +44 -0
  383. package/src/containers/TestContainer/index.ts +5 -0
  384. package/src/containers/index.ts +11 -0
  385. package/src/e2e/ai.test.ts +93 -0
  386. package/src/e2e/deploy.test.ts +66 -0
  387. package/src/hooks/deploy.ts +49 -40
  388. package/src/hooks/format.ts +10 -5
  389. package/src/hooks/index.ts +1 -0
  390. package/src/hooks/template.ts +23 -25
  391. package/src/hooks/useCompiler.ts +25 -0
  392. package/src/hooks/useCreateAndDeployScriptTemplates.ts +15 -16
  393. package/src/hooks/useToolbarState.ts +29 -4
  394. package/src/index.ts +3 -4
  395. package/src/meta.ts +10 -8
  396. package/src/notebook/compute-graph.test.ts +82 -0
  397. package/src/notebook/compute-graph.ts +230 -0
  398. package/src/notebook/eval.ts +105 -0
  399. package/src/notebook/index.ts +5 -0
  400. package/src/notebook/vfs-parser.test.ts +149 -0
  401. package/src/notebook/vfs-parser.ts +458 -0
  402. package/src/operations/access-token-created.ts +37 -0
  403. package/src/operations/create-script.ts +46 -0
  404. package/src/operations/index.ts +10 -0
  405. package/src/plugin.ts +11 -0
  406. package/src/templates/anthropic.ts +49 -0
  407. package/src/templates/chat.ts +1 -1
  408. package/src/templates/chess-bot.ts +63 -0
  409. package/src/templates/commentary.ts +249 -0
  410. package/src/templates/data-generator.ts +3 -1
  411. package/src/templates/discord.ts +11 -3
  412. package/src/templates/forex-effect.ts +35 -25
  413. package/src/templates/forex.ts +27 -15
  414. package/src/templates/gmail.ts +25 -14
  415. package/src/templates/index.ts +36 -23
  416. package/src/templates/ping.ts +25 -0
  417. package/src/testing/index.ts +6 -0
  418. package/src/testing/simulator.test.ts +39 -0
  419. package/src/testing/test-notebook.ts +71 -0
  420. package/src/testing/test-script.ts +29 -0
  421. package/src/translations.ts +92 -66
  422. package/src/types/Notebook.ts +45 -0
  423. package/src/types/ScriptCapabilities.ts +18 -0
  424. package/src/types/ScriptEvents.ts +11 -0
  425. package/src/types/ScriptOperation.ts +42 -0
  426. package/src/types/Settings.ts +20 -0
  427. package/src/types/index.ts +6 -1
  428. package/src/types/types.ts +5 -0
  429. package/src/util/deploy.ts +32 -40
  430. package/src/util/functions.ts +57 -23
  431. package/src/vite-env.d.ts +2 -0
  432. package/dist/lib/browser/DeploymentDialog-QZSTVNIS.mjs +0 -12
  433. package/dist/lib/browser/ScriptContainer-DNNA6XC6.mjs +0 -265
  434. package/dist/lib/browser/ScriptContainer-DNNA6XC6.mjs.map +0 -7
  435. package/dist/lib/browser/app-graph-builder-IABOSTBK.mjs +0 -64
  436. package/dist/lib/browser/app-graph-builder-IABOSTBK.mjs.map +0 -7
  437. package/dist/lib/browser/blueprint-definition-AR7ITBCD.mjs +0 -28
  438. package/dist/lib/browser/blueprint-definition-AR7ITBCD.mjs.map +0 -7
  439. package/dist/lib/browser/chunk-5TVBECWH.mjs +0 -15
  440. package/dist/lib/browser/chunk-5TVBECWH.mjs.map +0 -7
  441. package/dist/lib/browser/chunk-6CAH7VIE.mjs +0 -283
  442. package/dist/lib/browser/chunk-6CAH7VIE.mjs.map +0 -7
  443. package/dist/lib/browser/chunk-GZKWMME3.mjs +0 -556
  444. package/dist/lib/browser/chunk-GZKWMME3.mjs.map +0 -7
  445. package/dist/lib/browser/chunk-IS4OG2UW.mjs +0 -39
  446. package/dist/lib/browser/chunk-IS4OG2UW.mjs.map +0 -7
  447. package/dist/lib/browser/chunk-NXKU3BNX.mjs +0 -222
  448. package/dist/lib/browser/chunk-NXKU3BNX.mjs.map +0 -7
  449. package/dist/lib/browser/chunk-QYAREHGH.mjs.map +0 -7
  450. package/dist/lib/browser/chunk-RNGIQIEJ.mjs +0 -88
  451. package/dist/lib/browser/chunk-RNGIQIEJ.mjs.map +0 -7
  452. package/dist/lib/browser/chunk-YCZPTTFO.mjs +0 -153
  453. package/dist/lib/browser/chunk-YCZPTTFO.mjs.map +0 -7
  454. package/dist/lib/browser/compiler-2HJH34GM.mjs +0 -98
  455. package/dist/lib/browser/compiler-2HJH34GM.mjs.map +0 -7
  456. package/dist/lib/browser/index.mjs +0 -210
  457. package/dist/lib/browser/index.mjs.map +0 -7
  458. package/dist/lib/browser/intent-resolver-F4YSRPJI.mjs +0 -89
  459. package/dist/lib/browser/intent-resolver-F4YSRPJI.mjs.map +0 -7
  460. package/dist/lib/browser/meta.json +0 -1
  461. package/dist/lib/browser/react-surface-BBHFU6MI.mjs +0 -104
  462. package/dist/lib/browser/react-surface-BBHFU6MI.mjs.map +0 -7
  463. package/dist/lib/browser/settings-KCTBK5TY.mjs +0 -24
  464. package/dist/lib/browser/settings-KCTBK5TY.mjs.map +0 -7
  465. package/dist/lib/browser/types/index.mjs +0 -10
  466. package/dist/lib/node-esm/DeploymentDialog-G6EHEPXN.mjs +0 -13
  467. package/dist/lib/node-esm/ScriptContainer-KPYZN2KY.mjs +0 -266
  468. package/dist/lib/node-esm/ScriptContainer-KPYZN2KY.mjs.map +0 -7
  469. package/dist/lib/node-esm/app-graph-builder-CQTTAYHP.mjs +0 -65
  470. package/dist/lib/node-esm/app-graph-builder-CQTTAYHP.mjs.map +0 -7
  471. package/dist/lib/node-esm/blueprint-definition-TJY4TX6S.mjs +0 -30
  472. package/dist/lib/node-esm/blueprint-definition-TJY4TX6S.mjs.map +0 -7
  473. package/dist/lib/node-esm/chunk-2GBESIHU.mjs +0 -284
  474. package/dist/lib/node-esm/chunk-2GBESIHU.mjs.map +0 -7
  475. package/dist/lib/node-esm/chunk-35M3CHYE.mjs +0 -16
  476. package/dist/lib/node-esm/chunk-35M3CHYE.mjs.map +0 -7
  477. package/dist/lib/node-esm/chunk-AHXJ6NQU.mjs +0 -30
  478. package/dist/lib/node-esm/chunk-AHXJ6NQU.mjs.map +0 -7
  479. package/dist/lib/node-esm/chunk-GWHLP5LM.mjs +0 -90
  480. package/dist/lib/node-esm/chunk-GWHLP5LM.mjs.map +0 -7
  481. package/dist/lib/node-esm/chunk-HUHVIOL5.mjs +0 -557
  482. package/dist/lib/node-esm/chunk-HUHVIOL5.mjs.map +0 -7
  483. package/dist/lib/node-esm/chunk-JIPFLBYA.mjs +0 -40
  484. package/dist/lib/node-esm/chunk-JIPFLBYA.mjs.map +0 -7
  485. package/dist/lib/node-esm/chunk-M642JUOZ.mjs +0 -223
  486. package/dist/lib/node-esm/chunk-M642JUOZ.mjs.map +0 -7
  487. package/dist/lib/node-esm/chunk-ZA36GO4T.mjs +0 -154
  488. package/dist/lib/node-esm/chunk-ZA36GO4T.mjs.map +0 -7
  489. package/dist/lib/node-esm/compiler-7SP27RA6.mjs +0 -99
  490. package/dist/lib/node-esm/compiler-7SP27RA6.mjs.map +0 -7
  491. package/dist/lib/node-esm/index.mjs +0 -211
  492. package/dist/lib/node-esm/index.mjs.map +0 -7
  493. package/dist/lib/node-esm/intent-resolver-CGQYRWWD.mjs +0 -90
  494. package/dist/lib/node-esm/intent-resolver-CGQYRWWD.mjs.map +0 -7
  495. package/dist/lib/node-esm/meta.json +0 -1
  496. package/dist/lib/node-esm/react-surface-UWIWPKZD.mjs +0 -105
  497. package/dist/lib/node-esm/react-surface-UWIWPKZD.mjs.map +0 -7
  498. package/dist/lib/node-esm/settings-DXZ334A3.mjs +0 -25
  499. package/dist/lib/node-esm/settings-DXZ334A3.mjs.map +0 -7
  500. package/dist/lib/node-esm/templates/index.mjs +0 -10
  501. package/dist/lib/node-esm/types/index.mjs +0 -11
  502. package/dist/types/src/capabilities/capabilities.d.ts +0 -5
  503. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  504. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  505. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  506. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +0 -1
  507. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts +0 -145
  508. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +0 -1
  509. package/dist/types/src/components/DeploymentDialog/index.d.ts +0 -4
  510. package/dist/types/src/components/DeploymentDialog/index.d.ts.map +0 -1
  511. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts +0 -12
  512. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +0 -1
  513. package/dist/types/src/components/FrameContainer/frame.d.ts +0 -2
  514. package/dist/types/src/components/FrameContainer/frame.d.ts.map +0 -1
  515. package/dist/types/src/components/FrameContainer/index.d.ts +0 -2
  516. package/dist/types/src/components/FrameContainer/index.d.ts.map +0 -1
  517. package/dist/types/src/components/ScriptContainer.d.ts +0 -12
  518. package/dist/types/src/components/ScriptContainer.d.ts.map +0 -1
  519. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts +0 -8
  520. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +0 -1
  521. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts +0 -6
  522. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts.map +0 -1
  523. package/dist/types/src/components/Settings/index.d.ts +0 -3
  524. package/dist/types/src/components/Settings/index.d.ts.map +0 -1
  525. package/dist/types/src/components/TestPanel/TestContainer.d.ts +0 -8
  526. package/dist/types/src/components/TestPanel/TestContainer.d.ts.map +0 -1
  527. package/dist/types/src/events.d.ts +0 -4
  528. package/dist/types/src/events.d.ts.map +0 -1
  529. package/dist/types/src/templates/chess.d.ts +0 -3
  530. package/dist/types/src/templates/chess.d.ts.map +0 -1
  531. package/dist/types/src/templates/echo.d.ts +0 -6
  532. package/dist/types/src/templates/echo.d.ts.map +0 -1
  533. package/dist/types/src/types/schema.d.ts +0 -38
  534. package/dist/types/src/types/schema.d.ts.map +0 -1
  535. package/src/capabilities/capabilities.ts +0 -12
  536. package/src/capabilities/intent-resolver.ts +0 -77
  537. package/src/components/DeploymentDialog/DeploymentDialog.stories.tsx +0 -51
  538. package/src/components/DeploymentDialog/DeploymentDialog.tsx +0 -112
  539. package/src/components/DeploymentDialog/index.ts +0 -9
  540. package/src/components/FrameContainer/frame.html +0 -25
  541. package/src/components/FrameContainer/frame.tsx +0 -51
  542. package/src/components/ScriptContainer.tsx +0 -69
  543. package/src/components/Settings/ScriptObjectSettings.tsx +0 -202
  544. package/src/components/Settings/ScriptPluginSettings.tsx +0 -76
  545. package/src/components/Settings/index.ts +0 -6
  546. package/src/components/TestPanel/TestContainer.tsx +0 -27
  547. package/src/events.ts +0 -11
  548. package/src/templates/chess.ts +0 -47
  549. package/src/templates/echo.ts +0 -8
  550. package/src/types/schema.ts +0 -37
  551. /package/dist/lib/{browser/templates → neutral/blueprints}/index.mjs.map +0 -0
  552. /package/dist/lib/{browser/DeploymentDialog-QZSTVNIS.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  553. /package/dist/lib/{browser/types → neutral}/index.mjs.map +0 -0
  554. /package/dist/lib/{node-esm/DeploymentDialog-G6EHEPXN.mjs.map → neutral/meta.mjs.map} +0 -0
  555. /package/dist/lib/{node-esm/templates → neutral/operations}/index.mjs.map +0 -0
  556. /package/dist/lib/{node-esm/types → neutral/templates}/index.mjs.map +0 -0
package/src/plugin.ts ADDED
@@ -0,0 +1,11 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Plugin } from '@dxos/app-framework';
6
+
7
+ import { meta } from './meta';
8
+
9
+ export const ScriptPlugin = Plugin.lazy(meta, () => import('#plugin'));
10
+
11
+ export { ScriptOperationHandlerSet } from './operations';
@@ -0,0 +1,49 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as LanguageModel from '@effect/ai/LanguageModel';
6
+ import * as Chunk from 'effect/Chunk';
7
+ import * as Effect from 'effect/Effect';
8
+ import * as Schema from 'effect/Schema';
9
+ import * as Stream from 'effect/Stream';
10
+
11
+ import { AiService } from '@dxos/ai';
12
+ import { Operation } from '@dxos/compute';
13
+
14
+ const Anthropic = Operation.make({
15
+ meta: {
16
+ key: 'org.dxos.script.anthropic',
17
+ name: 'Anthropic Chat',
18
+ description: 'Chat with Anthropic',
19
+ },
20
+ input: Schema.Struct({
21
+ message: Schema.String,
22
+ }),
23
+ output: Schema.Any,
24
+ services: [AiService.AiService],
25
+ });
26
+
27
+ export default Anthropic.pipe(
28
+ Operation.withHandler(
29
+ Effect.fn(function* ({ message }) {
30
+ const model = (yield* AiService.AiService).model('@anthropic/claude-sonnet-4-5');
31
+
32
+ //
33
+ // Basic example.
34
+ //
35
+ const { text } = yield* LanguageModel.generateText({ prompt: message }).pipe(Effect.provide(model));
36
+
37
+ //
38
+ // Streaming example.
39
+ //
40
+ const parts = yield* LanguageModel.streamText({
41
+ prompt: 'Count from 1 to 5, one number per line.',
42
+ }).pipe(Stream.runCollect, Effect.map(Chunk.toArray), Effect.provide(model));
43
+ const textDeltas = parts.filter((p) => p.type === 'text-delta');
44
+ const fullText = textDeltas.map((p) => (p as { delta: string }).delta).join('');
45
+
46
+ return { response: text, streamText: fullText };
47
+ }),
48
+ ),
49
+ );
@@ -76,7 +76,7 @@ export default async ({ data: { bodyText }, context: { space, ai } }: any) => {
76
76
 
77
77
  const getContext = async ({ space }: any) => {
78
78
  let context = '';
79
- const { objects: docs } = await space.crud.query({ __typename: 'dxos.org/type/Document' }).run();
79
+ const { objects: docs } = await space.crud.query({ __typename: 'org.dxos.type.document' }).run();
80
80
  for (const doc of docs) {
81
81
  const { content } = await space.crud.query({ id: doc.content }).first();
82
82
  context += content + '\n\n';
@@ -0,0 +1,63 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Chess as ChessJS } from 'chess.js';
6
+ import * as Effect from 'effect/Effect';
7
+ import * as Schema from 'effect/Schema';
8
+
9
+ import { Operation } from '@dxos/compute';
10
+ import { Database, Obj } from '@dxos/echo';
11
+ import { Chess } from '@dxos/plugin-chess';
12
+ import { GameRef, Game, loadGame } from '@dxos/plugin-game';
13
+
14
+ const ChessBot = Operation.make({
15
+ meta: {
16
+ key: 'org.dxos.script.chess-bot',
17
+ name: 'Chess Bot',
18
+ description: 'Plays a random move in a chess game.',
19
+ },
20
+ input: Schema.Struct({
21
+ game: GameRef(Chess.State).annotations({
22
+ description: 'The chess game to comment on.',
23
+ }),
24
+ player: Schema.optional(Schema.Literal('white', 'black')).annotations({
25
+ description: 'The player to play the game as.',
26
+ }),
27
+ }),
28
+ output: Schema.Struct({
29
+ state: Schema.String.annotations({
30
+ description: 'The state of the game as an ASCII art board.',
31
+ }),
32
+ }),
33
+ types: [Game, Chess.State],
34
+ services: [Database.Service],
35
+ });
36
+
37
+ export default ChessBot.pipe(
38
+ Operation.withHandler(
39
+ Effect.fnUntraced(function* ({ game, player = 'black' }) {
40
+ const { variant } = yield* loadGame(game, Chess.State);
41
+ const chess = new ChessJS();
42
+ chess.loadPgn(variant.pgn ?? '');
43
+ if (chess.turn() !== (player === 'white' ? 'w' : 'b')) {
44
+ return { state: chess.ascii() };
45
+ }
46
+
47
+ const moves = chess.moves({ verbose: true });
48
+ const move = moves[Math.floor(Math.random() * moves.length)];
49
+ if (!move) {
50
+ return { state: chess.ascii() };
51
+ }
52
+
53
+ chess.move(move.san);
54
+ const newPgn = chess.pgn();
55
+ Obj.update(variant, (variant) => {
56
+ const mutable = variant as Obj.Mutable<typeof variant>;
57
+ mutable.pgn = newPgn;
58
+ });
59
+ yield* Database.flush();
60
+ return { state: chess.ascii() };
61
+ }),
62
+ ),
63
+ );
@@ -0,0 +1,249 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as A from '@automerge/automerge';
6
+ import { Chess as ChessJS } from 'chess.js';
7
+ import * as Array from 'effect/Array';
8
+ import * as Effect from 'effect/Effect';
9
+ import * as Function from 'effect/Function';
10
+ import * as Layer from 'effect/Layer';
11
+ import * as Option from 'effect/Option';
12
+ import * as Schema from 'effect/Schema';
13
+
14
+ import { AiService, ConsolePrinter, ToolExecutionService, ToolResolverService } from '@dxos/ai';
15
+ import { AiRequest, GenerationObserver } from '@dxos/assistant';
16
+ import { ArtifactId } from '@dxos/assistant';
17
+ import { Trace, Operation, OperationRegistry } from '@dxos/compute';
18
+ import { Database, Filter, Obj, Ref, Relation } from '@dxos/echo';
19
+ import { Collection } from '@dxos/echo';
20
+ import { createDocAccessor } from '@dxos/echo-db';
21
+ import { log } from '@dxos/log';
22
+ import { Chess } from '@dxos/plugin-chess';
23
+ import { Game, GameRef, loadGame } from '@dxos/plugin-game';
24
+ import { Markdown } from '@dxos/plugin-markdown';
25
+ import { Text } from '@dxos/schema';
26
+ import { HasSubject } from '@dxos/types';
27
+ import { trim } from '@dxos/util';
28
+
29
+ const Commentary = Operation.make({
30
+ meta: {
31
+ key: 'org.dxos.function.chess.commentary',
32
+ name: 'Commentary',
33
+ description: 'Adds commentary about the most recent move to a markdown document associated with the chess game.',
34
+ },
35
+ input: Schema.Struct({
36
+ game: GameRef(Chess.State).annotations({
37
+ description: 'The chess game to comment on.',
38
+ }),
39
+ }),
40
+ output: Schema.Union(
41
+ Schema.Struct({
42
+ documentId: ArtifactId.annotations({
43
+ description: 'The ID of the markdown document that was updated or created.',
44
+ }),
45
+ commentary: Schema.String.annotations({
46
+ description: 'The commentary that was added.',
47
+ }),
48
+ }),
49
+ Schema.Void.annotations({
50
+ description: 'Function did not find anything to comment on.',
51
+ }),
52
+ ),
53
+ types: [Game, Chess.State, Markdown.Document, Text.Text, HasSubject.HasSubject, Collection.Collection],
54
+ services: [AiService.AiService, Database.Service],
55
+ });
56
+
57
+ export default Commentary.pipe(
58
+ Operation.withHandler(
59
+ Effect.fnUntraced(
60
+ function* ({ game: gameRef }) {
61
+ // Load the game and its Chess variant state.
62
+ log.info('load game', { gameRef });
63
+ const { game: chessGame, variant: chessState } = yield* loadGame(gameRef, Chess.State);
64
+
65
+ // Load the chess position from PGN or FEN.
66
+ const chess = new ChessJS();
67
+ if (chessState.pgn) {
68
+ chess.loadPgn(chessState.pgn);
69
+ } else if (chessState.fen) {
70
+ chess.load(chessState.fen);
71
+ } else {
72
+ log.info('Early return: no pgn or fen');
73
+ return;
74
+ }
75
+
76
+ // Get the most recent move
77
+ const history = chess.history({ verbose: true });
78
+ if (history.length === 0) {
79
+ throw new Error('No moves have been played yet');
80
+ }
81
+ const lastMove = history[history.length - 1];
82
+ const moveNumber = Math.ceil(history.length / 2);
83
+ const isWhiteMove = history.length % 2 === 1;
84
+ const player = isWhiteMove ? 'White' : 'Black';
85
+ const moveNotation = lastMove.san;
86
+
87
+ // Generate AI commentary about the move
88
+ const result = yield* new AiRequest({
89
+ observer: GenerationObserver.fromPrinter(new ConsolePrinter({ tag: 'chess-commentary' })),
90
+ }).run({
91
+ prompt:
92
+ `Comment on this chess move as if you're commentating a live match for an audience:\n\n` +
93
+ `Move ${moveNumber}: ${player} plays ${moveNotation} (${lastMove.from} to ${lastMove.to})${lastMove.captured ? `, capturing ${lastMove.captured}` : ''}\n` +
94
+ `Current position: ${chess.fen()}\n` +
95
+ `${chess.isCheck() ? 'The king is in check! ' : ''}` +
96
+ `${chess.isCheckmate() ? 'CHECKMATE! ' : ''}` +
97
+ `${chess.isStalemate() ? 'STALEMATE! ' : ''}` +
98
+ `\nGame so far:\n${chess.pgn()}`,
99
+ system: COMMENTARY_SYSTEM_PROMPT,
100
+ history: [],
101
+ });
102
+
103
+ const commentaryText = Function.pipe(
104
+ result,
105
+ Array.findLast((msg) => msg.sender.role === 'assistant' && msg.blocks.some((block) => block._tag === 'text')),
106
+ Option.flatMap((msg) =>
107
+ Function.pipe(
108
+ msg.blocks,
109
+ Array.findLast((block) => block._tag === 'text'),
110
+ Option.map((block) => block.text),
111
+ ),
112
+ ),
113
+ Option.getOrThrowWith(() => new Error('No commentary generated')),
114
+ );
115
+
116
+ const commentary = `## Move ${moveNumber}: ${player} plays ${moveNotation}\n\n${commentaryText}\n\n`;
117
+ log.info('commentary', { commentary });
118
+
119
+ // TODO(wittjosiah): Functions currently don't support traversals.
120
+ // const docs = yield* Database.runQuery(
121
+ // Query.select(Filter.id(chessGame.id)).targetOf(HasSubject.HasSubject).source(),
122
+ // ).pipe(Effect.map((objects) => objects.filter((object) => Obj.instanceOf(Markdown.Document, object))));
123
+ const docs = yield* Database.runQuery(Filter.type(HasSubject.HasSubject)).pipe(
124
+ Effect.map((relations) =>
125
+ relations.filter((relation) => {
126
+ // TODO(wittjosiah): This is a workaround for getTarget not handling deleted objects.
127
+ try {
128
+ log.info('relation', {
129
+ source: Obj.getDXN(Relation.getTarget(relation)).toString(),
130
+ game: Obj.getDXN(chessGame).toString(),
131
+ });
132
+ return Obj.getDXN(Relation.getTarget(relation)).toString() === Obj.getDXN(chessGame).toString();
133
+ } catch {
134
+ return false;
135
+ }
136
+ }),
137
+ ),
138
+ Effect.map((relations) =>
139
+ relations
140
+ .map((relation) => {
141
+ // TODO(wittjosiah): This is a workaround for getSource not handling deleted objects.
142
+ try {
143
+ return Relation.getSource(relation);
144
+ } catch {
145
+ return undefined;
146
+ }
147
+ })
148
+ .filter((source) => source !== undefined),
149
+ ),
150
+ Effect.map((sources) => {
151
+ const docs = sources.filter((source) => Obj.instanceOf(Markdown.Document, source));
152
+ log.info('docs', { sources, docs });
153
+ return docs;
154
+ }),
155
+ );
156
+ log.info('docs', { count: docs.length });
157
+
158
+ let document: Markdown.Document;
159
+ if (docs.length === 0) {
160
+ // TODO(wittjosiah): Deploy fails if `SpaceProperties` schema is imported because its from `client-protocol`.
161
+ const [properties] = yield* Database.runQuery(Filter.typename('org.dxos.type.spaceProperties'));
162
+ const rootCollection = yield* Database.load<Collection.Collection>(
163
+ properties[Collection.Collection.typename],
164
+ );
165
+
166
+ log.info('rootCollection', { rootCollection });
167
+
168
+ // Create a new markdown document
169
+ const gameName = chessGame.name || 'Chess Game';
170
+ document = yield* Database.add(
171
+ Markdown.make({
172
+ name: `${gameName} Commentary`,
173
+ content: `# ${gameName} Commentary\n\n${commentary}`,
174
+ }),
175
+ );
176
+
177
+ const documentRef = Ref.make(document);
178
+ Obj.update(rootCollection, (rootCollection) => {
179
+ rootCollection.objects.push(documentRef);
180
+ });
181
+
182
+ // Create the HasSubject relation
183
+ yield* Database.add(
184
+ Relation.make(HasSubject.HasSubject, {
185
+ [Relation.Source]: document,
186
+ [Relation.Target]: chessGame,
187
+ completedAt: new Date().toISOString(),
188
+ }),
189
+ );
190
+ } else {
191
+ document = docs[0];
192
+
193
+ // Load the text content and append the commentary
194
+ const text = yield* Database.load(document.content);
195
+ const accessor = createDocAccessor(text, ['content']);
196
+ accessor.handle.change((doc: A.Doc<Text.Text>) => {
197
+ A.splice(doc, accessor.path.slice(), text.content.length, 0, commentary);
198
+ });
199
+ }
200
+
201
+ log.info('result', { documentId: Obj.getDXN(document).toString(), commentary });
202
+
203
+ yield* Database.flush();
204
+
205
+ return {
206
+ documentId: Obj.getDXN(document).toString(),
207
+ commentary,
208
+ };
209
+ },
210
+ Effect.provide(
211
+ Layer.mergeAll(
212
+ AiService.model('@anthropic/claude-haiku-4-5'),
213
+ ToolResolverService.layerEmpty,
214
+ ToolExecutionService.layerEmpty,
215
+ Trace.writerLayerNoop,
216
+ Database.notAvailable,
217
+ Layer.succeed(Operation.Service, {
218
+ invoke: () => Effect.die('Not available.'),
219
+ schedule: () => Effect.die('Not available.'),
220
+ invokePromise: async () => ({ error: new Error('Not available.') }),
221
+ } as any),
222
+ Layer.succeed(OperationRegistry.Service, { resolve: () => Effect.succeed(undefined) } as any),
223
+ ),
224
+ ),
225
+ ),
226
+ ),
227
+ );
228
+
229
+ const COMMENTARY_SYSTEM_PROMPT = trim`
230
+ You are a professional chess commentator providing live commentary for a chess match.
231
+
232
+ # Style
233
+ - Write in an engaging, enthusiastic style as if commentating for a live audience
234
+ - Be concise but informative (2-4 sentences)
235
+ - Explain the strategic implications of the move
236
+ - Note any tactical elements (captures, threats, checks)
237
+ - Comment on the position and what it means for the game
238
+
239
+ # Format
240
+ - Write in plain text (no markdown formatting in the commentary itself)
241
+ - Be natural and conversational
242
+ - Use chess terminology appropriately but keep it accessible
243
+
244
+ # Special Situations
245
+ - If it's checkmate, express excitement about the conclusion
246
+ - If it's check, note the pressure on the king
247
+ - If a piece is captured, mention the material exchange
248
+ - Comment on the development of pieces and control of key squares when relevant
249
+ `;
@@ -8,6 +8,8 @@ import { Expando, S, create, defineFunction } from 'dxos:functions';
8
8
  import { randText } from 'https://esm.sh/@ngneat/falso@7.1.1?bundle=false';
9
9
 
10
10
  export default defineFunction({
11
+ key: 'org.dxos.script.data-generator',
12
+ name: 'Data Generator',
11
13
  inputSchema: S.Struct({
12
14
  documentAmount: S.optional(S.Number),
13
15
  textSize: S.optional(S.Number),
@@ -21,7 +23,7 @@ export default defineFunction({
21
23
  data: { documentAmount = 1, textSize = 10, mutationAmount = 0, waitAfterCreation = 10_000 },
22
24
  context: { space },
23
25
  }: any) => {
24
- await space.db.graph.schemaRegistry.addSchema([Expando]);
26
+ await space.db.graph.schemaRegistry.register([Expando]);
25
27
  const result: Record<string, any> = {};
26
28
  const objects: Expando[] = [];
27
29
 
@@ -13,7 +13,13 @@ import {
13
13
  // @ts-ignore
14
14
  } from 'https://esm.sh/dfx@0.113.0?deps=effect@3.17.0&bundle=false';
15
15
  // @ts-ignore
16
- import { Config, Effect, Redacted, Ref } from 'https://esm.sh/effect@3.17.0?bundle=false';
16
+ import * as Config from 'https://esm.sh/effect@3.17.0/Config?bundle=false';
17
+ // @ts-ignore
18
+ import * as Effect from 'https://esm.sh/effect@3.17.0/Effect?bundle=false';
19
+ // @ts-ignore
20
+ import * as Redacted from 'https://esm.sh/effect@3.17.0/Redacted?bundle=false';
21
+ // @ts-ignore
22
+ import * as Ref from 'https://esm.sh/effect@3.17.0/Ref?bundle=false';
17
23
 
18
24
  const MessageSchema = S.Struct({
19
25
  id: ObjectId,
@@ -23,7 +29,7 @@ const MessageSchema = S.Struct({
23
29
  content: S.String,
24
30
  }).pipe(
25
31
  EchoObject({
26
- typename: 'example.com/type/Message',
32
+ typename: 'com.example.type.message',
27
33
  version: '0.1.0',
28
34
  }),
29
35
  );
@@ -36,6 +42,8 @@ const generateSnowflake = (unixTimestamp: number): bigint => {
36
42
  };
37
43
 
38
44
  export default defineFunction({
45
+ key: 'org.dxos.script.discord',
46
+ name: 'Discord',
39
47
  inputSchema: S.Struct({
40
48
  // TODO(wittjosiah): Remove. This is used to provide a terminal for a cron trigger.
41
49
  tick: S.optional(S.String),
@@ -52,7 +60,7 @@ export default defineFunction({
52
60
  handler: ({ data: { channelId, queueId, after = DEFAULT_AFTER, pageSize = 5 }, context: { space } }: any) =>
53
61
  Effect.gen(function* () {
54
62
  const { token } = yield* Effect.tryPromise({
55
- try: () => space.db.query(Filter.typename('dxos.org/type/AccessToken', { source: 'discord.com' })).first(),
63
+ try: () => space.db.query(Filter.typename('org.dxos.type.accessToken', { source: 'discord.com' })).first(),
56
64
  catch: (e: any) => e,
57
65
  });
58
66
  const { objects } = yield* Effect.tryPromise({
@@ -2,37 +2,47 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- // @ts-ignore
6
- import { S, defineFunction } from 'dxos:functions';
7
- import {
8
- FetchHttpClient,
9
- HttpClient,
10
- HttpClientRequest,
11
- // @ts-ignore
12
- } from 'https://esm.sh/@effect/platform@0.89.0?deps=effect@3.17.0&bundle=false';
13
- // @ts-ignore
14
- import { Effect, Schedule } from 'https://esm.sh/effect@3.17.0?bundle=false';
5
+ import * as FetchHttpClient from '@effect/platform/FetchHttpClient';
6
+ import * as HttpClient from '@effect/platform/HttpClient';
7
+ import * as HttpClientRequest from '@effect/platform/HttpClientRequest';
8
+ import * as Effect from 'effect/Effect';
9
+ import * as Schedule from 'effect/Schedule';
10
+ import * as Schema from 'effect/Schema';
15
11
 
16
- export default defineFunction({
17
- description: 'Returns the exchange rate between two currencies.',
12
+ import { Operation } from '@dxos/compute';
18
13
 
19
- inputSchema: S.Struct({
20
- from: S.String.annotations({ description: 'The source currency' }),
21
- to: S.String.annotations({ description: 'The target currency' }),
14
+ const ForexEffect = Operation.make({
15
+ meta: {
16
+ key: 'org.dxos.script.forex-effect',
17
+ name: 'Forex Effect',
18
+ description: 'Returns the exchange rate between two currencies.',
19
+ },
20
+ input: Schema.Struct({
21
+ from: Schema.String.annotations({ description: 'The source currency' }),
22
+ to: Schema.String.annotations({ description: 'The target currency' }),
22
23
  }),
24
+ output: Schema.Any,
25
+ });
23
26
 
24
- outputSchema: S.String.annotations({ description: 'The exchange rate between the two currencies' }),
25
-
26
- handler: async ({ data: { from, to } }: any) =>
27
- Effect.gen(function* () {
28
- const res = yield* HttpClientRequest.get(`https://free.ratesdb.com/v1/rates?from=${from}&to=${to}`).pipe(
27
+ export default ForexEffect.pipe(
28
+ Operation.withHandler(
29
+ Effect.fnUntraced(function* ({ from: rawFrom, to: rawTo }) {
30
+ const from = rawFrom.toUpperCase();
31
+ const to = rawTo.toUpperCase();
32
+ const json: any = yield* HttpClientRequest.get(`https://free.ratesdb.com/v1/rates?from=${from}&to=${to}`).pipe(
29
33
  HttpClient.execute,
30
- Effect.flatMap((res: any) => res.json),
31
- Effect.timeout('1 second'),
34
+ Effect.flatMap((response) => response.json),
35
+ Effect.timeout('5 seconds'),
32
36
  Effect.retry(Schedule.exponential(1_000).pipe(Schedule.compose(Schedule.recurs(3)))),
33
37
  Effect.scoped,
34
38
  );
35
39
 
36
- return res.data.rates[to].toString();
37
- }).pipe(Effect.provide(FetchHttpClient.layer)),
38
- });
40
+ const rate = json?.data?.rates?.[to];
41
+ if (rate == null) {
42
+ return yield* Effect.fail(new Error(`No rate found for ${from} -> ${to}`));
43
+ }
44
+
45
+ return rate.toString();
46
+ }, Effect.provide(FetchHttpClient.layer)),
47
+ ),
48
+ );
@@ -2,23 +2,35 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- // @ts-ignore
6
- import { S, defineFunction } from 'dxos:functions';
5
+ import * as Effect from 'effect/Effect';
6
+ import * as Schema from 'effect/Schema';
7
7
 
8
- export default defineFunction({
9
- description: 'Returns the exchange rate between two currencies.',
8
+ import { Operation } from '@dxos/compute';
10
9
 
11
- inputSchema: S.Struct({
12
- from: S.String.annotations({ description: 'The source currency' }),
13
- to: S.String.annotations({ description: 'The target currency' }),
10
+ const Forex = Operation.make({
11
+ meta: {
12
+ key: 'org.dxos.script.forex',
13
+ name: 'Forex',
14
+ description: 'Returns the exchange rate between two currencies.',
15
+ },
16
+ input: Schema.Struct({
17
+ from: Schema.String.annotations({ description: 'The source currency' }),
18
+ to: Schema.String.annotations({ description: 'The target currency' }),
14
19
  }),
20
+ output: Schema.Any,
21
+ });
15
22
 
16
- handler: async ({ data: { from, to } }: any) => {
17
- const res = await fetch(`https://free.ratesdb.com/v1/rates?from=${from}&to=${to}`);
18
- const {
19
- data: { rates },
20
- } = await res.json();
23
+ export default Forex.pipe(
24
+ Operation.withHandler(
25
+ Effect.fn(function* ({ from: rawFrom, to: rawTo }) {
26
+ const from = rawFrom.toUpperCase();
27
+ const to = rawTo.toUpperCase();
28
+ const res = yield* Effect.promise(() => fetch(`https://free.ratesdb.com/v1/rates?from=${from}&to=${to}`));
29
+ const {
30
+ data: { rates },
31
+ } = yield* Effect.promise(() => res.json());
21
32
 
22
- return rates[to].toString();
23
- },
24
- });
33
+ return rates[to].toString();
34
+ }),
35
+ ),
36
+ );
@@ -14,9 +14,21 @@ import {
14
14
  // @ts-ignore
15
15
  import { format, subDays } from 'https://esm.sh/date-fns@3.3.1?bundle=false';
16
16
  // @ts-ignore
17
- import { Chunk, Effect, Ref, Schedule, Stream, pipe } from 'https://esm.sh/effect@3.17.0?bundle=false';
17
+ import * as Chunk from 'https://esm.sh/effect@3.17.0/Chunk?bundle=false';
18
+ // @ts-ignore
19
+ import * as Effect from 'https://esm.sh/effect@3.17.0/Effect?bundle=false';
20
+ // @ts-ignore
21
+ import * as Function from 'https://esm.sh/effect@3.17.0/Function?bundle=false';
22
+ // @ts-ignore
23
+ import * as Ref from 'https://esm.sh/effect@3.17.0/Ref?bundle=false';
24
+ // @ts-ignore
25
+ import * as Schedule from 'https://esm.sh/effect@3.17.0/Schedule?bundle=false';
26
+ // @ts-ignore
27
+ import * as Stream from 'https://esm.sh/effect@3.17.0/Stream?bundle=false';
18
28
 
19
29
  export default defineFunction({
30
+ key: 'org.dxos.script.gmail',
31
+ name: 'Gmail',
20
32
  inputSchema: S.Struct({
21
33
  mailboxId: S.String,
22
34
  userId: S.optional(S.String).pipe(S.withDecodingDefault(() => 'me')),
@@ -35,13 +47,13 @@ export default defineFunction({
35
47
  handler: ({ context: { space }, data: { mailboxId, userId, after, pageSize } }: any) =>
36
48
  Effect.gen(function* () {
37
49
  const { token } = yield* Effect.tryPromise({
38
- try: () => space.db.query(Filter.typename('dxos.org/type/AccessToken', { source: 'gmail.com' })).first(),
50
+ try: () => space.db.query(Filter.typename('org.dxos.type.accessToken', { source: 'gmail.com' })).first(),
39
51
  catch: (e: any) => e,
40
52
  });
41
53
 
42
54
  // NOTE: Google API bundles size is v. large and caused runtime issues.
43
55
  const makeRequest = (url: string) =>
44
- pipe(
56
+ Function.pipe(
45
57
  url,
46
58
  HttpClientRequest.get,
47
59
  HttpClientRequest.setHeaders({ Authorization: `Bearer ${token}`, Accept: 'application/json' }),
@@ -80,7 +92,7 @@ export default defineFunction({
80
92
  const messageDetails = yield* getMessage(userId, message.id);
81
93
  const created = new Date(parseInt(messageDetails.internalDate)).toISOString();
82
94
  const from = messageDetails.payload.headers.find((h: any) => h.name === 'From');
83
- const sender = from && parseEmailString(from.value);
95
+ const sender = from && parseFromHeader(from.value);
84
96
  // TODO(wittjosiah): Improve parsing of email contents.
85
97
  const content =
86
98
  messageDetails.payload.body?.data ??
@@ -114,7 +126,7 @@ export default defineFunction({
114
126
 
115
127
  const queueMessages = yield* Ref.get(newMessages);
116
128
  if (queueMessages.length > 0) {
117
- yield* pipe(
129
+ yield* Function.pipe(
118
130
  queueMessages,
119
131
  Stream.fromIterable,
120
132
  Stream.grouped(10),
@@ -145,17 +157,17 @@ const getUrl = (userId: string, messageId?: string, params?: Record<string, any>
145
157
  /**
146
158
  * Parses an email string in the format "Name <email@example.com>" into separate name and email components.
147
159
  */
148
- const parseEmailString = (emailString: string): { name?: string; email: string } | undefined => {
149
- const match = emailString.match(/^([^<]+?)\s*<([^>]+@[^>]+)>$/);
160
+ const parseFromHeader = (value: string): { name?: string; email: string } | undefined => {
161
+ const EMAIL_REGEX = /^([^<]+?)\s*<([^>]+@[^>]+)>$/;
162
+ const removeOuterQuotes = (str: string) => str.replace(/^['"]|['"]$/g, '');
163
+ const match = value.match(EMAIL_REGEX);
150
164
  if (match) {
151
165
  const [, name, email] = match;
152
166
  return {
153
- name: name.trim(),
167
+ name: removeOuterQuotes(name.trim()),
154
168
  email: email.trim(),
155
169
  };
156
170
  }
157
-
158
- return undefined;
159
171
  };
160
172
 
161
173
  //
@@ -163,8 +175,7 @@ const parseEmailString = (emailString: string): { name?: string; email: string }
163
175
  // TODO(wittjosiah): These schemas should be imported from @dxos/schema.
164
176
  //
165
177
 
166
- const ActorRoles = ['user', 'assistant'] as const;
167
- const ActorRole = S.Literal(...ActorRoles);
178
+ const ActorRole = S.Literal('user', 'assistant');
168
179
  type ActorRole = S.Schema.Type<typeof ActorRole>;
169
180
 
170
181
  const ActorSchema = S.Struct({
@@ -205,8 +216,8 @@ const MessageType = S.Struct({
205
216
  ),
206
217
  }).pipe(
207
218
  EchoObject({
208
- typename: 'dxos.org/type/Message',
209
- version: '0.2.0',
219
+ typename: 'org.dxos.type.message',
220
+ version: '0.1.0',
210
221
  }),
211
222
  );
212
223
  type MessageType = S.Schema.Type<typeof MessageType>;