@dxos/plugin-script 0.11.1 → 0.12.0-next-2800d0376abcc62d5544afdd744b16b2b960434e

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 (365) hide show
  1. package/PLUGIN.mdl +7 -7
  2. package/dist/lib/Notebook.mjs +33 -0
  3. package/dist/lib/Notebook.mjs.map +1 -0
  4. package/dist/lib/ScriptCapabilities.mjs +14 -0
  5. package/dist/lib/ScriptCapabilities.mjs.map +1 -0
  6. package/dist/lib/ScriptEvents.mjs +19 -0
  7. package/dist/lib/ScriptEvents.mjs.map +1 -0
  8. package/dist/lib/ScriptOperation.mjs +32 -0
  9. package/dist/lib/ScriptOperation.mjs.map +1 -0
  10. package/dist/lib/ScriptOperationHandlerSet.mjs +11 -0
  11. package/dist/lib/ScriptOperationHandlerSet.mjs.map +1 -0
  12. package/dist/lib/ScriptPlugin.mjs +13 -22
  13. package/dist/lib/ScriptPlugin.mjs.map +1 -1
  14. package/dist/lib/{chunk-skills.mjs → ScriptSkill.mjs} +11 -8
  15. package/dist/lib/ScriptSkill.mjs.map +1 -0
  16. package/dist/lib/Settings.mjs +14 -0
  17. package/dist/lib/Settings.mjs.map +1 -0
  18. package/dist/lib/capabilities.mjs +37 -9
  19. package/dist/lib/capabilities.mjs.map +1 -1
  20. package/dist/lib/capabilities.node.mjs +27 -0
  21. package/dist/lib/capabilities.node.mjs.map +1 -0
  22. package/dist/lib/capabilities.workerd.mjs +26 -0
  23. package/dist/lib/capabilities.workerd.mjs.map +1 -0
  24. package/dist/lib/chunk-DeploymentDialog.mjs +4 -3
  25. package/dist/lib/chunk-DeploymentDialog.mjs.map +1 -1
  26. package/dist/lib/chunk-NotebookArticle.mjs +29 -28
  27. package/dist/lib/chunk-NotebookArticle.mjs.map +1 -1
  28. package/dist/lib/chunk-ScriptArticle.mjs.map +1 -1
  29. package/dist/lib/chunk-ScriptProperties.mjs +24 -19
  30. package/dist/lib/chunk-ScriptProperties.mjs.map +1 -1
  31. package/dist/lib/chunk-ScriptSettings.mjs +1 -1
  32. package/dist/lib/chunk-ScriptSettings.mjs.map +1 -1
  33. package/dist/lib/chunk-TestContainer.mjs.map +1 -1
  34. package/dist/lib/chunk-app-graph-builder.mjs +8 -7
  35. package/dist/lib/chunk-app-graph-builder.mjs.map +1 -1
  36. package/dist/lib/chunk-compiler.mjs +1 -1
  37. package/dist/lib/chunk-compiler.mjs.map +1 -1
  38. package/dist/lib/chunk-compiler2.mjs +9 -9
  39. package/dist/lib/chunk-compiler2.mjs.map +1 -1
  40. package/dist/lib/chunk-create-object.mjs +13 -13
  41. package/dist/lib/chunk-create-object.mjs.map +1 -1
  42. package/dist/lib/chunk-create-script.mjs +4 -3
  43. package/dist/lib/chunk-create-script.mjs.map +1 -1
  44. package/dist/lib/chunk-create.mjs +3 -2
  45. package/dist/lib/chunk-create.mjs.map +1 -1
  46. package/dist/lib/chunk-delete.mjs +1 -1
  47. package/dist/lib/chunk-delete.mjs.map +1 -1
  48. package/dist/lib/chunk-deploy.mjs +2 -2
  49. package/dist/lib/chunk-deploy.mjs.map +1 -1
  50. package/dist/lib/chunk-functions.mjs +56 -45
  51. package/dist/lib/chunk-functions.mjs.map +1 -1
  52. package/dist/lib/chunk-inspect-invocations.mjs +1 -1
  53. package/dist/lib/chunk-inspect-invocations.mjs.map +1 -1
  54. package/dist/lib/chunk-install-function.mjs +1 -1
  55. package/dist/lib/chunk-install-function.mjs.map +1 -1
  56. package/dist/lib/chunk-invoke.mjs +1 -1
  57. package/dist/lib/chunk-invoke.mjs.map +1 -1
  58. package/dist/lib/chunk-operation-handler.mjs +4 -3
  59. package/dist/lib/chunk-operation-handler.mjs.map +1 -1
  60. package/dist/lib/chunk-query-deployed-functions.mjs +1 -1
  61. package/dist/lib/chunk-query-deployed-functions.mjs.map +1 -1
  62. package/dist/lib/chunk-react-surface.mjs +21 -16
  63. package/dist/lib/chunk-react-surface.mjs.map +1 -1
  64. package/dist/lib/chunk-read.mjs +1 -1
  65. package/dist/lib/chunk-read.mjs.map +1 -1
  66. package/dist/lib/chunk-rolldown-runtime.mjs +13 -0
  67. package/dist/lib/chunk-schema.mjs +11 -0
  68. package/dist/lib/chunk-schema.mjs.map +1 -0
  69. package/dist/lib/chunk-settings.mjs +4 -4
  70. package/dist/lib/chunk-settings.mjs.map +1 -1
  71. package/dist/lib/chunk-skill-definition.mjs +3 -3
  72. package/dist/lib/chunk-skill-definition.mjs.map +1 -1
  73. package/dist/lib/chunk-templates.mjs +12 -12
  74. package/dist/lib/chunk-templates.mjs.map +1 -1
  75. package/dist/lib/chunk-update.mjs +3 -2
  76. package/dist/lib/chunk-update.mjs.map +1 -1
  77. package/dist/lib/chunk-util.mjs +12 -12
  78. package/dist/lib/chunk-util.mjs.map +1 -1
  79. package/dist/lib/components.mjs +8 -6
  80. package/dist/lib/components.mjs.map +1 -1
  81. package/dist/lib/hooks.mjs +27 -30
  82. package/dist/lib/hooks.mjs.map +1 -1
  83. package/dist/lib/index.mjs +4 -4
  84. package/dist/lib/meta.mjs +32 -1
  85. package/dist/lib/meta.mjs.map +1 -0
  86. package/dist/lib/operations.mjs +2 -7
  87. package/dist/lib/plugin.mjs +6 -6
  88. package/dist/lib/plugin.mjs.map +1 -1
  89. package/dist/lib/skills.mjs +2 -2
  90. package/dist/lib/testing.mjs +6 -4
  91. package/dist/lib/testing.mjs.map +1 -1
  92. package/dist/lib/translations.mjs +3 -3
  93. package/dist/lib/translations.mjs.map +1 -1
  94. package/dist/lib/types.mjs +5 -1
  95. package/dist/types/src/ScriptPlugin.d.ts +36 -3
  96. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  97. package/dist/types/src/capabilities/ScriptSurfaces.d.ts +4 -3
  98. package/dist/types/src/capabilities/ScriptSurfaces.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/app-graph-builder.d.ts +2 -2
  100. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/compiler.d.ts +3 -2
  102. package/dist/types/src/capabilities/compiler.d.ts.map +1 -1
  103. package/dist/types/src/capabilities/create-object.d.ts +2 -2
  104. package/dist/types/src/capabilities/create-object.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/gen/node.d.ts +12 -0
  106. package/dist/types/src/capabilities/gen/node.d.ts.map +1 -0
  107. package/dist/types/src/capabilities/gen/workerd.d.ts +12 -0
  108. package/dist/types/src/capabilities/gen/workerd.d.ts.map +1 -0
  109. package/dist/types/src/capabilities/index.d.ts +11 -9
  110. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/operation-handler.d.ts +2 -3
  112. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -1
  113. package/dist/types/src/capabilities/react-surface.d.ts +2 -2
  114. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  115. package/dist/types/src/capabilities/schema.d.ts +8 -0
  116. package/dist/types/src/capabilities/schema.d.ts.map +1 -0
  117. package/dist/types/src/capabilities/settings.d.ts +2 -2
  118. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  119. package/dist/types/src/capabilities/skill-definition.d.ts +2 -2
  120. package/dist/types/src/capabilities/skill-definition.d.ts.map +1 -1
  121. package/dist/types/src/compiler/compiler.d.ts +1 -1
  122. package/dist/types/src/compiler/compiler.d.ts.map +1 -1
  123. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts +1 -1
  124. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts.map +1 -1
  125. package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts +1 -1
  126. package/dist/types/src/components/NotebookStack/NotebookMenu.d.ts.map +1 -1
  127. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts +1 -1
  128. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts.map +1 -1
  129. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts +2 -1
  130. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts.map +1 -1
  131. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts.map +1 -1
  132. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts +4 -3
  133. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts.map +1 -1
  134. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts +1 -1
  135. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  136. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts +2 -1
  137. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -1
  138. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts +2 -1
  139. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -1
  140. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.d.ts.map +1 -1
  141. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.stories.d.ts +2 -1
  142. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -1
  143. package/dist/types/src/containers/NotebookArticle/NotebookArticle.d.ts +1 -1
  144. package/dist/types/src/containers/NotebookArticle/NotebookArticle.d.ts.map +1 -1
  145. package/dist/types/src/containers/ScriptArticle/ScriptArticle.d.ts +3 -3
  146. package/dist/types/src/containers/ScriptArticle/ScriptArticle.d.ts.map +1 -1
  147. package/dist/types/src/containers/ScriptArticle/ScriptArticle.stories.d.ts +5 -1
  148. package/dist/types/src/containers/ScriptArticle/ScriptArticle.stories.d.ts.map +1 -1
  149. package/dist/types/src/containers/ScriptProperties/FunctionBinding.d.ts +1 -1
  150. package/dist/types/src/containers/ScriptProperties/FunctionBinding.d.ts.map +1 -1
  151. package/dist/types/src/containers/ScriptProperties/FunctionPublishing.d.ts +1 -1
  152. package/dist/types/src/containers/ScriptProperties/FunctionPublishing.d.ts.map +1 -1
  153. package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts +1 -1
  154. package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts.map +1 -1
  155. package/dist/types/src/containers/ScriptProperties/ScriptProperties.stories.d.ts +2 -1
  156. package/dist/types/src/containers/ScriptProperties/ScriptProperties.stories.d.ts.map +1 -1
  157. package/dist/types/src/containers/ScriptProperties/SkillEditor.d.ts +1 -1
  158. package/dist/types/src/containers/ScriptProperties/SkillEditor.d.ts.map +1 -1
  159. package/dist/types/src/containers/ScriptSettings/ScriptSettings.stories.d.ts +2 -4
  160. package/dist/types/src/containers/ScriptSettings/ScriptSettings.stories.d.ts.map +1 -1
  161. package/dist/types/src/containers/TestContainer/TestContainer.d.ts +1 -1
  162. package/dist/types/src/containers/TestContainer/TestContainer.d.ts.map +1 -1
  163. package/dist/types/src/hooks/deploy.d.ts +6 -5
  164. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  165. package/dist/types/src/hooks/format.d.ts +1 -1
  166. package/dist/types/src/hooks/format.d.ts.map +1 -1
  167. package/dist/types/src/hooks/template.d.ts +1 -1
  168. package/dist/types/src/hooks/template.d.ts.map +1 -1
  169. package/dist/types/src/hooks/useCompiler.d.ts.map +1 -1
  170. package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts +4 -4
  171. package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts.map +1 -1
  172. package/dist/types/src/hooks/useToolbarState.d.ts +1 -1
  173. package/dist/types/src/hooks/useToolbarState.d.ts.map +1 -1
  174. package/dist/types/src/index.d.ts +3 -3
  175. package/dist/types/src/index.d.ts.map +1 -1
  176. package/dist/types/src/notebook/compute-graph.d.ts +4 -3
  177. package/dist/types/src/notebook/compute-graph.d.ts.map +1 -1
  178. package/dist/types/src/notebook/vfs-parser.d.ts +1 -1
  179. package/dist/types/src/notebook/vfs-parser.d.ts.map +1 -1
  180. package/dist/types/src/operations/ScriptOperationHandlerSet.d.ts +3 -0
  181. package/dist/types/src/operations/ScriptOperationHandlerSet.d.ts.map +1 -0
  182. package/dist/types/src/operations/create-script.d.ts +2 -2
  183. package/dist/types/src/operations/create-script.d.ts.map +1 -1
  184. package/dist/types/src/operations/index.d.ts +1 -2
  185. package/dist/types/src/operations/index.d.ts.map +1 -1
  186. package/dist/types/src/plugin.d.ts +2 -2
  187. package/dist/types/src/plugin.d.ts.map +1 -1
  188. package/dist/types/src/plugin.test.d.ts +2 -0
  189. package/dist/types/src/plugin.test.d.ts.map +1 -0
  190. package/dist/types/src/skills/ScriptSkill.d.ts +4 -0
  191. package/dist/types/src/skills/ScriptSkill.d.ts.map +1 -0
  192. package/dist/types/src/skills/functions/create.d.ts +1 -1
  193. package/dist/types/src/skills/functions/create.d.ts.map +1 -1
  194. package/dist/types/src/skills/functions/definitions.d.ts +1 -1
  195. package/dist/types/src/skills/functions/definitions.d.ts.map +1 -1
  196. package/dist/types/src/skills/functions/delete.d.ts +1 -1
  197. package/dist/types/src/skills/functions/delete.d.ts.map +1 -1
  198. package/dist/types/src/skills/functions/deploy.d.ts +1 -1
  199. package/dist/types/src/skills/functions/deploy.d.ts.map +1 -1
  200. package/dist/types/src/skills/functions/index.d.ts +1 -1
  201. package/dist/types/src/skills/functions/index.d.ts.map +1 -1
  202. package/dist/types/src/skills/functions/inspect-invocations.d.ts +1 -1
  203. package/dist/types/src/skills/functions/inspect-invocations.d.ts.map +1 -1
  204. package/dist/types/src/skills/functions/install-function.d.ts +1 -1
  205. package/dist/types/src/skills/functions/install-function.d.ts.map +1 -1
  206. package/dist/types/src/skills/functions/invoke.d.ts +1 -1
  207. package/dist/types/src/skills/functions/invoke.d.ts.map +1 -1
  208. package/dist/types/src/skills/functions/query-deployed-functions.d.ts +1 -1
  209. package/dist/types/src/skills/functions/query-deployed-functions.d.ts.map +1 -1
  210. package/dist/types/src/skills/functions/read.d.ts +1 -1
  211. package/dist/types/src/skills/functions/read.d.ts.map +1 -1
  212. package/dist/types/src/skills/functions/update.d.ts +1 -1
  213. package/dist/types/src/skills/functions/update.d.ts.map +1 -1
  214. package/dist/types/src/skills/index.d.ts +1 -1
  215. package/dist/types/src/skills/index.d.ts.map +1 -1
  216. package/dist/types/src/templates/anthropic.d.ts +1 -1
  217. package/dist/types/src/templates/anthropic.d.ts.map +1 -1
  218. package/dist/types/src/templates/chess-bot.d.ts +2 -2
  219. package/dist/types/src/templates/chess-bot.d.ts.map +1 -1
  220. package/dist/types/src/templates/commentary.d.ts +2 -2
  221. package/dist/types/src/templates/commentary.d.ts.map +1 -1
  222. package/dist/types/src/templates/email.d.ts +2 -2
  223. package/dist/types/src/templates/email.d.ts.map +1 -1
  224. package/dist/types/src/templates/forex-effect.d.ts +1 -1
  225. package/dist/types/src/templates/forex-effect.d.ts.map +1 -1
  226. package/dist/types/src/templates/forex.d.ts +1 -1
  227. package/dist/types/src/templates/forex.d.ts.map +1 -1
  228. package/dist/types/src/templates/index.d.ts +5 -5
  229. package/dist/types/src/templates/index.d.ts.map +1 -1
  230. package/dist/types/src/templates/ping.d.ts +1 -1
  231. package/dist/types/src/templates/ping.d.ts.map +1 -1
  232. package/dist/types/src/testing/test-script.d.ts +1 -1
  233. package/dist/types/src/testing/test-script.d.ts.map +1 -1
  234. package/dist/types/src/types/Notebook.d.ts +8 -8
  235. package/dist/types/src/types/Notebook.d.ts.map +1 -1
  236. package/dist/types/src/types/ScriptCapabilities.d.ts +4 -4
  237. package/dist/types/src/types/ScriptCapabilities.d.ts.map +1 -1
  238. package/dist/types/src/types/ScriptEvents.d.ts +7 -1
  239. package/dist/types/src/types/ScriptEvents.d.ts.map +1 -1
  240. package/dist/types/src/types/ScriptOperation.d.ts +7 -7
  241. package/dist/types/src/types/ScriptOperation.d.ts.map +1 -1
  242. package/dist/types/src/types/Settings.d.ts +3 -3
  243. package/dist/types/src/types/Settings.d.ts.map +1 -1
  244. package/dist/types/src/types/index.d.ts +1 -1
  245. package/dist/types/src/types/index.d.ts.map +1 -1
  246. package/dist/types/src/util/deploy.d.ts +5 -4
  247. package/dist/types/src/util/deploy.d.ts.map +1 -1
  248. package/dist/types/src/util/functions.d.ts +2 -1
  249. package/dist/types/src/util/functions.d.ts.map +1 -1
  250. package/dist/types/tsconfig.tsbuildinfo +1 -1
  251. package/dx.config.ts +1 -1
  252. package/package.json +138 -108
  253. package/src/ScriptPlugin.ts +15 -0
  254. package/src/capabilities/ScriptSurfaces.tsx +12 -13
  255. package/src/capabilities/app-graph-builder.ts +8 -7
  256. package/src/capabilities/compiler.ts +8 -8
  257. package/src/capabilities/create-object.ts +40 -32
  258. package/src/capabilities/gen/node.ts +51 -0
  259. package/src/capabilities/gen/workerd.ts +41 -0
  260. package/src/capabilities/index.ts +46 -11
  261. package/src/capabilities/operation-handler.ts +6 -5
  262. package/src/capabilities/react-surface.ts +4 -3
  263. package/src/capabilities/schema.ts +11 -0
  264. package/src/capabilities/settings.ts +4 -4
  265. package/src/capabilities/skill-definition.ts +3 -3
  266. package/src/compiler/compiler.ts +1 -1
  267. package/src/components/NotebookStack/NotebookCell.tsx +1 -1
  268. package/src/components/NotebookStack/NotebookMenu.tsx +1 -1
  269. package/src/components/NotebookStack/NotebookStack.stories.tsx +1 -1
  270. package/src/components/NotebookStack/NotebookStack.tsx +1 -1
  271. package/src/components/QueryEditor/QueryEditor.tsx +1 -1
  272. package/src/components/ScriptToolbar/ScriptToolbar.stories.tsx +4 -3
  273. package/src/components/ScriptToolbar/ScriptToolbar.tsx +5 -3
  274. package/src/containers/DeploymentDialog/DeploymentDialog.stories.tsx +1 -1
  275. package/src/containers/DeploymentDialog/DeploymentDialog.tsx +4 -4
  276. package/src/containers/NotebookArticle/NotebookArticle.stories.tsx +9 -9
  277. package/src/containers/NotebookArticle/NotebookArticle.tsx +6 -5
  278. package/src/containers/ScriptArticle/ScriptArticle.stories.tsx +7 -6
  279. package/src/containers/ScriptArticle/ScriptArticle.tsx +2 -2
  280. package/src/containers/ScriptProperties/FunctionBinding.tsx +5 -5
  281. package/src/containers/ScriptProperties/FunctionPublishing.tsx +16 -14
  282. package/src/containers/ScriptProperties/ScriptProperties.stories.tsx +7 -6
  283. package/src/containers/ScriptProperties/ScriptProperties.tsx +1 -1
  284. package/src/containers/ScriptProperties/SkillEditor.tsx +7 -6
  285. package/src/containers/TestContainer/TestContainer.tsx +1 -1
  286. package/src/e2e/ai.test.ts +1 -1
  287. package/src/e2e/deploy.test.ts +2 -2
  288. package/src/hooks/deploy.ts +12 -12
  289. package/src/hooks/format.ts +1 -1
  290. package/src/hooks/template.ts +1 -1
  291. package/src/hooks/useCompiler.ts +1 -2
  292. package/src/hooks/useCreateAndDeployScriptTemplates.ts +11 -12
  293. package/src/hooks/useToolbarState.ts +2 -2
  294. package/src/index.ts +3 -3
  295. package/src/meta.ts +1 -1
  296. package/src/notebook/compute-graph.test.ts +1 -1
  297. package/src/notebook/compute-graph.ts +4 -3
  298. package/src/notebook/vfs-parser.ts +1 -1
  299. package/src/operations/ScriptOperationHandlerSet.ts +12 -0
  300. package/src/operations/create-script.ts +4 -2
  301. package/src/operations/index.ts +1 -3
  302. package/src/{ScriptPlugin.test.ts → plugin.test.ts} +6 -10
  303. package/src/plugin.tsx +35 -0
  304. package/src/skills/{script-skill.ts → ScriptSkill.ts} +5 -9
  305. package/src/skills/functions/create.ts +3 -2
  306. package/src/skills/functions/definitions.ts +44 -44
  307. package/src/skills/functions/delete.ts +1 -1
  308. package/src/skills/functions/deploy.ts +2 -1
  309. package/src/skills/functions/index.ts +25 -12
  310. package/src/skills/functions/inspect-invocations.ts +1 -1
  311. package/src/skills/functions/install-function.ts +1 -1
  312. package/src/skills/functions/invoke.ts +1 -1
  313. package/src/skills/functions/query-deployed-functions.ts +1 -1
  314. package/src/skills/functions/read.ts +2 -1
  315. package/src/skills/functions/update.ts +2 -1
  316. package/src/skills/index.ts +1 -1
  317. package/src/templates/anthropic.ts +4 -5
  318. package/src/templates/chess-bot.ts +9 -8
  319. package/src/templates/commentary.ts +15 -13
  320. package/src/templates/forex-effect.ts +8 -8
  321. package/src/templates/forex.ts +4 -4
  322. package/src/templates/gmail.ts +25 -15
  323. package/src/templates/index.ts +5 -5
  324. package/src/templates/ping.ts +2 -2
  325. package/src/testing/test-notebook.ts +2 -2
  326. package/src/testing/test-script.ts +2 -1
  327. package/src/translations.ts +1 -1
  328. package/src/types/Notebook.ts +2 -2
  329. package/src/types/ScriptCapabilities.ts +4 -4
  330. package/src/types/ScriptEvents.ts +8 -1
  331. package/src/types/ScriptOperation.ts +13 -12
  332. package/src/types/Settings.ts +6 -7
  333. package/src/types/index.ts +2 -3
  334. package/src/util/deploy.ts +13 -13
  335. package/src/util/functions.ts +2 -1
  336. package/dist/lib/ScriptPlugin.node.mjs +0 -11
  337. package/dist/lib/ScriptPlugin.node.mjs.map +0 -1
  338. package/dist/lib/ScriptPlugin.workerd.mjs +0 -11
  339. package/dist/lib/ScriptPlugin.workerd.mjs.map +0 -1
  340. package/dist/lib/capabilities/node.mjs +0 -11
  341. package/dist/lib/capabilities/node.mjs.map +0 -1
  342. package/dist/lib/chunk-meta.mjs +0 -33
  343. package/dist/lib/chunk-meta.mjs.map +0 -1
  344. package/dist/lib/chunk-skills.mjs.map +0 -1
  345. package/dist/lib/chunk-types.mjs +0 -90
  346. package/dist/lib/chunk-types.mjs.map +0 -1
  347. package/dist/lib/operations.mjs.map +0 -1
  348. package/dist/types/src/ScriptPlugin.node.d.ts +0 -4
  349. package/dist/types/src/ScriptPlugin.node.d.ts.map +0 -1
  350. package/dist/types/src/ScriptPlugin.test.d.ts +0 -2
  351. package/dist/types/src/ScriptPlugin.test.d.ts.map +0 -1
  352. package/dist/types/src/ScriptPlugin.workerd.d.ts +0 -4
  353. package/dist/types/src/ScriptPlugin.workerd.d.ts.map +0 -1
  354. package/dist/types/src/capabilities/node.d.ts +0 -8
  355. package/dist/types/src/capabilities/node.d.ts.map +0 -1
  356. package/dist/types/src/skills/script-skill.d.ts +0 -4
  357. package/dist/types/src/skills/script-skill.d.ts.map +0 -1
  358. package/dist/types/src/types/types.d.ts +0 -2
  359. package/dist/types/src/types/types.d.ts.map +0 -1
  360. package/src/ScriptPlugin.node.ts +0 -21
  361. package/src/ScriptPlugin.tsx +0 -47
  362. package/src/ScriptPlugin.workerd.ts +0 -18
  363. package/src/capabilities/node.ts +0 -15
  364. package/src/plugin.ts +0 -11
  365. package/src/types/types.ts +0 -5
package/PLUGIN.mdl CHANGED
@@ -157,7 +157,7 @@ op create
157
157
  templateId?: string
158
158
  output: { function: string }
159
159
  effects: [echo:write]
160
- note: Operation key `org.dxos.function.script.create`.
160
+ note: Operation key `org.dxos.operation.script.create`.
161
161
  ```
162
162
 
163
163
  ```mdl
@@ -167,7 +167,7 @@ op read
167
167
  function: Ref<Script>
168
168
  output: { name?: string, source: string, description?: string }
169
169
  effects: [echo:read]
170
- note: Operation key `org.dxos.function.script.read`.
170
+ note: Operation key `org.dxos.operation.script.read`.
171
171
  ```
172
172
 
173
173
  ```mdl
@@ -182,7 +182,7 @@ op update
182
182
  edits?: { oldString: string, newString: string, replaceAll?: boolean }[]
183
183
  output: { function: string }
184
184
  effects: [echo:read, echo:write]
185
- note: Operation key `org.dxos.function.script.update`.
185
+ note: Operation key `org.dxos.operation.script.update`.
186
186
  ```
187
187
 
188
188
  ```mdl
@@ -192,7 +192,7 @@ op delete
192
192
  function: Ref<Script>
193
193
  output: void
194
194
  effects: [echo:read, echo:write]
195
- note: Operation key `org.dxos.function.script.delete`.
195
+ note: Operation key `org.dxos.operation.script.delete`.
196
196
  ```
197
197
 
198
198
  ```mdl
@@ -208,7 +208,7 @@ op deploy
208
208
  errors:
209
209
  CompileError: TypeScript source fails to compile
210
210
  DeploymentFailed: EDGE runtime rejected the deployment
211
- note: Operation key `org.dxos.function.script.deploy`.
211
+ note: Operation key `org.dxos.operation.script.deploy`.
212
212
  ```
213
213
 
214
214
  ```mdl
@@ -222,7 +222,7 @@ op invoke
222
222
  errors:
223
223
  NotDeployed: function has not been deployed
224
224
  InvocationError: function threw at runtime
225
- note: Operation key `org.dxos.function.script.invoke`.
225
+ note: Operation key `org.dxos.operation.script.invoke`.
226
226
  ```
227
227
 
228
228
  ```mdl
@@ -258,7 +258,7 @@ op installFunction
258
258
  key: string
259
259
  output: { function: string, name: string, version: string }
260
260
  effects: [echo:write, http]
261
- note: Operation key `org.dxos.function.script.install`.
261
+ note: Operation key `org.dxos.operation.script.install`.
262
262
  ```
263
263
 
264
264
  UI-facing operation (creates Script via the navtree / "create object" flow).
@@ -0,0 +1,33 @@
1
+ import { t as __exportAll } from "./chunk-rolldown-runtime.mjs";
2
+ import * as Schema from "effect/Schema";
3
+ import { Annotation, DXN, Obj, Ref, Type } from "@dxos/echo";
4
+ import * as Instructions from "@dxos/compute/Instructions";
5
+ import { Text } from "@dxos/schema";
6
+ import { FormInputAnnotation, LabelAnnotation } from "@dxos/echo/Annotation";
7
+ import * as Graph from "@dxos/plugin-explorer/Graph";
8
+ //#region src/types/Notebook.ts
9
+ var Notebook_exports = /* @__PURE__ */ __exportAll({
10
+ Cell: () => Cell,
11
+ Notebook: () => Notebook,
12
+ make: () => make
13
+ });
14
+ var Cell = Schema.Struct({
15
+ id: Schema.String,
16
+ type: Schema.String,
17
+ name: Schema.optional(Schema.String),
18
+ source: Schema.optional(Ref.Ref(Text.Text)),
19
+ prompt: Schema.optional(Ref.Ref(Instructions.Instructions)),
20
+ graph: Schema.optional(Ref.Ref(Graph.Graph))
21
+ });
22
+ var Notebook = class extends Type.makeObject(DXN.make("org.dxos.type.notebook", "0.1.0"))(Schema.Struct({
23
+ name: Schema.String.pipe(Schema.optional),
24
+ cells: Cell.pipe(Schema.Array, FormInputAnnotation.set(false))
25
+ }).pipe(LabelAnnotation.set(["name"]), Annotation.IconAnnotation.set({
26
+ icon: "ph--notebook--regular",
27
+ hue: "sky"
28
+ }))) {};
29
+ var make = (props = { cells: [] }) => Obj.make(Notebook, props);
30
+ //#endregion
31
+ export { Cell, Notebook, make, Notebook_exports as t };
32
+
33
+ //# sourceMappingURL=Notebook.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Notebook.mjs","names":[],"sources":["../../src/types/Notebook.ts"],"sourcesContent":["//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport * as Instructions from '@dxos/compute/Instructions';\nimport { Annotation, DXN, Obj, Ref, Type } from '@dxos/echo';\nimport { FormInputAnnotation } from '@dxos/echo/Annotation';\nimport { LabelAnnotation } from '@dxos/echo/Annotation';\nimport * as Graph from '@dxos/plugin-explorer/Graph';\nimport { Text } from '@dxos/schema';\n\nexport type CellType = 'markdown' | 'script' | 'query' | 'prompt' | 'view';\n\nexport const Cell = Schema.Struct({\n id: Schema.String,\n type: Schema.String,\n name: Schema.optional(Schema.String),\n // TODO(burdon): Union type.\n source: Schema.optional(Ref.Ref(Text.Text)),\n prompt: Schema.optional(Ref.Ref(Instructions.Instructions)),\n graph: Schema.optional(Ref.Ref(Graph.Graph)),\n});\n\nexport type Cell = Schema.Schema.Type<typeof Cell>;\n\nexport class Notebook extends Type.makeObject<Notebook>(DXN.make('org.dxos.type.notebook', '0.1.0'))(\n Schema.Struct({\n name: Schema.String.pipe(Schema.optional),\n cells: Cell.pipe(Schema.Array, FormInputAnnotation.set(false)),\n }).pipe(LabelAnnotation.set(['name']), Annotation.IconAnnotation.set({ icon: 'ph--notebook--regular', hue: 'sky' })),\n) {}\n\nexport const make = (props: Obj.MakeProps<typeof Notebook> = { cells: [] }): Notebook => Obj.make(Notebook, props);\n"],"mappings":";;;;;;;;;;;;;AAeA,IAAa,OAAO,OAAO,OAAO;CAChC,IAAI,OAAO;CACX,MAAM,OAAO;CACb,MAAM,OAAO,SAAS,OAAO,MAAM;CAEnC,QAAQ,OAAO,SAAS,IAAI,IAAI,KAAK,IAAI,CAAC;CAC1C,QAAQ,OAAO,SAAS,IAAI,IAAI,aAAa,YAAY,CAAC;CAC1D,OAAO,OAAO,SAAS,IAAI,IAAI,MAAM,KAAK,CAAC;AAC7C,CAAC;AAID,IAAa,WAAb,cAA8B,KAAK,WAAqB,IAAI,KAAK,0BAA0B,OAAO,CAAC,CAAC,CAClG,OAAO,OAAO;CACZ,MAAM,OAAO,OAAO,KAAK,OAAO,QAAQ;CACxC,OAAO,KAAK,KAAK,OAAO,OAAO,oBAAoB,IAAI,KAAK,CAAC;AAC/D,CAAC,CAAC,CAAC,KAAK,gBAAgB,IAAI,CAAC,MAAM,CAAC,GAAG,WAAW,eAAe,IAAI;CAAE,MAAM;CAAyB,KAAK;AAAM,CAAC,CAAC,CACrH,CAAC,CAAC,CAAC;AAEH,IAAa,QAAQ,QAAwC,EAAE,OAAO,CAAC,EAAE,MAAgB,IAAI,KAAK,UAAU,KAAK"}
@@ -0,0 +1,14 @@
1
+ import { t as __exportAll } from "./chunk-rolldown-runtime.mjs";
2
+ import * as Capability from "@dxos/app-framework/Capability";
3
+ import { meta } from "#meta";
4
+ //#region src/types/ScriptCapabilities.ts
5
+ var ScriptCapabilities_exports = /* @__PURE__ */ __exportAll({
6
+ Compiler: () => Compiler,
7
+ Settings: () => Settings
8
+ });
9
+ var Settings = Capability.makeSingleton()(`${meta.profile.key}.capability.settings`);
10
+ var Compiler = Capability.makeSingleton()(`${meta.profile.key}.capability.compiler`);
11
+ //#endregion
12
+ export { Compiler, Settings, ScriptCapabilities_exports as t };
13
+
14
+ //# sourceMappingURL=ScriptCapabilities.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScriptCapabilities.mjs","names":[],"sources":["../../src/types/ScriptCapabilities.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport type * as Atom from 'effect/unstable/reactivity/Atom';\n\nimport * as Capability from '@dxos/app-framework/Capability';\n\nimport { meta } from '#meta';\n\nimport { type Compiler as CompilerType } from '../compiler';\n\n// Inline import to avoid `Settings` namespace alias colliding with the\n// `Settings` capability export below.\nexport const Settings = Capability.makeSingleton<Atom.Writable<import('./Settings').Settings>>()(\n `${meta.profile.key}.capability.settings`,\n);\nexport const Compiler = Capability.makeSingleton<CompilerType>()(`${meta.profile.key}.capability.compiler`);\n"],"mappings":";;;;;;;;AAgBA,IAAa,WAAW,WAAW,cAA4D,CAAC,CAC9F,GAAG,KAAK,QAAQ,IAAI,qBACtB;AACA,IAAa,WAAW,WAAW,cAA4B,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,qBAAqB"}
@@ -0,0 +1,19 @@
1
+ import { t as __exportAll } from "./chunk-rolldown-runtime.mjs";
2
+ import { meta } from "#meta";
3
+ import * as ActivationEvent from "@dxos/app-framework/ActivationEvent";
4
+ //#region src/types/ScriptEvents.ts
5
+ var ScriptEvents_exports = /* @__PURE__ */ __exportAll({
6
+ SetupCompiler: () => SetupCompiler,
7
+ Start: () => Start
8
+ });
9
+ var SetupCompiler = ActivationEvent.make(`${meta.profile.key}.event.setupCompiler`);
10
+ /**
11
+ * The feature's start event: the plugin's start-gated modules (and cross-plugin
12
+ * contributions consumed by this feature) activate here. Fired on demand and by the
13
+ * host's idle trickle.
14
+ */
15
+ var Start = ActivationEvent.pluginStart(meta.profile.key);
16
+ //#endregion
17
+ export { SetupCompiler, Start, ScriptEvents_exports as t };
18
+
19
+ //# sourceMappingURL=ScriptEvents.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScriptEvents.mjs","names":[],"sources":["../../src/types/ScriptEvents.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as ActivationEvent from '@dxos/app-framework/ActivationEvent';\n\nimport { meta } from '#meta';\n\nexport const SetupCompiler = ActivationEvent.make(`${meta.profile.key}.event.setupCompiler`);\n\n/**\n * The feature's start event: the plugin's start-gated modules (and cross-plugin\n * contributions consumed by this feature) activate here. Fired on demand and by the\n * host's idle trickle.\n */\nexport const Start = ActivationEvent.pluginStart(meta.profile.key);\n"],"mappings":";;;;;;;;AAUA,IAAa,gBAAgB,gBAAgB,KAAK,GAAG,KAAK,QAAQ,IAAI,qBAAqB;;;;;;AAO3F,IAAa,QAAQ,gBAAgB,YAAY,KAAK,QAAQ,GAAG"}
@@ -0,0 +1,32 @@
1
+ import { t as __exportAll } from "./chunk-rolldown-runtime.mjs";
2
+ import { t as templates } from "./chunk-templates.mjs";
3
+ import * as Operation from "@dxos/compute/Operation";
4
+ import * as Schema from "effect/Schema";
5
+ import { DXN, Database, Type } from "@dxos/echo";
6
+ import * as Script from "@dxos/compute/Script";
7
+ import * as Struct from "effect/Struct";
8
+ //#region src/types/ScriptOperation.ts
9
+ var ScriptOperation_exports = /* @__PURE__ */ __exportAll({
10
+ CreateScript: () => CreateScript,
11
+ NotebookProps: () => NotebookProps,
12
+ ScriptProps: () => ScriptProps
13
+ });
14
+ var ScriptProps = Schema.Struct({
15
+ name: Schema.optional(Schema.String),
16
+ gistUrl: Schema.optional(Schema.String.annotate({ title: "Import from Gist (url)" })),
17
+ initialTemplateId: Schema.Literals(templates.map(({ id }) => id)).pipe(Schema.annotate({ title: "Template" }), Schema.optional)
18
+ });
19
+ var NotebookProps = Schema.Struct({ name: Schema.optional(Schema.String) });
20
+ var CreateScript = Operation.make({
21
+ meta: {
22
+ key: DXN.make("org.dxos.operation.script.create"),
23
+ name: "Create Script",
24
+ icon: "ph--code--regular"
25
+ },
26
+ input: ScriptProps.mapFields(Struct.assign({ db: Database.Database })),
27
+ output: Schema.Struct({ object: Type.getSchema(Script.Script) })
28
+ });
29
+ //#endregion
30
+ export { CreateScript, NotebookProps, ScriptProps, ScriptOperation_exports as t };
31
+
32
+ //# sourceMappingURL=ScriptOperation.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScriptOperation.mjs","names":[],"sources":["../../src/types/ScriptOperation.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\nimport * as Struct from 'effect/Struct';\n\nimport * as Operation from '@dxos/compute/Operation';\nimport * as Script from '@dxos/compute/Script';\nimport { Database, DXN, Type } from '@dxos/echo';\n\nimport { templates } from '../templates';\n\nexport const ScriptProps = Schema.Struct({\n name: Schema.optional(Schema.String),\n gistUrl: Schema.optional(Schema.String.annotate({ title: 'Import from Gist (url)' })),\n initialTemplateId: Schema.Literals(templates.map(({ id }) => id)).pipe(\n Schema.annotate({ title: 'Template' }),\n Schema.optional,\n ),\n});\n\nexport const NotebookProps = Schema.Struct({\n name: Schema.optional(Schema.String),\n});\n\nexport const CreateScript = Operation.make({\n meta: {\n key: DXN.make('org.dxos.operation.script.create'),\n name: 'Create Script',\n icon: 'ph--code--regular',\n },\n input: ScriptProps.mapFields(\n Struct.assign({\n db: Database.Database,\n }),\n ),\n output: Schema.Struct({\n object: Type.getSchema(Script.Script),\n }),\n});\n"],"mappings":";;;;;;;;;;;;;AAeA,IAAa,cAAc,OAAO,OAAO;CACvC,MAAM,OAAO,SAAS,OAAO,MAAM;CACnC,SAAS,OAAO,SAAS,OAAO,OAAO,SAAS,EAAE,OAAO,yBAAyB,CAAC,CAAC;CACpF,mBAAmB,OAAO,SAAS,UAAU,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,KAChE,OAAO,SAAS,EAAE,OAAO,WAAW,CAAC,GACrC,OAAO,QACT;AACF,CAAC;AAED,IAAa,gBAAgB,OAAO,OAAO,EACzC,MAAM,OAAO,SAAS,OAAO,MAAM,EACrC,CAAC;AAED,IAAa,eAAe,UAAU,KAAK;CACzC,MAAM;EACJ,KAAK,IAAI,KAAK,kCAAkC;EAChD,MAAM;EACN,MAAM;CACR;CACA,OAAO,YAAY,UACjB,OAAO,OAAO,EACZ,IAAI,SAAS,SACf,CAAC,CACH;CACA,QAAQ,OAAO,OAAO,EACpB,QAAQ,KAAK,UAAU,OAAO,MAAM,EACtC,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { t as __exportAll } from "./chunk-rolldown-runtime.mjs";
2
+ import { ScriptOperation } from "#types";
3
+ import * as Operation from "@dxos/compute/Operation";
4
+ import * as OperationHandlerSet from "@dxos/compute/OperationHandlerSet";
5
+ //#region src/operations/ScriptOperationHandlerSet.ts
6
+ var ScriptOperationHandlerSet_exports = /* @__PURE__ */ __exportAll({ handlers: () => handlers });
7
+ var handlers = OperationHandlerSet.lazy([ScriptOperation.CreateScript.pipe(Operation.lazyHandler(() => import("./chunk-create-script.mjs")))]);
8
+ //#endregion
9
+ export { handlers, ScriptOperationHandlerSet_exports as t };
10
+
11
+ //# sourceMappingURL=ScriptOperationHandlerSet.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScriptOperationHandlerSet.mjs","names":[],"sources":["../../src/operations/ScriptOperationHandlerSet.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Operation from '@dxos/compute/Operation';\nimport * as OperationHandlerSet from '@dxos/compute/OperationHandlerSet';\n\nimport { ScriptOperation } from '#types';\n\nexport const handlers = OperationHandlerSet.lazy([\n ScriptOperation.CreateScript.pipe(Operation.lazyHandler(() => import('./create-script'))),\n]);\n"],"mappings":";;;;;;AASA,IAAa,WAAW,oBAAoB,KAAK,CAC/C,gBAAgB,aAAa,KAAK,UAAU,kBAAkB,OAAO,4BAAkB,CAAC,CAC1F,CAAC"}
@@ -1,25 +1,16 @@
1
- import { Script } from "@dxos/compute";
2
- import { Plugin } from "@dxos/app-framework";
3
- import { meta } from "#meta";
4
- import { AppActivationEvents, AppPlugin } from "@dxos/app-toolkit";
5
- import { AppGraphBuilder, Compiler, CreateObject, OperationHandler, ReactSurface, ScriptSettings, SkillDefinition } from "#capabilities";
6
- import { translations } from "#translations";
7
- import { ScriptEvents } from "#types";
1
+ import { t as __exportAll } from "./chunk-rolldown-runtime.mjs";
2
+ import { meta as meta$1 } from "#meta";
3
+ import * as Plugin from "@dxos/app-framework/Plugin";
4
+ //#region src/ScriptPlugin.ts
5
+ var ScriptPlugin_exports = /* @__PURE__ */ __exportAll({
6
+ make: () => make,
7
+ meta: () => meta
8
+ });
9
+ /** Plugin metadata, available without loading the plugin body. */
10
+ var meta = meta$1;
11
+ /** Constructs the plugin; the body loads on first enable. */
12
+ var make = Plugin.lazy(meta, () => import("#plugin"));
8
13
  //#endregion
9
- //#region src/ScriptPlugin.tsx
10
- var ScriptPlugin = Plugin.define(meta).pipe(AppPlugin.addAppGraphModule({ activate: AppGraphBuilder }), AppPlugin.addSkillDefinitionModule({ activate: SkillDefinition }), AppPlugin.addCreateObjectModule({ activate: CreateObject }), AppPlugin.addOperationHandlerModule({ activate: OperationHandler }), AppPlugin.addSchemaModule({ schema: [Script.Script] }), AppPlugin.addSurfaceModule({ activate: ReactSurface }), AppPlugin.addTranslationsModule({ translations }), Plugin.addModule({
11
- activatesOn: AppActivationEvents.SetupSettings,
12
- activate: ScriptSettings
13
- }), Plugin.addModule({
14
- activatesOn: ScriptEvents.SetupCompiler,
15
- activate: Compiler
16
- }), AppPlugin.addPluginAssetModule({ asset: {
17
- pluginId: meta.profile.key,
18
- path: "PLUGIN.mdl",
19
- content: "---\nid: org.dxos.plugin.script\nname: ScriptPlugin\nversion: 0.1.0\n---\n\nA scripting plugin for `DXOS` Composer that lets users write, deploy, and run custom TypeScript functions as\nECHO objects inside their spaces.\nScripts execute on the Cloudflare Workers-based EDGE runtime and can call DXOS SDK packages, Effect-TS,\nand a curated set of third-party libraries.\nAn AI assistant skill wires CRUD, deploy, invoke, and inspection operations as tools so an agent can\nscaffold, iterate, and test scripts entirely within a chat session.\n\n## Extensions\n\nThe following extension dialects are used in this document.\nEach extension is defined in the Appendix or resolved via its URI.\n\n| Term | URI |\n|-------------|--------------------------------|\n| `type` | `org.dxos.mdl.type@1.0` |\n| `feat` | `org.dxos.mdl.feat@1.0` |\n| `test` | `org.dxos.mdl.test@1.0` |\n| `component` | `org.dxos.mdl.component@1.0` |\n| `op` | `org.dxos.mdl.op@1.0` |\n\n## Types\n\n```mdl\ntype Script\n desc: |\n Root ECHO object (typename from @dxos/compute Script.Script).\n Represents a single deployable TypeScript function.\n fields:\n name?: string\n source: string # TypeScript source, must follow Operation pattern\n description?: string\n```\n\n```mdl\ntype Notebook\n desc: |\n Root ECHO object for a multi-cell notebook view.\n Each cell is a Script; the Notebook provides a sequential execution surface.\n fields:\n name?: string\n```\n\n```mdl\ntype Settings\n desc: Plugin-scoped settings atom. Persisted across sessions.\n fields:\n editorInputMode?: EditorInputMode # default, vim, or emacs keybindings\n```\n\n```mdl\ntype InvocationSpan\n desc: A single function invocation record from the EDGE trace feed.\n fields:\n id: string\n timestamp: number # epoch ms\n duration: number # ms\n outcome: success | failure | pending\n input: object\n error?: object\n```\n\n```mdl\ntype DeployedFunction\n desc: Metadata about a function already deployed to the EDGE runtime.\n fields:\n key?: string # unique key; pass to InstallFunction\n name: string\n version: string\n description?: string\n updated?: string # ISO timestamp\n```\n\n## Components\n\n```mdl\ncomponent ScriptArticle\n desc: |\n Primary editor surface for a Script object. Rendered for the Article and\n Section roles. Shows a TypeScript CodeMirror editor with syntax highlight,\n lint, and completion. Companion panels (Execute and Logs) are available\n via the app graph for running and inspecting the script.\n props:\n role: string\n subject: Script\n attendableId?: string\n settings?: Settings\n env?: CompilerEnvironment\n layout: |\n ┌──────────────────────────────────────┐\n │ ScriptToolbar (run, deploy, …) │\n ├──────────────────────────────────────┤\n │ TypescriptEditor (CodeMirror) │\n │ │\n │ // script source │\n └──────────────────────────────────────┘\n```\n\n```mdl\ncomponent NotebookArticle\n desc: |\n Multi-cell notebook surface for a Notebook object. Each cell renders a\n ScriptArticle in Section role. Cells can be added, removed, and reordered.\n props:\n role: string\n subject: Notebook\n attendableId?: string\n env?: CompilerEnvironment\n```\n\n```mdl\ncomponent TestContainer\n desc: |\n Execute companion panel. Renders a form driven by the script's Operation\n input schema; submits the form to invoke the script and shows the response.\n props:\n script: Script\n role: string\n```\n\n```mdl\ncomponent DeploymentDialog\n desc: |\n Dialog for deploying or redeploying a Script to the EDGE runtime.\n Shows current deployment status and lets the user trigger a new deployment.\n props:\n script: Script\n```\n\n```mdl\ncomponent ScriptPluginSettings\n desc: Plugin settings panel; exposes editor keybinding mode selector.\n props:\n settings: Settings\n onSettingsChange: (settings: Settings) → void\n onAuthenticate: () → Promise<void>\n```\n\n## Operations\n\nSkill operations (called by the Script assistant via its tool set).\n\n```mdl\nop create\n desc: |\n Creates a new Script ECHO object with the given name and TypeScript source,\n and adds it to the space. Optionally seeds from a built-in template or a\n GitHub Gist URL. Returns a function reference ID.\n input:\n name: string\n source?: string\n templateId?: string\n output: { function: string }\n effects: [echo:write]\n note: Operation key `org.dxos.function.script.create`.\n```\n\n```mdl\nop read\n desc: Reads the name, source code, and description of an existing Script.\n input:\n function: Ref<Script>\n output: { name?: string, source: string, description?: string }\n effects: [echo:read]\n note: Operation key `org.dxos.function.script.read`.\n```\n\n```mdl\nop update\n desc: |\n Applies one or more string edits (find/replace pairs) to a Script's source\n and optionally updates its name and description.\n input:\n function: Ref<Script>\n name?: string\n description?: string\n edits?: { oldString: string, newString: string, replaceAll?: boolean }[]\n output: { function: string }\n effects: [echo:read, echo:write]\n note: Operation key `org.dxos.function.script.update`.\n```\n\n```mdl\nop delete\n desc: Permanently removes a Script and its source from the space.\n input:\n function: Ref<Script>\n output: void\n effects: [echo:read, echo:write]\n note: Operation key `org.dxos.function.script.delete`.\n```\n\n```mdl\nop deploy\n desc: |\n Compiles and deploys a Script to the EDGE (Cloudflare Workers) runtime.\n The source must export a single Operation handler as default.\n Returns the deployed function ID and optional public URL.\n input:\n function: Ref<Script>\n output: { function: string, functionUrl?: string }\n effects: [echo:read, http]\n errors:\n CompileError: TypeScript source fails to compile\n DeploymentFailed: EDGE runtime rejected the deployment\n note: Operation key `org.dxos.function.script.deploy`.\n```\n\n```mdl\nop invoke\n desc: Calls a deployed EDGE function with an optional JSON payload.\n input:\n function: Ref<Script>\n payload?: unknown\n output: { response: unknown }\n effects: [http]\n errors:\n NotDeployed: function has not been deployed\n InvocationError: function threw at runtime\n note: Operation key `org.dxos.function.script.invoke`.\n```\n\n```mdl\nop inspectInvocations\n desc: |\n Queries the EDGE invocation trace feed for a function and returns\n recent invocation spans (id, timestamp, duration, outcome, input, error).\n input:\n function: Ref<Script>\n limit?: number # default 20\n output: { invocations: InvocationSpan[], total: number }\n effects: [echo:read]\n note: Operation key `org.dxos.function.script.inspect-invocations`.\n```\n\n```mdl\nop queryDeployedFunctions\n desc: Lists all functions currently deployed to the EDGE runtime.\n input:\n (none)\n output: { functions: DeployedFunction[] }\n effects: [http]\n note: Operation key `org.dxos.function.script.query-deployed`.\n```\n\n```mdl\nop installFunction\n desc: |\n Installs a globally-deployed EDGE function into the current space by key.\n Creates a Script ECHO object backed by the remote function.\n The returned function ID can be passed directly to op:invoke.\n input:\n key: string\n output: { function: string, name: string, version: string }\n effects: [echo:write, http]\n note: Operation key `org.dxos.function.script.install`.\n```\n\nUI-facing operation (creates Script via the navtree / \"create object\" flow).\n\n```mdl\nop createScript\n desc: Creates a new Script ECHO object via the Composer create-object flow.\n input:\n name?: string\n gistUrl?: string\n initialTemplateId?: string\n db: Database\n output: { object: Script }\n effects: [echo:write]\n note: Operation key `org.dxos.plugin.script.operation.create-script`.\n```\n\n## Features\n\n```mdl\nfeat F-1: Script ECHO Object\n\n req F-1.1: Script objects are registered via `addSchemaModule` and visible in space object lists.\n req F-1.2: Script objects can be created from the navtree \"+\" menu.\n req F-1.3:\n when: user creates a Script without a template\n then: source is seeded from the default template\n req F-1.4:\n when: user provides a GitHub Gist URL\n then: gist content is fetched and used as initial source\n```\n\n```mdl\nfeat F-2: Script Editor\n\n req F-2.1: ScriptArticle renders a TypeScript-aware CodeMirror editor for the Article role.\n req F-2.2: Editor keybinding mode (default/vim/emacs) is configurable via plugin settings.\n req F-2.3: Changes to source are persisted to the Script ECHO object reactively.\n req F-2.4:\n when: script object changes externally (peer edit)\n then: editor content updates without losing cursor position if possible\n```\n\n```mdl\nfeat F-3: Deploy to EDGE\n\n req F-3.1: A Deploy button in the ScriptToolbar opens the DeploymentDialog.\n req F-3.2:\n when: user confirms deployment\n then: op:deploy is called; script compiled and sent to EDGE runtime\n req F-3.3:\n when: compilation fails\n then: error messages are surfaced to the user; no deployment occurs\n req F-3.4:\n when: deployment succeeds\n then: dialog shows the function URL (if available)\n```\n\n```mdl\nfeat F-4: Execute Companion\n\n req F-4.1: An \"Execute\" companion node is added to every Script in the app graph.\n req F-4.2: TestContainer renders a form derived from the script's Operation input schema.\n req F-4.3:\n when: user submits the form\n then: op:invoke is called with the form payload; response displayed\n req F-4.4: A \"Logs\" companion node shows the invocation trace via InvocationTraceContainer.\n```\n\n```mdl\nfeat F-5: Script Skill\n\n req F-5.1: A skill with key `org.dxos.skill.script` is contributed via `addSkillDefinitionModule`.\n req F-5.2: Skill tool set includes: create, read, update, delete, deploy, invoke,\n inspectInvocations, queryDeployedFunctions, installFunction.\n req F-5.3: System instructions describe the EDGE Operation pattern, required export format,\n and available packages.\n req F-5.4: Skill is agent-enabled; the assistant can activate it autonomously.\n```\n\n```mdl\nfeat F-6: Notebook\n\n req F-6.1: Notebook objects are registered and can be created from the navtree.\n req F-6.2: NotebookArticle renders each linked Script as a sequential cell.\n req F-6.3: Cells can be added and removed independently.\n```\n\n```mdl\nfeat F-7: Plugin Settings\n\n req F-7.1: ScriptPluginSettings is rendered via the app settings surface.\n req F-7.2: Editor input mode is persisted in the Settings atom.\n req F-7.3: An Authenticate button lets the user write an access credential to HALO.\n```\n\n## Acceptance\n\n```mdl\ntest T-1: Create script from default template\n given: a space is open and plugin-script is loaded\n when: user creates a new Script without template selection\n then:\n - a Script object appears in the space\n - its source contains the default template code\n - ScriptArticle renders the source in the editor\n```\n\n```mdl\ntest T-2: Create script from Gist\n given: a public GitHub Gist URL is known\n when: user creates a Script with the Gist URL\n then:\n - gist content is fetched and stored as the script source\n - editor shows the fetched content\n```\n\n```mdl\ntest T-3: Edit and persist source\n given: a Script is open in ScriptArticle\n when: user edits the source\n then:\n - the Script ECHO object's source field is updated\n - closing and reopening the article shows the same content\n```\n\n```mdl\ntest T-4: Deploy script\n given: a Script with valid source following the Operation pattern\n when: user opens DeploymentDialog and confirms\n then:\n - op:deploy succeeds\n - dialog shows success state and function URL\n```\n\n```mdl\ntest T-5: Invoke deployed function\n given: a Script is deployed\n when: user opens the Execute companion and submits a payload\n then:\n - op:invoke is called with the payload\n - response is displayed in TestContainer\n```\n\n```mdl\ntest T-6: Inspect invocations\n given: a Script has been invoked at least once\n when: user opens the Logs companion\n then:\n - InvocationTraceContainer shows at least one invocation span\n - span includes timestamp, duration, and outcome\n```\n\n```mdl\ntest T-7: Skill tools resolve\n given: composer-app with plugin-script loaded\n when: AppCapabilities.SkillDefinition is queried for `org.dxos.skill.script`\n then:\n - skill is present\n - tool set includes create, read, update, delete, deploy, invoke,\n inspectInvocations, queryDeployedFunctions, and installFunction\n```\n\n```mdl\ntest T-8: Agent creates and deploys script\n given: a Script assistant session is active\n when: agent calls op:create with a name and source\n then: a Script object is created in the space\n when: agent calls op:deploy\n then: function is deployed; op returns a function ID\n when: agent calls op:invoke with a payload\n then: response is returned without error\n```\n\n```mdl\ntest T-9: QueryDeployedFunctions and install\n given: at least one function is deployed to the EDGE runtime\n when: op:queryDeployedFunctions is called\n then:\n - result contains at least one DeployedFunction entry\n when: op:installFunction is called with that entry's key\n then:\n - a new Script ECHO object appears in the space\n - op returns the function ID, name, and version\n```\n\n---\n\n## Appendix: Extension Definitions\n\nExtension block types used in this document are defined below using\nthe core `ext` primitive — the only construct the base language provides.\n\n```mdl\next type\n uri: org.dxos.mdl.type@1.0\n desc: A named data structure with typed fields and optional literals.\n fields:\n desc?: Prose\n fields?: FieldMap # name[?]: TypeExpr (# inline comment)\n literals?: UnionList # a | b | c\n extends?: TypeRef[]\n```\n\n```mdl\next feat\n uri: org.dxos.mdl.feat@1.0\n desc: A named feature grouping one or more requirements.\n fields:\n desc?: Prose\n req: RequirementList\n nesting: self # feat blocks may contain feat blocks\n```\n\n```mdl\next test\n uri: org.dxos.mdl.test@1.0\n desc: An acceptance scenario expressed as given / when / then steps.\n fields:\n given?: Step | Step[]\n when?: Step | Step[]\n then: Step | Step[]\n tags?: TagList\n```\n\n```mdl\next component\n uri: org.dxos.mdl.component@1.0\n desc: A UI component with props, internal state, slots, actions, and events.\n fields:\n desc?: Prose\n props?: FieldMap # external inputs (immutable inside component)\n state?: FieldMap # internal reactive state\n slots?: FieldMap # named ReactNode injection points\n actions?: ActionMap # methods the component exposes or handles\n emits?: EventMap # events the component raises to its parent\n layout?: CodeBlock # ASCII sketch of visual structure (non-normative)\n```\n\n```mdl\next op\n uri: org.dxos.mdl.op@1.0\n desc: |\n A named operation with typed inputs, outputs, and declared errors.\n Pure ops have no effects or requires. Effectful ops declare both.\n fields:\n desc?: Prose\n input?: FieldMap # named input parameters\n output?: TypeExpr # return type\n errors?: ErrorMap # name: Prose (when this error occurs)\n effects?: EffectList # echo:read | echo:write | http | fs | ...\n requires?: ServiceList # injected service dependencies\n note?: Prose # implementation guidance (non-normative)\n```\n",
20
- mimeType: "application/x-mdl"
21
- } }), Plugin.make);
22
- //#endregion
23
- export { ScriptPlugin, ScriptPlugin as default };
14
+ export { make, meta, ScriptPlugin_exports as t };
24
15
 
25
16
  //# sourceMappingURL=ScriptPlugin.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScriptPlugin.mjs","names":[],"sources":["../../src/ScriptPlugin.tsx"],"sourcesContent":["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\nimport { AppActivationEvents, AppPlugin } from '@dxos/app-toolkit';\nimport { Script } from '@dxos/compute';\n\nimport {\n AppGraphBuilder,\n Compiler,\n CreateObject,\n OperationHandler,\n ReactSurface,\n ScriptSettings,\n SkillDefinition,\n} from '#capabilities';\nimport { meta } from '#meta';\nimport { translations } from '#translations';\nimport { ScriptEvents } from '#types';\n\n// eslint-disable-next-line import/no-relative-packages\nimport pluginSpec from '../PLUGIN.mdl?raw';\n\nexport const ScriptPlugin = Plugin.define(meta).pipe(\n AppPlugin.addAppGraphModule({ activate: AppGraphBuilder }),\n AppPlugin.addSkillDefinitionModule({ activate: SkillDefinition }),\n AppPlugin.addCreateObjectModule({ activate: CreateObject }),\n AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),\n AppPlugin.addSchemaModule({ schema: [Script.Script] }),\n AppPlugin.addSurfaceModule({ activate: ReactSurface }),\n AppPlugin.addTranslationsModule({ translations }),\n Plugin.addModule({\n activatesOn: AppActivationEvents.SetupSettings,\n activate: ScriptSettings,\n }),\n Plugin.addModule({\n activatesOn: ScriptEvents.SetupCompiler,\n activate: Compiler,\n }),\n AppPlugin.addPluginAssetModule({\n asset: { pluginId: meta.profile.key, path: 'PLUGIN.mdl', content: pluginSpec, mimeType: 'application/x-mdl' },\n }),\n Plugin.make,\n);\n\nexport default ScriptPlugin;\n"],"mappings":";;;;;;;;;AAwBA,IAAa,eAAe,OAAO,OAAO,IAAI,CAAC,CAAC,KAC9C,UAAU,kBAAkB,EAAE,UAAU,gBAAgB,CAAC,GACzD,UAAU,yBAAyB,EAAE,UAAU,gBAAgB,CAAC,GAChE,UAAU,sBAAsB,EAAE,UAAU,aAAa,CAAC,GAC1D,UAAU,0BAA0B,EAAE,UAAU,iBAAiB,CAAC,GAClE,UAAU,gBAAgB,EAAE,QAAQ,CAAC,OAAO,MAAM,EAAE,CAAC,GACrD,UAAU,iBAAiB,EAAE,UAAU,aAAa,CAAC,GACrD,UAAU,sBAAsB,EAAE,aAAa,CAAC,GAChD,OAAO,UAAU;CACf,aAAa,oBAAoB;CACjC,UAAU;AACZ,CAAC,GACD,OAAO,UAAU;CACf,aAAa,aAAa;CAC1B,UAAU;AACZ,CAAC,GACD,UAAU,qBAAqB,EAC7B,OAAO;CAAE,UAAU,KAAK,QAAQ;CAAK,MAAM;CAAc,SAAS;CAAY,UAAU;AAAoB,EAC9G,CAAC,GACD,OAAO,IACT"}
1
+ {"version":3,"file":"ScriptPlugin.mjs","names":[],"sources":["../../src/ScriptPlugin.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Plugin from '@dxos/app-framework/Plugin';\n\nimport { meta as pluginMeta } from '#meta';\n\n/** Plugin metadata, available without loading the plugin body. */\nexport const meta = pluginMeta;\n\n/** Constructs the plugin; the body loads on first enable. */\nexport const make = Plugin.lazy(meta, () => import('#plugin'));\n"],"mappings":";;;;;;;;;AAWA,IAAa,OAAO;;AAGpB,IAAa,OAAO,OAAO,KAAK,YAAY,OAAO,UAAU"}
@@ -1,8 +1,15 @@
1
+ import { t as __exportAll } from "./chunk-rolldown-runtime.mjs";
1
2
  import { a as InspectInvocations, c as QueryDeployedFunctions, i as Deploy, l as Read, n as Create, o as InstallFunction, r as Delete, s as Invoke, u as Update } from "./chunk-functions.mjs";
2
- import { Skill, Template } from "@dxos/compute";
3
+ import * as Skill from "@dxos/compute/Skill";
4
+ import * as Template from "@dxos/compute/Template";
3
5
  import { trim } from "@dxos/util";
4
- //#region src/skills/script-skill.ts
6
+ //#region src/skills/ScriptSkill.ts
7
+ var ScriptSkill_exports = /* @__PURE__ */ __exportAll({
8
+ key: () => key,
9
+ make: () => make
10
+ });
5
11
  var SKILL_KEY = "org.dxos.skill.script";
12
+ var key = SKILL_KEY;
6
13
  var make = () => Skill.make({
7
14
  key: SKILL_KEY,
8
15
  name: "Script",
@@ -25,11 +32,7 @@ var make = () => Skill.make({
25
32
  You can query all functions deployed to the EDGE runtime and install them into the current space.
26
33
  ` })
27
34
  });
28
- var skill = {
29
- key: SKILL_KEY,
30
- make
31
- };
32
35
  //#endregion
33
- export { skill as t };
36
+ export { key, make, ScriptSkill_exports as t };
34
37
 
35
- //# sourceMappingURL=chunk-skills.mjs.map
38
+ //# sourceMappingURL=ScriptSkill.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScriptSkill.mjs","names":[],"sources":["../../src/skills/ScriptSkill.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Skill from '@dxos/compute/Skill';\nimport * as Template from '@dxos/compute/Template';\nimport { trim } from '@dxos/util';\n\nimport {\n Create,\n Delete,\n Deploy,\n InspectInvocations,\n InstallFunction,\n Invoke,\n QueryDeployedFunctions,\n Read,\n Update,\n} from './functions';\n\nconst SKILL_KEY = 'org.dxos.skill.script';\n\nexport const key = SKILL_KEY;\n\nexport const make = (): Skill.Skill =>\n Skill.make({\n key: SKILL_KEY,\n name: 'Script',\n agentCanEnable: true,\n tools: Skill.toolDefinitions({\n operations: [\n Create,\n Read,\n Update,\n Delete,\n Deploy,\n Invoke,\n InspectInvocations,\n QueryDeployedFunctions,\n InstallFunction,\n ],\n }),\n instructions: Template.make({\n source: trim`\n You can create, read, update, and delete scripts which contain TypeScript code.\n You can deploy scripts to the Edge runtime and invoke deployed scripts.\n You can inspect the invocation history of a deployed script.\n You can query all functions deployed to the EDGE runtime and install them into the current space.\n `,\n }),\n });\n"],"mappings":";;;;;;;;;;AAoBA,IAAM,YAAY;AAElB,IAAa,MAAM;AAEnB,IAAa,aACX,MAAM,KAAK;CACT,KAAK;CACL,MAAM;CACN,gBAAgB;CAChB,OAAO,MAAM,gBAAgB,EAC3B,YAAY;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CAAC;CACD,cAAc,SAAS,KAAK,EAC1B,QAAQ,IAAI;;;;;QAMd,CAAC;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { t as __exportAll } from "./chunk-rolldown-runtime.mjs";
2
+ import * as Schema from "effect/Schema";
3
+ import * as Struct from "effect/Struct";
4
+ import { EditorInputMode } from "@dxos/ui-editor/types";
5
+ //#region src/types/Settings.ts
6
+ var Settings_exports = /* @__PURE__ */ __exportAll({ Settings: () => Settings });
7
+ var Settings = Schema.Struct({ editorInputMode: EditorInputMode.annotate({
8
+ title: "Editor input mode",
9
+ description: "Choose the keybinding style for the script editor."
10
+ }) }).mapFields(Struct.map(Schema.mutableKey));
11
+ //#endregion
12
+ export { Settings, Settings_exports as t };
13
+
14
+ //# sourceMappingURL=Settings.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Settings.mjs","names":[],"sources":["../../src/types/Settings.ts"],"sourcesContent":["//\n// Copyright 2023 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\nimport * as Struct from 'effect/Struct';\n\nimport { EditorInputMode } from '@dxos/ui-editor/types';\n\nexport const Settings = Schema.Struct({\n editorInputMode: EditorInputMode.annotate({\n title: 'Editor input mode',\n description: 'Choose the keybinding style for the script editor.',\n }),\n}).mapFields(Struct.map(Schema.mutableKey));\n\nexport interface Settings extends Schema.Schema.Type<typeof Settings> {}\n"],"mappings":";;;;;;AAWA,IAAa,WAAW,OAAO,OAAO,EACpC,iBAAiB,gBAAgB,SAAS;CACxC,OAAO;CACP,aAAa;AACf,CAAC,EACH,CAAC,CAAC,CAAC,UAAU,OAAO,IAAI,OAAO,UAAU,CAAC"}
@@ -1,13 +1,41 @@
1
- import { Capability } from "@dxos/app-framework";
1
+ import * as ActivationEvents from "@dxos/app-framework/ActivationEvents";
2
+ import * as Capability from "@dxos/app-framework/Capability";
3
+ import * as AppCapability from "@dxos/app-toolkit/AppCapability";
4
+ import { translations } from "#translations";
5
+ import { ScriptCapabilities, ScriptEvents } from "#types";
6
+ import * as SpaceCapability from "@dxos/plugin-space/SpaceCapability";
7
+ import { meta } from "#meta";
8
+ //#region PLUGIN.mdl?raw
9
+ var PLUGIN_default = "---\nid: org.dxos.plugin.script\nname: ScriptPlugin\nversion: 0.1.0\n---\n\nA scripting plugin for `DXOS` Composer that lets users write, deploy, and run custom TypeScript functions as\nECHO objects inside their spaces.\nScripts execute on the Cloudflare Workers-based EDGE runtime and can call DXOS SDK packages, Effect-TS,\nand a curated set of third-party libraries.\nAn AI assistant skill wires CRUD, deploy, invoke, and inspection operations as tools so an agent can\nscaffold, iterate, and test scripts entirely within a chat session.\n\n## Extensions\n\nThe following extension dialects are used in this document.\nEach extension is defined in the Appendix or resolved via its URI.\n\n| Term | URI |\n|-------------|--------------------------------|\n| `type` | `org.dxos.mdl.type@1.0` |\n| `feat` | `org.dxos.mdl.feat@1.0` |\n| `test` | `org.dxos.mdl.test@1.0` |\n| `component` | `org.dxos.mdl.component@1.0` |\n| `op` | `org.dxos.mdl.op@1.0` |\n\n## Types\n\n```mdl\ntype Script\n desc: |\n Root ECHO object (typename from @dxos/compute Script.Script).\n Represents a single deployable TypeScript function.\n fields:\n name?: string\n source: string # TypeScript source, must follow Operation pattern\n description?: string\n```\n\n```mdl\ntype Notebook\n desc: |\n Root ECHO object for a multi-cell notebook view.\n Each cell is a Script; the Notebook provides a sequential execution surface.\n fields:\n name?: string\n```\n\n```mdl\ntype Settings\n desc: Plugin-scoped settings atom. Persisted across sessions.\n fields:\n editorInputMode?: EditorInputMode # default, vim, or emacs keybindings\n```\n\n```mdl\ntype InvocationSpan\n desc: A single function invocation record from the EDGE trace feed.\n fields:\n id: string\n timestamp: number # epoch ms\n duration: number # ms\n outcome: success | failure | pending\n input: object\n error?: object\n```\n\n```mdl\ntype DeployedFunction\n desc: Metadata about a function already deployed to the EDGE runtime.\n fields:\n key?: string # unique key; pass to InstallFunction\n name: string\n version: string\n description?: string\n updated?: string # ISO timestamp\n```\n\n## Components\n\n```mdl\ncomponent ScriptArticle\n desc: |\n Primary editor surface for a Script object. Rendered for the Article and\n Section roles. Shows a TypeScript CodeMirror editor with syntax highlight,\n lint, and completion. Companion panels (Execute and Logs) are available\n via the app graph for running and inspecting the script.\n props:\n role: string\n subject: Script\n attendableId?: string\n settings?: Settings\n env?: CompilerEnvironment\n layout: |\n ┌──────────────────────────────────────┐\n │ ScriptToolbar (run, deploy, …) │\n ├──────────────────────────────────────┤\n │ TypescriptEditor (CodeMirror) │\n │ │\n │ // script source │\n └──────────────────────────────────────┘\n```\n\n```mdl\ncomponent NotebookArticle\n desc: |\n Multi-cell notebook surface for a Notebook object. Each cell renders a\n ScriptArticle in Section role. Cells can be added, removed, and reordered.\n props:\n role: string\n subject: Notebook\n attendableId?: string\n env?: CompilerEnvironment\n```\n\n```mdl\ncomponent TestContainer\n desc: |\n Execute companion panel. Renders a form driven by the script's Operation\n input schema; submits the form to invoke the script and shows the response.\n props:\n script: Script\n role: string\n```\n\n```mdl\ncomponent DeploymentDialog\n desc: |\n Dialog for deploying or redeploying a Script to the EDGE runtime.\n Shows current deployment status and lets the user trigger a new deployment.\n props:\n script: Script\n```\n\n```mdl\ncomponent ScriptPluginSettings\n desc: Plugin settings panel; exposes editor keybinding mode selector.\n props:\n settings: Settings\n onSettingsChange: (settings: Settings) → void\n onAuthenticate: () → Promise<void>\n```\n\n## Operations\n\nSkill operations (called by the Script assistant via its tool set).\n\n```mdl\nop create\n desc: |\n Creates a new Script ECHO object with the given name and TypeScript source,\n and adds it to the space. Optionally seeds from a built-in template or a\n GitHub Gist URL. Returns a function reference ID.\n input:\n name: string\n source?: string\n templateId?: string\n output: { function: string }\n effects: [echo:write]\n note: Operation key `org.dxos.operation.script.create`.\n```\n\n```mdl\nop read\n desc: Reads the name, source code, and description of an existing Script.\n input:\n function: Ref<Script>\n output: { name?: string, source: string, description?: string }\n effects: [echo:read]\n note: Operation key `org.dxos.operation.script.read`.\n```\n\n```mdl\nop update\n desc: |\n Applies one or more string edits (find/replace pairs) to a Script's source\n and optionally updates its name and description.\n input:\n function: Ref<Script>\n name?: string\n description?: string\n edits?: { oldString: string, newString: string, replaceAll?: boolean }[]\n output: { function: string }\n effects: [echo:read, echo:write]\n note: Operation key `org.dxos.operation.script.update`.\n```\n\n```mdl\nop delete\n desc: Permanently removes a Script and its source from the space.\n input:\n function: Ref<Script>\n output: void\n effects: [echo:read, echo:write]\n note: Operation key `org.dxos.operation.script.delete`.\n```\n\n```mdl\nop deploy\n desc: |\n Compiles and deploys a Script to the EDGE (Cloudflare Workers) runtime.\n The source must export a single Operation handler as default.\n Returns the deployed function ID and optional public URL.\n input:\n function: Ref<Script>\n output: { function: string, functionUrl?: string }\n effects: [echo:read, http]\n errors:\n CompileError: TypeScript source fails to compile\n DeploymentFailed: EDGE runtime rejected the deployment\n note: Operation key `org.dxos.operation.script.deploy`.\n```\n\n```mdl\nop invoke\n desc: Calls a deployed EDGE function with an optional JSON payload.\n input:\n function: Ref<Script>\n payload?: unknown\n output: { response: unknown }\n effects: [http]\n errors:\n NotDeployed: function has not been deployed\n InvocationError: function threw at runtime\n note: Operation key `org.dxos.operation.script.invoke`.\n```\n\n```mdl\nop inspectInvocations\n desc: |\n Queries the EDGE invocation trace feed for a function and returns\n recent invocation spans (id, timestamp, duration, outcome, input, error).\n input:\n function: Ref<Script>\n limit?: number # default 20\n output: { invocations: InvocationSpan[], total: number }\n effects: [echo:read]\n note: Operation key `org.dxos.function.script.inspect-invocations`.\n```\n\n```mdl\nop queryDeployedFunctions\n desc: Lists all functions currently deployed to the EDGE runtime.\n input:\n (none)\n output: { functions: DeployedFunction[] }\n effects: [http]\n note: Operation key `org.dxos.function.script.query-deployed`.\n```\n\n```mdl\nop installFunction\n desc: |\n Installs a globally-deployed EDGE function into the current space by key.\n Creates a Script ECHO object backed by the remote function.\n The returned function ID can be passed directly to op:invoke.\n input:\n key: string\n output: { function: string, name: string, version: string }\n effects: [echo:write, http]\n note: Operation key `org.dxos.operation.script.install`.\n```\n\nUI-facing operation (creates Script via the navtree / \"create object\" flow).\n\n```mdl\nop createScript\n desc: Creates a new Script ECHO object via the Composer create-object flow.\n input:\n name?: string\n gistUrl?: string\n initialTemplateId?: string\n db: Database\n output: { object: Script }\n effects: [echo:write]\n note: Operation key `org.dxos.plugin.script.operation.create-script`.\n```\n\n## Features\n\n```mdl\nfeat F-1: Script ECHO Object\n\n req F-1.1: Script objects are registered via `addSchemaModule` and visible in space object lists.\n req F-1.2: Script objects can be created from the navtree \"+\" menu.\n req F-1.3:\n when: user creates a Script without a template\n then: source is seeded from the default template\n req F-1.4:\n when: user provides a GitHub Gist URL\n then: gist content is fetched and used as initial source\n```\n\n```mdl\nfeat F-2: Script Editor\n\n req F-2.1: ScriptArticle renders a TypeScript-aware CodeMirror editor for the Article role.\n req F-2.2: Editor keybinding mode (default/vim/emacs) is configurable via plugin settings.\n req F-2.3: Changes to source are persisted to the Script ECHO object reactively.\n req F-2.4:\n when: script object changes externally (peer edit)\n then: editor content updates without losing cursor position if possible\n```\n\n```mdl\nfeat F-3: Deploy to EDGE\n\n req F-3.1: A Deploy button in the ScriptToolbar opens the DeploymentDialog.\n req F-3.2:\n when: user confirms deployment\n then: op:deploy is called; script compiled and sent to EDGE runtime\n req F-3.3:\n when: compilation fails\n then: error messages are surfaced to the user; no deployment occurs\n req F-3.4:\n when: deployment succeeds\n then: dialog shows the function URL (if available)\n```\n\n```mdl\nfeat F-4: Execute Companion\n\n req F-4.1: An \"Execute\" companion node is added to every Script in the app graph.\n req F-4.2: TestContainer renders a form derived from the script's Operation input schema.\n req F-4.3:\n when: user submits the form\n then: op:invoke is called with the form payload; response displayed\n req F-4.4: A \"Logs\" companion node shows the invocation trace via InvocationTraceContainer.\n```\n\n```mdl\nfeat F-5: Script Skill\n\n req F-5.1: A skill with key `org.dxos.skill.script` is contributed via `addSkillDefinitionModule`.\n req F-5.2: Skill tool set includes: create, read, update, delete, deploy, invoke,\n inspectInvocations, queryDeployedFunctions, installFunction.\n req F-5.3: System instructions describe the EDGE Operation pattern, required export format,\n and available packages.\n req F-5.4: Skill is agent-enabled; the assistant can activate it autonomously.\n```\n\n```mdl\nfeat F-6: Notebook\n\n req F-6.1: Notebook objects are registered and can be created from the navtree.\n req F-6.2: NotebookArticle renders each linked Script as a sequential cell.\n req F-6.3: Cells can be added and removed independently.\n```\n\n```mdl\nfeat F-7: Plugin Settings\n\n req F-7.1: ScriptPluginSettings is rendered via the app settings surface.\n req F-7.2: Editor input mode is persisted in the Settings atom.\n req F-7.3: An Authenticate button lets the user write an access credential to HALO.\n```\n\n## Acceptance\n\n```mdl\ntest T-1: Create script from default template\n given: a space is open and plugin-script is loaded\n when: user creates a new Script without template selection\n then:\n - a Script object appears in the space\n - its source contains the default template code\n - ScriptArticle renders the source in the editor\n```\n\n```mdl\ntest T-2: Create script from Gist\n given: a public GitHub Gist URL is known\n when: user creates a Script with the Gist URL\n then:\n - gist content is fetched and stored as the script source\n - editor shows the fetched content\n```\n\n```mdl\ntest T-3: Edit and persist source\n given: a Script is open in ScriptArticle\n when: user edits the source\n then:\n - the Script ECHO object's source field is updated\n - closing and reopening the article shows the same content\n```\n\n```mdl\ntest T-4: Deploy script\n given: a Script with valid source following the Operation pattern\n when: user opens DeploymentDialog and confirms\n then:\n - op:deploy succeeds\n - dialog shows success state and function URL\n```\n\n```mdl\ntest T-5: Invoke deployed function\n given: a Script is deployed\n when: user opens the Execute companion and submits a payload\n then:\n - op:invoke is called with the payload\n - response is displayed in TestContainer\n```\n\n```mdl\ntest T-6: Inspect invocations\n given: a Script has been invoked at least once\n when: user opens the Logs companion\n then:\n - InvocationTraceContainer shows at least one invocation span\n - span includes timestamp, duration, and outcome\n```\n\n```mdl\ntest T-7: Skill tools resolve\n given: composer-app with plugin-script loaded\n when: AppCapabilities.SkillDefinition is queried for `org.dxos.skill.script`\n then:\n - skill is present\n - tool set includes create, read, update, delete, deploy, invoke,\n inspectInvocations, queryDeployedFunctions, and installFunction\n```\n\n```mdl\ntest T-8: Agent creates and deploys script\n given: a Script assistant session is active\n when: agent calls op:create with a name and source\n then: a Script object is created in the space\n when: agent calls op:deploy\n then: function is deployed; op returns a function ID\n when: agent calls op:invoke with a payload\n then: response is returned without error\n```\n\n```mdl\ntest T-9: QueryDeployedFunctions and install\n given: at least one function is deployed to the EDGE runtime\n when: op:queryDeployedFunctions is called\n then:\n - result contains at least one DeployedFunction entry\n when: op:installFunction is called with that entry's key\n then:\n - a new Script ECHO object appears in the space\n - op returns the function ID, name, and version\n```\n\n---\n\n## Appendix: Extension Definitions\n\nExtension block types used in this document are defined below using\nthe core `ext` primitive — the only construct the base language provides.\n\n```mdl\next type\n uri: org.dxos.mdl.type@1.0\n desc: A named data structure with typed fields and optional literals.\n fields:\n desc?: Prose\n fields?: FieldMap # name[?]: TypeExpr (# inline comment)\n literals?: UnionList # a | b | c\n extends?: TypeRef[]\n```\n\n```mdl\next feat\n uri: org.dxos.mdl.feat@1.0\n desc: A named feature grouping one or more requirements.\n fields:\n desc?: Prose\n req: RequirementList\n nesting: self # feat blocks may contain feat blocks\n```\n\n```mdl\next test\n uri: org.dxos.mdl.test@1.0\n desc: An acceptance scenario expressed as given / when / then steps.\n fields:\n given?: Step | Step[]\n when?: Step | Step[]\n then: Step | Step[]\n tags?: TagList\n```\n\n```mdl\next component\n uri: org.dxos.mdl.component@1.0\n desc: A UI component with props, internal state, slots, actions, and events.\n fields:\n desc?: Prose\n props?: FieldMap # external inputs (immutable inside component)\n state?: FieldMap # internal reactive state\n slots?: FieldMap # named ReactNode injection points\n actions?: ActionMap # methods the component exposes or handles\n emits?: EventMap # events the component raises to its parent\n layout?: CodeBlock # ASCII sketch of visual structure (non-normative)\n```\n\n```mdl\next op\n uri: org.dxos.mdl.op@1.0\n desc: |\n A named operation with typed inputs, outputs, and declared errors.\n Pure ops have no effects or requires. Effectful ops declare both.\n fields:\n desc?: Prose\n input?: FieldMap # named input parameters\n output?: TypeExpr # return type\n errors?: ErrorMap # name: Prose (when this error occurs)\n effects?: EffectList # echo:read | echo:write | http | fs | ...\n requires?: ServiceList # injected service dependencies\n note?: Prose # implementation guidance (non-normative)\n```\n";
10
+ //#endregion
2
11
  //#region src/capabilities/index.ts
3
- var AppGraphBuilder = Capability.lazy("AppGraphBuilder", () => import("./chunk-app-graph-builder.mjs"));
4
- var SkillDefinition = Capability.lazy("SkillDefinition", () => import("./chunk-skill-definition.mjs"));
5
- var CreateObject = Capability.lazy("CreateObject", () => import("./chunk-create-object.mjs"));
6
- var Compiler = Capability.lazy("Compiler", () => import("./chunk-compiler2.mjs"));
7
- var OperationHandler = Capability.lazy("OperationHandler", () => import("./chunk-operation-handler.mjs"));
8
- var ReactSurface = Capability.lazy("ReactSurface", () => import("./chunk-react-surface.mjs"));
9
- var ScriptSettings = Capability.lazy("ScriptSettings", () => import("./chunk-settings.mjs"));
12
+ var AppGraphBuilder = AppCapability.appGraphBuilder(() => import("./chunk-app-graph-builder.mjs"), { environments: ["node"] });
13
+ var Schema = AppCapability.schema(() => import("./chunk-schema.mjs"));
14
+ var SkillDefinition = AppCapability.skillDefinition(() => import("./chunk-skill-definition.mjs"), { environments: ["node"] });
15
+ var CreateObject = SpaceCapability.createObject(() => import("./chunk-create-object.mjs"), { environments: ["node"] });
16
+ var Compiler = Capability.lazyModule("Compiler", {
17
+ provides: [ScriptCapabilities.Compiler],
18
+ activatesOn: ScriptEvents.SetupCompiler
19
+ }, () => import("./chunk-compiler2.mjs"));
20
+ var OperationHandler = AppCapability.operationHandler(() => import("./chunk-operation-handler.mjs"), { activatesOn: ActivationEvents.Idle });
21
+ var ReactSurface = AppCapability.surface(() => import("./chunk-react-surface.mjs"), { roles: [
22
+ "org.dxos.role.article",
23
+ "org.dxos.role.dialog",
24
+ "org.dxos.role.objectProperties",
25
+ "org.dxos.role.section"
26
+ ] });
27
+ var ScriptSettings = AppCapability.settings(() => import("./chunk-settings.mjs"), {
28
+ activatesOn: ActivationEvents.Idle,
29
+ provides: [ScriptCapabilities.Settings]
30
+ });
31
+ var Translations = AppCapability.translations(translations);
32
+ var PluginAsset = AppCapability.pluginAsset({
33
+ pluginId: meta.profile.key,
34
+ path: "PLUGIN.mdl",
35
+ content: PLUGIN_default,
36
+ mimeType: "application/x-mdl"
37
+ });
10
38
  //#endregion
11
- export { AppGraphBuilder, Compiler, CreateObject, OperationHandler, ReactSurface, ScriptSettings, SkillDefinition };
39
+ export { AppGraphBuilder, Compiler, CreateObject, OperationHandler, PluginAsset, ReactSurface, Schema, ScriptSettings, SkillDefinition, Translations };
12
40
 
13
41
  //# sourceMappingURL=capabilities.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.mjs","names":[],"sources":["../../src/capabilities/index.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\nimport type { OperationHandlerSet } from '@dxos/compute';\n\nexport const AppGraphBuilder = Capability.lazy('AppGraphBuilder', () => import('./app-graph-builder'));\nexport const SkillDefinition = Capability.lazy('SkillDefinition', () => import('./skill-definition'));\nexport const CreateObject = Capability.lazy('CreateObject', () => import('./create-object'));\nexport const Compiler = Capability.lazy('Compiler', () => import('./compiler'));\nexport const OperationHandler = Capability.lazy<OperationHandlerSet.OperationHandlerSet>(\n 'OperationHandler',\n () => import('./operation-handler'),\n);\nexport const ReactSurface = Capability.lazy('ReactSurface', () => import('./react-surface'));\nexport const ScriptSettings = Capability.lazy('ScriptSettings', () => import('./settings'));\n"],"mappings":";;AAOA,IAAa,kBAAkB,WAAW,KAAK,yBAAyB,OAAO,gCAAsB;AACrG,IAAa,kBAAkB,WAAW,KAAK,yBAAyB,OAAO,+BAAqB;AACpG,IAAa,eAAe,WAAW,KAAK,sBAAsB,OAAO,4BAAkB;AAC3F,IAAa,WAAW,WAAW,KAAK,kBAAkB,OAAO,wBAAa;AAC9E,IAAa,mBAAmB,WAAW,KACzC,0BACM,OAAO,gCACf;AACA,IAAa,eAAe,WAAW,KAAK,sBAAsB,OAAO,4BAAkB;AAC3F,IAAa,iBAAiB,WAAW,KAAK,wBAAwB,OAAO,uBAAa"}
1
+ {"version":3,"file":"capabilities.mjs","names":[],"sources":["../../src/capabilities/index.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as ActivationEvents from '@dxos/app-framework/ActivationEvents';\nimport * as Capability from '@dxos/app-framework/Capability';\nimport * as AppCapability from '@dxos/app-toolkit/AppCapability';\nimport * as SpaceCapability from '@dxos/plugin-space/SpaceCapability';\n\nimport { meta } from '#meta';\nimport { translations } from '#translations';\nimport { ScriptCapabilities, ScriptEvents } from '#types';\n\n// eslint-disable-next-line import/no-relative-packages\nimport pluginSpec from '../../PLUGIN.mdl?raw';\n\nexport const AppGraphBuilder = AppCapability.appGraphBuilder(() => import('./app-graph-builder'), {\n environments: ['node'],\n});\nexport const Schema = AppCapability.schema(() => import('./schema'));\nexport const SkillDefinition = AppCapability.skillDefinition(() => import('./skill-definition'), {\n environments: ['node'],\n});\nexport const CreateObject = SpaceCapability.createObject(() => import('./create-object'), {\n environments: ['node'],\n});\nexport const Compiler = Capability.lazyModule(\n 'Compiler',\n {\n provides: [ScriptCapabilities.Compiler],\n // Genuine runtime event: the compiler is only loaded on demand (`hooks/useCompiler.ts`), not at startup.\n activatesOn: ScriptEvents.SetupCompiler,\n },\n () => import('./compiler'),\n);\nexport const OperationHandler = AppCapability.operationHandler(() => import('./operation-handler'), {\n activatesOn: ActivationEvents.Idle,\n});\nexport const ReactSurface = AppCapability.surface(() => import('./react-surface'), {\n roles: ['org.dxos.role.article', 'org.dxos.role.dialog', 'org.dxos.role.objectProperties', 'org.dxos.role.section'],\n});\nexport const ScriptSettings = AppCapability.settings(() => import('./settings'), {\n activatesOn: ActivationEvents.Idle,\n provides: [ScriptCapabilities.Settings],\n});\nexport const Translations = AppCapability.translations(translations);\nexport const PluginAsset = AppCapability.pluginAsset({\n pluginId: meta.profile.key,\n path: 'PLUGIN.mdl',\n content: pluginSpec,\n mimeType: 'application/x-mdl',\n});\n"],"mappings":";;;;;;;;;;;AAgBA,IAAa,kBAAkB,cAAc,sBAAsB,OAAO,kCAAwB,EAChG,cAAc,CAAC,MAAM,EACvB,CAAC;AACD,IAAa,SAAS,cAAc,aAAa,OAAO,qBAAW;AACnE,IAAa,kBAAkB,cAAc,sBAAsB,OAAO,iCAAuB,EAC/F,cAAc,CAAC,MAAM,EACvB,CAAC;AACD,IAAa,eAAe,gBAAgB,mBAAmB,OAAO,8BAAoB,EACxF,cAAc,CAAC,MAAM,EACvB,CAAC;AACD,IAAa,WAAW,WAAW,WACjC,YACA;CACE,UAAU,CAAC,mBAAmB,QAAQ;CAEtC,aAAa,aAAa;AAC5B,SACM,OAAO,wBACf;AACA,IAAa,mBAAmB,cAAc,uBAAuB,OAAO,kCAAwB,EAClG,aAAa,iBAAiB,KAChC,CAAC;AACD,IAAa,eAAe,cAAc,cAAc,OAAO,8BAAoB,EACjF,OAAO;CAAC;CAAyB;CAAwB;CAAkC;AAAuB,EACpH,CAAC;AACD,IAAa,iBAAiB,cAAc,eAAe,OAAO,yBAAe;CAC/E,aAAa,iBAAiB;CAC9B,UAAU,CAAC,mBAAmB,QAAQ;AACxC,CAAC;AACD,IAAa,eAAe,cAAc,aAAa,YAAY;AACnE,IAAa,cAAc,cAAc,YAAY;CACnD,UAAU,KAAK,QAAQ;CACvB,MAAM;CACN,SAAS;CACT,UAAU;AACZ,CAAC"}
@@ -0,0 +1,27 @@
1
+ import * as ActivationEvents from "@dxos/app-framework/ActivationEvents";
2
+ import * as Capability from "@dxos/app-framework/Capability";
3
+ import * as AppCapability from "@dxos/app-toolkit/AppCapability";
4
+ import { translations } from "#translations";
5
+ import { ScriptCapabilities, ScriptEvents } from "#types";
6
+ import * as SpaceCapability from "@dxos/plugin-space/SpaceCapability";
7
+ //#region src/capabilities/gen/node.ts
8
+ var AppGraphBuilder = AppCapability.appGraphBuilder(() => import("./chunk-app-graph-builder.mjs"), { environments: ["node"] });
9
+ var Schema = AppCapability.schema(() => import("./chunk-schema.mjs"));
10
+ var SkillDefinition = AppCapability.skillDefinition(() => import("./chunk-skill-definition.mjs"), { environments: ["node"] });
11
+ var CreateObject = SpaceCapability.createObject(() => import("./chunk-create-object.mjs"), { environments: ["node"] });
12
+ var Compiler = Capability.lazyModule("Compiler", {
13
+ provides: [ScriptCapabilities.Compiler],
14
+ activatesOn: ScriptEvents.SetupCompiler
15
+ }, () => import("./chunk-compiler2.mjs"));
16
+ var OperationHandler = AppCapability.operationHandler(() => import("./chunk-operation-handler.mjs"), { activatesOn: ActivationEvents.Idle });
17
+ var ScriptSettings = AppCapability.settings(() => import("./chunk-settings.mjs"), {
18
+ activatesOn: ActivationEvents.Idle,
19
+ provides: [ScriptCapabilities.Settings]
20
+ });
21
+ var Translations = AppCapability.translations(translations);
22
+ var PluginAsset = void 0;
23
+ var ReactSurface = void 0;
24
+ //#endregion
25
+ export { AppGraphBuilder, Compiler, CreateObject, OperationHandler, PluginAsset, ReactSurface, Schema, ScriptSettings, SkillDefinition, Translations };
26
+
27
+ //# sourceMappingURL=capabilities.node.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.node.mjs","names":[],"sources":["../../src/capabilities/gen/node.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\n// GENERATED by dx-plugin — do not edit. Sliced from ../index.ts for the 'node' condition.\n\nimport * as ActivationEvents from '@dxos/app-framework/ActivationEvents';\nimport * as Capability from '@dxos/app-framework/Capability';\nimport * as AppCapability from '@dxos/app-toolkit/AppCapability';\nimport * as SpaceCapability from '@dxos/plugin-space/SpaceCapability';\n\nimport { translations } from '#translations';\nimport { ScriptCapabilities, ScriptEvents } from '#types';\n\nexport const AppGraphBuilder = AppCapability.appGraphBuilder(() => import('../app-graph-builder'), {\n environments: ['node'],\n});\n\nexport const Schema = AppCapability.schema(() => import('../schema'));\n\nexport const SkillDefinition = AppCapability.skillDefinition(() => import('../skill-definition'), {\n environments: ['node'],\n});\n\nexport const CreateObject = SpaceCapability.createObject(() => import('../create-object'), {\n environments: ['node'],\n});\n\nexport const Compiler = Capability.lazyModule(\n 'Compiler',\n {\n provides: [ScriptCapabilities.Compiler],\n // Genuine runtime event: the compiler is only loaded on demand (`hooks/useCompiler.ts`), not at startup.\n activatesOn: ScriptEvents.SetupCompiler,\n },\n () => import('../compiler'),\n);\n\nexport const OperationHandler = AppCapability.operationHandler(() => import('../operation-handler'), {\n activatesOn: ActivationEvents.Idle,\n});\n\nexport const ScriptSettings = AppCapability.settings(() => import('../settings'), {\n activatesOn: ActivationEvents.Idle,\n provides: [ScriptCapabilities.Settings],\n});\n\nexport const Translations = AppCapability.translations(translations);\n\nexport const PluginAsset = undefined;\nexport const ReactSurface = undefined;\n"],"mappings":";;;;;;;AAcA,IAAa,kBAAkB,cAAc,sBAAsB,OAAO,kCAAyB,EACjG,cAAc,CAAC,MAAM,EACvB,CAAC;AAED,IAAa,SAAS,cAAc,aAAa,OAAO,qBAAY;AAEpE,IAAa,kBAAkB,cAAc,sBAAsB,OAAO,iCAAwB,EAChG,cAAc,CAAC,MAAM,EACvB,CAAC;AAED,IAAa,eAAe,gBAAgB,mBAAmB,OAAO,8BAAqB,EACzF,cAAc,CAAC,MAAM,EACvB,CAAC;AAED,IAAa,WAAW,WAAW,WACjC,YACA;CACE,UAAU,CAAC,mBAAmB,QAAQ;CAEtC,aAAa,aAAa;AAC5B,SACM,OAAO,wBACf;AAEA,IAAa,mBAAmB,cAAc,uBAAuB,OAAO,kCAAyB,EACnG,aAAa,iBAAiB,KAChC,CAAC;AAED,IAAa,iBAAiB,cAAc,eAAe,OAAO,yBAAgB;CAChF,aAAa,iBAAiB;CAC9B,UAAU,CAAC,mBAAmB,QAAQ;AACxC,CAAC;AAED,IAAa,eAAe,cAAc,aAAa,YAAY;AAEnE,IAAa,cAAc,KAAA;AAC3B,IAAa,eAAe,KAAA"}
@@ -0,0 +1,26 @@
1
+ import * as ActivationEvents from "@dxos/app-framework/ActivationEvents";
2
+ import * as Capability from "@dxos/app-framework/Capability";
3
+ import * as AppCapability from "@dxos/app-toolkit/AppCapability";
4
+ import { translations } from "#translations";
5
+ import { ScriptCapabilities, ScriptEvents } from "#types";
6
+ //#region src/capabilities/gen/workerd.ts
7
+ var Schema = AppCapability.schema(() => import("./chunk-schema.mjs"));
8
+ var Compiler = Capability.lazyModule("Compiler", {
9
+ provides: [ScriptCapabilities.Compiler],
10
+ activatesOn: ScriptEvents.SetupCompiler
11
+ }, () => import("./chunk-compiler2.mjs"));
12
+ var OperationHandler = AppCapability.operationHandler(() => import("./chunk-operation-handler.mjs"), { activatesOn: ActivationEvents.Idle });
13
+ var ScriptSettings = AppCapability.settings(() => import("./chunk-settings.mjs"), {
14
+ activatesOn: ActivationEvents.Idle,
15
+ provides: [ScriptCapabilities.Settings]
16
+ });
17
+ var Translations = AppCapability.translations(translations);
18
+ var AppGraphBuilder = void 0;
19
+ var CreateObject = void 0;
20
+ var PluginAsset = void 0;
21
+ var ReactSurface = void 0;
22
+ var SkillDefinition = void 0;
23
+ //#endregion
24
+ export { AppGraphBuilder, Compiler, CreateObject, OperationHandler, PluginAsset, ReactSurface, Schema, ScriptSettings, SkillDefinition, Translations };
25
+
26
+ //# sourceMappingURL=capabilities.workerd.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.workerd.mjs","names":[],"sources":["../../src/capabilities/gen/workerd.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\n// GENERATED by dx-plugin — do not edit. Sliced from ../index.ts for the 'workerd' condition.\n\nimport * as ActivationEvents from '@dxos/app-framework/ActivationEvents';\nimport * as Capability from '@dxos/app-framework/Capability';\nimport * as AppCapability from '@dxos/app-toolkit/AppCapability';\n\nimport { translations } from '#translations';\nimport { ScriptCapabilities, ScriptEvents } from '#types';\n\nexport const Schema = AppCapability.schema(() => import('../schema'));\n\nexport const Compiler = Capability.lazyModule(\n 'Compiler',\n {\n provides: [ScriptCapabilities.Compiler],\n // Genuine runtime event: the compiler is only loaded on demand (`hooks/useCompiler.ts`), not at startup.\n activatesOn: ScriptEvents.SetupCompiler,\n },\n () => import('../compiler'),\n);\n\nexport const OperationHandler = AppCapability.operationHandler(() => import('../operation-handler'), {\n activatesOn: ActivationEvents.Idle,\n});\n\nexport const ScriptSettings = AppCapability.settings(() => import('../settings'), {\n activatesOn: ActivationEvents.Idle,\n provides: [ScriptCapabilities.Settings],\n});\n\nexport const Translations = AppCapability.translations(translations);\n\nexport const AppGraphBuilder = undefined;\nexport const CreateObject = undefined;\nexport const PluginAsset = undefined;\nexport const ReactSurface = undefined;\nexport const SkillDefinition = undefined;\n"],"mappings":";;;;;;AAaA,IAAa,SAAS,cAAc,aAAa,OAAO,qBAAY;AAEpE,IAAa,WAAW,WAAW,WACjC,YACA;CACE,UAAU,CAAC,mBAAmB,QAAQ;CAEtC,aAAa,aAAa;AAC5B,SACM,OAAO,wBACf;AAEA,IAAa,mBAAmB,cAAc,uBAAuB,OAAO,kCAAyB,EACnG,aAAa,iBAAiB,KAChC,CAAC;AAED,IAAa,iBAAiB,cAAc,eAAe,OAAO,yBAAgB;CAChF,aAAa,iBAAiB;CAC9B,UAAU,CAAC,mBAAmB,QAAQ;AACxC,CAAC;AAED,IAAa,eAAe,cAAc,aAAa,YAAY;AAEnE,IAAa,kBAAkB,KAAA;AAC/B,IAAa,eAAe,KAAA;AAC5B,IAAa,cAAc,KAAA;AAC3B,IAAa,eAAe,KAAA;AAC5B,IAAa,kBAAkB,KAAA"}
@@ -1,15 +1,16 @@
1
1
  import { meta } from "#meta";
2
- import { LayoutOperation } from "@dxos/app-toolkit";
2
+ import { Obj } from "@dxos/echo";
3
3
  import { useEffect, useMemo } from "react";
4
4
  import { Button, Dialog, useTranslation } from "@dxos/react-ui";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  import { useOperationInvoker } from "@dxos/app-framework/ui";
7
7
  import { useCreateAndDeployScriptTemplates } from "#hooks";
8
- import { getSpace } from "@dxos/react-client/echo";
8
+ import * as LayoutOperation from "@dxos/app-toolkit/LayoutOperation";
9
9
  //#region src/containers/DeploymentDialog/DeploymentDialog.tsx
10
10
  var DeploymentDialog = ({ accessToken, scriptTemplates }) => {
11
11
  const { t } = useTranslation(meta.profile.key);
12
- const { handleCreateAndDeployScripts, status } = useCreateAndDeployScriptTemplates(useMemo(() => getSpace(accessToken), [accessToken]), scriptTemplates);
12
+ const db = useMemo(() => Obj.getDatabase(accessToken), [accessToken]);
13
+ const { handleCreateAndDeployScripts, status } = useCreateAndDeployScriptTemplates(db, scriptTemplates);
13
14
  const { invokePromise } = useOperationInvoker();
14
15
  useEffect(() => {
15
16
  if (status === "success") {
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-DeploymentDialog.mjs","names":[],"sources":["../../src/containers/DeploymentDialog/DeploymentDialog.tsx"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useEffect, useMemo } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { type AccessToken } from '@dxos/link';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { Button, Dialog, useTranslation } from '@dxos/react-ui';\n\nimport { useCreateAndDeployScriptTemplates } from '#hooks';\nimport { meta } from '#meta';\n\nimport { type Template } from '../../templates';\n\n// TODO(ZaymonFC):\n// - Show activity and feedback to the user.\n// - Only take an array of templateIds and get the name from the data.\n// - Pending / onError states.\n\nexport type DeploymentDialogProps = {\n accessToken: AccessToken.AccessToken;\n scriptTemplates: Template[];\n};\n\nexport const DeploymentDialog = ({ accessToken, scriptTemplates }: DeploymentDialogProps) => {\n const { t } = useTranslation(meta.profile.key);\n const space = useMemo(() => getSpace(accessToken), [accessToken]);\n\n // TODO(ZaymonFC): Thinking further. All of this should get moved to intents to run async in the background.\n // Deployment shouldn't be tied to the lifecycle of the dialogue component.\n const { handleCreateAndDeployScripts, status } = useCreateAndDeployScriptTemplates(space, scriptTemplates);\n const { invokePromise } = useOperationInvoker();\n\n useEffect(() => {\n if (status === 'success') {\n // TODO(ZaymonFC): We can probably re-use this toast for normal script deployment.\n void invokePromise(LayoutOperation.AddToast, {\n id: `${meta.profile.key}.deployment-success`,\n icon: 'ph--check--regular',\n duration: Infinity,\n title: ['script-deployment-toast.label', { ns: meta.profile.key, count: scriptTemplates.length }],\n description: ['script-deployment-toast.description', { ns: meta.profile.key, count: scriptTemplates.length }],\n closeLabel: ['script-deployment-toast-close.label', { ns: meta.profile.key, count: scriptTemplates.length }],\n });\n void invokePromise(LayoutOperation.UpdateDialog, { state: false });\n }\n if (status === 'error') {\n void invokePromise(LayoutOperation.UpdateDialog, { state: false });\n void invokePromise(LayoutOperation.AddToast, {\n id: `${meta.profile.key}.deployment-error`,\n icon: 'ph--warning--regular',\n duration: Infinity,\n title: ['script-deployment-error-toast.label', { ns: meta.profile.key, count: scriptTemplates.length }],\n description: [\n 'script-deployment-error-toast.description',\n { ns: meta.profile.key, count: scriptTemplates.length },\n ],\n closeLabel: [\n 'script-deployment-error-toast-close.label',\n { ns: meta.profile.key, count: scriptTemplates.length },\n ],\n });\n }\n }, [status, invokePromise]);\n\n return (\n <Dialog.Content>\n <Dialog.Header>\n <Dialog.Title>{t('deployment-dialog.title')}</Dialog.Title>\n <Dialog.Close asChild>\n <Dialog.ActionIconButton action='close' />\n </Dialog.Close>\n </Dialog.Header>\n <Dialog.Body>\n <p>\n {t('deployment-dialog-scripts-found.message', {\n count: scriptTemplates.length,\n })}\n </p>\n <ul className='pt-2'>\n {scriptTemplates.map((template) => {\n return <li key={template.id}>{template.name}</li>;\n })}\n </ul>\n </Dialog.Body>\n <Dialog.ActionBar>\n <Dialog.Close asChild>\n <Button disabled={status === 'pending'}>{t('deployment-dialog-skip-button.label')}</Button>\n </Dialog.Close>\n <Button variant='primary' onClick={handleCreateAndDeployScripts} disabled={status === 'pending'}>\n {status === 'pending'\n ? t('deployment-dialog-deploy-functions-pending-button.label', {\n count: scriptTemplates.length,\n })\n : t('deployment-dialog-deploy-functions-button.label', {\n count: scriptTemplates.length,\n })}\n </Button>\n </Dialog.ActionBar>\n </Dialog.Content>\n );\n};\n\nDeploymentDialog.displayName = 'DeploymentDialog';\n"],"mappings":";;;;;;;;;AA2BA,IAAa,oBAAoB,EAAE,aAAa,sBAA6C;CAC3F,MAAM,EAAE,MAAM,eAAe,KAAK,QAAQ,GAAG;CAK7C,MAAM,EAAE,8BAA8B,WAAW,kCAJnC,cAAc,SAAS,WAAW,GAAG,CAAC,WAAW,CAIoB,GAAO,eAAe;CACzG,MAAM,EAAE,kBAAkB,oBAAoB;CAE9C,gBAAgB;EACd,IAAI,WAAW,WAAW;GAExB,cAAmB,gBAAgB,UAAU;IAC3C,IAAI,GAAG,KAAK,QAAQ,IAAI;IACxB,MAAM;IACN,UAAU;IACV,OAAO,CAAC,iCAAiC;KAAE,IAAI,KAAK,QAAQ;KAAK,OAAO,gBAAgB;IAAO,CAAC;IAChG,aAAa,CAAC,uCAAuC;KAAE,IAAI,KAAK,QAAQ;KAAK,OAAO,gBAAgB;IAAO,CAAC;IAC5G,YAAY,CAAC,uCAAuC;KAAE,IAAI,KAAK,QAAQ;KAAK,OAAO,gBAAgB;IAAO,CAAC;GAC7G,CAAC;GACD,cAAmB,gBAAgB,cAAc,EAAE,OAAO,MAAM,CAAC;EACnE;EACA,IAAI,WAAW,SAAS;GACtB,cAAmB,gBAAgB,cAAc,EAAE,OAAO,MAAM,CAAC;GACjE,cAAmB,gBAAgB,UAAU;IAC3C,IAAI,GAAG,KAAK,QAAQ,IAAI;IACxB,MAAM;IACN,UAAU;IACV,OAAO,CAAC,uCAAuC;KAAE,IAAI,KAAK,QAAQ;KAAK,OAAO,gBAAgB;IAAO,CAAC;IACtG,aAAa,CACX,6CACA;KAAE,IAAI,KAAK,QAAQ;KAAK,OAAO,gBAAgB;IAAO,CACxD;IACA,YAAY,CACV,6CACA;KAAE,IAAI,KAAK,QAAQ;KAAK,OAAO,gBAAgB;IAAO,CACxD;GACF,CAAC;EACH;CACF,GAAG,CAAC,QAAQ,aAAa,CAAC;CAE1B,OACE,qBAAC,OAAO,SAAR,EAAA,UAAA;EACE,qBAAC,OAAO,QAAR,EAAA,UAAA,CACE,oBAAC,OAAO,OAAR,EAAA,UAAe,EAAE,yBAAyB,EAAgB,CAAA,GAC1D,oBAAC,OAAO,OAAR;GAAc,SAAA;aACZ,oBAAC,OAAO,kBAAR,EAAyB,QAAO,QAAS,CAAA;EAC7B,CAAA,CACD,EAAA,CAAA;EACf,qBAAC,OAAO,MAAR,EAAA,UAAA,CACE,oBAAC,KAAD,EAAA,UACG,EAAE,2CAA2C,EAC5C,OAAO,gBAAgB,OACzB,CAAC,EACA,CAAA,GACH,oBAAC,MAAD;GAAI,WAAU;aACX,gBAAgB,KAAK,aAAa;IACjC,OAAO,oBAAC,MAAD,EAAA,UAAuB,SAAS,KAAS,GAAhC,SAAS,EAAuB;GAClD,CAAC;EACC,CAAA,CACO,EAAA,CAAA;EACb,qBAAC,OAAO,WAAR,EAAA,UAAA,CACE,oBAAC,OAAO,OAAR;GAAc,SAAA;aACZ,oBAAC,QAAD;IAAQ,UAAU,WAAW;cAAY,EAAE,qCAAqC;GAAU,CAAA;EAC9E,CAAA,GACd,oBAAC,QAAD;GAAQ,SAAQ;GAAU,SAAS;GAA8B,UAAU,WAAW;aACnF,WAAW,YACR,EAAE,2DAA2D,EAC3D,OAAO,gBAAgB,OACzB,CAAC,IACD,EAAE,mDAAmD,EACnD,OAAO,gBAAgB,OACzB,CAAC;EACC,CAAA,CACQ,EAAA,CAAA;CACJ,EAAA,CAAA;AAEpB;AAEA,iBAAiB,cAAc"}
1
+ {"version":3,"file":"chunk-DeploymentDialog.mjs","names":[],"sources":["../../src/containers/DeploymentDialog/DeploymentDialog.tsx"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useEffect, useMemo } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport * as LayoutOperation from '@dxos/app-toolkit/LayoutOperation';\nimport { Obj } from '@dxos/echo';\nimport { type AccessToken } from '@dxos/link';\nimport { Button, Dialog, useTranslation } from '@dxos/react-ui';\n\nimport { useCreateAndDeployScriptTemplates } from '#hooks';\nimport { meta } from '#meta';\n\nimport { type Template } from '../../templates';\n\n// TODO(ZaymonFC):\n// - Show activity and feedback to the user.\n// - Only take an array of templateIds and get the name from the data.\n// - Pending / onError states.\n\nexport type DeploymentDialogProps = {\n accessToken: AccessToken.AccessToken;\n scriptTemplates: Template[];\n};\n\nexport const DeploymentDialog = ({ accessToken, scriptTemplates }: DeploymentDialogProps) => {\n const { t } = useTranslation(meta.profile.key);\n const db = useMemo(() => Obj.getDatabase(accessToken), [accessToken]);\n\n // TODO(ZaymonFC): Thinking further. All of this should get moved to intents to run async in the background.\n // Deployment shouldn't be tied to the lifecycle of the dialogue component.\n const { handleCreateAndDeployScripts, status } = useCreateAndDeployScriptTemplates(db, scriptTemplates);\n const { invokePromise } = useOperationInvoker();\n\n useEffect(() => {\n if (status === 'success') {\n // TODO(ZaymonFC): We can probably re-use this toast for normal script deployment.\n void invokePromise(LayoutOperation.AddToast, {\n id: `${meta.profile.key}.deployment-success`,\n icon: 'ph--check--regular',\n duration: Infinity,\n title: ['script-deployment-toast.label', { ns: meta.profile.key, count: scriptTemplates.length }],\n description: ['script-deployment-toast.description', { ns: meta.profile.key, count: scriptTemplates.length }],\n closeLabel: ['script-deployment-toast-close.label', { ns: meta.profile.key, count: scriptTemplates.length }],\n });\n void invokePromise(LayoutOperation.UpdateDialog, { state: false });\n }\n if (status === 'error') {\n void invokePromise(LayoutOperation.UpdateDialog, { state: false });\n void invokePromise(LayoutOperation.AddToast, {\n id: `${meta.profile.key}.deployment-error`,\n icon: 'ph--warning--regular',\n duration: Infinity,\n title: ['script-deployment-error-toast.label', { ns: meta.profile.key, count: scriptTemplates.length }],\n description: [\n 'script-deployment-error-toast.description',\n { ns: meta.profile.key, count: scriptTemplates.length },\n ],\n closeLabel: [\n 'script-deployment-error-toast-close.label',\n { ns: meta.profile.key, count: scriptTemplates.length },\n ],\n });\n }\n }, [status, invokePromise]);\n\n return (\n <Dialog.Content>\n <Dialog.Header>\n <Dialog.Title>{t('deployment-dialog.title')}</Dialog.Title>\n <Dialog.Close asChild>\n <Dialog.ActionIconButton action='close' />\n </Dialog.Close>\n </Dialog.Header>\n <Dialog.Body>\n <p>\n {t('deployment-dialog-scripts-found.message', {\n count: scriptTemplates.length,\n })}\n </p>\n <ul className='pt-2'>\n {scriptTemplates.map((template) => {\n return <li key={template.id}>{template.name}</li>;\n })}\n </ul>\n </Dialog.Body>\n <Dialog.ActionBar>\n <Dialog.Close asChild>\n <Button disabled={status === 'pending'}>{t('deployment-dialog-skip-button.label')}</Button>\n </Dialog.Close>\n <Button variant='primary' onClick={handleCreateAndDeployScripts} disabled={status === 'pending'}>\n {status === 'pending'\n ? t('deployment-dialog-deploy-functions-pending-button.label', {\n count: scriptTemplates.length,\n })\n : t('deployment-dialog-deploy-functions-button.label', {\n count: scriptTemplates.length,\n })}\n </Button>\n </Dialog.ActionBar>\n </Dialog.Content>\n );\n};\n\nDeploymentDialog.displayName = 'DeploymentDialog';\n"],"mappings":";;;;;;;;;AA2BA,IAAa,oBAAoB,EAAE,aAAa,sBAA6C;CAC3F,MAAM,EAAE,MAAM,eAAe,KAAK,QAAQ,GAAG;CAC7C,MAAM,KAAK,cAAc,IAAI,YAAY,WAAW,GAAG,CAAC,WAAW,CAAC;CAIpE,MAAM,EAAE,8BAA8B,WAAW,kCAAkC,IAAI,eAAe;CACtG,MAAM,EAAE,kBAAkB,oBAAoB;CAE9C,gBAAgB;EACd,IAAI,WAAW,WAAW;GAExB,cAAmB,gBAAgB,UAAU;IAC3C,IAAI,GAAG,KAAK,QAAQ,IAAI;IACxB,MAAM;IACN,UAAU;IACV,OAAO,CAAC,iCAAiC;KAAE,IAAI,KAAK,QAAQ;KAAK,OAAO,gBAAgB;IAAO,CAAC;IAChG,aAAa,CAAC,uCAAuC;KAAE,IAAI,KAAK,QAAQ;KAAK,OAAO,gBAAgB;IAAO,CAAC;IAC5G,YAAY,CAAC,uCAAuC;KAAE,IAAI,KAAK,QAAQ;KAAK,OAAO,gBAAgB;IAAO,CAAC;GAC7G,CAAC;GACD,cAAmB,gBAAgB,cAAc,EAAE,OAAO,MAAM,CAAC;EACnE;EACA,IAAI,WAAW,SAAS;GACtB,cAAmB,gBAAgB,cAAc,EAAE,OAAO,MAAM,CAAC;GACjE,cAAmB,gBAAgB,UAAU;IAC3C,IAAI,GAAG,KAAK,QAAQ,IAAI;IACxB,MAAM;IACN,UAAU;IACV,OAAO,CAAC,uCAAuC;KAAE,IAAI,KAAK,QAAQ;KAAK,OAAO,gBAAgB;IAAO,CAAC;IACtG,aAAa,CACX,6CACA;KAAE,IAAI,KAAK,QAAQ;KAAK,OAAO,gBAAgB;IAAO,CACxD;IACA,YAAY,CACV,6CACA;KAAE,IAAI,KAAK,QAAQ;KAAK,OAAO,gBAAgB;IAAO,CACxD;GACF,CAAC;EACH;CACF,GAAG,CAAC,QAAQ,aAAa,CAAC;CAE1B,OACE,qBAAC,OAAO,SAAR,EAAA,UAAA;EACE,qBAAC,OAAO,QAAR,EAAA,UAAA,CACE,oBAAC,OAAO,OAAR,EAAA,UAAe,EAAE,yBAAyB,EAAgB,CAAA,GAC1D,oBAAC,OAAO,OAAR;GAAc,SAAA;GACZ,UAAA,oBAAC,OAAO,kBAAR,EAAyB,QAAO,QAAS,CAAA;EAC7B,CAAA,CACD,EAAA,CAAA;EACf,qBAAC,OAAO,MAAR,EAAA,UAAA,CACE,oBAAC,KAAD,EAAA,UACG,EAAE,2CAA2C,EAC5C,OAAO,gBAAgB,OACzB,CAAC,EACA,CAAA,GACH,oBAAC,MAAD;GAAI,WAAU;GACX,UAAA,gBAAgB,KAAK,aAAa;IACjC,OAAO,oBAAC,MAAD,EAAA,UAAuB,SAAS,KAAS,GAAhC,SAAS,EAAuB;GAClD,CAAC;EACC,CAAA,CACO,EAAA,CAAA;EACb,qBAAC,OAAO,WAAR,EAAA,UAAA,CACE,oBAAC,OAAO,OAAR;GAAc,SAAA;GACZ,UAAA,oBAAC,QAAD;IAAQ,UAAU,WAAW;IAAY,UAAA,EAAE,qCAAqC;GAAU,CAAA;EAC9E,CAAA,GACd,oBAAC,QAAD;GAAQ,SAAQ;GAAU,SAAS;GAA8B,UAAU,WAAW;GACnF,UAAA,WAAW,YACR,EAAE,2DAA2D,EAC3D,OAAO,gBAAgB,OACzB,CAAC,IACD,EAAE,mDAAmD,EACnD,OAAO,gBAAgB,OACzB,CAAC;EACC,CAAA,CACQ,EAAA,CAAA;CACJ,EAAA,CAAA;AAEpB;AAEA,iBAAiB,cAAc"}